home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Go64!
/
Go64_1998-04_1998_CSW_Side_B.d64
/
midibasic.doc
< prev
next >
Wrap
Text File
|
2023-02-26
|
12KB
|
254 lines
>> MIDIBASIC V5 - Dokumentation <<
I. Zur Entstehung von MIDIBASIC
-------------------------------
Auf dem ATARI-ST ist es sehr einfach, die MIDI-Schnittstelle zu handhaben,
zahlreiche Utilities zeugen davon. Warum soll dies auf dem C64 nicht moeglich
sein? Aus dieser Ueberlegung heraus entstand MIDIBASIC. Zunaechst war es als
einfaches SYS-Untility gedacht, doch stellte sich diese Loesung mit wachsender
Zahl von Befehlen als zu unhandlich heraus - dies war der Schritt zur
BASIC-Erweiterung. Abgerundet wurde die Erweiterung durch einige immer wieder
benoetigte Befehle sowie Anweisungen zur SID-Programmierung. MIDIBASIC
funktioniert mit allen Interfaces, welche ueber die Adressen $DE04 bis $DE07
angesprochen werden. Ist kein Interface angeschlossen, kann es beim Gebrauch
der MIDI-spezifischen Befehle zu einem Absturz kommen. Dies laesst sich leider
nicht vermeiden, da nicht ueberprueft werden kann, ob ein Interface
angeschlossen ist oder nicht.
II. Der Befehlssatz
-------------------
MIDIBASIC umfasst in der vorliegenden Version 44 Befehle und eine Funktion.
Diese sind in 3 Kategorien unterteilt,
1. MIDI-Support
An Initialisiert das MIDI-Interface und startet die
Empfangsroutine, jedes empfangene Datenbyte loest
einen Interrupt aus.
AUs Schaltet das Interface und die Empfangsroutine ab
BEnd c, v Simuliert die Betaetigung des Pitch-Bend-Rades,
Grundstellung v=64, v<64 Pitch-Bend nach unten
v>64 Pitch-Bend nach oben
BRc c, v Simuliert den Breath-Controller.
Cln c, v Dieser Befehl sendet v mal den NOTE-OFF Befehl fuer
die Tasten 0-127. Er wurde implementiert, da der
ALL-NOTES-OFF-Controller nicht von allen Geraeten
akzeptiert wird.
CPr c, v Kanal-Aftertouch (Channel-Pressure)
CTrl c, ct, v Mittels dieses Befehls kann ein beliebiger
Controller ct (0<=ct<=127) erzeugt werden.
KEy c, k, v Anschlag der Taste k mit Velocity v
MOno c, v Schaltet das auf Kanal c empfangende Geraet in
den Mono-Mode; v gibt die benoetigten Stimmen an,
es werden somit auch die Kanaele c+v in den Mono-
Mode geschaltet (Gitarren-Mono-Mode). Jeder Kanal
c+v ist nur monophon spielbar.
MWl c, v Simuliert die Betaetigungdes Modulationsrades
NoKey c, k, v Loslassen der Taste k mit Release-Velocity v
OFf Sendet den ALL-NOTES-OFF-Controller
OMni c, 1/0 Waehlt bei dem auf Kanal c empfangenden Gerat den
Omni-Mode (1) oder schaltet diesen ab (0). Ist der
Parameter 1, so empfaengt das Geraet auf allen 16
Kanaelen, ist er 0, so empfaengt es auf dem einge-
stellten Kanal.
OUt c, b Gibt ein Datenbyte b auf Kanal c aus. Mit diesem
Befehl kann jeder andere Befehl emuliert werden.
Fuer b gilt 0<=b<=255.
PeDal c, v Simuliert die Betaetigung des Sustain-Pedals
PoLy c Schaltet das auf Kanal c empfangende Geraet in den
Poly-Mode. Das Geraet empfaengt nun polyphon.
PPr c, k, v Aftertouch Taste k (Polypressure)
Prg c, v Waehlt bei dem auf Kanal c empfangenden Geraet das
Programm v
ResEt Sendet den Reset-Befehl, dieser Befehl wird nicht
von allen Geraeten erkannt.
Vol c, v Setzt auf Kanal c die Lautstaerke v
var=usr(0) Weist der Variablen VAR den Wert eines empfangenen
Datenbytes zu. Da die eingehenden Daten gepuffert
werden, ist der zugewiesene Wert nicht notwendiger-
weise das aktuelle Datenbyte. Ist seit der letzten
Abfrage nichts empfangen worden, so wird VAR der
Wert 255 zugewiesen.
Fuer alle Befehle gilt: c ist die Kanalnummer (1<=c<=16)
k ist die Tastennummer (0<=k<=127)
v ist ein Wert (0<=v<=127)
2. Utility
Cls Loescht den Bildschirm
Col rf, hf, zf Setzt die Farben fuer Rahmen (rf), Hintergrund (hf)
und Zeichen (zf)
DeVice d Waehlt Device d als aktives Geraet fuer LOAD, SAVE,
VERIFY, DIR und FLOPPY. Ist d=1, so wird fuer DIR
und FLOPPY Device 8 gesetzt. Es werden folgende
Devices akzeptiert: d =1 Datasette
8<=d<=11 Floppy 1-4
Dir Gibt das Directory des aktuellen Diskettenlaufwerks
aus
ExIt Deaktiviert das MIDI-Interface, entfernt den Reset-
Schutz und verlaesst MIDIBASIC. Gegen ungewolltes
Verlassen ist eine Sicherheitsabfrage eingebaut.
FKoff Schaltet die F-Tastenbelegung ab
Fkon Schaltet die F-Tastenbelegung ein
FlOppy "..." Befehlsuebermittlung an das aktuelle
Diskettenlaufwerk
HElp Gibt die Befehlsliste aus
LoCate z, s Positioniert den Cursor in Zeile z, Spalte s
OLd Re-New
Repeat 1/0 Schaltet die automatische Tastenwiederholung ein (1)
bzw. aus (0)
RestArt Initialisiert MIDIBASIC sowie das Interface neu
StAtus Gibt den Status des aktuellen Diskettenlaufwerkes
aus
3. SID-Support
ADsr v, a, d, s, r Bestimmt die Huellkurve fuer Stimme v; a, d, s und r
koennen jeweils Werte von 0-15 einnehmen.
FFreq 0-2047 Stellt die Filterfrequenz ein
FMode 0-15 Legt den Filtermodus fest; der Parameter errechnet
sich analog zum Handbuch.
Fq 0-15 Bestimmt die Filterresonanz
Pw v, 0-4096 Bestimmt die Pulsbreite des Oszillators v bei einge-
stellter Pulswelle
SiDres Setzt den SID zurueck
SidVol 0-15 Stellt die SID-Lautstaerke ein
SWitch 0-15 Legt fest, welche Stimme durch das Filter geleitet
wird; der Parameter errechnet sich analog zum Hand-
buch.
VOice v, k Waehlt fuer Oszillator v die Frequenz der MIDI-Taste
k. Aufgrund des eingeschraenkten Tonumfanges des SID
kann k nur Werte von 0-94 einnehmen.
WaVe v, k Bestimmt die Wellenform des Oszillators v
Diese Befehle koennen wie das normale BASIC V2 gehandhabt werden, einzige
Ausnahme: Hinter THEN einer IF-THEN-Anweisung muss ein Doppelpunkt vor einem
MIDIBASIC-Befehl stehen, andernfalls wird dieser nicht erkannt. Wie die Befehle
abzukuerzen sind, erkennt man an der Position des zweiten Grossbuchstabens
innerhalb des Befehlsnamens. Ein Befehl laesst sich nicht abkuerzen, wenn kein
zweiter Grossbuchstabe innerhalb des Namens existiert.
III. Speicherverwaltung
-----------------------
Benutzte Zeropage-Adressen:
$00fb/$00fc Zeiger fuer Schreiben der empfangenen Daten
$00fd/$00fe Zeiger fuer Lesen der empfangenen Daten
Speicheraufteilung (RAM):
$0801-$7fff freier BASIC-Speicher
$8000-$8a8b MIDIBASIC (resetfest)
$8a8c-$9fff frei
$a000-$bfff modifiziertes BASIC V2
$c000-$cfff frei
$e000-$ffff MIDI-Datenpuffer
IV. Anpassung von MIDIBASIC an eigene Beduerfnisse
--------------------------------------------------
Um die Startumgebung von MIDIBASIC an die eigenen Beduerfnisse anzupassen,
wurde das Programm CONFIG.MBS geschrieben. Nachdem man MIDIBASIC gestartet hat,
laedt und startet man CONFIG.MBS. Mithilfe dieses Programmes lassen sich
Bildschirmfarben, F-Tastenbelegung und Tastenwiederholung sowie das nach dem
Starten aktuelle Datenlaufwerk einstellen. Das veraenderte MIDIBASIC wird dann
unter neuem Namen gespeichert, ggf. ist das Programm LOADER.BAS an den neuen
Namen anzupassen.
V. Uebersicht ueber die MIDI-Befehle
------------------------------------
Befehl Data 1 Data 2 Bedeutung
Kanaldaten (c=0: Kanal 1, c=F: Kanal 16)
$8c Taste Vel Note Off
$9c Taste Vel Note On
$Ac Taste Vel Polypressure
$Bc Ctrlr Wert Controller (Ctrlr sind Abschnitt VI zu entnehmen)
$Cc Prg - Program Change
$Dc Wert - Channel-Pressure
$Ec LSB MSB Pitch-Bend, LSB wird meist ignoriert
System-Common-Events
$F0 ID Data... SysEx-Datenuebertragung, ID ist die Hersteller-
identifikation
$F2 LSB MSB Sequenzer-Positionierung auf Takt n (14 Bit)
$F3 Wert - Anwahl Song s (0-127)
$F6 - - Tune-Befehl
$F7 - - End of SysEx
$F8 - - Timing Clock in play (96 Clocks/Viertel)
$FA - - Sequencer Start
$FB - - Sequencer Continue
$FC - - Sequencer Stop
$FD - - Timing Clock in stop (Synchronisation waehrend
Sequenzer-Stop)
$FE - - Active Sensing
$FF - - System Reset
Diese Liste erhebt keinen Anspruch auf Vollstaendigkeit.
VI. Uebersicht ueber einige Controller
--------------------------------------
Ctrlr Data Bedeutung
$01 $00-$7f Modulationsrad
$02 $00-$7f Breath-Controller
$04 $00-$7f Modulationspedal
$05 $00-$7f Portamento-Zeit
$06 $00-$7f Data-Entry-Regler
$07 $00-$7f Lautstaerke
$40 $00/$7f Sustain off/on
$41 $00/$7f Portamento off/on
$60 $7f Data-Entry +1
$61 $7f Data-Entry -1
$7a $00/$7f Local off/on
$7b $7f All Notes Off
$7c $00 Omni-Mode off
$7d $00 Omni-Mode on
$7e $0x Mono-Mode on / Poly-Mode off; x ist Anzahl der
benoetigten Kanaele ab Kanal c
$7f $00 Poly-Mode on / Mono-Mode off
Diese Liste erhebt keinen Anspruch auf Vollstaendigkeit.
VII. Anhang
-----------
Anbei befinden sich neben der Anleitung 2 Disketten, auf der einen befindet
sich im IBM-Format (360kByte) diese Anleitung im TEXASS-Windows-Format, auf der
anderen befinden sich im 1541-Format folgende Files:
HYPRA-ASS Assembler aus 64'er, Ausgabe 7/85
MIDIBASIC.ASS Dokumentierter Quelltext zu MIDIBASIC im HYPRA-ASS-Format
MIDIBASIC.ARC File-Archive, enthaelt LOADER.BAS, MIDIBASIC.EXE, CONFIG.MBS,
sowie DEMO1-3.MBS. Nach dem Starten werden diese Files
automatisch auf Diskette erzeugt. Die Files wurden mittels
ARC V1.2 aus 64'er, Ausgabe 1/89, archiviert.
MIDIBASIC.DOC Diese Dokumentation
LOADER .BAS MIDIBASIC-Lader
MIDIBASIC.EXE MIDIBASIC ausf]hrbar, starten mittels Reset oder SYS64738
CONFIG .MBS Konfigurationsprogramm fuer MIDIBASIC
DEMO1 .MBS Einfache Empfangsdemo fuer MIDIBASIC
DEMO2 .MBS Stellt SysEx-Daten sowie Tasteninformation auf dem Bildschirm
dar, Tasteninformationen werden auch akustisch ausgegeben.
DEMO3 .MBS Einfache Sequenzerdemo fuer MIDIBASIC
Die Files mit der Extention .MBS sind nur unter MIDIBASIC lauffaehig!