[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Matlab, MIDI (and RME)

MATLAB contains Java support, including the javax.sound.midi.* classes (although it somewhat depends on your platform). On Windows, it's quite easy to send MIDI messages, although latency may be an issue. (The Mac OS X Java VM does not make MIDI available to apps, so you need some additional software. See http://www.mandolane.co.uk/ for more info.)

Below is some example code that sends a scale from MATLAB via MIDI:

import javax.sound.midi.*
scale = [60 62 64 65 67 69 71 72];

info = MidiSystem.getMidiDeviceInfo; % This will return a list of available MIDI devices outputPort = MidiSystem.getMidiDevice(info(2)); % The actual device index will vary depending on your configuration

r = outputPort.getReceiver;
note = ShortMessage;

for i=1:length(scale)
	note.setMessage(ShortMessage.NOTE_ON, 1, scale(i), 127)
	r.send(note, -1)

	note.setMessage(ShortMessage.NOTE_OFF, 1, scale(i), 127);
	r.send(note, -1)



Hope this is helpful!


Youngmoo Kim, Assistant Professor
Music & Entertainment Technology Laboratory (MET-lab)
Electrical & Computer Engineering Department
Drexel University

On Apr 23, 2009, at 3:31 AM, Bastian Epp wrote:

Hi list!

I am currently playing around with a multi-channel setup which uses:


The ADI8-QS is supposed to be controllable via MIDI (which is a good thing in order to ensure the correct settings). I am wondering if anybody has some experience in sending MIDI-commands within MATLAB to an audio device (here to the ADI8 using the HDSPe). All I could find in the internet was a standalone program which can control 8 channels (1 ADI8).

So the ideal solution would be to send some MIDI commands (settings) to the ADI8 just before the sound presentation starts without using another program that has to be started separately.

In the web I could only find code converting wav into MIDI and vice versa, but nothing that actually communicated with a MIDI device via MATLAB.

Any pointer would be highly appreciated! Thanks in advance!