Install Asset
Install via Godot
To maintain one source of truth, Godot Asset Library is just a mirror of the old asset library so you can download directly on Godot via the integrated asset library browser
Quick Information
Embeddable Software MIDI Player for Godot Engine 3.4 and later.2.5.5 update:* Fixed double displaying in Node list.2.5.4 update:* Refactoring source codes* Some changes smf/sf2 file reading APIs.2.5.3 update:* No use when running on debug build.2.5.2 update:* Added no_thread_mode for HTML5 env.2.5.1 update:* Fix crash when hot reload in the debug mode by save on the editor.2.5.0 update:* Use thread for sequence playing.2.4.7 update:* Fixed affected key_shift for drum track.* Fixed attack/decay.2.4.6 update:* Fixed some problem with velocity range and key range2.4.5 update:* Added some drum track assign group.2.4.4 update:* Fixed occured error that set to volume_db before _ready( )2.4.3 update:* Added some signals (resets, etc...)* Improved reuse player finding method2.4.2 update:* Fixed hold1 (sustain/dumper pedal) behavior.* Update demo project.2.4.1 update:* Changed GodotMidiPlayer super class to Node2.4.0 update:* Signal only mode when MidiPlayer.soundfont is nullFeatures:* 100% Pure GDScript* Play Standard MIDI File format 0 and format 1 with SoundFont.* Emit signals on some MIDI events (changes tempo, lyrics, markers or something).* Receive raw midi messages* You can play procedural generate MIDI sequences.Demo:https://bitbucket.org/arlez80/godot-midi-player/downloads/demo.zipRepository:https://bitbucket.org/arlez80/godot-midi-player/Wiki:https://bitbucket.org/arlez80/godot-midi-player/wiki/
Godot MIDI Player
Software MIDI player library for Godot Engine 3.4 later
- Changes play speed.
- Set tempo.
- Emit on some events (tempo change, appears lyric ...)
- You can control like AudioStreamPlayer.
Try it
- Copy *.mid under "res://"
- Copy *.sf2 under "res://"
- Set MIDI path to MidiPlayer "file" parameter.
- Set SoundFont path to MidiPlayer "soundfont" parameter.
- call play() method
How to use
- See wiki
Demo
- download
- This demo can get MIDIInput events. You can play using MIDI keyboards!
- BGM "failyland_gm.mid" from IvyMaze
- Youtube: Demo #1
- Youtube: Demo #2
- Youtube: Demo #3
Hint
- Set false to
GodotMIDIPlayer.load_all_voices_from_soundfont
to load voices for program change message in MIDI sequence.- of course,
GodotMIDIPlayer.load_all_voices_from_soundfont = true
will be very slow.
- of course,
- SMF format 0 loading faster than SMF format 1.
- because format 1 data will be convert to format 0 in the player.
TODO
- See issues
Not TODO
- Supports play format 2
- SMF.gd can read it. but I will not implement it to MIDI Player.
License
MIT License
Author
- @arlez80 あるる / きのもと 結衣 ( Yui Kinomoto )
Embeddable Software MIDI Player for Godot Engine 3.4 and later.
2.5.5 update:
* Fixed double displaying in Node list.
2.5.4 update:
* Refactoring source codes
* Some changes smf/sf2 file reading APIs.
2.5.3 update:
* No use when running on debug build.
2.5.2 update:
* Added no_thread_mode for HTML5 env.
2.5.1 update:
* Fix crash when hot reload in the debug mode by save on the editor.
2.5.0 update:
* Use thread for sequence playing.
2.4.7 update:
* Fixed affected key_shift for drum track.
* Fixed attack/decay.
2.4.6 update:
* Fixed some problem with velocity range and key range
2.4.5 update:
* Added some drum track assign group.
2.4.4 update:
* Fixed occured error that set to volume_db before _ready( )
2.4.3 update:
* Added some signals (resets, etc...)
* Improved reuse player finding method
2.4.2 update:
* Fixed hold1 (sustain/dumper pedal) behavior.
* Update demo project.
2.4.1 update:
* Changed GodotMidiPlayer super class to Node
2.4.0 update:
* Signal only mode when MidiPlayer.soundfont is null
Features:
* 100% Pure GDScript
* Play Standard MIDI File format 0 and format 1 with SoundFont.
* Emit signals on some MIDI events (changes tempo, lyrics, markers or something).
* Receive raw midi messages
* You can play procedural generate MIDI sequences.
Demo:
https://bitbucket.org/arlez80/godot-midi-player/downloads/demo.zip
Repository:
https://bitbucket.org/arlez80/godot-midi-player/
Wiki:
https://bitbucket.org/arlez80/godot-midi-player/wiki/
Reviews
Quick Information
Embeddable Software MIDI Player for Godot Engine 3.4 and later.2.5.5 update:* Fixed double displaying in Node list.2.5.4 update:* Refactoring source codes* Some changes smf/sf2 file reading APIs.2.5.3 update:* No use when running on debug build.2.5.2 update:* Added no_thread_mode for HTML5 env.2.5.1 update:* Fix crash when hot reload in the debug mode by save on the editor.2.5.0 update:* Use thread for sequence playing.2.4.7 update:* Fixed affected key_shift for drum track.* Fixed attack/decay.2.4.6 update:* Fixed some problem with velocity range and key range2.4.5 update:* Added some drum track assign group.2.4.4 update:* Fixed occured error that set to volume_db before _ready( )2.4.3 update:* Added some signals (resets, etc...)* Improved reuse player finding method2.4.2 update:* Fixed hold1 (sustain/dumper pedal) behavior.* Update demo project.2.4.1 update:* Changed GodotMidiPlayer super class to Node2.4.0 update:* Signal only mode when MidiPlayer.soundfont is nullFeatures:* 100% Pure GDScript* Play Standard MIDI File format 0 and format 1 with SoundFont.* Emit signals on some MIDI events (changes tempo, lyrics, markers or something).* Receive raw midi messages* You can play procedural generate MIDI sequences.Demo:https://bitbucket.org/arlez80/godot-midi-player/downloads/demo.zipRepository:https://bitbucket.org/arlez80/godot-midi-player/Wiki:https://bitbucket.org/arlez80/godot-midi-player/wiki/