Musik-Software im Eigenbau

Strawberry fields forever: Es war im Jahre des Herrn 1941, genau genommen am 12. Mai, als Konrad Zuse seinen "Z3" Wissenschaftlern vorstellte. Und tatsächlich, das Gerät konnte als erster Automat der Welt mit elektrischem Strom im Dualsystem rechnen.

Anno dazumal

Das war die Zeit, in der sich in Deutschland die Familie noch abends um ihren Volksempfänger versammelte und andächtig den Reden der politischen Führer lauschte. Und 50 Jahre später: Die Firma ATARI stellt den ersten Multi-Media Computer der Welt mit Mehrkanal-Stereo-Sound auf der ATARI-Messe 1992 vor. Eine zunächst eher schleichende Entwicklung hatte plötzlich solch einen Aufschwung genommen, dass der Falcon z.Z. seiner Auslieferung schon überholt war. Doch nach wie vor hat er, besonders im Musikbereich, seine Qualitäten und überbietet den Standard, wie ihn CDs darstellen. Nicht zu vergessen den frei programmierbaren DSP, der voll ins Betriebssystem eingebunden ist.

Musik

Der Traum von einem Rechner, in den ich eine Gitarre einfach einstöpseln konnte, war für mich in Erfüllung gegangen - und der DSP ersparte mir kostspielige Verstärker- und Effektgeräte. - Gut, professioneller Sound erfordert eben professionelle Zu- satzgeräte für Ein- und Ausgang. Aber wem Musik vor allem Spaß macht, der dürfte auch mit der Standardausstattung recht zufrieden sein. Für perfekte Aufnahmen gibt es schließlich Soundstudios. Auch auf dem PC-Markt gibt es noch keinen Rechner, der ein Studio völlig ersetzen könnte, ganz abgesehen von der speziellen Atmosphäre und den Erfahrungswerten, die eine gute Produktion ausmachen.

Plädoyer für C

Wenn man sich die Preise für die Produkte auf dem ATARI-Softwaremarkt anschaut, macht es wenig Sinn, sich selber mit Programmieren abzumühen. Andererseits bietet ein guter C-Compiler aber die Möglichkeit, sich genau das zu programmieren, was man braucht. Ich kann nur C empfehlen, zum einen aus persönlicher Sympathie, aber auch objektiv gesehen spricht vieles für diese Sprache. Vor allem die Philosophie, dass C immer davon ausgeht, dass der Programmierer schon weiß, was er tut, und ihm alle möglichen Zugriffe bis hin zur Registerebene eröffnet. Außerdem ist C nahezu plattformunabhängig, denn man braucht den Code nur auf dem gewünschten System neu zu compilieren, in der Regel ohne große Änderungen.

Den Entwicklern von C ist es darum gegangen, sich selber ein möglichst offenes, einfaches und effektives Werkzeug in die Hand zu geben, so dass man sich voll auf die eigentlichen Aufgaben konzentrieren kann. Sie haben damit immerhin Unix entwickelt, ein nicht gerade einfaches Unternehmen.

So etwas sollte man auch sicherlich besser den Profis überlassen. Aber ein kleines Musikprograrnm, das ein MIDI-Keyboard bedient und Audio Sound bearbeitet? "Nichts leichter als das!".

Musikprogramm

Also ein Programm, das gleichzeitig MIDI-Daten und Audio-Sound aufnehmen und abspielen kann. Das Hauptproblem, die MIDI Verbindung stets aufrecht zu erhalten, wurde in der März-Ausgabe dieses Heftes bereits mit dem VBL-Interrupt gelöst. Der Rechner kann sich also voll auf die Aktionen für die Audiodateien konzentrieren und quasi nebenbei, wenn es die Zeit erlaubt, nach den MIDI-Daten schauen.

Audioroutinen

