home *** CD-ROM | disk | FTP | other *** search
/ Go64! / Go64_1998-04_1998_CSW_Side_B.d64 / midibasic.doc < prev    next >
Text File  |  2023-02-26  |  12KB  |  254 lines

  1.                        >> MIDIBASIC V5 - Dokumentation <<
  2.  
  3. I. Zur Entstehung von MIDIBASIC
  4. -------------------------------
  5.  
  6. Auf dem ATARI-ST ist es sehr einfach, die MIDI-Schnittstelle zu handhaben,
  7. zahlreiche Utilities zeugen davon. Warum soll dies auf dem C64 nicht moeglich
  8. sein? Aus dieser Ueberlegung heraus entstand MIDIBASIC. Zunaechst war es als
  9. einfaches SYS-Untility gedacht, doch stellte sich diese Loesung mit wachsender
  10. Zahl von Befehlen als zu unhandlich heraus - dies war der Schritt zur
  11. BASIC-Erweiterung. Abgerundet wurde die Erweiterung durch einige immer wieder
  12. benoetigte Befehle sowie Anweisungen zur SID-Programmierung. MIDIBASIC
  13. funktioniert mit allen Interfaces, welche ueber die Adressen $DE04 bis $DE07
  14. angesprochen werden. Ist kein Interface angeschlossen, kann es beim Gebrauch
  15. der MIDI-spezifischen Befehle zu einem Absturz kommen. Dies laesst sich leider
  16. nicht vermeiden, da nicht ueberprueft werden kann, ob ein Interface
  17. angeschlossen ist oder nicht.
  18.  
  19.  
  20. II. Der Befehlssatz
  21. -------------------
  22.  
  23. MIDIBASIC umfasst in der vorliegenden Version 44 Befehle und eine Funktion.
  24. Diese sind in 3 Kategorien unterteilt,
  25.  
  26. 1. MIDI-Support
  27.  
  28.    An                      Initialisiert das MIDI-Interface und startet die
  29.                            Empfangsroutine, jedes empfangene Datenbyte loest
  30.                            einen Interrupt aus.
  31.    AUs                     Schaltet das Interface und die Empfangsroutine ab
  32.    BEnd c, v               Simuliert die Betaetigung des Pitch-Bend-Rades,
  33.                            Grundstellung v=64, v<64 Pitch-Bend nach unten
  34.                                                v>64 Pitch-Bend nach oben
  35.    BRc c, v                Simuliert den Breath-Controller.
  36.    Cln c, v                Dieser Befehl sendet v mal den NOTE-OFF Befehl fuer
  37.                            die Tasten 0-127. Er wurde implementiert, da der
  38.                            ALL-NOTES-OFF-Controller nicht von allen Geraeten
  39.                            akzeptiert wird.
  40.    CPr c, v                Kanal-Aftertouch (Channel-Pressure)
  41.    CTrl c, ct, v           Mittels dieses Befehls kann ein beliebiger
  42.                            Controller ct (0<=ct<=127) erzeugt werden.
  43.    KEy c, k, v             Anschlag der Taste k mit Velocity v
  44.    MOno c, v               Schaltet das auf Kanal c empfangende Geraet in
  45.                            den Mono-Mode; v gibt die benoetigten Stimmen an,
  46.                            es werden somit auch die Kanaele c+v in den Mono-
  47.                            Mode geschaltet (Gitarren-Mono-Mode). Jeder Kanal
  48.                            c+v ist nur monophon spielbar.
  49.    MWl c, v                Simuliert die Betaetigungdes Modulationsrades
  50.    NoKey c, k, v           Loslassen der Taste k mit Release-Velocity v
  51.    OFf                     Sendet den ALL-NOTES-OFF-Controller
  52.    OMni c, 1/0             Waehlt bei dem auf Kanal c empfangenden Gerat den
  53.                            Omni-Mode (1) oder schaltet diesen ab (0). Ist der
  54.                            Parameter 1, so empfaengt das Geraet auf allen 16
  55.                            Kanaelen, ist er 0, so empfaengt es auf dem einge-
  56.                            stellten Kanal.
  57.    OUt c, b                Gibt ein Datenbyte b auf Kanal c aus. Mit diesem
  58.                            Befehl kann jeder andere Befehl emuliert werden.
  59.                            Fuer b gilt 0<=b<=255.
  60.    PeDal c, v              Simuliert die Betaetigung des Sustain-Pedals
  61.    PoLy c                  Schaltet das auf Kanal c empfangende Geraet in den
  62.                            Poly-Mode. Das Geraet empfaengt nun polyphon.
  63.    PPr c, k, v             Aftertouch Taste k  (Polypressure)
  64.    Prg c, v                Waehlt bei dem auf Kanal c empfangenden Geraet das
  65.                            Programm v
  66.    ResEt                   Sendet den Reset-Befehl, dieser Befehl wird nicht
  67.                            von allen Geraeten erkannt.
  68.    Vol c, v                Setzt auf Kanal c die Lautstaerke v
  69.    var=usr(0)              Weist der Variablen VAR den Wert eines empfangenen
  70.                            Datenbytes zu. Da die eingehenden Daten gepuffert
  71.                            werden, ist der zugewiesene Wert nicht notwendiger-
  72.                            weise das aktuelle Datenbyte. Ist seit der letzten
  73.                            Abfrage nichts empfangen worden, so wird VAR der
  74.                            Wert 255 zugewiesen.
  75.  
  76.    Fuer alle Befehle gilt: c ist die Kanalnummer  (1<=c<=16)
  77.                            k ist die Tastennummer (0<=k<=127)
  78.                            v ist ein Wert         (0<=v<=127)
  79.  
  80.  
  81. 2. Utility
  82.  
  83.    Cls                     Loescht den Bildschirm
  84.    Col rf, hf, zf          Setzt die Farben fuer Rahmen (rf), Hintergrund (hf)
  85.                            und Zeichen (zf)
  86.    DeVice d                Waehlt Device d als aktives Geraet fuer LOAD, SAVE,
  87.                            VERIFY, DIR und FLOPPY. Ist d=1, so wird fuer DIR
  88.                            und FLOPPY Device 8 gesetzt. Es werden folgende
  89.                            Devices akzeptiert:    d =1  Datasette
  90.                                                8<=d<=11 Floppy 1-4
  91.    Dir                     Gibt das Directory des aktuellen Diskettenlaufwerks
  92.                            aus
  93.    ExIt                    Deaktiviert das MIDI-Interface, entfernt den Reset-
  94.                            Schutz und verlaesst MIDIBASIC. Gegen ungewolltes
  95.                            Verlassen ist eine Sicherheitsabfrage eingebaut.
  96.    FKoff                   Schaltet die F-Tastenbelegung ab
  97.    Fkon                    Schaltet die F-Tastenbelegung ein
  98.    FlOppy "..."            Befehlsuebermittlung an das aktuelle
  99.                            Diskettenlaufwerk
  100.    HElp                    Gibt die Befehlsliste aus
  101.    LoCate z, s             Positioniert den Cursor in Zeile z, Spalte s
  102.    OLd                     Re-New
  103.    Repeat 1/0              Schaltet die automatische Tastenwiederholung ein (1)
  104.                            bzw. aus (0)
  105.    RestArt                 Initialisiert MIDIBASIC sowie das Interface neu
  106.    StAtus                  Gibt den Status des aktuellen Diskettenlaufwerkes
  107.                            aus
  108.  
  109. 3. SID-Support
  110.  
  111.    ADsr v, a, d, s, r      Bestimmt die Huellkurve fuer Stimme v; a, d, s und r
  112.                            koennen jeweils Werte von 0-15 einnehmen.
  113.    FFreq 0-2047            Stellt die Filterfrequenz ein
  114.    FMode 0-15              Legt den Filtermodus fest; der Parameter errechnet
  115.                            sich analog zum Handbuch.
  116.    Fq 0-15                 Bestimmt die Filterresonanz
  117.    Pw v, 0-4096            Bestimmt die Pulsbreite des Oszillators v bei einge-
  118.                            stellter Pulswelle
  119.    SiDres                  Setzt den SID zurueck
  120.    SidVol 0-15             Stellt die SID-Lautstaerke ein
  121.    SWitch 0-15             Legt fest, welche Stimme durch das Filter geleitet
  122.                            wird; der Parameter errechnet sich analog zum Hand-
  123.                            buch.
  124.    VOice v, k              Waehlt fuer Oszillator v die Frequenz der MIDI-Taste
  125.                            k. Aufgrund des eingeschraenkten Tonumfanges des SID
  126.                            kann k nur Werte von 0-94 einnehmen.
  127.    WaVe v, k               Bestimmt die Wellenform des Oszillators v
  128.  
  129.  
  130. Diese Befehle koennen wie das normale BASIC V2 gehandhabt werden, einzige
  131. Ausnahme: Hinter THEN einer IF-THEN-Anweisung muss ein Doppelpunkt vor einem
  132. MIDIBASIC-Befehl stehen, andernfalls wird dieser nicht erkannt. Wie die Befehle
  133. abzukuerzen sind, erkennt man an der Position des zweiten Grossbuchstabens
  134. innerhalb des Befehlsnamens. Ein Befehl laesst sich nicht abkuerzen, wenn kein
  135. zweiter Grossbuchstabe innerhalb des Namens existiert.
  136.  
  137.  
  138. III. Speicherverwaltung
  139. -----------------------
  140.  
  141. Benutzte Zeropage-Adressen:
  142.  
  143.  $00fb/$00fc  Zeiger fuer Schreiben der empfangenen Daten
  144.  $00fd/$00fe  Zeiger fuer Lesen der empfangenen Daten
  145.  
  146. Speicheraufteilung (RAM):
  147.  
  148.  $0801-$7fff  freier BASIC-Speicher
  149.  $8000-$8a8b  MIDIBASIC (resetfest)
  150.  $8a8c-$9fff  frei
  151.  $a000-$bfff  modifiziertes BASIC V2
  152.  $c000-$cfff  frei
  153.  $e000-$ffff  MIDI-Datenpuffer
  154.  
  155.  
  156. IV. Anpassung von MIDIBASIC an eigene Beduerfnisse
  157. --------------------------------------------------
  158.  
  159. Um die Startumgebung von MIDIBASIC an die eigenen Beduerfnisse anzupassen,
  160. wurde das Programm CONFIG.MBS geschrieben. Nachdem man MIDIBASIC gestartet hat,
  161. laedt und startet man CONFIG.MBS. Mithilfe dieses Programmes lassen sich
  162. Bildschirmfarben, F-Tastenbelegung und Tastenwiederholung sowie das nach dem
  163. Starten aktuelle Datenlaufwerk einstellen. Das veraenderte MIDIBASIC wird dann
  164. unter neuem Namen gespeichert, ggf. ist das Programm LOADER.BAS an den neuen
  165. Namen anzupassen.
  166.  
  167.  
  168. V. Uebersicht ueber die MIDI-Befehle
  169. ------------------------------------
  170.  
  171.  Befehl  Data 1  Data 2    Bedeutung
  172.  
  173. Kanaldaten (c=0: Kanal 1, c=F: Kanal 16)
  174.  
  175.   $8c     Taste   Vel       Note Off
  176.   $9c     Taste   Vel       Note On
  177.   $Ac     Taste   Vel       Polypressure
  178.   $Bc     Ctrlr   Wert      Controller (Ctrlr sind Abschnitt VI zu entnehmen)
  179.   $Cc     Prg      -        Program Change
  180.   $Dc     Wert     -        Channel-Pressure
  181.   $Ec     LSB     MSB       Pitch-Bend, LSB wird meist ignoriert
  182.  
  183. System-Common-Events
  184.  
  185.   $F0     ID      Data...   SysEx-Datenuebertragung, ID ist die Hersteller-
  186.                             identifikation
  187.   $F2     LSB     MSB       Sequenzer-Positionierung auf Takt n (14 Bit)
  188.   $F3     Wert     -        Anwahl Song s (0-127)
  189.   $F6      -       -        Tune-Befehl
  190.   $F7      -       -        End of SysEx
  191.   $F8      -       -        Timing Clock in play (96 Clocks/Viertel)
  192.   $FA      -       -        Sequencer Start
  193.   $FB      -       -        Sequencer Continue
  194.   $FC      -       -        Sequencer Stop
  195.   $FD      -       -        Timing Clock in stop (Synchronisation waehrend
  196.                             Sequenzer-Stop)
  197.   $FE      -       -        Active Sensing
  198.   $FF      -       -        System Reset
  199.  
  200.             Diese Liste erhebt keinen Anspruch auf Vollstaendigkeit.
  201.  
  202.  
  203. VI. Uebersicht ueber einige Controller
  204. --------------------------------------
  205.  
  206.  Ctrlr   Data              Bedeutung
  207.  
  208.   $01     $00-$7f           Modulationsrad
  209.   $02     $00-$7f           Breath-Controller
  210.   $04     $00-$7f           Modulationspedal
  211.   $05     $00-$7f           Portamento-Zeit
  212.   $06     $00-$7f           Data-Entry-Regler
  213.   $07     $00-$7f           Lautstaerke
  214.   $40     $00/$7f           Sustain off/on
  215.   $41     $00/$7f           Portamento off/on
  216.   $60       $7f             Data-Entry +1
  217.   $61       $7f             Data-Entry -1
  218.   $7a     $00/$7f           Local off/on
  219.   $7b       $7f             All Notes Off
  220.   $7c       $00             Omni-Mode off
  221.   $7d       $00             Omni-Mode on
  222.   $7e       $0x             Mono-Mode on / Poly-Mode off; x ist Anzahl der
  223.                             benoetigten Kanaele ab Kanal c
  224.   $7f       $00             Poly-Mode on / Mono-Mode off
  225.  
  226.             Diese Liste erhebt keinen Anspruch auf Vollstaendigkeit.
  227.  
  228.  
  229. VII. Anhang
  230. -----------
  231.  
  232. Anbei befinden sich neben der Anleitung 2 Disketten, auf der einen befindet
  233. sich im IBM-Format (360kByte) diese Anleitung im TEXASS-Windows-Format, auf der
  234. anderen befinden sich im 1541-Format folgende Files:
  235.  
  236. HYPRA-ASS        Assembler aus 64'er, Ausgabe 7/85
  237. MIDIBASIC.ASS    Dokumentierter Quelltext zu MIDIBASIC im HYPRA-ASS-Format
  238. MIDIBASIC.ARC    File-Archive, enthaelt LOADER.BAS, MIDIBASIC.EXE, CONFIG.MBS,
  239.                  sowie DEMO1-3.MBS. Nach dem Starten werden diese Files
  240.                  automatisch auf Diskette erzeugt. Die Files wurden mittels
  241.                  ARC V1.2 aus 64'er, Ausgabe 1/89, archiviert.
  242. MIDIBASIC.DOC    Diese Dokumentation
  243. LOADER   .BAS    MIDIBASIC-Lader
  244. MIDIBASIC.EXE    MIDIBASIC ausf]hrbar, starten mittels Reset oder SYS64738
  245. CONFIG   .MBS    Konfigurationsprogramm fuer MIDIBASIC
  246. DEMO1    .MBS    Einfache Empfangsdemo fuer MIDIBASIC
  247. DEMO2    .MBS    Stellt SysEx-Daten sowie Tasteninformation auf dem Bildschirm
  248.                  dar, Tasteninformationen werden auch akustisch ausgegeben.
  249. DEMO3    .MBS    Einfache Sequenzerdemo fuer MIDIBASIC
  250.  
  251.  
  252.      Die Files mit der Extention .MBS sind nur unter MIDIBASIC lauffaehig!
  253.  
  254.