Weiter Inhalt

2. Installation

2.1 Einstellungen für den Kernel

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:

A220

Port Soundblaster

I5

IRQ SB-Pro

D1

DMA für SB-Pro und WSS

K10

IRQ WSS

P530

Port WSS

T6

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.

2.2 Wie funktionieren die Mixer?

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),

2.3 FAQ

Details zur Hardware

Checkliste

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.

Hardware

(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!!)

Software:

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?

Test:

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.


Weiter Inhalt