1
package org.herac.tuxguitar.player.impl.midiport.alsa;
3
import java.util.ArrayList;
6
public class MidiSystem{
8
private static final String JNI_LIBRARY_NAME = new String("tuxguitar-alsa-jni");
11
System.loadLibrary(JNI_LIBRARY_NAME);
14
private long instance;
19
this.instance = malloc();
21
this.ports = new ArrayList();
24
public boolean isOpen(){
25
return (this.instance != 0 && this.open);
28
public void finalize(){
29
if(this.instance != 0){
30
this.free(this.instance);
36
if(this.instance != 0 && !this.open){
37
this.open(this.instance);
43
if(this.instance != 0 && this.open){
44
this.close(this.instance);
49
public List findPorts(){
51
if(this.instance != 0 && this.open){
52
this.findPorts(this.instance);
57
public void openPort(int client,int port){
58
if(this.instance != 0 && this.open){
59
this.openPort(this.instance, client, port);
63
public void closePort(){
64
if(this.instance != 0 && this.open){
65
this.closePort(this.instance);
69
public void noteOn(int channel,int note,int velocity){
70
if(this.instance != 0 && this.open){
71
this.noteOn(this.instance, channel, note, velocity);
75
public void noteOff(int channel,int note,int velocity){
76
if(this.instance != 0 && this.open){
77
this.noteOff(this.instance, channel, note, velocity);
81
public void controlChange(int channel,int control,int value){
82
if(this.instance != 0 && this.open){
83
this.controlChange(this.instance, channel, control, value);
87
public void programChange(int channel,int program){
88
if(this.instance != 0 && this.open){
89
this.programChange(this.instance, channel, program);
93
public void pitchBend(int channel,int value){
94
if(this.instance != 0 && this.open){
95
this.pitchBend(this.instance, channel, value);
99
protected void addPort(String name,int client,int port){
100
this.ports.add(new MidiPortImpl(this,name,client,port));
103
private native long malloc();
105
private native void free(long instance);
107
private native void open(long instance);
109
private native void close(long instance);
111
private native void findPorts(long instance);
113
private native void openPort(long instance,int client,int port);
115
private native void closePort(long instance);
117
private native void noteOn(long instance,int channel,int note,int velocity);
119
private native void noteOff(long instance,int channel,int note,int velocity);
121
private native void controlChange(long instance,int channel,int control,int value);
123
private native void programChange(long instance,int channel,int program);
125
private native void pitchBend(long instance,int channel,int value);