We are about to switch to a new forum software. Until then we have removed the registration on this forum.
I'm trying to receive midi beat clock information from a DAW into processing via the IAC driver. I have got MIDI note information going out from processing into the DAW fine, but I want to sync up with the tempo of the project.
From examples in the Java info for The MIDIBus library I am getting something that looks like it is the midi clock info with this:
import themidibus.*; //Import the library
MidiBus myBus; // The MidiBus
void setup() {
size(400, 400);
background(0);
myBus = new MidiBus(this, 0, 0); // Create a new MidiBus object
}
// Notice all bytes below are converted to integeres using the following system:
// int i = (int)(byte & 0xFF)
// This properly convertes an unsigned byte (MIDI uses unsigned bytes) to a signed int
// Because java only supports signed bytes, you will get incorrect values if you don't do so
void rawMidi(byte[] data) { // You can also use rawMidi(byte[] data, String bus_name)
// Receive some raw data
// data[0] will be the status byte
// data[1] and data[2] will contain the parameter of the message (e.g. pitch and volume for noteOn noteOff)
println();
println("Raw Midi Data:");
println("--------");
println("Status Byte/MIDI Command:"+(int)(data[0] & 0xFF));
// N.B. In some cases (noteOn, noteOff, controllerChange, etc) the first half of the status byte is the command and the second half if the channel
// In these cases (data[0] & 0xF0) gives you the command and (data[0] & 0x0F) gives you the channel
for (int i = 1;i < data.length;i++) {
println("Param "+(i+1)+": "+(int)(data[i] & 0xFF));
}
}
but when I try translating this into python it doesn't like taking byte[] as a variable in rawMidi. This is how I tried to do it in python (excluding the superfluous stuff):
add_library('themidibus')
def setup():
global myBus
myBus = MidiBus(this, 0, 0)
def rawMidi(byte[] data):
println()
println("Raw Midi Data:")
println("--------")
println("Status Byte/MIDI Command:"+ int(data[0] & 0xFF))
I apologise if my question is a bit jumbled - not an experienced programmer at all.
Answers
http://www.IBM.com/developerworks/java/tutorials/j-jython2/j-jython2.html#pjarray