-
Die Erfindung betrifft ein PC-Audio-System mit einem Wellendiagramm-Audio-
Synthesizer und einem Speicher, der frequenzkompensiertre Wellendiagramm-
Daten liefert. Insbesondere betrifft die Erfindung ein PC-Audio-System mit
einem Wellendiagramm-Audio-Synthesizer und einem Wellendiagramm-Cache,
das in Interface-Verbindung mit einem PC-System-Speicher steht, der
frequenzkompensiertre Wellendiagramm-Daten liefert.
-
WO-A-92 15087 befasst sich mit Techniken zum Speichern von Musikdaten.
Mehrere Datensegmente, z. B. Tonaufzeichnungen, werden auf einer
Massenspeichervorrichtung wie z. B. einer Platte gespeichert, und ein erster Abschnitt
jedes Tonsegments wird in einem IC-Speicher gespeichert, um unmittelbar
verfügbar zu sein. Adressierschaltungen lesen den ersten Abschnitt eines in
dem IC-Speicher gespeicherten Datensegments und dann den Abschnitt der
Massenspeichervorrichtung, so dass ein im wesentlichen gleichzeitiges
Playback der Daten ermöglicht wird. Um ein schnelles Playback von Daten zu
simulieren, werden die Daten derart auf der Platte aufgezeichnet, dass jeder n-
te Abtastwert in dem Datenstrom ebenfalls in einem schnellen Block
aufgezeichnet wird und folglich, wenn die Playback-Geschwindigkeit erhöht wird,
nur Daten aus dem schnellen Block abgespielt werden.
-
EP-A-0 474 177 beschreibt eine Tonsignalerzeugungseinrichtung, die eine
Wellenformerzeugungseinrichtung enthält, um digitale Wellendiagramm-Daten mit
einer Frequenz zu erzeugen, die einem bezeichneten Pitch entspricht.
Sequentiell erzeugte, in digitaler Wellenform vorliegende Abtastwerte werden mit
erzeugten Koeffizienten verarbeitet, die einer gewünschten
Interpolationscharakteristik entsprechen, und die verarbeiteten Daten werden synthetisiert,
um einen Abtastdatenwert zu bilden. In dieser Weise kann die
Interpolationscharakteristik entsprechend der gewünschten Filtercharakteristik gesteuert
werden.
-
US-A-4,508,001 beschreibt ein elektronisches Musikinstrument mit einem
Speicher in Form einer optischen Platte, auf den nur mit niedriger
Geschwindigkeit zugegriffen werden kann, und einen Halbleiterspeicher, auf den mit
hoher Geschwindigkeit zugegriffen werden kann. Der Halbleiterspeicher wird
verwendet, um den Anfangsteil einer Wellenform zu speichern, und der
Platten-Speicher speichert den übrigen Teil. Eine Ausleseschaltung beginnt damit,
den Anfangs-Teil und den übrigen Teil gleichzeitig auszulesen, um die
Niedriggeschwindigkeits-Zugreifbarkeit der Optikplatten-Speichers zu kompensieren.
-
Derzeit sind mehrere Typen von "Synthesizern" verfügbar, d. h. Vorrichtungen
zur Erzeugung von Ton durch Verarbeiten digitaler Audio-Signale. Ein
moderner Typ eines digitalen Synthesizers ist ein Wellendiagramm-Synthesizer.
Wellendiagramm-Synthesizer erzeugen Töne durch digitale Verarbeitung
vollständiger digitalisierter Wellenformen oder von Teilen digitalisierter Wellenformen,
die in einem Wellendiagramm-Speicher gespeichert sind; vgl. das U. S.-Patent
Serial No. 08/334,461 mit dem Titel "Digital Signal Processor Architecture for
Wavetable Audio Synthesizer" von Norris et al.
-
Wellendiagramm-Synthesizer erzeugen Töne, indem sie eine bestimmte
digitalisierte Wellenform aus der Wellentabelle in einen Digital-/Analog-Konverter
hinein "abspielen". Die Adressier-Rate der Wellentabelle steuert die Frequenz
oder den Pitch des Analog-Ausgangssignals. Die Bit-Breite der
Wellendiagramm-Daten beeinflusst die Auflösung des erzeugten Tons. Beispielsweise
kann durch Daten mit einer Breite von 16 Bits eine bessere Auflösung erzielt
werden als durch Daten mit einer Breite von 8 Bits. Die 16-Bit-Digital-Audio-
Funktion ist dabei, sich in der Industrie zum Standard zu entwickeln.
-
Wellendiagramm-Synthesizer finden Anwendung in Personal Computern.
Typischerweise werden Personal Computer mit nur begrenzten Audio-Fähigkeiten
hergestellt. Diese begrenzten Fähigkeiten ermöglichen eine monophone
Tonerzeugung, um dem Benutzer akustische Signale im Zusammenhang mit
verschiedenen einfachen Funktionen zu geben, z. B. Alarmsignale oder Signale zur
Erweckung der Aufmerksamkeit des Benutzers. Das typische
Personal-Computer-System hat keine Fähigkeit für eine qualitativ hochwertige Stereo-Audio-
Funktion, bei der es sich um eine gewünschte Verbesserung für Multimedia-
und Spiel-Anwendungen handelt, noch weisen sie eine eingebaute Fähigkeit
zum Erzeugen oder Synthetisieren von Musik oder anderen komplexen Tönen
auf. Die Fähigkeit zur Musik-Synthetisierung ist erforderlich, wenn der
Benutzer den Wunsch hat, Gebrauch von einer
Musikkompositions-Anwendungsfunktion zu machen, um mittels des Computers Töne zu erzeugen oder
aufzuzeichnen, die auf einem externen Instrument oder auch über
Analog-Lautsprecher und in Multimedia-(CD-ROM-)Anwendungen gespielt werden sollen.
-
Zudem besteht seitens der Benutzer manchmal der Wunsch nach einer
Fähigkeit, externe analoge Ton-Quellen, wie z. B. Stereo-Ausrüstungen, Mikrophone
und nicht MIDI-gemäße elektrische Instrumente dahingehend zu verwenden,
dass diese einer digitalen Aufzeichnung und/oder einer Mischung mit digitalen
Quellen unterzogen werden, bevor die Benutzer eine Aufzeichnung oder ein
Playback durch ihren Computer vornehmen. Um diesen Bedarf zu befriedigen,
ist eine Anzahl von Nachrüstprodukten entwickelt worden. Eine dieser
Produktlinien wird in der Industrie als Sound Card bezeichnet. Bei diesen Sound Cards
handelt es sich um Schaltungskarten, die eine Anzahl von IC-Schaltungen
tragen, oftmals einschließlich eines Wellenform-Synthesizers; eines
Wellendiagramm-Speichers und anderer zugehöriger Schaltungen, die der Benutzer in
vom Computer-Hersteller vorgesehenen Erweiterungs-Slots installiert. Die
Erweiterungs-Slots bilden ein Interface mit dem System-Bus, wodurch sie dem
Host-Prozessor ermöglichen, unter Steuerung durch die Anwender-Software
auf die Tonerzeugungs- und Steuerfunktionen auf der Karte zuzugreifen.
Typische Sound Cards sind auch mit MIDI-Interfaces und Game-Ports versehen,
damit sie Eingangssignale von MIDI-Instrumenten wie z. B. Tastaturen und
Joysticks für Spiele annehmen können.
-
Eine der herkömmlichen Sound Cards ist diejenige, die von Adanced Garvies
and Forte unter dem Namen Ultrasound angeboten wird. Diese Sound Card ist
eine Erweiterungs-Slot-Ausführungsform, bei der in einen einzigen Chip (den
"GF-1") ein Wellenform-Synthesizer, MIDI- und Game-Interfaces, und DMA-
Steuerungs- und Adlib-Sound-Blaster-Kompatibilitäts-Logikvorrichtungen
einbezogen sind. Zusätzlich zu diesem ASIC enthält die Ultrasonic-Karte ein On-
board-DRAM (1 Megabyte) für Wellendiagramm-Daten; einen
Adress-Dekodier-Chip; eine separate Analog-Schaltung zur Interface-Verbindung mit
Analog-Eingängen und -Ausgängen; einen separaten programmierbaren ISA-Bus-
Interface-Chip; einen Interrupt-PAL-Chip; und einen separaten Digital-Analog-
/Analog-Digital-Konverter-Chip; siehe die U. S.-Patentanmeldung Serial No.
072,838 mit dem Titel "Wave Table Synthesizer" von Travers et al., die hiermit
durch Verweis in die vorliegende Anmeldung einbezogen wird.
-
Ein On-board-Sound-Card-Speicher hat typischerweise eine Größe von einem
halben bis vier Megabytes und speichert sämtliche Wellendiagramm-Daten, die
zum Synthetisieren von Musik verwendet werden. Angesichts eines
Kostenaufwandes von ungefähr $ 25,00 pro Megabyte bilden der Preis eines Sound-
Card-Speichers einen signifikanten Faktor in den Gesamtkosten der Sound
Card. Somit würden, falls ein PC-System-Speicher zum Zuführen der
Wellendiagramm-Daten verwendet werden könnte und dadurch der Bedarf an Sound-
Card-Speicherraum beseitigt oder reduziert würde, die Sound-Cards weniger
teuer.
-
Die Verwendung von PC-System-Speichern zum Speichern von
Wellendiagramm-Daten wirft jedoch einige Probleme auf. Ein Problem besteht darin,
dass der verfügbare PC-System-Speicher begrenzt ist und nicht für
Wellendiagramm-Daten erübrigt werden kann. Dies sollte jedoch bei PCs des
zukünftigen Standes der Technik, von denen erwartet wird, dass sie größere System-
Speicher aufweisen und Raum für Wellendiagramm-Daten verfügbar haben,
weniger Sorge bereiten. Ein weiteres Problem bei der Verwendung von
System-Speichern liegt in den zahlreichen Zugriffen auf den Speicher, die bei
herkömmlichen Synthesizern erforderlich sind. Beispielsweise müssen
herkömmliche Wellendiagramm-Synthesizer, die zweiunddreißig unabhängige Töne (d. h.
Instrumenten-Klänge) synthetisieren können, alle 22,7 Mikrosekunden zwei-
unddreißig Mal auf den Speicher zugreifen, um die erforderlichen Daten-
Abtastwerte abzurufen. Falls diese Anzahl von Zugriffen auf einen System-
Speicher erfolgen würde, würde ein inakzeptabel hoher Prozentanteil der
System-Bus-Bandbreite für Synthesizer-Operationen verwendet, und somit könnte
ein geringerer Teil der Bandbreite für andere PC-Operationen verwendet
werden.
-
Ein weiteres Problem besteht darin, dass der Synthesizer Wellendiagramm-
Daten möglicherweise schneller verarbeiten könnte, als er sie aus dem
System-Speicher erhält (d. h. schneller als die maximale Bus-Wartezeit des
Systems). Eine derartige Situation wäre inakzeptabel, da die verarbeiteten Daten
Lücken aufwiesen und unerwünschte Aussetzer in der synthetisierten Musik
aufträten, wenn diese gespielt würde.
-
Somit besteht Bedarf an einem PC-Audio-System, das Musik aus
Wellendiagramm-Daten, die von dem System-Speicher zugeführt werden, synthetisiert,
jedoch keinen inakzeptabel hohen Prozentanteil an Bus-Bandbreite benutzt.
Ferner besteht Bedarf an einem PC-Audio-System, das Daten aus dem
System-Speicher mit einer Rate enthält, die mindestens so schnell ist wie die
Rate, mit der es die Daten verarbeitet (d. h. die maximale Bus-Wartezeit ist
kürzer als die Datenverarbeitungsrate des PC-Audio-Systems oder gleich dieser
Rate).
-
Deshalb schafft die vorliegende Erfindung ein Verfahren zum Erzeugen einer
frequenzkompensierten Version eines ersten Patch von Wellendiagrammdaten,
die eine erste Tastfrequenz aufweisen und an einer ersten Stelle eines
Speichers gespeichert sind, wobei das frequenzkompensierte Patch in dem
Speicher gespeichert wird und in dem Speicher entweder auf das erste Patch oder
das frequenzkompensierte Patch durch einen Digitalwellendiagramm-Audio-
Synthesizer zugegriffen wird und das Patch dazu verwendet wird, digitale
Au
dio-Signale mit einer zweiten Tastfrequenz zu erzeugen, die höher ist als die
erste Tastfrequenz, wobei das Verfahren die folgenden Schritte umfasst:
-
(a) Zugreifen auf das erste Patch von Wellendiagrammdaten aus der ersten
Stelle des Speichers;
-
(b) aus dem ersten Patch von Wellendiagrammdaten, Ableiten eines Patch
von Wellendiagrammdaten, das eine dritte Tastfrequenz hat, die größer
ist als die erste Tastfrequenz, wobei das abgeleitete Patch von
Wellendiagrammdaten das frequenzkompensierte Patch aufweist; und
-
(c) Speichern des frequenzkompensierten Patch an einer zweiten Stelle des
Speichers zur Verwendung durch den Digital-Audio-Synthesizer beim
Erzeugen digitaler Audio-Signale, die die zweite Tastfrequenz aufweist.
-
Die vorliegende Erfindung wird im Zusammenhang mit einer
PC-Audio-Schaltung beschrieben, die derart konzipiert ist, dass sie in Interface-Verbindung
mit einem Host-Personal-Computer des Typs mit einer zentralen
Verarbeitungseinheit, einem System-Speicher und einem System-Bus treten kann und
diesen Computer mit einer verbesserten Audio-Funktion versehen kann. Die
PC-Audio-Schaltung enthält einen Cache-Speicher, bei dem Größe und
Kostenaufwand signifikant reduziert sind und der jedes Mai nur Teile der Gesamt-
Wellendiagramm-Daten speichern kann. Stattdessen werden sämtliche der
Wellendiagramm-Daten in dem System-Speicher des Host-PC gespeichert und
in Teilen in den Cache-Speicher übertragen; je nach dem Bedarf der PC-Audio-
Schaltung. Die PC-Audio-Schaltung verarbeitet die Daten und erzeugt digitale
Audio-Signale, wie z. B. Musik oder Klangeffekte. Da bei dem Cache-Speicher
Größe und Kostenaufwand reduziert sind, sind die Gesamtkosten der PC-
Audio-Schaltung niedriger als bei herkömmlichen Systemen.
-
Anders als herkömmliche PC-Audio-Systeme verarbeitet die
PC-Audio-Schaltung mehrere Rahmen von Daten-Abtastwerten für einen Ton, bevor sie den
nächsten bezeichneten Ton verarbeitet. Somit können mehrere
Wellendiagramm-Daten-Abtastwerte auf einmal aus dem System-Speicher abgerufen
werden und in dem Cache-Speicher verfügbar gemacht werden, so dass die
Gesamtzahl der erforderlichen Zugriffe auf den Speicher und der benutzte
Prozentanteil der System-Bus-Bandbreite reduziert werden. Das in dieser Weise
durchgeführte Verarbeiten der Daten-Abtastwerte ermöglicht auch bestimmte
parallele Verarbeitungsoperationen. Beispielsweise können, während mehrere
Daten-Abtastwerte für aktive Töne verarbeitet werden, andere Gruppen von
Daten-Abtastwerten aus dem System-Speicher aufgerufen werden und zum
Verarbeiten in dem Cache-Speicher verfügbar gemacht werden. Die
gewährleistet eine kontinuierliche Zufuhr von Daten und reduziert die Probleme im
Zusammenhang mit der maximal zulässigen System-Bus-Zugriffs-Wartezeit.
-
Da eine PC-Audio-Schaltung mehrere Wellendiagramm-Daten-Abtastwerte auf
einmal aufruft, ist es vorzuziehen, dass die Daten-Abtastwerte eines Tons
zusammen in einem Block in dem System-Speicher organisiert werden. Falls eine
zusammenhängende Reihe von Daten-Abtastwerten erforderlich ist, kann auf
diese mittels des Seiten-Modus des System-Speichers zugegriffen werden,
wobei eine Inkrementierung durch die Daten-Abtastwerte in dem Block erfolgt.
Vorzugsweise ist der Bus zwischen dem System-Speicher und der PC-Audio-
Schaltung ein PCI-Bus, so dass die Daten, auf die durch den Seiten-Modus
zugegriffen wird, im Burst-Modus an die PC-Audio-Schaltung übertragen werden
können.
-
Bei der bevorzugten Ausführungsform der vorliegenden Erfindung enthält die
PC-Audio-Schaltung einen PCI-Interface-Block, einen internen Adress-Daten-
Bus, einen Digitalsignalprozessor, eine
Ausgangssteuerungs-Zustandsmaschine, einen internen Bus-Arbiter und einen Cache-Speicher. Die PC-Audio-
Schaltung kann als eine monolithische IC-Schaltung ausgebildet sein, wobei
diese entweder den Cache-Speicher enthält oder der Cache-Speicher
außerhalb der IC-Schaltung angeordnet ist. Die Daten in dem System-Speicher
wer
den über den PCI-Bus, durch den PCI-Interface-Block, über den internen Bus
und in den Cache-Speicher übertragen.
-
Der Digitalsignalprozessor (DSP) führt Berechnungen und andere
Verarbeitungsvorgänge durch, um die Daten-Abtastwerte in dem Cache-Speicher in
digitale Audio-Signale zu übersetzen, die zur Umsetzung in die gewünschten
analogen Audio-Signale geeignet sind. Vorzugsweise kann der DSP bis zu 32
unabhängige digitale Audio-Signale oder Töne mit einer Rahmen-Rate von
44,1 KHz erzeugen.
-
Die von dem DSP für jeden Ton erzeugten digitalen Audio-Signale werden in
dem Cache-Speicher akkumuliert, oder sie können in einem separaten Cache-
Speicher akkumuliert werden, bis sie bereit zur Ausgabe an einen externen
Digital-/Analog-Konverter (DAC) sind. Die
Ausgangssignalsteuerungs-Zustandsmaschine (OCSM) steuert die Übertragung der akkumulierten Daten aus
dem Cache zu dem externen DAC mit einer Abtast-Rate von 44,1 KHz. Der
interne Bus-Arbiter (IBA) ist zuständig für das Lenken des Verkehrs zwischen
den verschiedenen Blöcken, die auf den internen Bus zugreifen, einschließlich
des OCSM, des Cache, des PCI-Interface-Blocks und des DSP. Der interne Bus
arbeitet mit 33 MHz, zusammen mit dem Großteil der Logik, auf der Basis
eines Taktgebers, der als Teil des PCI-Standards vorgesehen ist.
-
Der Cache ist vorzugsweise ein kostengünstiger SRAM mit einer Kapazität von
8 bis 32 Kilobytes. Der verfügbare Speicherraum in dem Cache kann für die
Daten-Abtastwert-Speicherung, die Akkumulator-Speicherung und die
allgemeine Speicherung für den DSP zugewiesen sein. Daten-Abastwerte können in
Daten-Schlangen A und B gespeichert werden, während die durch den DSP
erzeugten digitalen Audio-Signale in den Akkumulator-Schlangen A und B
gespeichert werden können. Bei einer zweckmäßigen Ausführungsform speichern
die Daten-Schlangen A und B jeweils bis zu 64 16-Bit-Daten-Abtastwerte für
jeden der 32 Töne, während die Akkumulator-Schlangen A und B jeweils die
erzeugten Daten-Abtastwerte für bis zu 32 Tönen akkumulieren. Die erzeugten
Daten-Abtastwerte werden zusammen in der Akkumulator-Schlange A oder B
als ein Set von 64 16-Bit-Daten-Abtastwerten akkumuliert.
-
Der PCI-Interface-Block detektiert, wann die Notwendigkeit besteht, den
Cache mit Daten-Abtastwerten zu aktualisieren, und initiiert Master-Bus-
Requests. Die Adressen in dem System-Speicher, aus denen die
Daten-Abtastwerte abgerufen werden sollen, werden von dem PCI-Interface-Block an den
PCI-Adress-Bus übermittelt. Unter der Steuerung durch den PCI-Interface-
Block werden die aus dem System-Speicher abgerufenen Daten-Abtastwerte
über den internen Daten-Bus zu dem Cache übertragen.
-
Beim Hochfahren der bevorzugten PC-Audio-Schaltung werden für jeden
aktiven Ton 128 Daten-Abtastwerte in den Cache geladen (64 Daten-Abtastwerte
in jeder der Daten-Schlangen A und B). Nachdem die Daten-Schlangen A und
B mit Daten geladen sind, verarbeitet der DSP die Daten-Abtastwert in einer
der Daten-Schlangen für den ersten aktiven Ton. Die andere Daten-Schlange
ist zu dieser Zeit inaktiv. Dann verarbeitet der DSP die Daten-Abtastwerte für
den nächsten bezeichneten aktiven Ton. Während der DSP diese Daten-
Abtastwerte verarbeitet, werden die Daten-Abtastwerte, die gerade von dem
DSP erzeugt worden sind, in einer der Akkumulator-Schlangen akkumuliert.
Dieser Vorgang wird fortgesetzt, bis sämtliche aktiven Töne verarbeitet
worden sind, und dann werden die Akkumulator-Schlangen einem Toggle-Vorgang
unterzogen, und die anderen Akkumulator-Schlangen akkumulieren erzeugte
Daten-Abtastwerte, während die akkumulierten Daten-Abtastwerte in der
ersten Akkumulator-Schlange an einen externen DAC ausgegeben werden
können.
-
Nachdem die Daten-Abtastwerte für jeden aktiven Ton in der Daten-Schlange
verarbeitet worden sind, gibt der PCI-Interface-Block auf dem PCI-Bus
Requests für zusätzliche Daten-Abtastwerte aus dem System-Speicher aus. Die
aus dem System-Speicher abgerufenen Daten-Abtastwerte werden in der
ersten Daten-Schlange gespeichert, wodurch die soeben verarbeiteten Daten-
Abtastwerte überschrieben werden. Während diese Daten-Abtastwerte
aufgerufen werden, verarbeitet der DSP die Daten-Abtastwerte in der anderen
Schlange. Dann werden die Daten-Schlangen getoggelt, und der Vorgang wird
fortgesetzt, wobei jedes Mal bis zu 64 Daten-Abtastwerte verarbeitet werden
können.
-
Falls der DSP die Daten-Abtastwerte mit der gleichen Frequenz wie der
während der Analog-/Digital-Umsetzung (Aufzeichnen) des Original-Audio-Signals
verwendeten Abtastfrequenz verarbeitet, dann wird, wenn die von dem DSP
erzeugten Audio-Signale auf Analog umgesetzt und gespielt werden, das
resultierende Audio-Signal genau so klingen (d. h. die gleiche Frequenz haben) wie
das ursprüngliche Audio-Signal, das zum Erzeugen der Daten-Abtastwerte
verwendet wird. Wenn die Frequenz des gerade gespielten Audio-Signals die
gleiche ist wie die Aufzeichnungs-Frequenz, dann ist sein Frequenz-Verhältnis (Fr)
gleich 1. Falls Fc > 1 ist, dann haben die erzeugten Audio-Signale einen
höheren Pitch als die aufgezeichneten Signale. Falls für jeden der aktiven Töne Fc
= 1 ist, dann ist die maximal zulässige PCI-Bus-Wartezeit gleich der Zeit, die
benötigt wird, um 64 Daten-Rahmen mit der 44,1-KHz-Rahmen-Rate zu
verarbeiten. Falls jedoch für einen oder mehr aktive Töne Fc > 1 ist, dann wird die
maximal zulässige PCI-Bus-Wartezeit reduziert, da der DSP mehr als einen
Daten-Abtastwert pro Rahmen pro Ton verarbeitet. Wenn Fc ungefähr gleich
2,0 ist, kann die Reduzierung der maximal zulässigen Bus-Wartezeit zum.
Problem werden.
-
Das Wartezeit-Problem bei Fc > 2--kann vermieden werden, indem veranlasst
wird, dass die PC-Audio-Schaltung nur die Daten-Abtastwerte aufruft, die
verarbeitet werden sollen, und nicht die Daten-Abtastwerte, die von dem DSP
übersprungen werden. Somit werden sämtliche Daten-Abtastwerte, die
aufgerufen und in einer Daten-Schlange gespeichert werden, verarbeitet. Dieses
Merkmal wird implementiert, indem in dem PCI-Interface-Block eine
Einrichtung zum Zugreifen auf die Fc-Werte für die aktiven Töne vorgesehen ist, und
dann die nächste System-Speicher-Adresse zum Aufrufen der
Daten-Abtast
werte für einen gegebenen Ton auf der Basis der derzeitigen System-Speicher-
Adresse und des Fc-Wertes berechnet wird. Indem nur gewählte Abtastwerte
für jeden aktiven Ton aufgerufen werden, wenn Fc > 1, wird die verfügbare
PCI-Bandbreite reduziert, da der Burst-Modus nicht verwendet werden kann,
um die Daten-Abtastwerte zu übertragen. Selbst falls der Burst-Modus nicht
verwendet wird, kann erwartet werden, dass der Prozentanteil der von der PC-
Audio-Schaltung benutzten Bandbreite akzeptabel ist, jedoch ist dabei der
benutzte Prozentanteil weniger wünschenswert.
-
Bei der bevorzugten Ausführungsform der vorliegenden Erfindung enthält das
PC-Audio-System Treiber-Software, die die Erstellung frequenzkompensierter
Dateien oder Patches von Wellendiagramm-Daten erleichtert, welche in dem
System-Speicher gespeichert werden und im Burst-Modus an den Cache-
Speicher übertragen werden, so dass der PCI-Bus-Bandbreiten-Bedarf
reduziert wird. Die frequenzkompensierten Dateien oder Patches enthalten nur die
Daten-Abtastwerte, die von dem DSP tatsächlich für einen Ton mit Fc > 2
verarbeitet werden. Beispielsweise braucht für einen aktiven Ton mit Fc = 4 der
DSP nur jeden vierten Daten-Abtastwert in dem diesem aktiven Ton
zugeordneten Patch (dem "Original-Patch") der Wellendiagramm-Daten zu
verarbeiten. Die Treiber-Software erleichtert die Bildung einer frequenzkompensierten
Version des Original-Patch, die nur jeden vierten Abtastwert enthält. Die
frequenzkompensierte Datei oder das Patch werden in dem System-Speicher
gespeichert und können im Burst-Modus an die PC-Audio-Schaltung übertragen
werden, um durch den DSP verarbeitet zu werden.
-
Ein geeignetes PC-Audio-System enthält eine PC-Audio-Schaltung des oben
beschriebenen Typs, Treiber-Software, und eine MIDI- oder eine vergleichbare
Datei. Die MIDI-Datei enthält Parameter, die das Musikstück definieren, oder
andere Audio-Signale, die von der PC-Audio-Schaltung erzeugt werden sollen.
Die Treiber-Software führt die Funktion des Interpretierens der in der Datei
enthaltenen Parameter und des Programmierens des PC-Audio-Schaltung
durch, um die gewünschten Audio-Signale aus den Wellendiagramm-Daten in
dem System-Speicher zu erzeugen. Wie noch erläutert wird, enthält die
Treiber-Software auch Instruktionen, die die Funktion des Ableitens
frequenzkompensierter Patches für hohe Fc-Töne steuern.
-
Die System-CPU bestimmt für einen gegebenen Ton das Verhältnis der
gewünschten Frequenz für den Ton zu der Aufzeichnungs-Frequenz für die dem
Ton zugeordneten Daten in dem System-Speicher. Bei Fc > 2,0 steuert die
CPU in der im folgenden beschriebenen Weise ein frequenzkompensiertes
Patch.
-
Ein frequenzkompensiertes Patch kann auf mehrere Arten abgeleitet werden.
Eine Art, die den am wenigsten aufwendigen CPU-Verarbeitungsvorgang
erfordert, besteht im Kopieren oder Transponieren eines Teils der Wellendiagramm-
Daten aus dem Original-Patch für den Ton in eine neue Datei oder ein neues
Patch, die bzw. das in dem System-Speicher gespeichert ist. Der in das neue
Patch transponierte Teil der Daten-Abtastwerte basiert auf dem durch die CPU
errechneten Fc-Wert. Das frequenzkompensierte Patch hat eine Frequenz, die
höher ist als die Frequenz des Original-Patch. Falls beispielsweise jeder vierte
Daten-Abtastwert aus dem Original-Patch kopiert wird, um das
frequenzkompensierte Patch zu erzeugen, hat das frequenzkompensierte Patch eine
Frequenz, die das Vierfache der Frequenz des Original-Patch ist; das
frequenzkompensierte Patch weist eine effektive Frequenz (Feff) auf, die gleich vier ist.
-
Da Bus-Wartezeit-Probleme dann auftreten, wenn die PC-Audio-Schaltung
Audio-Signale mit mehr als dem Zweifachen der Aufzeichnungs-Frequenz eines
Patch von Daten-Abtastwerten erzeugt, besteht das Ziel beim Ableiten
frequenzkompensierter Patches darin, eine effektive Patch-Frequenz zu erzeugen,
die dahingehend hoch genug ist, dass die PC-Audio-Schaltung die Frequenz
des Patch nicht mehr als zu verdoppeln braucht, um die gewünschten Audio-
Signale zu erzeugen.
-
Ein weiterer Weg zum Ableiten frequenzkompensierter Patches besteht darin,
das Original-Patch der Wellendiagramm-Daten digital zu filtern. Das digitale
Filtern erfordert einen größeren CPU-Verarbeitungsaufwand, wird jedoch
gegenüber den oben aufgeführten Techniken bevorzugt, da das digitale Filtern
die Hochfrequenz-Komponente der Wellendiagramm-Daten entfernt, so dass
die erzeugten digitalen Audio-Signale weniger Rauschen aufweisen. Ein
Beispiel einer Digitalfilterungstechnik besteht darin, den Mittelwert jedes n-ten
Abtastwertes zu nutzen. Ein weiteres Beispiel, bei dem sogar noch mehr CPU-
Verarbeitungsaufwand benötigt wird, besteht darin, den Mittelwert des sich
bewegenden Mittelwertes zu berechnen.
-
Die System-CPU kann durch die Treiber-Software angewiesen werden zum:
(1) Ableiten sämtlicher der erforderlichen frequenzkompensierte Patches
unmittelbar, bevor die PC-Audio-Schaltung die MIDI-Datei verarbeitet; oder (2)
Ableiten jedes Patch, während die PC-Audio-Schaltung durch die Datei
vorrückt.
-
Wenn die PC-Audio-Schaltung ein frequenzkompensiertes Patch verarbeitet,
müssen Einstellungen vorgenommen werden, um die höhere Frequenz des
Patch zu berücksichtigen. Die Treiber-Software programmiert die PC-Audio-
Schaltung zum Durchführen dieser Einstellungen. Somit wird, falls die PC-
Audio-Schaltung ursprünglich so programmiert ist, dass sie digitale Audio-
Signale mit Fc = 8 erzeugt, die PC-Audio-Schaltung jedoch ein
frequenzkompensiertes Patch mit Feff = 4 verarbeitet, die PC-Audio-Schaltung dann so
programmiert, dass sie das Frequenzverhältnis zum Verarbeiten der Daten durch
vier dividiert, so dass die Daten mit Fc = 2 verarbeitet werden. Da es bei einer
digitalen Schaltung leichter ist, durch einen Faktor von zwei zu dividieren,
sollten die frequenzkompensierten Dateien vorzugsweise eine effektive
Frequenz haben, bei der es sich um einen Faktor von zwei handelt.
Kurzbeschreibung der Zeichnungen
-
Ein besseres Verständnis der vorliegenden Erfindung ergibt sich aus der
folgenden detaillierten Beschreibung bevorzugter und alternativer
Ausführungsformen im Zusammenhang mit den beigefügten Zeichnungen:
-
Fig. 1 zeigt ein Blockschaltbild der PC-Audio-Schaltung gemäß der
vorliegenden Erfindung in Interface-Verbindung mit dem System-Bus eines
Host-Computers;
-
Fig. 2 veranschaulicht die Weise, in der bei dem Cache-Speicher gemäß der
vorliegenden Erfindung Speicherraum zugewiesen werden kann;
-
Fig. 3 zeigt ein Blockschaltbild des PCI-Bus-Interface-Blocks gemäß der
vorliegenden Erfindung in Interface-Verbindung mit System- und internen
Bussen;
-
Fig. 4 zeigt ein Blockschaltbild einer
Ausgangssignalsteuerungs-Zustandsmaschine gemäß der vorliegenden Erfindung in Interface-Verbindung mit
internen Bussen; und
-
Fig. 5 zeigt ein Blockschaltbild eines PC-Audio-Systems gemäß der
vorliegenden Erfindung, das frequenzkompensierte Wellendiagramm-Daten
ausgibt.
Detaillierte Beschreibung
1. ÜBERBLICK ÜBER DIE PC-AUDIO-SCHALTUNG
-
Die folgende Beschreibung befasst sich mit bevorzugten und alternativen
Ausführungsformen einer PC-Audio-Schaltung, die auf einer monolithischen IC-
Schaltung ausgebildet werden kann. Die PC-Audio-Schaltung ist derart
konzipiert, dass sie in Interface-Verbindung mit einem Host-Computer des Typs mit
einer zentralen Verarbeitungseinheit, einem System-Speicher und einem
System-Bus treten kann und diesen Computer mit einer verbesserten Audio-
Funktion versehen kann. Der grundlegende Unterschied zwischen der PC-
Audio-Schaltung gemäß der vorliegenden Erfindung und herkömmlichen PC-
Audio-Schaltungen besteht darin, dass der Lokal-Speicher hinsichtlich seiner
Größe beträchtlich reduziert ist (z. B. auf 8-32 Kilobytes) und jedes Mal nur
Teile der gesamten Wellendiagramm-Daten speichern kann. Stattdessen
werden sämtliche Wellendiagramm-Daten (z. B. 1-4 Megabytes) in dem System-
Speicher des Host-PC gespeichert und, je nach dem Bedarf der PC-Audio-
Schaltung, stückweise in den Lokal-Speicher der PC-Audio-Schaltung, der auch
als Cache-Speicher bekannt ist, übertragen. Die PC-Audio-Schaltung
verwendet die Daten, um digitale Audio-Signale wie z. B. Musik oder Klangeffekte zu
erzeugen.
-
Wie im Zusammenhang mit dem technischen Hintergrund der Erfindung
erläutert, werden, falls der System-Speicher zum Speichern von Wellendiagramm-
Daten verwendet wird und dadurch die Größe des Lokal-Speichers reduziert
wird, die Gesamtkosten der PC-Audio-Schaltung gesenkt. Die Verwendung des
System-Speichers verursacht jedoch Probleme insofern, als (i) ein
inakzeptabler Prozentanteil an System-Bus-Bandbreite verwendet wird; und (ii) die PC-
Audio-Schaltung die Wellendiagramm-Daten schneller als die maximale
Wartezeit des Host-Computers verarbeitet. Die PC-Audio-Schaltung gemäß der
vorliegenden Erfindung ist mit dem Ziel konzipiert, diese Probleme zu beseitigen.
-
Die typische Rahmen-Rate für Audio beträgt 44,1 KHz. Bei dieser Rahmen-
Rate dauert jeder Rahmen ungefähr 22,7 Mikrosekunden. Somit müssen, falls
eine herkömmliche PC-Audio-Schaltung während eines Rahmens 32 Töne
erzeigt, während dieser kurzen Zeitperiode 32 Daten-Zugriffe auf den Speicher
durchgeführt werden. Dies ist kein Problem, falls die Daten-Zugriffe auf einen
Lokal-Speicher erfolgen. Falls die Anzahl von Zugriffen jedoch auf den System-
Speicher erfolgt, werden die Benutzung von Bus-Bandbreite und die Bus-
Wartezeit ein Problem.
-
Anders als herkömmliche PC-Audio-Systeme verarbeitet die
PC-Audio-Schaltung mehrere Rahmen von Daten-Abtastwerten für einen Ton, bevor sie den
nächsten bezeichneten Ton verarbeitet. Somit können mehrere
Wellendiagramm-Daten-Abtastwerte für einen gegebenen Ton auf einmal aus dem
System-Speicher abgerufen werden und in dem Cache-Speicher verfügbar
gemacht werden, so dass die Gesamtzahl der erforderlichen Zugriffe auf den
Speicher und der benutzte Prozentanteil der System-Bus-Bandbreite reduziert
werden. Das in dieser Weise durchgeführte Verarbeiten der Daten-Abtastwerte
ermöglicht ferner bestimmte parallele Verarbeitungsoperationen.
Beispielsweise können, während mehrere Daten-Abtastwerte für aktive Töne verarbeitet
werden, andere Gruppen von Daten-Abtastwerten aus dem System-Speicher
aufgerufen werden und zum Verarbeiten in dem Cache-Speicher der PC-Audio-
Schaltung verfügbar gemacht werden. Die gewährleistet eine kontinuierliche
Zufuhr von Daten und reduziert die Probleme im Zusammenhang mit der Bus-
Zugriffs-Wartezeit.
-
Da die PC-Audio-Schaltung gemäß der vorliegenden Erfindung mehrere
Wellendiagramm-Daten-Abtastwerte auf einmal aufruft, ist es vorzuziehen, dass
die Daten-Abtastwerte eines Tons zusammen in einem Block in dem System-
Speicher organisiert werden. Falls eine zusammenhängende Reihe von Daten-
Abtastwerten erforderlich ist, kann auf diese mittels des Seiten-Modus des
System-Speichers zugegriffen werden, und zwar mit Inkrementierung durch
die Daten-Abtastwerte in dem Block. Falls der Bus zwischen dem System-
Speicher und der PC-Audio-Schaltung ein PCI-Bus ist (d. h. ein Bus mit höherer
Leistung), können Daten, auf die durch den Seiten-Modus zugegriffen wird, im
Burst-Modus (d. h. mit einer schnelleren Rate) an die PC-Audio-Schaltung
übertragen werden. Die Verwendung des Burst-Modus reduziert die maximale
Bus-Wartezeit und den benutzten Prozentanteil an Bandbreite.
II. ARCHITEKTUR DER PC-AUDIO-SCHALTUNG
-
Fig. 1 zeigt die bevorzugte Architektur für die PC-Audio-Schaltung. Die PC-
Audio-Schaltung 10 enthält einen PCI-Interface-Block 12, einen internen
Adress-Daten-Bus 14, einen Digitalsignalprozessor 16, eine
Ausgangssignalsteuerungs-Zustandsmaschine 18, einen internen Bus-Arbiter 20 und einen
Cache-Speicher 22. Die Daten werden von dem PCI-Bus 24 durch den PCI-
Interface-Block 12 über den internen Bus 14 und in den Cache-Speicher 22
übertragen. Die PC-Audio-Schaltung 10 einschließlich des Cache 22 kann auf
einer monolithischen IC-Schaltung ausgebildet sein. Die in unterbrochener
Linie gezeigte Box in Fig. 1 repräsentiert den Umfang einer derartigen
IC-Schaltung. Alternativ kann der Cache 22 außerhalb der Schaltung angeordnet sein.
-
Der Digitalsignalprozessor (DSP) 16 verarbeitet die Daten in ähnlicher Weise
wie der Wellendiagramm-Synthesizer DSP, der in dem U. S.-Patent Serial No.
08/334,461 beschrieben ist, das hiermit durch Verweis in die vorliegende
Anmeldung einbezogen wird. Anders ausgedrückt, führt der
Digitalsignalprozessor (DSP) 16 gemäß der vorliegenden Erfindung Berechnungen und andere
Verarbeitungsvorgänge durch, um Roh-Wellendiagramm-Daten in digitale
Audio-Signale zu übersetzen, die zur Umsetzung in die gewünschten analogen
Audio-Signale geeignet sind. Der DSP arbeitet auf der Basis in dem ROM-Code
26 gespeicherter Daten und kann vorzugsweise bis zu 32 unabhängige digitale
Audio-Signale oder Töne mit einer Rahmen-Rate von 44,1 KHz erzeugen.
Anders jedoch als der in der oben angeführten Patentanmeldung beschriebene
Wellendiagramm-Synthesizer verarbeitet der DSP gemäß der vorliegenden
Er
findung mehrere Rahmen von Wellendiagramm-Daten von Ton zu Ton statt
eines Daten-Abtastwertes pro Ton pro Rahmen. Die Implementierungs-Details
für den DSP 16 liegen im Bereich der Fertigkeiten der Durchschnittsfachleute
auf dem Gebiet.
-
Die von dem DSP 16 für jeden Ton erzeugten digitalen Audio-Signale werden
in dem Cache-Speicher 22 akkumuliert, oder sie können in einem separaten
Cache-Speicher akkumuliert werden, bis sie bereit zur Ausgabe an den Port 28
zu einem externen Digital-/Analog-Konverter (DAC) sind. Die
Ausgangssignalsteuerungs-Zustandsmaschine (OCSM) 18 ist zuständig für das Steuern der
Übertragung der akkumulierten Daten aus dem Cache 22 zu dem externen
DAC mit der Abtast-Rate von 44,1 KHz. Die OSCM 18 verwendet ihren eigenen
16,9344-MHz-Taktgeber 30, um die Synchronsiation mit der Abtastrate zu
gewährleisten. Der interne Bus-Arbiter (IBA) 20 ist zuständig für das Lenken des
Verkehrs zwischen den verschiedenen Blöcken, die auf den internen Bus 14
zugreifen, einschließlich des OCSM 18, des Cache 22, des PCI-Interface-Blocks
(PCI-I/F-Block) 12 und des DSP 16. Der interne Bus 14 arbeitet mit 33 MHz,
zusammen mit dem Großteil der Logik, auf der Basis eines Taktgebers 32, der
als Teil des PCI-Standards vorgesehen ist.
-
Interner Bus. Der interne Bus 14 weist einen 32-Bit-Daten-Bus und einen
16-Bit-Daten-Bus auf. Die Adress-Übersicht für den internen Bus ist wie folgt
beschaffen:
-
PCI-Bus. Dem PCI-Bus ist durch eine standardmäßige PCI-Steck- und Spiel-
Schaltung ein Block von 256 I/O- (byte-breiten) Adressen zugeordnet. Diese
Adressen werden von dem zentralen Prozessor des Systems wie folgt
verwendet:
-
Wellendiagramm-Cache-RAM. Der Cache-Speicher 22 ist vorzugsweise ein
kostengünstiges SRAM mit einer Kapazität von ungefähr 8 bis 32 Kilobytes.
Der verfügbare Speicherplatz in dem Cache 22 kann der
Abtastwerte-Speicherung, der Akkumulator-Speicherung und der allgemeinen Speicherung für
den DSP 16 zugewiesen werden. Fig. 2 zeigt die Weise, in der der verfügbare
Speicherraum zweckmäßig zwischen der Abtastwerte-Speicherung und der
Ackumulator-Speicherung aufgeteilt werden kann. Die Daten-Abtastwerte
können in den Daten-Schlangen "A" und "B" gespeichert werden, während die von
dem DSP 16 erzeugten digitalen Audio-Signale (die erzeugten Daten-
Abtastwerte) in den Akkumulator-Schlangen "A" und "B" gespeichert werden
können; siehe Fig. 2. Die Daten-Schlangen A und B können jeweils bis zu 64
16-Bit-Daten für jeden der 32 Töne speichern. Die Akkumulator-Schlangen A
und B können jeweils die erzeugten Daten-Abtastwerte für bis zu 32 Töne
ackumulieren. Die erzeugten Daten-Abtastwerte werden zusammen in der
Schlange A oder B als ein Set von 16-Bit-Daten-Abtastwerte akkumuliert. Es
können bis zu 64 Daten-Abtastwerte in einem Set vorhanden sein.
-
Die Daten-Schlangen A und B können zusammen bis zu 8 Kilobytes speichern,
während die Akkumulator-Schlangen A und B bis zu 256 Bytes speichern
können. In dem Cache 22 kann zusätzlicher Speicherraum für allgemeine DSP-
Speicherung vorgesehen sein.
-
Vorzugsweise wird eine der beiden Daten-Schlangen für einen Ton zum
Speichern von Daten-Abtastwerten verwendet, wenn diese aus dem System-
Speicher aufgerufen werden, während die andere Daten-Schlange Daten an
den DSP 16 ausgibt. Falls somit die Daten-Schlange A Daten-Abtastwerte an
den DSP 16 ausgibt, dann speichert die Daten-Schlange B aus dem System-
Speicher aufgerufene Daten-Abtastwerte. Die Daten-Schlange B wird mit dem
nächsten Set von Daten-Abtastwerten gefüllt, die von dem DSP 16 verarbeitet
werden sollen, und sie muss gefüllt sein, bevor der DSP das Verarbeiten der
Daten-Abtastwerte in der Daten-Schlange A abschließt. Andernfalls entstünden
unerwünschte Lücken in den erzeugten digitalen Audio-Signalen. Wenn
sämtliche der Daten-Abtastwerte in der Daten-Schlange A verarbeitet worden sind,
werden die Daten-Schlangen A und B getoggelt, und der DSP 16 verarbeitet
die in der Daten-Schlange B gespeicherten Daten-Abtastwerte, und die aus
dem System-Speicher aufgerufenen Daten-Abtastwerte werden in der Daten-
Schlange A gespeichert. Dieser Vorgang wird fortgesetzt, solange der DSP 16
Daten-Abtastwerte verarbeitet.
-
In ähnlicher Weise wird eine der Akkumulator-Schlangen verwendet, um
ackumulierte Daten-Abtastwerte an einen externen DAC auszugeben, während
der andere Akkumulator die von dem DSP 16 erzeugten Daten-Abtastwerte
akkumuliert. Falls somit die Akkumulator-Schlange A akkumulierte Daten-
Abtastwerte ausgibt, dann akkumuliert die Akkumulator-Schlange B Daten-
Abtastwerte. Die erzeugten Daten-Abtastwerte für sämtliche der aktiven Töne
müssen in der Akkumulator-Schlange B akkumuliert sein, bevor sämtliche der
Daten-Abtastwerte in der Akkumulator-Schlange A zu dem externen DAC
übertragen worden sind. Andernfalls entstehen Lücken in dem Analogsignal.
-
Wenn sämtliche der Daten-Abtastwerte in der Akkumulator-Schlange A an den
externen DAC übertragen worden sind, toggeln die Akkumulator-Schlangen A
und B, und die in der Daten-Schlange B akkumulierten Daten-Abtastwerte
werden zu dem externen DAC übertragen, und die erzeugten
Daten-Abtastwerte werden in der Daten-Schlange A akkumuliert. Die Gesamt-Arbeitsweise
gemäß der vorliegenden Erfindung wird im folgenden eingehender erläutert.
-
Eine für die vorliegende Erfindung geeignete Adress-Übersicht für einen
Wellendiagramm-Cache ist wie folgt beschaffen:
-
Adress-Bereich (hexadezimal) Daten
-
0000 bis 001F Cache-Schlange "A" für Ton 0 von 31
-
0020 bis 003F Cache-Schlange "B" für Ton 0 von 31
-
0040 bis 005F Cache-Schlange "A" für Ton 1 von 31
-
0060 bis 007F Cache-Schlange "B" für Ton 1 von 31
-
0080 bis 07BF Caches für Ton 1 bis Ton 30
-
07C0 bis 07DF Cache-Schlange "A" für Ton 31 von 31
-
07E0 bis 07FF Cache-Schlange "B" für Ton 31 von 31
-
0800 bis 083F Akkumulator-Cache "A"
-
0840 bis 087F Akkumulator-Cache "B"
-
0880 bis 1FFF Allgemeine Speicherung für den DSP
-
Das PCI-Interface. Fig. 3 zeigt ein Blockschaltbild eines PCI-Interface-Block
12. Der PCI-Interface-Block enthält eine PCI-Interface-Steuereinrichtung 34,
Puffer 36 und 38, ein Intern-Bus-Adress-Register 40 und
PCI-I/F-Block-Register 42. Wie gezeigt, ist die PCI-Steuereinrichtung 34 mit dem PCI-Adress-
Bus, den Puffern 36 und 38, dem Intern-Bus-Adress-Register 40 und den PCI-
I/F-Block-Registern 42 verbunden. Der Puffer 36 ist mit dem PCI-Daten-Bus,
der PCI-Steuereinrichtung, dem Intern-Bus-Adress-Register 40 und dem
internen Daten-Bus verbunden, während der Puffer 38 mit dem PCI-Adress-Bus,
der PCI-Steuereinrichtung 34 und den PCI-I/F-Block-Registern 42 verbunden
ist. Das Intern-Bus-Adress-Register 40 ist mit der PCI-Steuereinrichtung 34,
dem internen Daten-Bus und dem Puffer 36 verbunden. Schließlich sind die
PCI-I/F-Block-Register 42 mit dem Puffer 38, der PCI-Steuereinrichtung 34
und den internen Daten- und Adress-Bussen verbunden.
-
Die PCI-I/F-Block-Register 42 enthalten Status- und Adress-Information, die
angibt, bei für welchen Ton es erforderlich ist, zusätzliche Daten-Abtastwerte
in dem Cache zu speichern, und die die Adresse in dem Systemspeicher
angibt, mittels derer die Daten-Abtastwerte erhalten werden. Eine detaillierte
Beschreibung dieser Register ist in dem obigen Adress-Diagramm für den
internen Bus aufgeführt. Das Intern-Adress-Bus-Register 40 wird von der
zentralen Verarbeitungseinrichtung des Systems verwendet, um auf die
Register der PC-Audio-Schaltung auf dem internen Bus zuzugreifen.
Beispielsweise kann es geschehen, dass die zentrale Verarbeitungseinrichtung auf die
PCI-I/F-Block-Register zugreifen muss, um Systemspeicher-Adressen zu
schreiben, die Wellendiagramm-Daten-Speicherstellen angeben. Das Intern-
Bus-Register 40 speichert auch die Adressen des Cache 22, an denen die
Wellendiagramm-Daten au dem Systemspeicher gespeichert sind. Wie in der
obigen I/O-Adress-Tabelle angegeben, greift die zentrale
Verarbeitungseinrichtung auf ein Register auf dem internen Bus zu, indem sie dessen
Adresse über den Puffer 36 in das Intern-Bus-Adress-Register 40 schreibt.
Lese- oder Schreib-Zugriffe auf ein bestimmtes Register erfolgen über den in
der obigen Tabelle angegebenen Port.
-
Auf der Basis der in den PCI-I/W-Block-Registern 42 gespeicherten Status-
Information detektiert die PCI-Interface-Steuereinrichtung, wann es
erforderlich ist, den Cache 22 mit Daten-Abtastwerten zu aktualisieren, und initiiert
Bus-Master-Requests. Unter Steuerung durch die
PCI-Interface-Steuereinrichtung 34 werden die Adressen in dem Systemspeicher, aus der die Daten-
Abtastwerte aufgerufen werden sollen, von den PCI-Block-Interface-Registern
42 durch den Puffer 38 an den PCI-Adress-Bus übermittelt. Die aufgerufenen
Daten-Abtastwerte aus dem Systemspeicher werden auf dem PCI-Daten-Bus
an den Puffer 36 ausgegeben. Unter Steuerung durch die
PCI-Interface-Steuereinrichtung 34 werden die Daten-Abtastwerte in dem Puffer 36 auf dem
in
ternen Daten-Bus an den Cache 22 ausgegeben. Die Adressen in dem Cache
22 zum Speichern der Daten-Abtastwerte werden in dem Intern-Bus-Adress-
Register 40 gehalten und an den internen Adress-Bus übermittelt.
Vorzugsweise kann der PCI-Interface-Block 12 Daten-Abtastwerte für mehr als einen
aktiven Ton gleichzeitig anfordern.
-
Die PCI-Steuereinrichtung 34 errechnet die Cache-Adresse zum Speichern der
Daten-Abtastwerte, indem sie bestimmt, welcher Ton gerade aktualisiert wird,
ob die Schlange A oder B aktualisiert wird, und welches 32-Bit-Wort der
Schlange aktualisiert wird. Die PCI-Steuereinrichtung 34 enthält
zweiunddreißig 5-Bit-Zähler - einen für jeden Ton-, um zu bestimmen, welcher Abtastwert
in der Schlange der nächste ist, der durch den PCI-Interface-Block 12
aktualisiert werden soll. Die PCI-Interface-Block-Register 42 enthalten
zweiunddreißig 1-Bit-Toggle-Register - eines für jeden Ton -, um anzugeben, welche
Schlange jeder Ton gerade verwendet. Diese Register toggeln jedes Mal, wenn
eine Schlange durch den PCI-Interface-Block 12 gefüllt wird. Die
PCI-Steuereinrichtung 34 speichert die berechneten Cache-Adressen in dem Intern-Bus-
Adress-Register 40 und steuert, wann sie auf den internen Adress-Bus
ausgegeben werden. Die Implementierungs-Details des PCI-Interface-Blocks 12
liegen im Bereich der Fertigkeiten der Durchschnittsfachleute auf dem Gebiet.
-
Die Ausgangssignalsteuerungs-Zustandsmaschine. Fig. 4 zeigt ein
Blockschaltbild des OCSM 18. Wie gezeigt, enthält der OCSM 18 einen Steuer-Block
46 mit Puffer, einen Adress-Dekodier- und Steuer-Block 48, einen 7-Bit-Zähler
50 und einen 22,66-Mikrosekunden-Zeitgeber 54. Wie gezeigt, ist der Steuer-
Block 46 mit den internen Adress- und Daten-Bussen, dem Adress-Dekodier-
und Steuer-Block 48, dem 7-Bit-Zähler 50 und dem FIFO 52 verbunden. Der
Address-Dekodier- und Steuer-Block 48 ist mit dem internen Adress-Bus, dem
Steuer-Block 46, dem 7-Bit-Zähler 50 und dem Zeitgeber 54 verbunden. Der
7-Bit-Zähler 50 ist mit dem Adress-Dekodier- und Steuer-Block 48, dem
Steuer-Block 46 und dem FIFO 52 verbunden. Der Sieben-Bit-Zähler ist in dem
obigen Adress-Diagramm für den internen Bus beschrieben und wird als
OCSM-Abastwert-Zählregister bezeichnet. Das FIFO 52 kann zwei Daten-
Abtastwerte speichern, eines an einer oberen Stelle und das andere an einer
unteren Stelle, und ist mit dem Steuer-Block 46, dem 7-Bit-Zähler 50, dem
Zeitgeber 54 und einem externen DAC verbunden.
-
Der DSP 16 aktiviert den OCSM 18, indem er in dessen Steuerregister
schreibt. Nachdem der OCSM 18 aktiviert ist, werden zwei Daten-Abtastwerte
unter Steuerung des Steuer-Blocks 46 auf dem internen Daten-Bus aus einer
Akkumulator-Schlange im Cache 22 durch den Puffer im Steuer-Block 46 in
das FIFO 52 übertragen. Jede 22,66 Mikrosekunden, wie durch den Zeitgeber
54 angegeben, verschiebt das FIFO 52 den Daten-Abtastwert an der unteren
Stelle zu der oberen Stelle und ermöglicht somit, dass dieser an den externen
DAC ausgegeben wird. Der zuvor an der oberen Stelle gespeicherte Daten-
Abtastwert wird beseitigt. Gleichzeitig wird ein weiterer Daten-Abtastwert aus
dem Cache 22 aufgerufen und an der unteren Stelle des FIFO 52 gespeichert,
und unter Steuerung des Adress-Dekodier- und Steuer-Blocks 48 wird der 7-
Bit-Zähler 50 inkrementiert. Der Adress-Dekodier- und Steuer-Block 48
berechnet die Adressen der aus dem Cache 22 aufzurufenden Daten-Abtastwerte
aus dem 7-Bit-Zähler 50 und der Cache-Adress-Information, die auf dem
internen Adress-Bus zugeführt wird. Diese berechneten Adressen werden an den
Steuer-Block ausgegeben, wo sie verwendet werden, um bestimmte Daten-
Abtastwerte aus dem Cache 22 anzufordern. Die Implementierungs-Details
des OCSM 18 liegen im Bereich der Fertigkeiten der Durchschnittsfachleute auf
dem Gebiet. Der DSP 16 kann das Bit 7 des Zählers 50 beobachten, um zu
bestimmen, wann es Zeit ist, das Akkumulieren der nächsten Gruppe von
Daten-Abtastwerten zu starten.
-
Der Intern-Bus-Arbiter. Der Intern-Bus-Arbiter 29 ist ein einfacher Arbiter
mit einer festen Prioritätenfolge für Bus-Requests aus: (i) dem DSP 16
(niedrigste Priorität); (ii) dem PCI-Bus-Interface-Block 12 (mittlere Priorität); und
(iii) dem OCSM 18 (höchste Priorität). Der Arbiter 20 gewährt der
anfordernden Einrichtung mit der höchsten Priorität einen Bus-Zugriff, wobei an diesem
Punkt diese Einrichtung frei ist, den Adress-Bus und entweder das READ- oder
das WRITE-Signal zu steuern. Falls der Zugriff ein Lese-Zugriff ist, dann erfasst
oder benutzt die Prioritäts-Einrichtung die Daten aus dem Daten-Bus; falls der
Zugriff ein Schreib-Zugriff ist, dann steuert die Prioritäts-Einrichtung den
Daten-Bus. Die Implementierungs-Details des Arbiters 20 liegen im Bereich der
Fertigkeiten der Durchschnittsfachleute auf dem Gebiet.
III. ARBEITSWEISE DES PC-AUDIO-SYSTEMS
-
Beim Hochfahren der bevorzugten Ausführungsform der PC-Audio-Schaltung
10 werden für jeden aktiven Ton 128 Daten-Abtastwerte in den Cache 22
geladen (64 Daten-Abtastwerte in jede der Daten-Schlangen A und B). Unter der
Annahme, dass 32 aktive Töne vorliegen, ergibt sich im schlimmsten Fall für
den erforderlichen Speicher:
-
(32 Töne)(128 Abastwerte/Ton)(2 Bytes/Abtastwert) = 8 Kilobytes
-
Zusätzlich verlangt der Cache 22, dass die Akkumulator-Schlangen A und B
jeweils eine Kapazität von 64 Daten = Abtastwerten haben.
-
Somit beträgt der zusätzliche erforderliche Speicherraum:
-
(2 Schlangen)(64 Abtastwerte/Schlange)(2 Bytes/Abastwert) = 256 Bytes
-
Wie oben erwähnt, kann zusätzlicher Speicherraum für allgemeine DSP-
Operationen vorgesehen sein.
-
Nachdem die Daten-Schlangen A und B mit Daten geladen worden sind,
verarbeitet der DSP 16 die Daten-Abtastwerte in einer der Daten-Schlangen für den
ersten aktiven Ton (z. B. den Ton 0). Die andere Daten-Schlange ist derzeit
inaktiv. Dann verarbeitet der DSP 16 die Daten-Abtastwerte für den nächsten
bezeichneten aktiven Ton (z. B. den Ton 1). Wenn der DSP 16 diese
Daten-Abtastwerte verarbeitet, werden die gerade von dem DSP 16 erzeugten Daten-
Abtastwerte in einer der Akkumulator-Schlangen akkumuliert. Dieser Vorgang
wird fortgesetzt, bis sämtliche aktiven Töne verarbeitet worden sind, und dann
toggeln die Akkumulator-Schlangen, und die andere Akkumulator-Schlange
akkumuliert die erzeugten Daten-Abtastwerte, während die akkumulierten
Daten-Abtastwerte in der ersten Akkumulator-Schlange an den externen DAC
ausgegeben werden können.
-
Ferner übermittelt, nachdem die Daten-Abtastwerte für jeden aktiven Ton in
der ersten Daten-Schlange verarbeitet worden sind, der PCI-Interface-Block
12 über den PCI-Bus Requests für zusätzliche Daten-Abtastwerte aus dem
Systemspeicher. Die aus dem Systemspeicher aufgerufenen Daten-Abtasterte
werden in der ersten Daten-Schlange gespeichert, wodurch die gerade
verarbeiteten Daten-Abtastwerte überschrieben werden. Während diese
zusätzlichen Daten-Abtastwerte aufgerufen werden, verarbeitet der DSP 16 die
Daten-Abtastwerte in der anderen Schlange. Dann toggeln die Daten-Schlangen,
und der Vorgang wird fortgesetzt, wobei es möglich ist, bis zu 64 Daten-
Abtastwerte auf einmal zu verarbeiten.
-
Falls der DSP 16 die Daten-Abtastwerte mit der gleichen Frequenz wie der
während der Analog-/Digital-Umsetzung (Aufzeichnen) des
Original-Audio-Signals verwendeten Abtastfrequenz verarbeitet, dann wird, wenn die von dem
DSP erzeugten Audio-Signale auf Analog umgesetzt und gespielt werden, das
resultierende Audio-Signal genau so klingen (d. h. die gleiche Frequenz haben)
wie das ursprüngliche Audio-Signal, das zum Erzeugen der Daten-Abtastwerte
verwendet wird. Wenn die Frequenz des gerade gespielten Audio-Signals die
gleiche ist wie die Aufzeichnungs-Frequenz, dann ist sein Frequenz-Verhältnis
(Fc) gleich 1. Falls beispielsweise eine mittlere C-Note (mittleres C = 440 Hz)
eines Klaviers aufgezeichnet wird und Fc = 1, dann hat das aufgezeichnete
oder gespielte Audio-Signal die gleiche Frequenz und kling gleich wie das
aufgezeichnete Signal. Falls Fc > 1 ist, dann haben die erzeugten Audio-Signale
einen höheren Pitch. Bei Fc = 4 ist das erzeugte Audio-Signal zwei Oktaven
höher als die Abtastfrequenz des aufgezeichneten Signals.
-
Falls für jeden der aktiven Töne Fc = 1 ist, dann ist die maximal zulässige PCI-
Bus-Wartezeit gleich der Zeit, die benötigt wird, um 64 Daten-Rahmen mit der
44,1-KHz-Rahmen-Rate zu verarbeiten.
-
64 Rahmen · 1/44100 Sekunden = 1,45 Millisekunden
-
Falls jedoch für einen oder mehr aktive Töne Fc > 1 ist, dann wird die maximal
zulässige PCI-Bus-Wartezeit reduziert, da der DSP 16 mehr als einen Daten-
Abtastwert pro Rahmen pro Ton verarbeitet. Anders ausgedrückt, werden die
Daten-Abtastwerte in einer Daten-Schlange für einen bestimmten Ton
schneller aufgebraucht als im Falle von Fc = 1. Beispielsweise überspringt bei Fc = 2
der DSP 16 jeden zweiten Datenwert in der Daten-Schlange. Wenn Fc größer
als ungefähr gleich 2,0 ist, kann die Reduzierung der maximal zulässigen Bus-
Wartezeit zum Problem werden.
-
Das Wartezeit-Problem bei Fc > 2 kann vermieden werden, indem veranlasst
wird, dass die PC-Audio-Schaltung 10 nur die Daten-Abtastwerte aufruft, die
verarbeitet werden sollen, und nicht die Daten-Abtastwerte, die von dem DSP
16 übersprungen werden. Somit werden sämtliche Daten-Abtastwerte, die
aufgerufen und in einer Daten-Schlange des Cache 22 gespeichert werden,
verarbeitet. Dieses Merkmal wird implementiert, indem in dem PCI-Interface-
Block 12 eine Einrichtung zum Zugreifen auf die Fc-Werte für die aktiven Töne
vorgesehen ist, und dann die nächste System-Speicher-Adresse zum Aufrufen
der Daten-Abtastwerte für einen gegebenen Ton auf der Basis der derzeitigen
System-Speicher-Adresse und des Fc-Wertes berechnet wird. Falls
bespielsweise für einen gegebenen aktiven Ton Fc = 4 ist, dann gilt: nächste
Systemspeicher-Adresse = aktuelle Adresse + 4. Die Implementierungs-Details dieses
Merkmals liegen im Bereich der Fertigkeiten der Durchschnittsfachleute auf
dem Gebiet.
-
Indem gewählte Abtastwerte für jeden aktiven Ton aufgerufen werden, wenn
Fc > 1, wird die verfügbare PCI-Bandbreite reduziert, da der Burst-Modus nicht
verwendet werden kann, um die Daten-Abtastwerte zu übertragen. Dennoch
kann erwartet werden, dass der Prozentanteil der benutzten Bandbreite auch
ohne die Verwendung des Burst-Modus generell akzeptabel ist.
-
Wenn sich der PCI-Bus im Burst-Modus befindet, arbeitet er typischerweise bei
60 ns/32 Bits, und die erforderliche Bandbreite beträgt: = 4,2%.
-
(Anmerkung: 2 Töne = 32 Bits). Eine Bandbreiten-Benutzung von 4,2% ist
sehr akzeptabel. Falls sich der PCI-Bus nicht in einem Burst-Modus befindet,
arbeitet er typischerweise viermal langsamer, und die Bandbreiten-Benutzung
beträgt 17%. Eine Bandbreiten-Benutzung von 17% kann akzeptabel sein, ist
jedoch weniger wünschenswert und vergrößert das Risiko, dass ein
übermäßiger Anteil der PCI-Bus-Bandbreite verwendet wird.
IV. REDUZIEREN DES BEDARFS AN PCI-BUS-BANDBREITE DURCH ERZEU-
GEN FREQUENZKOMPENSIERTER WELLENDIAGRAMM-DATEN
-
Wie oben erläutert, können, wenn für einen oder mehrere aktive Töne F&sub2; > 2
ist, Bus-Wartezeit-Probleme auftreten, da der PSP 16 Daten-Abtastwerte
überspringt und Daten-Abtastwerte schneller verbraucht als in dem Fall, dass Fc =
1 ist. Die Bus-Wartezeit-Probleme können vermieden werden, indem
veranlasst wird, dass die PC-Audio-Schaltung 10 nur die Daten-Abtastwerte aufruft,
die verarbeitet werden, und nicht die Daten-Abtastwerte, die übersprungen
werden. Wenn jedoch nur gewählte Daten-Abtastwerte aus dem
Systemspeicher aufgerufen werden, kann der Burst-Modus nicht verwendet werden, und
dies vergrößert den Prozentanteil der benutzten PCI-Bus-Bandbreite. Somit
enthält gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung
das PC-Audio-System Treiber-Software, die die Erstellung
frequenzkompensierter Dateien oder Patches von Wellendiagramm-Daten erleichtert, welche in
dem System-Speicher gespeichert werden und im Burst-Modus an den Cache-
Speicher 22 übertragen werden können, so dass der PCI-Bus-Bandbreiten-
Bedarf reduziert wird. Die frequenzkompensierten Dateien oder Patches
enthalten nur die Daten-Abtastwerte, die von dem DSP tatsächlich für einen Ton
mit Fc > 2 verarbeitet werden. Beispielsweise braucht für einen aktiven Ton
mit Fc = 4 der DSP nur jeden vierten Daten-Abtastwert in dem diesem aktiven
Ton zugeordneten Patch (dem "Original-Patch") der Wellendiagramm-Daten zu
verarbeiten. Die Treiber-Software erleichtert die Bildung einer
frequenzkompensierten Version des Original-Patch, die nur jeden vierten Abtastwert
enthält. Die frequenzkompensierte Datei oder das Patch werden in dem System-
Speicher gespeichert und können im Burst-Modus an die PC-Audio-Schaltung
10 übertragen werden, um durch den DSP 16 verarbeitet zu werden.
-
Fig. 5 zeigt ein Blockschaltbild eines PC-Audio-Systems, das
frequenzkompensierte Patches in der oben beschriebenen Weise erzeugen kann. Das PC-Audio-
System enthält eine PC-Audio-Schaltung 10 des oben beschriebenen Typs,
Treiber-Software 62 und eine MIDI- oder eine vergleichbare Datei 64. Die PC-
Audio-Schaltung 10 ist durch den PCI-Bus 24 mit dem Systemspeicher 60
verbunden. Die Datei 64 enthält Parameter, die das Musikstück definieren, oder
andere Audio-Signale, die von der PC-Audio-Schaltung 10 erzeugt werden
sollen. Die Treiber-Software 62 führt die Funktion des Interpretierens der in der
Datei 64 enthaltenen Parameter und des Programmierens des PC-Audio-
Schaltung 10 durch, um die gewünschten Audio-Signale aus den
Wellendiagramm-Daten in dem System-Speicher zu erzeugen. Wie noch erläutert wird,
enthält die Treiber-Software 62 auch Instruktionen, die die Funktion des
Erzeugens frequenzkompensierter Patches für hohe Fc-Töne steuern.
-
Beim Ausführen der Instruktionen in der Treiber-Software 62 führt die
System-CPU die folgenden Schritte aus:
-
Schritt 1: Aufrufen der Parameter für eine Note oder einen Ton in der Datei
64.
-
Schritt 2: Berechen der gewünschten Fc für den Ton aus diesen Parametern
und der diesem Ton zugeordneten Frequenz in den
Wellendiagramm-Daten im Systemspeicher.
-
Schritt 3: Falls Fc > 2,0, Ableiten des frequenzkompensierten Patches aus dem
Patch der im Systemspeicher gespeicherten Wellendiagramm-Daten,
das dem Ton zugeordnet ist. Das frequenzkompensierten Patch wird
in dem Systemspeicher gespeichert.
-
In den Schritten 1 und 2 bestimmt die System-CPU für einen gegebenen Ton
in der Datei 64, ob der Ton mit einer höheren Frequenz gespielt werden soll
als der Frequenz der für diesen Ton vorhandenen Frequenz der
Wellendiagramm-Daten im Systemspeicher. Das Verhältnis zwischen der gewünschten
Frequenz und der Frequenz der Daten im Systemspeicher bestimmt die Fc für
diesen Ton. Die CPU vergleicht dann den Fc-Wert mit 2,0. Bei Fc > 2,0 leitet
die CPU in der nachstehend beschriebenen Weise ein frequenzkompensiertes
Patch ab. Die Schritte 1-3 werden für jeden Ton in der Datei 64 wiederholt.
-
Ein frequenzkompensiertes Patch kann auf mehrere Arten abgeleitet werden.
Eine Art, die den am wenigsten aufwendigen CPU-Verarbeitungsvorgang
erfordert, besteht im Kopieren oder Transponieren eines Teils der Wellendiagramm-
Daten aus dem Original-Patch für den Ton in eine neue Datei oder ein neues
Patch, die bzw. das in dem System-Speicher gespeichert ist. Der in das neue
Patch transponierte Teil der Daten-Abastwerte basiert auf dem durch die
System-CPU errechneten Fc-Wert. Das frequenzkompensierte Patch hat eine
Fre
quenz, die höher ist als die Frequenz des Original-Patch. Falls beispielsweise
jeder vierte Daten-Abtastwert aus dem Original-Patch kopiert wird, um das
frequenzkompensierte Patch zu erzeugen, hat das frequenzkompensierte Patch
eine Frequenz, die das Vierfache der Frequenz des Original-Patch ist; das
frequenzkompensierte Patch weist eine effektive Frequenz (Feff) auf, die gleich
vier ist.
-
Da Bus-Wartezeit-Probleme dann auftreten, wenn die PC-Audio-Schaltung 10
Audio-Signale mit mehr als dem Zweifachen der Aufzeichnungs-Frequenz eines
Patch von Daten-Abtastwerten erzeugt (Fc > 2), besteht das Ziel beim Ableiten
frequenzkompensierter Patches darin, eine effektive Patch-Frequenz zu
erzeugen, die so hoch, dass die PC-Audio-Schaltung 10 die Frequenz des Patch nicht
mehr als zu verdoppeln braucht, um die gewünschten Audio-Signale zu
erzeugen. Falls beispielsweise Fc = 8, dann sollte die System-CPU jeden vierten
Daten-Abtastwerte in eine neue Datei oder ein neues Patch kopieren. Die neue
Datei oder das neue Patch ist "frequenzkompensiert" und hat eine effektive
Frequenz von vier (Feff = 4). Somit kann die PC-Audio-Schaltung 10 dieses
frequenzkompensierte Patch mit nur dem Doppelten der Frequenz verarbeiten,
um Audio-Signale mit Fc = 8 zu erzeugen. Falls die PC-Audio-Schaltung 10
stattdessen das ursprüngliche Patch von Wellendiagramm-Daten verarbeiten
würde, müsste die PC-Audio-Schaltung die Daten mit dem Achtfachen der
Aufzeichnungs-Frequenz verarbeiten (Fc = 8), um die gewünschten Audio-Signale
zu erzeugen, wodurch Bus-Wartezeit-Probleme verursacht würden.
-
Ein weiterer Weg zum Ableiten frequenzkompensierter Patches besteht darin,
das Original-Patch der Wellendiagramm-Daten digital zu filtern. Das digitale
Filtern erfordert einen größeren CPU-Verarbeitungsaufwand, wird jedoch
gegenüber der oben aufgeführten Technik des Transponieren eines Teils der
Wellendiagramm-Datenin einem Patch bevorzugt. Bei der obigen Technik wird die
Frequenz-Komponente eines Patch von Wellendiagramm-Daten in Rauschen
im frequenzkompensierte Patch übersetzt. Das digitale Filtern beseitigt die
Hochfrequenz-Komponente der Wellendiagramm-Daten und resultiert somit in
einem frequenzkompensierten Patch, das einen saubereren Klang erzeugt. Ein
Beispiel einer Digitalfilterungstechnik besteht darin, den Mittelwert jedes n-ten
Abtastwertes zu nutzen. Somit könnte bei einem Ton mit Fc = 8 die CPU den
Mittelwert jedes vierten Daten-Abtastwertes nehmen, um, das
frequenzkompensierte Patch abzuleiten. Ein weiteres Beispiel, bei dem sogar noch mehr
CPU-Verarbeitungsaufwand benötigt wird, besteht darin, den Mittelwert des
sich bewegenden Mittelwertes zu berechnen.
-
Die System-CPU kann durch die Treiber-Software 62 angewiesen werden zum:
(1) Ableiten sämtlicher der erforderlichen frequenzkompensierte Patches
unmittelbar, bevor die PC-Audio-Schaltung 10 die MIDI-Datei 64 verarbeitet;
oder (2) Ableiten jedes Patch, während die PC-Audio-Schaltung 10 durch die
Datei 64 vorrückt. Die bisherigen Techniken benötigen mehr Speicherraum, da
sämtliche der frequenzkompensierten Patches abgeleitet und in dem System-
Speicher gespeichert werden, bevor sie durch die PC-Audio-Schaltung 10
verarbeitet werden. Die frühere Technik verursacht auch eine Verzögerung, bevor
die MIDI-Datei 64 angespielt werden kann. Die spätere Technik wird
vorgezogen, falls die CPU genug Leistungsvermögen und überschüssige Zeit hat, um
die erforderlichen Berechungen durchzuführen, wenn die Datei 64 verarbeitet
wird.
-
Wenn die PC-Audio-Schaltung 10 ein frequenzkompensiertes Patch
verarbeitet, müssen Einstellungen vorgenommen werden, um die höhere Frequenz des
Patch zu berücksichtigen. Falls beispielsweise für einen Ton Fc = 8 ist und für
ein frequenzkompensierte Patch Feef = 4 ist, dann braucht die
PC-Audio-Schaltung 10 das Patch nur mit der doppelten Frequenz statt mit der achtfachen
Frequenz zu verarbeiten, um digitale Audio-Signale mit Fc = 8 zu erzeugen.
Die Treiber-Software 64 programmiert die PC-Audio-Schaltung 10 zum
Durchführen dieser Einstellungen. Somit wird, falls die PC-Audio-Schaltung 10
ursprünglich so programmiert ist, dass sie digitale Audio-Signale mit Fc = 8
erzeugt, die PC-Audio-Schaltung jedoch ein frequenzkompensiertes Patch mit
Feff = 4 verarbeitet, die PC-Audio-Schaltung dann so programmiert, dass sie
in der digitalen Schaltung das Frequenzverhältnis zum Verarbeiten der Daten
durch vier dividiert, wobei die frequenzkompensierten Dateien vorzugsweise
eine effektive Frequenz haben sollten, bei der es sich um einen Faktor von
zwei handelt.
-
Obwohl die vorstehende Beschreibung sich auf die Verwendung von
frequenzkompensierten Patches zwecks Reduzieren der
PCI-Bus-Bandbreiten-Erfordernisse konzentriert, finden frequenzkompensierte Patches auch Verwendung in
PC-Audio-Systemen, die Wellendiagramm-Daten aus einem Lokal- statt aus
einem System-Speicher enthalten. Wie oben erläutert, werden mittels des
digitalen Filterns von Patches von Wellendiagramm-Daten hohe Frequenzen
herausgefiltert, die zu Rauschen umgesetzt werden, wenn das Patch mit einer
Frequenz abgespielt wird, die höher ist als die Aufzeichnungsfrequenz (z. B. Fc
> 2). Wellendiagramm-Daten, die in einem Lokal-Speicher gespeichert sind
und von einem Wellendiagramm-Synthesizer verwendet werden sollen, um
digitale Audio-Signale mit einem hohen Frequenzverhältnis zu erzeugen,
können mittels der oben beschriebenen Filterungstechniken derart vor-verarbeitet
werden, dass der Synthesizer saubere Audio-Signale erzeugt.
-
Somit ist die vorliegende Erfindung gut geeignet, um die hier erwähnten
Zweckvorgaben zu realisieren und die hier erwähnten Ziele und Vorteile sowie
andere Ziele und Vorteile, die aus der Beschreibung ersichtlich sind, zu
erreichen. Obwohl zu Zwecken der Offenbarung bevorzugte Ausführungsformen der
Erfindung beschrieben worden sind, werden Fachleuten auf dem Gebiet
zahlreiche Änderungen und Modifikationen ersichtlich sein, die an den
Ausführungsformen vorgenommen werden können, und diese fallen unter den
Umfang der folgenden Ansprüche.