Forum: PC-Programmierung Mit lpt1 eine 8 bit mono soundkarte


von Florian Menne (Gast)


Lesenswert?

Hallo,
ich wollte fragen ob es möglich ist an dem Druckerport lpt1 einen dac
anzuschließen was ja möglich ist aber dann mit 8 bit über die echte
soundkarte im mono was aufnehmen und über den Druckerport abzuspielen
also ich muss mit c++ irgendwie ein Programm schreiben. Also ist es
überhaupt möglich??

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ja, ist es.
Aber nicht unter einem aktuellen Betriebssystem, da da der
erforderliche direkte Hardwarezugriff problematisch ist und -noch
kritischer- das wichtige exakte Timing ("Samplerate") nicht
einzuhalten ist.

Theoretisch kannst Du das ganze auch ohne Programm machen: Einfach 'ne
Binärdatei mit

  copy datei.wav /b lpt1:

ausgeben. Damit das funktioniert, müssen einige Handshakeleitungen auf
den korrekten Pegel gelegt werden - und die "Samplerate" dürfte
ziemlich hoch sein.

(Die .wav-Datei sollte 8-Bit-Mono-Format haben; am Anfang stört
kurzzeitig der Dateiheader)

von Rolf F. (Gast)


Lesenswert?

Früher gab es verschiede Soundkarten am Parallelport, die aber auch
wegen der hohen CPU-Last ausgestorben sind.
Man kann mit harte Echtzeit, z. B. Linux +RTAI, bis zu 400 kHz
Sample-Frequenz stabil erreichen, aber mit einer gewöhnlichen
PCI-Soundkarte kann man besseren Sound ausgeben.

Übrigens hat der Parallelport 12 Ausgänge; man kann mono 12-Bit-Sound
ausgeben.

von Toni (Gast)


Lesenswert?

Aber sicher geht das:
http://www.radiolocman.com/electrical-engineering/circuit-cache.html?di=81

Die beiden Schaltungen hab ich in grauer Vorzeit, vor meiner ersten
Adlib-Soundkarte, im Einsatz gehabt. Jeder gute MOD-Player unter DOS
konnte den Sound über den "Centronics-Port" ausgeben. Für damalige
Zeiten hat das nicht mal schlecht geklungen.
Teste aber erst mal mit der Wiederstandsschaltung. Der Aufbau mit
D/A-Wandler lohnt sich nicht wirklich. Ich habe jedenfalls keinen
Unterschied im Klang feststellen können.

Toni

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

.

    "unter DOS"


Das ist der Knackpunkt. DOS ist kein Betriebssytem, so kann jedes
Programm selbst wild in der Hardware herumfuhrwerken und beispielsweise
den Timerinterrupt umbiegen und die Timerrate an die gewünschte
Samplerate anpassen.

Unter einem Betriebssystem geht das aber nicht.

von The Daz (Gast)


Lesenswert?

Mit Linux geht das ganz easy, auch ohne device driver. Musst dem
Programm nur root Rechte geben und kannst direkt den LPT port
ansprechen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das Ansprechen des Parallelports ist auch nicht das große Problem; das
bekommt man dank Perversionen wie giveio.sys auch unter ernstgemeinten
Windows-Versionen hin.
Alternativ kann man auch einen besseren Devicetreiber dafür verwenden.

Was aber nicht drin ist (und das dürfte auch unter Linux nicht drin
sein), ist das Umbiegen des Timerinterrupts auf eigenen Code sowie das
Umprogrammieren des Timers.
Ohne das gibt es keine Kontrolle über die Abspielgeschwindigkeit der
Audiodaten.

von The Daz (Gast)


Lesenswert?

ack

von Rolf F. (Gast)


Lesenswert?

Unter Linux +RTAI wird ein Timer-Interrupt für die harte Echtzeit
benutzt; anders geht es auch gar nicht. Man hat dann nur das Problem
der schwankenden Interruptlatenzzeit, aber bei 400 kHz ist das nicht
hörbar.

von Christoph Kessler (Gast)


Lesenswert?

Unter Windows 3.1 und noch Win95 gabs einen Treiber, der konnte mit dem
eingebauten Piepser Über Pulsbreitenmodulation Töne ausgeben, auch
wav-Daten. Hat damals allerdings das Windows meines 386SX mit 33MHz
Takt gewaltig ausgebremst, die Maus ruckelte nur noch über den Schirm.
Besonders ärgerlich war das tönende Intro der t-online-Software, ein
modifizierter Netscape-Browser...
73
Christoph

von Rolf F. (Gast)


Lesenswert?

Ja, das kenne ich auch, aber das hat nicht bei jedem PC funktioniert.
Auf einigen hatte man relativ guten Sound, den man gut zum Musik
abspielen nutzen konnte und auf anderen war nicht viel davon zu
erkennen, weil der Sound mieserabel war.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.