Browse Source
Add README with Docker deployment instructions
Add README with Docker deployment instructions
Remove tesla coil references from subtitle and tool descriptions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>master
3 changed files with 104 additions and 2 deletions
@ -0,0 +1,102 @@ |
|||||
|
# MIDI Tools |
||||
|
|
||||
|
A web-based MIDI processing suite for analyzing, editing, and transforming MIDI files. Upload a MIDI file and apply various tools through an intuitive browser interface with full undo support. |
||||
|
|
||||
|
## Features |
||||
|
|
||||
|
- **File Analysis** — Automatic breakdown of tracks, channels, tempo, time signature, and note/event counts |
||||
|
- **Piano Roll** — Visual note display when clicking a track |
||||
|
- **MIDI Playback** — In-browser playback with SoundFont support |
||||
|
- **Track Editing** — Change channel assignment and instrument per track |
||||
|
- **Track Management** — Delete or merge tracks |
||||
|
- **Processing Tools:** |
||||
|
- **Bake Tempo** — Flatten tempo changes into a fixed BPM |
||||
|
- **Monofy** — Split polyphonic tracks into separate monophonic tracks |
||||
|
- **Remove Redundancy** — Strip duplicate control changes and redundant messages |
||||
|
- **Velocity Fix** — Remap note velocities into a target min/max range |
||||
|
- **Convert to Type 0** — Merge all tracks into a single Type 0 MIDI file |
||||
|
- **Undo History** — Every operation is undoable |
||||
|
- **Download** — Export the edited MIDI file at any point |
||||
|
|
||||
|
## Deploying with Docker |
||||
|
|
||||
|
### Prerequisites |
||||
|
|
||||
|
- [Docker](https://docs.docker.com/get-docker/) and [Docker Compose](https://docs.docker.com/compose/install/) |
||||
|
|
||||
|
### Quick Start |
||||
|
|
||||
|
```bash |
||||
|
cd server |
||||
|
docker compose up -d |
||||
|
``` |
||||
|
|
||||
|
The application will be available at **http://localhost:8000**. |
||||
|
|
||||
|
### Build and Run Manually |
||||
|
|
||||
|
```bash |
||||
|
cd server |
||||
|
docker build -t midiedit . |
||||
|
docker run -d -p 8000:8000 --restart unless-stopped --name midiedit midiedit |
||||
|
``` |
||||
|
|
||||
|
### Configuration |
||||
|
|
||||
|
| Variable | Default | Description | |
||||
|
|----------|---------|-------------| |
||||
|
| Port mapping | `8000:8000` | Change the first port to serve on a different host port (e.g. `80:8000`) | |
||||
|
|
||||
|
To change the port in `docker-compose.yml`: |
||||
|
|
||||
|
```yaml |
||||
|
services: |
||||
|
midiedit: |
||||
|
build: . |
||||
|
ports: |
||||
|
- "80:8000" |
||||
|
restart: unless-stopped |
||||
|
``` |
||||
|
|
||||
|
## Running without Docker |
||||
|
|
||||
|
### Prerequisites |
||||
|
|
||||
|
- Python 3.10+ |
||||
|
|
||||
|
### Setup |
||||
|
|
||||
|
```bash |
||||
|
cd server |
||||
|
pip install -r requirements.txt |
||||
|
uvicorn app.main:app --host 0.0.0.0 --port 8000 |
||||
|
``` |
||||
|
|
||||
|
## Project Structure |
||||
|
|
||||
|
``` |
||||
|
server/ |
||||
|
├── Dockerfile |
||||
|
├── docker-compose.yml |
||||
|
├── requirements.txt |
||||
|
└── app/ |
||||
|
├── main.py # FastAPI application entry point |
||||
|
├── routers/ |
||||
|
│ └── session.py # Session-based API endpoints |
||||
|
├── core/ |
||||
|
│ ├── analyze.py # MIDI file analysis |
||||
|
│ ├── track_detail.py # Track detail + note extraction |
||||
|
│ ├── baketempo.py # Bake tempo processor |
||||
|
│ ├── monofy.py # Polyphonic-to-monophonic splitter |
||||
|
│ ├── reduncheck.py # Redundancy removal |
||||
|
│ ├── velfix.py # Velocity range remapper |
||||
|
│ ├── type0.py # Type 0 converter |
||||
|
│ ├── file_handling.py # MIDI load/save utilities |
||||
|
│ └── midi_utils.py # Shared MIDI helpers |
||||
|
└── static/ |
||||
|
├── index.html # Single-page application |
||||
|
├── app.js # Frontend logic |
||||
|
└── style.css # Styles |
||||
|
|
||||
|
midi-tools/ # Original standalone CLI scripts |
||||
|
``` |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue