Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sending MIDI messages to DAW in C#

Tags:

c#

.net

midi

I've been searching for about a day and haven't found anything that can point me in the right direction for this - either information is lacking, I'm bad at the internet, or it's hard to find information on music programming for a programming language whose name is that of a music note.

Anyways:
I want to take data that I've cooked (from camera, kinect, joystick control, etc.) and use it to send MIDI data to other programs, such as Propellerhead Reason or other DAWs on my machine. Gathering the input and cooking the data is not the issue, but sending the MIDI messages is. I've downloaded the C# MIDI Toolkit from codeproject and am at a loss for where to start. Could somebody point me in the direction of an simulated NoteOn message to be interpreted by a DAW, or other basic example of sending MIDI data?

I can find examples of accessing the Microsoft MIDI Synthesizer, interpreting messages from keyboards and routing them, and a number of other examples, but I feel like this is pretty basic and I'm not sure why I can't find any information on it.

Thanks!

like image 463
Michael Avatar asked Nov 02 '11 03:11

Michael


2 Answers

As suggested by MusiGenesis, I recommend creating a virtual MIDI port. However, there is a way to you can embed this directly into your software, and even name it appropriately.

http://www.tobias-erichsen.de/virtualMIDI.html

Tobias' driver allows you to do this, and if you shoot him an e-mail, he will send you the API, which I've found very easy to integrate with .NET.

From there, the C# MIDI Toolkit is all you need. I also recommend checking into NAudio.

like image 127
Brad Avatar answered Oct 16 '22 12:10

Brad


This answer seems to suggest that it's possible to configure a virtual MIDI port that your Codeproject MIDI example could write messages to, and that in Reason could be selected as the input source (I haven't tried it myself so I can't say if that would work or not).

Other than that, the normal way of controlling Reason remotely would be to author a VST plugin (degree of difficulty: pretty high).

like image 28
MusiGenesis Avatar answered Oct 16 '22 12:10

MusiGenesis