Ü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

Documentos relacionados