I've been notified that some users are having issues with downloading this asset from the YoYoGames Marketplace. I've contacted YoYoGames to get this resolved as soon as possible. In the meantime, If you run into any issues, please email me using the "contact publisher" link above and I'll send you a direct link to download this extension.
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
As a demo, I've made a simple arpeggiator that can accept unlimited notes and use a stable internal clock or accept incoming clock from an external MIDI device. Check it out here! 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
Changed timing method in arpeggiator demo, greatly reducing lag and clock jitter.