JPortMidiApi.java (5531B)
1 package jportmidi; 2 3 public class JPortMidiApi { 4 public static class PortMidiStream { 5 private long address; 6 } 7 public static class PmEvent { 8 public int message; 9 public int timestamp; 10 } 11 12 // PmError bindings 13 public final int pmNoError = 0; 14 public final int pmNoData = 0; 15 public final int pmGotData = -1; 16 public final int pmHostError = -10000; 17 public final int pmInvalidDeviceId = -9999; 18 public final int pmInsufficientMemory = -9998; 19 public final int pmBufferTooSmall = -9997; 20 public final int pmBufferOverflow = -9996; 21 public final int pmBadPtr = -9995; 22 public final int pmBadData = -9994; 23 public final int pmInternalError = -9993; 24 public final int pmBufferMaxSize = -9992; 25 26 static public native int Pm_Initialize(); 27 static public native int Pm_Terminate(); 28 static public native int Pm_HasHostError(PortMidiStream stream); 29 static public native String Pm_GetErrorText(int errnum); 30 static public native String Pm_GetHostErrorText(); 31 final int pmNoDevice = -1; 32 static public native int Pm_CountDevices(); 33 static public native int Pm_GetDefaultInputDeviceID(); 34 static public native int Pm_GetDefaultOutputDeviceID(); 35 static public native String Pm_GetDeviceInterf(int i); 36 static public native String Pm_GetDeviceName(int i); 37 static public native boolean Pm_GetDeviceInput(int i); 38 static public native boolean Pm_GetDeviceOutput(int i); 39 static public native int Pm_OpenInput(PortMidiStream stream, 40 int inputDevice, 41 String inputDriverInfo, 42 int bufferSize); 43 static public native int Pm_OpenOutput(PortMidiStream stream, 44 int outputDevice, 45 String outnputDriverInfo, 46 int bufferSize, 47 int latency); 48 final static public int PM_FILT_ACTIVE = (1 << 0x0E); 49 final static public int PM_FILT_SYSEX = (1 << 0x00); 50 final static public int PM_FILT_CLOCK = (1 << 0x08); 51 final static public int PM_FILT_PLAY = 52 (1 << 0x0A) | (1 << 0x0C) | (1 << 0x0B); 53 final static public int PM_FILT_TICK = (1 << 0x09); 54 final static public int PM_FILT_FD = (1 << 0x0D); 55 final static public int PM_FILT_UNDEFINED = PM_FILT_FD; 56 final static public int PM_FILT_RESET = (1 << 0x0F); 57 final static public int PM_FILT_REALTIME = 58 PM_FILT_ACTIVE | PM_FILT_SYSEX | PM_FILT_CLOCK; 59 final static public int PM_FILT_NOTE = (1 << 0x19) | (1 << 0x18); 60 final static public int PM_FILT_CHANNEL_AFTERTOUCH = (1 << 0x1D); 61 final static public int PM_FILT_POLY_AFTERTOUCH = (1 << 0x1A); 62 final static public int PM_FILT_AFTERTOUCH = 63 (PM_FILT_CHANNEL_AFTERTOUCH | PM_FILT_POLY_AFTERTOUCH); 64 final static public int PM_FILT_PROGRAM = (1 << 0x1C); 65 final static public int PM_FILT_CONTROL = (1 << 0x1B); 66 final static public int PM_FILT_PITCHBEND = (1 << 0x1E); 67 final static public int PM_FILT_MTC = (1 << 0x01); 68 final static public int PM_FILT_SONG_POSITION = (1 << 0x02); 69 final static public int PM_FILT_SONG_SELECT = (1 << 0x03); 70 final static public int PM_FILT_TUNE = (1 << 0x06); 71 final static public int PM_FILT_SYSTEMCOMMON = 72 (PM_FILT_MTC | PM_FILT_SONG_POSITION | 73 PM_FILT_SONG_SELECT | PM_FILT_TUNE); 74 static public native int Pm_SetFilter(PortMidiStream stream, int filters); 75 static public int Pm_Channel(int channel) { return 1 << channel; } 76 final static public native int Pm_SetChannelMask(PortMidiStream stream, 77 int mask); 78 final static public native int Pm_Abort(PortMidiStream stream); 79 final static public native int Pm_Close(PortMidiStream stream); 80 static public int Pm_Message(int status, int data1, int data2) { 81 return (((data2 << 16) & 0xFF0000) | 82 ((data1 << 8) & 0xFF00) | 83 (status & 0xFF)); 84 } 85 static public int Pm_MessageStatus(int msg) { 86 return msg & 0xFF; 87 } 88 static public int Pm_MessageData1(int msg) { 89 return (msg >> 8) & 0xFF; 90 } 91 static public int Pm_MessageData2(int msg) { 92 return (msg >> 16) & 0xFF; 93 } 94 // only supports reading one buffer at a time 95 static public native int Pm_Read(PortMidiStream stream, PmEvent buffer); 96 static public native int Pm_Poll(PortMidiStream stream); 97 // only supports writing one buffer at a time 98 static public native int Pm_Write(PortMidiStream stream, PmEvent buffer); 99 static public native int Pm_WriteShort(PortMidiStream stream, 100 int when, int msg); 101 static public native int Pm_WriteSysEx(PortMidiStream stream, 102 int when, byte msg[]); 103 104 public final int ptNoError = 0; 105 public final int ptAlreadyStarted = -10000; 106 public final int ptAlreadyStopped = -9999; 107 public final int PtInsufficientMemory = -9998; 108 static public native int Pt_TimeStart(int resolution); 109 static public native int Pt_TimeStop(); 110 static public native int Pt_Time(); 111 static public native boolean Pt_TimeStarted(); 112 static { 113 System.out.println("Loading pmjni"); 114 System.loadLibrary("pmjni"); 115 System.out.println("done loading pmjni"); 116 } 117 }