DE69702336T2 - Audiosystem für pc mit frequenzkompensierten wellenformdaten - Google Patents

Audiosystem für pc mit frequenzkompensierten wellenformdaten

Info

Publication number
DE69702336T2
DE69702336T2 DE69702336T DE69702336T DE69702336T2 DE 69702336 T2 DE69702336 T2 DE 69702336T2 DE 69702336 T DE69702336 T DE 69702336T DE 69702336 T DE69702336 T DE 69702336T DE 69702336 T2 DE69702336 T2 DE 69702336T2
Authority
DE
Germany
Prior art keywords
data
patch
frequency
data samples
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69702336T
Other languages
English (en)
Other versions
DE69702336D1 (de
Inventor
Larry Hewitt
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Application granted granted Critical
Publication of DE69702336D1 publication Critical patent/DE69702336D1/de
Publication of DE69702336T2 publication Critical patent/DE69702336T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H7/00Instruments in which the tones are synthesised from a data store, e.g. computer organs
    • G10H7/002Instruments in which the tones are synthesised from a data store, e.g. computer organs using a common processing for different operations or calculations, and a set of microinstructions (programme) to control the sequence thereof
    • G10H7/004Instruments in which the tones are synthesised from a data store, e.g. computer organs using a common processing for different operations or calculations, and a set of microinstructions (programme) to control the sequence thereof with one or more auxiliary processor in addition to the main processing unit
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H7/00Instruments in which the tones are synthesised from a data store, e.g. computer organs
    • G10H7/02Instruments in which the tones are synthesised from a data store, e.g. computer organs in which amplitudes at successive sample points of a tone waveform are stored in one or more memories
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2230/00General physical, ergonomic or hardware implementation of electrophonic musical tools or instruments, e.g. shape or architecture
    • G10H2230/025Computing or signal processing architecture features
    • G10H2230/031Use of cache memory for electrophonic musical instrument processes, e.g. for improving processing capabilities or solving interfacing problems
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2240/00Data organisation or data communication aspects, specifically adapted for electrophonic musical tools or instruments
    • G10H2240/171Transmission of musical instrument data, control or status information; Transmission, remote access or control of music data for electrophonic musical instruments
    • G10H2240/201Physical layer or hardware aspects of transmission to or from an electrophonic musical instrument, e.g. voltage levels, bit streams, code words or symbols over a physical link connecting network nodes or instruments
    • G10H2240/275Musical interface to a personal computer PCI bus, "peripheral component interconnect bus"

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Electrophonic Musical Instruments (AREA)

Description

  • 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.

Claims (6)

1. 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 Audio-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.
2. Verfahren nach Anspruch 1, bei dem das frequenzkompensierte Patch eine digital gefilterte Version des ersten Patch von Wellendiagrammdaten aufweist.
3. Verfahren nach Anspruch 1, bei dem das frequenzkompensierte Patch einen Bruchteil von Daten-Abtastwerten aus dem ersten Patch von Wellendiagrammdaten aufweist.
4. Verfahren nach Anspruch 1, 2 oder 3, ferner mit dem Schritt des Berechnen des Verhältnisses der zweiten Tastfrequenz zu der ersten Tastfrequenz, wobei das frequenzkompensierte Patch nur dann abgeleitet wird, falls das Verhältnis größer als ein vorbestimmter Wert ist.
5. Verfahren nach Anspruch 4, bei dem der vorbestimmte Wert größer als ungefähr 2,0 ist.
6. Verfahren nach Anspruch 4, bei dem das Verhältnis der zweiten Tastfrequenz zu der dritten Tastfrequenz des frequenzkompensierten Patch kleiner als oder gleich ungefähr 2,0 ist.
DE69702336T 1996-02-21 1997-02-21 Audiosystem für pc mit frequenzkompensierten wellenformdaten Expired - Fee Related DE69702336T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US60455896A 1996-02-21 1996-02-21
PCT/US1997/002811 WO1997031363A1 (en) 1996-02-21 1997-02-21 Pc audio system with frequency compensated wavetable data

Publications (2)

Publication Number Publication Date
DE69702336D1 DE69702336D1 (de) 2000-07-27
DE69702336T2 true DE69702336T2 (de) 2001-02-15

Family

ID=24420092

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69702336T Expired - Fee Related DE69702336T2 (de) 1996-02-21 1997-02-21 Audiosystem für pc mit frequenzkompensierten wellenformdaten

Country Status (5)

Country Link
EP (1) EP0882286B1 (de)
JP (1) JP2000505566A (de)
KR (1) KR100384685B1 (de)
DE (1) DE69702336T2 (de)
WO (1) WO1997031363A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10219357A1 (de) * 2002-04-30 2003-11-27 Advanced Micro Devices Inc Verbesserter Datentransfer in Audiocodeccontrollern

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6366971B1 (en) 1998-01-09 2002-04-02 Yamaha Corporation Audio system for playback of waveform sample data
US6180864B1 (en) 1998-05-14 2001-01-30 Sony Computer Entertainment Inc. Tone generation device and method, and distribution medium

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6029794A (ja) * 1983-07-29 1985-02-15 ヤマハ株式会社 電子楽器
JP2623942B2 (ja) * 1990-09-05 1997-06-25 ヤマハ株式会社 楽音信号発生装置
GB9103239D0 (en) * 1991-02-15 1991-04-03 Kemp Michael J Improvements relating to data storage techniques

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10219357A1 (de) * 2002-04-30 2003-11-27 Advanced Micro Devices Inc Verbesserter Datentransfer in Audiocodeccontrollern
DE10219357B4 (de) * 2002-04-30 2004-03-11 Advanced Micro Devices, Inc., Sunnyvale Verbesserter Datentransfer in Audiocodeccontrollern
US7689303B2 (en) 2002-04-30 2010-03-30 Advanced Micro Devices, Inc. Data transfer in audio codec controllers

Also Published As

Publication number Publication date
KR19990087044A (ko) 1999-12-15
KR100384685B1 (ko) 2003-08-14
EP0882286A1 (de) 1998-12-09
EP0882286B1 (de) 2000-06-21
JP2000505566A (ja) 2000-05-09
DE69702336D1 (de) 2000-07-27
WO1997031363A1 (en) 1997-08-28

Similar Documents

Publication Publication Date Title
DE69126655T2 (de) Verfahren und Vorrichtung zur gleichzeitig Erzeugung eines Ausgangssignals aus digitalen Audio-Daten und durch MIDI synthesierter Musik
DE69127048T2 (de) Verfahren und Vorrichtung zur Editierung von MIDI-Dateien
DE4313175C2 (de) Verfahren und Vorrichtung zum Aufzeichnen von Audiosignalen in einen Speicher mit direktem Zugriff
DE3786594T2 (de) Speicherverwaltungseinheit für Digitalsignalprozessor.
DE69625631T2 (de) Datenpuffer
DE69730873T2 (de) Software-Tonerzeuger
DE69608292T2 (de) Audio-synthesizer
DE69711518T2 (de) Auf Software basierendes Tonquellensystem und Verfahren zur Erzeugung von akustischen Wellenformdaten
DE602005004685T2 (de) Tonwellenform Synthesizer
DE69615455T2 (de) Musiksystem, Tonerzeuger und Verfahren zur Tonsynthetisierung
DE69613068T2 (de) Digitales Musikinstrument mit Wellenformbearbeitung zur Erzeugung eines Klangeffektes
EP0126962A2 (de) Elektronisches Tastenmusikinstrument und Verfahren zu dessen Betrieb
DE69613950T2 (de) Verfahren und Vorrichtung zur Tonerzeugung
DE69328399T2 (de) Sprachdaten-Verarbeitung
DE3023581C2 (de) Verfahren zur digitalen Hüllkurvensteuerung eines polyphonen Musiksyntheseinstruments und Schaltungsanordnung zur Durchführung des Verfahrens
DE69632351T2 (de) Verfahren und Vorrichtung zur Musiktonerzeugung
DE69625625T2 (de) Verfahren und Vorrichtung zur auf Software basierten Tonwellenformerzeugung
US5847304A (en) PC audio system with frequency compensated wavetable data
DE68914152T2 (de) Automatische Spiel- und Tonerzeugungseinheit in einer automatischen Musikanlage.
DE68927661T2 (de) Adressensteuerschaltung für einen Datenspeicher zur Anwendung in einer Signalverzögerungsschaltung
DE69702336T2 (de) Audiosystem für pc mit frequenzkompensierten wellenformdaten
DE69515569T2 (de) Elektronisches Musikinstrument mit einer Umsetzungsfunktion für Effektdaten
DE69923752T2 (de) Vorrichtung zum Senden und Empfängen von Musikdaten und Speicherungsmittel
DE69209750T2 (de) Vorrichtung zur Datenverarbeitung mit hohen Geschwindigkeit bei Datenübertragung
DE69330080T2 (de) Gerät zur Bearbeitung der Sprache

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee