DE69733038T2 - Software-Tonerzeuger - Google Patents

Software-Tonerzeuger Download PDF

Info

Publication number
DE69733038T2
DE69733038T2 DE69733038T DE69733038T DE69733038T2 DE 69733038 T2 DE69733038 T2 DE 69733038T2 DE 69733038 T DE69733038 T DE 69733038T DE 69733038 T DE69733038 T DE 69733038T DE 69733038 T2 DE69733038 T2 DE 69733038T2
Authority
DE
Germany
Prior art keywords
waveform
processing
waveform samples
buffer
synthesis
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 - Lifetime
Application number
DE69733038T
Other languages
English (en)
Other versions
DE69733038D1 (de
Inventor
Hideo Suzuki
Yoshimasa Isozaki
Hideyuki Masuda
Masahiro Shimizu
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.)
Yamaha Corp
Original Assignee
Yamaha Corp
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 Yamaha Corp filed Critical Yamaha Corp
Application granted granted Critical
Publication of DE69733038D1 publication Critical patent/DE69733038D1/de
Publication of DE69733038T2 publication Critical patent/DE69733038T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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/006Instruments 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 using two or more algorithms of different types to generate tones, e.g. according to tone color or to processor workload
    • 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
    • G10H2210/00Aspects or methods of musical processing having intrinsic musical character, i.e. involving musical theory or musical parameters or relying on musical knowledge, as applied in electrophonic musical tools or instruments
    • G10H2210/155Musical effects
    • G10H2210/265Acoustic effect simulation, i.e. volume, spatial, resonance or reverberation effects added to a musical sound, usually by appropriate filtering or delays
    • G10H2210/281Reverberation or echo
    • G10H2210/291Reverberator using both direct, i.e. dry, and indirect, i.e. wet, signals or waveforms, indirect signals having sustained one or more virtual reflections
    • 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
    • G10H2210/00Aspects or methods of musical processing having intrinsic musical character, i.e. involving musical theory or musical parameters or relying on musical knowledge, as applied in electrophonic musical tools or instruments
    • G10H2210/155Musical effects
    • G10H2210/265Acoustic effect simulation, i.e. volume, spatial, resonance or reverberation effects added to a musical sound, usually by appropriate filtering or delays
    • G10H2210/295Spatial effects, musical uses of multiple audio channels, e.g. stereo
    • 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/011Files or data streams containing coded musical information, e.g. for transmission
    • G10H2240/046File format, i.e. specific or non-standard musical file format used in or adapted for electrophonic musical instruments, e.g. in wavetables
    • G10H2240/056MIDI or other note-oriented file format
    • 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/241Telephone transmission, i.e. using twisted pair telephone lines or any type of telephone network
    • 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/281Protocol or standard connector for transmission of analog or digital data to or from an electrophonic musical instrument
    • G10H2240/311MIDI transmission
    • 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
    • G10H2250/00Aspects of algorithms or signal processing methods without intrinsic musical character, yet specifically adapted for or used in electrophonic musical processing
    • G10H2250/055Filters for musical processing or musical effects; Filter responses, filter architecture, filter coefficients or control parameters therefor
    • G10H2250/105Comb filters
    • 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
    • G10H2250/00Aspects of algorithms or signal processing methods without intrinsic musical character, yet specifically adapted for or used in electrophonic musical processing
    • G10H2250/541Details of musical waveform synthesis, i.e. audio waveshape processing from individual wavetable samples, independently of their origin or of the sound they represent
    • G10H2250/571Waveform compression, adapted for music synthesisers, sound banks or wavetables
    • G10H2250/591DPCM [delta pulse code modulation]
    • G10H2250/595ADPCM [adaptive differential pulse code modulation]
    • 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
    • G10H2250/00Aspects of algorithms or signal processing methods without intrinsic musical character, yet specifically adapted for or used in electrophonic musical processing
    • G10H2250/541Details of musical waveform synthesis, i.e. audio waveshape processing from individual wavetable samples, independently of their origin or of the sound they represent
    • G10H2250/621Waveform interpolation

Landscapes

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

