JP6090204B2 - 音響信号発生装置 - Google Patents

音響信号発生装置 Download PDF

Info

Publication number
JP6090204B2
JP6090204B2 JP2014031724A JP2014031724A JP6090204B2 JP 6090204 B2 JP6090204 B2 JP 6090204B2 JP 2014031724 A JP2014031724 A JP 2014031724A JP 2014031724 A JP2014031724 A JP 2014031724A JP 6090204 B2 JP6090204 B2 JP 6090204B2
Authority
JP
Japan
Prior art keywords
sound
value
sample
pitch
acoustic signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2014031724A
Other languages
English (en)
Other versions
JP2015158527A (ja
Inventor
太郎 白濱
太郎 白濱
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yamaha Corp
Original Assignee
Yamaha Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yamaha Corp filed Critical Yamaha Corp
Priority to JP2014031724A priority Critical patent/JP6090204B2/ja
Priority to EP15155304.7A priority patent/EP2911147B1/en
Priority to EP17183288.4A priority patent/EP3261086B1/en
Priority to US14/626,784 priority patent/US9792916B2/en
Priority to CN201510087373.1A priority patent/CN104867487B/zh
Publication of JP2015158527A publication Critical patent/JP2015158527A/ja
Application granted granted Critical
Publication of JP6090204B2 publication Critical patent/JP6090204B2/ja
Priority to US15/698,626 priority patent/US10388290B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/008Multichannel audio signal coding or decoding using interchannel correlation to reduce redundancy, e.g. joint-stereo, intensity-coding or matrixing
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H1/00Details of electrophonic musical instruments
    • G10H1/02Means for controlling the tone frequencies, e.g. attack or decay; Means for producing special musical effects, e.g. vibratos or glissandos
    • G10H1/06Circuits for establishing the harmonic content of tones, or other arrangements for changing the tone colour
    • G10H1/08Circuits for establishing the harmonic content of tones, or other arrangements for changing the tone colour by combining tones
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H7/00Instruments in which the tones are synthesised from a data store, e.g. computer organs
    • G10H7/02Instruments in which the tones are synthesised from a data store, e.g. computer organs in which amplitudes at successive sample points of a tone waveform are stored in one or more memories
    • G10H7/04Instruments in which the tones are synthesised from a data store, e.g. computer organs in which amplitudes at successive sample points of a tone waveform are stored in one or more memories in which amplitudes are read at varying rates, e.g. according to pitch
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L13/00Speech synthesis; Text to speech systems
    • G10L13/02Methods for producing synthetic speech; Speech synthesisers
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L13/00Speech synthesis; Text to speech systems
    • G10L13/06Elementary speech units used in speech synthesisers; Concatenation rules
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L13/00Speech synthesis; Text to speech systems
    • G10L13/02Methods for producing synthetic speech; Speech synthesisers
    • G10L2013/021Overlap-add techniques

Description

本発明は、音(音声又は楽音)の波形を表す波形データを記憶した波形メモリから、波形データを読み出して音響信号を発生する音響信号発生装置に関する。とくに、音の長さ(再生速度(時間の進む速さ))、ピッチ及びフォルマントのうちのいずれかの要素を他の要素に影響を与えることなく変更可能な音響信号発生装置に関する。
従来から、例えば下記特許文献1に示されているように、音の波形を表す波形データを波形メモリから読み出して、前記読み出した波形データが表す音を再生する電子楽器は知られている。この電子楽器は、音を再生するための複数の発音チャンネルを備えている。この電子楽器は、所定の音域ごとに波形データを1つずつ割り当てている。前記波形データを構成する各サンプル値は圧縮され、各サンプル値がサンプリングされた順に、波形メモリの連続するアドレスに記憶している。この電子楽器においては、各サンプル値を1つ前のサンプル値からの変化に関係して圧縮する圧縮方式を採用しており、圧縮データをデコードするためには、1つ前のサンプル値を用いる必要がある。したがって、波形メモリから圧縮データを読み出す際には、発音チャンネルは、読み出しアドレスを1つずつ進めている。
各発音チャンネルは、各サンプリング期間(D/Aコンバータが1つのディジタル値を1つのアナログ値に変換する期間)に、波形メモリから圧縮データを読み出してデコードすることにより、1つのサンプル値(音響信号)を計算する。再生する音(以下、再生音と呼ぶ)のピッチがサンプリングした音(以下、原音と呼ぶ)のピッチと同じ場合は、発音チャンネルは、読み出しアドレスを1つ進めて圧縮データを読み出し、1つ前のサンプリング期間のサンプル値に圧縮データの値を加算することにより、今回のサンプリング期間のサンプル値を計算する。再生音のピッチが原音のピッチと異なる場合は、原音のピッチに対する再生音のピッチの比率(ピッチ倍率)に応じて圧縮データの読み出しレートを設定する。つまり、発音チャンネルは、連続するアドレスに記憶されている複数の圧縮データを読み出して、前記読み出した複数の圧縮データをデコードする。つまり、複数のサンプル値を順に復元する。そして、前記復元された複数のサンプル値を用いた線形補間演算により、再生音のピッチに対応したサンプル値が算出される。
また、下記特許文献2に記載されているように、音声の一部の区間(前記音声の先頭部分に含まれる所定数の母音)のピッチを変更することなく、その区間の長さを変更(伸長)する機能を備えた補聴器は知られている。
特開平9−146555号公報 特開平9−312899号公報
上記従来の電子楽器において、再生音のピッチを原音のピッチとは異なるピッチに設定した場合、再生音の長さが原音の長さとは異なる長さになってしまう。例えば、再生音のピッチを原音のピッチよりも高いピッチに設定した場合、再生音は原音よりも短くなる。一方、再生音のピッチを原音のピッチよりも低いピッチに設定した場合、再生音は原音よりも長くなる。また、上記従来の電子楽器において、再生音のピッチを原音のピッチとは異なるピッチに設定した場合、再生音のフォルマントが原音のフォルマントとは異なるフォルマントになってしまう。例えば、再生音のピッチを原音のピッチよりも高いピッチに設定した場合、再生音のフォルマントが原音のフォルマントよりも高くなる。一方、再生音のピッチを原音のピッチよりも低いピッチに設定した場合、再生音のフォルマントは原音のフォルマントよりも低くなる。つまり、音色が変わってしまう。
また、上記従来の補聴器においては、専用の回路(DSP)を用いて、上記の機能を実現している。このような専用の回路(DSP)を用いる場合、所定長の波形を表わす波形データが形成されるまで、その波形データを構成する各サンプル値を記憶しておく必要がある。すなわち、比較的大きな記憶容量を有するメモリが必要である。また、発音開始指示(つまり、音声の入力時)から前記波形データが形成されるまでの遅れが生じる。電子楽器において、前記発音チャンネルに加え、上記機能を実現するための専用の回路(例えば、DSP)を搭載すると、回路規模が大きくなり、価格が高くなる。とくに、発音数を増加させると前記メモリの記憶容量を増やす必要があり、その問題が顕著になる。しかも、全ての機能が常に利用されるわけではないので、無駄が生じる。
本発明は上記問題に対処するためになされたもので、その目的は、音の長さ、ピッチ及びフォルマントのうちのいずれかの要素を他の要素に影響を与えることなく変更可能な音響信号発生装置であって、構成が簡単な音響信号発生装置を提供することにある。なお、下記本発明の各構成要件の記載においては、本発明の理解を容易にするために、後述する実施形態の対応箇所の符号を括弧内に記載しているが、本発明の各構成要件は、実施形態の符号によって示された対応箇所の構成に限定解釈されるべきものではない。
上記目的を達成するために、本発明の特徴は、原音の波形を表す波形データを構成する複数のサンプル値又は前記複数のサンプル値に基づいて計算された複数の圧縮データを記憶した波形データ記憶手段(WM、RB)と、サンプリング期間ごとにカウント値が更新されるサンプルカウンタ(C (n))をそれぞれ有し、前記サンプルカウンタのカウント値(t (n))に基づいて、1つ又は複数の前記サンプル値又は前記圧縮データを前記波形データ記憶手段から読み出して、前記サンプルカウンタのカウント値に対応するサンプル値であって、音の波形を表わす音響信号を構成するサンプル値を計算して出力する複数の発音手段(CH(n))と、前記サンプルカウンタの初期カウント値を設定するとともにカウントを開始させ、サンプリング期間ごとに前記サンプルカウンタのカウント値に加算する加算値(v、β、γ)を前記発音手段に供給して前記サンプルカウンタのカウント値を更新させ、前記サンプルカウンタのカウント値が所定の値に達したとき前記サンプルカウンタのカウントを停止させる制御手段(CT)と、を備えた音響信号生成装置(16、WM、RB、18)であって、時間間隔をおいて、前記原音における時間軸方向に互いにずれた複数の区間を前記複数の発音チャンネルから選択した複数の発音手段に割り当て、前記割り当てた区間の先頭位置に対応する値に基づいて前記選択した複数の発音手段のサンプルカウンタの初期カウント値をそれぞれ設定するとともに前記選択した複数の発音手段のサンプルカウンタのカウントを開始させ、前記選択した複数の発音手段から出力されたサンプル値を重畳加算することにより、前記原音の長さ、前記原音のピッチ及び前記原音のフォルマントのうちのいずれか1つの要素又は複数の要素を変更した1つの再生音の波形を表わす音響信号を構成する1つのサンプル値をサンプリング期間ごとに生成し、前記発音手段のサンプルカウンタのカウント値が、前記発音手段に割り当てられた前記区間の末尾位置に対応する値に達したとき、前記発音手段のサンプルカウンタのカウントを停止させる動作モード(後述する実施形態における第2乃至第4モードのうちのいずれか1つのモードに相当)を備え、前記複数の区間、前記時間間隔及び前記加算値は、前記原音の長さに対する前記再生音の長さの比率を表わす第1比率(α)、前記原音のピッチに対する前記再生音のピッチの比率を表わす第2比率(β)、及び前記原音のフォルマント周波数に対する前記再生音のフォルマント周波数の比率を表わす第3比率(γ)のうちのいずれか1つの比率又は複数の比率に基づいて決定される、音響信号生成装置としたことにある。
この場合、前記制御手段は、前記第1比率に応じた値をサンプリング期間ごとに加算する第1カウンタ(C (CT))と、前記第2比率に応じた値をサンプリング期間ごとに加算する第2カウンタ(C (CT))と、を備え、前記第1カウンタのカウント値(t (CT))が予め設定された第1目標値(t (CT))を超えたとき、前記第1目標値を記憶するとともに前記第1目標値を更新し、前記第2カウンタのカウント値(t (CT))が予め設定された第2目標値(dpm)を超えたとき、前記記憶した前記第1目標値に対応する区間を、前記選択した複数の発音手段のうちの1つの発音手段に割り当てるとよい。
この場合、前記第1目標値及び第2目標値は、前記原音を構成する基本音のピッチに相当するサンプル数に基づいてそれぞれ設定されているとよい。
この場合、前記制御手段は、前記時間間隔を前記第2比率に応じて設定し、前記加算値を前記第3比率に応じて設定するとよい。
また、この場合、前記制御手段は、前記第1比率に応じた値をサンプリング期間ごとに加算する第1カウンタ(C (CT))を備え、前記第1カウンタのカウント値(t (CT))が予め設定された第1目標値(t (CT))を超えたとき、前記第1目標値に対応する前記区間を、前記選択した複数の発音手段のうちの1つの発音チャンネルに割り当ててもよい。
この場合、前記波形データは、フレーズをサンプリングして形成され、前記第1目標値は、前記フレーズを構成する各音のアタック位置に基づいて設定されているとよい。
本発明に係る音響信号生成装置においては、従来の音響信号生成装置と同様の複数の発音手段(発音チャンネル)によって原音の一部の区間に相当する波形を表す音響信号が順次生成され、それらが重畳加算される。これにより、前記原音の長さ、前記原音のピッチ及び前記原音のフォルマントのうちのいずれか1つの要素又は複数の要素を変更した1つの再生音の波形を表わす音響信号が形成される。このように、本発明によれば、音の長さ、ピッチ及びフォルマントのうちのいずれかの要素を他の要素に影響を与えることなく変更可能な音響信号発生装置であって、構成が簡単な音響信号発生装置を提供できる。つまり、本発明に係る音響信号生成装置においては、上記従来の音響信号生成装置(従来の補聴器)のような専用の回路(例えば、DSP)が不要である。また、サンプリング期間ごとに1つのサンプル値が出力されるので、上記従来の音響信号生成装置のような遅れの問題が生じない。
また、この場合、音声又は楽音をリアルタイムにサンプリングするとともに、前記サンプリングした音声又は楽音のピッチを計算する計算手段(DP)を備え、前記波形データ記憶手段は、前記サンプリングにより得られたサンプル値を一時的に記憶するバッファ(RB)であってもよい。これによれば、音声又は楽音にリアルタイムにハーモニーを付与することができる。
また、本発明の他の特徴は、前記原音全体を1つの発音手段に割り当て、前記原音の先頭位置に対応する値に基づいて前記1つの発音手段のサンプルカウンタの初期カウント値を設定するとともに前記1つの発音手段のサンプルカウンタのカウントを開始させ、1つの再生音の波形を表わす音響信号を構成する1つのサンプル値をサンプリング期間ごとに生成させ、前記1つの発音手段のサンプルカウンタのカウント値が前記原音の末尾位置に対応する値に達したとき、前記1つの発音手段のサンプルカウンタのカウントを停止させる動作モード(後述する実施形態における第1モードに相当)をさらに備え、第1及び第2の再生音をそれぞれ表わす第1及び第2の音響信号を同時に生成する際、前記第1の音響信号を一方の動作モードを用いて生成し、前記第2の音響信号を他方の動作モードを用いて生成可能な音響信号生成装置としたことにある。これによれば、複数の発音チャンネルを効率よく利用することができる。
本発明の一実施形態に係る音源回路が適用された電子楽器の構成を示すブロック図である。 図1の音源回路の構成を示すブロック図である。 図2の重畳加算回路の構成を示すブロック図である。 セグメントに適用される窓関数の例を示すグラフである。 セグメントに適用される窓関数の他の例を示すグラフである。 発音開始指示プログラムのフローチャートである。 第1モードにおける音源回路の構成を示すブロック図である。 第1モードにおける制御部の動作シーケンス図である。 第1モードにおける発音チャンネルの動作シーケンス図である。 ピッチ倍率が「2.5」である場合のサンプル値の復元手順を示す概念図である。 ピッチ倍率が「0.5」である場合のサンプル値の復元手順を示す概念図である。 ピッチマーク及びセグメントの概念図である。 第2モードにおける音源回路の構成を示すブロック図である。 第2モードにおける音源回路の動作の概略を示す概略図である。 第2モードにおける制御部の動作シーケンス図の前半部分である。 第2モードにおける制御部の動作シーケンス図の中間部である。 第2モードにおける制御部の動作シーケンス図の後半部である。 第2モードにおけるトラックを構成する発音チャンネルのうちの先頭の発音チャンネルの動作シーケンス図である。 第2モードにおけるトラックを構成する発音チャンネルのうちの先頭チャンネル以外の発音チャンネルの動作シーケンス図である。 ストレッチ率の値に応じて再生されるグレインの系列が異なることを示す概略図である。 ピッチ倍率の値に応じて再生されるグレインの系列が異なることを示す概略図である。 アタックマーク及びセグメントの概念図である。 ストレッチ率の値に応じて再生されるグレインの系列が異なることを示す概略図である。 第3モードにおける制御部の動作シーケンス図の前半部分である。 第3モードにおける制御部の動作シーケンス図の中間部である。 第3モードにおける制御部の動作シーケンス図の後半部である。 第3モードにおけるトラックを構成する発音チャンネルのうちの先頭の発音チャンネルの動作シーケンス図である。 第3モードにおけるトラックを構成する発音チャンネルのうちの先頭チャンネル以外の発音チャンネルの動作シーケンス図である。 ピッチ矯正の概念を示す概念図である。 複数のトラックを同期させた場合の音源回路の構成を示すブロック図である。 各トラックの再生位置を示す概念図である。
本発明の一実施形態に係る音響信号生成装置が適用された電子楽器DMについて説明する。まず、この電子楽器DMの概略について説明する。この電子楽器DMは、図1に示すように、音の波形を表す波形データを波形メモリWMから読み出して、前記読み出した波形データが表す音を再生する音源回路16を有する。音源回路16は、タイムストレッチ機能、ピッチシフト機能及びフォルマントシフト機能を有する。タイムストレッチ機能を利用すれば、音のピッチ及びフォルマントを維持したまま、音の長さを変更できる。つまり、音を時間軸方向に伸縮させることができる。言い換えれば、音の再生速度(時間の進む速さ)のみを変更できる。また、ピッチシフト機能を利用すれば、音の長さ及びフォルマントを維持したまま、音のピッチを変更できる。また、フォルマントシフト機能を利用すれば、音の長さ及びピッチを維持したまま、音のフォルマントを変更できる。タイムストレッチ機能、ピッチシフト機能及びフォルマントシフト機能のうち2つの機能又は全てを同時に利用することができる。つまり、音の長さ、ピッチ及びフォルマントのうちの1つのみを変更するのに限られず、2つ又は全てを同時に変更することもできる。
音源回路16は、音の再生に関する動作モードとして4つのモードを備える。第1モードにおいては、タイムストレッチ機能、ピッチシフト機能及びフォルマントシフト機能は無効である。つまり、上記従来の電子楽器と同様に、原音のピッチとは異なるピッチに変更して再生すると、ピッチのみならず、長さ及びフォルマントも変わる。第2モードにおいては、上記のタイムストレッチ機能、ピッチシフト機能及びフォルマントシフト機能が有効になる。第2モードは、ボーカルソロ、ストリングスなど単一の楽器の演奏(フレーズ)の再生に適している。また、第3モードにおいては、タイムストレッチ機能及びピッチシフト機能が有効になる。第3モードは、ボーカル、ギター、ドラム、パーカッションなど複数の楽器の演奏が含まれるフレーズの再生に適している。また、第4モードにおいては、ピッチシフト機能及びフォルマントシフト機能が有効になる。第4モードでは、リアルタイムに入力されるボーカルソロ、ストリングスなど単一の楽器の演奏音にハーモニーを付与することができる。なお、上記の4つのモードのうちの複数のモード又はすべてのモードを同時に利用することもできる。詳しくは後述するように、音源回路16は256個の発音チャンネルを備えるが、再生を開始する際に使用されていない発音チャンネルが存在すれば、それらにいずれの動作モードを割り当ててもよい。ただし、第2乃至第4モードに関しては、1つの音を再生するために4つの発音チャンネルを使用するため、使用されていない発音チャンネルの数が3つ以下の場合には、それらの発音チャンネルに第2乃至第4モードを割り当てることはできない。
つぎに、電子楽器DMの構成について説明する。電子楽器DMは、図1に示すように、入力操作子11、コンピュータ部12、表示器13、記憶装置14、外部インターフェース回路15、及び音源回路16を備え、これらがバスBSを介して接続されている。また、音源回路16には、サウンドシステム17、音声入力装置18及び波形メモリWMが接続されている。
入力操作子11は、演奏操作子及び設定操作子を含む。演奏操作子及び設定操作子は、オン・オフ操作に対応したスイッチ(例えば数値を入力するためのテンキー)、回転操作に対応したボリューム又はロータリーエンコーダ、スライド操作に対応したボリューム又はリニアエンコーダ、マウス、タッチパネルなどからなる。演奏操作子は、発音開始、発音停止などに用いられる。また、設定操作子は、動作モードの選択、音色の選択などに用いられる。また、設定操作子には、音の長さ(再生速度)を変更する際に用いられる音長設定操作子が含まれる。また、設定操作子には、音のピッチを変更する際に用いられるピッチ設定操作子が含まれる。また、設定操作子には、音のフォルマントを変更する際に用いられるフォルマント設定操作子が含まれる。入力操作子11を操作すると、その操作内容を表す操作情報(操作子の指示値)が、バスBSを介して、後述するコンピュータ部12に供給される。
コンピュータ部12は、バスBSにそれぞれ接続されたCPU12a、ROM12b及びRAM12cからなる。CPU12aは、後述する発音プログラムをROM12bから読み出して実行して、演奏操作子の操作に関する演奏操作情報を音源回路16に供給する。演奏操作情報には、再生音のピッチを表すピッチ情報、再生音の音量を表す音量情報などが含まれる。また、CPU12aは、設定操作子が操作されると、その操作内容を表わす設定情報を音源回路16に供給する。設定情報には、動作モードを表わす動作モード情報、再生音の音色を表す音色情報(例えば、フィルタのカットオフ周波数、レゾナンス量など)などが含まれる。また、設定情報には、音長設定操作子、ピッチ設定操作子、フォルマント設定操作子の指示値などが含まれる。
ROM12bには、前記発音プログラムに加えて、初期設定パラメータ、各演奏操作子の各ノート番号NNに割り当てられた波形データに関する情報を表わす波形データ情報、表示器13に表示される画像を表わす表示データを生成するための図形データ及び文字データなどの各種データが記憶されている。RAM12cには、各種プログラムの実行時に必要なデータが一時的に記憶される。
表示器13は、液晶ディスプレイ(LCD)によって構成される。コンピュータ部12は、図形データ、文字データなどを用いて表示すべき内容を表わす表示データを生成して表示器13に供給する。表示器13は、コンピュータ部12から供給された表示データに基づいて画像を表示する。
また、記憶装置14は、HDD、FDD、CD、DVDなどの大容量の不揮発性記録媒体と、各記録媒体に対応するドライブユニットから構成されている。外部インターフェース回路15は、電子楽器DMを他の電子音楽装置、パーソナルコンピュータなどの外部機器に接続可能とする接続端子(例えば、MIDI入出力端子)を備えている。電子楽器DMは、外部インターフェース回路15を介して、LAN(Local Area Network)、インターネットなどの通信ネットワークにも接続可能である。
音源回路16は、図2に示すように、制御部CT、発音部SP、キャッシュ回路CM、信号処理部DP、リングバッファRB及びミキサー部MXを有する。
制御部CTは、CPU12aから供給された演奏操作情報及び設定情報に基づいて、各種パラメータを生成して、次に説明する発音部SPを構成する各発音チャンネルCH(n=0,1,・・・,255)に供給する。制御部CTには、各種エンベロープ信号を発生するエンベロープ発生回路及び低周波信号を発生する低周波発振器が含まれる。エンベロープ信号及び低周波信号は、発音開始からの経過時間に応じてピッチ、音色及び音量を変化させる際に利用される。上記の各種パラメータには、原音のピッチに対する再生音のピッチの比率を表すピッチ倍率β、フィルタの特性を設定するフィルタパラメータ、音量を設定する音量パラメータなどが含まれる。また、制御部CTは、後述する発音チャンネルCH(n=0,1,・・・,255)の動作状態をそれぞれ表す状態フラグSF (CT)を有する。また、制御部CTは、原音の波形データの先頭からのサンプル数を計測するサンプルカウンタC (CT)を有する。また、制御部CTは、発音チャンネルCH(n=0,1,・・・,255)が再生を開始するまでの時間を計測する再生時刻カウンタC (CT)を有する。また、制御部CTは、サンプリング期間ごとに、後述するデコード回路DEC(n)にて復元されたサンプル値を一時的に記憶するサンプルバッファSB(CT)を有する。また、制御部CTは、後述する目標値tを一時的に記憶する目標値レジスタTR(CT)を有する。
発音部SPは、複数(例えば256個)の発音チャンネルCH(n=0,1,・・・,255)を備える。発音チャンネルCH(0),CH(1),・・・,CH(255)の構成は共通である。発音チャンネルCH(n)は、読み込み回路DRD(n)、デコード回路DEC(n)、重畳加算回路OLA(n)、フィルタ回路FLT(n)及び音量制御回路VOL(n)を有する。
読み込み回路DRD(n)は、キャッシュ回路CMを介して波形メモリWMに接続されている。波形メモリWMには、原音(例えば、単一の楽器の単音、単一の楽器の演奏音からなるフレーズ、複数の楽器の演奏音が含まれるフレーズなど)を所定のサンプリング周期(例えば1/44100秒)でサンプリングして得られた各サンプル値が圧縮されて圧縮データとして記憶されている。圧縮データは、1つ前のサンプリング期間のサンプル値と現在のサンプル値との差を表す。したがって、波形データは、先頭のサンプル値と複数の圧縮データからなる。1つのアドレスに1つの圧縮データが対応付けられている。したがって、圧縮データを読み出す際の読み出しアドレスと先頭アドレスとの差は、前記圧縮データを用いて復元されるサンプル値がサンプリングされた時刻(サンプリング開始からの経過時間)に相当する。また、上記のように、本実施形態においては、圧縮データが波形メモリに記憶されているのであって、サンプル値そのものが記憶されているわけではないが、1つの圧縮データは原音の1つのサンプル値に対応しているので、圧縮データの読み出しアドレスは、圧縮されずにサンプル値が各アドレスに対応して記憶されている場合のサンプル値の読み出しアドレスに一致する。したがって、以下の説明では、波形メモリWMから圧縮データを読み出すアドレスを、サンプル値の読み出しアドレスと呼ぶ。
読み込み回路DRD(n)には、波形メモリWM内のアドレスであって、原音の先頭のサンプル値が記憶されたアドレス(先頭アドレス)が、制御部CTから供給される。読み込み回路DRD(n)は、サンプリング期間ごとに、制御部CTのサンプルカウンタC (CT)と同様のサンプルカウンタC (n)を有する。サンプルカウンタC (n)のカウント値t (n)は、先頭アドレスからのオフセットアドレスを表わす。読み込み回路DRD(n)は、先頭アドレスにカウント値t (n)を加算した読み出しアドレスをキャッシュ回路CMに供給する。ただし、読み出しアドレスは、通常小数部を含む。後述するように、読み出しアドレスに相当するサンプル値は、デコード回路DEC(n)によって計算される。デコード回路DEC(n)が前記読み出しアドレスに対応するサンプル値を計算するために必要な圧縮データを、キャッシュ回路CMは波形メモリWMから読み出して読み込み回路DRD(n)に供給する。なお、キャッシュ回路CMは、キャッシュメモリを備えており、圧縮データが一時的にキャッシュメモリに記憶される。読み込み回路DRD(n)に供給すべき圧縮データがキャッシュメモリに記憶されている場合には、キャッシュ回路CMは、キャッシュメモリからその圧縮データを読み出して読み込み回路DRD(n)に供給する。
デコード回路DEC(n)は、供給された圧縮データを用いて現在のサンプリング期間のサンプル値を計算する。デコード回路DEC(n)は、前記計算した現在のサンプリング期間のサンプル値を、重畳加算回路OLA(n)に供給する。
重畳加算回路OLA(n)は、図3に示すように、乗算回路MUL(n)と加算回路ADD(n)を備える。乗算回路MUL(n)は、入力信号に窓関数を適用する回路である。乗算回路MUL(n)は、前記入力信号における位相を計算するために用いる位相カウンタC (n)を有する。乗算回路MUL(n)は、位相カウンタC (n)のカウント値t (n)を用いて係数WD(n)を計算する。係数WD(n)は、図4A,4Bに示すような、カウント値t (n)の関数である。このような窓関数が入力信号に適用されることにより、出力信号はフェードインした後、フェードアウトする。
加算回路ADD(0),ADD(1),・・・,ADD(255)は、互いに接続されている。加算回路ADD(n=a)は、乗算回路MUL(n=a)から供給されたサンプル値と他の加算回路ADD(n=b)から供給されたサンプル値を加算して、さらに他の加算回路ADD(n=c)に供給するとともにフィルタ回路FLT(n=a)に供給可能である。ただし、第1モードのときには、乗算回路MUL(n)及び加算回路ADD(n)は利用されず、供給されたサンプル値がそのままフィルタ回路FLT(n)に供給される(図5参照)。
フィルタ回路FLT(n)は、重畳加算回路OLA(n)から供給されたサンプル値の系列に対してフィルタパラメータに応じたフィルタ処理を実行することにより、前記サンプル値の系列によって表される音の周波数特性(振幅特性)を変更して、音量制御回路VOL(n)に供給する。
音量制御回路VOL(n)は、フィルタ回路FLT(n)から供給されたサンプル値を音量パラメータに応じて増幅して、ミキサー部MXへ出力する。
信号処理部DPは、入力した波形データが表わす音にリバーブ、ディレイなどの効果を付与して出力する。また、入力した信号のピッチをリアルタイムに検出する。
リングバッファRBは、後述する音声入力装置18から信号処理部DPに入力され、効果が付与された音声を表す波形データを一時的に記憶するメモリである。
ミキサー部MXは、サンプリング期間ごとに、各発音チャンネルCH(0),CH(1),・・・,CH(255)及び信号処理部DPから供給されたサンプル値を累算して、サウンドシステム17に供給する。
サウンドシステム17は、ミキサー部MXから供給されたディジタル音信号をアナログ音信号に変換するD/A変換器、前記変換したアナログ音信号を増幅するアンプ、及び増幅されたアナログ音信号を音響信号に変換して出力する左右一対のスピーカを備えている。
音声入力装置18は、収音装置としてのマイク、マイクから出力されたアナログ音信号をディジタル音信号に変換するA/D変換器を備えている。
次に、上記のように構成した電子楽器DMの動作について説明する。まず、CPU12aの動作について説明する。演奏者が演奏操作子(例えば、鍵盤装置のいずれかの鍵)を操作してノートオンイベントが発生すると、CPU12aは、図6に示すように、ステップS100にて、発音プログラムの実行を開始する。次に、CPU12aは、ステップS101にて、押鍵された鍵を表すノート番号NN及び押鍵強度VLを検出する。
つぎに、CPU12aは、ステップS102にて、前記ノート番号NN及び押鍵強度VLに割り当てられている波形データを特定し、その波形データの先頭アドレス及び末尾アドレス、並びに原音のピッチOP及び動作モードを含む波形データ情報をROM12bから読み込む。そして、CPU12aは、ステップS103にて、前記取得したノート番号NN、原音のピッチOP、押鍵強度VL、各種エンベロープ信号を規定するパラメータ及び各種低周波信号を規定するパラメータ、動作モードを表わす動作モード情報などを演奏操作情報として音源回路16に供給し、ステップS104にて発音処理を終了する。
つぎに、動作モードが第1モードである場合の音源回路16の発音動作について説明する。第1モードにおいては、図5に示すように音声入力装置18及びリングバッファRBは利用されない。発音チャンネルCH(0)〜CH(255)は互いに独立して動作し、それぞれ1つの音を再生する。つまり、第1モードでは、256個の音を同時に再生可能である。
制御部CTは、CPU12aから演奏操作情報を入力すると、図7に示す制御シーケンスに従って動作開始する。制御部CTは、ステップS200にて、動作を開始し、ステップS201にて、発音チャンネルを1つ確保する。なお、CPU12aが発音チャンネルを確保し、確保した発音チャンネルのインデックスnを音源回路16に供給しても良い。以下、確保された発音チャンネルを発音チャンネルCH(n)と表記する。つぎに、制御部CTは、ステップS202にて、エンベロープ発生回路及び低周波発振器を動作させ、前記入力した演奏操作情報及び前記演奏操作情報入力する前に入力した設定情報(以下、単に演奏操作情報及び設定情報という)に含まれる各種エンベロープ信号を規定するパラメータ及び各種低周波信号を規定するパラメータに従ったエンベロープ信号及び低周波信号を発生開始させる。
つぎに、制御部CTは、ステップS203にて、先頭アドレスを読み込み回路DRD(n)に供給する。つぎに、制御部CTは、ステップS204にて、発音チャンネルCH(n)に対応する状態フラグSF (CT)を「発音中」に設定する。
つぎに、制御部CTは、ステップS205にて、演奏操作情報及び設定情報に含まれる音色に関するパラメータ、並びに発音中に音色を変化させるエンベロープ信号及び低周波信号に基づいてフィルタ回路FLT(n)の設定を表わすフィルタパラメータを生成してフィルタ回路FLT(n)に供給する。つぎに、制御部CTは、ステップS206にて、演奏操作情報及び設定情報に含まれる音量に関するパラメータ、並びに音量を変化させるエンベロープ信号及び低周波信号に基づいて、音量制御回路VOL(n)の設定を表わす音量パラメータを計算し、音量制御回路VOL(n)に供給する。なお、設定情報は、発音中であっても変更され得る。
つぎに、制御部CTは、ステップS207にて、演奏操作情報及び設定情報に含まれるピッチに関するパラメータ(例えば、ノート番号NN、並びにピッチを変化させるエンベロープ信号及び低周波信号を合成して得られたピッチ情報に基づいて再生音のピッチを決定する。そして、原音のピッチOPに対する前記決定した再生音のピッチの比率を表わすピッチ倍率βを算出して、発音チャンネルCH(n)の読み込み回路DRD(n)に供給する。ただし、最初のサンプリング期間においては、ピッチ倍率βは「0」に設定される。
つぎに、制御部CTは、ステップS208にて、発音チャンネルCH(n)の再生位置が波形データの末尾に到達したか否かを判定する。具体的には、制御部CTは、読み込み回路DRD(n)のサンプルカウンタC (n)のカウント値t (n)に先頭アドレスを加算した値が、末尾アドレスに到達したか否かを判定する。発音チャンネルCH(n)の再生位置が波形データの末尾に到達した場合には、制御部CTは、「Yes」と判定して、ステップS209にて、発音チャンネルCH(n)の動作を停止させるとともに、ステップS210にて、発音チャンネルCH(n)に対応する状態フラグSF (CT)を「休止中」に設定する。つぎに、制御部CTは、ステップS211にて、発音チャネルCH(n)の制御を終了する。一方、発音チャンネルCH(n)の再生位置が未だ波形データの末尾に到達していない場合には、制御部CTは、「No」と判定して、次のサンプリング期間に上記のステップS205〜S208からなる処理を実行する。
つぎに発音チャンネルCH(n)の制御シーケンスについて説明する。発音チャンネルCH(n)は、図8に示す制御シーケンスに従って、サンプリング期間ごとに1つのサンプル値を計算して、ミキサー部MXに供給する。発音チャンネルCH(n)は、ステップS300にて動作を開始する。発音チャンネルCH(n)は、ステップS301にて、初期化処理を実行する。具体的には、読み込み回路DRD(n)のサンプルカウンタC (n)のカウント値t (n)を「0」に設定する。また、読み込み回路DRD(n)は、キャッシュ回路CMを介して、先頭のサンプル値及び先頭アドレスに「1」を加算したアドレス(2番目のアドレス)の圧縮データを波形メモリWMから読み込み、デコード回路DEC(n)に供給する。そして、デコード回路DEC(n)は先頭のサンプル値に前記供給された圧縮データの値を加算することにより、2番目のアドレスに対応したサンプル値を復元する。そして、デコード回路DEC(n)は、先頭のサンプル値と前記復元したサンプル値を記憶する。
つぎに、読み込み回路DRD(n)は、ステップS302にて、制御部CTからピッチ倍率βを入力する。つぎに、読み込み回路DRD(n)は、ステップS303にて、サンプルカウンタC (n)のカウント値t (n)を更新する。すなわち、カウント値t (n)にピッチ倍率βの値を加算する。最初のサンプリング期間においては、ピッチ倍率βの値が「0」なので、カウント値t (n)は、「0」である。つぎに、読み込み回路DRD(n)は、ステップS304にて、先頭アドレスにカウント値t (n)を加算する。これにより、読み出しアドレスが更新される。最初のサンプリング期間においては、カウント値t (n)が「0」なので、読み出しアドレスは、先頭アドレスに設定される。つぎに、読み込み回路DRD(n)は、ステップS305にて、読み出しアドレスをキャッシュ回路CMに供給する。キャッシュ回路CMは、読み出しアドレスに相当するサンプル値を復元するために必要な圧縮データを波形メモリWMから読み込んで読み込み回路DRD(n)に供給する。
キャッシュ回路CMは、1つ前のサンプリング期間における読み出しアドレスの整数部の値に「2」を加算したアドレス(読み出し開始アドレスと呼ぶ)から順に(1つずつ)アドレスをインクリメントしながら圧縮データを順に読み出して読み込み回路DRD(n)に供給する。そして、今回のサンプリング期間における読み出しアドレスの整数部の値に「1」を加算したアドレス(読み出し終了アドレスと呼ぶ)の圧縮データを読み出して読み込み回路DRD(n)に供給すると、キャッシュ回路CMは、読み出し処理を終了する。ただし、最初のサンプリング期間においては、読み出しアドレスの整数部は「0」であるから、読み出し開始アドレスが、読み出し終了アドレスを超えている。したがって、最初のサンプリング期間においては、キャッシュ回路CMは、データを読み出さない。
結果的に、読み出しアドレスの整数部の値の増加量と同数の圧縮データが読み込まれる。例えば、図9Aに示すように、読み出しアドレスが「1.2」から「3.6」に遷移した場合、2個の圧縮データが読み込まれる。また、例えば、図9Bに示すように、読み出しアドレスが「2.2」から「2.8」に遷移した場合には、圧縮データは読み込まれない。
つぎに、読み込み回路DRD(n)は、キャッシュ回路CMから供給された圧縮データ及び読み出しアドレスの小数部の値を、ステップS306にて、デコード回路DEC(n)に供給する。デコード回路DEC(n)は、1つ前のサンプリング期間において復元したサンプル値を記憶している。デコード回路DEC(n)は、ステップS307にて、前記記憶しているサンプル値とデコード回路DEC(n)から供給された圧縮データを用いて、読み出しアドレスに対応するサンプル値を求めるために必要な1つ又は複数のサンプル値を復元する。ただし、ピッチ倍率βの値が「1」より小さく、前回のサンプリング期間における読み出しアドレスの整数部の値と今回のサンプリング期間における読み出しアドレスの整数部との値が同値である場合には、デコード回路DEC(n)はサンプル値を復元しない。そして、デコード回路DEC(n)は、ステップS308にて、前記復元したサンプル値のうち、今回のサンプリング期間における読み出しアドレスの整数部の値及び前記整数部の値に「1」を加算したアドレスに相当する1対のサンプル値と、今回のサンプリング期間における読み出しアドレスの小数部の値を用いた線形補間演算により、今回のサンプリング期間における読み出しアドレスに対応したサンプル値を求める。つぎに、デコード回路DEC(n)は、ステップS309にて、前記計算した今回のサンプリング期間における読み出しアドレスに対応したサンプル値を、ステップS310にて、フィルタ回路FLT(n)に供給する。
つぎに、フィルタ回路FLT(n)は、ステップS310にて、制御部CTから供給されたフィルタパラメータに応じたフィルタを前記供給されたサンプル値に適用し、フィルタ処理したサンプル値を音量制御回路VOL(n)に供給する。つぎに、音量制御回路VOL(n)は、ステップS310にて、制御部CTから供給された音量パラメータに応じた係数を前記供給されたサンプル値に乗算し、その乗算結果をミキサー部MXに供給する。
2番目のサンプリング期間以降の各サンプリング期間には、発音チャンネルCH(n)は、上記のステップS302〜S311からなる処理を実行する。
(第2モード)
つぎに、動作モードが第2モードである場合の電子楽器DMの動作について説明する。第2モードでは、電子楽器DMとは別の分析装置により、原音の各区間のピッチが予め分析されるとともに、前記各区間のピッチに相当するサンプル数が予め計算された波形データを用いる。波形の先頭から前記各区間のピッチに相当するサンプル数を積算した数をそれぞれピッチマーク値と呼ぶ。すなわち、ピッチマーク値は、原音の波形データを構成する各サンプル値が記憶されている記憶領域に対応づけられたアドレスであって、原音を構成する基本音の節(ピッチマーク)に相当するアドレスを表す。上記のように、1つの圧縮データは1つのサンプル値に対応しているので、ピッチマーク値は原音の波形データにおける先頭アドレスからのオフセットアドレスに相当する。例えば、原音の先頭から末尾までピッチが一定であって、そのピッチに相当するサンプル数が600個である場合(つまり、基本周波数が73.5Hzである場合)、図10に示すように、各ピッチマーク値は、「0」、「600」、「1200」・・・となる。このピッチマーク値は波形メモリWMに記憶されている。説明を簡単にするために、図10に示す例では、各ピッチマーク値は整数であるが、各ピッチマーク値が小数部を含んでもよい。また、原音の中間部にてピッチが変化していても良い。
CPU12aの動作は第1モードと同じであるので、その説明を省略し、音源回路16の発音動作について説明する。第2モードにおいては、図11に示すように、音声入力装置18及びリングバッファRBは利用されない。また、第2モードでは、一組の発音チャンネルCH(n),CH(n+1),CH(n+2),CH(n+3)を用いて1つの再生音を生成する。具体的には、発音チャンネルCH(n+1),CH(n+2),CH(n+3)が再生音の一部の音(以下、グレインGRi=1,2,・・・と呼ぶ)をそれぞれ生成し、発音チャンネルCH(n)は発音チャンネルCH(n+1),CH(n+2),CH(n+3)にて生成されたグレインを加算して1つの再生音を生成してミキサー部MXへ供給する。したがって、第2モードでは、発音チャンネルCH(n+1),CH(n+2),CH(n+3)のフィルタ回路FLT(n+1),FLT(n+2),FLT(n+3)及び音量制御回路VOL(n+1),VOL(n+2),VOL(n+3)は利用されない。また、全ての発音チャンネルを第2モードとして動作させると、64個の音を同時に再生可能である。以下の説明では、上記の一組の発音チャンネルCH(n),CH(n+1),CH(n+2),CH(n+3)をトラックTKと呼ぶ。
つぎに、第2モードにおける音源回路16の動作の概略を説明する。各グレインGRは、原音の波形データの一部の区間であって、基本音の2周期分の長さに相当する区間(以下、セグメントSGi=0,1,2,・・・と呼ぶ)に対して図4Aに示すような窓関数を適用して形成される波形データによって表わされる音に相当する。図10に示すように、セグメントSGの先頭及び末尾のアドレスは、いずれかのピッチマーク値に一致する。したがって、セグメントSGの中央のアドレスも、いずれかのピッチマーク値に一致する。以下の説明において、セグメントSGの中央に位置するピッチマークを「中央のピッチマーク」と呼ぶ。また、セグメントSGの前半部分とセグメントSGi―1の後半部分とが同一となるように各セグメントSGが原音の波形データから切り出される。
図12に示すように、発音チャンネルCH(n+1),CH(n+2),CH(n+3)は、循環的に動作して、各グレインGRを生成する。上記のように、グレインGRを除く各グレインGRの先頭は、原音の中間部(先頭以外の部分)に相当する。本実施形態では、先頭のサンプル値を除くサンプル値は圧縮されているので、発音チャンネルCH(n+1),CH(n+2),CH(n+3)がグレインを再生し始める際に、そのグレインの先頭のサンプル値を計算する必要がある。そこで、発音チャンネルCH(n)は、サンプリング期間ごとに、原音の長さに対する再生音の長さの比率を表すストレッチ率αに応じて読み出しアドレスを進める。そして、その読み出しアドレスに対応するサンプル値を計算するために必要なサンプル値を復元する。制御部CTは、発音チャンネルCH(n)の読み出しアドレスが先頭アドレスにピッチマーク値を加算したアドレスを超えたサンプリング期間において、そのピッチマーク値の整数部の値に先頭アドレスを加算したアドレスに対応するサンプル値をサンプルバッファSB(CT)に記憶するとともに、そのピッチマーク値を目標値レジスタTR(CT)に記憶する。なお、図12におけるサンプルバッファSBの欄に記載されている数値は、サンプルバッファSB(CT)に記憶されているサンプル値が対応するグレインのインデックスiを表す。つまり、「i」と記載されている区間においてサンプルバッファSB(CT)に記憶されているサンプル値は、グレインGRを生成開始する際に用いられる。そして、制御部CTは、発音チャンネルCH(n+1),CH(n+2),CH(n+3)のうちの1つの発音チャンネル(例えば、発音チャンネルCH(n+1))にグレインを生成開始させる際に、サンプルバッファSB(CT)に記憶されているサンプル値と目標値レジスタTR(CT)に記憶されているピッチマーク値とを発音チャンネルCH(n+1)に供給する。発音チャンネルCH(n+1)は、制御部CTから供給されたサンプル値とピッチマーク値とを用いた線形補間演算により、前記供給されたピッチマークに対応するサンプル値を求める。このようにして、発音チャンネルCH(n+1)にて生成開始するグレインを生成するために用いられるセグメントが、制御部CTによって指定される。なお、詳しくは後述するように、発音チャンネルCH(n+1),CH(n+2),CH(n+3)のうち、グレインを再生開始する発音チャンネルは制御部CTによって選択される。また、その再生開始タイミングは、ピッチ倍率βに応じて制御部CTによって制御される。具体的には、1つのグレインが生成開始されてから次のグレインが生成開始されるまでの時間は、ピッチ倍率β、及び差分値dpm(ピッチマーク間のサンプル数)に応じて決定される。また、各グレインの時間軸方向の長さは、フォルマント設定操作子の指示値、エンベロープ信号、低周波信号などに基づいて計算された原音のフォルマント周波数に対する再生音のフォルマント周波数の倍率を表すフォルマント倍率γの逆数、及び差分値dpmに応じて決定される。
つぎに、制御部CTの制御シーケンスについて具体的に説明する。制御部CTは、CPU12aから発音開始情報(例えば、ノートオン情報)を含む演奏操作情報を入力すると、図13A,13B,13Cに示す制御シーケンスに従って動作する。制御部CTは、ステップS400にて動作を開始し、ステップS401にて、4つの発音チャンネルを確保する。以下、前記確保された発音チャンネルを発音チャンネルCH(n),CH(n+1),CH(n+2),CH(n+3)と表記する。次に、制御部CTは、ステップS402にて、初期化処理を実行する。具体的には、制御部CTは、読み出しアドレスが先頭アドレスにピッチマーク値を加算したアドレスを超えたか否かを判定するために用いる目標値tを「0」に設定する。つまり、制御部CTは、目標値レジスタTR(CT)に「0」を書き込む。また、制御部CTは、発音チャンネルCH(n)を介して、先頭のサンプル値を読み込んで、サンプルバッファSB(CT)に記憶する。また、制御部CTは、サンプルカウンタC (CT)のカウント値t (CT)を「0」に設定する。また、制御部CTは、発音チャンネルCH(n+1),CH(n+2),CH(n+3)の動作状態を表わす状態フラグSFn+1 (CT),SFn+2 (CT),SFn+3 (CT)を「休止中」に設定する。
つぎに、制御部CTは、ステップS403にて、エンベロープ発生回路及び低周波発振器を動作させ、前記入力した演奏操作情報及び前記演奏操作情報入力する前に入力した設定情報(以下、単に演奏操作情報及び設定情報という)に含まれる各種エンベロープ信号を規定するパラメータ及び各種低周波信号を規定するパラメータに従ったエンベロープ信号及び低周波信号を発生開始させる。
つぎに、制御部CTは、ステップS404にて、先頭アドレスを発音チャンネルCH(n)に供給して発音チャネルCH(n)の動作を開始させ、ステップS405にて、状態フラグSF (CT)を「発音中」に設定する。
つぎに、制御部CTは、ステップS406にて、第1モードと同様に、フィルタパラメータを生成してフィルタ回路FLT(n)に供給する。つぎに、制御部CTは、ステップS407にて、第1モードと同様に、音量パラメータを計算し、音量制御回路VOLに供給する。なお、第2モードにおいても、設定情報は、発音中であっても変更され得る。また、制御部CTは、音長設定操作子、ピッチ設定操作子及びフォルマント設定操作子の各指示値に応じて、エンベロープ信号及び低周波信号を変更可能である。
つぎに、制御部CTは、ステップS408にて、音長設定操作子の指示値に基づいて、ストレッチ率αを計算し、その逆数である再生速度倍率v(=1/α)を発音チャンネルCH(n)に供給する。つぎに、制御部CTは、ステップS409にて、カウント値t (CT)を更新する。すなわち、サンプルカウンタC (CT)のカウント値t (CT)に再生速度倍率vを加算する。ただし、最初のサンプリング期間における再生速度倍率vの値は「0」に設定される。なお、各サンプリング期間における、サンプルカウンタC (n)のカウント値t (n)とサンプルカウンタC (CT)のカウント値t (CT)は同一である。また、最初のサンプリング期間においては、カウント値t (CT)及びカウント値t (n)は「0」である。
つぎに、制御部CTは、ステップS410にて、読み出しアドレスが、先頭アドレスにピッチマーク値を加算したアドレスを超えたか否かを判定する。具体的には、サンプルカウンタC (CT)のカウント値t (CT)が目標値tを超えたか否かを判定する。カウント値t (CT)が目標値tを超えていない場合には、制御部CTは、「No」と判定して、後述のステップS412に処理を進める。一方、カウント値t (CT)が目標値tを超えた場合には、制御部CTは、「Yes」と判定して、ステップS411にて、発音チャンネルCH(n)のデコード回路DEC(n)から、目標値tの整数部の値(アドレス)に対応したサンプル値を取得してサンプルバッファSB(CT)に書き込んで記憶するとともに、目標値レジスタTR(CT)に前記目標値tを書き込んで記憶する。つぎに、制御部CTは、ステップS412にて目標値tを更新する。つまり、制御部CTは、波形メモリWMから次のピッチマーク値(現在の読み出しアドレスの時間軸方向後側に隣接するピッチマーク値)を読み出す。そして、制御部CTは、前記読み出したピッチマーク値を目標値レジスタTR(CT)に書き込んで記憶する。
つぎに、制御部CTは、ステップS413にて、フォルマント倍率γ(読み出しレート)を発音チャンネルCH(n+1),CH(n+2),CH(n+3)のうちの発音中(「フェードイン中」又は「フェードアウト中」)である全ての発音チャンネルに供給する。なお、第2モード(後述する第3モード及び第4モードに関しても同様)においては、発音チャンネルCH(n+1),CH(n+2),CH(n+3)のために設けられてはいるが実際は利用されないリソース(具体的には、ピッチに関するエンベロープ信号及び低周波信号を生成するエンベロープ発生回路及び低周波発振器)が存在する。そこで、このエンベロープ発生回路及び低周波発振器を流用し、再生音のフォルマント周波数を時間経過に従って変化させるエンベロープ信号及び低周波信号を生成する。
つぎに、制御部CTは、ステップS414にて、再生時刻カウンタC (CT)のカウント値t (CT)を更新する。すなわち、演奏操作情報及び設定情報に含まれるピッチに関するパラメータ(例えば、ノート番号NN及びピッチ設定操作子の指示値など)、並びにピッチを変化させるエンベロープ信号及び低周波信号を合成して得られたピッチ情報に基づいて再生音のピッチを決定する。そして、原音のピッチOPに対する前記決定した再生音のピッチの倍率を表わすピッチ倍率βを算出して、再生時刻カウンタC (CT)のカウント値t (CT)に加算する。ただし、最初のサンプリング期間においては、カウント値t (CT)が「0」に設定される。
つぎに、制御部CTは、ステップS415にて、カウント値t (CT)が次のピッチマーク値と現在の目標値tとの差分値dpmを超えたか否かを判定する。カウント値t (CT)が差分値dpmを超えていない場合には、後述するステップS419に処理を進める。一方、カウント値t (CT)が差分値dpmを超えた場合には、制御部CTは、ステップS416にて、カウント値t (CT)をリセット(カウント値t (CT)から差分値dpmを減算)する。つぎに、制御部CTは、ステップS417にて、状態フラグSFn+1 (CT),SFn+2 (CT),SFn+3 (CT)を参照して、休止中の発音チャンネルのうちの1つの発音チャンネルを選択する。最初のサンプリング期間においては、制御部CTは、ステップS415において、カウント値t (CT)が差分値dpmを超えたと判定する。そして、制御部CTは、ステップS417において、休止中の発音チャンネルのうちの1つの発音チャンネルを選択する。例えば、制御部CTは、休止中の発音チャンネルのうち、インデックスが最も小さい発音チャンネルを選択する。最初のサンプリング期間においては、カウント値t (CT)が「0」であって、発音チャンネルCH(n+1),CH(n+2),CH(n+3)はいずれも休止中であるので、発音チャンネルCH(n+1)を選択する。
つぎに、制御部CTは、ステップS418にて、サンプルバッファSB(CT)及び目標値レジスタTR(CT)にそれぞれ記憶されているサンプル値及び目標値t、並びにフォルマント倍率γ及び差分値dpmを前記選択した発音チャンネルに供給して発音開始させる。発音チャンネルCH(n+1),CH(n+2),CH(n+3)の動作については後述する。そして、制御部CTは、前記発音開始させた発音チャンネルに対応した状態フラグを、ステップS419にて、「フェードイン中」に設定する。
つぎに、制御部CTは、ステップS420にて、発音チャンネルCH(n+1),CH(n+2),CH(n+3)のうち発音中である発音チャンネルを選択し、前記選択した発音チャンネルにおける読み出しアドレスが、セグメントの中央のピッチマークに達したか否かを判定する。前記読み出しアドレスが前記中央のピッチマークよりも前方に位置するときは、制御部CTは、「No」と判定して、ステップS422に処理を進める。一方、前記読み出しアドレスが、前記中央のピッチマークに達していれば、制御部CTは、「Yes」と判定して、前記選択した発音チャンネルの動作状態を表わす状態フラグを、ステップS421にて、「フェードアウト中」に設定する。
つぎに、制御部CTは、ステップS422にて、発音チャンネルCH(n+1),CH(n+2),CH(n+3)のうち「フェードアウト中」である発音チャンネルを選択し、前記選択した発音チャンネルにおける読み出しアドレスが、セグメントの終端に達したか否かを判定する。読み出しアドレスが未だセグメントの中間部に位置していれば、制御部CTは、「No」と判定して、ステップS425に処理を進める。一方、読み出しアドレスがセグメントの終端に達していれば、制御部CTは、「Yes」と判定して、ステップS423にて、前記選択した発音チャンネルの動作を停止させ、ステップS424にて、前記選択した発音チャンネルの動作状態を表わす状態フラグを「休止中」に設定する。
つぎに、制御部CTは、ステップS425にて、発音チャンネルCH(n)における読み出しアドレスが末尾のセグメントに達したか否かを判定する。読み出しアドレスが末尾のセグメントに到達した場合には、制御部CTは、ステップS426にて、発音チャンネルCH(n)の動作を停止させるとともにフラグSF (CT)を「休止中」に設定する。また、制御部CTは、発音チャンネルCH(n+1),CH(n+2),CH(n+3)の読み出しアドレスを監視し、読み出しアドレスがセグメントの末尾アドレスに到達した発音チャンネルの動作を停止させるとともに状態フラグを「休止中」に設定する。全ての発音チャンネルCH(n+1),CH(n+2),CH(n+3)の読み出しアドレスがセグメントの末尾アドレスに到達したとき、制御部CTは、トラックTKの制御を終了する。一方、発音チャンネルCH(n)の読み出しアドレスが末尾のセグメントに到達していない場合には、制御部CTは、次のサンプリング期間に、ステップS406〜ステップS425からなる処理を実行する。
つぎに、発音チャンネルCH(n)の制御シーケンスについて具体的に説明する。発音チャンネルCH(n)は、制御部CTから動作開始指示されると、図14に示す制御シーケンスに従って動作する。発音チャンネルCH(n)は、ステップS500にて動作を開始する。つぎに、読み込み回路DRD(n)は、ステップS501にて、第1モードにおける初期化処理と同様の処理を実行する。ただし、第1モードとは異なり、デコード回路DEC(n)に記憶された先頭のサンプル値が制御部CTに供給される。
つぎに、読み込み回路DRD(n)は、ステップS502にて、サンプルカウンタC (n)のカウント値t (n)に再生速度倍率vを加算し、さらにその加算結果を先頭アドレスに加算して読み出しアドレスを更新する。
つぎに、読み出し回路DRD(n)及びデコード回路DEC(n)は、ステップS503にて、第1モードと同様に協働して、前記読み出しアドレスに相当するサンプル値を求める。また、上記のように、カウント値t (CT)が目標値tを超えたサンプリング期間においては、デコード回路DEC(n)は、目標値tの整数部に相当するサンプル値を制御部CTに供給する。つぎに、重畳加算回路OLA(n)の加算回路ADD(n)は、ステップS504にて、他の発音チャンネルCH(n+1),CH(n+2),CH(n+3)の加算回路ADD(n+1),ADD(n+2),ADD(n+3)から供給されたサンプル値を加算して、フィルタ回路FLT(n)に供給する。
つぎに、フィルタ回路FLT(n)及び音量制御回路VOL(n)は、ステップS505及びステップS506にて、第1モードと同様の処理をそれぞれ実行する。2番目のサンプリング期間以降の各サンプリング期間においては、発音チャンネルCH(n)は、上記のステップS502〜S506からなる処理を実行する。
つぎに、発音チャンネルCH(n+1)の制御シーケンスについて説明する。発音チャンネルCH(n+2),CH(n+3)の動作は、発音チャンネルCH(n+1)の動作と同様であるので、説明を省略する。
発音チャンネルCH(n+1)は、制御部CTから動作を開始するよう指示されると、図15に示す制御シーケンスに従って動作する。発音チャンネルCH(n+1)は、ステップS600にて動作を開始する。つぎに、読み込み回路DRD(n+1)は、第1モードにおける初期化処理と同様の処理を実行する。ただし、初期化処理において、読み込み回路DRD(n+1)及びデコード回路DEC(n+1)は、次のようにして、グレインを生成するためのセグメントの先頭のサンプル値を計算する。まず、読み込み回路DRD(n+1)は、制御部CTから供給されたピッチマーク値及び前記ピッチマーク値の整数部の値のアドレスに対応するサンプル値を読み込んで、デコード回路DEC(n+1)に供給する。つぎに、読み込み回路DRD(n+1)は、前記ピッチマークの整数部に「1」を加算した値に相当するアドレスの圧縮データを、キャッシュ回路CMを介して波形メモリWMから読み込んで、前記制御部CTから入力したピッチマーク及びサンプル値とともにデコード回路DEC(n+1)に供給する。そして、デコード回路DEC(n+1)は、前記読み込み回路DRD(n+1)から入力したデータを用いた線形補間演算により、前記ピッチマーク値に対応するサンプル値を求める。このサンプル値が、再生開始するグレインを生成するためのセグメントの先頭のサンプル値に相当する。また、初期化処理において、重畳加算回路OLA(n+1)の乗算回路MUL(n+1)は、位相カウンタC (n+1)のカウント値t (n+1)をリセットする。
つぎに、読み込み回路DRD(n+1)は、ステップS602にて、サンプルカウンタC (n+1)のカウント値t (n+1)にフォルマント倍率γ(読み出しレート)を加算し、さらにその加算結果を前記制御部CTから入力したピッチマーク値に加算することにより、読み出しアドレスを更新する。
つぎに、読み出し回路DRD(n+1)及びデコード回路DEC(n+1)は、ステップS603にて、第1モードと同様に協働して、前記算出した読み出しアドレスに相当するサンプル値を求め、乗算回路MUL(n+1)に供給する。
つぎに、乗算回路MUL(n+1)は、ステップS604にて、位相カウンタC (n+1)のカウント値t (n+1)を更新する。すなわち、状態フラグSFn+1 (CT)が「フェードイン中」に設定されているときは、位相カウンタC (n+1)のカウント値t (n+1)に、フォルマント倍率γを差分値dpmで除した値(=γ/dpm)を加算する。一方、乗算回路MUL(n+1)は、状態フラグSFn+1 (CT)が「フェードアウト中」に設定されているときは、ステップS604にて、位相カウンタC (n+1)のカウント値t (n+1)からフォルマント倍率γを減算する。つぎに、乗算回路MUL(n+1)は、ステップS605にて、カウント値t (n+1)に対応する係数WD(t (n+1))を計算する。例えば、係数WD(t (n+1))は、「0.5−0.5cos(π×t (n+1))」という演算式を用いて計算される(図4A参照)。つぎに、乗算回路MUL(n+1)は、ステップS606にて、前記計算した係数WD(t (n+1))を、前記デコード回路DEC(n+1)から入力したサンプル値に乗算して、加算回路ADD(n+1)に供給する。これにより、フォルマント倍率γに応じて伸縮したセグメントの長さに窓関数の幅を合致させることができる。つぎに、重畳加算回路OLA(n+1)の加算回路ADD(n+1)は、ステップS607にて、発音チャンネルCH(n)の重畳加算回路OLA(n)に供給する。
発音チャンネルCH(n+1)は、2番目のサンプリング期間以降のサンプリング期間においては、ステップS602〜S607からなる処理を実行する。
つぎに、再生音の長さ、ピッチ及びフォルマントが原音の長さ、ピッチ及びフォルマントと同じ場合に発音チャンネルCH(n+1),CH(n+2),CH(n+3)にて生成されるグレインGRの生成開始タイミング、及びグレインGRとそのグレインGRを生成するために用いられるセグメントSGとの関係について説明する。なお、図16及び図17中の各数値は、グレインの元であるセグメントのインデックスiを表す。この場合、図16に示すように、まず、発音チャンネルCH(n+1)がグレインGRを再生し始める。そして、発音チャンネルCH(n+1)の再生位置がピッチマークに達すると、発音チャンネルCH(n+2)がグレインGRを再生し始める。発音チャンネルCH(n+1)の再生位置がピッチマークに達すると、発音チャンネルCH(n+2)がグレインGRを再生し始める。このとき、発音チャンネルCH(n)は、グレインGRの再生開始から2つ目のピッチマークに到達する。したがって、発音チャンネルCH(n+1)は、グレインGRの再生を終了して、動作停止する。発音チャンネルCH(n+2)の再生位置がピッチマークに到達すると、発音チャネルCH(n+1)がグレインGRを再生し始める。以降、上記の動作と同様に、発音チャンネルCH(n+1),CH(n+2),CH(n+3)が循環的に動作して、グレインGRi=4,5,6・・・が順に再生される。
つぎに、例えば、ストレッチ率αが「0.5」に設定されている場合の音源回路16の動作について説明する。この場合、同図に示すように、発音チャンネルCH(n+1),CH(n+2),CH(n+3)が循環的に動作して、グレインGRi=0,2,4,8,・・・が順に再生される。つまり、グレインGRが1つおきに再生される。また、例えば、ストレッチ率αが「2」に設定されている場合の音源回路16の動作について説明する。この場合、同図に示すように、発音チャンネルCH(n+1),CH(n+2),CH(n+3)が循環的に動作して、グレインGRi=0,0,1,1,2,2・・・の順に再生される。つまり、同一のセグメントSGを用いて形成されたグレインGRが2回ずつ連続して再生される。
また、例えば、ストレッチ率αが「0.7」に設定されている場合の音源回路16の動作について説明する。この場合、同図に示すように、発音チャンネルCH(n+1),CH(n+2),CH(n+3)が循環的に動作して、グレインGRi=0,1,2,4,5,7・・・の順に再生される。また、例えば、ストレッチ率αが「1.5」に設定されている場合の音源回路16の動作について説明する。この場合、同図に示すように、発音チャンネルCH(n+1),CH(n+2),CH(n+3)が循環的に動作して、グレインGRi=0,0,1,2,2,3・・・の順に再生される。
つぎに、再生音の長さ及びフォルマントを原音と同じ状態に維持したまま、再生音のピッチを原音のピッチとは異なるピッチに設定した場合に発音チャンネルCH(n+1),CH(n+2),CH(n+3)にて再生されるグレインGRの系列及びそれらの再生開始タイミングについて説明する。この場合も、図17に示すように、発音チャンネルCH(n+1),CH(n+2),CH(n+3)が循環的に動作してグレインを再生する。そして、発音チャンネルCH(n+1),CH(n+2),CH(n+3)がグレインを再生し始めるタイミングの間隔(サンプリング期間数)が、ピッチマーク間のサンプル数(すなわち、差分値dpm)をピッチ倍率βで除した値に一致するように制御される。
例えば、同図に示す、ピッチ倍率βが「1.2」に設定されている場合においては、発音チャンネルCH(n+1)がグレインGRを再生開始してから500個(=600/1.2)のサンプリング期間を経過すると、発音チャンネルCH(n+2)が、グレインGRを再生し始める。発音チャンネルCH(n+2)がグレインGRを再生開始してから500個のサンプリング期間を経過すると、発音チャンネルCH(n+2)がグレインGRを再生開始し始める。
また、例えば、同図に示す、ピッチ倍率βが「0.6」に設定されている場合においては、発音チャンネルCH(n+1)がグレインGRを再生開始してから1000個(=600/0.6)のサンプリング期間を経過すると、発音チャンネルCH(n+2)がグレインGRを再生し始める。発音チャンネルCH(n+2)がグレインGRを再生開始してから1000個のサンプリング期間を経過すると、発音チャンネルCH(n+2)がグレインGRを再生し始める。
また、図16及び図17に示す例において、フォルマント倍率γを変更すると、各グレインGRが時間軸方向に伸縮される。各グレインGRを時間軸方向に縮めると、再生音のフォルマント周波数が高くなる。一方、各グレインGRを時間軸方向に伸長すると、再生音のフォルマント周波数が低くなる。
(第3モード)
つぎに、動作モードが第3モードである場合の電子楽器DMの動作について説明する。第3モードでは、電子楽器DMとは別の分析装置により、原音を構成する各音のアタック位置(各音の発音開始タイミング)が予め検出され、波形の先頭から前記各アタック位置までのサンプル数(以下、アタックマーク値と呼ぶ)が予め計算された波形データを用いる(図18参照)。アタックマーク値は、波形メモリWMに記憶されている。上記のように、1つの圧縮データは1つのサンプル値に対応しているので、アタックマーク値は原音の波形データにおける先頭アドレスからのオフセットアドレスに相当する。
CPU12aの動作は第1モードと同じであるので、その説明を省略し、音源回路16の発音動作について説明する。まず、第3モードにおける音源回路16の動作の概略を説明する。第3モードにおいても、第2モードと同様に、音声入力装置18及びリングバッファRBは利用されない(図11参照)。また、トラックTK(一組の発音チャンネルCH(n),CH(n+1),CH(n+2),CH(n+3))を用いて1つの再生音を生成する。すなわち、発音チャンネルCH(n+1),CH(n+2),CH(n+3)がグレインをそれぞれ生成する。第2モードと同様に、上記3つの発音チャンネルCH(n+1),CH(n+2),CH(n+3)は循環的に動作する。詳しくは後述するように、各グレインはクロスフェードするように再生されるので、そのクロスフェード期間中においては、2つの発音チャンネルが同時に動作する。また、発音チャンネルCH(n)は発音チャンネルCH(n+1),CH(n+2),CH(n+3)にて生成されたグレイン(実際にはいずれか2つの発音チャンネルにて生成されたグレイン)を加算して1つの再生音を生成してミキサー部MXへ供給する。したがって、第3モードにおいても、発音チャンネルCH(n+1),CH(n+2),CH(n+3)のフィルタ回路FLT(n+1),FLT(n+2),FLT(n+3)及び音量制御回路VOL(n+1),VOL(n+2),VOL(n+3)は利用されない。また、全ての発音チャンネルを第3モードとして動作させると、64個の音を同時に再生可能である。
各グレインは、次のようにして形成される。まず、第3モードでは、隣接する2つのアタック位置の間の部分が複数のセグメントSGi=0,1,2,・・・に分割される。詳しくは後述するように、各セグメントの長さがCPU12aによって指定された基準長又は前記基準長に基づいて計算された長さになるように、原音の波形データから各セグメントが切り出される。そして、各グレインの長さは、ストレッチ率α及びピッチ倍率βによって決定される。例えば、図19に示すように、グレインは、1つのセグメントの先頭から中間部までに相当する場合もある。例えば、同図に示すように、ピッチ倍率βが「1」であって、ストレッチ率αが「1」より小さい場合には、各セグメントの途中でフェードアウトが開始されるので、各セグメントの末尾部分が切り詰められる。また、グレインは、同図に示すように、隣接する複数のセグメントを接続して形成された波形データの先頭から中間部までに相当する場合もある。例えば、同図に示すように、ピッチ倍率βが「1」であって、ストレッチ率αが「1」より大きい場合には、発音チャンネルCH(n)は、セグメントSGの再生を開始し、セグメント境界を超えてセグメントSGi+1の途中まで再生するとフェードアウトを開始する。そして、発音チャンネルCH(n+1)は、発音チャンネルCH(n)がフェードアウトを開始したタイミングにてセグメントSGi+1の再生を開始する。このように、各セグメントの先頭部分が繰り返される。なお、図19中の各数値は、セグメントのインデックスiを表す。
また、第2モードと同様に、発音チャンネルCH(n)は、サンプリング期間ごとに、ストレッチ率αに応じて読み出しアドレスを進め、その読み出しアドレスに相当するサンプル値を計算するために必要なサンプル値を復元する。そして、発音チャンネルCH(n)の読み出しアドレスがセグメントの境界を超えた(つまり、カウント値t (n)が目標値tを超えた)サンプリング期間において、前記目標値tを目標値レジスタTR(CT)に書き込んで記憶するとともに、前記セグメントの境界(前側のセグメントの末尾アドレス)に対応するサンプル値を制御部CTのサンプルバッファSB(CT)に記憶する。制御部CTは、発音チャンネルCH(n+1),CH(n+2),CH(n+3)のうちの休止中の発音チャンネルを選択し、サンプルバッファSB(CT)及び目標値レジスタTR(CT)に記憶されている両データを前記選択した発音チャンネルに供給して、グレインを再生開始させる。
つぎに、制御部CTの制御シーケンスについて具体的に説明する。制御部CTは、CPU12aから発音開始情報(例えば、ノートオン情報)を含む演奏操作情報を入力すると、図20A,20B,20Bに示す制御シーケンスに従って動作する。制御部CTは、ステップS700にて動作を開始し、ステップS701にて、4つの発音チャンネルを確保する。以下、前記確保された発音チャンネルを発音チャンネルCH(n),CH(n+1),CH(n+2),CH(n+3)と表記する。次に、制御部CTは、ステップS702にて、初期化処理を実行する。具体的には、制御部CTは、読み出しアドレスがセグメント境界を超えたか否かを判定するために用いる目標値tを「0」に設定する。つまり、目標値レジスタTR(CT)に「0」を書き込む。また、制御部CTは、発音チャンネルCH(n)を介して、先頭のサンプル値を読み込んで、サンプルバッファSB(CT)に記憶する。また、制御部CTは、サンプルカウンタC (CT)のカウント値t (CT)を「0」に設定する。また、発音チャンネルCH(n+1),CH(n+2),CH(n+3)の動作状態を表わす各状態フラグSFn+1 (CT),SFn+2 (CT),SFn+3 (CT)を「休止中」に設定する。
つぎに、制御部CTは、ステップS703にて、エンベロープ発生回路及び低周波発振器を動作させ、前記入力した演奏操作情報及び前記演奏操作情報入力する前に入力した設定情報(以下、単に演奏操作情報及び設定情報という)に含まれる各種エンベロープ信号を規定するパラメータ及び各種低周波信号を規定するパラメータに従ったエンベロープ信号及び低周波信号を発生開始させる。
つぎに、制御部CTは、ステップS704にて、先頭アドレスを発音チャンネルCH(n)に供給して発音チャネルCH(n)の動作を開始させる。ステップS705にて、状態フラグSF (CT)を「発音中」に設定する。
つぎに、制御部CTは、ステップS706にて、第1モードと同様に、フィルタパラメータを生成してフィルタ回路FLT(n)に供給する。つぎに、制御部CTは、ステップS707にて、第1モードと同様に、音量パラメータを計算し、音量制御回路VOL(n)に供給する。なお、第2モードにおいても、設定情報は、発音中であっても変更され得る。また、制御部CTは、音長設定操作子及びピッチ設定操作子の各指示値に応じて、エンベロープ信号及び低周波信号を変更可能である。
つぎに、制御部CTは、ステップS708にて、音長設定操作子の指示値に基づいて、ストレッチ率αを計算し、その逆数である再生速度倍率v(=1/α)を発音チャンネルCH(n)に供給する。つぎに、制御部CTは、ステップS709にて、カウント値t (CT)を更新する。すなわち、サンプルカウンタC (CT)のカウント値t (CT)に再生速度倍率vを加算する。ただし、最初のサンプリング期間における再生速度倍率vの値は「0」に設定される。なお、各サンプリング期間における、サンプルカウンタC (n)のカウント値t (n)とサンプルカウンタC (CT)のカウント値t (CT)は同一である。また、最初のサンプリング期間においては、カウント値t (CT)及びカウント値t (n)は「0」である。
つぎに、制御部CTは、ステップS710にて、ピッチ倍率β(読み出しレート)を発音チャンネルCH(n+1),CH(n+2),CH(n+3)のうちの発音中(「フェードイン中」又は「フェードアウト中」)である全ての発音チャンネルに供給する。
次に制御部CTは、ステップS711にて、クロスフェード長xfl(言い換えれば、クロスフェード特性(つまり、遷移の速さ))を更新する(図4B参照)。クロスフェード長xflは、CPU12aから供給された基準長を、原音の特徴、再生速度倍率v、ピッチ倍率βなどに応じて調整することにより決定される。
つぎに、制御部CTは、ステップS712にて、サンプルカウンタC (CT)のカウント値t (CT)が目標値tを超えたか否か(つまり、発音チャンネルCH(n)の読み出しアドレスがセグメントの境界を超えたか否か)を判定する。カウント値t (CT)が目標値tを超えていない場合には、制御部CTは、「No」と判定して、後述のステップS719に処理を進める。一方、カウント値t (CT)が目標値tを超えた場合には、制御部CTは、「Yes」と判定して、ステップS713にて、現在グレインを再生している発音チャンネル(つまり、状態フラグが「フェードイン中」である発音チャンネル)を選択し、前記選択した発音チャンネルをフェードアウトさせる。そして、ステップS714にて、前記選択した発音チャンネルに対応する状態フラグを「フェードアウト中」に設定する。
つぎに、制御部CTは、ステップS715にて、発音チャンネルCH(n)のデコード回路DEC(n)から、目標値tの整数部の値に先頭アドレスを加算したアドレスに対応したサンプル値(セグメント境界の直前のサンプル値)、及び目標値t(セグメント境界のアドレス)を取得する。つぎに、制御部CTは、ステップS716にて、状態フラグSFn+1 (CT),SFn+2 (CT),SFn+3 (CT)を参照して、休止している発音チャンネル(つまり、状態フラグが「休止中」である発音チャンネル)を選択し、前記選択した発音チャンネルに前記決定したクロスフェード長xfl、並びに前記取得したサンプル値及び目標値tを供給して、グレインを再生開始させる。そして、制御部CTは、前記ステップS716において選択した発音チャンネルに対応する状態フラグを、ステップS717にて、「フェードイン中」に設定する。
つぎに、制御部CTは、ステップS718にて目標値tを更新する。具体的には、制御部CTは、CPU12aから基準長を取得して、目標値tに加算する。これにより、次のセグメントの長さが決定される。ただし、現在の読み出しアドレスから次のアタック位置(現在の読み出しアドレスの時間軸方向後側に隣接するアタック位置)までのオフセットアドレスが所定の閾値(例えば、前記オフセットアドレスが前記の16倍)よりも小さいとき、次のように目標値tを更新してもよい。具体的には、現在の目標値tから次のアタックマークまでの区間を分割して形成される各セグメントの長さが基準長に最も近い整数値になるように次の目標値tを設定する。言い換えれば、隣接するセグメントの長さの差が大きく変化することを抑制できる。また、クロスフェードがアタック位置に重ならないようにするとよい(特開2002−006899参照)。また、アタック位置が切り詰められたり、アタック位置が繰り返されたりすることのないように、セグメントの境界を設定しても良い。例えば、図19に示すように、アタックマークとセグメントの境界とを敢えてずらしても良い。
つぎに、制御部CTは、ステップS719にて、位相カウンタC (n+1),C (n+2),C (n+3)のカウント値を参照し、フェードアウトが完了した発音チャンネルが存在するか否かを判定する。フェードアウトが完了した発音チャンネルが無ければ、制御部CTは、「No」と判定して、ステップS721に処理を進める。一方、フェードアウトが完了した発音チャンネルがあれば、制御部CTは、「Yes」と判定し、ステップS720にて、前記フェードアウトした完了した発音チャンネルの動作を停止させ、ステップS721にて、前記発音チャンネルに対応する状態フラグを「休止中」に設定する。
つぎに、制御部CTは、ステップS722にて、発音チャンネルCH(n)における読み出しアドレスが末尾のセグメントに達したか否かを判定する。読み出しアドレスが末尾のセグメントに到達した場合には、制御部CTは、ステップS723にて、発音チャンネルCH(n)の動作を停止させるとともにフラグSF (CT)を「休止中」に設定する。また、制御部CTは、発音チャンネルCH(n+1),CH(n+2),CH(n+3)の読み出しアドレスを監視し、読み出しアドレスがセグメントの末尾アドレスに到達した発音チャンネルの動作を停止させるとともに状態フラグを「休止中」に設定する。全ての発音チャンネルCH(n+1),CH(n+2),CH(n+3)の読み出しアドレスがセグメントの末尾アドレスに到達したとき、制御部CTは、トラックTKの制御を終了する。一方、発音チャンネルCH(n)の読み出しアドレスが末尾のセグメントに到達していない場合には、制御部CTは、次のサンプリング期間に、ステップS705〜ステップS722からなる処理を実行する。
発音チャンネルCH(n)の制御シーケンスは、第2モードと同様である。ただし、読み出しアドレスがセグメント境界を超えたとき、発音チャンネルCH(n)は、セグメント境界の直前のサンプル値、及びセグメント境界のアドレスを制御部CTに供給する。
つぎに、発音チャンネルCH(n+1)の制御シーケンスについて説明する。発音チャンネルCH(n+2),CH(n+3)の動作は、発音チャンネルCH(n+1)の動作と同様であるので、説明を省略する。
発音チャンネルCH(n+1)は、制御部CTから動作を開始するよう指示されると、図21に示す制御シーケンスに従って動作する。発音チャンネルCH(n)は、ステップS800にて動作を開始する。つぎに、読み込み回路DRD(n+1)は、ステップS801にて、第1モードにおける初期化処理と同様の処理を実行する。ただし、初期化処理において、読み込み回路DRD(n+1)及びデコード回路DEC(n+1)は、次のようにして、グレインを生成するためのセグメントの先頭(境界)のサンプル値を計算する。まず、読み込み回路DRD(n+1)は、制御部CTから供給されたセグメント境界のアドレス及び前記セグメント境界の直前のサンプル値を読み込んで、デコード回路DEC(n)に供給する。つぎに、読み込み回路DRD(n)は、前記セグメント境界のアドレスの整数部に「1」を加算した値に相当するアドレスの圧縮データを、キャッシュ回路CMを介して波形メモリWMから読み込んで、デコード回路DEC(n)に供給する。そして、デコード回路DEC(n+1)は、前記読み込み回路DRD(n+1)から入力したデータを用いた線形補間演算により、前記セグメント境界に対応するサンプル値を求める。このサンプル値が、再生開始するグレインを生成するためのセグメントの先頭のサンプル値に相当する。また、初期化処理において、重畳加算回路OLA(n+1)の乗算回路MUL(n+1)は、位相カウンタC (n+1)のカウント値t (n+1)をリセットする。
つぎに、読み込み回路DRD(n+1)は、ステップS802にて、サンプルカウンタC (n+1)のカウント値t (n+1)にピッチ倍率β(読み出しレート)を加算し、さらにその加算結果を前記制御部CTから入力したセグメント境界のアドレスに加算して読み出しアドレスを算出する。
つぎに、読み出し回路DRD(n+1)及びデコード回路DEC(n+1)は、ステップS803にて、第1モードと同様に協働して、前記算出した読み出しアドレスに相当するサンプル値を線形補間演算により求める。デコード回路DEC(n+1)は、前記復元したサンプル値を重畳加算回路OLA(n+1)の乗算回路に供給する。
つぎに、乗算回路MUL(n+1)は、ステップS804にて、位相カウンタC (n+1)のカウント値t (n+1)を更新する。すなわち、乗算回路MUL(n+1)は、状態フラグSFn+1 (CT)が「フェードイン中」に設定されているときは、位相カウンタC (n+1)のカウント値t (n+1)にクロスフェード長xflの逆数を加算する。ただし、カウント値t (n+1)の上限は「1」である。一方、乗算回路MUL(n+1)は、状態フラグSFn+1 (CT)が「フェードアウト中」に設定されているときは、カウント値t (n+1)からクロスフェード長xflの逆数を減算する。つぎに、乗算回路MUL(n+1)は、ステップS805にて、カウント値t (n+1)を、前記デコード回路DEC(n+1)から入力したサンプル値に乗算して、加算回路ADD(n+1)に供給する。つぎに、重畳加算回路OLA(n+1)の加算回路ADD(n+1)は、ステップS806にて、発音チャンネルCH(n)の重畳加算回路OLA(n)に供給する。
発音チャンネルCH(n+1)は、2番目のサンプリング期間以降のサンプリング期間においては、ステップS802〜S805からなる処理を実行する。なお、カウント値t (n+1) (n+1) (n+1)の上限は「1」であるので、図4Bに示すように窓関数の形状は台形を呈する。
(第4モード)
つぎに、動作モードが第4モードである場合の電子楽器DMの動作について説明する。第4モードでは、図22に示すように、波形メモリWM及びキャッシュ回路CMは利用されない。信号処理部DPは、音声入力装置18から逐次供給される波形データをリングバッファRBに供給する。また、信号処理部DPは、音声入力装置18から逐次供給される前記波形データが表す音声のピッチをリアルタイムに検出してCPU12aに供給する。CPU12aは信号処理部DPから供給されたピッチデータに基づいて、第2モードと同様のピッチマーク値を計算する。すなわち、ピッチマーク値は、前記波形データを構成する各サンプル値が記憶されているリングバッファRBの記憶領域に対応づけられたアドレスであって、前記音声を構成する基本音の節に相当するアドレスを表す。ピッチマーク値は、制御部CTに供給される。トラックTKは、リングバッファRBに記憶された波形データ及び制御部CTから供給されたピッチマーク値を用いて、第2モードと同様に、1つの音を生成する。具体的には、トラックTKは、音声入力装置18に入力された音声のピッチ及び/又はフォルマントを変更した音(ハーモニー)を生成する。なお、この場合、第2モードとは異なり、リングバッファRBに記憶されているデータはサンプル値自体であって、圧縮データではない。そのため、第2モードとは異なり、圧縮データを用いてサンプル値を復元する必要がない。したがって、トラックTKを構成する発音チャンネルCH(n)を発音チャンネルCH(n+1),CH(n+2),CH(n+3)と同様に、グレインを再生する発音チャンネルとして用いてもよい。この場合、制御部CTのサンプルカウンタC (CT)のカウント値t (CT)がピッチマーク値を超えたとき、制御部CTがそのピッチマーク値を記憶すればよい。そして、発音チャンネルCH(n),CH(n+1),CH(n+2),CH(n+3)のうちの選択した発音チャンネルがグレインの再生を開始する際、前記記憶しておいたピッチマーク値を前記選択した発音チャンネルに供給すればよい。発音チャンネルは、グレインの再生を開始する際、制御部から供給されたピッチマーク値の整数部に相当するアドレスに記憶されているサンプル値及び前記整数部の値に「1」を加算した値に相当するアドレスに記憶されているサンプル値を読み込む。そして、発音チャンネルは、前記読み込んだ両サンプル値及び前記ピッチマーク値の小数部の値を用いた線形補間演算により、前記ピッチマーク値に対応するサンプル値を求めればよい。なお、第4モードにおいては、リングバッファRBに記憶された短い時間に相当する波形データを用いてタイムストレッチを実行することも可能であるが、実質的に有効な用途が無い。したがって、第4モードにおいては、ストレッチ率αは「1」に設定される。
上記のように構成した電子楽器DMの第2乃至第4モードにおいては、発音チャンネルCH(n+1),CH(n+2),CH(n+3)が原音の一部の区間を順次再生する。その際、ストレッチ率α、ピッチ倍率β及びフォルマント倍率γに応じて、音源回路16内に設けられた各種カウンタのカウント値が増減する。そして、前記各種カウンタのカウント値に応じて、発音チャンネルCH(n+1),CH(n+2),CH(n+3)によって再生される前記区間(セグメント)、前記区間の再生開始タイミング、前記区間を構成するサンプル値の読み出しレートなどが決定される。CPU12aは、ストレッチ率α、ピッチ倍率β、及びフォルマント倍率γに関する設定値(すなわち、ノート番号NN、及び音長設定操作子、ピッチ設定操作子、フォルマント設定操作子の指示値など)を音源回路16に供給するだけでよいので、CPU12aの負荷が小さい。また、回路構成としては、従来の音源回路の発音チャンネルに重畳加算回路OLA(n)を追加しただけであって、タイムストレッチ機能、ピッチシフト機能及びフォルマントシフト機能を実現するために大規模な回路を追加する必要が無い。すなわち、本実施形態によれば、タイムストレッチ機能、ピッチシフト機能及びフォルマントシフト機能を有する音源回路16であって、構成が簡単な音源回路16を提供できる。また、サンプリング期間ごとに1つのサンプル値が出力されるので、上記従来の音響信号生成装置のような遅れの問題が生じない。また、異なる動作モードを同時に利用できる。したがって、256個の発音チャンネルを効率よく利用できる。また、重畳加算回路OLA(n)がフィルタ回路FLT(n)及び音量制御回路VOL(n)の前段に設けられている。つまり、トラックTKを構成する発音チャンネルCH(n)の加算回路ADD(n)によって、他の発音チャンネルCH(n+1),CH(n+2),CH(n+3)にて生成されたサンプル値が加算され、その加算結果がフィルタ回路FLT(n)及び音量制御回路VOL(n)に供給される。したがって、フィルタ回路FLT(n)及び音量制御回路VOL(n)を有効に利用できる。
また、発音を開始する際、原音の波形データに割り当てられた動作モードに応じて1つ又は複数の発音チャンネルが確保される。すなわち、原音の波形データに割り当てられた動作モードが第1モードである場合には、1つの発音チャンネルが確保され、原音の波形データに割り当てられた動作モードが第2及び第3モードである場合には、4つの発音チャンネルが確保される。また、第4モードを利用する場合にも、4つの発音チャンネルが確保される。上記のように、各発音チャンネルに異なる動作モードを割り当てることができる。したがって、効率良く発音チャンネルを利用できる。
また、ピッチマーク及びアタックマークは、予め計算されて波形メモリWMに記憶されている。したがって、CPU12a、制御部CT、信号処理部DPなどが圧縮データを読み出しつつ原音のピッチを解析する場合に比べて、CPU12a、制御部CT、信号処理部DPなどの負荷を軽減できる。
また、上記のように、第2モード乃至第4モードにおいて、実際には利用されないリソース(エンベロープ発生回路及び低周波発振器)を流用してフォルマント周波数を時間経過に従って変化させるようにした。よって、フォルマント周波数を変化させるためのエンベロープ発生回路及び低周波発振器を別途設ける必要が無い。
さらに、本発明の実施にあたっては、上記実施形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。
例えば、上記実施形態では、再生音のピッチは制御部CTによって決定されているが、これに代えて、CPU12aによって決定されてもよい。また、第2モード乃至第4モードにおいて、カウント値t (CT)を先頭アドレスに加算して得られたアドレスが末尾アドレスに一致するか否かを判定して、再生を終了するか否かを決定してもよい。
例えば、第1モード乃至第3モードにおいて、原音の一部の区間がループ再生されるように構成しても良い。この場合、ループスタート位置(アドレス)とループエンド位置(アドレス)を設定し、発音チャンネルCH(n)のデコード回路DEC(n)が、ループスタート位置に相当するサンプル値を最初に計算したとき、そのサンプル値を制御部CTが記憶し、ループエンド位置からループスタート位置に戻って再生を開始する際、前記記憶しておいたサンプル値を用いればよい。また、この場合、音量に関するエンベロープのレベルを用いて、再生位置が波形データの末尾に到達したか否かを判定してもよい。
また、上記実施形態の第2モード及び第3モードにおいては、3つの発音チャンネルCH(n+1),CH(n+2),CH(n+3)がグレインを再生しているが、圧縮データではなくサンプル値そのものが波形メモリWMに記憶されている場合には、第4モードと同様に、発音チャンネルCH(n)もグレインを再生する発音チャンネルとして利用できる。
また、上記実施形態の第2モード乃至第4モードにおいては、1つのトラックは4つの発音チャンネルから構成されている。しかし、1つのトラックが少なくとも2つの発音チャンネルから構成されていればよい。例えば、1つのトラックが8つの発音チャンネルから構成されていてもよい。なお、1つのトラックを構成する発音チャンネル数が多いほど、ピッチ倍率の上限値を大きくしたり、フォルマント倍率の下限値を小さくしたりすることができる。
また、上記実施形態においては、圧縮データは、1つ前のサンプリング期間におけるサンプル値と今回のサンプリング期間におけるサンプル値との差を表わしている。しかし、サンプル値の圧縮方法は上記実施形態に限られない。例えば、線形予測法を用いた圧縮方法を採用しても良い。
また、第2乃至第4モードにおけるセグメントに適用される窓関数の形状は上記実施形態に限られない。例えば、カウント値t (n)に応じた係数を記憶したテーブルを用いることにより、窓関数の形状を任意に設定しても良い。
また、例えば、CPU12aがノート番号NNに応じたピッチと原音のピッチとの比率を計算して制御部CTに供給し、制御部CTは、前記供給された比率にピッチを変化させるエンベロープ信号、低周波信号などを加味して、再生音のピッチ倍率を決定しても良い。
また、ピッチマーク及びアタックマークをROM12bに記憶しておき、CPU12aがピッチマーク及びアタックマークをROM12bから読み出して制御部CTに供給してもよい。また、ピッチマーク及びアタックマークを予め計算して記憶しておくのではなく、CPU12a、制御部CT、信号処理部DPなどが波形データを読み込みつつピッチを解析しても良い。
また、第2乃至第4モードにおいて、利用されないエンベロープ発生回路及び低周波発振器を流用する例を示したが、その他の利用されないリソースを流用しても良い。例えば、第2モード乃至第4モードにおいては、発音チャンネルCH(n+1),CH(n+2),CH(n+3)のフィルタ回路FLT(n+1),FLT(n+2),FLT(n+3)は利用されない。そこで、これらのフィルタ回路FLT(n+1),FLT(n+2),FLT(n+3)を発音チャンネルCH(n)に連結して多段回路を形成して再生音の周波数特性を制御しても良い。
また、上記実施形態の第2モードにおいて、制御部CTはピッチに関するパラメータ、制御信号などに基づいてピッチ倍率βを算出するようにしているが、ここで、様々な演算をしてピッチ倍率βを算出することにより、面白みのある音響的効果を得るようにしてもよい。例えば、1つのトラックTKにおいて生成される楽音のピッチを、CPU12aから入力されたピッチ(又は周期)に矯正するようにしてもよい。すなわち、トラックTKにおいて、CPU12aから入力されたピッチ(又は周期)と差分値dpmとの比を用いて、時間経過とともに変化する原音のピッチを相殺するように、ピッチ倍率βを刻々と変化させてもよい。また、CPU12aから入力されたピッチ(又は周期)に基づいて差分値dpmを計算し、前記計算した差分値dpmを上記のステップS415における比較処理の際に用いてもよい。これにより、例えば図23に示すように、音色や音量の時間的変化はトラックTKに割り当てられた原音のままでありながら、ピッチはCPU12aから入力されたピッチに矯正されて平坦にされた楽音を得ることができる。例えば、ユーザが押鍵操作した鍵に応じて、原音のピッチを鍵に対応するピッチに矯正して再生することで、面白みのある音響的効果が得られる。
また、1つのトラックTK(m)において生成される楽音のピッチを、別のトラックTK(m+1)のピッチに矯正するようにしてもよい。すなわち、トラックTK(m+1)において順次得られる差分値dpmに応じて、トラックTK(m)におけるピッチ倍率βを変化させてもよい。また、トラックTK(m+1)の差分値dpmをステップS415における比較処理の際に用いてもよい。これにより、音色や音量の時間的変化はトラックTK(m)に割り当てられた原音のままでありながら、ピッチはトラックTK(m+1)に割り当てられた原音のピッチに追従した楽音を生成したり、トラックTK(m+1)に割り当てられた原音ピッチに対して所定の度数関係にあるハーモニー音を生成したりすることができ、面白みのある音響的効果が得られる。
また、例えば、楽曲の各パートの演奏であって、前記楽曲の楽譜における同一区間(例えば、各パートの3小節目の先頭から4小節目の終端まで)の演奏(フレーズ)をそれぞれサンプリングして波形データを生成しておき、各波形データを一組のトラックTK(m),TK(m+1),・・・に割り当ててもよい。以下、上記の一組のトラックTK(m),TK(m+1),・・・をグループGP(k)と呼ぶ(図24参照)。この場合、前記各トラックTK(m),TK(m+1),・・・にて再生されるフレーズを同期させたい(拍点を一致させたい)という要求が想定される。しかし、前記各波形データがいずれも前記楽曲の楽譜における同一位置の演奏を表わすとしても、それぞれの演奏テンポが異なることがある。つまり、波形データの長さが互いに異なることがある。この場合、前記再生されるフレーズを同期させるために、タイムストレッチ機能を用いて各トラックの演奏テンポ(フレーズの長さ)を揃えればよい。しかし、この場合、次のような問題がある。
まず、各トラックTK(m),TK(m+1),・・・が、それぞれに割り当てられたフレーズの再生を開始する際、それぞれのフレーズの長さが同一になるように、各トラックTK(m),TK(m+1),・・・のストレッチ率αを計算する。通常、ストレッチ率αは小数部を含むが、設定可能な小数部の桁数は実際には有限である。したがって、フレーズの長さを完全に一致させることは困難である。よって、再生開始時には各フレーズが同期していたとしても、次第に各フレーズの拍点のずれが大きくなる。
また、各フレーズが同期した状態を保ったまま、そのテンポを変更したいという要求が想定される。例えば、MIDIシーケンサのクロックに同期させてテンポを変化させたり、音長設定操作子をリアルタイムに操作して、その指示値にテンポを追従させたりすることが想定される。この場合、CPU12aが前記クロック、前記指示値などを検出して、各トラックTK(m),TK(m+1),・・・のストレッチ率αを計算し、それぞれの値を制御部CTのレジスタに書き込む必要がある。しかし、各トラックTK(m),TK(m+1),・・・のストレッチ率αのレジスタへの書き込み処理を同時に実行することはできない。すなわち、それぞれのストレッチ率αの書き込みタイミングにずれが生じる。この書き込みタイミングのずれに起因して、各フレーズの拍点がずれる。
また、各トラックTK(m),TK(m+1),・・・に割り当てられたフレーズが短い場合、各フレーズを同期させた状態のまま、フレーズの一部の区間又は全区間をループ再生したいという要求が想定される。しかし、上記のように、ピッチマーク又はアタックマークを用いて、タイムストレッチ機能、ピッチシフト機能及びフォルマントシフト機能を実現するため、ループスタート位置とループエンド位置を任意に定めることができない。すなわち、ループスタート位置とループエンド位置は、ピッチマーク又はアタックマークが付された位置に設定しなければならない。そのため、各トラックTK(m),TK(m+1),・・・の各ループスタート位置を完全に一致させるとともに、各ループエンド位置を完全に一致させることは困難である。また、CPU12aがそのずれを検出して補正することも困難である。
そこで、次のように構成するとよい。まず、グループGP(k)のテンポを管理するためにマスターサンプルカウンタCms (CT)を用いる。このマスターサンプルカウンタCms (CT)は、制御部CT内に設けられる。マスターサンプルカウンタCms (CT)のカウント値tms (CT)は、サンプリング期間ごとに更新される。すなわち、カウント値tms (CT)に、マスターテンポ倍率θが加算される。マスターテンポ倍率θは、所定の基準テンポ(例えば、60bpm)に対する、同期再生するフレーズのテンポ(以下、再生テンポと呼ぶ)の比率である。例えば、再生テンポが120bpmのときは、マスターテンポ倍率θは「2」である。
各トラックTK(m),TK(m+1),・・・の動作は、第2モードとほぼ同様であるが、第2モードにおけるサンプルカウンタC (CT)がトラックごとに設けられる。以下、トラックTK(m),TK(m+1),・・・のサンプルカウンタをサンプルカウンタC (CT),Cm+1 (CT),・・・と表記する。トラックTK(m),TK(m+1),・・・には、テンポが既知であるフレーズがそれぞれ割り当てられるとともに、各フレーズのテンポに対するマスターの基準テンポの比率を表わすスレーブテンポ倍率φ,φm+1,・・・が設定される。スレーブテンポ倍率φ,φm+1,・・・は、サンプリング期間ごとにサンプルカウンタC (CT),Cm+1 (CT),・・・のカウント値t (CT),tm+1 (CT),・・・にそれぞれ加算される。
例えば、基準テンポが60bpmであるのに対し、トラックTK(m)にはテンポが120bpmのフレーズが割り当てられ、トラックTK(m+1)にはテンポが30bpmのフレーズが割り当てられたとする。この場合、トラックTK(m)にはスレーブテンポ倍率φとして「0.5」が設定され、トラックTK(m+1)にはスレーブテンポ倍率φm+1として「2.0」が設定される。
ここで、マスターサンプルカウンタが基準テンポと同じ60bpmのテンポでカウントを進めるとすると、マスターテンポ倍率θは「1.0」となる。つまり、マスターサンプルカウンタCms (CT)のカウント値tms (CT)は、サンプリング期間ごとにマスターテンポ倍率θの「1.0」ずつ加算されて更新される。このとき、トラックTK(m)のスレーブテンポ倍率φは「0.5」に設定されているので、トラックTK(m)サンプルカウンタC (CT)は、サンプリング期間ごとに、マスターテンポ倍率θの「1.0」とスレーブテンポ倍率φの「0.5」とを乗算した、「0.5」ずつ加算されて更新される。また、トラックTK(m+1)のスレーブテンポ倍率φm+1は「2.0」に設定されているので、トラックTK(m+1)サンプルカウンタCm+1 (CT)は、サンプリング期間ごとに、マスターテンポ倍率θの「1.0」とスレーブテンポ倍率φm+1の「2.0」とを乗算した、「2.0」ずつ加算されて更新される。
また、マスターサンプルカウンタが基準テンポの0.5倍の30bpmのテンポでカウントを進めるとすると、マスターテンポ倍率θは「0.5」となる。つまり、マスターサンプルカウンタCms (CT)のカウント値tms (CT)は、サンプリング期間ごとにマスターテンポ倍率θの「0.5」ずつ加算されて更新される。このとき、トラックTK(m)のスレーブテンポ倍率φは「0.5」に設定されているので、トラックTK(m)サンプルカウンタC (CT)は、サンプリング期間ごとに、マスターテンポ倍率θの「0.5」とスレーブテンポ倍率φの「0.5」とを乗算した、「0.25」ずつ加算されて更新される。また、トラックTK(m+1)のスレーブテンポ倍率φm+1は「2.0」に設定されているので、トラックTK(m+1)のサンプルカウンタCm+1 (CT)は、サンプリング期間ごとに、マスターテンポ倍率θの「0.5」とスレーブテンポ倍率φm+1の「2.0」とを乗算した、「1.0」ずつ加算されて更新される。
このように、マスターサンプルカウンタCms (CT)のカウント値tとトラックTK(m),TK(m+1),・・・のサンプルカウンタC (CT),Cm+1 (CT),・・・のカウント値t (CT),tm+1 (CT),・・・の比は、スレーブテンポ倍率φ,φm+1,・・・で、一定に保たれる。また、マスターテンポ倍率θが再生途中で変わったとしても、この関係は保たれる。
マスターサンプルカウンタCms (CT)のカウント値tms (CT)とサンプルカウンタC (CT),Cm+1 (CT),・・・のカウント値t (CT),tm+1 (CT),・・・のうちのいずれか1つ又は複数のカウント値との比が何らかの要因(例えば、小数部の桁数が有限であること、ループスタート位置、ループエンド位置を設定できる位置が限られることなど)により理想値からずれてしまった場合、そのずれが所定の許容範囲内に含まれるように、そのトラックのテンポが次のようにして補正される。CPU12aは、サンプリング期間ごとに前記ずれを監視している。ここで、カウント値tms (CT)とカウント値t (CT)との比が理想値からずれて、そのずれが前記許容範囲外にあるとする。この場合、制御部CTは、マスターテンポ倍率θとスレーブテンポ倍率φとを乗算した値に、さらに所定の補正倍率ψを加味した値をカウント値t (CT)に加算する(図25参照)。補正倍率ψは予めCPU12aから制御部CTに供給されている。例えば、補正倍率ψは、「1.19」及び「1/1.19」に設定される。トラックTK(m)の再生位置が他のフレーズの再生位置に対して遅れているときは、カウント値t (CT)に、マスターテンポ倍率θとスレーブテンポ倍率φとを乗算した値を更に1.19倍した値を加算する。つまり、テンポを速くする。一方、トラックTK(m)の再生位置が他のフレーズの再生位置に対して進みすぎているときは、マスターテンポ倍率θとスレーブテンポ倍率φとを乗算した値を更に1/1.19倍した値を加算する。つまり、テンポを遅くする。
また、例えば、カウント値t (CT)がピッチマーク又はアタックマークを超えたとき、ループエンド位置を超えた可能性がある。この場合、カウント値t (CT)は、ループスタート位置にリセットされる。なお、マスターサンプルカウンタCms (CT)にもループスタート位置とループエンド位置が設定される。マスターサンプルカウンタCms (CT)にもループスタート位置とループエンド位置との比が、トラックTK(m)のサンプルカウンタC (CT)のループスタート位置とループエンド位置との比とほぼ同じ値になるように、ループスタート位置とループエンド位置とが設定される。また、マスターサンプルカウンタCms (CT)のカウント値tms (CT)を直接書き換えても良い。この場合、カウント値tms (CT)とカウント値t (CT)との比が理想値から大きくずれることがある。この場合、そのずれが許容範囲内に位置するように、各トラックのテンポが補正される。
なお、マスターサンプルカウンタCms (CT)を用いることなく、グループGP(k)を構成するトラックTK(m),TK(m+1),・・・のうちの1つのトラックに対応するサンプルカウンタC (CT)をマスターサンプルカウンタとして用いても良い。すなわち、トラックTK(m),TK(m+1),・・・のうちの1つをマスタートラックとし、その他のトラックをスレーブトラックとしてもよい。また、複数のグループが形成されても良い。この場合、各グループに対応するマスターサンプルカウンタを設けても良い。また、この場合、マスターサンプルカウンタを設けることなく、各グループ内の1つのトラックをマスタートラックとしてもよい。
なお、各種パラメータは。入力操作子を用いて設定(変更)されるだけでなく、コンピュータ部12によって実現される自動演奏装置(所謂シーケンサ)によって各種パラメータが順次設定(変更)されても良い。また、外部インターフェース15を介して外部機器から供給された制御信号に応じて各種パラメータが設定(変更)されてもよい。
CH・・・発音チャンネル、CM・・・キャッシュ回路、CT・・・制御部、C・・・再生時刻カウンタ、C・・・位相カウンタ、C・・・サンプルカウンタ、DEC・・・デコード回路、DM・・・電子楽器、DP・・・信号処理部、DRD・・・読み込み回路、FLT・・・フィルタ回路、GR・・・グレイン、OLA・・・重畳加算回路、RB・・・リングバッファ、SB・・・サンプルバッファ、SF・・・状態フラグ、SP・・・発音部、SG・・・セグメント、TK・・・トラック、TR・・・目標値レジスタ、VOL・・・音量制御回路、WD・・・係数、WM・・・波形メモリ、dpm・・・差分値、t・・・目標値、v・・・再生速度倍率、xfl・・・クロスフェード長、α・・・ストレッチ率、β・・・ピッチ倍率、γ・・・フォルマント倍率、11・・・入力操作子、12・・・コンピュータ部、16・・・音源回路、18・・・音声入力装置

Claims (8)

  1. 原音の波形を表す波形データを構成する複数のサンプル値又は前記複数のサンプル値に基づいて計算された複数の圧縮データを記憶した波形データ記憶手段と、
    サンプリング期間ごとにカウント値が更新されるサンプルカウンタをそれぞれ有し、前記サンプルカウンタのカウント値に基づいて、1つ又は複数の前記サンプル値又は前記圧縮データを前記波形データ記憶手段から読み出して、前記サンプルカウンタのカウント値に対応するサンプル値であって、音の波形を表わす音響信号を構成するサンプル値を計算して出力する複数の発音手段と、
    前記サンプルカウンタの初期カウント値を設定するとともにカウントを開始させ、サンプリング期間ごとに前記サンプルカウンタのカウント値に加算する加算値を前記発音手段に供給して前記サンプルカウンタのカウント値を更新させ、前記サンプルカウンタのカウント値が所定の値に達したとき前記サンプルカウンタのカウントを停止させる制御手段と、
    を備えた音響信号生成装置であって、
    時間間隔をおいて、前記原音における時間軸方向に互いにずれた複数の区間を前記複数の発音チャンネルから選択した複数の発音手段に割り当て、前記割り当てた区間の先頭位置に対応する値に基づいて前記選択した複数の発音手段のサンプルカウンタの初期カウント値をそれぞれ設定するとともに前記選択した複数の発音手段のサンプルカウンタのカウントを開始させ、前記選択した複数の発音手段から出力されたサンプル値を重畳加算することにより、前記原音の長さ、前記原音のピッチ及び前記原音のフォルマントのうちのいずれか1つの要素又は複数の要素を変更した1つの再生音の波形を表わす音響信号を構成する1つのサンプル値をサンプリング期間ごとに生成し、前記発音手段のサンプルカウンタのカウント値が、前記発音手段に割り当てられた前記区間の末尾位置に対応する値に達したとき、前記発音手段のサンプルカウンタのカウントを停止させる動作モードを備え、
    前記複数の区間、前記時間間隔及び前記加算値は、前記原音の長さに対する前記再生音の長さの比率を表わす第1比率、前記原音のピッチに対する前記再生音のピッチの比率を表わす第2比率、及び前記原音のフォルマント周波数に対する前記再生音のフォルマント周波数の比率を表わす第3比率のうちのいずれか1つの比率又は複数の比率に基づいて決定される、音響信号生成装置。
  2. 請求項1に記載の音響信号生成装置において、
    前記制御手段は、
    前記第1比率に応じた値をサンプリング期間ごとに加算する第1カウンタと、
    前記第2比率に応じた値をサンプリング期間ごとに加算する第2カウンタと、を備え、
    前記第1カウンタのカウント値が予め設定された第1目標値を超えたとき、前記第1目標値を記憶するとともに前記第1目標値を更新し、
    前記第2カウンタのカウント値が予め設定された第2目標値を超えたとき、前記記憶した前記第1目標値に対応する区間を、前記選択した複数の発音手段のうちの1つの発音手段に割り当てる、音響信号生成装置。
  3. 請求項2に記載の音響信号生成装置において、
    前記第1目標値及び第2目標値は、前記原音を構成する基本音のピッチに相当するサンプル数に基づいてそれぞれ設定されている、音響信号生成装置。
  4. 請求項2又は3に記載の音響信号生成装置において、
    前記制御手段は、前記時間間隔を前記第2比率に応じて設定し、前記加算値を前記第3比率に応じて設定する、音響信号生成装置。
  5. 請求項1に記載の音響信号生成装置において、
    前記制御手段は、
    前記第1比率に応じた値をサンプリング期間ごとに加算する第1カウンタを備え、
    前記第1カウンタのカウント値が予め設定された第1目標値を超えたとき、前記第1目標値に対応する前記区間を、前記選択した複数の発音手段のうちの1つの発音チャンネルに割り当てる、音響信号生成装置。
  6. 請求項5に記載の音響信号生成装置において、
    前記波形データは、フレーズをサンプリングして形成され、
    前記第1目標値は、前記フレーズを構成する各音のアタック位置に基づいて設定されている、音響信号生成装置。
  7. 請求項2に記載の音響信号生成装置において、
    音声又は楽音をリアルタイムにサンプリングするとともに、前記サンプリングした音声又は楽音のピッチを計算する計算手段を備え、
    前記波形データ記憶手段は、前記サンプリングにより得られたサンプル値を一時的に記憶するバッファである、音響信号生成装置。
  8. 請求項1乃至7のうちのいずれか1つに記載の音響信号生成装置において、
    前記原音全体を1つの発音手段に割り当て、前記原音の先頭位置に対応する値に基づいて前記1つの発音手段のサンプルカウンタの初期カウント値を設定するとともに前記1つの発音手段のサンプルカウンタのカウントを開始させ、1つの再生音の波形を表わす音響信号を構成する1つのサンプル値をサンプリング期間ごとに生成させ、前記1つの発音手段のサンプルカウンタのカウント値が前記原音の末尾位置に対応する値に達したとき、前記1つの発音手段のサンプルカウンタのカウントを停止させる動作モードをさらに備え、
    第1及び第2の再生音をそれぞれ表わす第1及び第2の音響信号を同時に生成する際、前記第1の音響信号を一方の動作モードを用いて生成し、前記第2の音響信号を他方の動作モードを用いて生成可能な音響信号生成装置。
JP2014031724A 2014-02-21 2014-02-21 音響信号発生装置 Expired - Fee Related JP6090204B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2014031724A JP6090204B2 (ja) 2014-02-21 2014-02-21 音響信号発生装置
EP15155304.7A EP2911147B1 (en) 2014-02-21 2015-02-17 Multifunctional audio signal generation apparatus
EP17183288.4A EP3261086B1 (en) 2014-02-21 2015-02-17 Multifunctional audio signal generation apparatus
US14/626,784 US9792916B2 (en) 2014-02-21 2015-02-19 Multifunctional audio signal generation apparatus
CN201510087373.1A CN104867487B (zh) 2014-02-21 2015-02-25 多功能音频信号产生设备
US15/698,626 US10388290B2 (en) 2014-02-21 2017-09-07 Multifunctional audio signal generation apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014031724A JP6090204B2 (ja) 2014-02-21 2014-02-21 音響信号発生装置

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP2017021222A Division JP6350692B2 (ja) 2017-02-08 2017-02-08 音響信号発生装置
JP2017021223A Division JP6350693B2 (ja) 2017-02-08 2017-02-08 音響信号発生装置

Publications (2)

Publication Number Publication Date
JP2015158527A JP2015158527A (ja) 2015-09-03
JP6090204B2 true JP6090204B2 (ja) 2017-03-08

Family

ID=52589243

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014031724A Expired - Fee Related JP6090204B2 (ja) 2014-02-21 2014-02-21 音響信号発生装置

Country Status (4)

Country Link
US (2) US9792916B2 (ja)
EP (2) EP3261086B1 (ja)
JP (1) JP6090204B2 (ja)
CN (1) CN104867487B (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10083682B2 (en) 2015-10-06 2018-09-25 Yamaha Corporation Content data generating device, content data generating method, sound signal generating device and sound signal generating method
JP6904141B2 (ja) * 2017-07-28 2021-07-14 カシオ計算機株式会社 楽音発生装置、方法、プログラム、及び電子楽器
JP6806120B2 (ja) * 2018-10-04 2021-01-06 カシオ計算機株式会社 電子楽器、楽音発生方法及びプログラム
KR20200143965A (ko) * 2019-06-17 2020-12-28 현대자동차주식회사 음향 통신 시스템 및 그의 데이터 송수신 방법
WO2021026384A1 (en) * 2019-08-08 2021-02-11 Harmonix Music Systems, Inc. Authoring and rendering digital audio waveforms
US11830464B2 (en) * 2019-12-27 2023-11-28 Roland Corporation Wireless communication device and wireless communication method
US20210350788A1 (en) * 2020-05-06 2021-11-11 Samsung Electronics Co., Ltd. Electronic device for generating speech signal corresponding to at least one text and operating method of the electronic device
EP4047595A1 (de) 2021-02-23 2022-08-24 e-instruments lab GmbH Verfahren zur erstellung einer gruppe von phasenkohärenten samples für ein virtuelles instrument

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4623915A (en) * 1984-09-21 1986-11-18 Rca Corporation Apparatus for processing multiple time division multiplexed asynchronous composite video signals
JP3329635B2 (ja) * 1995-03-06 2002-09-30 ローランド株式会社 効果装置
JP2882464B2 (ja) 1995-11-16 1999-04-12 ヤマハ株式会社 波形メモリ音源装置
JP2959468B2 (ja) 1996-05-22 1999-10-06 ヤマハ株式会社 話速変換方法および話速変換機能付補聴器
JP3379348B2 (ja) * 1996-09-03 2003-02-24 ヤマハ株式会社 ピッチ変換器
JP3397082B2 (ja) * 1997-05-02 2003-04-14 ヤマハ株式会社 楽音発生装置および方法
SG81938A1 (en) * 1997-09-30 2001-07-24 Yamaha Corp Tone data making method and device and recording medium
JP4581190B2 (ja) * 2000-06-19 2010-11-17 ヤマハ株式会社 音楽信号の時間軸圧伸方法及び装置
US7685217B2 (en) * 2005-07-26 2010-03-23 Broadcom Corporation Channel-select decimation filter with programmable bandwidth
US7526395B2 (en) * 2007-09-05 2009-04-28 Tektronix, Inc. Logic analyzer using a digital filter
US8271222B2 (en) * 2008-06-10 2012-09-18 Advantest Corporation Sampling apparatus and sampling method
JP2010217475A (ja) * 2009-03-17 2010-09-30 Yamaha Corp 楽音信号発生装置
US8183452B2 (en) * 2010-03-23 2012-05-22 Yamaha Corporation Tone generation apparatus
JP6102063B2 (ja) * 2011-03-25 2017-03-29 ヤマハ株式会社 ミキシング装置
JP5664413B2 (ja) * 2011-03-31 2015-02-04 ヤマハ株式会社 音響信号処理装置

Also Published As

Publication number Publication date
CN104867487B (zh) 2018-10-23
US10388290B2 (en) 2019-08-20
EP2911147B1 (en) 2018-10-17
JP2015158527A (ja) 2015-09-03
US20150243291A1 (en) 2015-08-27
US9792916B2 (en) 2017-10-17
CN104867487A (zh) 2015-08-26
EP2911147A1 (en) 2015-08-26
EP3261086B1 (en) 2020-04-22
EP3261086A1 (en) 2017-12-27
US20170372711A1 (en) 2017-12-28

Similar Documents

Publication Publication Date Title
JP6090204B2 (ja) 音響信号発生装置
JP6011064B2 (ja) 自動演奏装置及びプログラム
JP2658463B2 (ja) 自動演奏装置
JP6019803B2 (ja) 自動演奏装置及びプログラム
JP6547522B2 (ja) 楽音信号発生装置
JP6350692B2 (ja) 音響信号発生装置
JP6350693B2 (ja) 音響信号発生装置
JP2010113278A (ja) 楽曲処理装置およびプログラム
EP3373289B1 (en) Electronic musical instrument, musical sound generating method, and storage medium
JP2015138160A (ja) キャラクタ演奏画像生成装置、キャラクタ演奏画像生成方法、キャラクタ演奏システム及びキャラクタ演奏方法
JP6390129B2 (ja) 転調装置、転調方法及び転調プログラム
JP4835434B2 (ja) 演奏パターン再生装置及びそのコンピュータプログラム
JP4835433B2 (ja) 演奏パターン再生装置及びそのコンピュータプログラム
JP3651675B2 (ja) 電子楽器
JPH07287576A (ja) 音楽再生方法
JP2005257832A (ja) 演奏再生装置
JP4259422B2 (ja) 演奏制御装置及びプログラム
JP2013024911A (ja) 信号処理装置
JP2003330469A (ja) 楽音生成装置及びプログラム
JPH10187155A (ja) カラオケ装置
JP2000221979A (ja) テンポ等の演算装置
JP2005010462A (ja) 自動演奏装置及び自動演奏処理プログラム並びに自動演奏パターンデータを記録したコンピュータ読み取り可能な記録媒体
JP2016051005A (ja) 自動伴奏装置及び自動伴奏プログラム
JPH0416898A (ja) エンベロープ発生器
JP2003330468A (ja) 楽音生成装置及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161221

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170110

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170123

R151 Written notification of patent or utility model registration

Ref document number: 6090204

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees