Musical Interface for Digital Instrument Arrangement
Digital Audio Workstation (DAW)
MIDIA is a lightweight Java-based digital audio workstation designed around intuitive MIDI sequencing.
It features:
- A timeline window for organizing tracks and blocks
- A dedicated Piano Roll editor window, opened per block in its own
JFrame - Real-time MIDI playback with a draggable playhead
- Block-based editing for structuring musical ideas
- Clean separation between timeline interaction and note editing
- Unit-tested core components and a well-organized architecture
The result is a minimal yet powerful MIDI composition tool built in pure Java.
- Create multiple MIDI tracks with customizable names and instruments
- Rename tracks, change their instruments, or delete them
- Tracks appear vertically in the timeline, each containing blocks representing musical segments
- Add blocks specifying their starting beat
- Blocks represent a section of notes to be edited
- Double-clicking a block opens a separate Piano Roll window (JFrame) for detailed note editing
Each block opens in its own floating editor window:
- Left-click: add a note
- Right-click: delete a note
- Scrollable and grid-aligned
- Plays back using the block's track instrument
- Editing updates the block in the timeline seamlessly
- Play, pause, and drag the playhead during playback
- The red playhead follows MIDI output in real time
- Adjustable BPM: click-and-drag the BPM value to increase/decrease tempo
- File → Save writes the full project (tracks, blocks, notes, BPM)
- File → Load restores previously saved sessions
- Open Track → Add Track
- Enter a name and select an instrument
- A new track appears in the timeline
- Use Track → Add Block
- Enter the block’s starting beat
- The block appears inside the selected track
- Double-click a block
- A new Piano Roll window opens
- In the Piano Roll:
- Left-click → add note
- Right-click → delete note
- Press the top-right Play button
- Drag the timeline playhead at any time
- Adjust BPM by dragging on the BPM value
- Right-click a track label
- Choose rename / change instrument / delete track
- Use File → Save and File → Load
- UI: Swing with FlatLaf
- MIDI Playback:
javax.sound.midi - Testing: JUnit
- Platform: Cross-platform desktop