Description

  • HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich im allgemeinen auf eine Tonerzeugungsvorrichtung und ein Tonerzeugungsverfahren zur Erzeugung von Musiktönen, bei welchem eine vorgegebene Musikerzeugungs-Software auf einen Computer ausführt wird.
  • Es ist eine Tonerzeugungsvorrichtung bekannt, bei welcher Musiktöne mittels Ausführens einer vorgegebenen Musiktonerzeugungs-Software auf einem Universal-Prozessor, wie beispielsweise einer CPU (Central Processing Unit = zentrale Rechnereinheit), erzeugt werden. Eine solche Vorrichtung wird als eine Software-Tonquelle bezeichnet. Eine je höhere Leistung von dieser Software-Tonquelle neuerdings gefordert wird, desto höher ist Geschwindigkeit der Musiktonverarbeitung, um dieser Anforderung nachzukommen.
  • Neuerdings wurden CPUs vorgeschlagen, die Befehle aufweisen, die jeweils in der Lage sind, eine Vielzahl von arithmetischen Operationen gleichzeitig auszuführen. Diese CPUs enthalten beispielsweise eine von Intel Corporation hergestellte CPU, die einen erweiterten Befehls-Satz, als MMX bezeichnet, aufweist.
  • Bei der herkömmlichen Parallel-Verarbeitung, wie sie bei graphischer Verarbeitung angewendet wird, sind benachbarte Pixels, die jeweils durch einen Byte-Datenwert (acht Bits) repräsentiert werden, in einer Gruppe zusammengefaßt und die Bearbeitungsoperationen für die Vielzahl von gruppierten Pixels werden parallel ausgeführt. Wenn eine Stimmenbearbeitung und eine Tonerzeugungsbearbeitung parallel durchgeführt werden, sind eine Vielzahl von Abtastwerten (die jeweils von 16-Bit-Daten repräsentiert werden), die nacheinander zeitlich aufeinanderfolgen, gruppiert und Amplitudensteuer- und Filterbearbeitung werden für jede Gruppe durchgeführt.
  • Es ist auch möglich, die vorher erwähnten Bearbeitungen unter Verwendung der vorher erwähnten CPU mit einem erweiterten Befehls-Satz, die eine Vielzahl von arithmetischen Rechenoperationen mittels eines einzigen Befehls parallel durchführen kann. In 5 ist ein Blockdiagramm gezeigt, das einen Algorithmus zum Ausführen einer Effektbearbeitung einer Software-Tonquelle darstellt. In 6A ist ein detailliertes Schaltungsschema gezeigt, das eine APn-Schaltung aus 5 darstellt. In 6B ist ein detailliertes Schaltungsschema gezeigt, das eine CFn-Schaltung aus 5 darstellt. Wie in 6A und 6B gezeigt, gibt es Abschnitte, in welchen zwei Teile von Eingabedaten mit einem vorgegebenen Koeffizienten multipliziert werden und die daraus resultierenden Teile von Daten addiert werden. Diese Abschnitte sind beispielsweise (m4, m5, und a5) und (m6, m7 und a6) in 6A und (m9, m10, a7) in 6B. Die arithmetischen Operationen können in diesen Abschnitten mit einem einzigen Befehl ausgeführt werden, wenn eine CPU mit einem erweiterten Befehls-Satz verwendet wird, der zwei Teile von Eingabedaten mit einem vorgegebenen Koeffizienten multiplizieren und die daraus resultierenden Daten addieren kann, wodurch eine Hochgeschwindigkeits-Bearbeitung realisiert wird. Tatsächlich wird eine solche Hochgeschwindigkeit-Bearbeitung jedoch nur durch gut erdachte Rechenoperationen in einem Bearbeitungsalgorithmus realisiert. Dies läßt unvermeidlich Abschnitte zurück, die nicht vollständig parallel bearbeitet werden können, was verhindert, dass die Vorteile der Parallelbearbeitung voll ausgeschöpft werden.
  • Die Bearbeitung der Erzeugung von Musiktonwellenformen enthält eine Bearbeitung zum Erhalten eines aktuellen Wellenformabtastwertes aus einem vorherigen Wellenformabtastwert während des Verlaufs einer Adressenerzeugung, Hüllkurvenerzeugung und eines Filtervorgangs. Genauer gesagt, bei einer Adressenerzeugung, wird eine aktuelle Adresse auf der Grundlage einer Adresse aus einer vorangegangenen Abtastperiode erhalten. Bei einer Hüllkurvenerzeugung wird eine aktuelle Hüllkurve auf der Grundlage eines unmittelbar vorhergehenden Hüllkurvenwertes erhalten. Beim Filtervorgang wird eine Filterberechnung auf der Grundlage von Werten eines vorherigen Wellenformabtastwertes und eines aktuellen Eingabewellenformabtastwertes durchgeführt, um einen Ausgabewellenformabtastwert zu erzeugen und auszugeben. Das Erhalten eines aktuellen Wellenformabtastwertes aus einem vorherigen Wellenformabtastwert erschwert somit, dass die einander benachbarten Wellenformabtastwerte zeitlich parallel bearbeitet werden.
  • Es ist eine Tonerzeugungsvorrichtung bekannt, bei der Töne mittels Ausführen einer vorgegebenen Musiktonerzeugungs-Software mit einem Universal-Prozessor, wie beispielsweise einer CPU, erzeugt werden. Eine solche Vorrichtung wird als eine Software-Tonquelle bezeichnet. Einige Software-Tonquellen verwenden auch einen Software-Effektor, um einen Effekt, wie beispielsweise einen Hall, bei einem erzeugten Musikton zu erzeugen und einen Ton auszugeben, dem ein Effekt hinzugefügt ist. Neuerdings ist es erforderlich, das Spiel von Software-Tonquellen zu verbessern, um eine Vielfalt von Effekten zu schaffen.
  • Eine Software-Tonquelle ist mit einem Bufferbereich zur Wellenformerzeugung versehen, um eine Vielfalt von Abtastwerten zusammengefaßt zu erzeugen, wenn ein Musikton mittels Software synthetisiert wird. 9B zeigt ein Beispiel eines Wellenformerzeugungspufferbereichs. Wie in 9B gezeigt, kennzeichnen Bezugszahlen 1, 2, ..., 128 Speicherbereiche für 128 Sätze von Wellenformabtastwerten, die Zeit-Serien-Daten sind und zeitlich sequentiell angeordnet sind. Ein Satz eines Wellenformabtastwertspeicherbereichs besteht aus DryL, DryR und Rev. DryL bezeichnet einen Speicherbereich für einen Wellenformabtastwert, dem kein Hall der linken Stereo-Seite zugeordnet ist. DryR bezeichnet einen Speicherbereich für einen Wellenformabtastwert, dem keine Hall der rechten Stereo-Seite zugeordnet ist. Rev bezeichnet einen Speicherbereich für einen Wellenformabtastwert, dem ein Hall zugeordnet ist. Die Wellenformabtastwerte werden nämlich in einer überlappten Form mit einer Kombination von DryL, DryR und Rev als eine Einheit behalten. Der Grund dafür ist, dass es im Zusammenhang mit diesen Effekten bequem ist, den Puffer in dieser Reihenfolge auszurichten, wenn Ausgabedaten jedes Kanals bei der Wellenformberechnung geschrieben werden.
  • Eine Software-Tonquelle erzeugt zum Beispiel Wellenformabtastwerte für einen Block (128 Abtastwerte) von allen Kanälen, über welche ein Musikton für jeden Block, welcher ein vorgegebenes Zeitintervall ist, erzeugt wird. Die Software-Tonquelle akkumuliert die erzeugten Wellenformabtastwerte in einem in 9B gezeigten Wellenformerzeugungspuffer und gibt Wellenformdaten aus. Zunächst werden 128 Abtastwerte des ersten Kanals erzeugt und die erzeugten Abtastwerte so gewichtet, dass Werte von DryL, DryR und Rev jedes Abtastwertes jeweils mit vorbestimmten Koeffizienten multipliziert werden. Die gewichteten Abtastwerte werden in dem Wellenformerzeugungspuffer von 9B gespeichert. Dann werden 128 Abtastwerte des zweiten Kanals erzeugt, die erzeugten Abtastwerte werden gewichtet und die gewichteten Abtastwerte werden in dem Wellenformerzeugungspuffer von 9B akkumuliert. Dann werden 128 Abtastwerte des dritten Kanals erzeugt, die erzeugten Abtastwerte werden gewichtet und die gewichteten Abtastwerte werden in dem Wellenformerzeugungspuffer von 9B akkumuliert. Diese Operationen werden für alle Kanäle wiederholt, um Musiktöne zum Erklingen zu Bringen (nachfolgend als vokalisieren bezeichnet). Die erzeugten Wellenformdaten werden zu einem Ton-I/O-Gerät (ein als CODEC bezeichneter LSI zur Durchführung von Eingabe/Ausgabe-Operationen (I/O)-Operationen von Musiktonwellenformdaten) mittels einer durch das System so instruierten DMAC (Direct Memory Access Controller = Direktspeicherzugriffs-Steuereinheit) geführt. Das Ton-I/O-Gerät führt eine Digital/Analog-Konvertierung an den empfangenen Wellenformdaten aus und vokalisiert die konvertierten Daten durch ein Tonsystem.
  • Die Software-Tonquelle ist erforderlich, um eine Vielfalt von Effekten zu schaffen. Ein Problem ist jedoch, dass die Sequenz der Berechnungen (oder das Verbindung-Verhältnis zwischen Effektoren) zum Erzeugen einer Vielzahl von Effekten nicht dynamisch geändert werden kann.
  • Einige Prozessoren, die für Software-Tonquellen verwendet werden, haben einen internen oder externen Cache-Speicher. Eine Datenstruktur des Wellenformerzeugungspuffers, wie sie in 9B bezeigt ist, ruft jedoch einen Cache-Fehler bei der Wellenformerzeugung hervor, insbesondere bei einer Berechnung durch einen Software-Effektor. Beispielsweise in dem Beispiel von 9B führt der Software-Effektor zur Berechnung des Halls eine Berechnung durch, indem Rev von 128 Abtastwerten, die intermittierend in einer überlappenden Weise gespeichert sind, genommen wird, was oft einen Cache-Fehler zur Folge hat. Wenn der zugeordnete Effekt nur Hall ist, wird nicht so viel Verwaltungsaufwand verursacht. Wenn die Anzahl der zugeordneten Effekte jedoch ansteigt, steigt die Wahrscheinlichkeit eines Cache-Fehler besonders an. Wenn beispielsweise drei Arten von Effekten (Hall, Chorus und Variation) zugeordnet sind und sieben Ausgabesysteme vorhanden sind, ist die Datenstruktur von 9B erweitert auf DryL, DryR, Rev, ChorusL, ChorusR, VariationL und VariationR, die als eine Einheit, die für 128 Abtastwerte in dem Wellenformerzeugungspuffer angeordnet ist, behandelt werden. In diesem Fall führt der Effektor eine Berechnungsbearbeitung in der folgenden Reihenfolge aus:
    • (1) Eine Berechnung für Variation wird ausgeführt durch Sammeln von VariationL und VariationR für 128 Abtastwerte;
    • (2) Eine Berechnung für Chorus wird ausgeführt durch Sammeln von ChorusL und ChorusR für 128 Abtastwerte; und
    • (3) Eine Berechnung für Hall wird ausgeführt durch Sammeln von Rev für 128 Abtastwerte.
  • Ein Zugriff zu den Datenbereichen, die intermittierend in dem Wellenformerzeugungspuffer angeordnet sind, muß daher häufig gemacht werden, wobei die Wahrscheinlichkeit eines Cache-Fehlers steigt und die Bearbeitungseffizienz ernsthaft herabgesetzt wird.
  • Eine herkömmliche Musikvorrichtung besteht im allgemeinen aus einer MIDI (Musical Instrument Digital Interface = digitale Schnittstelle für Musikinstrumente), einem Spielinformationsabschnitt, in welchen eine Spielinformation durch eine Tastatur oder einen Sequenzer eingegeben wird, einer Tonquelle zur Erzeugung von Musiktonwellenformen und einer zentralen Rechnereinheit (CPU) zur Steuerung der Tonquelle entsprechend der eingegebenen Spielinformation. Die CPU führt eine Tonquellen-Treiberbearbeitung aus, wie beispielsweise eine Kanalzuweisung und Parameterkonvertierung entsprechend der eingegebenen Spielinformation. Die CPU liefert zusätzlich einen konvertierten Parameter und einen Startbefehl zum Erklingen lassen (Ton-EIN-Befehl) an einen zugewiesenen Kanal in der Tonquelle. Die Tonquelle erzeugt Musiktonwellenformen auf der Grundlage der gelieferten Parameter. Für die Tonquelle wird eine Hardware verwendet, wie beispielsweise eine elektronische Schaltung. Die vorher erwähnte herkömmliche Konfiguration stellt unvermeidlich der Musiktongenerator dar, der den Zweck der Musiktonerzeugung erfüllt. Folglich ist es für die Erzeugung von Musiktönen erforderlich, dass ein spezifischer Musiktongenerator vorbereitet wird. Bei der Erzeugung von Musiktönen durch einen Universal-Prozessor, wie beispielsweise einen Personal-Computer, wird die spezifische Tonquelle extern zugeordnet. Alternativ ist eine erweiterte Platine mit mehreren IC-Chips, wie beispielsweise einem Musiktonerzeugungs-Chip zur Erzeugung von Musiktonwellenformen, einem Wellenform-ROM zum Speichern von Wellenformdaten und einem Kodierer/Dekodierer (CODEC), der aus einem A/D-Wandler, einem D/A-Wandler, einem FIFO-Puffer und einer Schnittstellenschaltung besteht, mit dem Personal-Computer zur Musiktonerzeugung verbunden.
  • Neuerdings wurde ein Musiktonerzeugungs-Modul oder eine sogenannte Software-Tonquelle vorgeschlagen, bei welcher die Operationen der vorher erwähnten Hardware-Tonquelle durch eine Tonquellenverarbeitung auf der Grundlage eines Computerprogramms und einer Spielverarbeitung ersetzt wurden und die Tonquellenverarbeitung wird durch die CPU ausgeführt. Die darin enthaltene Spielverarbeitung bezeichnet eine Verarbeitung, die äquivalent zu der vorher erwähnten Tonquellentreiberverarbeitung ist, bei welcher auf der Grundlage der eingegebenen Information, wie beispielsweise MIDI-Daten, eine Steuerinformation zur Steuerung von Musiktönen erzeugt wird. Die darin enthaltene Tonquellenverarbeitung kennzeichnet eine Verarbeitung, bei welcher auf Grundlage der durch die Spielinformation erzeugten Steuerinformation Musiktonwellenformen synthetisiert werden. Gemäß diesem Musiktonerzeugungs-Modul, das nur einen D/A-Konvertierungs-Chip zusätzlich zu der CPU und Software vorsieht, wird eine Musiktonerzeugung ohne Verwendung eines speziellen Hardware-Musiktongenerators und einer Tonquellen-Karte ermöglicht.
  • EP 722 162 offenbart eine Vorrichtung zur Digitalsignalverarbeitung für eine Tonsignal-Bearbeitung. Bei dieser Vorrichtung werden eine Vielzahl von Digitalsignalprozessoren (DSP) in Parallelbeziehung vorgesehen. Jeder der DSP ist mit einem Zweikanal-RAM ausgerüstet, um einen direkten Empfang von Daten von einem anderen DSP über ein Bus-System zu gestatten, so dass Operationen, wie Einschreiben von empfangenen Daten, sofort ausgeführt werden können und somit eine Hochgeschwindigkeit-Verarbeitung ermöglicht wird.
  • Die Software-Tonquellen, wie vorher erwähnt, werden in verschiedene Arten entsprechend einem Verfahren zum Simulieren eines akustischen Musikinstruments gruppiert, zum Beispiel, PCM-Tonquelle, FM-Tonquelle und Tonquelle nach physikalischem Modell. Um Musiktöne nach irgendeiner Art dieser Tonquellen zu synthetisieren, ist es erforderlich, ein einer jeweiligen Art entsprechendes Tonquellen-Verarbeitungsprogramm getrennt vorzubereiten. Dies führt zu einem Problem, dass die Speicherkapazität zum Speichern der TonquellenVerarbeitungsprogramme und Wellenformdaten, die für eine Tonbearbeitung nötig sind, signifikant zunimmt.
  • Ein weiteres Problem besteht darin, da es kein Standard-Datenformat für diese Tonquellen gibt, dass es unmöglich ist, Musiktöne mit einem Algorithmus zu synthetisieren, in welchem die verschiedenen Tonquellen, wie sie vorher erwähnt wurden, miteinander vereinigt werden.
  • KERN DER ERFINDUNG
  • Es ist daher ein Ziel der vorliegenden Erfindung, eine Vorrichtung zur Musiktonerzeugung und ein Verfahren zur Musiktonerzeugung bereitzustellen, die in der Lage sind, Wellenformsyntheseberechnungen mit Geschwindigkeiten durchzuführen, die höher als als die in einer Software-Tonquelle sind, die von einer CPU aufgeführt werden, welche eine Vielzahl von Operationen mit einem einzigen Befehl ausführen kann.
  • Es ist ein weiteres Ziel der vorliegenden Erfindung, eine Vorrichtung zur Musiktonerzeugung und ein Verfahren zur Musiktonerzeugung bereitzustellen, das in der Lage ist, die Sequenz von Effektbeigebungs-Bearbeitungberechnungen dynamisch zu ändern.
  • Es außerdem ein weiteres Ziel der vorliegenden Erfindung, eine Vorrichtung zur Musiktonerzeugung und ein Verfahren zur Musiktonerzeugung bereitzustellen, bei welchem Cache-Fehler bei der Wellenformerzeugung kaum auftreten, besonders bei einer Effektbeigebungsberechnung in einer Software-Tonquelle, wodurch die Berechnungs- und Bearbeitungseffizienz verbessert wird.
  • Es ist noch ein weiteres Ziel der vorliegenden Erfindung, ein Verfahren zur Musiktonerzeugung bereitzustellen, das eine Software-Tonquelle auf der Grundlage einer Vielzahl von Tonsynthese-Verfahren mit einer relativ geringen Speicherkapazität verwirklicht.
  • Es ist außerdem ein weiteres Ziel der vorliegenden Erfindung, ein Verfahren zur Musiktonerzeugung bereitzustellen, das in der Lage ist, Musiktöne durch einen Algorithmus zu synthetisieren, bei welchem eine Vielzahl von Software-Tonquellen miteinander vereinigt sind.
  • Diese Ziele werden durch das Verfahren und das Medium, wie es in den anhängenden Ansprüchen definiert ist, erreicht.
  • Die vorhergehend beschriebenen und andere Ziele, Merkmale und Vorteile der vorliegenden Erfindung sind aus den anhängenden Zeichnungen klarer zu ersehen, in welchen gleiche Bezugnummern verwendet werden, um die gleichen oder ähnliche Bestandteile in verschiedenen Abbildungen zu identifizieren.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockschaltbild, das ein elektronisches Musikinstrument zeigt, in welchem eine Vorrichtung zur Musiktonerzeugung und ein Verfahren zur Musiktonerzeugung, die beide zu der vorliegenden Erfindung gehören, angewendet werden.
  • 2 ist ein schematische Abbildung zur Erläuterung von Prinzipien der Musiktonerzeugung durch eine Software-Tonquelle.
  • 3 ist eine Abbildung, die eine Verpacken von Daten für vier Kanäle zeigt.
  • 4 zeigt ein Beispiel eines Algorithmus für einen Timbre-Filterprozeß jedes Kanals.
  • 5 zeigt ein Beispiel eines Algorithmus für eine Effekt-Bearbeitung.
  • 6A und 6B sind detaillierte Abbildungen, die einen APn und einen CFn aus 5 zeigen.
  • 7A und 7B zeigen Flußdiagramme einer Haupt-Routine und einer Ton-EIN-Ereignis-Routine.
  • 8A, 8B und 8C zeigen Flußdiagramme einer Wellenformerzeugungs-Routine, einer Routine zur Erzeugung von Wellenformen für vier Kanäle und für einen Block und eine DMAC-Bearbeitungs-Routine.
  • 9A und 9B sind Abbildungen, die ein Beispiel einer Konfiguration eines zu der vorliegenden Erfindung gehörenden Wellenformerzeugungspuffers und ein Beispiel einer Konfiguration eines herkömmlichen Wellenformerzeugungspuffers zeigen.
  • 10 zeigt schematisch ein Beispiel eines Algorithmus von Operationen, die eine Musiktonerzeugung durch eine Software-Tonquelle und eine Kanal-Akkumulation enthalten.
  • 11 zeigt schematisch ein Beispiel eines Algorithmus eines Software-Effektors zum Beigeben einer Vielzahl von Effekten zu Wellenformdaten.
  • 12A und 12B zeigen Flußdiagramme einer Wellenformerzeugungs-Bearbeitungs-Routine und einer Routine zur Erzeugung von Wellenformen für 16 Abtastwerte.
  • 13 zeigt ein Flußdiagramm zur Erläuterung einer Ton-EIN-Ereignis-Bearbeitung.
  • 14 zeigt ein Flußdiagramm zur Erläuterung einer Tonquellen-Bearbeitung.
  • 15A, 15B und 15C zeigen Flußdiagramme zur Erläuterung einer Musiktonerzeugungs-Bearbeitung durch verschiedene Tonquellen.
  • 16 zeigt ein Flußdiagramm zur Erläuterung einer Hall-Bearbeitung.
  • 17 ist eine Abbildung zur Erläuterung eines Musiktonsynthesealgorithmus in einer Vorrichtung zur Musiktonerzeugung, in welcher die vorliegende Erfindung angewendet wird.
  • 18 ist eine Abbildung zur Erläuterung eines Algorithmus einer PCM-Tonquelle.
  • 19 ist eine Abbildung zur Erläuterung eines Algorithmus einer Hall-Bearbeitung.
  • 20 zeigt ein Beispiel einer Speicherkarte.
  • 21 ist eine Abbildung zur Erläuterung einer Einstellung eines Wellenform erzeugungsprogramms.
  • 22 ist eine Abbildung zur Erläuterung einer Einstellungs-Bearbeitung.
  • 23A, 23B und 23C sind Flußdiagramme zur Erläuterung einer Einstellung von Basiselementen in verschiedenen Tonquellen. Und
  • 24 ist ein Flußdiagramm zur Erläuterung einer Einstellung eines Effektprogramms.
  • DETAILLIERTE BESCHREIBUNG VON BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Nachfolgend wird diese Erfindung detaillierter bespielhaft unter Bezugnahme auf die anhängenden Zeichnungen beschrieben. In 1 ist ein Blockschaltbild gezeigt, das ein elektronisches Musikinstrument darstellt, in welchem eine Vorrichtung zur Musiktonerzeugung und ein Verfahren zur Musiktonerzeugung, die beide zu der vorliegenden Erfindung gehören, angewendet werden, wobei das elektronische Musikinstrument als eine bevorzugte Ausführungsform der Erfindung Verwendung findet. Das elektronische Musikinstrument weist eine zentrale Recheneinheit (CPU) 101, einen Festwertspeicher (ROM) 102, einen Direktzugriffsspeicher (RAM) 103, ein Platten-Laufwerk 104, einen Zeitgeber 106, eine Netzwerk-Eingabe/Ausgabe-(I/O)-Schnittstelle 107, eine Tastatur 108, eine Anzeige 109, eine Festplatte 110, einen Abtastakt-(Fs)-Generator 111, eine Ton-I/O 112, eine DMA (Direkt Memory Access = Direktspeicherzugriff)-Steuereinheit 114, ein Tonsystem 115 und eine Busleitung 116 auf.
  • Die CPU 101 speichert Operationen des gesamten elektronischen Musikinstruments. Die CPU 101 hat einen erweiterten Befehlssatz, der eine Vielzahl von Operationen mit einem einzigen Befehl parallel ausführen kann. Genauer gesagt, Daten, die durch ein 64-Bit-Register in der CPU bearbeitet werden, werden in vier Teile von 16-Bit-Daten geteilt. Der vorher erwähnte Befehlssatz enthält einen Befehl, der diese vier Teile von 16-Bit-Daten simultan bearbeiten kann. Alternativ werden die 64-Bit-Daten als zwei Teile von 32-Bit-Daten bearbeitet. Der Befehlssatz enthält einen Befehl, der diese zwei Teile von 32-Bit-Daten simultan bearbeiten kann.
  • Der ROM 102 speichert einer Steuerprogramm, wie beispielsweise ein Programm der Software-Tonquelle, die einen von der CPU 101 ausgeführten Software-Effektor und verschiedene Parameterdaten enthält. Der ROM 102 speichert auch Wellenformdaten (nämlich Wellenformabtastwertdaten, die mit einer vorgegebenen Geschwindigkeit abgetastet werden), die zur Erzeugung eines Musiktons mittels Durchführen des Software-Tonquellenprogramms durch die CPU 1 verwendet werden. Es ist anzumerken, das das Steuerprogramm, verschiedene Parameterdaten und Wellenformdaten in dem RAM 103 anstelle des ROM 102 vorbereitet werden können. In diesem Fall werden das Steuerprogramm und Daten von einem externen Speichermedium 105, wie beispielsweise einer CD-ROM oder der Netzwerk-I/O-Schnittstelle 107, geliefert. Das gelieferte Programm und Daten werden in den RAM 103 geladen oder auf der Festplatte 110 gespeichert. Der RAM 103 weist Arbeitsbereiche, wie verschiedene Register, einen Wellenformerzeugungspuffer und Wiedergabepuffer auf. Die Laufwerkeinheit 104 gibt verschiedene Daten ein oder aus über ein externes Speichermedium 105, wie einer Floppy Disk (FD) und einer Flash-Karte. Die Festplatte 110 ist eine Speichervorrichtung für verschiedene Daten.
  • Der Zeitgeber 106 liefert ein Zeitgebertaktsignal zum Auslösen einer Zeitgeber-Unterbrechung an die CPU 101 in einem vorgegebenen Intervall. Die Netzwerk-I/O-Schnittstelle 107 übermittelt verschiedene Daten über eine externe öffentliche Telefonleitung oder ein LAN (Local Area Netzwork = lokales Netz). Die Tastatur 108 wird von dem Anwender verwendet, um verschiedene Informationen in das elektronische Musikinstrument einzugeben. Die Anzeige 109 zeigt verschiedene Informationen sichtbar an. Über die Tastatur und die Anzeige führt der Anwender verschiedene Einstellungsoperationen durch und gibt Befehle aus, die zur Steuerung einer Musiktonerzeugung erforderlich sind.
  • Der Fs-Generator 111 erzeugt einen Abtasttakt mit einer Frequenz Fs, die von der Ton-I/O 112 geliefert wird. Die Ton-I/O 112 besteht aus einem LSI, der als ein Kodierer/Dekodierer (CODEC) bezeichnet wird. Die Ton-I/O 112 besitzt eine Analog/Digital (A/D)-Konvertierungskapazität und eine Digital/Analog (D/A)-Konvertierungskapazität. Ein analoges Musiktonsignal von einer externen Eingabequelle 113 wird in einen A/D-Eingabeanschluß der Ton-I/O 112 eingegeben und das Tonsystem 115 ist mit einem D/A-Ausgabeanschluß der Ton-I/O 112 verbunden. Die Ton-I/O 112 enhält zwei FIFO-Stapelspeicherbereiche (First-IN, First-OUT). Einer der Stapelspeicher sieht einen Eingabe-FIFO vor zum Halten der digitalen Wellenformdaten, die über den A/D-Eingabeanschluß eingegeben werden. Der andere sieht einen Ausgabe-FIFO vor zum Halten der digitalen Wellenformdaten, die über den D/A-Ausgabeanschluß ausgegeben werden.
  • Das analoge Musiktonsignal, das von der externen Eingabequelle 113 in den A/D-Eingabeanschluß der Ton-I/O 112 eingegeben wird, wird gemäß dem Abtasttakt mit der Frequenz Fs A/D-konvertiert. Das Signal kann durch ADPCM (Adaptive Differential Pulse Code Modulation = adaptive differentielle Pulskodemodulation) komprimiert werden, wenn erforderlich. Das resultierende digitale Signal wird in den Eingabe-FIFO geschreiben. Wenn der Eingabe-FIFO Wellenformdaten hat, ruft die Ton-I/O 112 die DMA-Steuereinheit 114 zur Bearbeitung der Wellenformdaten auf. Im Ansprechen auf die Aufforderung übermittelt die DMA-Steuereinheit 114 die Daten zu einem vorher zugewiesenen Aufzeichnungspufferbereich in dem RAM 103. Die DMA-Steuereinheit 114 führt diese Datenübertragung durch Auslösen einer Hardware-Unterbrechung in der CPU 101 bei jedem Abtasttakt Fs und durch Zuordnen der Busleitung 116 durch. Die Zuordnung der Busleitung 116 durch die DMA-Steuereinheit 114 ist für die CPU 101 transparent.
  • Wenn andererseits Wellenformdaten in dem Ausgabe-FIFO in der TON-I/O 112 vorhanden sind, werden die Wellenformdaten D/A-konvertiert bei jedem Abtasttakt Fs und das resultierende analoge Signal wird dem Tonsystem 115 über den D/A-Ausgabeanschluß zum Erklingen gesendet.
  • Wenn die in dem Ausgabe-FIFO gehaltenen Wellenformdaten ausgegeben werden, wird der Ausgabe-FIFO geleert. Zu diesem Zeitpunkt ruft die Ton-I/O 112 die DMA-Steuereinheit 114 zum Erfassen der Wellenformdaten auf. Die CPU 101 erzeugt vorher ausgegebene Wellenformdaten, speichert die erzeugten Wellenformdaten in den Wiedergabepuffern PB0 und PB1 in dem RAM 103 und ruft vorher die DMA-Steuereinheit 114 zur Wiedergabe dieser Wellenformdaten auf. Die DMA-Steuereinheit 114 löst eine Unterbrechung bei der CPU 101 bei jedem Abtasttakt Fs aus, um die Busleitung 116 zuzuordnen, und übermittelt die Wellenformdaten in den Wiedergabepuffer des RAM 103 zu dem Ausgabe-FIFO der Ton-I/O 112. Die Übermittlung der Wellenformdaten durch die DMA-Steuereinheit 114 ist für die CPU 101 transparent. Die in den Ausgabe-FIFO geschriebenen Wellenformdaten werden dem Tonsystem 115 bei jedem Abtasttakt Fs gesendet und zum Erklingen gebracht, wie bereits erwähnt.
  • Die Software-Tonquelle wird durch Ausführen der Musiktonerzeugungs-Software, die in dem ROM 102 gespeichert ist, durch die CPU 101 realisiert. Vom Standpunkt einer Anwendung betrachtet, die die Software-Tonquelle verwendet, wird die Musiktonerzeugungs-Software als ein Treiber registriert. Danach wird der Treiber gestartet und eine MIDI (Musical Instrument Digital Interface)-Ereignisinformation, die verschiedenartiges Musikspiel repäsentiert, wird an eine API (Application Programm Interface = Anwendungsprogramm-Schnittstelle) ausgegeben, die mit einer vorgegebenen Software-Tonquelle assoziiert ist, um zu veranlassen, dass die Software-Tonquelle verschiedene Bearbeitungsoperationen, die mit der Musiktonerzeugung in Verbindung stehen, durchzuführt. Die CPU 101 ist ein Universal-Prozessor und führt daher eine andere Verarbeitung, wie beispielsweise ein Plazieren der Spielinformation oder MIDI-Ereignis an die API neben der Software-Tonquellen-Bearbeitung durch. Die Bearbeitung, die Spielinformation der API durch die CPU 101 aufzugeben, enthält das Ausgeben der Spielinformation, die in Echtzeit im Ansprechen auf eine auf der Tastatur ausgeführten Operation erzeugt wird, zu der API. Sie enthält auch das Ausgeben der Spielinformation an die API gemäß einem MIDI-Ereignis, das in Echzeit über die Netzwerk-I/O 107 eingegeben wird. Ferner enthält sie das vorherige Ausgeben einer in dem RAM 103 gespeicherten MIDI-Ereignis-Sequenz an die API als sequentielle Spielinformation. In diesem Fall können Daten, die auf dem externen Speichermedium 105 oder der Festplatte 110 gespeichert sind, verwendet werden oder die über die Netzwerk-I/O 107 eingegebenen Daten können verwendet werden.
  • Nachfolgend wird das Prinzip der Musiktonerzeugung durch die Software-Tonquelle mit Bezug auf 2 beschrieben. In 2 bezeichnen Blöcke S1 bis S4 Zeitintervalle, in welchen eine vorgegebene Anzahl von Abtastwerten (zum Beispiel 2 × 128 Abtastwerte) wiedergeben werden. Jeder nach unten gerichtete Pfeil auf der Zeile "Spielinformation" bezeichnet eine Spielinformation, die zu einer gekennzeichneten Zeit auftritt. Die Spielinformation enthält verschiedene MIDI-Ereignisse, wie beispielsweise Ton-EIN, Ton-AUS, Aftertouch (nach Anschlag) und Programmänderung, die in die API, die mit der vorher erwähnten Software-Tonquelle verknüpft ist, eingegeben werden. In dem Beispiel aus 2 finden drei Spielinformationen im Block S1, zwei im Block S2 und eine im Block S3 statt. Die Software-Tonquelle kann simultan eine Vielzahl von Musiktönen durch eine Vielzahl von MIDI-Kanälen erzeugen. Die Software-Tonquelle ist zur Steuerung der Musiktöne durch Software-Tonquellenregister für eine Vielzahl von in dem RAM 103 vorbereiteten Kanälen angepaßt. Wenn ein Ton-EIN-Ereignis als Spielinformation eingegeben ist, führt die Software-Tonquelle eine Tonzuweisung zu den Software-Tonquellenregistern durch, die den Kanälen entsprechen. Die Software-Tonquelle schreibt dann die verschiedenen Daten und das Ton-EIN in die Software-Register zur Steuerung des Erklingens in den mit diesen assoziierten zugewiesenen Kanälen. Wenn ein Ton-AUS-Ereignis als eine Spielinformation eingegeben ist, schreibt die Software-Tonquelle das Ton-AUS in das Software-Tonquellenregister, das mit den betroffenen Kanal assoziiert ist. Die Software-Tonquelle schreibt auch eine Spielinformation, die nicht ein Ton-EIN und Ton-AUS sind, wie beispielsweise eine Änderung von Aftertouch, in das Software-Tonquellenregister, das dem betroffenen Kanal entspricht. Die Daten, die in das Software-Tonquellenregister in einem bestimmten Zeit-Block geschrieben sind, werden zur Wellenformsyntheseberechnung in einem nachfolgenden Zeit-Block verwendet ohne Berücksichtigung der Datenart.
  • Die Rechtecke 201 bis 204, die in der Zeile "Wellenformerzeugung durch CPU" in 2 bezeichnet sind, kennzeichnen Abschnitte zur Ausführung der Wellenformsyntheseberechnungen einschließlich des Effektbeigebens durch die CPU 101. Bei diesen Wellenformsyntheseberechnungen werden Musiktonwellenformen für eine Vielzahl von Kanälen auf der Grundlage von Daten für die Vielzahl der Kanäle erzeugt, die in die Software-Tonquellenregister eingestellt sind. Entsprechend der Spielinformation wird das Software-Tonquellenregister neu geschrieben. Andererseits hält der Block, in welchem keine Spielinformation vorhanden ist, alte Daten, die in die Software-Tonquellenregister früher eingeschrieben wurden. In jeden der Blöcke 201 bis 204 der Wellenformerzeugung wird daher eine Wellenformsyntheseberechnung für eine Spielinformation, die in dem Block unmittelbar bevor oder einem Block vor diesem festgestellt wurde, ausgeführt. Da eine Hardware-Unterbrechung zwischen Blöcken ausgelöst wird, wird die Wellenformsyntheseberechnung in jedem Block durch diese Unterbrechung getriggert.
  • Zum Beispiel wird für die drei im Block S1 festgestellten Spielinformationen die Wellenformsyntheseberechnung in dem Abschnitt 202 durch die erste Block-Unterbrechnug in dem folgenden Block S2 getriggert. Auf der Grundlage eines Ergebnisses dieser Wellenformsyntheseberechnung erzeugt die CPU 101 die Wellenformdaten in dem Wellenformerzeugungspuffer in dem RAM 103. Diese Wellenformdaten werden durch die Vielzahl der Kanäle akkumuliert und mit einem Effekt belegt. Die so erzeugten Wellenformdatenwerden in die Wiedergabe pufferbereiche in dem RAM 103 geschrieben. Diese Pufferbereiche werden mit PB0 und PB1 bezeichnet, die die gleiche Größe aufweisen und bei Daueradressen angeordnet sind. Diese Pufferbereiche werden als Doppel-Puffer bezeichnet. Die Puffer PB0 und PB1 werden alternierend für jeden Block verwendet. Zum Beispiel werden die Wellenformdaten, die dem Block S1 zugewiesenen Abschnitt 201 erzeugt werden, in den Wiedergabepufferbereich PB0 in dem RAM 103 geschrieben. Die Wellenformdaten, die dem Block S2 zugewiesenen Abschnitt 202 erzeugt werden, werden in den Wiedergabepufferbereich PB1 geschrieben. Die Wellenformdaten, die dem Block S3 zugewiesenen Abschnitt 203 erzeugt werden, werden in den Wiedergabepufferbereich PB0 geschrieben. Die Wellenformdaten, die dem Block S4 zugewiesenen Abschnitt 204 erzeugt werden, werden in den Wiedergabepufferbereich PB1 geschrieben. Somit werden die Wellenformdaten alternierend in den PB0 und PB1 geschrieben.
  • Die Wellenformdaten, die in die Wiedergabepuffer PB0 und PB1 geschrieben wurden, werden ausgelesen und, nachdem sie durch die Block-Unterbrechung getriggert wurden, in dem folgenden Block, dem nächsten auf den vorangegangen Block, in welchem die Wellenformdaten erzeugt wurden, wiedergegeben, wie es in der Zeile "Lesen und Wiedergabe" in 2 gezeigt ist. Genauer gesagt, die in dem Block S1 erzeugten und in PB0 geschriebenen Wellenformdaten werden in dem folgenden Block S2 ausgelesen. Die in dem Block S2 erzeugten und in PB1 geschriebenen Wellenformdaten werden in dem folgenden Block S3 ausgelesen. Die in dem Block S3 erzeugten und in PB0 geschriebenen Wellenformdaten werden in dem folgenden Block S4 ausgelesen. Somit werden die in den PB0 und den PB1 geschriebenen Wellenformdaten alternierend für die Wiedergabe ausgelesen. Das Auslesen und die Wiedergabe werden von der DMA-Steuereinheit 114 durch Auslösen einer Unterbrechung bei der CPU 101 bei jedem Abtasttakt Fs durchgeführt, um die Wellenformdaten in dem Wiedergabepuffer (den PB0 oder den PB1, je nachdem welcher bestimmt ist) in dem RAM 103 zu dem Ausgabe-FIFO der Ton-I/O 112 zu übermitteln. Die Block-Unterbrechung wird bei dem Auftreten von Zurück ausgelöst, nämlich am Ende einer Wiedergabe des PB1, wenn die Wiedergabepuffer PB0 und PB1 in einer Schleife auslesen, die Block-Unterbrechung tritt auch beim Durchlaufen des Zwischenpunktes des Schleifen-Lesens auf, nämlich am Ende der Wiedergabe des PB0. Die Block-Unterbrechung ist eine Hardware-Unterbrechung, die durch die Ton-I/O 112 ausgelöst wird, wobei der Zeitpunkt bezeichnet wird, bei dem eine Wiedergabe eines Block fertiggestellt wurde. Die Ton-I/O 112 zählt nämlich die Anzahl der übertragenen Abtastwerte und löst jedes mal eine Block-Unterbrechung aus, wenn die Anzahl der Abtastwerte übertragen wird, die äquivalent einer halben Größe der Wiedergabepuffer ist, nämlich einer Hälfte der Gesamtgröße der beiden von PB0 und PB1. Die Anzahl der übertragenen Abtastwerte ist diejenige, die durch die DMAC 114 von dem PB0 und dem PB1 zu dem Ausgabe-FIFO der Ton-I/O übertragen wird.
  • Die Software-Tonquelle kann simultan eine Vielzahl von Musiktönen durch eine Vielzahl von Kanälen erzeugen. Insbesondere bei der vorliegenden Ausführungsform weist die CPU 101 zur Realisierung der Software-Tonquelle eine Kapazität zur Bearbeitung einer Vielzahl von Daten durch einen einzigen Befehl auf. Diese Kapazität wird verwendet, um Daten durch die Vielzahl von Kanälen zur Wellenformerzeugung parallel zu bearbeiten, wodurch die Bearbeitungsgeschwindigkeit verbessert wird. Der Wellenformerzeugungsprozeß für einen Kanal besteht aus Erzeugen von Adressen, Auslesen von Wellenformabtastwerten, Interpolieren, Filtern, Steuern der Lautstärke und Akkumulieren. Bei der vorliegenden Erfindung werden diese Operationen für eine Vielzahl von Kanälen simultan ausgeführt.
  • 3 ist eine Abbildung, die eine Verpacken von Daten für vier Kanäle zeigt. Gemäß dem vorher erwähnten erweiterten Befehlssatz der CPU 101 werden 16 Bits × 4 Daten in ein 64-Bit-Register gesetzt, in welchem arithmetische Operationen wie Multiplikation, Addition und Subtraktion simultan mit 16 Bits × 4 Daten durchgeführt werden können, die in einem anderen 64-Bit-Register gehalten werden. 3 zeigt ein Beispiel einer Multiplikation von diesen Daten. Die Datenbearbeitung für eine Vielzahl von Kanälen ist in Gruppen aus vier Kanälen unterteilt und die Bearbeitungsoperationen für vier zu der gleichen Gruppe gehörende Kanäle wird simultan ausgeführt. Die vier simultan bearbeiteten Kanäle werden mit "4 × (n – 1) + 1" bis "4 × n" bezeichnet.
  • 4 zeigte ein Beispiel eines Algorithmus eines Timbre-Filter-Bearbeitung in jedem aktiven Kanal (Klangkanal). Wie aus 4 zu ersehen ist, besteht diese Timbre-Filter-Bearbeitung im allgemeinen aus Addition und Multiplikation. Mittels des vorher erwähnten erweiterten Befehlssatzes zur Parallel-Bearbeitung der 16 Bits × 4 Daten können die Timbre-Filter-Bearbeitungsoperationen für vier Kanäle parallel simultan ausgeführt werden. Eine Verzögerungsbearbeitung durch Verzögerungsschaltungen d1 und d2 können ausgeführt werden, durch vorhergehendes Schreiben der 16 Bits × 4 = 64-Bit-Daten in eine vorgegebene Adresse und durch Auslesen derselben mit einer gewünschten Verzögerung.
  • 5, 6A und 6B zeigen Beispiele von Algorithmen einer Effekt-Bearbeitung. Die Effekt-Bearbeitung wird nicht für jeden Kanal ausgeführt, aber wird nach Erzeugen einer Wellenform für jeden Kanal durchgeführt, wobei die Wellenformen aller Kanäle akkumuliert werden und das Akkumulationsergebnis in einen Puffer eingegeben wird. Die erzeugten Wellenformen werden provisorisch in drei Routen angeordnet. In 5 sind die Wellenformdaten durch drei Routen von XL, XR und XX in ein Effektor-Modul eingegeben. Für einen Bearbeitungs-Algorithmus werden die in 5, 6A und 6B gezeigten Bearbeitungsoperationen durchgeführt. Bei einer solchen Effekt-Bearbeitung werden Abschnitte der Berechnung in dem Bearbeitungsalgorithmus, die parallel ausführbar sind, durch den erweiterten Befehlssatz so weit wie möglich bearbeitet, wodurch die Bearbeitungsgeschwindigkeit gesteigert wird. Berechnungen (m4, m5, a5) und (m6, m7, a6) aus 6A und (m9, m10, a7) aus 6B werden beispielsweise mit einem einzigen Befehl ausgeführt. Manchmal wird, anstelle der Algorithmen aus 5, 6A und 6B, eine Effekt-Bearbeitung, in welcher die die gleiche Bearbeitung durchgeführt wird, an den Ausgaben der linken und rechten der Stereo-Kanäle ausgeführt. In diesem Fall können die Effekt-Bearbeitungsoperationen für die Ausgaben der linken und rechten Stereo-Kanäle gleichzeitig ausgeführt werden, wobei ein erweiterter Befehlssatz verwendet wird, der 32 Bits × 2 Daten simultan bearbeitet.
  • Nachfolgend wird der Bearbeitungsvorgang der CPU 101 des vorher erwähnten elektronischen Musikinstruments unter Bezugnahme auf die Flußdiagramme von 7A und 7B und 8A, 8B und 8C beschrieben.
  • 7A zeigt einen Prozeß einer Haupt-Routine, die zu der in den Steuerprogrammen der CPU 101 enthaltenen Software-Tonquelle gehört. Diese Haupt-Routine ist in dem OS (Operating System = Betriebssystem) als ein Software-Tonquellen-Treiber registriert. Um einen Musikton mittels einer Software-Tonquelle zu erzeugen, wird dieser Treiber oder die Bearbeitung von 7A zunächst gestartet, um die API zu aktivieren, die vorher mit der Software-Tonquelle assoziert wird. Wie in 7A gezeigt, werden verschiedene Initialisierungsoperationen in Schritt 701 durchgeführt. Bei dieser Initialisierung werden die Wiedergabepuffer PB0 und PB1 gelöscht und die Ton-I/O 112 und die DMAC 114 werden instruiert, die Wiedergabepuffer PB0 und PB1 alternierend zu lesen, wie es in 1 und 2 beschrieben wurde, wobei vorher die Bearbeitung für Wiedergabe gestartet wird. In Schritt 702 prüft die CPU, ob es irgendeinen Trigger gibt. Wenn in Schritt 703 ein Trigger festgestellt wird, geht die Bearbeitung zu Schritt 704. Wenn kein Trigger festgestellt wird, geht die Verarbeitung zu Schritt 702 zurück. Eine Annahme eines Triggers von Schritten 702 bis 704 entspricht einer Annahme einer Spielinformation bei der API, die mit der Software-Tonquelle assoziiert ist.
  • In Schritt 704 ermittelt die CPU eine Art des Triggers und die Bearbeitung zweigt entsprechend der ermittelten Art ab. Wenn der Trigger eine Eingabe eines MIDI-Ereignisses ist, wird die MIDI-Bearbeitung von Schritt 705 ausgeführt und dann kehrt die Bearbeitung zu Schritt 702 zurück. Diese MIDI-Ereignsieingabe und die MIDI-Bearbeitung von Schritt 705 entsprechen der Annahme der Spielinformation aus 2. Wenn in Schritt 704 festgestellt wird, dass der Trigger eine Block-Unterbrechung ist, die der Fertigstellung von einer 1-Block-Wiedergabe entspricht, wird die Wellenformerzeugungs-Bearbeitung von Schritt 706 ausgeführt und dann kehrt die Bearbeitung zu Schritt 702 zurück. Die Block-Unterbrechung ist eine Hardware-Unterbrechung, die jedes Mal ausgelöst wird, wenn die Ton-I/O 112 eine 1-Block-Wiedergabe fertigstellt. Die Wellenformerzeugung von Schritt 706 ist eine Bearbeitung zur Durchführung der Wellenformsyntheseberechnung, die in Abschnitten 202 bis 204 aus 2 gezeigt ist. Bei dieser Wellenformerzeugungs-Bearbeitung werden die Wellenformdaten für einen Block erzeugt und in die Wiedergabepuffer PB0 und PB1 alternierend geschrieben. Die Wellenformdaten für einen Block enthalten die Anzahl von Wellenformabtastwerten, die äquivalent zur Hälfte der Gesamtgröße der Wiedergabepuffer PB0 und PB1 ist. Wenn in Schritt 704 festgestellt wurde, dass der Trigger eine andere Anfrage ist, wird die Bearbeitung gemäß dem Trigger in Schritt 707 durchgeführt und dann kehrt der Prozeß zu Schritt 702 zurück. Insbesondere wenn ein Abtasten der externen Eingabequelle 113 durch die Ton-I/O 112 befohlen wird, wird eine Änderung einer Software-Effektor-Algorithmuseinstellung befohlen oder eine Einstellung eines Gewichtungs-Koeffizienten zur Bestimmung des Signalübertragungspegels von jeder der drei Routen, die durch die Wellenformerzeugungs-Bearbeitung ausgegeben werden, um die Effektbeigebungs-Bearbeitung zu befehlen, wobei entsprechende Bearbeitungen in Schritt 707 durchgeführt werden. Wenn in Schritt 704 festgestellt wird, dass der Trigger ein Abrufen zur Beendigung der Software-Tonquelle ist, wird eine Schluß-Bearbeitung in Schritt 708 ausgeführt, wodurch die Haupt-Routine beendet wird.
  • 7B zeigt einen Prozeß für die Ton-EIN-Ereignis-Bearbeitung, die einer der MIDI-Prozesse ist, die ausgeführt werden, wenn ein Ton-EIN in Schritt 704 eingegeben ist. Zunächst wird in Schritt 711 ein MIDI-Kanal, eine Tonnummer und eine Geschwindigkeit des eingegebenen Ton-EIN-Ereignisses jeweils in die Register MC, NV, VE eingestellt. In Schritt 712 wird dann eine Klang-Kanalzuordnung durchgeführt. In Schritt 713 wird eine Information, wie beispielsweise eine Tonnummer NN und eine Geschwindigkeit VE, die zum Erklingen erforderlich sind, in die Software-Tonquelle des zugeordneten Kanals eingestellt. In Schritt 714 wird Ton-EIN in das Software-Tonquellenregister des zugeordneten aktiven Kanals geschrieben und ein Erklingen-Startbefehl wird ausgegeben, wonach die Ton-EIN-Ereignis-Bearbeitung beendet wird. Andere MIDI-Ereignis-Operationen, wie beispielsweise Ton-AUS werden im allgemeinen ind er gleichen Weise ausgeführt, wie vorher beschrieben. Für die Ton-AUS-Ereignis-Bearbeitung wird nämlich Ton-AUS in das Software-Tonquellenregister, das den betroffenen aktiven Kanal entspricht, eingestellt. Für andere Spielinformationen werden Daten, die der betroffenen Spielinformation entsprechen, in das Software-Tonquellenregister geschrieben, das dem betroffenen Klang-Kanal entspricht.
  • 8A zeigt einen detaillierten Prozeß der Wellenformerzeugungs-Bearbeitung von Schritt 706. In Schritt 801 wird zunächst die Vorbereitung für eine Berechnung durchgeführt. Diese enthält die Bearbeitung zur Erkennung eines Kanals, für den eine Wellenformsyntheseberechnung mit Bezug auf das Software-Tonquellenregister durchgeführt wird, die Bearbeitung zur Ermittlung, für welchen der Wiedergabepuffer PB0 und PB1 die Wellenformen für einen Block, die durch die durchgeführte Wellenformsyntheseberechnung erzeugt werden, zu diesem Zeitpunkt eingestellt sind und die Bearbeitung zum Durchführen von Vorbereitungen für die Berechnung, wie beispielsweise ein Löschen aller Bereiche in dem Wellenformerzeugungspuffer. Dann wird im Schritt 802 "1" in ein Arbeitsregister n eingestellt und der Prozeß schreitet zu Schritt 803.
  • In Schritt 803 werden Wellenformabtastwerte für vier Kanäle "4 × (n – 1) + 1" bis "4 × n" erzeugt. In Schritt 804 wird ermittelt, ob zu berechnende Kanäle noch übrig bleiben. Wenn ein solcher Kanal festgestellt wird, wird das Arbeitsregister n erhöht und der Prozeß geht zu Schritt 803 zurück. Diese Operation wird solange wiederholt, bis die Wellenformerzeugung für alle zu berechnenden Kanäle durchgeführt ist. Es ist anzumerken, dass, da die Wellenformerzeugung in Einheiten von vier Kanälen durchgeführt wird, eine Berechnung von einem stillen Kanal, der augenblicklich nicht erklingt, unnötigerweise durchgeführt werden kann. Solch ein stiller Kanal wird so gesteuert, dass die Lautstärke Null wird und daher nicht den auszugebendem Musikton beeinflußt. Wenn festgestellt wurde, dass alle Kanäle in einer Wellenformerzeugung in Schritt 804 fertiggestellt sind, geht der Prozeß zu Schritt 806. In Schritt 806 wird die Effekt-Bearbeitung durchgeführt, wie in 5, 6A und 6B gezeigt. Nach der Effekt-Bearbeitung wird die Wiedergabe der erzeugten Wellenformen für einen Block in Schritt 807 reserviert. Dies ist die Bearbeitung zum Kopieren der erzeugten Wellenformabtastwert in einen der Wiedergabepuffer PB0 und PB1, der momentan zur Wiedergabe nicht verwendet wird. Da die Bearbeitung zum alternierenden Lesen der Wiedergabepuffer PB0 und PB1 zur Wiedergabe in Schritt 701 gestartet wurde, reicht es aus, nur die erzeugten Wellenformen in den Wiedergabepuffer zu kopieren, der momentan nicht für die Wiedergabe verwendet wird.
  • 8B zeigt einen detaillierten Vorgang des Erzeugens von 1-Block-Wellenformen für vier Kanäle, der in Schritt 803 von 8A durchgeführt wird. In Schritt 811 wird eine Adressenerzeugung für zwei der vorher erwähnten vier Kanäle durchgeführt und eine Adressenerzeugung für die restlichen zwei Kanäle wird in Schritt 812 durchgeführt. Die hier erzeugte Adresse ist eine Lese-Adresse der Wellenformdaten. Bei dem vorliegenden Beispiel wird die Adresse in dem ROM 102 vorbereitet. Die erzeugte Adresse ist länger als 16 Bits und wird daher in Einheiten von zwei Kanälen erzeugt. Dies ist die Parallel-Bearbeitung von zwei Kanälen, daher verwendet die CPU 101 einen erweiterten Befehlssatz zur Bearbeitung von 32 Bits × 2 Daten parallel.
  • In Schritt 813 werden dann die Wellenformabtastwerte ausgelesen. Es ist anzumerken, dass bei der Interpolations-Bearbeitung eine zwei Abtastwerte verwendende lineare Interpolation in jedem Kanal durchgeführt wird. Es werden daher zwei Wellenformabtastwerte für jeden Kanal ausgelesen, was zur Folge hat, dass die Wellenformabtastwerte für vier Kanäle bei einer Sequenz ausgelesen werden. In Schritt 814 werden die Interpolationsoperationen für diese vier Kanäle parallel durchgeführt. Es wird nämlich die lineare Interpolation durchgeführt, die zwei aufeinanderfolgende Abtastwerte verwendet. In Schritt 815 werden Filteroperationen (4) für die vier Kanäle parallel durchgeführt. In Schritt 816 werden Bearbeitungsoperationen für eine Lautstärkesteuerung und Kanal-Akkumulation für die vier Kanäle parallel durchgeführt. Diese Bearbeitung dient dazu, die Ausgaben der drei Systeme (XL, XR und XX aus 5) durch Multiplizieren der Wellenformen jedes Kanals mit einem vorgegebenen Pegelsteuerkoeffizienten und durch Akkumulieren der Multiplikationsergebnisse zu erhalten. Da die Bearbeitung von Schritt 816 diese Multiplikation in sich schließt, gibt es Abschnitte, die nicht parallel bearbeitet werden können in dieser Bearbeitung. In Schritten 814 bis 816 wird die Parallel-Bearbeitung für die vier Kanäle durchgeführt, so dass die CPU 101 den erweiterten Befehlssatz für eine Bearbeitung von 16 Bits × 4 Daten parallel anwendet. In Schritt 817 wird dann ermittelt, ob die Wellenformabtastwerte für einen Block erzeugt wurden. Die Anzahl der Abtastwerte für einen Block ist 128 Sätze, wenn XL, XR und XX als ein Satz gezählt werden. Wenn die Erzeugung noch nicht fertiggestellt wurde, geht der Prozeß zurück zu Schritt 811, in welchem ein nächster Wellenformabtastwert erzeugt wird. Wenn die Abtastwerte für einen Block erzeugt worden sind, wird die 1-Block-Wellenformerzeugungs-Bearbeitung beendet.
  • Nachfolgend wird die Bearbeitung der DMA-Steuereinheit 114 während der Wiedergabe bezugnehmend auf das Flußdiagramm aus 8C beschrieben. Bei einer Wiedergabe wird eine Abtastwertabruf-Unterbrechung (eine der Hardware-Unterbrechungen) in jeder Abtastperiode durch die Ton-I/O 112 ausgegeben. Dementsprechend führt die DMA-Steuereinheit 114 die Bearbeitung aus 8C aus. In Schritt 821 wird zuerst ein in den Wiedergabepuffern PB0 und PB1 gespeicherter Abtastwert dem Ausgabe-FIFO der Ton-I/O 112 gesendet. Die in den Ausgabe-FIFO geschriebenen Wellenformdaten werden in jeder Abtastperiode D/A-konvertiert, wie es unter Bezug auf 1 beschrieben wurde, und das resultierende analoge Signal wird dem Tonsystem 115 gesendet. Es ist anzumerken, dass "DMAB" in Schritt 821 die Wiedergabepuffer PB0 und PB1 bezeichnet. Da die Wiedergabepuffer PB0 und PB1 als die Puffer der DMA betrachtet werden können, wird die Bezeichnung DMAB verwendet. In Schritt 822 wird dann ein Zeiger p erhöht, um die Bearbeitung zu beenden. Dieser Zeiger p wird zum Auslesen eines Abtastwertes aus den Wiedergabepuffern PB0 und PB1 verwendet. Während somit der Zeiger p erhöht wird, wird ein Abtastwert von den Wiedergabepuffern PB0 und PB1 in jeder Abtastperiode zu der Ton-I/O 112 geleitet. Es ist anzumerken, dass der Zeiger p um eins erhöht wird, um die Abtastwerte vom oberen Teil des PB0 bis zum unteren Teil des PB1 sequentiell auszulesen. Wenn der letzte Abtastwert des PB1 ausgelesen worden ist, ist es erforderlich, der Zeigerwert so zu aktualisieren, dass der Zeiger p den ersten Abtastwert von PB0 markiert. Diese Operation wird automatisch von der DMA-Steuereinheit 114 durchgeführt.
  • Nach der vorher erwähnten ersten bevorzugten Ausführungsform werden Wellenformen mit einer vorgegebene Zeitperiode (Block) erzeugt, die länger als die Abtasperiode ist, und die Wellenformabtastwerte für die vorgegeben Periode werden zusammengefaßt erzeugt, so das der Verwaltungsaufwand geringer ist als der der Wellenformerzeugung, die zu jeder Abtastperiode durchgeführt wird, was die Bearbeitungszeit reduziert. Wenn die CPU einen Mehrweg-Cache-Speicher aufweist, kann das schnelle Speichern (Cache-Prozeß) für eine Vielzahl von Kanälen für kontinuierliche Parallel-Bearbeitung der Wellenformdaten in dem ROM 103 und der Wellenformdaten für einen zu erzeugenden Block realisiert werden, was zu einer signifikaten effizienteren Berechnung für die Wellenformerzeugung führt. Bei der Wellenformerzeugungs-Bearbeitung wird zudem eine Parallel-Adressenerzeugung durchgeführt, durch Anheben der Anzahl der Bearbeitungs-Bits und durch Senken der Anzahl der Kanäle, während andere Bearbeitungsoperationen, wie Interpolation und Amplitudensteuerung, parallel durchgeführt werden, durch Senken der Anzahl von Bearbeitungs-Bits und Anheben der Anzahl der Kanäle. Die Parallel-Anzahl von Kanälen wird nämlich entsprechend den zu bearbeitenden Daten variiert, wodurch die Recheneffizienz und die Verkürzung der Bearbeitungszeit verbessert wird.
  • Wenn in Schritt 804 aus 8A ein Kanal vorhanden ist, der zum Erklingen gebracht wird und unberechnet belassen wird und erwartet wird, dass die Syntheseberechnung in der Erzeugungsperiode nicht fertig gestellt wird, kann der Prozeß zu Schritt 806 gehen, anstatt zu Schritt 803 zurückzukehren. In der vorher erwähnten bevorzugten Ausführungsform werden 64 Bits als ein Satz von 16 Bits × 4 Daten oder ein anderer Satz von 32 Bits × 2 Daten parallel-bearbeitet. Es wird klar, dass die 64 Bits in irgendeiner anderen Datenbreite parallel-bearbeitet werden können. In der vorher erwähnten Ausführungsform ist die Länge der Zeit eines Blocks äquivalent zu 128 Musiktonwellenformen. Es wird klar, dass ein Block länger oder kürzer als dieser Wert sein kann. Ein Block kann zum Beispiel äquivalent zu 64 Abtastwerten oder 1024 Abtastwerten sein. LFO und Tonhöhen-Hüllkurven-Bearbeitung kann der vorher erwähnten Ausführungsform hinzugefügt werden, um Effekte, wie Vibrato und Tremolo, zu steuern. Wenn die Anzahl der Bits der erzeugten Effekt-Steuer-Wellenform 8 ist, kann diese Erzeugungs-Bearbeitung für 8 Kanäle parallel durchgeführt werden.
  • Die vorliegende Erfindung weist ein Speichermedium 105 auf, wie in 1 gezeigt. Dieses Speichermedium ist ein maschinenlesbares Medium mit Befehlen, um die Vorrichtung zur Durchführung des Verfahrens zur Musiktonerzeugung mittels einer Vielzahl von Kanälen zu veranlassen. Dieses Verfahren zur Musiktonerzeugung wird durch die folgenden Schritte umgesetzt: erstens, eine Spielinformation wird geliefert; zweitens, ein Zeitsignal wird in einem vorgegebenen Zeitintervall erzeugt; und drittens, Wellenformdaten für eine Vielzahl von Kanälen werden entsprechend der vorher erwähnten Spielinformation erzeugt, jedesmal, wenn das Zeitsignal erzeugt wird. In dem dritten Schritt werden Bearbeitungsoperationen für die Vielzahl der Kanäle in Einheiten von n Kanälen (wobei n zwei oder eine höhere ganze Zahl ist) parallel-bearbeitet und Wellenformdaten für eine Vielzahl von kontinuierlichen Abtastwerten werden erzeugt und ausgegeben. Die erzeugten Wellenformdaten werden einem D/A-Wandler, ein Abtastwert nach dem anderen, in jeder Abtastperiode zugeführt und in analoge Wellenformen konvertiert.
  • Nach dem ersten Gesichtspunkt der Anmeldung weist ein Musikinstrument folgendes auf: eine Bearbeitungseinheit von universeller Art mit einem erweiterten Befehlssatz, der zum Ausführen von Parallel-Berechnungsschritten im Ansprechen auf einen einzigen Befehl ausgeführt wird, welcher sukzessiv ausgegeben wird, wenn ein Programm ausgeführt wird, ein Software-Modul, das eine Vielzahl von Kanälen definiert und aus einem Syntheseprogramm besteht, welches durch die Bearbeitungseinheit unter Verwendung des erweiterten Befehlssatzes ausgeführt wird, um so eine Synthese von Wellenformen von Musiktönen durch die Vielzahl der Kanäle auszuführen, so dass die Vielzahl der Kanäle in Parallelsätzen optimal gruppiert ist, wobei jeder wenigstens zwei Kanäle enthält, und dass die Synthese der Wellenformen von wenigstens zwei Kanälen, die zu dem jeweiligen Parallelsatz gehören, durch Parallel-Rechenschritte gleichzeitig ausgeführt wird, einen Pufferspeicher zum akkumulativen Speichern der Wellenformen der Vielzahl der Kanäle, ein weiteres Software-Modul, das aus einem Effektorprogramm besteht, welches von der Bearbeitungseinheit unter Verwendung des erweiterten Befehlssatzes ausgeführt wird, wenn das Effektorprogramm Parallel-Berechnungsschritte enthält, um den in dem Pufferspeicher gespeicherten Wellenformen einen Effekt beizugeben, und einen Konvertierer zum Konvertieren der Wellenformen in die Musiktöne.
  • Die Bearbeitungseinheit führt vorzugsweise das Syntheseprogramm zur Durchführung der Synthese der Wellenformen aus, wobei die Synthese eine Art der Parallel-Rechnungsschritte aufweist, die einen relativ großen Rechenumfang bearbeiten, so dass die Vielzahl der Kanäle optimal in Parallelsätzen gruppiert ist, die jeweils eine relativ kleine Anzahl von Kanälen enthalten, und eine andere Art von Parallel- Rechenschritten aufweist, die einen relativ kleinen Rechenumfang bearbeiten, so dass die Vielzahl der Kanäle optimal in Parallelsätze gruppiert ist, die jeweils eine relativ große Anzahl von Kanälen enthalten.
  • Das Verfahren zum Erzeugen von Musiktönen entsprechend einer Spielinformation durch eine Vielzahl von Kanälen durch Parallel-Rechenschritte weist auf, ein sukzessives Bereitstellen einer Spielinformation, um eine Erzeugung von Musiktönen zu befehlen, ein periodisches Bereitstellen eines Triggersignals mit einer relativ langsamen Rate, um eine Blockperiode zwischen aufeinanderfolgenden Triggersignalen zu definieren, periodisches Bereitstellen eines Abtastsignals mit einer relativ schnellen Rate, so dass eine Vielzahl von Abtastsignalen innerhalb einer Blockperiode auftreten, Durchführen einer kontinuierlichen Synthese im Ansprechen auf jedes Triggersignal, um eine Sequenz von Wellenformabtastwerten der Musiktöne für jede Blockperiode entsprechend der bereitgestellten Spielinformation zu erzeugen, wobei die kontinuierliche Synthese mittels des erweiterten Befehlssatzes derart ausgeführt wird, dass die Vielzahl der Kanäle optimal in Parallelsätze, die jeweils wenigstens zwei Kanäle enthalten, gruppiert werden, so dass die kontinuierliche Synthese der Wellenformabtastwerte von wenigstens zwei zu dem jeweiligen Parallelsatz gehörenden Kanälen gleichzeitig laufend durch Parallel-Rechenschritte ausgeführt wird, und Konvertieren jedes der Wellenformabtastwerte im Ansprechen auf jedes Abtastsignal in ein entsprechendes Analogsignal, um dadurch die Musiktöne zu erzeugen.
  • Nachfolgend wird ein elektronisches Musikinstrument beschrieben, das als zweites bevorzugtes Beispiel der vorliegenden Anmeldung praktiziert wird. Grundsätzlich weist das zweite bevorzugte Beispiel im allgemeinen die gleiche Hardware-Konfiguration auf, wie die der in 1 gezeigten ersten bevorzugten Ausführungsform und eine Software-Tonquelle, die nach dem in 2 gezeigten Prinzip funktioniert, und entsprechend den in 7A und 7B gezeigten Haupt-Flußdiagrammen arbeitet.
  • In 1 steuert die CPU 101 die Operationen des gesamten elektronischen Musikinstruments gemäß der zweiten Ausführungsform. Die CPU 101 enthält einen Cache-Speicher 117. Die Cache-Leitung (Cache-Block)-Größe des Cache-Speichers liegt bei 32 Bytes. Genauer gesagt, wenn die CPU 101 ein-Daten-Byte bei einer vorgegebenen Adresse aus dem ROM 102 oder dem RAM 103 liest, werden kontinuierliche 32 Bytes einschließlich des einen Bytes bei dieser Adresse in eine vorgegebene Cache-Leitung in den Caches-Speicher 117 kopiert. Wenn dann ein Leseaufruf für Daten von irgendwelchen dieser 32 Bytes stattfindet, werden die Daten in dieser Cache-Leitung geliefert, anstelle des Lesens von Daten aus dem ROM 102 oder dem RAM 103. Ein Zugriff zu dem Cache-Speicher wird signifikant schneller durchgeführt. Daher können, wenn die Daten in dem Cache-Speicher 117 sind, die Daten signifikant schneller bearbeitet werden. Es ist anzumerken, dass der Cache-Speicher eine zweifache Funktion hat, Write-Through (Durchlaufspeichern) und Write-Back(temporäres Speichern). Bei der zweiten Ausführungsform wird ein Cache-Speicher von Write-Through-Typ verwendet.
  • 9A zeigt ein Beispiel der Konfiguration der Wellenformerzeugungspuffer, die von der CPU 101 zur Wellenformerzeugung verwendet werden. Diese Puffer sind mit mixA, mixB, mixC und mixD bezeichnet. Der mixA ist für einen trockenen Ton; in diesem Puffer werden Wellenformdaten, denen kein Effekt beigegeben ist, eingestellt. Der mixB ist für einen Hall; in diesen Puffer werden in die Hall-Bearbeitung eingegebene Wellenformdaten eingestellt. Der mixC ist für einen Chorus; in diesen Puffer werden in die Chorus-Bearbeitung eingegebene Wellenformdaten eingestellt. Der mixD ist für eine Variation; in diesen Puffer werden in die Variations-Bearbeitung eingegebene Wellenformdaten eingestellt. Jeder dieser Puffer mixA, mixB, mixC und mixD wird aus einem Speicherbereich für 128 Sätze von Abtastwerten (2 × 128 = 256 Abtastwerte) gebildet, wobei jeder Satz aus einem Speicherbereich für einen linken Stereo-Seite(L)-Wellenformabtastwert und einem Speicherbereich für einen rechten Stereo-Seite(R)-Wellenformabtastwert besteht. Jeder Abtastwert der L-Seite und Abtastwert der R-Seite ist ein 16-Bit (2-Byte)-Abtastwert. Jeder von dem mixA, dem mixB, dem mixC und dem mixD wird einer Grenzwerteinstellung unterzogen, dass sie in Einheiten von 32-Byte (nämlich 16 Abtastwerten) von der obersten der Adressen sequentiell schnell gespeichert (Cache-Prozeß) werden.
  • 10 zeigt ein Beispiel eines Algorithmus der Bearbeitung, die von der Musiktonerzeugung durch eine Software-Tonquelle bis zu einer Kanal-Akkumulation reicht. Ein Wellenformspeicher 401 speichert Wellenformabtastwertdaten, die in einen vorgegebenen Rate abgetastet werden. In diesem Beispiel werden in dem RAM 102 vorbereitete Wellenformdaten verwendet. Alternativ können in dem RAM 103 vorbereitete Wellenformdaten verwendet werden. Für die Wellenformdaten in dem RAM 103 können Daten, die aus dem externen Speichermedium 105 oder der Festplatte 110 ausgelesen werden, Daten, die über die Netzwerk-I/O 107 eingegeben werden oder Wellenformdaten, die durch Abtasten der externen Eingabe 113 durch die Ton-I/O 112 erhalten werden, verwendet werden.
  • Die Software-Tonquelle führt die Musiktonerzeugungs-Bearbeitung 402 für die erforderliche Anzahl der Kanäle aus. Die maximale Anzahl der Kanäle wird entsprechend der Bearbeitungskapazität der CPU vorgegeben. Eine Berechnung kann bei irgendeinem Kanal gestartet werden. Die Berechnung kann zum Beispiel auf einer letzter-EIN/erster-AUS-Grundlage durchgeführt werden. Manchmal kann ein Kanal, bei dem ein Lautstärkepegel reduziert wurde, geringere Prioriät haben. Zur Musiktonerzeugung für einen Kanal, werden Wellenformdaten aus einem Wellenformspeicher durch eine Wellenform-Lese & Interpolations-Bearbeitung 411 ausgelesen und die ausgelesenen Wellenformdaten werden interpoliert. Dann werden die interpolierten Wellenformdaten durch ein Filter 412 gefiltert. Die gefilterten Wellenformdaten werden dann in acht Routen oder Leitwegen, die mit vorgegebenen Koeffizienten jeweils durch Multiplizierer 413-1 bis 413-8 multipliziert werden, geteilt. Die Ausgaben der acht Leitwege enthalten eine dryL-Ausgabe, die durch Multiplizieren mit einem dryL (linke Stereo-Seite)-Koeffizienten durch den Multiplizierer 413-1 erhalten werden, eine dryR-Ausgabe, die durch Multiplizieren mit einem dryR (rechte Stereo-Seite)-Koeffizienten durch den Multiplizierer 413-2 erhalten werden, eine Hall L-Ausgabe, die durch Multiplizieren mit einem Hall L-Koeffizienten durch den Multiplizierer 413-3 erhalten werden, eine Hall R-Ausgabe, die durch Multiplizieren mit einem Hall R-Koeffizienten durch den Multiplizierer 413-4 erhalten werden, eine Chorus L-Ausgabe, die durch Multiplizieren mit einem Chorus L-Koeffizienten durch den Multiplizierer 413-5 erhalten werden, eine Chorus R-Ausgabe, die durch Multiplizieren mit einem Chorus R-Koeffizienten durch den Multiplizierer 413-6 erhalten werden, eine Variation L-Ausgabe, die durch Multiplizieren mit einem Variation L-Koeffizienten durch den Multiplizierer 413-7 erhalten werden, eine Variation R-Ausgabe, die durch Multiplizieren mit einem Variation R-Koeffizienten durch den Multiplizierer 413-8 erhalten werden. Die Ausgaben dieser acht Leitwege, die jeweils für jeden Kanal erhalten werden, werden unabhängig gemischt oder Kanal-akkumuliert durch Mischer 403-1 bis 403-8. Die akkumulierten Ausgaben werden durch Überlappungs-Bearbeitungsoperationen 404-1 bis 404-4 in L und R zum Überlappen gebracht. Die Überlappungsdaten werden in den Wellenformerzeugungspuffern mixA, mixB, mixC und mixD aus 9 eingestellt, wie es in 405-1 bis 405-4 gezeigt ist.
  • Der Anwender kann einen Effekteditierbefehl über die Tastatur 108 und die Anzeige 109 eingegeben. In Schritt 707 der in 7 gezeigten Haupt-Routine kann ein Effekt-Editierbearbeitungsprogramm ausgeführt werden, um den Algorithmus und Parameter eines Software-Effektors zu editieren. 11 zeigt ein Beispiel eines Algorithmus des Software-Effektors, der durch eine Edition des Anwenders eingestellt wird. Dieser Algorithmus ist geeignet, eine Vielzahl von Effekten den Wellenformdaten beizugeben, die in den Wellenformerzeugungspuffern mixA, mixB, mixC und mixD in der Bearbeitung aus 10 reserviert sind.
  • Beim Editieren des Algorithmus des Software-Effektors, werden die Anzahl von Blöcken der Bearbeitung durch den Software-Effektor (drei Blöcke in 11), die Bearbeitungs-Inhalte jedes Blocks (Hall, Chorus und Variation in 11) und Informationen über die Verbindung zwischen den Blöcken (Verbindung zwischen drei Blöcken durch fünf Additions(add)-Bearbeitungen in 11) zum Beispiel durch den Anwender bezeichnet. Das Effekt-Editier-Bearbeitungsprogramm ermittelt automatisch die Sequenz der Effekt-Bearbeitung bei einer Vielzahl von spezifizierten Blöcken und einer Vielzahl von Additions-Bearbeitungsoperationen, so dass die bezeichnete Verbindung freigegeben wird und ein Effekt-Bearbeitungsprogramm mit dem in 11 gezeigten Algorithmus einstellt wird. Der in 11 gezeigte Algorithmus kennzeichnet die Bearbeitung, die aus den folgenden Prozessen (1) bis (6) besteht.
    • (1) Die Wellenformdaten werden aus dem Wellenformerzeugungspuffer mixD 501-4 ausgelesen, die Variations-Bearbeitung 507 wird an den gelesenen Daten ausgeführt und die resultierenden Daten in den mixD überschrieben.
    • (2) Addition(mixD -> mixA) 508, Addition(mixD -> mixB) 502 und Addition(mixD -> mixC) 504 werden ausgeführt. Bei der Additions-Bearbeitung wird jeder Abtastwert in dem Puffer, der vor dem Symbol "->" steht, durch Multiplizieren der Abtastwerte mit einem vorgegebenen Koeffizienten gewichtet und der gewichtete Abtastwert wird dem Abtastwert in dem Puffer hinzugefügt, der hinter dem Symbol "->" steht. Die Additions-Bearbeitung wird mittels der allgemeinen Routine ausgeführt, während der Gewichtungs-Koeffizient vorher entsprechend bestimmt wird, welches Bearbeitungsergebnis gewichtet wird und wozu das Gewichtungsergebnis addiert wird. Somit werden die Ergebnissse der Variations- Bearbeitung 507 durch die Bearbeitungsoperationen 508, 502 und 504 gewichtet, und das Gewichtungsergebnis wird den Wellenformdaten in dem Trocken(dry)-Puffer mixA, dem Hall-Puffer mixB und dem Chorus-Puffer mixC hinzugefügt.
    • (3) Die Wellenformdaten in dem Wellenformerzeugungspuffer mixC werden durch Addieren der gewichteten Wellenformdaten, an denen die Variations-Bearbeitung durch die Additions-Bearbeitung 504 durchgeführt wurde, zu den originalen Wellenformdaten, die für die Eingabe in die Chorus-Bearbeitung vorbereitet wurden, erhalten. Diese Daten werden ausgelesen, die Chorus-Bearbeitung 506 wird mit den ausgelesenen Daten durchgeführt und das Ergebnis in den mixC überschrieben.
    • (4) Addition(mixC -> mixA) 509 und Addition(mixC -> mixB) werden ausgeführt. Durch die Additions-Bearbeitungsoperationen 509 und 503 werden die Ergebnisse der Chorus-Bearbeitung 506 gewichtet und die Gewichtungsergebnisse werden zu den Wellenformdaten in dem dry-Puffer mixA bzw. den Wellenformdaten in dem Hall-Puffer mixB addiert.
    • (5) Der Wellenformerzeugungspuffer mixB hält die Daten, die durch Addition der gewichteten Wellenformdaten, an denen die Variations-Bearbeitung 507 durch die Additions-Bearbeitung 502 ausgeführt wurde, zu den Wellenformdaten erhalten werden, die zur Eingabe in die Hall-Bearbeitung vorbereitet werden, und durch Addition der gewichteten Wellenformdaten, an den die Chorus-Bearbeitung 506 durch die Additions-Bearbeitung 503 ausgeführt wurde, zu diesen addierten Daten. Die resultierenden Wellenformdaten werden aus dem mixD ausgelesen, die Hall-Bearbeitung 505 wird an den ausgelesenen Daten durchgeführt und die resultierenden Daten werden in den mixB überschrieben.
    • (6) Addition(mixB -> mixA) 510 wird ausgeführt. Durch diese Additions-Bearbeitung 510 wird das Ergebnis der Hall-Bearbeitung 505 gewichtet und die Gewichtungsdaten werden zu den Wellenformdaten in dem dry-Puffer mixA addiert. Folglich werden die Wellenformdaten, die durch Beigeben von Variations-, Chorus- und Hall-Effekten zu den trockenen Wellenformdaten erhalten werden, in den mixA eingestellt.
  • Die vorher erwähnte Hall-Bearbeitung 505, Chorus-Bearbeitung 506 und Variations-Bearbeitung 507 geben die verschiedenen Effekte den Wellenformdaten des mixB, mixC und mixD bei und überschreiben diese Puffer mit den mit einem Effekt belegten Daten. Die Additions-Bearbeitungsoperationen 502 bis 504 und 508 bis 510 sind allgemeine Routinen. Daher kann eine geeignete Anordnung dieser Routinen die Sequenz für die Verbindungsbeziehung zwischen den Software-Effektoren, die für eine Vielzahl von Effektbeigebungsoperationen repräsentativ sind, ändern. Die allgemeinen Routinen "add" (Addition) sind verfügbar, da die Wellenformerzeugungspuffer für die entsprechenden Effekte getrennt vorgesehen sind, und diese Puffer sind in der gleichen Konfiguration vorgegeben. Bei der zweiten Ausführungsform der vorliegenden Erfindung können die Algorithmen der Software-Effektoren ohne Einschränkung beispielsweise mittels der Tastatur 108 bestimmt werden.
  • Nach der zweiten Ausführungsform der vorliegenden Erfindung kann eine Cache-Trefferquote durch Ausführen der Wellenformerzeugung durch die in 10 und 11 gezeigten Algorithmen in Einheiten, die der Cache-Leitungsgröße entsprechen, bemerkenswert gesteigert werden, wobei die Geschwindigkeit einer Musiktonsyntheseberechnung verbessert wird. Das Beschleunigen der Bearbeitung durch Caching (einen Cache-Prozeß) wird detaillierter bezugnehmend auf die in 12A und 12B gezeigten Flußdiagramme beschrieben.
  • 12A zeigt einen detaillierten Prozeß der Wellenform-Bearbeitung, der in Schritt 706 durchgeführt wird. Mittels dieser Wellenformerzeugungsbearbeitung wird eine Musiktonerzeugung mit in 10 und 11 gezeigten Algorithmen durchgeführt. In Schritt 901 wird zunächst eine Vorbereitung für eine Berechnung vorgenommen. Diese Vorbereitungs-Bearbeitung enthält die Bearbeitung zur Erkennung eines Kanals, für den eine Berechnung zur Wellenformerzeugung unter Bezug auf ein Software-Tonquellenregister durchgeführt wird, die Bearbeitung zur Ermittlung, in welchen der Wellenformerzeugungspuffer PB0 und PB1 die Wellenform für einen Block, der zu diesem Zeitpunkt durch diese Berechnung der Wellenformerzeugung erzeugt wurde, einzustellen ist und die Bearbeitung zum Löschen aller Bereiche der Wellenformerzeugungspuffer mixA, mixB, mixC und mixD. In Schritt 902 werden dann Berechnungen zur Erzeugung von Wellenformen für 16 Abtastwerte, die mit allen Kanälen assoziiert sind, durchgeführt. Es ist anzumerken, dass ein Zählen der Abtastwerte von Stereo L und R als eine Einheit zu 2 × 16 = 32 Abtastwerten führt. Die Bearbeitung von einem in 10 gezeigten Algorithmus wird für 16 Abtastwerte durchgeführt und die Wellenformen für 2 × 16 Abtastwerte werden in jeden der Wellenformerzeugungspuffer mixA, mixB, mixC und mixD gespeichert.
  • In Schritt 903 wird festgestellt, ob die Wellenformabtastwerte für einen Block erzeugt worden sind. Es wird nämlich festgestellt, ob 2 × 128 Abtastwerte in jedem der in 9 gezeigten Wellenformerzeugungspuffer mixA, mixB, mixC und mixD erzeugt wurden. Wenn die Erzeugung von Abtastwerten für einen Block nicht fertiggestellt wurde, geht der Prozeß zu Schritt 902 zurück, in welchem nächste 2 × 6 Abtastwerte erzeugt werden. Durch Wiederholen der Operation von Schritt 902 werden 2 × 16 Wellenformabtastwerte in die in 9 gezeigten Wellenformerzeugungspuffer mixA, mixB, mixC und mixD vom Anfang bis zu dem Ende geladen.
  • Wenn die Wellenformabtastwerte für einen Block in den in 9 gezeigten Wellenformerzeugungspuffern mixA, mixB, mixC und mixD in Schritt 903 erzeugt wurden, geht der Prozeß zu Schritt 904. In Schritten 904, 905 und 906 werden jeweils Variations-, Chorus- und Hall-Effekte beigegeben. In diesen Bearbeitungsoperationen werden die Variations-Bearbeitung, die Chorus-Bearbeitung, die Hall-Bearbeitung und die Additions-Bearbeitung entsprechend der Sequenz ausgeführt, die durch den vom Anwender bezeichneten Algorithmus bestimmt wird, wie bezugnehmend auf 11 beschrieben wurde. Es ist anzumerken, dass eine Änderung beim Einstellen der Algorithmen der Software-Effektoren durch die in 7A gezeigte andere Bearbeitung in Schritt 707 durchgeführt wird. Die Software-Effektor-Bearbeitungsoperationen von Schritten 904, 905 und 906 werden in Einheiten von 2 × 16 Abtastwerten in ähnlicher Weise zu Schritten 902 und 903 durchgeführt. Die Bearbeitung des in 11 gezeigten Algorithmus wird nämlich für 2 × 16 Abtastwerte vom Anfang des Wellenformerzeugungspuffers mixA, mixB, mixC und mixD durchgeführt. Die in 11 gezeigte Bearbeitung wird dann für die nächsten 2 × 16 Abtastwerte durchgeführt. Die Bearbeitung wird wiederholt bis 2 × 128 mit Effekten belegte Abtastwerte schließlich in dem Wellenformerzeugungspuffer mixA erhalten werden. Die jeweilige Variations-Bearbeitung, Chorus-Bearbeitung, Hall-Bearbeitung und Additions-Bearbeitung, die in 11 beschrieben wurden, wird in der Einheit von 2 × 16 Abtastwerten durchgeführt.
  • Es ist anzumerken, dass 12A nicht die Additions-Bearbeitung zeigt, die in 11 beschrieben wurde. Diese Additions-Bearbeitung ist tatsächlich in der Effekt-Block-Bearbeitung von Schritten 904 bis 906 enthalten. Die Variations-Bearbeitung von Schritt 904 enthält die Prozesse, die unter (1) und (2) vorher beschrieben wurden. Die Chorus-Berarbeitung von Schritt 905 enthält die Prozesse, die unter (3) und (4) vorher beschrieben wurden. Die Hall-Berarbeitung von Schritt 906 enthält die Prozesse, die unter (5) und (6) vorher beschrieben wurden.
  • Es ist anzumerken, das die Effekt-Bearbeitung in jedem der Schritte 904, 905 und 906 für einen Block eher zusammengefaßt als in Einheiten von 2 × 16 Abtastwerten durchgeführt werden können. Die Variations-Bearbeitung, Chorus-Bearbeitung, Hall-Bearbeitung und Additions-Bearbeitung, wie sie in 11 beschrieben wurden, kann nämlich für einen Block gleichzeitig durchgeführt werden. In diesem Fall funktioniert das schnelle Speichern (Cache-Prozeß) auch gut für jeweils 16 Abtastwerte während der 1-Block-Bearbeitung. Diese Einstellung kann die Trefferquote bei den Zwischen-Bearbeitungen innerhalb der Puffer senken, aber steigert die Trefferquote für die Register und innerhalb jedes Puffers für die Anwendung in einer jeweiligen Effekt-Bearbeitung noch. Im Vergleich mit der Klang-Bearbeitung nimmt die Effekt-Bearbeitung Zeit in Anspruch, bevor Ergebnisse erhalten werden, so dass es effizienter ist, die Abtastwerte für einen Block gleichzeitig zu bearbeiten. Noch effizienter ist es, wenn die zusammgefaßte Bearbeitung in Einheiten von 16 Abtastwerten lokal durchgeführt wird. Um nämlich das Auftreten von Cache-Fehlern zu erschweren, ist es eine gute Lösung, kontinuierliche Abschnitte von Daten in einem kurzen Zeitraum zu bearbeiten.
  • Nach der Software-Effektor-Bearbeitung werden die erzeugten Wellenformabtastwerte für einen Block (nämlich 2 × 128 Abtastwerte in dem mixA) zur Wiedergabe reserviert. Dies ist die Bearbeitung des Kopierens der Wellenformabtastwerte von dem mixA in einen der Wiedergabepuffer PB0 und PB1 (dem Puffer der augenblicklich nicht für eine Wiedergabe verwendet wird). Da die Bearbeitung des alternierenden Lesens der Wiedergabepuffer PB0 und PB1 bereits in Gang gesetzt wurde, bewirkt nur ein Kopieren der Wellenformen in den nicht für die Wiedergabe verwendeten Wiedergabepuffer ein Erklingen der betreffenden Wellenformen. In diesem Beispiel werden der Wellenformerzeugungspuffer mixA und die Wiedergabepuffer PB0 und PB1 getrennt von einander bereitgestellt. Alternativ können zwei Ebenen von mixA vorbereitet werden, um den PB0 bzw. PB1 bereitzustellen. In diesem Fall wird die Wellenformerzeugungs-Bearbeitung direkt an dem Wiedergabepuffern durchgeführt, so dass die Bearbeitung des Kopierens der in Schritt 907 erzeugten Wellenformen nicht erforderlich ist, wodurch die Bearbeitungsgeschwindigkeit verbessert wird.
  • 12B zeigt einen detaillierten Prozess zur Erzeugung von Wellenformen für 16 Abtastwerte (oder 2 × 16 = 32 Abtastwerte, wenn in Einheiten der Abtastwerte von Stereo L und R gerechnet wird), die in einem Schritt 902 aus 12A durchgeführt wird. In Schritt 911 wird zunächst eine Vorbereitung zur Berechnung für den ersten Kanal gemacht. Durch die Vorbereitung von Schritt 901 aus 12A werden die Kanäle, die einer Berechnung zur Wellenformerzeugung zu unterziehen sind, und die Priorität der Kanäle ermittelt. In Schritt 911 wird daher ein Kanal mit der höchsten Priorität zu einem ersten Kanal bestimmt. In Schritten 912 bis 918 werden Wellenformen für 16 Abtastwerte für den betroffenen Kanal erzeugt.
  • In Schritt 912 wird ein Hüllkurvenwert erhalten, der in einer späteren Bearbeitung verwendet wird. Der Hüllkurvenwert wird durch eine Hüllkurvenerzeugungs-Bearbeitung erzeugt, die eine Hüllkurvenwellenform von ADSR (Einschwing, Ausschwing, Sustain, Auskling) ausgibt. Der in Schritt 912 erzeugte Hüllkurvenwert wird im allgemeinen von den 16 Abtastwerten verwendet, die laufend zu bearbeiten sind. Ein erzeugter Hüllkurvenwert wird im allgemein von den 16 Abtastwerten verwendet. Ein Hüllkurvenwert wird nämlich für jede 16 Wellenformabtastwerte erzeugt. In Schritt 913 werden dann Erzeugen von einer Adresse, Auslesen von Wellenform und Interpolieren, wie es unter Bezug auf 411 aus 10 bezeichnet wurde, für 16 Abtastwerte durchgeführt. In Schritt 914 werden diese Abtastwerte gefiltert (412 aus 10). Zu diesem Zeitpunkt ist jeder dieser Abtastwerte noch nicht in Stereo L und R geteilt und daher einkanalig.
  • In Schritt 915 werden 2 × 16 Abtastwerte für den mixA berechnet. Die folgende Bearbeitung wird nämlich an den einkanaligen 16 Abtastwerten ausgeführt, die von der in 10 gezeigten Filter-Bearbeitung 412 ausgegeben werden. Ein Trocken-Gewichtungs-Koeffizient (dryL) wird zunächst dem in Schritt 912 erhaltenen Hüllkurvenwert hinzugefügt. Sowohl dieser Koeffizient als auch dieser Hülkurvenwert sind im dB-Maßstab, so dass die Addition äquivalent der Multiplikation im linearen Maßstab ist. Das Additionsergebnis von dem vorher erwähnten Koeffizienten und Hülkurvenwert wird dann in einer exponentiellen Konvertierung durch einen Addierer 413-1 mit jedem Wellenformabtastwert, der von der Filter-Bearbeitung 412 ausgegeben wird, multipliziert. So werden 16 Abtastwerte des dryL erhalten. Die dryR-Wellenformabtastwerte werden im allgemein auch auf die Weise unter Verwendung des dryR-Koeffizienten erhalten. Die dryL und R-Abtastwerte Wellenformen (2 × 16 = 32) werden in dem mixA akkumuliert.
  • Wie in Schritt 915 werden Hall L und R (2 × 16 = 32) Abtastwerte Wellenformen in dem mixB in Schritt 916 akkumuliert. In Schritt 917 werden Chorus L und R (2 × 16 = 32) Abtastwerte Wellenformen in dem mixC akkumuliert. In Schritt 918 werden Variation L und R (2 × 16 = 32) Abtastwerte Wellenformen in dem mixD akkumuliert. Es ist klar, dass unterschiedliche Gewichtungs-Koeffizienten für dry, Hall, Chorus und Variation verwendet werden.
  • In Schritt 919 wird dann festgestellt, ob Kanäle unberechnet verbleiben. Bei JA wird eine Vorbereitung für die nächste Berechnung in Schritt 920 ausgeführt und der Prozeß geht zu Schritt 912 zurück. Die Berechnung startet mit einem Kanal mit höherer Priorität. Diese Operation wird wiederholt, um Wellenformen für 16 Abtastwerte für jeden Stereo-Kanal L und R zu erzeugen, wobei die erzeugten Wellenformen in den Wellenformerzeugungspuffern mixA, mixB, mixC und mixD akkumuliert werden. Wenn kein Kanal mehr in Schritt 919 gefunden wird, wird die Wellenformerzeugungs-Bearbeitung beendet.
  • Bei der in 12A und 12B gezeigten Wellenformsyntheseberechnung wird die Wellenformerzeugung einschließlich einer Effektbeigebung in Einheiten von 2 × 16 Abtastwerten durchgeführt. Sechzehn Abtastwerte entsprechen 32 Bytes. Jeder der in 9 gezeigten Wellenformerzeugungspuffer mixA, mixB, mixC und mixD hat adäquate Grenzen, so dass diese Puffer sequentiell von dem oberen Ende in Einheiten von 32 Bytes schnell belegt (Cache-Prozeß) werden. Wenn daher auf den erste Abtastwert des mixA beispielsweise zugegriffen wird, werden die 16 Abtastwerte einschließlich dieses ersten Abtastwertes in den Cache-Speicher 117 schnell gespeichert (Cache-Prozeß). Da die Wellenformerzeugungs-Bearbeitung in dem Cache-Speicher 117 durchgeführt wird, während diese 16 Abtastwerte bearbeitet werden, kann die Wellenformerzeugung sehr schnell durchgeführt werden. Unter Berücksichtigung von Stereo L und R wird die Bearbeitung in Einheiten von 64 Bytes für 2 × 16 Abtastwerte durchgeführt. Benachbarte Gruppen von 16 Abtastwerten werden in unterschiedlichen Cache-Leitungen schnell gespeichert (Cache-Prozeß), so dass zwei Cache-Leitungen in diesem Fall verwendet werden.
  • Insbesondere bei der zweiten bevorzugten Ausführungsform kann der Anwender den Algorithmus zum Beigeben einer Vielzahl von Effekten beliebig bezeichnen, so dass die Effektbeigebung in einer Vielfalt von Sequenzen durchgeführt wird. Da die verschiedenen Wellenformerzeugungpuffer für verschiedene Effekte vorgesehen sind, wird die Bearbeitung eines Effekts in einem entsprechenden Puffer durchgeführt. Dieser Puffer speichert nur Wellenformabtastwerte, die für den beigegebenen Effekt verwendet werden. Dieser Puffer weist nämlich keinen Abtastwert auf, der für die betreffende Effektbeigebung unnötig ist. Die Anordnung steigert die Cache-Treffereffezienz bemerkenswert, wodurch der Effekt des Caching verbessert wird.
  • In dem vorher erwähnten zweiten bevorzugten Beispiel wird, wie aus Schritten 902 und 903 aus 12A und aus 12B zu ersehen ist, die Bearbeitung der Erzeugung von Wellenformen für 16 Abtastwerte bei allen Kanälen in einer inneren Schleife ausgeführt und das Durchführen dieser Wellenformerzeugungs-Bearbeitung für 16 Abtastwerte wird in einer äußeren Schleife aufrecht erhalten bis ein Block bearbeitet ist, wobei die Wellenformen für einen Block erzeugt werden. In einigen Fällen können die Bearbeitungsoperationen von innerer und äußerer Schleife miteinander vertauscht werden. Die Wellenformerzeugung für 16 Abtastwerte, die einem Kanal zugeordnet ist, kann in der inneren Schleife wiederholt werden, bis die Wellenformen für einen Block erzeugt sind, was in der äußeren Schleife für jeden Kanal ausgeführt wird, wobei die endgültigen Wellenformen für einen Block erzeugt werden. Gemäß der zweiten bevorzugten Ausführungsform werden die Wellenformen in Einheiten von 16 Abtastwerten für alle Kanäle erzeugt, was eine hohe Cache-Trefferrate zur Folge hat. Wenn die CPU-Bearbeitungsleistung jedoch niedrig ist, kann die Wellenformerzeugung für einen Block innerhalb der Zeit eines Blocks nicht fertiggestellt werden. Im Gegensatz dazu werden bei der vorher beschrieben Lösung, bei der die inneren und äußeren Schleifen ausgetauscht werden, die Wellenformen für den Kanal mit höherer Priorität für einen Block zuerst erzeugt. Sogar wenn die Wellenformerzeugung für alle Kanäle innerhalb einer Blockzeit nicht fertiggestellt ist, wird der Kanal mit höherer Priorität zum Erklingen gebracht. Es ist offensichtlich, dass diese Lösungen gleichzeitig coexistieren, wobei die vorhergehende Lösung für eine vorgegebene Anzahl von Kanälen verwendet wird, während die letztere Lösung für die restlichen Kanäle angewendet wird.
  • In dem vorher erwähnten zweiten bevorzugten Beispiel wird der Cache-Speicher vom Write-Through-Typ (Druchlauf-Speichern) verwendet. Es ist klar, dass der Cache-Speicher von Write-Back-Typ (temporäres Speichern) verwendet werden kann. Bei dem Write-Back-Typ wird die Wellenform-Aktualisierungs-Bearbeitung in dem Cache-Speicher freigegeben, was in einer schnelleren Wellenformerzeugung resultiert. Es ist auch klar, dass der Anwender nicht nur die Verbindungszustände bei den Effektor-Modulen bestimmen kann, sondern auch die Anzahl und Inhalte dieser Effektor-Module. Die Anzahl der dem Cachingprozeß unterzogenen Abtastwerte ist von CPU zu CPU unterschiedlich, so dass Einheiten, bei welchen eine Wellenformerzeugung durchgeführt wird, dementsprechend geändert werden können. Die Anzahl von Puffern zur Wellenformerzeugung ist vier, die mixA bis mixD in der vorher erwähnten zweiten bevorzugten Ausführungsform. Dies entspricht dem, dass die Anzahl von Effekt-Blöcken in den folgenden Stufen drei ist. Entsprechend der Anzahl von Effekt-Blöcken wird die Anzahl der Puffer geändert. Da die Puffer zum Beigeben der Effekte und die Puffer für Trocken-Töne erforderlich sind, wird die gesamte Anzahl von Puffern auf die Anzahl von Effekt-Blöcken plus eins eingestellt.
  • Gemäß dem zweiten Beispiel der Anmeldung weist eine Musikvorrichtung zum Erzeugen von Musiktönen mit Hilfe einer Software folgendes auf: einen Prozessor, der jede Rahmenperiode (Blockperiode) zum Ausführen der Software periodisch arbeitet, um eine Synthese eines Satzes von Wellenformabtastwerten, die einer Rahmenperiode zugeordnet sind, einen Puffer mit einer Kapazität, die zum Speicher der Wellenformabtastwerte, die einer Rahmenperiode zugeordnet sind, ausreichend ist, wobei der Puffer als ein Arbeitsbereich von dem Prozessor verwendet wird zum Speichern eines temporärren Satzes von Wellenformabtastwerten, die durch dem Prozessor während des Verlaufs der Synthese behandelt werden und zum Speichern eines Endsatzes der Wellenformabtastwerte, die nach Fertigstellen der Synthese erhalten werden, einen Cache mit einer Kapazität, die zum Speichern eines Unter-Satzes der Wellenformabtastwerte ausreichend ist, welcher ein ganzzahliger Teil des Satzes ist, der einer Rahmenperiode zugeordnet ist, so dass die Kapazität des Puffers auf ein ganzzahliges Vielfaches der Kapazität des Caches eingestellt wird, wobei der Cache durch den Prozessor getroffen wird, bevor der Puffer durch den Prozessor adressiert wird, so dass die Synthese jedes Unter-Satzes der Wellenformabtastwerte effizienter ausgeführt wird, als wenn der Puffer sonst durch den Prozessor adressiert wird, und einen Konvertierer, der den Endsatz der Wellenformabtastwerte, die in dem Puffer gespeichert sind, in Musiktöne konvertiert.
  • Ferner weist die Musikvorrichtung, die einen Prozessor zum Erzeugen von Musiktönen verwendet, folgendes auf: ein Synthese-Modul, das durch den Prozessor in jeder Rahmenperiode periodisch ausgeführt wird, so dass eine Synthese eines Satzes von Wellenformabtastwerten, die einer Rahmenperiode zugeordnet sind, ausgeführt werden, eine Vielzahl von Puffern, die jeweils eine Kapazität aufweisen, die ausreichend ist, um den Satz der Wellenformabtastwerte, die der gleichen Rahmenperiode zugeordnet sind, nach der Synthese zu speichern, eine Vielzahl von Effektor-Modulen, die jeweils mit einem entsprechenden der Puffer verbunden sind, wobei jedes Effektor-Modul durch den Prozessor ausgeführt wird, um eine Modifikation des Satzes der Wellenformabtastwerte auszuführen, der in dem entsprechenden Puffer reserviert ist, um einen unterschiedlichen Effekt zu erzeugen, ein Misch-Modul, das durch den Prozessor ausgeführt wird, um eine Berechnung eines in einem Puffer gespeicherten Satzes der Wellenformabtastwerte mit einem in einem anderen Puffer gespeicherten Satz der Wellenformabtastwerte auszuführen, so dass unterschiedliche Effekte gemischt werden, eine Steuereinheit, die einen Gesamteffekt-Algorithmus bereitstellt, um den Prozessor anzuweisen, die Effektor-Module und das Misch-Modul in einer vorgegebenen Folge auszuführen, um den Gesamteffekt zu erzeugen, der eine gewünschte Mischung der unterschiedlichen Effekte ist, und die einen der Puffer bezeichnet, den Satz der Wellenformabtastwerte nach Fertigstellen der Modifikation und der Berechnung zu speichern, und einen Konvertierer zum Konvertieren des Satzes der Wellenformabtastwerte, die in dem bezeichneten Puffer gespeichert sind, in die Musiktöne mit dem Gesamteffekt.
  • Vorzugsweise wird das Misch-Modul durch den Prozessor ausgeführt, um eine Berechnung des Addierens eines in einem Puffer gespeicherten Satzes der Wellenformabtastwerte zu einem anderen in einem anderen Puffer gespeicherten Satzes der Wellenformabtastwertein in einem gewünschten Verhältnis, so dass unterschiedliche Effekte gemischt werden, wobei der Satz der Wellenformabtastwerte in dem anderen Puffer nach der Berechnung reserviert wird.
  • Das Misch-Modul wird vorzugsweise gemeinsam verwendet, um die Berechnung zwischen irgendeinem Paar der Puffer auszuführen, wie durch den Gesamteffektalgorithmus spezifiziert wurde.
  • Vorzugsweise weist die Steuereinheit ein Textaufbereitungsprogramm (Editor) auf, das den Gesamteffektalgorithmus editiert, um die Sequenz anzuordnen, mit welcher der Prozessor die ausgewählten der Effektor-Module und das Misch-Modul in einer gewünschten Reihenfolge sequentiell ausführt, um den gewünschten Gesamteffekt zu erzeugen.
  • Die erfinderische Musikvorrichtung weist vorzugsweise ferner einen Cache mit einer Kapazität auf, die zum Speichern eines Unter-Satzes der Welleformabtastwerte ausreichend ist, der ein ganzzahliger Teil des Satzes der Wellenformabtastwerte ist, die einer Rahmenperiode zugeordnet sind, so dass die Kapazität eines jeweiligen Puffers auf ein ganzzahliges Vielfaches der Kapazität des Cache eingestellt wird, wobei der Cache durch den Prozessor getroffen wird, bevor der Puffer durch den Prozessor adressiert ist, so dass die Synthese jedes Unter-Satzes der Wellenformabtastwerte effizienter ausgeführt wird, als wenn jeder Puffer anderes durch den Prozessor addressiert wird.
  • Das Verfahren zum Erzeugen von Musiktönen gemäß einer Spielinformation durch eine Vielzahl von Kanälen weist folgendes auf: sukzessives Bereitstellen einer Spielinformation, um eine Erzeugung von Musiktönen zu befehlen, periodisches Bereitstellen eines Triggersignals mit einer relativ langsamen Rate zum Definieren einer Rahmenperiode (Blockperiode) zwischen aufeinanderfolgenden Triggersignalen, periodisches Bereitstellen eines Abtastsignals mit einer relativ schnellen Rate, so dass eine Vielzahl von Abtastsignalen innerhalb einer Rahmenperiode auftreten, Ausführen einer kontinuierlichen Synthese im Ansprechen auf ein Triggersignal, um einen Satz von Wellenformabtastwerten der Musiktöne durch die Vielzahl der Kanäle für eine Rahmenperiode in Entsprechung zu der bereitgestellten Spielinformation zu erzeugen, Zugreifen auf einen Puffer mit einer Kapazität, die zum Speichern der Wellenformabtastwerte, die einer Rahmenperiode zugeordnet sind, ausreichend ist, wobei der Puffer als ein Arbeitsbereich durch den Prozessor verwendet wird, um einen temporären Satz der Wellenformabtastwerte zu speichern, die durch den Prozessor während des Verlaufs der kontinuierlichen Synthese behandelt werden, und um einen Endsatz der Wellenformabtastwerte zu speichern, die bei Fertigstellung der kontinuierlichen Synthese erhalten werden und welche durch die Vielzahl der Kanäle akkumuliert werden, Adressieren eines Cache mit einer Kapazität, die zum Speichern eines Unter-Satzes der Wellenformabtastwerte ausreichend ist, der ein ganzzahliger Teil des Satzes der Wellenformabtastwerte ist, die einer Rahmenperiode zugeordnet sind, wobei der Cache durch den Prozessor getroffen wird, bevor der Puffer durch den Prozessor adressiert wird, so dass die kontinuierliche Synthese jedes Unter-Satzes der Wellenformabtastwerte effizienter ausgeführt wird, als wenn der Puffer sonst durch den Prozessor adressiert wird, und Konvertieren jedes der in dem Puffer reservierten Wellenformabtastwerte, die in dem Puffer als der Endsatz reserviert sind, im Ansprechen auf ein jeweiliges Abtastsignal in ein entsprechendes analoges Signal, um die Musiktöne zu erzeugen.
  • Das Verfahren zum Erzeugen von Musiktönen gemäß einer Spielinformation weist folgendes auf: sukzessives Bereitstellen einer Spielinformation, um eine Erzeugung von Musiktönen zu befehlen, periodisches Bereitstellen eines Triggersignals mit einer relativ langsamen Rate zum Definieren einer Rahmenperiode zwischen aufeinanderfolgenden Triggersignalen, periodisches Bereitstellen eines Abtastsignals mit einer relativ schnellen Rate, so dass eine Vielzahl von Abtastsignalen innerhalb einer Rahmenperiode auftreten, periodisches Ausführen eines Synthese-Moduls in jeder Rahmenperiode im Ansprechen auf jedes Triggersignal, so dass eine Synthese eines Satzes von Wellenformabtastwerten, die jeder Rahmenperiode zugeordnet sind, ausgeführt werden, Adressieren einer Vielzahl von Puffern mit jeweils einer Kapazität, die zum Speichern des Satzes der Wellenformabtastwerte ausreichend ist, der der gleichen Rahmenperiode nach der Synthese zugeordnet ist, Ausführen einer Vielzahl von Effektor-Modulen, die jeweils mit einem entsprechenden der Puffer verbunden sind, um eine Modifikation des Satzes der Wellenformabtastwerte auszuführen, die in entsprechenden Puffern reserviert sind, um unterschiedliche Effekte zu erzeugen, Ausführen eines Misch-Moduls, das ausgeführt wird, um eine Berechnung an dem Satz der Wellenformabtastwerte, die in einem Puffer gespeichert sind, mit einem anderen Satz der Wellenformabtastwerte, die in einem anderen Puffer gespeichert sind, auszuführen, so dass unterschiedliche Effekte gemischt werden, Bereitstellen eines Gesamteffektalgorithmus, um eine Ausführung der anderen Effektor-Module und des Misch-Moduls in einer vorgegebenen Sequenz zu befehlen, um den Gesamteffekt zu erzeugen, der eine gewünschte Mischung der unterschiedlichen Effekte ist, Bezeichnen eines der Puffer zum Speichern des Satzes der Wellenformabtastwerte nach Fertigstellen der Modifikation und der Berechnung, und Konvertieren jedes der in dem bezeichneten Puffer gespeicherten Wellenformabtastwerte im Ansprechen auf ein jeweiliges Abtastsignal in ein entsprechendes analoges Signal, so dass die Musiktöne mit dem Gesamteffekt erzeugt werden.
  • Nachfolgend wird ein elektronisches Musikinstrument beschrieben, das als eine bevorzugte Ausführungsform der vorliegenden Erfindung praktiziert wird. Grundsätzlich hat die bevorzugte Ausführungsform im allgemeinen die gleiche Hardware-Konfiguration, wie die des in 1 gezeigten ersten bevorzugten Beispiels, und eine Software-Tonquelle, die entsprechend dem in 2 gezeigten Prinzip arbeitet, und sie arbeitet entsprechend den in 7A und 7B gezeigten Flußdiagrammen.
  • Zunächst wird eine bei Eingabe eines Ton-EIN-Ereignisses durchgeführte Ton-EIN-Bearbeitung für das Beispiel der MIDI-Bearbeitung aus Schritt 705 von 7A unter Bezug auf 13 beschrieben. Wenn das eingegebene MIDI-Ereignis ein Ton-EIN-Ereignis ist, wird die dem Ton-EIN-Ereignis zugewiesene MIDI-Kanal-Nummer (MIDI ch) in einem MC-Register aufgezeichnet, die Tonnummer wird in einem NN-Register aufgezeichnet und die Geschwindigkeit in einem VE-Register in Schritt S21.
  • Bei der bevorzugten Ausführungsform wird ein Timbre für jeden MIDI-Kanal ausgewählt und jeder Timbreparameter spezifiziert ein besonderes Musiktonerzeugungs-Verfahren. Jeder Timbreparameter spezifiziert nämlich die Art der Tonquelle zur Erzeugung eines Tons, der jedem MIDI-Kanal zugewiesen wird. Auf der Grundlage der Art der Tonquelle, die in den MIDI-Kanal eingestellt ist, der in dem vorher erwähnten MC-Register registriert ist, wird die Tonzuweisung an den betroffenen aktiven Kanal (Klangkanal) durchgeführt (Schritt S22). Dann wird für das Klangkanalregister des in Schritt 22 zugewiesenen aktiven Kanals eine Vorbereitung zur Erzeugung eines Tons mit der Tonnummer NN und der Geschwindigkeit VE durch die entsprechende Art der Tonquelle vorgenommen. In Schritt S24 wird Ton-EIN in das entsprechende aktive Kanalregister des betroffenen aktiven Kanals geschrieben. Ein entsprechender Kanal wird zugewiesen, wenn ein Ton-EIN-Ereignis auftritt, wobei die Musiktonerzeugungs-Bearbeitung auf der Grundlage der entsprechenden Art der Tonquelle vorbereitet wird.
  • Es folgt die detaillierte Beschreibung der Wellenformerzeugungs-Bearbeitung von Schritt 706, die in der Haupt-Routine aus 7A durchgeführt wird, unter Bezug auf 14. Bei der dritten bevorzugten Ausführungsform bezieht sich die Wellenformerzeugungs-Bearbeitung auf eine Tonquellen-Bearbeitung. Diese Tonquellen-Bearbeitung erzeugt Musiktonwellenformabtastwerte durch eine Berechnung und stellt die erzeugten Wellenformabtastwerte mit vorgegebenen Effekten bereit. Wenn der in 7A gezeigte Trigger eine 1-Block-Wiedergabebeendigungs-Unterbrechung gemäß dem vorher erwähnten Abschnitt (2) ist, startet die Tonquellen-Bearbeitung. In Schritt S31 wird zunächst eine Vorbereitung unternommen. Wie vorhergehend beschrieben, wird bei dem Musiktonerzeugungs-Verfahren nach der vorliegenden Erfindung ein Musikton durch Tonquellen von einer Vielzahl von Arten synthetisiert. Musiktöne werden daher mittels eines Musiktonsynthetisierungs-Algorithmus erzeugt und werden zusammengefaßt für eine Vielzahl von Klangkanälen erzeugt. Musiktöne für aktive Kanäle werden dann zusammengefaßt für eine Vielzahl von aktiven Kanälen mittels eines anderen Musiktonsynthetisierungs-Algorithmus erzeugt. Durch das gleiche Programm erzeugte Musiktonwellenformen werden somit zusammengefaßt erzeugt, wodurch die Trefferrate des Cache verbessert wird und daher die Bearbeitungsgeschwindigkeit gesteigert. Bei dieser Vorbereitungs-Bearbeitung von Schritt S31 wird daher ein aktiver Kanal ermittelt, der einen Musikton auf der Grundlage eines zuerst benützten Musiktonsynthetisierungs-Algorithmus, zum Beispiel eine PCM-Tonquelle, erzeugt. Für stille Kanäle, die momentan keinen Musikton erzeugen, wird die Wellenformerzeugungs-Bearbeitung ausgeblendet.
  • In Schritt S32 werden entsprechend der Einstellung der Klangkanalregister für den betroffenen aktiven Kanal Musiktonwellenformen für 16 Abtastwerte des aktiven Kanals durch eine Berechnung zusammengefaßt erzeugt. Die Musiktonwellenformabtastwerte werden für 16 Abtastwerte zusammengefaßt erzeugt, weil ein Musiktonwellenformabtastwert zwei-Byte-Daten ist und 32-Byte-Daten zusammengefaßt zu dem Cache übertragen werden, wie es vorher beschrieben wurde. Dies steigert die Bearbeitungsgeschwindigkeit.
  • In Schritt S33 wird dann festgestellt, ob eine Erzeugung von Musiktonwellenformabtastwerten für einen Block des betroffenen aktiven Kanals fertiggestellt wurde. Wenn die Erzeugung noch nicht fertiggestellt wurde, wird eine Vorbereitung für eine nächste Berechnung von Wellenformabtastwerten vorgenommen (Schritt 34) und dann geht der Prozeß zu Schritt S32 zurück. Wenn die Erzeugung fertiggestellt wurde und die Entscheidung von Schritt S33 JA ist, geht der Prozeß zu Schritt S35, in welchem festgestellt wird, ob die Erzeugung der Musiktonwellenformabtastwerte für einen Block für alle aktiven Kanäle, die den ersten Tonquellen-Algorithmus anwenden, fertiggestellt worden ist.
  • Wenn die Entscheidung NEIN ist, dann wird in Schritt S36 eine Vorbereitung für eine Musiktonwellenformerzeugung durch eine Berechnung für einen nächsten Kanal unternommen, der diesen Tonquellen-Algorithmus verwendet, und der Prozeß geht zu Schritt S32 zurück. Wenn andererseits die Erzeugung der Musiktonwellenformen für alle Kanäle auf der Grundlage dieses Algorithmus abgeschlossen ist, geht der Prozeß zu Schritt S37, in welchem ermittelt wird, ob die Musiktonerzeugungs-Bearbeitung für alle Tonquellen-Algorithmen abgeschlossen ist. Wenn festgestellt wurde, dass ein Tonquellen-Algorithmus noch nicht ausgeführt ist, geht der Prozeß zu Schritt S38, in welchem eine Vorbereitung für die Musiktonwellenformerzeugungs-Bearbeitung, die einen nächsten Algorithmus verwendet, vorgenommen wird und dann geht der Prozeß zurück zu S32. Die Musiktonwellenformerzeugungs-Bearbeitung, die den nächsten Algorithmus anwendet, startet in Schritt S32.
  • Wenn die Erzeugung der Musiktonwellenformabtastwerte für einen Block für alle entsprechenden aktiven Kanäle für alle Tonquellen-Algorithmen abgeschlossen wurde, wird die Entscheidung von Schritt S37 JA, worauf Schritt S39 ausgeführt wird. Dem Schritt S39 nachfolgend wird die Effekt-Bearbeitung für die Musiktonwellenformabtastwerte durchgeführt, die durch eine Berechnung in Schritten S31 bis S38 erzeugt wurden.
  • In Schritt S39 wird zunächst eine Vorbereitung für die Effekt-Berechnung gemacht. In dieser Bearbeitung wird die Sequenz der durchzuführenden Effekt-Bearbeitungsoperationen ermittelt. Es ist anzumerken, dass die Effekt-Bearbeitung für Kanäle, für die Eingabe/Ausgabe-Pegel Null sind, ausgeblendet wird. In Schritt S40 wird die Effekt-Bearbeitung für einen Kanal entsprechend der Einstellung des Effekt-Kanalregisters durchgeführt. Gemäß der dritten bevorzugten Ausführungsform der Erfindung wird das Effekt-Kanalregister somit für jede Effekt-Bearbeitung vorgesehen und ein Effektbeigebungs-Algorithmus wird für jedes Kanalregister bezeichnet.
  • Es wird dann ermittelt, ob die Effekt-Bearbeitung für alle Effekte abgeschlossen wurde (Schritt S41). Wenn die Effekt-Bearbeitung nicht abgeschlossen wurde, wird eine Vorbereitung für eine nächste Effekt-Bearbeitung in Schritt S42 vorgenommen und der Prozeß geht dann zu Schritt S40 zurück. Wenn andererseits die Effekt-Bearbeitung abgeschlossen wurde, geht der Prozeß zu Schritt S43, in welchem eine Wiedergabe von Stereo-Wellenformen für einen Block reserviert wird. Genauer gesagt, die Stereo-Wellenformen für einen Block werden zu den Bereichen der zwei Blöcke übertragen, in welchen eine DMAB-Wiedergabe abgeschlossen wurde.
  • Die Musiktonwellenformen werden somit durch eine Software erzeugt und ausgegeben. Nach der dritten bevorzugten Ausführungsform können die Musiktonwellenformen unter Verwendung von drei Tonquellenarten erzeugt werden, einer PCM-Tonquelle, einer FM-Tonquelle und einer Tonquelle nach physikalischem Modell. Nach der dritten bevorzugten Ausführungsform werden nämlich die Wellenformerzeugungsprogramme und Effektprogramme zur Durchführung verschiedener Effekt-Bearbeitungsoperationen entsprechend dieser drei Tonquellenarten vorbereitet. Diese Programme verwenden überdies eine gemeinsame Wellenform-Bearbeitungs-Unterroutine zur Durchführung ihrer Bearbeitung. Die Verwendung der gemeinsamen Unterroutine trägt dazu bei, die Größe jedes Programms und die gesicherte Speicherkapazität der Speichervorrichtung zu reduzieren. Da die Formate von verschiedenen Datenabschnitten standardisiert sind, können Musiktöne durch einen integrierten Musiktonerzeugungs-Algorithmus synthetisiert werden, bei welchem verschiedene Tonquellenarten coexistieren.
  • 15A bis 15C zeigen drei besondere Beispiele der Wellenformerzeugungs-Bearbeitung für 16 Abtastwerte, die in Schritt S32 von 14 ausgeführt werden. 15A kennzeichnet ein Beispiel der Musiktonerzeugungs-Bearbeitung durch eine PCM-Tonquelle, 15B kennzeichnet ein Beispiel der Musiktonerzeugungs-Bearbeitung durch eine FM-Tonquelle. Und 15C kennzeichnet ein Beispiel der Musiktonerzeugungs-Bearbeitung durch eine Tonquelle nach physikalischem Modell. In jedem Beispiel werden, wenn die Bearbeitung einmal durchgeführt wird, Musiktonwellenformen für 16 Abtastwerte erzeugt. Jeder in 15A bis 15C gezeigte Schritt kennzeichnet eine vorher beschriebene Wellenform-Bearbeitungs-Unterroutine. Jede Musiktonerzeugungs-Bearbeitung besteht aus einer Kombination von Wellenform-Bearbeitung-Unterroutinen. Einige Wellenform-Bearbeitungs-Unterroutinen können daher von unterschiedlichen Tonquellenarten verwendet werden. Das heißt, dass ein gemeinsames Verwenden von Unterroutinen in der vorliegenden Ausführungsform realisiert ist.
  • Bei der Musikton-Bearbeitung der in 15A gezeigten PCM-Tonquelle, wird zuerst eine Wellenformtabelle in Schritt S51 gelesen. Bei der Bearbeitung wird ein Lese-Adressen-Fortschreiten mit einer einer Tonnummer NN entsprechenden Geschwindigkeit erzeugt. Wellenformdaten werden aus der in dem RAM 103 gespeicherten Wellenformtabelle ausgelesen und die gelesenen Daten werden unter Verwenden des Bruchteil der Lese-Adresse interpoliert. Für die Interpolation sind eine Zwei-Punkt-Interpolation, eine Vier-Punkt-Interpolation, eine Sechs-Punkt-Interpolation und so weiter verfügbar. In diesem Beispiel wird eine Unterroutine, die eine Vier-Punkt-Interpolation an den aus der Wellenformtabelle ausgelesenen Wellenformdaten durchgeführt, in Schritt S51 verwendet. In Schritt S52 wird dann eine DCF-Bearbeitung vierten Grades in Schritt S52 durchgeführt. Bei dieser Bearbeitung wird ein Filtervorgang durch einen entsprechend den Geschwindigkeitsdaten eingestellter Timbreparameter und so weiter durchgeführt. In diesem Beispiel wird ein Digital-Filter vierten Grades, wie beispielsweise ein Bandpaß-Filter, verwendet.
  • In Schritt S53 wird dann eine Hüllkurvenerzeugung durchgeführt. In diesem Beispiel wird eine Hüllkurvenwellenform erzeugt, die aus vier Phasen von Einschwing, #1 Ausschwing, #2 Ausschwing und Freigabe besteht. In Schritt S54 wird dann eine Lautstärke-Multiplikation und Akkumulation-Bearbeitung durchgeführt. Bei dieser Bearbeitung wird die aus der Wellenformtabelle ausgelesene (Schritt S51) und gefilterte (Schritt S52) Musiktonwellenform mit den Hüllkurvendaten multipliziert, die in Schritt S53 erzeugt werden, wobei der resultierende Musiktonwellenformabtastwert für jeden Kanal in einem Ausgaberegister und einem Effektregister akkumuliert wird. Genauer gesagt, die Hüllkurvenwellenform wird zu einem Ausgabeübertragungspegel mit einem logarithmischen Maßstab addiert und die Ergebnissumme wird logarithmisch mit der Wellenform multipliziert. Es ist anzumerken, dass vier Registern entsprechende Daten, nämlich zwei Stereo-Ausgaberegister (Akkumulationspuffer #OL und #OR) und zwei Effektregister (Akkumulationspuffer #1 und #2) ausgegeben werden.
  • 15B zeigt ein Beispiel der Musiktonerzeugungs-Bearbeitung durch eine FM-Tonquelle. Bei dieser Bearbeitung werden in Schritt S61 Wellenformdaten selektiv aus einer Sinus-Tabelle, einer Dreieckskurven-Tabelle und so weiter mit einer einer Tonnummer NN entsprechenden Geschwindigkeit gelesen. Es wird keine Interpolation an den gelesenen Daten ausgeführt. In Schritt S62 wird dann eine Hüllkurvenwellenform erzeugt. In diesem Beispiel wird eine Hüllkurvenwellenform mit zwei Phasen erzeugt. Die erzeugte Hüllkurvenwellenform wird für einen Modulator verwendet. In Schritt S63 wird dann eine Lautstärke-Multiplikation durchgeführt. Genauer gesagt, die Hüllkurvenwellenform wird zu einem Modulations-Faktor in logarithmischen Maßstab addiert und die Ergebnissumme wird logarithmisch multipliziert mit den aus der Wellenformtabelle gelesenen Wellenformdaten oder die Ergebnissumme wird mit den Welleformdaten multipliziert, wobei die Summe von linear zu exponentiell konvertiert wird.
  • In Schritt S64 wird die Wellenformtabelle ausgelesen. Bei dieser Bearbeitung wird das Ergebnis der vorher erwähnten Lautstärke-Multiplikation zu einer Phase addiert, die so erzeugt wurde, dass die Phasen sich mit einer der Tonnummer NN entsprechenden Geschwindigkeit ändern. Die Sinus-Tabelle, die Dreieckskurven-Tabelle und so weiter werden mit einem Ganzzahl-Teil der als eine Adresse verwendeten Ergebnissumme selektiv gelesen. Eine lineare Interpolation entsprechend dem Bruchzahl-Teil der Ergebnissumme wird an der Lese-Ausgabe durchgeführt. In Schritt S65 wird ein digitaler Filterprozeß zweiter Ordnung an den interpolierten Lese-Ausgaben durchgeführt. In Schritt S66 wird eine Vier-Phasen-Hüllkurvenerzeugungs-Bearbeitung durchgeführt. Diese Bearbeitung ist im allgemeinen die gleiche wie die Bearbeitung von Schritt S53 aus 15A. In Schritt S67 wird eine Lautstärke-Multiplikation und Akkumulations-Bearbeitung durchgeführt. In diesem Beispiel werden die Ergebnisdaten an drei Akkumulationsregister (L- und R-Register und ein Effekt-Register) ausgegeben.
  • 15C zeigt ein Beispiel der Musiktonerzeugungs-Bearbeitung durch eine Tonquelle nach physikalischem Modell. Bei dieser Bearbeitung werden in Schritt S71 eine TH (throat = Kehlkopf)-Modul-Bearbeitung zum Emulieren der Resonanz eines Kehlkopfes ausgeführt. Bei dieser Bearbeitung werden zum Beispiel eine primäre DCF-Bearbeitung und eine Verzögerung ohne Ein-Stufen-Interpolation durchgeführt. In Schritt S72 wird dann eine GR (growl = Brummen)-Modul-Bearbeitung zur Emulation der Vibration eines Kehlkopfes durchgeführt. Bei dieser Bearbeitung wird beispielsweise die Verzögerungs-Bearbeitung mit ein Ein-Stufen-Interpolation durchgeführt. Es ist anzumerken, das die Bearbeitungsoperationen in Schritten 71 und 72 nicht für einen Saiten-Modell durchgeführt werden. In Schritt S73 wird dann einen NL (nichtlineare)-Modul-Bearbeitung zur Emulation eines Blas-Instrumentmundstückes (für eine Rohr-Modell) oder zur Emulation eines Kontakts zwischen Bogen und Saite (für ein Saiten-Modell) durchgeführt, um eine Anregungswellenform zu erzeugen. Bei dieser Bearbeitung werden eine lineare DCF, DCF zweiter Ordnung, eine Referenz-Funktionstabelle ohne Interpolation und eine Referenz-Funktionstabelle mit Interpolation verwendet. In Schritt S74 wird eine LN (lineare)-Modul-Bearbeitung mit einer vorgegebenen Verzögerung zur Emulation der Resonanz eines Rohrs (für ein Rohr-Modell) oder zur Emulation der Länge einer Saite (für ein Saiten-Modell) durchgeführt. Bei dieser Bearbeitung werden beispielsweise eine Verzögerung mit Zwei-Stufen-Interpolation, eine lineare Interpolation und eine lineare DCF durchgeführt.
  • In Schritt S75 wird eine RS (resonator = Resonator)-Modul-Bearbeitung zur Emulation der Resonanz am Ausgang eines Rohrs oder zur Emulation der Resonanz eines Körpers (für ein Saiten-Modell) durchgeführt.
  • In Schritt S76 wird im allgemeinen die gleiche Lautstärke-Multiplikation und Akkumulations-Bearbeitung durchgeführt, wie vorher erwähnt. Bei diesem Beispiel sind fünf Leitungen von Ausgaben vorgesehen.
  • Für die Konfiguration dieser Tonquelle nach physikalischem Modell wird auf Japanische nichtgeprüfte Patentveröffentlichungen Nr. Hei 5-143078 und Hei 6-83364 Bezug genommen.
  • Nachfolgend wird unter Bezug auf 16 eine Hall-Bearbeitung als besonderes Beispiel der Effekt-Bearbeitung für einen Kanal beschrieben, die in Schritt S39 aus 14 durchgeführt wird. Beim Start dieser Hall-Bearbeitung wird eine Initial-Reflexion-Bearbeitung in Schritt S81 ausgeführt. In diesem Beispiel werden Zwei Leitungen einer Verzögerungs-Bearbeitung ohne Zwei-Stufen-Interpolation durchgeführt. In Schritt S82 werden zwei Leitungen einer Allpaß-Filter-Bearbeitung durchgeführt. In Schritt S83 wird eine Hall-Bearbeitung unter Verwendung von sechs Comb-Filtern und vier Allpaß-Filtern durchgeführt. In Schritt S84 wird im allgemeinen die gleiche Lautstärke-Multiplikation und Akkumulations-Bearbeitung durchgeführt, wie vorher erwähnt. Bei diesem Beispiel werden vier Leitungen von Ausgaben verwendet.
  • Wie in den in 15A bis 15C und 16 gezeigten Beispielen werden die Musiktonerzeugungs-Bearbeitung und Effekt-Bearbeitung auf der Grundlage der vorher erwähnten Tonquellenarten, Lautstärke-Multiplikation und Akkumulation, Auslesen einer Wellenformtabelle, DCF und Hüllkurvenerzeugung auf allgemeine Art und Weise ausgeführt. Eine Voraus-Vorbereitung dieser Bearbeitungsoperationen und ein Kombinieren dieser Unterroutinen zur Durchführung vorgegebener Bearbeitungsoperationen durch die Tonquellenprogramme kann die erforderliche Speicherkapazität reduzieren. Diese Anordnung gestattet auch, dass Musiktöne durch einen Algorithmus auf der Grundlage verschiedener Tonquellenarten synthetisiert werden, wobei durch eine Tonquellenart erzeugte Daten von einer anderen Tonquellenart zur Musiktonerzeugung verwendet werden können. Durch eine PCM erzeugte Wellenformen können zum Beispiel als Anregungswellenform von der Tonquelle nach physikalischem Modell verwendet werden.
  • Nachfolgend werden die Wellenform-Bearbeitungs-Unterroutine-Gruppen, die die vorher erwähnten Bearbeitungsoperationen gemeinsam nutzen, beschrieben.
    • (1) Unterroutinen, die mit Wellenformtabelle-Auslesen assoziiert sind: Unterroutinen ohne Interpolation, ohne FM-Interpolation, mit linearer Interpolation, mit linearer FM-Interpolation, mit Vier-Punkt-Interpolation und mit Sechs-Punkt-Interpolation. Diese Unterroutinen führen Bearbeitungen zum Auslesen einer im RAM vorbereiteten Wellenformtabelle mit einer Lesegeschwindigkeit durch, die durch eine Tonnummer NN oder dergleichen bestimmt wird. Diese Unterroutinen enthalten Unterroutinen zum Bereitstellen einer Frequenz-Modulation bei der Lesegeschwindigkeit und Unterroutinen zum Durchführen einer Interpolation, um das Auftreten von einer Aliasing-Geräuschform zu verhindern. Diese Unterroutinen werden hauptsächlich für PCM- und FM-Tonquellen verwendet.
    • (2) Unterroutinen, die mit Funktions-Tabellen-Bezug assoziiert sind: Unterroutinen ohne Interpolation und mit linearer Interpolation. Diese Unterroutinen führen Bearbeitungen durch, bei den auf eine in dem RAM vorbereitete Funktionstabelle mit Wellenformdaten als Adresse Bezug genommen wird und Werte der Wellenformdaten konvertiert werden. Diese Unterroutinen werden für die Tonquelle nach physikalischem Modell und Effekt-Bearbeitung, wie beispielsweise Verzerrung, verwendet.
    • (3) Unterroutinen, die mit Interpolation assoziiert sind: Unterroutinen mit linearer Interpolation und Zeit-Interpolation. Die Unterroutine mit linearer Interpolation wird zur Quer-Ausblendung (Cross-Fading) verwendet oder zum Durchführen von Quer-Ausblendung, um die Länge der Verzögerung einer Verzögerungs-Bearbeitung in der Tonquelle nach physikalischem Modell zu ändern. Die Unterroutine mit Zeit-Interpolation wird zur Lautstärke steuerung von Aftertouch verwendet.
    • (4) Unterroutinen, die mit einem Filterprozeß assoziiert sind: Unterroutinen mit APF (all-pass filter = Allpaß-Filter), linearer DCF, quadratische DCF und DCF vierter Ordnung. Diese Unterroutinen werden weit verbreitet zur Steuerung der Frequenzcharakteristiken und Phasencharakteristiken von Musiktönen verwendet.
    • (5) Unterroutinen, die mit einem Com-Filter assoziiert sind: Diese Unterroutinen werden hauptsächlich zur Hall-Bearbeitung und bei einer Tonquelle nach physikalischem Modell verwendet.
    • (6) Unterroutinen, die mit Hüllkurvenerzeugungs-Bearbeitung assoziert sind: Unterroutinen mit zwei-Phasen-EG, vier-Phasen-EG und so weiter. Die durch diese Unterroutinen erzeugten Hüllkurven werden zur Steuerung von Musiktonwellenform-Lautstärke, Filter-Sperrung und Tonhöhe verwendet.
    • (7) Unterroutinen, die mit der Lautstärkesteuerung und Ausgabe-Bearbeitung assoziiert sind: Unterroutinen, wie beisielsweise 1AUS, 2AUS, 3AUS, 4AUS und 6AUS. Diese Unterroutinen multiplizieren Daten, wie beispielsweise die Hüllkurve zur Steuerung von Musiktonwellenform-Lautstärke, mit Lautstärkedaten auf der Grundlage des Übertragungspegels, der durch Ausgabeleitungen (Akkumulationspuffern) klassifiziert ist, und akkumulieren die resultierenden Lautstärkegesteuerten Musiktonwellenformdaten in dem entsprechenden Akkumulationspuffer für jede Ausgabeleitung.
    • (8) Unterroutinen, die mit der Modulations-Bearbeitung assoziiert sind: Unterroutinen, wie beispielsweise eine 1-Modulations-Eingabe und 2-Modulations-Eingabe. Diese Unterroutinen modulieren Daten, wie beispielsweise Musiktonhöhendaten und Lautstärke, durch eine Modulationswellenform, wie beispielsweise eine LFO-Wellenform.
    • (9) Unterroutinen, die mit der LFO (Low Frequency Oscillator = Niederfrequenz-Schwinger)-Bearbeitung assoziiert sind.
    • (10) Unterroutinen, die mit einer Verzögerungs-Bearbeitung assoziiert sind: Unterroutinen ohne eine 1-Stufen-Interpolation, mit einer 1-Stufen-Interpolation, ohne 2-Stufen-Interpolation und 2-Stufen-Interpolation. Diese Unterroutinen verzögern Wellenformdaten, die mit einer einer bestimmten Verzögerungslänge entsprechenden Zeitlänge eingegeben werden, und geben die resultierenden verzögerten Wellenformdaten aus. Diese Unterroutinen werden beispielsweise für eine Hall-Bearbeitung und den Resonanz-Abschnitt der Tonquelle nach physikalischem Modell verwendet.
    • (11) Unterroutinen, die mit einem Mischer assoziiert sind: Diese Unterroutinen werden für den Ausgabeabschnitt eines Comb-Filters verwendet.
  • Nachfolgend wird mit Bezug auf 17 ein Beispiel eines Gesamt-Algorithmus eines Musiktongenerators beschrieben, der durch die mit Bezug auf 14 beschriebenen Tonquellen-Bearbeitung realisiert wird. 14 zeigt schematisch einen Musiktonsynthese-Algorithmus eines Musiktongenerators, der das Verfahren zur Musiktonerzeugung nach der vorliegenden Erfindung anwendet. In der Figur bezeichnet Bezugszahl 21 eine erste PMC-Tonquelle und Bezugszahl 22 bezeichnet eine zweite PMC-Tonquelle, wobei die erste PMC-Tonquelle 21 der zweiten PMC-Tonquelle 22funktionell vorangeht. Bezugszeichen 23 bezeichnet eine erste FM-Tonquelle mit vier Operatoren, Bezugszeichen 24 bezeichnet eine zweite FM-Tonquelle mit zwei Operatoren und Bezugszeichen 25 bezeichnet eine Tonquelle nach physikalischem Modell. Der dargestellte Musiktongenerator weist somit fünf Tonquellen auf der Grundlage von unterschiedlichen Verfahren (unterschiedlichen Klang-Algorithmen) auf und wird durch die Bearbeitung von in 14 gezeigten Schritten S31 bis S38 realisiert. Die PCM-Tonquelle 21 entspricht der Routine aus 15A. Die FM-Tonquelle 24 entspricht der Routine aus 15B. Die Tonquelle nach physikalischem Modell 25 entspricht der Routine aus 15C.
  • Es ist anzumerken, dass in der Figur die Zahlen zu beiden Seiten eines Schrägstrichs (/) die Anzahl der zu erklingenden Kanäle/die maximale Anzahl der Kanäle bezeichnen. 2/8 in der ersten PCM-Tonquelle bezeichnet zum Beispiel, dass die maximale Anzahl der Kanäle dieser PCM-Tonquelle acht ist, von welchen 2 Kanäle derzeit erklingen.
  • Bezugszeichen 26 bezeichnet einen Akkumulationspuffer (einen Mischer-Puffer), der aus vier Puffern #0 bis #3 besteht. Die Akkumulationspuffer #0 bis #3 sind stereo-konfiguriert mit einem L-Kanal-Abschnitt bzw. einem R-Kanal-Abschnitt. Die Musiktonwellenformausgaben von den Tonquellen 21 bis 25 und die Ausgaben der Effekt-Bearbeitungs-Routinen werden in diese Akkumulationspuffer geschrieben. Dieses Schreiben wird durch Akkumulieren der Musiktonwellenformabtastwerte, die durch jeden aktiven Kanal erzeugt werden, oder der Musiktonwellenformabtastwerte, die mit einem Effekt belegt sind, in den jeweiligen Akkumulationspuffer bei einer Speicherposition, die der jeweiligen Abtastzeit entspricht, durchgeführt. Bei diesem Schreiben wird auch ein Mischen einer Vielzahl von Musiktonwellenformen durchgeführt. Bei diesem Beispiel wird der #0 Akkumulationspuffer als ein Ausgabepuffer verwendet, wobei dessen Ausgabe durch eine Entzerrungs-Bearbeitung 27 entzerrt wird und dann zu einem DAC ausgegeben wird.
  • Die Entzerrungs-Bearbeitung 27, Hall-Bearbeitung 28, Chorus-Bearbeitung 29 und Klangrohr-Bearbeitung 30 (zum Beigeben von Vakuum-Rohrcharakteristiken, die den gleichen Effekt als Verzerrung vorsehen) sind Beispiele der Effekt-Bearbeitung. Diese vier Effekt-Bearbeitungsoperationen werden durch Schritte S39 bis S42 aus 14 realisiert. Die Hall-Bearbeitung 28 entspricht der Hall-Bearbeitung, die vorher mit Bezug auf 16 beschrieben wurde. Bei jeder dieser Effekt-Bearbeitungsoperationen, wird die Effekt-Bearbeitungsoperation an den Eingaben der Akkumulationspuffer #1 bis #3 durchgeführt und die mit einem Effekt belegte Ausgabe wird in wenigstens einen dieser Akkumulationspuffer #0 bis #3 geschrieben.
  • Nachfolgend wird der Algorithmus der vorher erwähnten Tonquellen 21 bis 25 unter Verwendung beispielsweise der PCM-Tonquelle beschrieben. 18 zeigt schematisch einen Klang-Algorithmus zum Beispiel der vorher erwähnten PCM-Tonquelle (entsprechend 15A). In der Figur bezeichnet Bezugszahl 31 eine Wellenformtabelle, Bezugszahl 32 einen Wellenform-Tabelle-Leseabschnitt (mit vier-Punkt-Interpolation), Bezugszahl 33 bezeichnet einen DCF-Abschnitt vierter Ordnung, Bezugszahl 34 bezeichnet einen Hüllkurvenerzeugungsabschnitt und Bezugszahl 35 bezeichnet einen Lautstärke-Multiplikations und Akkumulations-Bearbeitungsabschnitt. Bezugszahlen 36 bis 39 bezeichnen Akkumulationspufferabschnitte und Bezugszahlen 36 bis 37 bezeichnen ein L-Kanalabschnitt bzw. einen R-Kanalabschnitt eines Ausgabepuffers, der dem #0 Puffer des vorher erwähnten Akkumulationspuffers 26 entspricht. Bezugszahlen 38 und 39 bezeichnen Akkumulationspuffer, die dem #1 Puffer bzw. dem #2 Puffer des vorher erwähnten Akkumulationspuffers 26 entsprechen.
  • Bei der PCM-Tonquelle mit dem vorher erwähnten Algorithmus erzeugt der Wellenform-Tabelle-Leseabschnitt 32 (entsprechend Schritt S51) eine Leseadresse, die entsprechend einer Tonnummer NN fortschreitet. Auf der Grundlage des Ganzzahl-Teils derselben, werden Wellenformdaten ausgelesen und entsprechend dem Bruchzahl-Teil wird eine Vier-Punkt-Interpolation durchgeführt. Die Ausgabe dieses Abschnitts wird durch den DCF 33 vierter Ordnung gefiltert (entsprechend Schritt S52) und wird dann in die Lautstärke-Multiplikation und Akkumulations-Bearbeitung 35 eingegeben (entsprechend Schritt S54). Hüllkurvendaten, die durch den Hüllkurvengenerator 34 erzeugt werden (entsprechend Schritt S53) werden auch in den Lautstärke-Multiplikation und Akkumulations-Bearbeitungsabschnitt 35 eingegeben. Die vorher erwähnten Wellenformdaten, die Hülkurvendaten und die Übertragungspegeldaten, die durch einen Akkumulationspuffer klassifiziert werden, werden miteinander multipliziert, wobei die Multiplikationsergebnisse in die jeweiligen spezifizierten Akkumulationspuffer eingegeben werden. Genauer gesagt, die Musiktonwellenformdaten eines aktiven Kanals, bei dem keine Effekt-Bearbeitung durchgeführt wird, werden in den Akkumulationspuffern 36 und 37 akkumuliert, nachdem sie entsprechend der Hüllkurve und der Pegel der direkten L- und R-Ausgaben Lautstärke-gesteuert worden sind. Die Musiktonwellenformdaten eines aktiven Kanals, bei dem eine Effekt-Bearbeitung durchgeführt wird, werden in den Akkumulationspuffern 38 und 39 akkumuliert, nachdem sie entsprechend der Hüllkurve und dem Übertragungspegel für jeden Effekt Lautstärke-gesteuert worden sind.
  • Nachfolgend wird ein Effekt-Algorithmus des vorher erwähnten Effekt-Bearbeitungsabschnitts unter Verwendung beispielsweise der Hall-Bearbeitung 28 (entsprechend Schritt 16) beschrieben. 19 zeigt schematisch einen Algorithmus der vorher erwähnten Hall-Bearbeitung 28. In der Figur bezeichnet Bezugszahl 41 einen Akkumulationspuffer, der dem vorher erwähnten #1 Puffer entspricht und Bezugszahl 42 bezeichnet einen Verzögerungsabschnitt (entsprechend Schritt S81), der für einen Initial-Refelexions-Ton repräsentativ ist, welcher ein Verzögerungsabschnitt ohne zwei-Stufen-Interpolation ist. Bezugszahl 43 bezeichnet zwei Leitungen eines Allpaß-Filters (entsprechend Schritt S82), Bezugszahl 44 bezeichnet sechs Leitungen eines Comb-Filters, die parallel angeordnet sind, Bezugszahl 45 bezeichnet einen Mischer zum Mischen der Ausgaben des Comb-Filters 44, um Ausgaben der zwei Kanäle L und R zu erzeugen, und Bezugszahlen 46 und 47 bezeichnen zwei Leitungen eines Allpaß-Filters, in welche jeweils die Ausgabe des Mischers 45 eingegeben wird. Diese sechs Leitungen eines Comb-Filters 44, Mischers 45 und die zwei Leitungen der Allpaß-Filter 46 und 47 entsprechen dem vorher erwähnten Schritt S83. Die Ausgaben dieser Elemente werden in den Lautstärke-Multiplikation und Akkumulations-Bearbeitungsabschnitt 48 eingegeben (entsprechend Schritt S84).
  • Bei dem Lautstärke-Multiplikation und Akkumulations-Bearbeitungsabschnitt 48 wird die Ausgabe des Verzögerungsabschnitts 42 mit den Ausgaben der Allpaß-Filter 46 und 47 bei einem vorgegebenen Pegel gemischt, wobei die gemischten Ausgaben in den entsprechenden Akkumulationspuffern 49 bis 52 akkumuliert werden. Bezugszahlen 49 und 50 bezeichnen einen L-Kanalabschnitt und einen R-Kanalabschnitt des gleichen Akkumulationspuffers #0 zum Ausgeben, wie die vorher erwähnten Akkumulationspuffer 36 und 37. Die Musiktonwellenform, die ausgegeben wird, nachdem sie mit einem Hall belegt wurde, wird in diese Akkumulationspuffer geschrieben. Bezugszahlen 51 und 52 bezeichnen Akkumulationspuffer, die jeweils den rechten und linken Kanälen entsprechen, des #3 des vorher erwähnten Akkumulationspuffers 26. Die mit einem Hall belegten Musiktonwellenformdaten, an denen ein anderer Effekt (zum Beispiel ein Klangrohreffekt) ausgeführt wird, werden in diese Puffer geschrieben. Es ist anzumerken, dass das Beigeben eines anderen Effekts mittels Verwendung der Ausgaben der Akkumulationspuffer 51 und 52 als die Eingabe durchgeführt wird.
  • Wie bereits beschrieben, bestehen bei dem Verfahren zur Musiktonerzeugung der vorliegenden Erfindung die Wellenformerzeugungsprogramme und Effektbeigebungsprogramme auf der Grundlage der verschiedenen Tonquellenarten aus gemeinsamen Wellenform-Bearbeitungs-Unterroutinen. Nachfolgend wird beschrieben, wie diese Programme in einem Speicher mittels Verwendung einer beispielsweise in 20 gezeigten Speicherkarte des RAM 103 gespeichert werden. Es ist anzumerken, dass Steuerdaten in einem Bereich gehalten werden, in welchen Inhalte dieser Programme geschrieben sind. Unter den Steuerdaten werden die Wellenformerzeugungsprogramme (TGPs) sequentiell gespeichert. Wie in der Figur gezeigt, werden die Wellenformerzeugungsprogramme, die für dieses Musikspiel erforderlich sind, sequentiell gespeichert, nämlich, das Wellenformerzeugungsprogramm TGP1, das die erste PCM-Tonquelle bereitstellt, das Wellenformerzeugungsprogramm TGP2, das die zweite PCM-Tonquelle bereitstellt, das Wellenformerzeugungsprogramm TGP3, das die Tonquelle nach physikalischem Modell bereitstellt, das Wellenformerzeugungsprogramm TGP4, das die dritte PCM-Tonquelle bereitstellt, das Wellenformerzeugungsprogramm TGP5, das die FM-Tonquelle bereitstellt und so weiter. Die drei in 15A bis 15C gezeigten Flußdiagramme sind bestimmte Beispiele dieser Wellenformerzeugungsprogramme. Wie gezeigt, besteht jedes Wellenformerzeugungsprogramm aus einem Kopf-Teil und einem Erzeugungs-Routine-Teil. Der Kopf-Teil speichert einen Namen, Charakteristiken und Parameter dieses Programms und der Erzeugungs-Routine-Teil speichert eine Wellenformerzeugungs-Routine, wobei die vorher erwähnten Wellenform-Bearbeitungs-Unterroutinen verwendet werden.
  • Auf die Wellenformerzeugungsprogramme folgend werden Effektprogramme (EP) gespeichert. In diesem Bereich werden Programme zum Durchführen einer Vielfalt von Effekt-Bearbeitungsoperationen gespeichert. Bei dem dargestellten Beispiel werden EP1 für eine Hall-Bearbeitung, EP2 für eine Chorus-Bearbeitung, EP3 für eine Hall-Bearbeitung und so weiter in dieser Reihenfolge gespeichert. Die in 16 gezeigte Hall-Bearbeitung ist ein bestimmtes Beispiel dieses Effektprogramms EP. Jedes dieser Programme besteht aus einem Kopf-Teil und einem Effekt-Routine-Teil, wie gezeigt. Der Kopf-Teil speichert einen Namen, Charakteristiken und Parameter dieser Effekt-Bearbeitung und der Effekt-Routine-Teil speichert eine Effekt-Routine, wobei verschiedene Wellenform-Bearbeitungs-Unterroutinen verwendet werden.
  • Nach den Effektprogrammen werden die Wellenform-Bearbeitungs-Unterroutinen gespeichert. Wie gezeigt, werden die vorher erwähnten Wellenform-Bearbeitungs-Unterroutinen in diesem Bereich gespeichert, wie sie durch Bearbeitungs-Inhalte klassifiziert werden. Bei diesem Beispiel kommen zuerste die Unterroutinen, die dem dem Tabellen-Auslesen zugeordnet sind. Danach sind Unterroutinen, die einer Filter-Bearbeitung zugeordnet sind, die Unterroutinen, die einer EG-Bearbeitung zugeordnet sind, und die Unterroutinen, die einer Lautstärke-Steuerung und Akkumulations-Bearbeitung zugeordnet sind, in dieser Reihenfolge gespeichert. In diesem Bereich können nur Wellenform-Bearbeitungs-Unterroutinen, die aktuell von den vorher erwähnten Wellenformerzeugungsprogrammen TGPs oder den Effektprogrammen EPs verwendet werden, gespeichert werden. Andererseits werden alle Wellenform-Bearbeitungs-Unterroutinen einschließlich der anderen Wellenform-Unterroutinen grundsätzlich auf der vorher erwähnten Festplatte 110 gespeichert. Alternativ können alle Wellenform-Bearbeitungs-Unterroutinen von einem externen Speichermedium 105 oder einem anderen Computer über ein Netzwerk geliefert werden.
  • Wie beschrieben, werden bei dem Verfahren zur Musiktonerzeugung nach der vorliegenden Erfindung die Wellenform-Bearbeitungs-Unterroutinen durch die Tonquellenprogramme gemeinsam benützt, so dass der Anwender irgendeine Wellenform-Bearbeitungs-Routinen auswählen kann, um den Klang-Algorithmus der Tonquellenprogramme zu editieren (Musiktonerzeugungs-Bearbeitung). Nachfolgend werden diese Auswähl- und Editieroperationen oder die Einstellungs-Bearbeitung beschrieben. Es ist anzumerken, dass diese Operationen in der anderen Bearbeitung von Schritt 707 der in 7A gezeigten Haupt-Routine durchgeführt werden.
  • 21 ist ein Flußdiagramm, das die vorher erwähnte Einstellungs-Bearbeitung beschreibt. Diese Einstellungs-Bearbeitung startet, wenn die Operation zur Wellenformerzeugungsprogramm-Einstellung von dem Anwender durchgeführt wird. Zunächst wählt in Schritt S101 der Anwender ein Wellenformerzeugungs-Verfahren. In Schritt S102 zweigt entsprechend dem ausgewählten Wellenformerzeugungs-Verfahren, der Prozeß zu PCM-Einstellungs-Bearbeitung S103, FM-Einstellungs-Bearbeitung S104, Einstellungs-Bearbeitung nach physikalischem Modell S105 oder zu irgendeine Einstellung S106 ab. Die Einstellungs-Bearbeitung, zu welcher der Prozeß abzweigt, wird dann durchgeführt.
  • 22 stellt die Übersicht der Einstellungs-Bearbeitung dar, die in der vorher erwähnten Einstellungs-Bearbeitung bei S103 bis S106 ausgeführt wird. Wenn die vorher erwähnte Einstellungs-Bearbeitung gestartet ist, werden die Basiselemente entsprechend einer jeweiligen Tonquellenart in Schritt S111 eingestellt. Diese Einstellung der Basiselemente wird nachfolgend beschrieben. In Schritt S112 ermittelt der Anwender dann, ob es eine Zusatz-Option gibt. Bei JA geht der Prozeß zu Schritt S113, in welchem die Art der hinzuzufügenden Option bezeichnet wird. In Schritt S114 wird die Bearbeitung zum Einstellen der bezeichneten Option durchgeführt. Zurückkehrend zu Schritt S112 ermittelt der Anwender dann, ob es eine weitere hinzuzufügende Option gibt. Der Anwender kann so den Generator-Algorithmus auf verschiedene Weise ändern, um so eine Filter-Bearbeitung den Wellenformen, die aus der Wellenform-Tabelle gelesen werden, hinzuzufügen und Kehlkopf (throat), Brummen (growl) oder Resonator bei der Tonquelle nach physikalischem Modell beispielsweise beizugeben.
  • Wenn es keine Option zum Hinzufügen gibt, geht der Prozeß zu Schritt S115. Die verschiedenen Wellenformerzeugungsprogramme, die bei der Basiselement-Einstellungs-Bearbeitung von Schritt S111 eingestellt werden, und die Options-Einstellungs-Bearbeitung von Schritt S114 werden erzeugt und in Schritt S116 werden die erzeugten Wellenformerzeugungs-programme in einen Speicher gespeichert. Es ist offensichtlich, dass bei der Programmerzeugungs-Bearbeitung von Schritt S115 die erforderlichen Wellenformerzeugungsprogramme aus einem Massenspeichermedium, wie beispielsweise einer CD-ROM, in welcher viele Wellenformerzeugungsprogramme gespeichert sind, anstelle von Erzeugungsprogrammen entsprechend der vorher erwähnten Einstellung ausgewählt werden können.
  • Nachfolgend wird die Basiselement-Einstellungs-Bearbeitung, die einer jeweiligen Tonquellenart entspricht, beschrieben. 23A bis 23C zeigen ein Flußdiagramm dieser Basiselement-Einstellung, wobei 23A die Basiselement-Einstellungs-Bearbeitung bei dem PCM-Verfahren kennzeichnet, 23B die Basiselement-Einstellungs-Bearbeitung bei dem FM-Verfahren kennzeichnet und 23C die Basiselement-Einstellungs-Bearbeitung bei dem Verfahren nach einem physikalischen Modell kennzeichnet. Bei dem PCM-Verfahren wird eine Einstellung, die mit einer Tabellen-Lese-Bearbeitung assoziiert ist, in Schritt S121 ausgeführt. In Schritt S122 wird eine EG-Einstellung durchgeführt. In Schritt S123 wird eine Lautstärke-Multiplikation und Akkumulations-Bearbeitung eingestellt. In Schritten S121 bis S123 wählt der Anwender gewünschte Wellenform-Bearbeitungs- Unterroutinen aus der Unterroutinen-Gruppe, die einer jeweiligen Basiselement-Einstellungs-Bearbeitung entspricht.
  • Bei dem FM-Verfahren wird die Anzahl der Operatoren in Schritt S131 eingestellt, wie es In 23B gezeigt ist. In Schritt S132, wird die Verbindung zwischen den Operatoren eingestellt. In Schritt S133 wird die Konfiguration jedes Operators eingestellt. In Schritt S134 wird eine Lautstärke-Multiplikation und Akkumulations-Bearbeitung eingestellt.
  • Bei der Tonquelle nach physiaklischem Modell, wie es in 23C gezeigt ist, wird zuerst ein Anregungsabschnitt in Schritt S141 eingestellt. In Schritt S142 wird dann ein Oszillationsabschnitt eingestellt. In Schritt S143 wird ein Resonanzabschnitt eingestellt. In Schritt S144 wird eine Lautstärke-Multiplikation und Akkumulations-Bearbeitung eingestellt.
  • Die vorher erwähnte Wellenformerzeugungsprogrammeinstellungs-Bearbeitung kann zum Beispiel in der in 15A gezeigten PCM-Tonquellen-Bearbeitung leicht ein Wellenformerzeugungsprogramm (Musiktonerzeugungs-Bearbeitung) erzeugen, das einen Algorithmus hat, dem eine Vibrato-Bearbeitung durch LFO oder ein Klang-Algorithmus mit einer gewünschten Reihenfolge oder einer gewünschten Anzahl von Ausgabeleitungen des Filters hinzugefügt ist.
  • Nachfolgend wird die Effekt-Programm-Einstellungs-Bearbeitung mit Bezug auf 24 beschrieben. Beim Einstellen einer Effekt-Bearbeitung wählt der Anwender ein zu verwendendes Effekt-Verfahren in Schritt S151. In Schritt S152 zweigt der Prozeß dann zu der entsprechenden Bearbeitung gemäß dem in Schritt S152 ausgewählten Verfahren ab. Wenn zum Beispiel der ausgewählte Effekt Hall ist, wird die Hall-Einstellungs-Bearbeitung von Schritt S153 durchgeführt, wenn der ausgewählte Effekt Chorus ist, wird die Chorus-Einstellungs-Bearbeitung von Schritt S154 durchgeführt und wenn der ausgewählte Effekt andere sind, wird die entsprechende Einstellungs-Bearbeitung von Schritt S155 durchgeführt. Es ist anzumerken, dass diese Einstellungs-Bearbeitungsoperationen grundsätzlich die gleichen sind, wie die der vorher erwähnten Generatorprogramme, so dass diese nicht weiter beschrieben werden.
  • Die vorher erwähnte Effekt-Einstellungs-Bearbeitung kann, zum Beispiel für die in 16 gezeigte Hall-Bearbeitung, leicht ein Effektprogramm erzeugen, das einen Effekt-Algorithmus mit einer gewünschten Anzahl von Initial-Refexionen hat oder einen Effekt-Algorithmus mit einer gewünschten Anzahl von Hall-Comb-Filtern.
  • Es ist anzumerken, dass der Begriff "Wellenform-Bearbeitungs-Unterroutine" hier eher eine Unterroutine kennzeichnet, die die Fähigkeiten zum Durchführen einer vorgegebenen Wellenformerzeugung und Wellenform-Manipulationscharkteristiken zur Musiktonerzeugung und Effekt-Bearbeitung aufweist, als eine einfache Unterroutine zum Durchführen von arithmetischen Operationen.
  • In der hier ausgeführten Beschreibung werden Generatorprogramme und Effektprogramme, die eingestellt wurden, während der Musikspiel-Bearbeitungsperiode nicht geändert. Es ist offensichtlich, dass der Wellenformerzeugungs-Algorithmus oder der Effekt-Algorithmus automatisch auf Wellenform-Bearbeitung-Unterroutinen mit geringerer Belastung gemäß der Gesamtbelastung der Tonquelle geändert werden können.
  • Nach der Erfindung weist ein Verfahren, das einen Prozessor zum Erzeugen von Musiktönen durch eine Gruppe von Kanälen gemäß einer Spielinformation verwendet, die folgenden Schritte auf: Laden eines ersten Syntheseprogramms, das für eine erste Gruppe von Kanälen vorbereitet ist, und eines zweiten Syntheseprogramms, das für eine zweite Gruppe von Kanälen vorbereitet ist, zusammen mit einem Unterroutine-Programm, das gemeinsam sowohl für das erste Sytheseprogramm als auch das zweite Syntheseprogramm verwendet wird, sukzessives Bereitstellen einer Spielinformation, um eine Erzeugung von Musiktönen zu befehlen, periodisches Bereitstellen eines Triggersignals mit einer relativ langsamen Rate zum Definieren einer Rahmenperiode zwischen aufeinanderfolgenden Triggersignalen, periodisches Bereitstellen eines Abtastsignals mit einer relativ schnellen Rate, so dass eine Vielzahl von Abtastsignalen innerhalb einer Rahmenperiode auftreten, Ausführen des ersten Syntheseprogramms durch den Prozessor in einer ersten Rahmenperiode, um eine Synthese jedes Satzes von Wellenformabtastwerten, die einer Rahmenperiode durch einen jeweiligen Kanal der ersten Gruppe zugeordnet sind, auszuführen, so dass das Unterroutine-Programm läuft, um die Wellenformabtastwerte während der Synthese zu verarbeiten, wobei jeder Satz der Wellenformabtastwerte in einem Puffer nach der Synthese reserviert wird, Ausführen des zweiten Syntheseprogramms durch den Prozessor in einer Rahmenperiode, um eine Synthese jedes Satzes von Wellenformabtastwerten, die einer Rahmenperiode durch einen jeweiligen Kanal der zweiten Gruppe zugeordnet sind, auszuführen, so dass das Unterroutine-Programm läuft, um die Wellenformabtastwerte während der Synthese zu verarbeiten, wobei jeder Satz der Wellenformabtastwerte in einem Puffer nach der Synthese reserviert wird, und Konvertieren jedes der in dem Puffer reservierten Wellenformabtastwerte im Ansprechen auf ein jeweiliges Abtastsignal in ein entsprechendes analoges Signal, um die Musiktöne zu erzeugen.
  • Vorzugsweise enthält der Schritt des Ladens ein Auswählen von wenigstens einem der Unterroutine-Programme, die für folgendes ausgelegt sind: Auslesen von Wellenformabtastwerten aus einer Wellentabelle, Filtern der Wellenformabtastwerte zum Modifizieren der Musiktöne, Erzeugen einer Hüllkurve der Wellenformabtastwerte, Steuern einer Amplitude der Wellenformabtastwerte und Akkumulieren eines jeweiligen Satzes der Wellenformabtastwerte in einen Puffer.
  • Vorzugsweise enthält der Schritt des Ladens ein Laden des ausgewählten Unterroutine-Programms aus einem sekundären Speicher in einen primären Speicher, der als ein Arbeitsbereich des Prozessors verwendet wird.
  • Vorzugsweise weist das erfinderische Verfahren ferner den Schritt des Adressierens eines Cache mit einer Kapazität auf, die zum Speichern eines Unter-Satzes der Wellenformabtastwerte ausreichend ist, welcher ein Teil des Satzes der Wellenformabtastwerte ist, die einer Rahmenperiode zugeordnet sind, wobei der Cache durch den Prozessor getroffen wird, bevor der Puffer durch den Prozessor adressiert wird, während der Prozessor das Unterroutine-Programm abarbeitet, um den Unter-Satz der Wellenformabtastwerte zu verarbeiten.
  • Das erfinderische Verfahren, das einen Prozessor zum Erzeugen von Musiktönen durch eine Gruppe von Kanälen gemäß einer Spielinformation verwendet, weist die folgenden Schritte auf: Laden eines ersten Syntheseprogramms, das für eine erste Gruppe von Kanälen vorbereitet ist, und eines zweiten Syntheseprogramms, das für eine zweite Gruppe von Kanälen vorbereitet ist, sukzessives Bereitstellen einer Spielinformation, um eine Erzeugung von Musiktönen zu befehlen, periodisches Bereitstellen eines Triggersignals mit einer relativ langsamen Rate zum Definieren einer Rahmenperiode zwischen aufeinanderfolgenden Triggersignalen, periodisches Bereitstellen eines Abtastsignals mit einer relativ schnellen Rate, so dass eine Vielzahl von Abtastsignalen innerhalb einer Rahmenperiode auftreten, Ausführen des ersten Syntheseprogramms durch den Prozessor in einer ersten Rahmenperiode, um eine Synthese jedes Satzes von Wellenformabtastwerten, die einem jeweiligen Kanal der ersten Gruppe zugeordnet sind, auszuführen, so dass jeder Satz der Wellenformabtastwerte, die zu der ersten Gruppe gehören, im voraus in einem Puffer reserviert wird, Ausführen des zweiten Syntheseprogramms durch den Prozessor in der gleichen Rahmenperiode, um eine Synthese jedes Satzes von Wellenformabtastwerten, die einem jeweiligen Kanal der zweiten Gruppe zugeordnet sind, auszuführen, so dass jeder Satz der zu der zweiten Gruppe gehörenden Wellenformabtastwerte nachfolgend in einem Puffer gespeichert wird, nachdem ein jeweiliger Satz der zu der ersten Gruppe gehörenden Wellenformabtastwerte reserviert ist, und Konvertieren jedes der in dem Puffer reservierten Wellenformabtastwerte im Ansprechen auf ein jeweiliges Abtastsignal in ein entsprechendes analoges Signal, um die Musiktöne zu erzeugen.
  • Das erfinderische Verfahren, das einen Prozessor zum Erzeugen von Musiktönen durch eine Gruppe von Kanälen gemäß einer Spielinformation verwendet, weist die folgenden Schritte auf: Laden eines Syntheseprogramms und eines Effektorprogramms zusammen mit einem Unterroutine-Programm, das sowohl von dem Syntheseprogramm als auch dem Effektorprogramm gemeinsam verwendet wird, sukzessives Bereitstellen einer Spielinformation, um eine Erzeugung von Musiktönen zu befehlen, periodisches Bereitstellen eines Triggersignals mit einer relativ langsamen Rate zum Definieren einer Rahmenperiode zwischen aufeinanderfolgenden Triggersignalen, periodisches Bereitstellen eines Abtastsignals mit einer relativ schnellen Rate, so dass eine Vielzahl von Abtastsignalen innerhalb einer Rahmenperiode auftreten, Ausführen des Syntheseprogramms durch den Prozessor in einer Rahmenperiode, um eine Synthese eines Satzes von Wellenformabtastwerten, die einer Rahmenperiode zugeordnet sind, auszuführen, so dass das Unterroutine-Programm läuft, um die Wellenformabtastwerte während der Synthese zu verarbeiten, wobei der Satz der Wellenformabtastwerte in einem Puffer nach der Synthese reserviert wird, Ausführen des Effektorprogramms durch den Prozessor in einer Rahmenperiode, um eine Modifikation des Satzes von Wellenformabtastwerten, die in einem Puffer reserviert sind, auszuführen, um einen gewünschten Effekt zu erzeugen, so dass das Unterroutine-Programm läuft, um die Wellenformabtastwerte während der Modifikation zu verarbeiten, wobei jeder Satz der Wellenformabtastwerte in einem Puffer nach der Modifikation reserviert wird, und Konvertieren jedes der in dem Puffer reservierten Wellenformabtastwerte im Ansprechen auf ein jeweiliges Abtastsignal in ein entsprechendes analoges Signal, um die Musiktöne zusammen mit dem gewünschten Effekt zu erzeugen.
  • Das erfinderische Verfahren, das einen Prozessor zum Erzeugen von Musiktönen durch eine Gruppe von Kanälen gemäß einer Spielinformation verwendet, weist die folgenden Schritte auf: Bereitstellen eines Algorithmus, um einige der gewünschten von Unterroutine-Programmen, die provisorisch in einem Speicher gespeichert sind, zu bezeichnen, Zusammensetzen eines der Syntheseprogramme in Entsprechung zu dem Algorithmus, so dass das Syntheseprogramm Abrufbefehle zum Abrufen der bezeichneten Unterroutinen aus dem Speicher enthält, sukzessives Bereitstellen einer Spielinformation, um eine Erzeugung von Musiktönen zu befehlen, periodisches Bereitstellen eines Triggersignals mit einer relativ langsamen Rate zum Definieren einer Rahmenperiode zwischen aufeinanderfolgenden Triggersignalen, periodisches Bereitstellen eines Abtastsignals mit einer relativ schnellen Rate, so dass eine Vielzahl von Abtastsignalen innerhalb einer Rahmenperiode auftreten, Ausführen des Syntheseprogramms durch den Prozessor in einer Rahmenperiode, um eine Synthese eines Satzes von Wellenformabtastwerten, die einer Rahmenperiode zugeordnet sind, auszuführen, so dass die bezeichneten Unterroutine-Programme im Ansprechen auf die Abrufbefehle sequentiell abgerufen werden, um die Wellenformabtastwerte während der Synthese zu verarbeiten, wobei der Satz der Wellenformabtastwerte in einem Puffer nach der Synthese reserviert wird, und Konvertieren jedes der in dem Puffer reservierten Wellenformabtastwerte im Ansprechen auf ein jeweiliges Abtastsignal in ein entsprechendes analoges Signal, um die Musiktöne zusammen mit dem gewünschten Effekt zu erzeugen.
  • Wie beschrieben wurde und nach dem ersten Gesichtspunkt der vorliegenden Erfindung werden die gleichen Algorithmusabschnitte parallel für eine Vielzahl von Kanälen in der Software-Tonquelle zusammengefaßt verarbeitet, die eine Verarbeitungseinheit mit einem erweiterten Befehlssatz verwendet, der in der Lage ist, eine Vielzahl von Operationen mittels eines einzigen Befehls auszuführen, wodurch eine schnellere Berechnung für die Wellenformerzeugung realisiert wird. Zusätzlich kann, im Vergleich zu einer Verwendung von erweiterten Befehlen zur Realisierung von Parallelität durch eine Einrichtung bei der Verarbeitung des Algorithmus in jedem Kanal, die vorliegende Erfindung Parallelität in einer Vielzahl von Kanälen realisieren, wobei Parallel-Programme für eine Vielzahl von Kanälen aus den Algorithmen für einen Kanal erzeugt werden und die Verarbeitungsgeschwindigkeit daher signifikant verbessert wird.
  • Wie beschrieben wurde und nach dem zweiten Gesichtspunkt der vorliegenden Erfindung weist eine Einheit, in welcher eine Wellenformerzeugungs-Verarbeitung in einem Wellenformerzeugungs-Puffer einer Software-Tonquelle durchgeführt wird, einen Umfang auf, der identisch dem Leitungsumfang eines Cache-Speichers ist oder ein vorgegebenes ganzzahliges Vielfaches des Leitungsumfangs ist, wodurch die Wellenformerzeugungs-Verarbeitung realisiert wird, die schnell im Betrieb ist und bei der kaum Cache-Fehler auftreten. Der Wellenformpuffer wird zudem für jede Effekt-Verarbeitung bereitgestellt, so dass eine Verbindung zwischen Effekten einfach geändert werden kann und die Cache-Trefferrate bei jeder Effektverarbeitung verbessert ist. Weiterhin haben eine Vielzahl von Wellenformerzeugungspuffern, die jeweils für die Effekte vorgesehen sind, die gleiche Beschaffenheit, jede Effekt-Verarbeitung wird in dem entsprechenden Puffer durchgeführt und Daten eines Puffers können durch eine Hinzufüge-Verarbeitung in einem anderen akkumuliert werden, so dass, wenn der Anwender irgendeinen Software-Effektor-Algorithmus bezeichnet, die Sequenz der Effekt-Verarbeitung und die Hinzufüge-Verarbeitung frei geändert werden können, um den bezeichneten Algorithmus auszuführen. Die Sequenz der Berechnungen für eine Effektbeigebungs-Verarbeitung kann folglich entsprechend einer Anwenderbezeichnung dynamisch geändert werden. Da die Cache-Trefferrate beim Erzeugen der Wellenformdaten für eine Vielzahl der Kanäle vergrößert wird, wird zudem noch die Verarbeitungszeit für eine Wellenformerzeugung verkürzt. Zudem wird, da die Cache-Trefferrate beim Ausgeben der Wellenformdaten für jeden erklingenden Kanal an die Vielzahl von Puffern gesteigert ist, die Verarbeitungszeit für eine Wellenformerzeugung verkürzt. Überdies ist die Cache-Trefferrate beim Erzeugen der Wellenformdaten für eine Vielzahl der Kanäle vergrößert, so dass das Verfahren zur Musiktonerzeugung zum Verkürzen der Verarbeitungszeit für eine Wellenformerzeugung in einem maschinenlesbaren Medium vorgesehen sein kann.
  • Wie beschrieben wurde und nach dem dritten Gesichtspunkt der vorliegenden Erfindung werden die Komponenten der Wellenformerzeugungsprogramme und der Effektprogramme bei jeder Art von Tonquelle aus Unterroutinen hergestellt, die von diesen Programmen gemeinsam genutzt werden können, wodurch eine Software-Tonquelle auf der Grundlage einer Vielzahl von Tonquellenarten in geringerer Speicherkapazität realisiert wird. Ferner können die gleichen Wellenformverarbeitungs-Unterroutinen von einer Vielzahl von Tonquellenarten verwendet werden, wodurch eine integrierte Tonquelle auf der Grundlage von gemischten Verfahren einfach realisiert wird. Zudem werden gemeinsam genutzte Wellenform-Unterroutinen noch durch die Wellenformerzeugungs-Operationen auf der Grundlage von wenigstens zwei unterschiedlichen Klang-Algorithmen, die an zwei Kanälen simultan ausführbar sind, verwendet, was eine Einsparung eines Programmspeicherbereichs zur Folge hat. Wenn die Verarbeitung in einer CPU mit einem Befehls-Cache durchgeführt wird, kann zudem noch die Cache-Trefferrate für die gemeinsam genutzten Unterroutinen vergrößert werden. Wenn außerdem eine Wellenformerzeugung auf der Grundlage von den Algorithmen einer Vielzahl von Klang-Kanälen durch die CPU mit einem Cache durchgeführt wird, werden die Verarbeitungsoperationen für die Vielzahl von Klang-Kanälen für jeden Algorithmus zusammengefaßt durchgeführt, wodurch die Cache-Trefferrate verbessert wird und daher die Verarbeitungsgeschwindigkeit gesteigert wird. Da überdies Wellenformverarbeitungs-Unterroutinen zwischen der Wellenformerzeugungs-Verarbeitung, die in einem Klang-Kanal durchgeführt wird, und der Effektverarbeitung zum Beigeben eines Effektes an die erzeugten Wellenformdaten gemeinsam genutzt werden, kann der Programmspeicherbereich eingespart werden. Wenn ferner die Verarbeitung durch eine CPU mit einem Befehls-Cache durchgeführt wird, kann die Cache-Trefferrate für die gemeinsam genutzten Unterroutinen verbessert werden. Der Anwender bezeichnet einen Algorithmus und ein Generatorprogramm wird durch Verbinden von Wellenformverarbeitungs-Unterroutinen entsprechend der Bezeichnung hergestellt, wodurch eine Algorithmus-Editierung mit hohem Freiheitgrad realisiert wird. Und da das erzeugte Generatorprogramm nur einen Abrufbefehl der ausgewählten Wellenformverarbeitungs-Unterroutinen enthält, besteht kein Bedarf für ein Durchführen von Verzweigungsverarbeitung in den Routinen entsprechend der Auswahl.
  • Während die bevorzugten Ausführungsformen der vorliegenden Erfindung unter Verwendung einer bestimmten Terminologie beschrieben wurde, dient eine solche Beschreibung nur dem Zwecke der Veranschaulichung und es versteht sich von selbst, dass Änderungen und Variationen gemacht werden können ohne von dem Umfang der anhängenden Ansprüche abzuweichen.

