diff options
Diffstat (limited to 'PunchingBag/src/uk/ac/open/punchingbag/examples/SimpleKeyboard.java')
-rw-r--r-- | PunchingBag/src/uk/ac/open/punchingbag/examples/SimpleKeyboard.java | 137 |
1 files changed, 0 insertions, 137 deletions
diff --git a/PunchingBag/src/uk/ac/open/punchingbag/examples/SimpleKeyboard.java b/PunchingBag/src/uk/ac/open/punchingbag/examples/SimpleKeyboard.java index 1e791ee..245ed34 100644 --- a/PunchingBag/src/uk/ac/open/punchingbag/examples/SimpleKeyboard.java +++ b/PunchingBag/src/uk/ac/open/punchingbag/examples/SimpleKeyboard.java @@ -128,32 +128,6 @@ public class SimpleKeyboard implements ButtonListener, Runnable { e.printStackTrace(); } - /*char[] notes = { 'C', 'C' }; - - String filename = null; - int instrument = 0; - int tempo = 120; - - // 16 ticks per quarter note. - Sequence sequence = new Sequence(Sequence.PPQ, 16); - - // Add the specified notes to the track - addTrack(sequence, instrument, tempo, notes); - - // Set up the Sequencer and Synthesizer objects - Sequencer sequencer = MidiSystem.getSequencer(); - sequencer.open(); - Synthesizer synthesizer = MidiSystem.getSynthesizer(); - synthesizer.open(); - sequencer.getTransmitter().setReceiver(synthesizer.getReceiver()); - - // Specify the sequence to play, and the tempo to play it at - sequencer.setSequence(sequence); - sequencer.setTempoInBPM(tempo); - - // And start playing now. - sequencer.start();*/ - } @Override @@ -162,117 +136,6 @@ public class SimpleKeyboard implements ButtonListener, Runnable { } - /* - * This method parses the specified char[] of notes into a Track. The - * musical notation is the following: A-G: A named note; Add b for flat and - * # for sharp. +: Move up one octave. Persists. -: Move down one octave. - * Persists. /1: Notes are whole notes. Persists 'till changed /2: Half - * notes /4: Quarter notes /n: N can also be, 8, 16, 32, 64. s: Toggle - * sustain pedal on or off (initially off) >: Louder. Persists <: Softer. - * Persists .: Rest. Length depends on current length setting Space: Play - * the previous note or notes; notes not separated by spaces are played at - * the same time - */ - public static void addTrack(Sequence s, int instrument, int tempo, - char[] notes) throws InvalidMidiDataException { - Track track = s.createTrack(); // Begin with a new track - - // Set the instrument on channel 0 - ShortMessage sm = new ShortMessage(); - sm.setMessage(ShortMessage.PROGRAM_CHANGE, 0, instrument, 0); - track.add(new MidiEvent(sm, 0)); - - int n = 0; // current character in notes[] array - int t = 0; // time in ticks for the composition - - // These values persist and apply to all notes 'till changed - int notelength = 16; // default to quarter notes - int velocity = 64; // default to middle volume - int basekey = 60; // 60 is middle C. Adjusted up and down by octave - boolean sustain = false; // is the sustain pedal depressed? - int numnotes = 0; // How many notes in current chord? - - while (n < notes.length) { - char c = notes[n++]; - - if (c == '+') - basekey += 12; // increase octave - else if (c == '-') - basekey -= 12; // decrease octave - else if (c == '>') - velocity += 16; // increase volume; - else if (c == '<') - velocity -= 16; // decrease volume; - else if (c == '/') { - char d = notes[n++]; - if (d == '2') - notelength = 32; // half note - else if (d == '4') - notelength = 16; // quarter note - else if (d == '8') - notelength = 8; // eighth note - else if (d == '3' && notes[n++] == '2') - notelength = 2; - else if (d == '6' && notes[n++] == '4') - notelength = 1; - else if (d == '1') { - if (n < notes.length && notes[n] == '6') - notelength = 4; // 1/16th note - else - notelength = 64; // whole note - } - } else if (c == 's') { - sustain = !sustain; - // Change the sustain setting for channel 0 - ShortMessage m = new ShortMessage(); - m.setMessage(ShortMessage.CONTROL_CHANGE, 0, DAMPER_PEDAL, - sustain ? DAMPER_ON : DAMPER_OFF); - track.add(new MidiEvent(m, t)); - } else if (c >= 'A' && c <= 'G') { - int key = basekey + offsets[c - 'A']; - if (n < notes.length) { - if (notes[n] == 'b') { // flat - key--; - n++; - } else if (notes[n] == '#') { // sharp - key++; - n++; - } - } - - addNote(track, t, notelength, key, velocity); - numnotes++; - } else if (c == ' ') { - // Spaces separate groups of notes played at the same time. - // But we ignore them unless they follow a note or notes. - if (numnotes > 0) { - t += notelength; - numnotes = 0; - } - } else if (c == '.') { - // Rests are like spaces in that they force any previous - // note to be output (since they are never part of chords) - if (numnotes > 0) { - t += notelength; - numnotes = 0; - } - // Now add additional rest time - t += notelength; - } - } - } - - // A convenience method to add a note to the track on channel 0 - public static void addNote(Track track, int startTick, int tickLength, - int key, int velocity) throws InvalidMidiDataException { - ShortMessage on = new ShortMessage(); - on.setMessage(ShortMessage.NOTE_ON, 0, key, velocity); - ShortMessage off = new ShortMessage(); - off.setMessage(ShortMessage.NOTE_OFF, 0, key, velocity); - track.add(new MidiEvent(on, startTick)); - track.add(new MidiEvent(off, startTick + tickLength)); - } - @Override public void run() { while (true) { |