Von der Betriebssystemseite her ist für Audio dem Programmierer schon alles abgenommen. Für alle erdenklichen Aufgaben stehen bequeme Aufrufe bereit. Den Schwachpunkt bildet die Hardware, genaugenommen die eingebaute Festplatte, beim original Falcon. Denn mit ca. 500 KB/Sekunde kann man gerade mal je eine Stereospur aufnehmen und abspielen. Wenn wir von der höchsten Samplefrequenz ausgehen, also 50 kHz, dann stehen noch maximal 0.2 Sekunden zur Verfügung für die restlichen Aufgaben wie die MIDI-Daten, grafische Anzeigen auf dem Bildschirm und Benutzer Eingaben.

Da man über den Kopfhörerausgang aber sowieso nur eine Stereospur hören kann, erf'üllt diese Übertragungsrate durchaus ihren Zweck. Ein anderer Engpaß ist mir im Soundsystem aufgefallen. Eingehende Audioklänge kann man zum einen direkt wieder mit dem Ausgang verbinden oder aber zum DSP weiterleiten. Allerdings kann man vom DSP zum Audioausgang nur dann wieder zurück, wenn der noch nicht von einer Abspielspur belegt ist. Das bedeutet, wenn Audio abgespielt wird, kann die Aufnahme leider nur ohne Effekte mit2ehört werden. Eine Aufnahme gleich mit Effekten zu versehen, sollte man ja eigentlich sowieso nicht machen - aber Effekte beflügeln die Phantasie, und das ist bei Musik nicht ganz unerheblich.

Das Programm stellt einfach mal alle drei Möglichkeiten, die der Falcon bietet, Klänge herbeizuzaubern, vor und lässt sie gemeinsam agieren. Neben MIDI und Audio hat der Falcon nämlich noch den Soundchip, dem ATARI sogar noch mit Dosound() eine eigene Interrupt-Routine spendiert hat. Dummerweise muss man sich aber zwischen dem Soundchip und dem Mikrophon als Soundeingabe entscheiden - und so bleibt die Dreisamkeit eher theoretisch. Ich habe den Eindruck, dass der Soundchip beim Falcon vor lauter Audio schlechtweg ignoriert wird. Sicherlich zu Unrecht, denn in Verbindung mit DSP-Effekten und einem richtigen Audiosystem, im Gegensatz zum Monitorlautsprecher des SMI24, sollte man phantastische Klänge erzeugen können. Das Werk ließe sich dann als AudioSound-Datei speichern und so weiterverarbeiten.

Soweit ich die News zum Milan verfolgt habe, sollte das Programm auch auf dieser Plattform problemlos seine Dienste verrichten. Es eignet sich somit zum Testen, welche Funktionen im Milan-OS vorhanden sind. Auf Dosound() (Soundchip) und die Kommunikation mit dem DSP wird man evtl. verzichten müssen, - und ob der VBL- Interrupt funktioniert? - aber warten wir's ab.

Datenstrukturen

Wenn Sie glauben, dass es für den interessierten Programmierer nichts mehr zu tun gibt, kann ich Sie beruhigen. Ganz im Gegenteil, wie meist in der EDV, tun sich auch hier nach den ersten Hürden ein ganzer Schwall neuer Probleme auf. Fangen wir bei den MIDI-Daten an. Ich habe sie mal einfach als verkettete Liste angelegt, nd das ist soweit auch o.k. Es erlaubt einen bequemen Zugriff auf einzelne Töne. In der Praxis allerdings ist es notwendig, ganze Bereiche anzusprechen, z.B. um sie zu kopieren, löschen, etc. Dafür wird es notwendig, eine Struktur, wie etwa "Midi-Part", anzulegen, die Informationen über den ersten und letzten Ton des gewünschten Bereiches enthält - praktischerweise zwei Pointer. Aber es geht noch weiter. Es stellt sich nämlich meist heraus, dass die Musik aus Wiederholungen von Melodie- oder Rhythmussequenzen besteht und dadurch viel Speicher für praktisch die gleichen Infon-nationen verbraucht wird. Es ist also viel sinnvoller, wenn die Struktur "MIDI- Part" nicht auf eine eigene Datenliste verweist, sondern auf eine gemeinsame. Eine Melodie braucht dann nur einmal gespeichert zu werden. Zu welcher Zeit ein Ton erklingt und mit welcher Instrumentenstimme, darüber gibt die Struktur "MidiPart" Auskunft. In dem Fall haben Sie es mit "Ghost-Parts" zu tun, und die Mühe lohnt sich auf jeden Fall.