Claims (11)

  1. Verfahren, das einen Prozessor (101) zum Erzeugen von Musiktönen durch eine Gruppe von Kanälen gemäß einer Spielinformation verwendet, wobei das Verfahren die folgenden Schritte aufweist: Laden eines ersten Syntheseprogramms, das für eine erste Gruppe von Kanälen vorbereitet ist, und eines zweiten Syntheseprogramms, das für eine zweite Gruppe von Kanälen vorbereitet ist, sukzessives Bereitstellen einer Spielinformation, um eine Erzeugung von Musiktönen zu befehlen; periodisches Bereitstellen eines Triggersignals mit einer relativ langsamen Rate zum Definieren einer Rahmenperiode (S1, S2, S3, S4) zwischen aufeinanderfolgenden Triggersignalen; periodisches Bereitstellen eines Abtastsignals mit einer relativ schnellen Rate, so dass eine Vielzahl von Abtastsignalen innerhalb einer Rahmenperiode (S1, S2, S3, S4) auftreten; Ausführen des ersten Syntheseprogramms durch den Prozessor (101) in einer ersten Rahmenperiode (S1, S2, S3, S4), um eine Synthese jedes Satzes von Wellenformabtastwerten, die einem jeweiligen Kanal der ersten Gruppe zugeordnet sind, auszuführen, so dass jeder Satz der Wellenformabtastwerte, die zu der ersten Gruppe gehören, im voraus in einem Puffer (103) gespeichert wird; Ausführen des zweiten Syntheseprogramms durch den Prozessor (101) in der gleichen Rahmenperiode (S1, S2, S3, S4), um eine Synthese jedes Satzes von Wellenformabtastwerten, die einem jeweiligen Kanal der zweiten Gruppe zugeordnet sind, auszuführen, so dass jeder Satz der zu der zweiten Gruppe gehörenden Wellenformabtastwerte nachfolgend in einem Puffer (103) gespeichert wird, nachdem ein jeweiliger Satz der zu der ersten Gruppe gehörenden Wellenformabtastwerte reserviert ist; und Konvertieren jedes der in dem Puffer (103) reservierten Wellenformabtastwerte im Ansprechen auf ein jeweiliges Abtastsignal in ein entsprechendes analoges Signal, um die Musiktöne zu erzeugen.
  2. Verfahren nach Anspruch 1, wobei das Verfahren ferner die folgenden Schritte aufweist: Laden eines Unterroutine-Programms, das gemeinsam sowohl für das erste Syntheseprogramm als auch das zweite Syntheseprogramm verwendet wird; Abrufen und Ausführen des Unterroutine-Programms, um die Wellenformabtastwerte während des Ausführungsverlaufs der ersten und der zweiten Syntheseprogramme durch den Prozessor (101) zu verarbeiten, wobei jeder Satz der Wellenformabtastwerte in einem Puffer (103) nach der Synthese gespeichert wird.
  3. Verfahren nach Anspruch 2, bei dem der Schritt des Ladens ein Auswählen wenigstens von einem von Unterroutine-Programmen enthält, die konzipiert sind, um Wellenformabtastwerte aus einer Wellentabelle auszulesen, um die Wellenformabtastwerte zum Modifizieren der Musiktöne zu filtern, um eine Hüllkurve der Wellenformabtastwerte zu erzeugen, um eine Amplitude der Wellenformabtastwerte zu steuern und jeden Satz der Wellenformabtastwerte in den Puffer (103) zu akkumulieren.
  4. Verfahren nach Anspruch 3, bei dem der Schritt des Ladens ein Laden des ausgewählten Unterroutine-Programms aus einem sekundären Speicher i n einen primären Speicher, welcher als Arbeitsbereich des Prozessors (101) verwendet wird, enthält.
  5. Verfahren nach Anspruch 2, das ferner den Schritt enthält des Adressierens eines Cache (117) mit einer Kapazität, die zur Speicherung eines Unter-Satzes der Wellenformabtastwerte ausreichend ist, welcher ein Teil des Satzes der Wellenformabtastwerte ist, die einer Rahmenperiode (S1, S2, S3, S4) zugeordnet sind, wobei der Cache (117) durch den Prozessor (101) getroffen wird, bevor der Puffer (103) durch den Prozessor (101) adressiert wird, während der Prozessor (101) das Unterroutine-Programm ausführt, um jeden Unter-Satz der Wellenformabtastwerte zu verarbeiten.
  6. Verfahren nach Anspruch 1 zum Erzeugen von Musiktönen, wobei das Verfahren ferner die folgenden Schritte aufweist: Bereitstellen eines Algorithmus, um einige der gewünschten von Unterroutine-Programmen, die provisorisch in einem Speicher gespeichert sind, zu bezeichnen; Zusammensetzen von wenigstens einem der Syntheseprogramme in Entsprechung zu dem Algorithmus, so dass das Syntheseprogramm Abrufbefehle zum Abrufen der bezeichneten Unterroutinen aus dem Speicher enthält.
  7. Verfahren nach Anspruch 6, bei dem Schritt des Bereitstellens ein Bezeichnen von wenigstens einem von Unterroutine-Programmen aufweist, welche konzipiert sind, um Wellenformabtastwerte aus einer Wellentabelle auszulesen, um die Wellenformabtastwerte zum Modifizieren der Musiktöne zu filtern, um eine Hüllkurve der Wellenformabtastwerte zu erzeugen, um eine Amplitude der Wellenformabtastwerte zu steuern und jeden Satz der Wellenformabtastwerte in den Puffer (103) zu akkumulieren.
  8. Verfahren nach Anspruch 6, bei dem der Schritt des Zusammensetzens ein Laden der bezeichneten Unterroutine-Programme aus einem sekundären Speicher in einen primären Speicher, welcher als Arbeitsbereich des Prozessors (101) verwendet wird, enthält.
  9. Maschinenlesbares Medium, das Befehle enthält, um eine Computermaschine mit einem Prozessor (101) zum Durchführen jedes der Operationsschritte zum Erzeugen von Musiktönen gemäß einer Spielinformation zu veranlassen, wenn die Befehle an dem Computer ausgeführt werden, wobei die Operation folgendes aufweist: Laden eines ersten Syntheseprogramms, das für eine erste Gruppe von Kanälen vorbereitet ist, und eines zweiten Syntheseprogramms, das für eine zweite Gruppe von Kanälen vorbereitet ist, sukzessives Bereitstellen einer Spielinformation, um eine Erzeugung von Musiktönen zu befehlen; periodisches Bereitstellen eines Triggersignals mit einer relativ langsamen Rate zum Definieren einer Rahmenperiode (S1, S2, S3, S4) zwischen aufeinanderfolgenden Triggersignalen; periodisches Bereitstellen eines Abtastsignals mit einer relativ schnellen Rate, so dass eine Vielzahl von Abtastsignalen innerhalb einer Rahmenperiode (S1, S2, S3, S4) auftreten; Ausführen des ersten Syntheseprogramms durch den Prozessor (101) in einer ersten Rahmenperiode (S1, S2, S3, S4), um eine Synthese jedes Satzes von Wellenformabtastwerten, die einem jeweiligen Kanal der ersten Gruppe zugeordnet sind, auszuführen, so dass jeder Satz der Wellenformabtastwerte, die zu der ersten Gruppe gehören, im voraus in einem Puffer (103) reserviert wird; Ausführen des zweiten Syntheseprogramms durch den Prozessor (101) in der gleichen Rahmenperiode (S1, S2, S3, S4), um eine Synthese jedes Satzes von Wellenformabtastwerten, die einem jeweiligen Kanal der zweiten Gruppe zugeordnet sind, auszuführen, so dass jeder Satz der zu der zweiten Gruppe gehörenden Wellenformabtastwerte nachfolgend in einem Puffer (103) gespeichert wird, nachdem ein jeweiliger Satz der zu der ersten Gruppe gehörenden Wellenformabtastwerte reserviert ist; und Konvertieren jedes der in dem Puffer (103) reservierten Wellenformabtastwerte im Ansprechen auf ein jeweiliges Abtastsignal in ein entsprechendes analoges Signal, um die Musiktöne zu erzeugen.
  10. Maschinenlesbares Medium nach Anspruch 9, bei dem die Operation folgendes aufweist: Laden eines Unterroutine-Programms, das gemeinsam sowohl für das erste Syntheseprogramm als auch das zweite Syntheseprogramm verwendet wird; Abrufen und Ausführen des Unterroutine-Programms, um die Wellenformabtastwerte während des Ausführungsablaufs der ersten und der zweiten Syntheseprogramme durch den Prozessor (101) zu verarbeiten, wobei jeder Satz der Wellenformabtastwerte in einem Puffer (103) nach der Synthese gespeichert wird.
  11. Maschinenlesbares Medium nach Anspruch 9, bei dem die Operation folgendes aufweist: Bereitstellen eines Algorithmus, um einige der gewünschten von Unterroutine-Programmen, die provisorisch in einem Speicher gespeichert sind, zu bezeichnen; Zusammensetzen von wenigstens einem der Syntheseprogramme in Entsprechung zu dem Algorithmus, so dass das Syntheseprogramm Abrufbefehle zum Abrufen der bezeichneten Unterroutinen aus dem Speicher enthält.
