From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../hjp5/examples/Listing4903.java | 89 ++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/hjp5/examples/Listing4903.java (limited to 'Master/Reference Architectures and Patterns/hjp5/examples/Listing4903.java') diff --git a/Master/Reference Architectures and Patterns/hjp5/examples/Listing4903.java b/Master/Reference Architectures and Patterns/hjp5/examples/Listing4903.java new file mode 100644 index 0000000..598a654 --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/examples/Listing4903.java @@ -0,0 +1,89 @@ +/* Listing4903.java */ + +import javax.sound.midi.*; + +public class Listing4903 +{ + private static void playAlleMeineEntchen() + throws Exception + { + //Partitur {{Tonhoehe, DauerInViertelNoten, AnzahlWdh},...} + final int DATA[][] = { + {60, 1, 1}, //C + {62, 1, 1}, //D + {64, 1, 1}, //E + {65, 1, 1}, //F + {67, 2, 2}, //G,G + {69, 1, 4}, //A,A,A,A + {67, 4, 1}, //G + {69, 1, 4}, //A,A,A,A + {67, 4, 1}, //G + {65, 1, 4}, //F,F,F,F + {64, 2, 2}, //E,E + {62, 1, 4}, //D,D,D,D + {60, 4, 1} //C + }; + //Sequence bauen + final int PPQS = 16; + final int STAKKATO = 4; + Sequence seq = new Sequence(Sequence.PPQ, PPQS); + Track track = seq.createTrack(); + long currentTick = 0; + ShortMessage msg; + //Kanal 0 auf "EnsembleStrings" umschalten + msg = new ShortMessage(); + msg.setMessage(ShortMessage.PROGRAM_CHANGE, 0, 48, 0); + track.add(new MidiEvent(msg, currentTick)); + //Partiturdaten hinzufügen + for (int i = 0; i < DATA.length; ++i) { + for (int j = 0; j < DATA[i][2]; ++j) { //Anzahl Wdh. je Note + msg = new ShortMessage(); + msg.setMessage(ShortMessage.NOTE_ON, 0, DATA[i][0], 64); + track.add(new MidiEvent(msg, currentTick)); + currentTick += PPQS * DATA[i][1] - STAKKATO; + msg = new ShortMessage(); + msg.setMessage(ShortMessage.NOTE_OFF, 0, DATA[i][0], 0); + track.add(new MidiEvent(msg, currentTick)); + currentTick += STAKKATO; + } + } + //Sequencer und Synthesizer initialisieren + Sequencer sequencer = MidiSystem.getSequencer(); + Transmitter trans = sequencer.getTransmitter(); + Synthesizer synth = MidiSystem.getSynthesizer(); + Receiver rcvr = synth.getReceiver(); + //Beide öffnen und verbinden + sequencer.open(); + synth.open(); + trans.setReceiver(rcvr); + //Sequence abspielen + sequencer.setSequence(seq); + sequencer.setTempoInBPM(145); + sequencer.start(); + while (true) { + try { + Thread.sleep(100); + } catch (Exception e) { + //nothing + } + if (!sequencer.isRunning()) { + break; + } + } + //Sequencer anhalten und Geräte schließen + sequencer.stop(); + sequencer.close(); + synth.close(); + } + + public static void main(String[] args) + { + try { + playAlleMeineEntchen(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + System.exit(0); + } +} \ No newline at end of file -- cgit v1.2.3