**Version 1.1.1 uses an x64 extension, as GameMaker will be deprecating the x86 runtime soon. Please make sure the "use x64 Windows Runtime" box is checked in global game options. If you require the x86 version, it is still included - in the asset browser, right-click the GMSSimpleMIDI extension, delete midistuff.dll, and rename midistuffx86.dll to midistuff.dll. Additionally, the assets have been reorganized into a single folder.
GMSSimpleMIDI uses the RtMidi library to allow Gamemaker Studio projects to send and receive MIDI data. Use hardware MIDI controllers as input for your games, or create custom sequencers and arpeggiators for your synthesizers! Any MIDI message can be received, including SYSEX, and messages of up to three bytes can be sent, meaning any non-SYSEX MIDI message.
-Use MIDI hardware to control your games
-Make MIDI sequencers or arpeggiators to control synthesizers
-Link your GMS projects to your DAW
-Simple to use - full MIDI functionality with only 12 functions, 9 of which are generally only used during the initial setup
Check out the demo here! It's a simple arpeggiator that can accept unlimited notes and use an internal clock or accept incoming clock from an external MIDI device. The full source for the demo is included in the extension, along with several GML scripts for even easier access to basic MIDI functions like sending note on and off messages.
Arpeggiator demo has been updated! I've also updated the .yymps file, but only the arpeggiator object and scripts have been changed, not the .dll itself or extension asset. Running the game at a higher FPS (in this case 600, although decent results are had at as low as 240fps) and only drawing every 10 frames, while checking the MIDI queue only once per step, results in much tighter timing with much lower CPU consumption than continuously re-checking each step until sufficient time has passed.
HOW TO USE
The asset includes the entire source for the arpeggiator demo, but only the GMSSimpleMIDI extension is required to use the MIDI functions. The script folder "GMSSimpleMIDI" includes a couple basic scripts to make certain MIDI actions easier, see the full documentation on Github for details.
For full documentation of the extension, including troubleshooting if you're having trouble with the demo, check out the documentation on Github.
The extension is only officially offered with a Windows-compatible .dll - unfortunately, I just don't have regular access to a Mac to troubleshoot and compile for OSX. However, I've made the code for the .dll itself open source, and it should be platform agnostic. If anyone would like to compile it as a .dylib or even .so, they're welcome to, and it should be a simple drop-in replacement for the .dll file. Check out the repository if that interests you!
GMSSimpleMIDI does not add functionality for playing MIDI files as music in your games. GMSSimpleMIDI is for controlling MIDI-enabled hardware and software through GMS, and using MIDI hardware like keyboards, wind controllers and sequencers to control your GMS projects
**Version 1.1 fixes issues some users were having with their system failing to open the extension's DLL. If you have issues, please let me know and I'll do my best to resolve it!
Updated to x64 DLL, reorganized assets