DE69733038T 1996-08-05 1997-07-30 Software-Tonerzeuger Expired - Lifetime DE69733038T2 (de)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP22178096 1996-08-05
JP22178096 1996-08-05
JP22780796 1996-08-09
JP22780796 1996-08-09
JP24695796 1996-08-30
JP24695796 1996-08-30

Publications (2)

Publication Number Publication Date
DE69733038D1 DE69733038D1 (de) 2005-05-19
DE69733038T2 true DE69733038T2 (de) 2006-02-16

Family

ID=27330581

Family Applications (3)

Application Number Title Priority Date Filing Date
DE69704996T Expired - Lifetime DE69704996T2 (de) 1996-08-05 1997-07-30 Software-Tonerzeuger
DE69730873T Expired - Lifetime DE69730873T2 (de) 1996-08-05 1997-07-30 Software-Tonerzeuger
DE69733038T Expired - Lifetime DE69733038T2 (de) 1996-08-05 1997-07-30 Software-Tonerzeuger

Family Applications Before (2)

Application Number Title Priority Date Filing Date
DE69704996T Expired - Lifetime DE69704996T2 (de) 1996-08-05 1997-07-30 Software-Tonerzeuger
DE69730873T Expired - Lifetime DE69730873T2 (de) 1996-08-05 1997-07-30 Software-Tonerzeuger

