Übung 1: Midi Player
Transcrição
Übung 1: Midi Player
Praktikum aus Softwareentwicklung 2 SS 2006 Name: .............................................................................. Gruppe: Löberbauer 08.30 Löberbauer 10.15 Prähofer Abgabe: 03.04.2006 12.00 Tutor: ....................... 24 Punkte Übung 1: Punkte: ....................... Matr.-Nr.: Gesamt: .................................. Midi Player Ziel: In dieser Übung soll der Umgang mit den Swing-Klassen (zB: JFrame, JSpinner, JTree, JRadioBox, …) geübt werden. In diesem Zusammenhang wird auch das Wissen über das Ereignismodell von Java vertieft und Einblick in das Java Midi-API gegeben. Aufgabe: Erstellen Sie ein Programm mit dem es möglich ist, eine Midi-Sequenz zusammenzustellen und abzuspielen. Das Programm soll folge Eigenschaften aufweisen: • Anzeige der bereits erstellten Noten in einer zu erstellenden Komponente. • Hinzufügen von Noten. • Abspielen der erstellten Sequenz. • Auswahl des gewünschten Instruments über einen JTree. • Auswahl von Stärke und Tempo über JSlider • Verwenden Sie ausserdem mindestens einen JButton, eine Action, einen JSpinner, JRadioButtons, eine ButtonGroup und ein JMenu. Die optische Gestaltung ist Ihnen völlig überlassen, der gegebene Screenshot ist nur ein Beispiel. Hinweise: • • • • • • Bei Midi muss eine Note eingeschaltet (ShortMessage.NOTE_ON) und ausgeschaltet (ShortMessage.NOTE_OFF) werden. Das Wechseln des Instruments erfolgt über die Nachricht: ShortMessage.PROGRAM_CHANGE. Sie brauchen für diese Übung nur einen Midi-Channel und nur einen Track. Es genügt wenn sie zwei Oktaven und zwei Instrumentklassen unterstützen. Ablauf zum Erstellen und Abspielen einer Midi-Sequenz: 1. Erstellen einer javax.sound.midi.Sequence 2. Erstellen eines Track aus der Sequence 3. Wahl des Instruments für den erstellten Track 4. Einfügen aller Noten mit Ein- und Aus-Nachrichten 5. Anfordern eines javax.sound.midi.Sequencer vom javax.sound.midi.MidiSystem 6. Öffnen des Sequencers 7. Setzen der Sequence im Sequencer 8. Bestimmen des Tempos im Sequencer 9. Starten des Sequencers Erstellen einer Midinachricht (zum Wechseln des Instruments und senden der Noten) 1. Erstellen einer javax.sound.midi.ShortMessage 2. Setzen der Nachricht (setMessage) Instrumentwechsel: sm.setMessage(ShortMessage.PROGRAM_CHANGE, channel, InstrumentNummer, 0); Note: sm.setMessage(ShortMessage.NOTE_ON, channel, Notenwert, NotenStärke); 3. Erstellen eines javax.sound.midi.MidiEvents aus der ShortMessage und einer Zeitangabe. Instrumente und Noten in Midi: In Midi werden alle Instrumente und Noten auf Nummern zwischen 0 und 127 abgebildet. Die Nummern können folgenden Tabellen entnommen werden. Oktaven C -1 0 1 2 3 4 (Kleine) 5 (Eingestrichene) 6 (Zweigestrichene) 7 8 9 0 12 24 36 48 60 72 84 96 108 120 C# 1 13 25 37 49 61 73 85 97 109 121 D 2 14 26 38 50 62 74 86 98 110 122 D# 3 15 27 39 51 63 75 87 99 111 123 0-7 Piano 64-71 Reed 8-15 80-87 24-31 Guitar 40-47 Synth Lead Strings 104111 Ethnic 120127 Sound Effects Notennummern F F# G 4 5 6 7 16 17 18 19 28 29 30 31 40 41 42 43 52 53 54 55 64 65 66 67 76 77 78 79 88 89 90 91 100 101 102 103 112 113 114 115 124 125 126 127 E G# 8 20 32 44 56 68 80 92 104 116 A 9 21 33 45 57 69 81 93 105 117 A# 10 22 34 46 58 70 82 94 106 118 72-79 Pipe 16-23 Organ 88-95 Chromatic Percussion Synth Pad 32-39 Bass 48-55 Ensemble 112119 Percussive 96103 56-63 Synth Effects Brass H 11 23 35 47 59 71 83 95 107 119 0 Acoustic Grand Piano 3 Honky-tonk Piano 6 Harpsichord 8 Celesta 11 Vibraphone 14 Tubular Bells 16 Drawbar Organ 19 Church Organ 22 Harmonica 24 Acoustic Guitar (nylon) 27 Electric Guitar (clean) 30 Distortion Guitar 32 Acoustic Bass 35 Fretless Bass 38 Synth Bass 1 40 Violin 43 Contrabass 46 Orchestral Harp 48 String Ensemble 1 51 SynthStrings 2 54 Synth Voice 56 Trumpet 59 Muted Trumpet 62 SynthBrass 1 64 Soprano Sax 67 Baritone Sax 70 Bassoon 72 Piccolo 75 Pan Flute 78 Whistle 80 Lead 1 (square) 83 Lead 4 (chiff) 86 Lead 7 (fifths) 88 Pad 1 (new age) 91 Pad 4 (choir) 94 Pad 7 (halo) 96 FX 1 (rain) 99 FX 4 (atmosphere) 102 FX 7 (echoes) 104 Sitar 107 Koto 110 Fiddle 112 Tinkle Bell 115 Woodblock 118 Synth Drum 120 Guitar Fret Noise 123 Bird Tweet 126 Applause 1 Bright Acoustic Piano 4 Electric Piano 1 7 Clavi 9 Glockenspiel 12 Marimba 15 Dulcimer 17 Percussive Organ 20 Reed Organ 23 Tango Accordion 25 Acoustic Guitar (steel) 28 Electric Guitar (muted) 31 Guitar harmonics 33 Electric Bass (finger) 36 Slap Bass 1 39 Synth Bass 2 41 Viola 44 Tremolo Strings 47 Timpani 49 String Ensemble 2 52 Choir Aahs 55 Orchestra Hit 57 Trombone 60 French Horn 63 SynthBrass 2 65 Alto Sax 68 Oboe 71 Clarinet 73 Flute 76 Blown Bottle 79 Ocarina 81 Lead 2 (sawtooth) 84 Lead 5 (charang) 87 Lead 8 (bass + lead) 89 Pad 2 (warm) 92 Pad 5 (bowed) 95 Pad 8 (sweep) 97 FX 2 (soundtrack) 100 FX 5 (brightness) 103 FX 8 (sci-fi) 105 Banjo 108 Kalimba 111 Shanai 113 Agogo 116 Taiko Drum 119 Reverse Cymbal 121 Breath Noise 124 Telephone Ring 127 Gunshot 2 Electric Grand Piano 5 Electric Piano 2 10 Music Box 13 Xylophone 18 Rock Organ 21 Accordion 26 Electric Guitar (jazz) 29 Overdriven Guitar 34 Electric Bass (pick) 37 Slap Bass 2 42 Cello 45 Pizzicato Strings 50 SynthStrings 1 53 Voice Oohs 58 Tuba 61 Brass Section 66 Tenor Sax 69 English Horn 74 Recorder 77 Shakuhachi 82 Lead 3 (calliope) 85 Lead 6 (voice) 90 Pad 3 (polysynth) 93 Pad 6 (metallic) 98 FX 3 (crystal) 101 FX 6 (goblins) 106 Shamisen 109 Bag pipe 114 Steel Drums 117 Melodic Tom 122 Seashore 125 Helicopter