Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
ef786bf
WIP: Enhances MIDI file handling with multi-track support, adding tra…
crescent-stdio Dec 3, 2025
d96c06b
Enhances MIDI file handling by implementing track visibility manageme…
crescent-stdio Dec 3, 2025
05fac01
Add track mute functionality to MIDI files
crescent-stdio Dec 3, 2025
9967ae6
Update player icon SVGs for pause state to adjust line positions for …
crescent-stdio Dec 3, 2025
f26a88b
Implement track volume control for MIDI files, allowing per-track vol…
crescent-stdio Dec 3, 2025
166d4ff
Enhance MIDI management by implementing track last non-zero volume tr…
crescent-stdio Dec 3, 2025
52f1002
Add auto instrument functionality for MIDI tracks, enabling dynamic s…
crescent-stdio Dec 3, 2025
173c80b
Enables multi-instrument support for MIDI playback
crescent-stdio Dec 3, 2025
a3c4923
Enhance track color visualization in MIDI files by implementing light…
crescent-stdio Dec 3, 2025
371a3f6
Fix MIDI Mute/Volume/Pan State Not Applying After Refresh
crescent-stdio Dec 3, 2025
5bb14d3
Adds instrument families and improves loading
crescent-stdio Dec 4, 2025
8866665
Enhance MIDI file visualization by adding track information to file m…
crescent-stdio Dec 4, 2025
2e624b7
Add uniform track color option
crescent-stdio Dec 4, 2025
dc0bb43
Adjust UI elements in file list for better spacing and organization, …
crescent-stdio Dec 4, 2025
b475e58
Rename `Tracks Appearance` to `Files Appearance`
crescent-stdio Dec 4, 2025
b465563
Add visibility of per-track sustain pedal button
crescent-stdio Dec 4, 2025
016762c
Enhance file handling capabilities for MIDI and audio files. Introduc…
crescent-stdio Dec 4, 2025
5779c32
Add default highlight mode support in WaveRollPlayer.
crescent-stdio Dec 5, 2025
bce4e61
Enhance VS Code integration for MIDI file handling by preserving full…
crescent-stdio Dec 5, 2025
cfa51d8
Add .npmignore to exclude development files and temporary artifacts; …
crescent-stdio Dec 5, 2025
e8f2504
Update VS Code extension name from `wave-roll-solo` to `wave-roll-stu…
crescent-stdio Dec 5, 2025
02329d4
Add allowFileDrop flag to toggle drag upload
crescent-stdio Dec 6, 2025
ec0d9ea
Update package version to 0.4.0-next.0 and clean up comments.
crescent-stdio Dec 6, 2025
d42bd98
Merge branch 'feature/multi-instrument' into release/0.4.0
crescent-stdio Dec 6, 2025
ab3a3d7
Adjust track row spacing and control alignment
crescent-stdio Dec 6, 2025
c4594cb
Update CHANGELOG for version 0.4.0 release date and modify wave-roll-…
crescent-stdio Dec 6, 2025
3fab5c4
Ensure responsive canvas layout in PianoRoll by updating canvas CSS t…
crescent-stdio Dec 6, 2025
0a156e0
Bump version to 0.4.0
crescent-stdio Dec 6, 2025
21860d6
Streamline VS Code Extension documentation by consolidating into a si…
crescent-stdio Dec 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,6 @@ tmp/
temp/

# Sample MIDI files
src/sample_midi/
src/sample_midi/

.pnpm-store/
34 changes: 34 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Exclude development and test sources
src/
test/
docs/

# Build and tooling configs
.vscode/
.github/
pnpm-lock.yaml
pnpm-workspace.yaml
vite.config.ts
tsconfig.json
tsconfig.*.json

# Demo and example assets not needed in the package
index.html
multi_midi.html
test-umd.html
test-esm-cdn.html
wave-roll*.png

# Temporary and cache files
*.log
*.tsbuildinfo
coverage/
tmp/
temp/
.pnpm-store/

# Ensure published artifacts and docs stay included
!dist/
!README.md
!CHANGELOG.md
!LICENSE
23 changes: 21 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

> **Note**: This library is published at [ISMIR 2025 LBD](https://ismir2025program.ismir.net/lbd_459.html). See [Citation](#citation) for reference.

## [0.4.0] - 2025-12-06

### Added

- Multi-instrument MIDI support with GM program detection and auto soundfont mapping
- Per-track controls for visibility, mute, volume, sustain, and waveform/piano-roll toggles
- Track-aware instrument icons, palettes, and color handling for multi-track MIDI files

### Changed

- Updated player, visualization, and loop controls to handle multi-track state across audio and UI
- Refreshed file list and wave list UI to expose per-track toggles and multi-file controls
- Improved MIDI parser and sampler manager to keep track metadata consistent across playback and rendering

### Tests

- Added coverage for multi-MIDI manager behaviors and instrument family mapping


## [0.3.0] - 2025-12-02

Expand All @@ -16,7 +34,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Tempo control with popover input for precise BPM adjustment
- Flexible MIDI export options
- Pitch hover indicator to piano roll
- VS Code extension support (`wave-roll-solo`) for viewing MIDI files directly in the editor
- VS Code extension support (`wave-roll-studio`, formerly `wave-roll-solo`) for viewing MIDI files directly in the editor
- GitHub Actions workflow for automated release creation from tags

### Changed
Expand Down Expand Up @@ -123,7 +141,8 @@ If you use WaveRoll in your research, please cite:

---

[Unreleased]: https://github.com/crescent-stdio/wave-roll/compare/v0.3.0...HEAD
[Unreleased]: https://github.com/crescent-stdio/wave-roll/compare/v0.4.0...HEAD
[0.4.0]: https://github.com/crescent-stdio/wave-roll/compare/v0.3.0...v0.4.0
[0.3.0]: https://github.com/crescent-stdio/wave-roll/compare/v0.2.5...v0.3.0
[0.2.5]: https://github.com/crescent-stdio/wave-roll/compare/v0.2.4...v0.2.5
[0.2.4]: https://github.com/crescent-stdio/wave-roll/compare/v0.2.3...v0.2.4
Expand Down
28 changes: 0 additions & 28 deletions LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -19,31 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

---

ACKNOWLEDGMENTS:

This software includes code ported from mir_eval (https://github.com/mir-evaluation/mir_eval),
which is licensed under the MIT License:

Copyright (c) 2014 Colin Raffel, Brian McFee, Eric J. Humphrey, Justin Salamon,
Rachel Bittner, Oriol Nieto, Dan Ellis, and contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
24 changes: 24 additions & 0 deletions NOTICE
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
ACKNOWLEDGMENTS

This software includes code ported from mir_eval (https://github.com/mir-evaluation/mir_eval), which is licensed under the MIT License:

Copyright (c) 2014 Colin Raffel, Brian McFee, Eric J. Humphrey, Justin Salamon,
Rachel Bittner, Oriol Nieto, Dan Ellis, and contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
14 changes: 2 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

- You can try the web demo at [https://crescent-stdio.github.io/wave-roll/](https://crescent-stdio.github.io/wave-roll/).
- NPM package: [https://www.npmjs.com/package/wave-roll](https://www.npmjs.com/package/wave-roll)
- VS Code Extension: [WaveRoll Studio](https://github.com/crescent-stdio/wave-roll-studio) (also available on Open VSX)
- Multi-instrument MIDI files are supported with automatic GM instrument mapping and per-track mute/volume/visibility controls.


## Installation
Expand Down Expand Up @@ -166,18 +168,6 @@ IFrame(src='https://crescent-stdio.github.io/wave-roll/standalone.html', width='

This is particularly useful for music information retrieval (MIR) research, allowing you to visualize and compare transcription results directly in your analysis notebooks.

### VS Code Extension

Use WaveRoll directly in VS Code with the **Wave Roll Solo** extension:

- Open any `.mid` or `.midi` file to view it as an interactive piano roll
- Play MIDI files with built-in Tone.js synthesis
- Adjust tempo and export MIDI with modified tempo

**Installation**: Search "WaveRoll Solo" in VS Code Extensions marketplace

**GitHub**: [crescent-stdio/wave-roll-solo](https://github.com/crescent-stdio/wave-roll-solo)

## API

### Attributes
Expand Down
Loading