schubl hat geschrieben: Mo 15. Dez 2025, 11:13
Erst ab SB16 waren die MIDI Interfaces (eingeschränkt) MPU-401 kompatibel.
Bis zum SB Pro 2.0 hatten sie die eigene SB-MIDI Implementierung, die von der Software explizit unterstützt werden musste.
Softmpu macht dann die "Übersetzung" von MPU-401 auf SB-MIDI
Die klassischen Sound-Blaster-Karten (vor SB 16) funktionieren so, dass die Chips auf der Karte ziemlich unintelligent sind, und eigentlich nur ein primitives "Mailbox"-Interface zwischen dem ISA-Bus und dem Mikroprozessor auf der Karte zur Verfügung stellen, und der Mikroprozessor dann seinen eingebauten UART für MIDI, und einen 8-Bit-Datenport für den DAC verwendet. Das heißt, dass alles durch den Mikroprozessor geht. Dabei gehen auch alle Audio-Bytes durch den Mikroprozessor (sie werden vom DMA-Controller in die Mailbox gestopft, und dann vom Mikrokontroller an den DAC weitergeleitet). Im "Normalmodus" kann der Mikrokontroller gleichzeitig DMA-Daten weiterleiten und Kommandos verarbeiten (zum Beispiel MIDI-Bytes an den Gameport schicken), aber dadurch entsteht ein Overhead, der die maximale Samplerate auf 22kHz Mono begrenzt. Mit der Firmware-Version 2.0 (auf dem Sound Blaster 1.5, wenn ich mich richtig erinnere) wurde dann ein neuer High-Speed-Playback-Modus eingeführt, in dem der Controller
nur noch DMA-Daten an den DAC weiterleitet, und keine anderen Aktionen mehr ausführen kann (man kann nicht mal einen Befehl an die FIrmware schicken, den High-Speed-Modus zu beenden), so dass man den Soundblaster-Prozessor nur noch durch einen Prozessor-Reset aus dem High-Speed-Modus wieder herausbekommt. Dieser Modus kann bis zu 44kHz (und auf dem SB Pro auch bis zu 22kHz Stereo). In diesem Modus reagiert der Prozessor auch nicht auf MIDI-Ausgabe-Befehle.
Das heißt, selbst wenn Du mit SoftMPU einen virtuellen MIDI-Port auf 330 erscheinen lässt, der über "SBMIDI" (also Kommandos an den SB-Prozesoor) die MIDI-Daten an den Gameport weiterleiten soll, wird das nicht mit allen Spielen funktionieren, weil High-Speed-Wiedergabe von digitalem Ton und MIDI-Ausgabe hardwareseitig nicht gleichzeitig möglich sind.
Der Prozessor auf der Soundblaster-Karte wird von Creative Labs überigens "DSP" genannt, ist aber gemäß der üblichen Definition von "DSP" kein "Digital Signal Processor", sondern es ist ein primitiver Intel 8051, dessen Firmware inzwischen extrahiert und reverse engineered wurde. Allerdings unterstützt er mit der Wiedergabe von 1:2, 1:3 und 1:4-komprimiertem ADPCM-Audio zumindest eine Aktion, die man als "digital signal processing" bezeichnen kann. Als Creative Labs dann auf der SB16 optional einen "echten" DSP (ein typisches Kriterium ist die Möglichkeit, pro Takt eine Multiplikation von zwei 16-Bit-Zahlen ausführen und die Ergebnisse aufsummieren zu können) bekommen hat, müsste der anders heißen. Creative hat in zunächst "ASP" (Advanced Signal Processor), später CSP (Creative Signal Processor) genannt.