private void callAllChannelMutators(MidiChannel chan) { int bendVal = 0, noteNum = 0, pressure = 0, program = 0, bank = 0, controllerNum = 0, ctrlValue = 0; chan.allNotesOff(); chan.allSoundOff(); chan.resetAllControllers(); chan.controlChange(controllerNum, ctrlValue); chan.localControl(true); chan.setChannelPressure(pressure); chan.setPolyPressure(noteNum, pressure); chan.programChange(program); // In "currently selected" bank - where does that state live? chan.programChange(bank, program); chan.setPitchBend(bendVal); boolean soloState = false, muteState = false, omniState = false, monoState = false, localControlState = false; chan.setSolo(soloState); chan.setMute(muteState); chan.setOmni(omniState); chan.setMono(monoState); chan.localControl(localControlState); }
private void printChanFacts(MidiChannel chan) { getLogger().info("program={}", chan.getProgram()); getLogger().info("mono={}", chan.getMono()); // as in mono/poly-phonic getLogger().info("solo={}", chan.getSolo()); getLogger().info("mute={}", chan.getMute()); getLogger().info("omni={}", chan.getOmni()); // In omni mode, the channel responds to messages sent on all channels. getLogger().info("pitchBend={}", chan.getPitchBend()); getLogger().info("channelPressure={}", chan.getChannelPressure()); int noteNum = 25; getLogger().info("polyPressure(note={})={}", noteNum, chan.getPolyPressure(noteNum)); int controllerNum = 20; getLogger().info("controllerVal(controlNum={})={}", controllerNum, chan.getController(controllerNum)); }
Synthesizer synth = MidiSystem.getSynthesizer(); synth.open(); MidiChannel midiChannel = synth.getChannels()[0]; midiChannel.allNotesOff(); currentInstrument = synth.getAvailableInstruments()[index]; System.out.println("Switching instrument to #" + index + ": " + currentInstrument.getName()); synth.loadInstrument(currentInstrument); midiChannel.programChange(currentInstrument.getPatch().getBank(), currentInstrument.getPatch().getProgram()); midiChannel.noteOn(noteNumber, velocity); midiChannel.noteOff(noteNumber);
getChannel(nChannel).noteOff(nData1, nData2); break; getChannel(nChannel).noteOn(nData1, nData2); break; getChannel(nChannel).setPolyPressure(nData1, nData2); break; getChannel(nChannel).controlChange(nData1, nData2); break; getChannel(nChannel).programChange(nData1); break; getChannel(nChannel).setChannelPressure(nData1); break; getChannel(nChannel).setPitchBend(nData1 | (nData2 << 7)); break;
if (insts [i].toString () .startsWith ("Instrument MidiPiano")) { channel.programChange (i); break; channel.noteOn (key.getNote (), 127); channel.noteOff (key.getNote ());
private static void playWarningSound() { try { int maxVolume = 90; int sound = 65; Synthesizer synthesizer = MidiSystem.getSynthesizer(); synthesizer.open(); MidiChannel channel = synthesizer.getChannels()[9]; // drums channel. for (int i = 0; i < 10; i++) { Thread.sleep(100); channel.noteOn(sound + i, maxVolume); Thread.sleep(100); channel.noteOff(sound + i); } } catch (MidiUnavailableException | InterruptedException e1) { e1.printStackTrace(); } }
for( int c = 0; channels != null && c < channels.length; c++ ) channels[c].controlChange( CHANGE_VOLUME, midiVolume ); for( int c = 0; channels != null && c < channels.length; c++ ) channels[c].controlChange( CHANGE_VOLUME, midiVolume );
/** * Sets the synthesizer instrument from the currently selected bank of instruments. * * @param synthesizer the synthesizer. * @param channel the channel. * @param instrument the instrument number. * @return the new instrument. */ public static Instrument setInstrument(Synthesizer synthesizer, int channel, int instrument) { getChannel(synthesizer, channel, true).programChange(instrument); return getInstrument(synthesizer, channel); }
/** * Returns the MIDI instrument. * * @param synthesizer the synthesizer. * @param channel the channel number. * @return the MIDI instrument. */ public static Instrument getInstrument(Synthesizer synthesizer, int channel) { return synthesizer.getAvailableInstruments()[getChannel(synthesizer, channel, true).getProgram()]; }
this.midChannel[5].noteOn(55,550);
getChannel(nChannel).noteOff(nData1, nData2); break; getChannel(nChannel).noteOn(nData1, nData2); break; getChannel(nChannel).setPolyPressure(nData1, nData2); break; getChannel(nChannel).controlChange(nData1, nData2); break; getChannel(nChannel).programChange(nData1); break; getChannel(nChannel).setChannelPressure(nData1); break; getChannel(nChannel).setPitchBend(nData1 | (nData2 << 7)); break;
import javax.sound.midi.*; public class MidiSynthesizerSample { public static void main(String[] args) { int[] notes = new int[]{60, 62, 64, 65, 67, 69, 71, 72, 72, 71, 69, 67, 65, 64, 62, 60}; try { Synthesizer synthesizer = MidiSystem.getSynthesizer(); synthesizer.open(); MidiChannel channel = synthesizer.getChannels()[0]; for (int note : notes) { channel.noteOn(note, 50); try { Thread.sleep(200); } catch (InterruptedException e) { break; } finally { channel.noteOff(note); } } } catch (MidiUnavailableException e) { e.printStackTrace(); } } }
channels[c].controlChange( 7, (int)( vol*127) );
channel.programChange(instrument); return channel.getProgram(); channel.noteOn(note, 50); channel.noteOff(note, 50); channel.allNotesOff();