Noch dramatischer stellt sich die Situation für Audio dar. Hier sind Ghost-Parts praktisch unumgänglich. Darüber hinaus stellt sich aber die Frage nach einer sinnvollen Art, die Dateien zu speichern. Wenn sie nämlich aus einem großen Block besteht, muss man mit Fseek() jeweils zur Startposition vorrücken, und das ist sehr ineffizient weil zeitraubend. Eine Alternative wären kleinere Dateien, die aus 1 bis maximal 4 Takten bestehen. Die Orientierung an der musikalischen Vorgabe durch Takte erleichtert das Kopieren, ist aber unflexibel. Eine Patentlösung gibt es da glaube ich nicht - und ich würde sagen, dass es von dem jeweiligen Zusammenhang abhängt, welcher Lösung Sie den Vorzug geben.

Know-how

Vielleicht können Sie ja Techniken, mit denen Sie zufrieden waren, hier vorstellen. Weitere Themen, bei denen ich passen muss, sind Wege, die Lautstärke zu verändern, möglichst bevor der Buffer vom Audiosystem ausgelesen wird. Der numerische Samplewert und die empfundene Lautstärke haben ja wenig gemeinsam. Und auch Komprimierverfahren wie z.B. "MPEG3". Das soll ja sage und schreibe Dateien auf 1/ 1 2 des Originals minimieren.

Was mir auch immer noch nicht gelungen ist, ist ein Tempowechsel, ohne gleichzeitig die Tonhöhe zu verändern - falls das überhaupt geht, so dass alle Charakteristika des Originals erhalten bleiben. Somit mein Aufruf an alle, die in Physik aufgepaßt haben und bereit sind, das eine oder andere Geheimnis, möglichst verständlich, preiszugeben.

Der Knackpunkt ist überdies, dies in recht kurzer Zeit zu erledigen, so dass die Datei selber unverändert bleiben kann - ("non- destructiv editing"). Um mehrere Audiotra,ks abzuspielen, genügt es, die Samplewerte zu addieren. Das kann man auch vom DSP erledigen lassen, indem man z.B. mit der Betriebssystem-Routine 4 Tracks einstellt, die Datei entsprechend verzahnt zum DSP leitet und dort die Summe in einem Track ablegt. Über den Kopfhörerausgang wird dann das Ergebnis ausgegeben, da dieser nur einen Track beachtet. Und natürlich noch einfacher ist das Umwandeln von Dateien ftir eine andere Samplefrequenz, wo es ja genügt, nur gleichmäßig Werte herauszunehmen. Nur von der Zeit her, die dafür benötigt wird, bleibt das beim original Falcon leider alles graue Theorie.

Wisse die Wege

Was noch an spezifischen Fragen auftritt, wird im Listing MUSIKBOX.C an Ort und Stelle erklärt. Wenn Sie Lust bekommen haben, selber ein Programm zu basteln, wird es über die PD-Serie als Share-/LöhnWare sicherlich dankbare Interessenten finden. Aber auch neue Wege, die Sie beschritten haben, können über diese Schiene wiederum andere Autoren inspirieren evtl. auch professionellen Anbietern Trends aufzeigen. Ob Sie sich gleich dem harten Wind auf dem kommerziellen Softwaremarkt aussetzen wollen - nun, mit einem guten Produkt, geeigneten Partnern und der nötigen Zähigkeit wäre das sicherlich eine Überlegung wert.

Die Zeiten, als das Apple-Logo noch Beatles-Platten zierte und als man freudig mit "Love & Peace" begrüßt wurde, sind leider vorbei. Vorbei? Irgendwie liegt es schon an einem selber, ob man sich den Klauen kommerzieller Zwängen ausliefert - oder lieber die Feen mit Musik zaubern lässt. In diesem Sinne "Strawberry fields torever!".


W. Schlisong
Aus: ST-Computer 09 / 1998, Seite 27

Links

Copyright-Bestimmungen: siehe Über diese Seite