Mein Ziel war ein Modul mit möglichst vielen Funktionen: Welche Werte müssen eingestellt werden?
Die Werte können unter DOS mit dem Befehl SET
in der Zeile
GALAXY=A220 I5 D1 K10 P530 T6
oder
BLASTER=A220 I5 D1 T6
entnommen werden:
Port Soundblaster
IRQ SB-Pro
DMA für SB-Pro und WSS
IRQ WSS
Port WSS
Gibt nur den Typ der SB-Karte an, für uns ohne Belang
Sie können mit einem DOS-Setup Programm oder per Jumper eingestellt werden, ich ziehe letzteres vor. Unter Linux habe ich dann eingestellt:
cd /usr/src/linux
make menuconfig
<M> Sound card support
[*] Sound Blaster (SB, SBPro, SB16, clones) support
[*] Generic OPL2/OPL3 FM synthesizer support
[*] Microsoft Sound System support
[*] /dev/dsp and /dev/audio support
[*] MIDI interface support
[*] FM synthesizer (YM3812/OPL-3) support
(220) I/O base for SB Check from manual of the card
(5) Sound Blaster IRQ Check from manual of the card
(0) Sound Blaster DMA 0, 1 or 3
(0) Sound Blaster 16 bit DMA (_REQUIRED_for SB16, Jazz16, SMW)
(0) MPU401 I/O base of SB16, Jazz16 and ES1688 Check from manual of
(-1) SB MPU401 IRQ (Jazz16, SM Wave and ES1688) Use -1 with SB16
(530) MSS/WSS I/O base 530, 604, E80 or F40
(10) MSS/WSS IRQ 7, 9, 10 or 11
(1) MSS/WSS DMA 0, 1 or 3
(65536) Audio DMA buffer size 4096, 16384, 32768 or 65536
make dep; make clean; make zlilo; make modules; make modules_install;
Hey, mit cat /dev/sndstat
tauchen doch jetzt zwei scheinbar unabhängige
Karten auf? Wo sind die Einschränkungen?
cat /dev/sndstat sieht bei mir so aus:
Sound Driver:3.5.4-960630 (Sun Dec 28 08:34:41 MET 1997 root,
Linux loki 2.0.32 #2 Sat Dec 13 05:51:24 MET 1997 i486 unknown)
Kernel: Linux loki 2.0.32 #2 Sat Dec 13 05:51:24 MET 1997 i486
Config options:
Installed drivers:
Type 10: MS Sound System
Type 24: MS Sound System (AXP)
Type 27: Compaq Deskpro XL
Type 1: OPL-2/OPL-3 FM
Type 2: Sound Blaster
Type 7: SB MPU-40
Card config:
MS Sound System at 0x530 irq 10 drq 1
Sound Blaster at 0x220 irq 5 drq 0,0
(SB MPU-401 irq 1 drq 0)
OPL-2/OPL-3 FM at 0x388 drq
Audio devices:
0: MSS audio codec (AD1848)
1: Sound Blaster Pro (3.1)
Synth devices:
0: Yamaha OPL-
Midi devices:
0: Sound Blaste
Timers:
0: System cloc
Mixers:
0: MSS audio codec (AD1848)
1: Sound Blaster
Hier liegt ein Problem "Sound Blaster at 0x220 irq 5 drq 0,0
", der 8-Bit
Sound funktioniert nicht. Der große Vorteil liegt darin, daß beide Mixer benutzt
werden können.
Die meisten Karten, die eine Soundblaster und eine weitere Soundkarte emulieren, funktionieren ähnlich.
Mixer auf einer Soundkarte arbeiten unabhängig von der Sounderzeugung und können mit Portadressen, ohne IRQ und DMA zu benötigen, angesteuert werden.
Theoretisch sind zwei unabhängige Mixer auf der Karte vorhanden. Jeder Mixer kann mehrere Eingänge verwalten. Es könnten wesentlich mehr Devices geregelt werden, als tatsächlich Eingänge vorhanden sind, leider wird nur ein Teil genutzt.
Praktisch sind die Mixer hintereinander geschaltet. Der Ausgang vom WSS-Mixer geht in einen Eingang vom SB-Mixer. Das erklärt das merkwürdige Verhalten, wenn man einen Mixer aufruft und nur einen Teil der Funktionen regeln kann, bzw. warum Regler auftauchen die nix bewirken. :-)
Unter Windows fällt nicht auf, daß mit der Oberfläche eines Mixerprogramms zwei unterschiedliche Devices geregelt werden. Unter DOS ist es leider üblich, daß eine "kompatible" Karte ein Dummy-Register hat. Ein Spiel schreibt hier z.B. die Lautstärke für das CD-Rom rein, ein residenter Treiber, der beim Booten geladen wurde, schaut mit einer Zeitschleife nach ob, ein neuer Wert vorhanden ist, liest ihn aus und trägt ihn im benutzten Mixer ein. Kein Wunder, wenn es häufig zu Problemen kommt. :-(
Die Aztech Sound Galaxy ist abwärtskompatibel zum Soundblaster. Die Funktionen für die Bässe/Höhen werden mit dem Mixer vom SB geregelt. Sie können auch ohne WSS Einbindung genutzt werden.
Bei der alten Soundconfig konnte man noch angeben, ob man eine NXPro hatte,
beim neuen Soundtreiber leider nicht mehr, aber die alten Werte standen noch
in der Datei sb_mixer.h
. Ich habe nichts anderes getan, als die Galaxy-Werte
bei den normalen Soundblaster Einträgen zu ergänzen.
Ab jetzt tauchen zwar im jedem Mixer die neuen Regler auf, sinnvoll genutzt werden können sie aber nur, wenn die Hardware dafür ausgelegt ist. Es wird keine Hardware beschädigt, wenn ein Test mit einer alten Karte durchgeführt wird. Unterstützt die Karte keine Bässe/Höhen, passiert halt nix. ;-) Es funktioniert mit mehreren Soundblaster Karten und Kompatiblen.
Ich habe ein kleines DOS-Mixer Progamm geschrieben, mit dem die Bits einer SB-Karte komfortabel gesetzt werden können, wenn ich sehen will, welche Funktionen implementiert sind. Bei Bedarf kann ich es in eine Binary-NG posten oder direkt zuschicken.
Als letztes mein Patch 2.0.30/32:
--- sb_mixer.h.orig Sun Jun 30 10:43:39 1996
+++ sb_mixer.h Sun Nov 23 01:35:58 1997
@@ -23,8 +23,9 @@
/* Same as SB Pro, unless I find otherwise */
#define SGNXPRO_RECORDING_DEVICES SBPRO_RECORDING_DEVICES
-#define SBPRO_MIXER_DEVICES (SOUND_MASK_SYNTH | SOUND_MASK_PCM | SOUND_MASK_LINE | SOUND_MASK_MIC | \
- SOUND_MASK_CD | SOUND_MASK_VOLUME)
+#define SBPRO_MIXER_DEVICES (SOUND_MASK_SYNTH | SOUND_MASK_PCM | SOUND_MASK_LINE | \
+ SOUND_MASK_MIC | SOUND_MASK_CD | SOUND_MASK_VOLUME | \
+ SOUND_MASK_BASS | SOUND_MASK_TREBLE | SOUND_MASK_SPEAKER )
/* SG NX Pro has treble and bass settings on the mixer. The 'speaker'
* channel is the COVOX/DisneySoundSource emulation volume control
@@ -99,17 +100,19 @@
#ifdef __SB_MIXER_C__
mixer_tab sbpro_mix = {
MIX_ENT(SOUND_MIXER_VOLUME, 0x22, 7, 4, 0x22, 3, 4),
-MIX_ENT(SOUND_MIXER_BASS, 0x00, 0, 0, 0x00, 0, 0),
-MIX_ENT(SOUND_MIXER_TREBLE, 0x00, 0, 0, 0x00, 0, 0),
+MIX_ENT(SOUND_MIXER_BASS, 0x46, 2, 3, 0x00, 0, 0),
+MIX_ENT(SOUND_MIXER_TREBLE, 0x44, 2, 3, 0x00, 0, 0),
MIX_ENT(SOUND_MIXER_SYNTH, 0x26, 7, 4, 0x26, 3, 4),
MIX_ENT(SOUND_MIXER_PCM, 0x04, 7, 4, 0x04, 3, 4),
-MIX_ENT(SOUND_MIXER_SPEAKER, 0x00, 0, 0, 0x00, 0, 0),
+MIX_ENT(SOUND_MIXER_SPEAKER, 0x42, 2, 3, 0x00, 0, 0),
MIX_ENT(SOUND_MIXER_LINE, 0x2e, 7, 4, 0x2e, 3, 4),
MIX_ENT(SOUND_MIXER_MIC, 0x0a, 2, 3, 0x00, 0, 0),
MIX_ENT(SOUND_MIXER_CD, 0x28, 7, 4, 0x28, 3, 4),
MIX_ENT(SOUND_MIXER_IMIX, 0x00, 0, 0, 0x00, 0, 0),
MIX_ENT(SOUND_MIXER_ALTPCM, 0x00, 0, 0, 0x00, 0, 0),
-MIX_ENT(SOUND_MIXER_RECLEV, 0x00, 0, 0, 0x00, 0, 0)
+MIX_ENT(SOUND_MIXER_RECLEV, 0x00, 0, 0, 0x00, 0, 0),
+MIX_ENT(SOUND_MIXER_IGAIN, 0x00, 0, 0, 0x00, 0, 0),
+MIX_ENT(SOUND_MIXER_OGAIN, 0x00, 0, 0, 0x00, 0, 0)
};
mixer_tab es688_mix = {
MIX_ENT(SOUND_MIXER_VOLUME, 0x32, 7, 4, 0x32, 3, 4),
Die folgenden Chips sind aufwärtskompatibel zum AD1848: CS4248 CS4231 CS4231A und AD1845 CS4232 CS4231A (und SB, MPU) ** Plug ´n´ Pain ** CS4232A
Es sollte also funktionieren. Da kannst vermutlich den WSS Teil für 16-Bit Sounderzeugung benutzen und den SB-Teil als Hauptmixer.
Schau dir doch mit
less /var/log/boot.msg
die Bootmeldungen an.
Normalerweise hat jeder neue PC mindestens zwei serielle Schnittstellen, die die IRQ 3,4 benutzten. Meistens ist an der ersten eine Maus angeschlossen und an der zweiten hängt ein Modem, aber selbst, wenn Du noch eine freie serielle Schnittstelle hast, würde ich davon abraten, sie zu verschwenden. Findest Du mit
less /proc/interrupts
keine freien Interrupts?
# Serial driver version 4.13 with no serial options enabled
# tty00 at 0x03f8 (irq = 4) is a 16550A
# tty01 at 0x02f8 (irq = 3) is a 16550A
Die Hardware der meisten WSS kompatiblen Karten läßt es nicht zu, andere Interrupts als die vorgegebenen (7,9,10,11) zu benutzen.
Meine Checkliste für den Einbau: leider gibt es mehr falsche als richtigen Einstellungen. Am Ende habe ich eine komplette Liste meiner Hardware. Vielleicht hilft es.
(Jumper haben meistens aber nicht immer vorrang) Hauptplatine: z.B. feste Vergabe von IRQ 5/7 und DMA 1/3 für erweiterte Druckerschnittstelle ECP/EPP über Jumper? andere Erweiterungskarten: Netzwerkkarten benutzen z.B. IRQ5 werden die Jumper auf der Soundkarte benutzt oder PNP? (beides ist möglich!!)
BIOS: Welche Resourcen werden intern belegt. (HDD-Controler, Grafik, PS/2 Maus...) BIOS: müssen Resourcen als frei/belegt angegeben werden? BIOS: Einstellungen COM/LPT Einstellungen anderer Karten Soundkarte EEPROM, Einstellungen mit mitgelieferter Software überprüfen. Achtung: Änderungen werden erst nach einem Hardwarereset wirksam Bei manchen Mainboards muß sogar der Rechner ausgeschaltet werden, bevor Änderungen wirken. Stimmen unter DOS die Werte im SET BLASTER überein?
Ab hier sollte mein Programm den SB-Mixer ändern
können. Lest bitte auch die README.TXT
im Paket. Doppelbelegungen werden von
der Windows Systemsteuerung meistens nicht erkannt,
normalerweise sind sie für
Fehler verantwortlich. Ich versuche einen neuen Rechner immer mit mehreren
verschiedenen Testprogrammen wie Syschk, Config u. DrHardware zu testen, da
ich kein Programm kenne, das alles erkennen kann.