MIDI in Basic? MIDI-Library

Mit Omikron-Basic dürfte diese Programmiersprache auch bei Hartgesottenen rehabilitiert sein. Die MIDI-Library stellt die Leistungsfähigkeit des lnterpreters/Compilers erneut unter Beweis.

Das Omikron-Basic für den ST stellt eine sinnvolle Erweiterung dar, die seitens des Benutzers kaum Wünsche offenläßt. Ein MIDI-Anwender, der damit arbeitet, hat vielleicht dennoch einen speziellen, bis dahin unerfüllten Wunsch, nämlich eine MIDI-Library. Heute wollen wir Ihnen eine solche vorstellen.
Falls Sie Ihren Synthi demnächst nicht in die Ecke stellen wollen, wenn Omikron-Basic geladen wird, ist diese Library genau das Richtige für Sie. MIDI-Informationen lassen sich senden und empfangen. Der 16. Dateikanal wurde zu Übertragungszwecken genutzt, da er wohl fast nie Verwendung findet. An Befehlen und Funktionen sowie Konstantendefinitionen stehen dem Anwender eine Menge Möglichkeiten zur Verfügung. Die wichtigsten wollen wir hier nennen.

Noten können per Befehl einund ausgeschaltet werden, mit oder ohne (Velocity = 64) Lautstärke-Angabe. Um alle Noten auszuschalten, existieren zwei Anweisungen. Die eine sendet ALL NOTES OFF, die andere dagegen erledigt dies "zu Fuß", wenn der Synthi das genannte Kommando nicht annimmt. Er schaltet alle Noten ab. Es lassen sich die verschiedenen MIDI-Modi - OMNI, POLY und MONO - ein- bzw. ausschalten. Programme und Einstellungen am Synthi, die einer bestimmten Nummer zugeordnet sind, können verändert werden. Hier existieren zwei Funktionen; eine kann die Werte nur zwischen 0 und 127, die andere dagegen bis 16383 verändern. ControlFunktionen sind z.B. Modulation Wheel, Breath Controller, Foot Pedal, Portamento Time, Data Entry, Main Volume, Sustain On/Off und Data Increment/Decrement.

Auch für Informationen, die das System betrifft, existieren Befehle, wie z.B. für Song Position, Song Select, Start, Stop, Continue, Active Sensing On/ Off, Tune Request, Reset, Realtime Clock und (End of) System Exclusive. Folgende Eingabekommandos sind vorhanden: Empfangen eines Zeichens über MIDI, eine Umrechnung von MIDI-Noten sowie - Werten in Klartext und umgekehrt.

Der Autor der Library scheint einen CASIO CZ-101 zu besitzen, denn speziell für diesen Synthi existiert die System-Exclusive-Library. Sie enhält eine Menge zusätzlicher Funktionen und Befehle, die wir hier nicht aufführen wollen. Sie sind aber für Anwender des CZ-101/1000 interessant.
Am Schluß noch ein kleines Programm, das einige Funktionen und Möglichkeiten der Library demonstrieren soll. Es ist einfach gehalten und überhaupt nicht praxisbezogen, aber die Theorie läßt sich damit gut darstellen. Mit dem Programm erreicht man lediglich, daß ein angeschlagener Ton zwei Oktaven tiefer mit der kleinen Septim und 2/3 der Originallautstärke erklingt.

Es handelt sich bei der MIDI-Library um eine äußerst sinnvolle und nützliche Erweiterung des Omikron-Basic. MIDI-begeisterten Basic-Programmierern ist sie unbedingt zu empfehlen, zumal sie ja bis jetzt meines Wissens noch konkurrenzlos dasteht.

Bezugsquelle: Omikron Software Erlachstraße 15 7534 Birkenfeld

Knut Alicke

Demoprogramm für die MIDI-Library
1 ' Jazzie-Demo von K. Alicke
2 Sende_Kanal = 1
3 Kein_Statusbyte = 0
4 Midi_Init
5 REPEAT
6 Midi_Byte = FN MIDI_In
7 CHk_Stat (Midi_Byte, Flag, Stat, Chn)
8 IF Flag = Kein_Statusbyte THEN
9 IF Stat = Note_On THEN
10 Velocity = FN Midi_In * 2/3
11 Tonhoehe = Midi_Byte - 24 ' 24 Halbtöne = 2 Oktaven
12 Note_On (Sende_Kanal, Tonhoehe, Velocity)
13 Tonhoehe = Tonhoehe + 10
14 ' Die alte Tonhöhe war der Grundton; 10 Halbtöne = bl. Septime
15 Note_On (Sende_Kanal, Tonhoehe, Velocity)
16 ENDIF
17 ENDIF
18 Until LEN (INKEY$)
19 Notes_Off (Sende-Kanal)
20 Midi_Exit
21 End
22 'Ab hier folgt die MIDI-Library die im Bereich
23 '61000-62000 liegt

Erklärungen zum Programm
Zeile Erläuterung
2,3 Definition von Konstanten zwecks besserer Lesbarkeit des Programms
4 MIDI-Initialisierung
5 Schleife
6 Wartet auf ein M. I. D. I.-Byte und gibt es an die Variable Midi_Byte.
7 Untersucht Midi_Byte darauf, ob es ein Status-Byte war oder nicht. Das Ergebnis wird in Flag gespeichert.
8, 9,10 Falls das Byte eine Noteninformation enthält, folgt ein Byte, das die Lautstärke angibt. Diese wird geholt
und in Velocity abgespeichert. Da die Lautstärke der Begleitung nur 2/3 des Originals betragen sollte, wird sie
mit diesem Faktor multipliziert.
11 Die Begleitung sollte 2 Oktaven tiefer liegen. Es werden also 24 Halbtöne (= 2 Oktaven) abgezogen.
12 Die berechnete Note wird gesendet.
13,14,15 Die zweite Note, die Septim, wird ebenfalls berechnet und anschließend gesendet. Sie müßten nun
Ihren Synthi spielen hören, d.h., aufgrund der Geschwindigkeit sollten Sie keinen Zeitunterschied bemerken.
16,17,18, 20; 21 Die Schleifen werden geschlossen, und die REPEAT-Schleife wird nach einem Tastendruck (Tastatur des Computers) verlassen. Hängengebliebene Töne werden ausgeschaltet, und MIDI, wird verlassen.


Knut Alicke
Aus: Atari-Magazin 06 / 1987, Seite

Links

Copyright-Bestimmungen: siehe Über diese Seite