An offshot of the SteamControllerSigner that aims to take advantage of the SC's dual pulse channel nature.
- Uses tracker files instead of MIDI, which has more precise time divisions than MIDI (lines and ticks instead of arbitrary timestamps)
- Support for multiple Steam Controllers
- Support for a number of tracker effects (note slide, vibrato, arpeggio, etc.)
- Instruments can be mapped to various duty cycles (so they actually sound a bit different) and even pulses of various intensity (for percussions)
- Channels can selected and pitch can be shifted without having to alter the file
You'll need Node.js (which you can download from here), as well as Python 2 and git for the initial setup
process. Just download a copy of the source on Github, run npm install
in the directory and run node play_mod.js
.
Mistakes were made. Node had some pretty handy tools and libraries to deal with device I/O when I started this out. I didn't realize just how inconveinient node would turn out to be if I needed to show this to people it's too late now to switch to, say, Python.
In theory, any format supported by libopenmpt. According to their documentation, this means any of the following :
mod s3m xm it mptm stm nst m15 stk wow ult 669 mtm med far mdl ams dsm amf okt dmf ptm psm mt2 dbm digi imf j2b gdm umx plm pt36 sfx sfx2 mms mo3 xpk ppm mmcmp
No, MIDI as a whole is not especially well suited for playing music on devices other than proper music synthetizers. Tracker modules are better suited to this kind of use since managing channels for multiple reasons, and while support for MIDI could be added to this project, you're probably better off using Pilatomic's SteamControllerSigner for now.
While those formats would be well suited to playing music on the Steam Controller as well, those formats are not supported at the moment. You would need to convert those into something like XM or the like first.