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