[linux-l] Systemlautsprecher

olafBuddenhagen at gmx.net olafBuddenhagen at gmx.net
Mi Aug 4 20:30:02 CEST 2010


Hallo,

On Sat, Jul 31, 2010 at 01:27:21AM +0200, Volker Grabsch wrote:
> olafBuddenhagen at gmx.net <olafBuddenhagen at gmx.net> schrieb:
> > On Thu, Jul 15, 2010 at 07:49:25PM +0200, Sebastian Uhlemann wrote:

> > Der PC-Speaker kann im Prinzip keine Wave-Files (also PCM-Audio)
> > wiedergeben -- er kann lediglich einfache Töne einer gewünschten
> > Frequenz (bei immer gleicher Wellenform) erzeugen. Wie schon gesagt
> > wurde dient dafür das Program "beep".
> > 
> > Mit etwas Hexerei kann man zwar trotzdem PCM ausgeben
> 
> Es gibt so einige Tutorials dafür. :-)
> 
> Die Grundidee ist die, dass man sehr oft pro Sekunde die Frequenz
> wechselt.

Naja, die Frequenz spielt im Grunde keine Rolle. Die Idee ist, dass man
durch entsprechende Programmierung den eingebauten Frequenzgenerator
komplett umgeht, und stattdessen den Treiber-Transistor "per Hand"
zwischen An und Aus umschaltet. Wenn man das in der richtigen Zeitfolge
macht, kann man beliebige Wellenformen erzeugen -- im Prinzip genauso
wei bei einem 1-Bit D/A-Wandler.

(Wie das An/Ausschalten genau funktioniert weiß ich nicht mehr -- den
Teil hatte mein Bruder programmiert. Von mir kam die Logik zur
Ansteuerung...)

> Das Ergebnis ist nicht vergleichbar mit Soundkarte &
> Lautsprecherboxen, aber dennoch erstaunlich gut. Sehr auffällig ist
> übrigens, dass es dabei immer einen leisen, sehr hohen "Fiep-Ton" im
> Hintergrund gibt. Das ist wahrscheinlich einfach die Grundfrequenz, in
> der man den Speaker mit neuen Werten füttert.

Das eigentliche Problem ist, dass ständig Interrupts von verschiedenen
Hardware-Devices dazwischenfunken. Unter DOS konnte man Interrupts
ausschalten, und damit durchaus brauchbare Klangqualität erreichen (ich
hatte das Ding tatsächlich eine Zeit lang für eine bestimmte Anwendung
benutzt, bevor wir eine richtige Soundkarte hatten) -- aber bei einem
Multitasking-System will man das nicht wirklich :-)

> Ich habe damals zu DOS-Zeiten ein kleines Programm geschrieben, das
> 8-Bit-Mono-Wav-Dateien am PC-Speaker ausgeben konnte.

Ach, Du also auch ;-)

> Eine nicht ganz so ausgereifte, aber dennoch ganz nette Technik war im
> dem DOS-Autorennspiel "Lotus" zu sehen. Dort wurden zwar wieder nur
> einzelne Töne in einer Melodie gebeept. Aber es wurden mehrere
> Instrumente, also mehrere Melodien, "gleichzeitig" abgespielt. Das hat
> auch schon ein bisschen was hergemacht.

Bei "Humans" hatten die auch recht geschickte Melodien gewählt, so dass
es fast polyphon klang...

-Olaf-



Mehr Informationen über die Mailingliste linux-l