Country Status (5)

Country Link
US (1) US5955691A (de)
EP (4) EP1026661B1 (de)
DE (3) DE69704996T2 (de)
HK (1) HK1004966A1 (de)
SG (1) SG65004A1 (de)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69619587T2 (de) * 1995-05-19 2002-10-31 Yamaha Corp., Hamamatsu Verfahren und Vorrichtung zur Tonerzeugung
US6556560B1 (en) * 1997-12-04 2003-04-29 At&T Corp. Low-latency audio interface for packet telephony
US6180864B1 (en) * 1998-05-14 2001-01-30 Sony Computer Entertainment Inc. Tone generation device and method, and distribution medium
JP4240575B2 (ja) * 1998-05-15 2009-03-18 ヤマハ株式会社 楽音合成方法、記録媒体および楽音合成装置
CN1163866C (zh) * 1998-12-17 2004-08-25 索尼电脑娱乐公司 用于产生音乐数据的装置和方法
US6564305B1 (en) * 2000-09-20 2003-05-13 Hewlett-Packard Development Company Lp Compressing memory management in a device
US6889193B2 (en) * 2001-03-14 2005-05-03 International Business Machines Corporation Method and system for smart cross-fader for digital audio
US6576827B2 (en) * 2001-03-23 2003-06-10 Yamaha Corporation Music sound synthesis with waveform caching by prediction
TWI227010B (en) * 2003-05-23 2005-01-21 Mediatek Inc Wavetable audio synthesis system
JP2006030517A (ja) 2004-07-15 2006-02-02 Yamaha Corp 発音割当装置
JP2006171626A (ja) * 2004-12-20 2006-06-29 Oki Electric Ind Co Ltd 楽曲再生装置
US20060155543A1 (en) * 2005-01-13 2006-07-13 Korg, Inc. Dynamic voice allocation in a vector processor based audio processor
US7663051B2 (en) * 2007-03-22 2010-02-16 Qualcomm Incorporated Audio processing hardware elements
US7678986B2 (en) * 2007-03-22 2010-03-16 Qualcomm Incorporated Musical instrument digital interface hardware instructions
US7663052B2 (en) * 2007-03-22 2010-02-16 Qualcomm Incorporated Musical instrument digital interface hardware instruction set
US9177540B2 (en) 2009-06-01 2015-11-03 Music Mastermind, Inc. System and method for conforming an audio input to a musical key
US8785760B2 (en) 2009-06-01 2014-07-22 Music Mastermind, Inc. System and method for applying a chain of effects to a musical composition
US9251776B2 (en) 2009-06-01 2016-02-02 Zya, Inc. System and method creating harmonizing tracks for an audio input
US8492634B2 (en) 2009-06-01 2013-07-23 Music Mastermind, Inc. System and method for generating a musical compilation track from multiple takes
US9257053B2 (en) * 2009-06-01 2016-02-09 Zya, Inc. System and method for providing audio for a requested note using a render cache
US8779268B2 (en) 2009-06-01 2014-07-15 Music Mastermind, Inc. System and method for producing a more harmonious musical accompaniment
US9310959B2 (en) 2009-06-01 2016-04-12 Zya, Inc. System and method for enhancing audio
US8183452B2 (en) * 2010-03-23 2012-05-22 Yamaha Corporation Tone generation apparatus
KR101385680B1 (ko) * 2012-05-21 2014-04-16 (주)우진네트웍스 아날로그 입력 신호 기반의 멀티 이펙터 장치
JP2014092722A (ja) * 2012-11-05 2014-05-19 Yamaha Corp 音発生装置
US10360887B2 (en) * 2015-08-02 2019-07-23 Daniel Moses Schlessinger Musical strum and percussion controller
CN111176582A (zh) * 2019-12-31 2020-05-19 北京百度网讯科技有限公司 矩阵存储方法、矩阵访问方法、装置和电子设备

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3809788A (en) * 1972-10-17 1974-05-07 Nippon Musical Instruments Mfg Computor organ using parallel processing
WO1980001215A1 (en) * 1978-12-11 1980-06-12 Microskill Ltd An output processing system for a digital electronic musical instrument
JPS58140793A (ja) * 1982-02-15 1983-08-20 株式会社河合楽器製作所 電子楽器の演奏情報検出方式
US5319151A (en) * 1988-12-29 1994-06-07 Casio Computer Co., Ltd. Data processing apparatus outputting waveform data in a certain interval
US5111727A (en) * 1990-01-05 1992-05-12 E-Mu Systems, Inc. Digital sampling instrument for digital audio data
JP2722907B2 (ja) * 1991-12-13 1998-03-09 ヤマハ株式会社 波形発生装置
US5376752A (en) * 1993-02-10 1994-12-27 Korg, Inc. Open architecture music synthesizer with dynamic voice allocation
TW281745B (de) * 1994-03-31 1996-07-21 Yamaha Corp
EP0702348B1 (de) * 1994-09-13 2000-07-12 Yamaha Corporation Elektronisches Musikinstrument und Vorrichtung zum Hinzufügen von Klangeffekten zum Tonsignal
JP2001526791A (ja) * 1994-12-12 2001-12-18 アドバンスド・マイクロ・ディバイシス・インコーポレーテッド 波形表キャッシュを有するpcオーディオシステム
EP0722162B1 (de) * 1995-01-13 2001-12-05 Yamaha Corporation Vorrichtung zur Verarbeitung eines digitales Klangsignals
JP2962465B2 (ja) * 1995-06-02 1999-10-12 ヤマハ株式会社 可変アルゴリズム音源および音色編集装置
JP3198890B2 (ja) * 1995-09-29 2001-08-13 ヤマハ株式会社 自動演奏データ処理装置

