diff options
| author | Mitja Felicijan <mitja.felicijan@gmail.com> | 2024-10-07 06:50:04 +0200 |
|---|---|---|
| committer | Mitja Felicijan <mitja.felicijan@gmail.com> | 2024-10-07 06:50:04 +0200 |
| commit | 988f5d2b5343850e19ad1512cefe6c53953aa02e (patch) | |
| tree | 1ff29934294e73b2575488c06df91866ce251dbe /portmidi/pm_java/pmjni | |
| parent | 9b5839c58a2e1df8bddf6b98805998508ea417d5 (diff) | |
| download | ttdaw-988f5d2b5343850e19ad1512cefe6c53953aa02e.tar.gz | |
Added bunch of examples
Diffstat (limited to 'portmidi/pm_java/pmjni')
| -rw-r--r-- | portmidi/pm_java/pmjni/jportmidi_JportMidiApi.h | 293 | ||||
| -rw-r--r-- | portmidi/pm_java/pmjni/pmjni.c | 354 | ||||
| -rw-r--r-- | portmidi/pm_java/pmjni/pmjni.rc | 63 |
3 files changed, 710 insertions, 0 deletions
diff --git a/portmidi/pm_java/pmjni/jportmidi_JportMidiApi.h b/portmidi/pm_java/pmjni/jportmidi_JportMidiApi.h new file mode 100644 index 0000000..2208be6 --- /dev/null +++ b/portmidi/pm_java/pmjni/jportmidi_JportMidiApi.h @@ -0,0 +1,293 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include <jni.h> +/* Header for class jportmidi_JPortMidiApi */ + +#ifndef _Included_jportmidi_JPortMidiApi +#define _Included_jportmidi_JPortMidiApi +#ifdef __cplusplus +extern "C" { +#endif +#undef jportmidi_JPortMidiApi_PM_FILT_ACTIVE +#define jportmidi_JPortMidiApi_PM_FILT_ACTIVE 16384L +#undef jportmidi_JPortMidiApi_PM_FILT_SYSEX +#define jportmidi_JPortMidiApi_PM_FILT_SYSEX 1L +#undef jportmidi_JPortMidiApi_PM_FILT_CLOCK +#define jportmidi_JPortMidiApi_PM_FILT_CLOCK 256L +#undef jportmidi_JPortMidiApi_PM_FILT_PLAY +#define jportmidi_JPortMidiApi_PM_FILT_PLAY 7168L +#undef jportmidi_JPortMidiApi_PM_FILT_TICK +#define jportmidi_JPortMidiApi_PM_FILT_TICK 512L +#undef jportmidi_JPortMidiApi_PM_FILT_FD +#define jportmidi_JPortMidiApi_PM_FILT_FD 8192L +#undef jportmidi_JPortMidiApi_PM_FILT_UNDEFINED +#define jportmidi_JPortMidiApi_PM_FILT_UNDEFINED 8192L +#undef jportmidi_JPortMidiApi_PM_FILT_RESET +#define jportmidi_JPortMidiApi_PM_FILT_RESET 32768L +#undef jportmidi_JPortMidiApi_PM_FILT_REALTIME +#define jportmidi_JPortMidiApi_PM_FILT_REALTIME 16641L +#undef jportmidi_JPortMidiApi_PM_FILT_NOTE +#define jportmidi_JPortMidiApi_PM_FILT_NOTE 50331648L +#undef jportmidi_JPortMidiApi_PM_FILT_CHANNEL_AFTERTOUCH +#define jportmidi_JPortMidiApi_PM_FILT_CHANNEL_AFTERTOUCH 536870912L +#undef jportmidi_JPortMidiApi_PM_FILT_POLY_AFTERTOUCH +#define jportmidi_JPortMidiApi_PM_FILT_POLY_AFTERTOUCH 67108864L +#undef jportmidi_JPortMidiApi_PM_FILT_AFTERTOUCH +#define jportmidi_JPortMidiApi_PM_FILT_AFTERTOUCH 603979776L +#undef jportmidi_JPortMidiApi_PM_FILT_PROGRAM +#define jportmidi_JPortMidiApi_PM_FILT_PROGRAM 268435456L +#undef jportmidi_JPortMidiApi_PM_FILT_CONTROL +#define jportmidi_JPortMidiApi_PM_FILT_CONTROL 134217728L +#undef jportmidi_JPortMidiApi_PM_FILT_PITCHBEND +#define jportmidi_JPortMidiApi_PM_FILT_PITCHBEND 1073741824L +#undef jportmidi_JPortMidiApi_PM_FILT_MTC +#define jportmidi_JPortMidiApi_PM_FILT_MTC 2L +#undef jportmidi_JPortMidiApi_PM_FILT_SONG_POSITION +#define jportmidi_JPortMidiApi_PM_FILT_SONG_POSITION 4L +#undef jportmidi_JPortMidiApi_PM_FILT_SONG_SELECT +#define jportmidi_JPortMidiApi_PM_FILT_SONG_SELECT 8L +#undef jportmidi_JPortMidiApi_PM_FILT_TUNE +#define jportmidi_JPortMidiApi_PM_FILT_TUNE 64L +#undef jportmidi_JPortMidiApi_PM_FILT_SYSTEMCOMMON +#define jportmidi_JPortMidiApi_PM_FILT_SYSTEMCOMMON 78L +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_Initialize + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Initialize + (JNIEnv *, jclass); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_Terminate + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Terminate + (JNIEnv *, jclass); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_HasHostError + * Signature: (Ljportmidi/JPortMidiApi/PortMidiStream;)I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1HasHostError + (JNIEnv *, jclass, jobject); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_GetErrorText + * Signature: (I)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetErrorText + (JNIEnv *, jclass, jint); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_GetHostErrorText + * Signature: ()Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetHostErrorText + (JNIEnv *, jclass); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_CountDevices + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1CountDevices + (JNIEnv *, jclass); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_GetDefaultInputDeviceID + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetDefaultInputDeviceID + (JNIEnv *, jclass); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_GetDefaultOutputDeviceID + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetDefaultOutputDeviceID + (JNIEnv *, jclass); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_GetDeviceInterf + * Signature: (I)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetDeviceInterf + (JNIEnv *, jclass, jint); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_GetDeviceName + * Signature: (I)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetDeviceName + (JNIEnv *, jclass, jint); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_GetDeviceInput + * Signature: (I)Z + */ +JNIEXPORT jboolean JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetDeviceInput + (JNIEnv *, jclass, jint); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_GetDeviceOutput + * Signature: (I)Z + */ +JNIEXPORT jboolean JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetDeviceOutput + (JNIEnv *, jclass, jint); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_OpenInput + * Signature: (Ljportmidi/JPortMidiApi/PortMidiStream;ILjava/lang/String;I)I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1OpenInput + (JNIEnv *, jclass, jobject, jint, jstring, jint); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_OpenOutput + * Signature: (Ljportmidi/JPortMidiApi/PortMidiStream;ILjava/lang/String;II)I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1OpenOutput + (JNIEnv *, jclass, jobject, jint, jstring, jint, jint); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_SetFilter + * Signature: (Ljportmidi/JPortMidiApi/PortMidiStream;I)I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1SetFilter + (JNIEnv *, jclass, jobject, jint); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_SetChannelMask + * Signature: (Ljportmidi/JPortMidiApi/PortMidiStream;I)I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1SetChannelMask + (JNIEnv *, jclass, jobject, jint); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_Abort + * Signature: (Ljportmidi/JPortMidiApi/PortMidiStream;)I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Abort + (JNIEnv *, jclass, jobject); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_Close + * Signature: (Ljportmidi/JPortMidiApi/PortMidiStream;)I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Close + (JNIEnv *, jclass, jobject); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_Read + * Signature: (Ljportmidi/JPortMidiApi/PortMidiStream;Ljportmidi/JPortMidiApi/PmEvent;)I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Read + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_Poll + * Signature: (Ljportmidi/JPortMidiApi/PortMidiStream;)I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Poll + (JNIEnv *, jclass, jobject); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_Write + * Signature: (Ljportmidi/JPortMidiApi/PortMidiStream;Ljportmidi/JPortMidiApi/PmEvent;)I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Write + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_WriteShort + * Signature: (Ljportmidi/JPortMidiApi/PortMidiStream;II)I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1WriteShort + (JNIEnv *, jclass, jobject, jint, jint); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pm_WriteSysEx + * Signature: (Ljportmidi/JPortMidiApi/PortMidiStream;I[B)I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1WriteSysEx + (JNIEnv *, jclass, jobject, jint, jbyteArray); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pt_TimeStart + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pt_1TimeStart + (JNIEnv *, jclass, jint); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pt_TimeStop + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pt_1TimeStop + (JNIEnv *, jclass); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pt_Time + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pt_1Time + (JNIEnv *, jclass); + +/* + * Class: jportmidi_JPortMidiApi + * Method: Pt_TimeStarted + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_jportmidi_JPortMidiApi_Pt_1TimeStarted + (JNIEnv *, jclass); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class jportmidi_JPortMidiApi_PmEvent */ + +#ifndef _Included_jportmidi_JPortMidiApi_PmEvent +#define _Included_jportmidi_JPortMidiApi_PmEvent +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class jportmidi_JPortMidiApi_PortMidiStream */ + +#ifndef _Included_jportmidi_JPortMidiApi_PortMidiStream +#define _Included_jportmidi_JPortMidiApi_PortMidiStream +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/portmidi/pm_java/pmjni/pmjni.c b/portmidi/pm_java/pmjni/pmjni.c new file mode 100644 index 0000000..c60cffb --- /dev/null +++ b/portmidi/pm_java/pmjni/pmjni.c @@ -0,0 +1,354 @@ +#include "portmidi.h" +#include "porttime.h" +#include "jportmidi_JportMidiApi.h" +#include <stdio.h> + +// these macros assume JNIEnv *env is declared and valid: +// +#define CLASS(c, obj) jclass c = (*env)->GetObjectClass(env, obj) +#define ADDRESS_FID(fid, c) \ + jfieldID fid = (*env)->GetFieldID(env, c, "address", "J") +// Uses Java Long (64-bit) to make sure there is room to store a +// pointer. Cast this to a C long (either 32 or 64 bit) to match +// the size of a pointer. Finally cast int to pointer. All this +// is supposed to avoid C compiler warnings and (worse) losing +// address bits. +#define PMSTREAM(obj, fid) ((PmStream *) (intptr_t) (*env)->GetLongField(env, obj, fid)) +// Cast stream to long to convert integer to pointer, then expand +// integer to 64-bit jlong. This avoids compiler warnings. +#define SET_PMSTREAM(obj, fid, stream) \ + (*env)->SetLongField(env, obj, fid, (jlong) (intptr_t) stream) + + +/* + * Method: Pm_Initialize + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Initialize + (JNIEnv *env, jclass cl) +{ + return Pm_Initialize(); +} + + +/* + * Method: Pm_Terminate + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Terminate + (JNIEnv *env, jclass cl) +{ + return Pm_Terminate(); +} + + +/* + * Method: Pm_HasHostError + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1HasHostError + (JNIEnv *env, jclass cl, jobject jstream) +{ + CLASS(c, jstream); + ADDRESS_FID(fid, c); + return Pm_HasHostError(PMSTREAM(jstream, fid)); +} + + +/* + * Method: Pm_GetErrorText + */ +JNIEXPORT jstring JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetErrorText + (JNIEnv *env, jclass cl, jint i) +{ + return (*env)->NewStringUTF(env, Pm_GetErrorText(i)); +} + + +/* + * Method: Pm_GetHostErrorText + */ +JNIEXPORT jstring JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetHostErrorText + (JNIEnv *env, jclass cl) +{ + char msg[PM_HOST_ERROR_MSG_LEN]; + Pm_GetHostErrorText(msg, PM_HOST_ERROR_MSG_LEN); + return (*env)->NewStringUTF(env, msg); +} + + +/* + * Method: Pm_CountDevices + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1CountDevices + (JNIEnv *env, jclass cl) +{ + return Pm_CountDevices(); +} + + +/* + * Method: Pm_GetDefaultInputDeviceID + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetDefaultInputDeviceID + (JNIEnv *env, jclass cl) +{ + return Pm_GetDefaultInputDeviceID(); +} + + +/* + * Method: Pm_GetDefaultOutputDeviceID + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetDefaultOutputDeviceID + (JNIEnv *env, jclass cl) +{ + return Pm_GetDefaultOutputDeviceID(); +} + + +/* + * Method: Pm_GetDeviceInterf + */ +JNIEXPORT jstring JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetDeviceInterf + (JNIEnv *env, jclass cl, jint i) +{ + const PmDeviceInfo *info = Pm_GetDeviceInfo(i); + if (!info) return NULL; + return (*env)->NewStringUTF(env, info->interf); +} + + +/* + * Method: Pm_GetDeviceName + */ +JNIEXPORT jstring JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetDeviceName + (JNIEnv *env, jclass cl, jint i) +{ + const PmDeviceInfo *info = Pm_GetDeviceInfo(i); + if (!info) return NULL; + return (*env)->NewStringUTF(env, info->name); +} + + +/* + * Method: Pm_GetDeviceInput + */ +JNIEXPORT jboolean JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetDeviceInput + (JNIEnv *env, jclass cl, jint i) +{ + const PmDeviceInfo *info = Pm_GetDeviceInfo(i); + if (!info) return (jboolean) 0; + return (jboolean) info->input; +} + + +/* + * Method: Pm_GetDeviceOutput + */ +JNIEXPORT jboolean JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetDeviceOutput + (JNIEnv *env, jclass cl, jint i) +{ + const PmDeviceInfo *info = Pm_GetDeviceInfo(i); + if (!info) return (jboolean) 0; + return (jboolean) info->output; +} + + +/* + * Method: Pm_OpenInput + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1OpenInput + (JNIEnv *env, jclass cl, + jobject jstream, jint index, jstring extras, jint bufsiz) +{ + PmError rslt; + PortMidiStream *stream; + CLASS(c, jstream); + ADDRESS_FID(fid, c); + rslt = Pm_OpenInput(&stream, index, NULL, bufsiz, NULL, NULL); + SET_PMSTREAM(jstream, fid, stream); + return rslt; +} + + +/* + * Method: Pm_OpenOutput + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1OpenOutput + (JNIEnv *env, jclass cl, jobject jstream, jint index, jstring extras, + jint bufsiz, jint latency) +{ + PmError rslt; + PortMidiStream *stream; + CLASS(c, jstream); + ADDRESS_FID(fid, c); + rslt = Pm_OpenOutput(&stream, index, NULL, bufsiz, NULL, NULL, latency); + SET_PMSTREAM(jstream, fid, stream); + return rslt; +} + + +/* + * Method: Pm_SetFilter + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1SetFilter + (JNIEnv *env, jclass cl, jobject jstream, jint filters) +{ + CLASS(c, jstream); + ADDRESS_FID(fid, c); + return Pm_SetFilter(PMSTREAM(jstream, fid), filters); +} + + +/* + * Method: Pm_SetChannelMask + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1SetChannelMask + (JNIEnv *env, jclass cl, jobject jstream, jint mask) +{ + CLASS(c, jstream); + ADDRESS_FID(fid, c); + return Pm_SetChannelMask(PMSTREAM(jstream, fid), mask); +} + + +/* + * Method: Pm_Abort + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Abort + (JNIEnv *env, jclass cl, jobject jstream) +{ + CLASS(c, jstream); + ADDRESS_FID(fid, c); + return Pm_Abort(PMSTREAM(jstream, fid)); +} + + +/* + * Method: Pm_Close + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Close + (JNIEnv *env, jclass cl, jobject jstream) +{ + CLASS(c, jstream); + ADDRESS_FID(fid, c); + return Pm_Close(PMSTREAM(jstream, fid)); +} + + +/* + * Method: Pm_Read + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Read + (JNIEnv *env, jclass cl, jobject jstream, jobject jpmevent) +{ + CLASS(jstream_class, jstream); + ADDRESS_FID(address_fid, jstream_class); + jclass jpmevent_class = (*env)->GetObjectClass(env, jpmevent); + jfieldID message_fid = + (*env)->GetFieldID(env, jpmevent_class, "message", "I"); + jfieldID timestamp_fid = + (*env)->GetFieldID(env, jpmevent_class, "timestamp", "I"); + PmEvent buffer; + PmError rslt = Pm_Read(PMSTREAM(jstream, address_fid), &buffer, 1); + (*env)->SetIntField(env, jpmevent, message_fid, buffer.message); + (*env)->SetIntField(env, jpmevent, timestamp_fid, buffer.timestamp); + return rslt; +} + + +/* + * Method: Pm_Poll + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Poll + (JNIEnv *env, jclass cl, jobject jstream) +{ + CLASS(c, jstream); + ADDRESS_FID(fid, c); + return Pm_Poll(PMSTREAM(jstream, fid)); +} + + +/* + * Method: Pm_Write + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Write + (JNIEnv *env, jclass cl, jobject jstream, jobject jpmevent) +{ + CLASS(jstream_class, jstream); + ADDRESS_FID(address_fid, jstream_class); + jclass jpmevent_class = (*env)->GetObjectClass(env, jpmevent); + jfieldID message_fid = + (*env)->GetFieldID(env, jpmevent_class, "message", "I"); + jfieldID timestamp_fid = + (*env)->GetFieldID(env, jpmevent_class, "timestamp", "I"); + // note that we call WriteShort because it's simpler than constructing + // a buffer and passing it to Pm_Write + return Pm_WriteShort(PMSTREAM(jstream, address_fid), + (*env)->GetIntField(env, jpmevent, timestamp_fid), + (*env)->GetIntField(env, jpmevent, message_fid)); +} + + +/* + * Method: Pm_WriteShort + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1WriteShort + (JNIEnv *env, jclass cl, jobject jstream, jint when, jint msg) +{ + CLASS(c, jstream); + ADDRESS_FID(fid, c); + return Pm_WriteShort(PMSTREAM(jstream, fid), when, msg); +} + + +/* + * Method: Pm_WriteSysEx + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1WriteSysEx + (JNIEnv *env, jclass cl, jobject jstream, jint when, jbyteArray jmsg) +{ + CLASS(c, jstream); + ADDRESS_FID(fid, c); + jbyte *bytes = (*env)->GetByteArrayElements(env, jmsg, 0); + PmError rslt = Pm_WriteSysEx(PMSTREAM(jstream, fid), when, + (unsigned char *) bytes); + (*env)->ReleaseByteArrayElements(env, jmsg, bytes, 0); + return rslt; +} + +/* + * Method: Pt_TimeStart + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pt_1TimeStart + (JNIEnv *env, jclass c, jint resolution) +{ + return Pt_Start(resolution, NULL, NULL); +} + +/* + * Method: Pt_TimeStop + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pt_1TimeStop + (JNIEnv *env, jclass c) + { + return Pt_Stop(); + } + +/* + * Method: Pt_Time + */ +JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pt_1Time + (JNIEnv *env, jclass c) + { + return Pt_Time(); + } + +/* + * Method: Pt_TimeStarted + */ +JNIEXPORT jboolean JNICALL Java_jportmidi_JPortMidiApi_Pt_1TimeStarted + (JNIEnv *env, jclass c) +{ + return Pt_Started(); +} + + diff --git a/portmidi/pm_java/pmjni/pmjni.rc b/portmidi/pm_java/pmjni/pmjni.rc new file mode 100644 index 0000000..1b7522b --- /dev/null +++ b/portmidi/pm_java/pmjni/pmjni.rc @@ -0,0 +1,63 @@ +// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "#include ""afxres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+#endif // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
|
