Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


lc80:programme:synthi [2017/03/14 08:05] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== Synthesizer ======
 +
 +geplant als Artikel für Jugend-Technik, 02/88. Das originale Listing wurde auf dem Z9001 mit dem ASM erstellt, das zugehörige Programm ist synthi21.asm (vp 1987).
 +
 +Originaltext (Schreibmaschine):
 +
 +**Ein Synthesizer auf dem LC80**
 +
 +Der LC80, ein Lernkomputer aus Erfurt, ist mit geringstem Hardwareaufwand gebaut. So besitzt er in der Grundausbaustufe nur
 +1 kByte RAM, der aber auf 4kByte aufgestockt werden kann. Dieser
 +geringe Speicher reicht jedoch fuer viele Anwendungs- und Lernfaelle aus, da der LC80 nur in Maschinencode programmierbar ist.
 +Die Tonausgabe und die sechsstellige Siebensegmentanzeige lassen
 +wirkungsvolle Spiele und ernsthaftere Anwendungen zu, so z.B. ein
 +Taschenrechner oder ein Schaltkreispruefgeraet. Heute moechte
 +ich einen kleinen Synthesizer fuer den LC80 vorstellen.
 +
 +Dieser Synthesizer laeuft ueber die Hoerkapsel und die Tastatur des Computers. Es ist keine Erweiterung der Hardware notwendig. Vom Programmlisting ist die zweite Spalte CODE ab der
 +Adresse 2000H einzugeben - und schon kann es losgehen. Vorher
 +empfiehlt es sich aber, eine Kopie des soeben muehsam eingetippten Programms auf eine Kassette auszulagern. Der Synthesizer wird mit <RES>, <ADR>, <2>, <0>, <0>, <0>, <EX> gestartet. Die
 +weissen Tasten stellen die eigentliche Klaviatur -oder zuenftiger Keyboard- dar, waehrend die schwarzen Tasten fuer den
 +Klang verantwortlich sind. Die Taste <0> entspricht dem Ton gis,
 +<1> dem a usw. bis zur Taste <F> Ton h1 . Wird auf eine dieser
 +Tasten gedrueckt, so erklingt der entsprechende Ton, Beim
 +Druecken auf eine schwarze Taste werden intern einige Speicherzellen veraendert, die auf den Klang Einfluss haben. (Bei den
 +Tasten <LD>, <ST>, <ADR> kommen vorerst nur dieselben Toene,
 +s.u.). Verlassen werden kann das Programm durch <RES>.
 +
 +Wie funktioniert das nun? Das Programm untergliedert sich
 +grob in die zwei Bereiche Tastaturabfrage und Tonausgabe. Die
 +Tastaturabfrage ist analog dem Betriebssystem-Unterprogramm DAK2
 +aufgebaut, d. h. die Laufzeit fuer diesen Programmteil ist bei
 +jeder gedrueckten Taste gleich! Das ist fuer die hier gewaehlte
 +Art der Tonausgabe wichtig. Am Ende des Programmteils TASTATUR-
 +ABFRAGE (LINE 21-39) steht im A-teg1ster ein interner, DAK2 entsprechender Tastencode. Dieser wird in den Zeilen LINE 44-47 in
 +einen weiteren, besser nutzbaren Tastaturcode  umgewandelt.
 +Dieser Code steht in der Tabelle TACOD (LINE 106-129). Der
 +gesamte Programmteil Tastaturabfrage kann auch dort in anderen
 +Programmen genutzt werden, wo es auf eine schnelle Tastenerkennung ankommt.
 +
 +Der zweite Teil des Synthesizers, die Tonerzeugung, ist etwas
 +komplizierter aufgebaut. Es muessen zuerst die Daten aus dem
 +Programmteil TAB (LINE 134-199) entsprechend des gewaehlten
 +Klangs bereitgestellt werderi. Dazu wird das Register IX genutzt
 +und in der Routine TABZEIGERBERECHNUNG geladen; dann wird
 +zurueck zur Tastaturabfrage gesprungen. Wurde eine weisse Taste
 +gedrueckt, erfolgt ein Sprung zum Programmteil LD TONKONSTANTE.
 +Hier wird das Register C mit einer Tonkonstanten entsprechend
 +dem aktuellen Klang und Ton geladen. Der Ton wird letztendlich
 +im Programmteil TONAUSGABE in LINE 82-84 erzeugt und als Rechteckschwingung ausgegeben: Es wird das PIO-Bit der Hoerkapsel
 +abgefragt. Ist es 0, wird eine 1 ausgegeben und umgekehrt.
 +Danach wird eine Zeitschleife mit der Tonkonstanten (in Register
 +C) durchlaufen; sie bestimmt im wesentlichen die Periodendauer
 +und damit die Tonhoehe des Tones. Durch staendiges Veraendern
 +dieser Konstanten koennen nun verschiedene Klaenge erzeugt
 +werden.
 +  
 +Wie werden nun die Klaenge programiert? Die Klangdaten sind
 +in der Tabelle TAB untergebracht. Fuer jede schwarze Taste
 +stehen 7 Byte zur Klangdefinition bereit, deren Bedeutung Bild 2
 +zu entnehmen ist. Hier kann sich jeder selbst an verschiedenen
 +Klaengen probieren. Die dazugehoerigen Tonkonstanten sind im
 +Programmteil TONTABELLEN analog LINE 207-222 unterzubringen. So
 +muss man z.B. selbst noch die Tonkonstanten fuer die Tasten
 +<LD>, <ST>, <ADR> schreiben. (Das ist der Grund dafuer, dass bei
 +diesen Klaengen alle Toene (noch) gleich sind).
 +
 +Zum Schluss noch zwei Kleinigkeiten: Mit den Befehlen LD
 +A,0FFH und OUT 0F4H wird eine unerwuenschte Ausgabe auf der Anzeige unterdrueckt. In LINE 14 wird der EX-Klang als erster,
 +d.h. nach dem Programmstart gueltiger, Klang definiert.
 +
 +Ich wuensche Euch viel Spass mit diesem Synthesizer. Und
 +vielleicht erweitert Ihr ihn noch um einige Effekte wie Vibrato,
 +Lautstaerkeaenderungen,...
 +
 +
 +**Bild 1: Programmaufbau**
 +
 +                      START
 +                        |
 +                 INITIALISIERUNG
 +                        |
 +                        |
 +      +------->  TASTATURABFRAGE
 +      |            |        |
 +      +--- keine Taste      |
 +      |    gedrueckt        |
 +      |                     |
 +      |          TASTCODEBERECHNUNG
 +      |                        | 
 +      |    schwarze            weisse
 +      |    Taste               Taste
 +      |                        |
 +      |    TABZEIGER-      LD TONKONSTANTE
 +      |    BERECHNUNG            |
 +      |                        |
 +      |                   TONAUSGABE
 +      |                        |
 +      +-------+------------------+
 +
 +
 +**Bild 2: Aufbau der Tabelle TAB**
 +
 +     Nr.      Anzahl   Bedeutung                           Byte
 +     des Byte der Byte                                     steht in
 +     1+2             Adresse der zugehoerigen Tontab.    (IX+0)
 +                   0 Ton anschwellend                  (IX+2)
 +                       1 Ton abschwellend
 +                   Tondauer (Anzahl der Durchlaeufe)   (IX+3)
 +                   Variationsbreite des. Tons          (IX+4)
 +                   0 reiner Ton                        (IX+5)
 +                       1 Tongemisch
 +                   0 einphasige Veraenderung           (IX+6)
 +                       1 beidphasige Veraenderung
 +
 +
 +**Anlage: Programmlisting**
 +
 +Die Downloads selbst gibt es auf der Seite [[lc80:software]].