List of usage examples for javax.sound.midi ShortMessage ShortMessage
public ShortMessage()
From source file:org.monome.pages.MIDISequencerPage.java
/** * Send MIDI note messages based on the sequence position. If on = 0, note off will be sent. * //from w w w. j a v a 2 s.c o m * @param seq_pos The sequence position to play notes for * @param on Whether to turn notes on or off, a value of 1 means play notes */ public void playNotes(int seq_pos, int on) { ShortMessage note_out = new ShortMessage(); int note_num; int velocity; int midiChannel = Integer.parseInt(this.midiChannel) - 1; for (int y = 0; y < 16; y++) { // hold mode if (this.getHoldModeCB().isSelected()) { if (on == 0) { return; } if (sequence[this.bank][seq_pos][y] > 0) { velocity = (this.sequence[this.bank][seq_pos][y] * 64) - 1; } else { velocity = 0; } note_num = this.getNoteNumber(y); try { if (velocity == 0 && this.heldNotes[y] == 1) { this.heldNotes[y] = 0; note_out.setMessage(ShortMessage.NOTE_OFF, midiChannel, note_num, velocity); this.recv.send(note_out, -1); } else if (velocity > 0 && this.heldNotes[y] == 0) { this.heldNotes[y] = 1; note_out.setMessage(ShortMessage.NOTE_ON, midiChannel, note_num, velocity); this.recv.send(note_out, -1); } } catch (InvalidMidiDataException e) { e.printStackTrace(); } // normal mode } else { if (sequence[this.bank][seq_pos][y] > 0) { if (on > 0) { velocity = (this.sequence[this.bank][seq_pos][y] * 64) - 1; } else { velocity = 0; } note_num = this.getNoteNumber(y); try { if (velocity == 0) { note_out.setMessage(ShortMessage.NOTE_OFF, midiChannel, note_num, velocity); this.heldNotes[y] = 0; } else { note_out.setMessage(ShortMessage.NOTE_ON, midiChannel, note_num, velocity); this.heldNotes[y] = 1; } this.recv.send(note_out, -1); } catch (InvalidMidiDataException e) { e.printStackTrace(); } } } } }
From source file:org.monome.pages.MIDISequencerPagePoly.java
private void handleRecordButton(int x, int y) { int x_seq;/*from ww w . j av a 2s. c o m*/ int y_seq; int seqPosition = 0; int globalPitch; if (this.patSpeed[this.bank] == 0) { seqPosition = this.sequencePosition0; globalPitch = this.globalPitch0; } else { seqPosition = this.sequencePosition1; globalPitch = this.globalPitch1; } x_seq = (pattern * (this.monome.sizeX)) + x; y_seq = (depth * (this.monome.sizeY - 1)) + y; if (this.sequence[this.bank][x_seq][y_seq] == 0) { this.sequence[this.bank][x_seq][y_seq] = 1; this.monome.led(x, y, 1, this.index); } else if (this.sequence[this.bank][x_seq][y_seq] == 1) { this.sequence[bank][x_seq][y_seq] = 2; this.monome.led(x, y, 1, this.index); } else if (this.sequence[this.bank][x_seq][y_seq] == 2) { this.sequence[bank][x_seq][y_seq] = 0; //note off for bug when toggle note off at seq_position int note_num = 0; ShortMessage note_out = new ShortMessage(); note_num = this.getNoteNumber(y_seq) + globalPitch + this.patOctgUp[this.bank] * 24; if ((seqPosition % this.patlength[this.bank] == x_seq + 1 || seqPosition % this.patlength [this.bank] == x_seq)) { try { note_out.setMessage(ShortMessage.NOTE_OFF, 0, note_num, 0); if (this.recv != null) this.recv.send(note_out, -1); } catch (InvalidMidiDataException e) { e.printStackTrace(); } } this.monome.led(x, y, 0, this.index); } }
From source file:org.monome.pages.MIDISequencerPagePoly.java
public void stopNotes(int iSeq) { ShortMessage note_out = new ShortMessage(); int note_num = 0; int velocity = 0; int seq_pos_pat = 0; int velocityPrec = 0; int seqPosition = 0; int globalPitch = 0; int globalPitchOct = 0; if (this.patSpeed[iSeq] == 0) { globalPitch = this.globalPitch0prec; globalPitchOct = this.globalPitch0octPrec; } else {//from w w w . j a v a2 s . c om globalPitch = this.globalPitch1prec; globalPitchOct = this.globalPitch1octPrec; } for (int i = 0; i < 16; i++) { note_num = this.getNoteNumber(i) + globalPitch + this.patOctgUp[iSeq] * 24 + globalPitchOct; try { if (heldNotes[iSeq][i]) { //note_out.setMessage(ShortMessage.NOTE_OFF, 0, note_num, 0); note_out.setMessage(ShortMessage.NOTE_OFF, 0, heldNotesNum[iSeq][i], 0); heldNotes[iSeq][i] = false; this.recv.send(note_out, -1); } } catch (InvalidMidiDataException e) { e.printStackTrace(); } } }
From source file:org.monome.pages.MIDISequencerPagePoly.java
/** * Send MIDI note messages based on the sequence position. If on = 0, note off will be sent. * // www . jav a2 s .com * @param seq_pos The sequence position to play notes for * @param on Whether to turn notes on or off, a value of 1 means play notes * @throws InterruptedException */ public void playNotes(int seq_pos, int on, int quantPat) { ShortMessage note_out = new ShortMessage(); int note_num; int velocity; int seq_pos_pat = 0; int midiChannel = Integer.parseInt(this.midiChannel) - 1; int noteOnOff; int globalPitch = 0; int globalPitchOct = 0; boolean onOff = true; int globalRandomGateValue = 1; int globalRandomNoteValue = 1; int globalRandomVelocityValue = 1; boolean globalHold; /*if(this.globalRandomGate16) globalRandomGateValue=(int)(Math.random() + 0.5); else globalRandomGateValue=1; if(this.globalRandomNote16) globalRandomNoteValue=(int)(Math.random() * (8)) -4; else globalRandomNoteValue=0; if(this.globalRandomVelocity16) globalRandomVelocityValue=(int)(Math.random() * (63+1)); else globalRandomVelocityValue=0;*/ if (stopNotesRequest) { for (int i = 0; i < 256; i++) { this.stopNotes(i); } stopNotesRequest = false; } if (quantPat == 0) { globalPitch = this.globalPitch0; globalPitchOct = this.globalPitch0oct; onOff = this.onOff0; globalHold = this.globalHold0; } else { globalPitch = this.globalPitch1; globalPitchOct = this.globalPitch1oct; onOff = this.onOff1; globalHold = this.globalHold1; } //System.out.println("playnotes " + quantPat + " seq_pos " + seq_pos); for (int y = 0; y < 16; y++) { if (y < 15 && !this.noteSwitchs[y]) noteOnOff = 0; else noteOnOff = 1; for (int iSeq = 0; iSeq < this.bankSel.length; iSeq++) { // pat length seq_pos_pat = seq_pos % this.patlength[iSeq]; // hold mode if (this.patHold[iSeq] == 1 && this.patSpeed[iSeq] == quantPat) { if (this.bankSel[iSeq] && on == 127 && ((this.patGate[iSeq] == 1 && this.gate [iSeq]) || (this.patGate[iSeq] == 0))) { note_num = this.getNoteNumber(y) + globalPitch + this.patOctgUp[iSeq] * 24 + globalPitchOct; if (onOff) velocity = ((this.sequence[iSeq][seq_pos_pat][y] * 64) - 1) * noteOnOff; else velocity = 0; if ((seq_pos_pat > 0 && this.sequence[iSeq][seq_pos_pat - 1][y] > 0 && velocity <= 0) || (seq_pos_pat == 0 && this.sequence[iSeq][this.patlength[iSeq] - 1][y] > 0 && velocity <= 0)) { try { if (!globalHold) { heldNotes[iSeq][y] = false; //note_out.setMessage(ShortMessage.NOTE_OFF, midiChannel, note_num, 0); note_out.setMessage(ShortMessage.NOTE_OFF, midiChannel, heldNotesNum[iSeq][y], 0); if (this.bankMode == 1) this.monome.led(y % (this.monome.sizeX - 1), this.monome.sizeY - 3 + (y / (this.monome.sizeX - 1)), 0, this.index); this.recv.send(note_out, -1); } } catch (InvalidMidiDataException e) { e.printStackTrace(); } } else if (((seq_pos_pat > 0 && this.sequence[iSeq][seq_pos_pat - 1][y] == 0) || seq_pos_pat == 0) && velocity > 0) { try { heldNotes[iSeq][y] = true; note_out.setMessage(ShortMessage.NOTE_ON, midiChannel, note_num, velocity); heldNotesNum[iSeq][y] = note_num; if (this.bankMode == 1) this.monome.led(y % (this.monome.sizeX - 1), this.monome.sizeY - 3 + (y / (this.monome.sizeX - 1)), 1, this.index); this.recv.send(note_out, -1); } catch (InvalidMidiDataException e) { e.printStackTrace(); } } } // normal mode } else if (this.patSpeed[iSeq] == quantPat) { if (this.bankSel[iSeq] && on == 127 && ((this.patGate[iSeq] == 1 && this.gate [iSeq]) || (this.patGate[iSeq] == 0))) { note_num = this.getNoteNumber(y) + globalPitch + this.patOctgUp[iSeq] * 24 + globalPitchOct; if (onOff) velocity = ((this.sequence[iSeq][seq_pos_pat][y] * 64) - 1) * noteOnOff; else velocity = 0; if ((seq_pos_pat > 0 && this.sequence[iSeq][seq_pos_pat - 1][y] > 0) || (seq_pos_pat == 0 && this.sequence[iSeq][this.patlength[iSeq] - 1][y] > 0)) { try { if (!globalHold) { heldNotes[iSeq][y] = false; //note_out.setMessage(ShortMessage.NOTE_OFF, midiChannel, note_num, 0); note_out.setMessage(ShortMessage.NOTE_OFF, midiChannel, heldNotesNum[iSeq][y], 0); this.recv.send(note_out, -1); } if (this.bankMode == 1) this.monome.led(y % (this.monome.sizeX - 1), this.monome.sizeY - 3 + (y / (this.monome.sizeX - 1)), 0, this.index); } catch (InvalidMidiDataException e) { e.printStackTrace(); } } if (velocity > 0) { try { heldNotes[iSeq][y] = true; note_out.setMessage(ShortMessage.NOTE_ON, midiChannel, note_num, velocity); heldNotesNum[iSeq][y] = note_num; this.recv.send(note_out, -1); if (this.bankMode == 1) this.monome.led(y % (this.monome.sizeX - 1), this.monome.sizeY - 3 + (y / (this.monome.sizeX - 1)), 1, this.index); } catch (InvalidMidiDataException e) { e.printStackTrace(); } } } } } } }
From source file:org.monome.pages.MIDITriggersPage.java
/** * Converts a button press into a MIDI note event * /*from w w w . j a va 2 s . com*/ * @param x The x value of the button pressed * @param y The y value of the button pressed * @param value The state, 1 = pressed, 0 = released */ public void playNote(int x, int y, int value) { int note_num = x + 12; int channel = y; int velocity = value * 127; ShortMessage note_out = new ShortMessage(); try { if (velocity == 0) { note_out.setMessage(ShortMessage.NOTE_OFF, channel, note_num, velocity); } else { note_out.setMessage(ShortMessage.NOTE_ON, channel, note_num, velocity); } } catch (InvalidMidiDataException e) { e.printStackTrace(); } if (this.recv != null) { this.recv.send(note_out, -1); } }