Also Published As

Publication number Publication date
US5955691A (en) 1999-09-21
EP1026661B1 (de) 2005-04-13
EP1026662A2 (de) 2000-08-09
EP1026662A3 (de) 2000-09-27
EP1517296A3 (de) 2007-05-09
EP1026661A3 (de) 2000-08-23
EP1026662B1 (de) 2004-09-22
SG65004A1 (en) 1999-05-25
DE69730873D1 (de) 2004-10-28
EP0823699A1 (de) 1998-02-11
DE69730873T2 (de) 2005-10-06
DE69704996T2 (de) 2002-04-04
DE69733038D1 (de) 2005-05-19
EP1517296A2 (de) 2005-03-23
HK1004966A1 (en) 1998-12-18
EP0823699B1 (de) 2001-05-30
EP1026661A2 (de) 2000-08-09
DE69704996D1 (de) 2001-07-05
EP1517296B1 (de) 2013-01-02

Similar Documents

Publication Publication Date Title
DE69733038T2 (de) Software-Tonerzeuger
DE69634271T2 (de) Durch Rechner gesteuertes Musiksystem mit Programmen und Schaltungen als Tonerzeuger
DE69711518T2 (de) Auf Software basierendes Tonquellensystem und Verfahren zur Erzeugung von akustischen Wellenformdaten
DE69114462T2 (de) Vorrichtung zur synchronen Anzeige von Liedertexten.
DE69325336T2 (de) Gerät zum Beaufschlagen eines Signals mit einem Klangeffekt
DE69621488T2 (de) Karaokevorrichtung mit Erzegung von einer an eine Gesangstimme zugefügten synthetischen Stimme
DE69608292T2 (de) Audio-synthesizer
US5319151A (en) Data processing apparatus outputting waveform data in a certain interval
DE69026966T2 (de) Elektronisches Musikinstrument mit mehreren verschiedenen Tonerzeugern
DE69623866T2 (de) Verfahren und Vorrichtung zur Bildung einer Tonwellenform durch kombinierte Verwendung von verschiedenen Auflösungen der Abtastwerte der Wellenformen
DE3887809T2 (de) Elektronisches Musikinstrument.
DE602005004685T2 (de) Tonwellenform Synthesizer
DE69613068T2 (de) Digitales Musikinstrument mit Wellenformbearbeitung zur Erzeugung eines Klangeffektes
DE69615455T2 (de) Musiksystem, Tonerzeuger und Verfahren zur Tonsynthetisierung
DE69327639T2 (de) Vorrichtung und Verfahren zur dynamischen Konfiguration von Synthesizern
US6137046A (en) Tone generator device using waveform data memory provided separately therefrom
EP0047175A1 (de) Sprachsynthesizer
DE69611874T2 (de) Verfahren und Vorrichtung zur Musiktonerzeugung
DE69630623T2 (de) Musikrechner bestehend aus vereinbaren Softwaremodulen
DE60023713T2 (de) Vorrichtung und verfahren zur wiedergabe von musikstücken in einem tragbaren telefon
DE68914152T2 (de) Automatische Spiel- und Tonerzeugungseinheit in einer automatischen Musikanlage.
DE69613049T2 (de) Verfahren und Vorrichtung zur auf Software basierten Tonwellenformerzeugung
DE69228101T2 (de) Elektronisches Musikinstrument mit einer Funktion zur Algorithmusauswahl
JP4036233B2 (ja) 楽音発生装置および楽音発生方法、並びに該方法に係るプログラムを記憶した記憶媒体
US6535772B1 (en) Waveform data generation method and apparatus capable of switching between real-time generation and non-real-time generation

Legal Events

Date Code Title Description
8364 No opposition during term of opposition