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, | ||
| + | |||
| + | 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 < | ||
| + | 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 < | ||
| + | |||
| + | 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 | ||
| + | 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, | ||
| + | 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; | ||
| + | und damit die Tonhoehe des Tones. Durch staendiges Veraendern | ||
| + | dieser Konstanten koennen nun verschiedene Klaenge erzeugt | ||
| + | werden. | ||
| + | | ||
| + | Wie werden nun die Klaenge programiert? | ||
| + | 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: | ||
| + | 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 | ||
| + | | | ||
| + | | ||
| + | | | ||
| + | | | ||
| + | +-------> | ||
| + | | | | | ||
| + | +--- keine Taste | | ||
| + | | gedrueckt | ||
| + | | | | ||
| + | | TASTCODEBERECHNUNG | ||
| + | | | ||
| + | | schwarze | ||
| + | | Taste Taste | ||
| + | | | ||
| + | | TABZEIGER- | ||
| + | | BERECHNUNG | ||
| + | | | ||
| + | | | ||
| + | | | ||
| + | +-------+------------------+ | ||
| + | |||
| + | |||
| + | **Bild 2: Aufbau der Tabelle TAB** | ||
| + | |||
| + | | ||
| + | des Byte der Byte steht in | ||
| + | | ||
| + | | ||
| + | 1 Ton abschwellend | ||
| + | | ||
| + | | ||
| + | | ||
| + | 1 Tongemisch | ||
| + | | ||
| + | 1 beidphasige Veraenderung | ||
| + | |||
| + | |||
| + | **Anlage: Programmlisting** | ||
| + | |||
| + | Die Downloads selbst gibt es auf der Seite [[lc80: | ||