I have a feature request, to add support for I/O from/to MIDI devices connected to the computer.
Is this possible?
I never thought about using a MIDI device in games. Is it a common use case? If not, then this is better suited in a custom module.
Certainly that's _one_ case of game use. My point is that it's not worth adding the burden of MIDI I/O to the core if it's gonna be used only by a handful of specific games.
As a measure, Steam has roughly 22000 games when browsing "all games" and when looking at "music" tag showing 185 games. This is a little less than %1 percent. If MIDI device usage is only limited to games about music this may give an idea about the necessity of MIDI device feature in core.
MIDI is of course music related but can be used as an overall controller as well. I have seen it being used to non musical tasks, for example keeping completely different and not music related but midi equipped devices in sync. I think it's still useful as a simple, kind of slow but popular I/O.
Is it worthy to put it in the core? Maybe. There could always be enable_MIDI=no setting during compilation if someone needs streamlined core.
@vnen > "Is it a common use case?"
I feel like, if we ask this kind of questions, we might be in danger of seeing Godot used to create mostly loads of platformers and nothing really original... because unfortunately, that is the common use case. Sometimes it might be good to add non-mainstream feature to stick out from the competition.
@hubbyist Midi controllers were used for many years for non musical games.
Some to the extreme I may say https://www.youtube.com/watch?v=fc79UYr_oeI :D
Programs like http://www.pcworld.com/article/2010931/xpadder-play-pc-games-with-a-game-controller-instead-of-a-keyboard.html or http://www.bome.com/products/miditranslator/overview/classic
were used with sturdy midi hardware to play no music related games. It always worked great with all kind of simulations, fighting games etc. Maybe the problem comes from thinking about MIDI controllers as cheap yamaha keyboards for kids, when today's MIDI controllers come in many form and shapes - http://www.sweetwater.com/store/detail/LaunchpadPro - and are basically that thing that lets you build your own Enterprise's cockpit at home ;)
They are also usually much better made then typical computer game-pad-controllers.
So, I would go with MIDI, in core or as a custom module, as long as it's going to be up to date and maintained. AFAIK reduz has a great pro experience with programming audio related stuff. For him it might be a piece of cake to make midi capable Godot. Audio engine rewrite is planned anyway, so he might find time for midi too.
We never know what kind of of new and original games midi would bring to Godot.
Just my $0.02.
I feel like, if we ask this kind of questions, we might be in danger of seeing Godot used to create mostly loads of platformers and nothing really original... because unfortunately, that is the common use case.
Well, this will be the case anyway, whether we ask it or not, since we can't control what the community will create. OTOH, adding edge-case features might make the engine bloated with stuff that few people will actually use.
Maybe adding MIDI makes no significant difference in the end (for the ones who won't use it). Or maybe it's worth it. The power of open source is that people can contribute with what they want if it's not already there (and IMO this is what makes Godot able to do awesome new creative stuff, not really what's already in core).
In the end I might be closer to Godot dev team, but in no way I can really say "no, it won't happen". I just see no reason to rush this feature when there's many other stuff being worked on right now. If someone in the community want to tackle this: go ahead. As always, PRs are welcome.
TL;DR -- feel free to make a module or a dynamically-linked library (when they come around).
Actually, the game I was going to make used MIDI to communicate with a launchpad mini, that acted as a display for it
The easier it is to add native modules for any audience, the easier it will be to add such features. I would see such functionnality added as a module too (and even some functionnality already in the core, actually :p)
I was just searching for the possibility of connecting MIDI devices in godot yesterday. Using a MIDI device for I/O would be a great feature for me as well.
Another use case would be to play music, to reproduce old-school genre of games or reduce memory usage. Many musical games can benefit from it.
MIDI I/O is not the same thing as MIDI playback. The latter is something I would like to see too. Currently you can convert them to Mod files, which Godot is able to play.
I wrote a thin wrapper around RtMidi as a module if anyone is interested.
Closing for now, as there is the above module now and consesus was that this should be a module, not in core.
Most helpful comment
MIDI is of course music related but can be used as an overall controller as well. I have seen it being used to non musical tasks, for example keeping completely different and not music related but midi equipped devices in sync. I think it's still useful as a simple, kind of slow but popular I/O.
Is it worthy to put it in the core? Maybe. There could always be enable_MIDI=no setting during compilation if someone needs streamlined core.
@vnen > "Is it a common use case?"
I feel like, if we ask this kind of questions, we might be in danger of seeing Godot used to create mostly loads of platformers and nothing really original... because unfortunately, that is the common use case. Sometimes it might be good to add non-mainstream feature to stick out from the competition.
@hubbyist Midi controllers were used for many years for non musical games.
Some to the extreme I may say https://www.youtube.com/watch?v=fc79UYr_oeI :D
Programs like http://www.pcworld.com/article/2010931/xpadder-play-pc-games-with-a-game-controller-instead-of-a-keyboard.html or http://www.bome.com/products/miditranslator/overview/classic
were used with sturdy midi hardware to play no music related games. It always worked great with all kind of simulations, fighting games etc. Maybe the problem comes from thinking about MIDI controllers as cheap yamaha keyboards for kids, when today's MIDI controllers come in many form and shapes - http://www.sweetwater.com/store/detail/LaunchpadPro - and are basically that thing that lets you build your own Enterprise's cockpit at home ;)
They are also usually much better made then typical computer game-pad-controllers.
So, I would go with MIDI, in core or as a custom module, as long as it's going to be up to date and maintained. AFAIK reduz has a great pro experience with programming audio related stuff. For him it might be a piece of cake to make midi capable Godot. Audio engine rewrite is planned anyway, so he might find time for midi too.
We never know what kind of of new and original games midi would bring to Godot.
Just my $0.02.