JP4070315B2 - 波形再生装置 - Google Patents
波形再生装置 Download PDFInfo
- Publication number
- JP4070315B2 JP4070315B2 JP22302398A JP22302398A JP4070315B2 JP 4070315 B2 JP4070315 B2 JP 4070315B2 JP 22302398 A JP22302398 A JP 22302398A JP 22302398 A JP22302398 A JP 22302398A JP 4070315 B2 JP4070315 B2 JP 4070315B2
- Authority
- JP
- Japan
- Prior art keywords
- waveform
- mark
- address
- information
- reproduction
- 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
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Description
【発明の属する技術分野】
本発明は、記憶された波形データを読み出して波形を再生する波形再生装置に関する。
【0002】
【従来の技術】
音を表す波形を記憶しておいて、その波形を読み出して再生波形を得るに当り、その読み出し速度を変えると、例えば磁気記録テープを早送りしながら音声を再生したときのようにその再生波形のピッチ(音高)が変化する。従来、再生波形のピッチは波形記録時のピッチのまま変化させずに、この読み出し速度(波形再生速度)を変化させようとする技術が知られている。
【0003】
例えばそのような技術の1つとして、メモリに格納された波形の読出速度を変化させることによって波形再生時間を変化させ、その波形再生時間の変化に伴って変化した再生波形のピッチをピッチシフタによって元のピッチに戻す方式が知られている。
【0004】
【発明が解決しようとする課題】
この方式の場合、読出時間を変化させることにより変化した再生ピッチを元のピッチに戻すにあたり、所定時間毎に波形部分を読み飛ばしたり重複読みしたりすることにより波形長さを調節している。このため、楽音が急激に立ち上がるアタック部分や音声の子音部が消えてしまったり、いわゆる2度鳴りを生じたりして、本来のアタックや子音が損なわれ、音楽的に欠陥のある、あるいは聞きづらい音声の再生波形となってしまうという問題がある。また、この方式の場合、読み飛ばしや重複読みを行なう際に、波形を滑らかに接続するために、いわゆるクロスフェードの技術が採用されるが、このクロスフェードによっても、波形のアタック部や子音部が他の波形部分とクロスフェードされることにより損なわれる結果となる。
【0005】
また、上記の従来技術は、再生速度を変化させてもピッチが変化しないようにするという観点の技術であるが、近年、再生速度を自在に変更するとともに、ピッチも自在に変更された再生波形を得ることが要請されてきている。
【0006】
本発明は、上記事情に鑑み、再生速度と再生ピッチの双方を制御することができ、しかも、アタック部や子音部等が損なわれることなく、高音質の再生波形を得ることのできる波形再生装置を提供することを目的とする。
【0007】
【課題を解決するための手段】
上記目的を達成する本発明の波形再生装置のうちの第1の波形再生装置は、
音の波形をあらわす波形データと波形上の特定の複数のポイントをあらわすポイント情報とを記憶する記憶手段と、
再生波形の音高を指定する音高情報を取得する音高情報取得手段と、
波形データの表す波形上の進行位置を表す位置情報であって、所望の変化速度で変化する位置情報を発生する位置情報発生手段と、
記憶手段より波形データを読み出し、音高情報取得手段で取得した音高情報に対応した音高の再生波形信号を生成する再生波形信号生成手段と、
位置情報がポイント情報の表す位置に達したときポイント情報の表す波形位置の波形データから読み出しを開始して、ポイント情報の表す位置の波形から生成を開始するように再生波形信号生成手段を制御する制御手段と、
でなる波形再生装置である。
【0008】
また、上記目的を達成する本発明の波形再生装置のうちの第2の波形再生装置は、
音の波形をあらわす波形データと波形上の特定の複数のポイントをあらわすポイント情報とを記憶する記憶手段と、
再生波形の音高を指定する音高情報を取得する音高情報取得手段と、
波形データの表す波形上の進行位置を表す位置情報であって、所望の変化速度で変化する位置情報を発生する位置情報発生手段と、
記憶手段より波形データを読み出すためのアドレスを発生するアドレス発生手段を有し、発生されたアドレスの波形データを読み出して音高情報取得手段で取得した音高情報に対応した音高の再生波形信号を生成する再生波形信号生成手段と、
位置情報がポイント情報の表す位置に達したとき、アドレス発生手段で発生されるアドレスをポイント情報の表す波形位置の波形データのアドレスに修正し、ポイント情報の表す波形位置の波形データから読み出しを開始して、ポイント情報の表す位置の波形から生成を開始するように再生波形信号生成手段を制御する制御手段と、
でなる波形再生装置である。
【0009】
すなわち、この第2の波形再生装置は、第1の波形再生装置において、再生波形信号生成手段が、波形データを読み出すアドレス発生手段を備え、位置情報がポイント情報の表す波形上の位置に達したとき、アドレス発生手段で発生されるアドレスを、ポイント情報の表す波形位置の波形データのアドレスに修正し、そのポイント情報の表す位置の波形から再生波形信号の生成を開始するものである。
【0010】
本発明の第1の波形再生装置ないし第2の波形再生装置は、音高情報を取得し、その音高情報に応じた音高の再生波形信号を生成するものであるため、音高情報に応じた音高の再生波形を得ることができる。
【0011】
また、本発明の第1の波形再生装置ないし第2の波形再生装置は、位置情報がポイント情報の表す波形上の位置に達したときポイント情報の表す波形の位置の波形データから読み出しを開始し、その読み出した波形データにより再生波形信号を生成するものであるため、アタック部や子音部の先頭を上記ポイントとしてあらかじめ指定しておくことにより、アタック部や子音の再生時点では読み飛ばしや重複読み出しを行う必要がなく、アタック部や子音部が消失したり、損なわれてしまうことが防止され、高音質の再生波形を得ることができる。
【0012】
ここで、上記本発明の第1の波形再生装置ないし第2の波形再生装置において、位置情報発生手段は、波形データの再生位置の変化速度を表す波形再生速度情報を取得する波形再生速度情報取得手段を備え、その波形再生速度情報取得手段で得られた波形再生速度情報に対応した変化速度で変化する位置情報を発生するものであってもよい。
【0013】
この場合、位置情報発生手段で発生される位置情報の変化速度を波形再生速度情報によって制御することができるため、アタック部や子音部どうしの間の間隔を変更することが可能となる。
【0014】
この波形再生速度情報取得手段を備えた構成の場合、さらに、その波形再生速度情報取得手段が、波形再生速度情報を、波形再生中における波形再生速度情報の変更を許容して取得するものであってもよい。
【0015】
また、本発明の第1の波形再生装置ないし第2の波形再生装置は、音高情報取得手段が、音高情報を、波形再生中における音高情報の変更を許容して取得するものであってもよい。
【0016】
本発明の上記第1の波形再生装置ないし第2の波形再生装置は、位置情報がポイント情報の表す波形上の位置に達した時そのポイント情報の表す波形位置の波形データから読み出しを開始するものであるため、波形再生中に再生波形の音高(ピッチ)や再生速度の変更が指示されても、その指示に追随して音高(ピッチ)や再生速度を変更し、しかもアタック部や子音部が消失したり、損なわれてしまうことのない高音質の再生波形を得ることができる。
【0017】
また、上記目的を達成する本発明の波形再生装置のうちの第3の波形再生装置は、
音の波形を表す波形データと波形上の特定の複数のポイントを表すポイント情報とを記憶する記憶手段と、
再生波形の音高を指定する音高情報を取得する音高情報取得手段と、
波形データの再生位置の変化速度を表す波形再生速度情報を取得する波形再生速度情報取得手段と、
波形データの表す波形上の位置を表す位置情報であって、前記圧縮伸張情報に対応した変化速度で変化する位置情報を発生する位置情報発生手段と、
位置情報が示す波形位置近傍の波形データを記憶手段より読み出すためのアドレスを発生するアドレス発生手段を有し、発生されたアドレスに従って波形データを読み出して音高情報取得手段で取得した音高情報に対応した音高の再生波形信号を生成する再生波形信号生成手段と、
位置情報がポイント情報の表す位置に達したとき、アドレス発生手段で発生するアドレスを、ポイント情報の表す波形位置の波形データから読み出しを開始するためのアドレスに設定し直すようにアドレス発生手段を制御する制御手段と、
でなる波形再生装置である。
【0018】
この第3の波形再生装置において、アドレス発生手段は、位置情報が示す波形位置に対応して所定の区間の波形データを記憶手段より読み出すためのアドレスを発生するものであって、再生波形信号生成手段は、その発生されたアドレスに従って波形データを読み出して音高情報取得手段で取得した音高情報に対応した音高の再生波形信号を生成するものであってもよい。
【0019】
本発明の第3の波形再生装置は、音高情報を取得し、その音高情報に応じた音高の再生波形信号を生成するものであるため、音高情報に応じた音高の再生波形を得ることができる。
【0020】
また、上記第3の波形再生装置は、位置情報が示す波形位置の近傍の波形データを読み出すためのアドレスを発生し、その発生されたアドレスに従って波形データを読み出し再生波形信号を生成するものであるため、音高とは独立に波形を時間軸方向に圧縮ないし伸長することができる。
【0021】
さらに、上記第3の波形再生装置は、位置情報がポイント情報の表す波形上の位置に達したとき、再生波形信号生成手段のアドレス発生手段で発生されるアドレスを、そのポイント情報の表す波形位置の波形データのアドレスに修正し、そのポイント情報の表す位置から再生波形信号の生成を開始するものであるため、アタック部や子音部の先頭を上記ポイントとして予め指定しておくことにより、アタック部や子音部の再生時点では読み飛ばしや重複続出を行なう必要がなく、アタック部や子音部が消失したり、損なわれてしまうことが防止され、高音質の再生波形を得ることができる。
【0022】
上記本発明の第1、第2、ないし第3の波形再生装置のいずれにおいても、音高情報取得手段は、音高情報を、MIDI情報より取得するものであってもよく、これと同様に、波形再生速度情報取得手段は、波形再生速度情報を、MIDI情報より取得するものであってもよい。
【0023】
【発明の実施の形態】
以下、本発明の実施形態について説明する。
【0024】
図1は、本発明の波形再生装置の構成図である。
【0025】
この図1に示す波形再生装置10には、CPU11,RAM12,ROM13,タイマ14,DSP15,操作子群16,表示器17,およびMIDI入力インターフェース18が備えられており、それらはバス19を介して互いに接続されている。
【0026】
CPU11は、プログラムを実行する中央演算装置であり、DSP15の制御を含む、この波形再生装置10の全体の制御を司っている。
【0027】
RAM12は、読み書き自在なメモリであり、波形データや、CPU11で実行される各種プログラムの変数等が格納される。
【0028】
ROM13は、書込み不能な読出し専用メモリであり、CPU11で実行される各種プログラムが記憶されている。
【0029】
タイマ14は、時間を計測するツールであり、CPU11で実行されるプログラム中でリセットされ、また、計時された時間がプログラムにより読み取られる。
【0030】
DSP(ディジタルシグナルプロセッサ)15には、CPU11で実行されるプログラムとは別に、そのDSP15により実行されるプログラムが格納されており、DSP15では、そのDSP15で実行されるプログラムに応じた各種のディジタル信号処理が行なわれる。この波形再生装置10においては、このDSP15は、波形入力端子21から入力されA/D変換器22によりサンプリング処理されたディジタルの波形データをRAM12に格納したり、RAM12から読み出された波形データを取り込んでその取り込んだ波形データに必要な信号処理を行ない、D/A変換器23を経由して波形出力端子24から外部に再生波形を送り出す役割りを担っている。
【0031】
出力端子24から送り出された再生波形は、アンプ31およびスピーカ32からなるサウンドシステム30を経由して空間に音として出力される。
【0032】
操作子群16は、詳細は後述するが、各種の操作子を備え、この波形再生装置10に各種の指示やデータを入力するためのものである。
【0033】
表示器17は、波形編集処理において波形を表示したり、各種パラメータの設定値を表示するなど、この波形再生装置10において必要となる各種の表示を行なうためのものである。
【0034】
MIDI入力インターフェース18は、MIDI入力端子25から入力されたMIDI情報を受けとってこの波形再生装置10の内部に取り込む役割りを担っている。MIDI入力端子25には、演奏用のキーボードやシーケンサから出力されたMIDI情報が取り込まれる。
【0035】
図2は、図1に示す波形再生装置10に接続されるキーボードの概略構成図である。
【0036】
このキーボード40は、演奏操作に応じたMIDI情報を送出するMIDIキーボードであり、多数の白鍵および多数の黒鍵からなる鍵盤41、およびピッチベンドレバー42を備えている。このキーボード40を図1に示す波形再生装置10のMIDI入力端子25に接続し、鍵の押鍵、離鍵操作やピッチベンドレバー42の操作で波形再生をコントロールすることができる。すなわち、鍵盤41の鍵が押されると、その押された鍵に応じたノートオン情報(押された鍵に対応するノートナンバ、およびその押鍵の速度を示すベロシティの各情報を含む)を出力する。押された鍵が離されると、ノートオフ情報(離された鍵を示すノートナンバの情報、および離されたことを示す情報を含む)が出力される。
【0037】
また、ピッチベンドレバー42が操作されると、その操作の変位に応じたコントロール値を示すベンダ情報が送出される。このベンダ情報は0を中心として−xから+xまで(x>0)のコントロール値を示すものである。
【0038】
図1に示す波形再生装置10では、MIDI入力端子25からノートオン情報が入力されるとRAM12に格納されている波形データに基づく、その入力されたノートオン情報に応じた音高(ピッチ)の発音が開始され、ノートオフ情報が入力されると発音が停止する。また、ベンダ情報が入力されるとその入力されたベンダ情報に応じて発音中の波形の再生速度が変更される。
【0039】
図3は、図1に示す波形再生装置10に接続することが可能なシーケンサと、その接続の態様を示す図である。
【0040】
シーケンサ50は、そのシーケンサ50内に記憶している演奏情報に基づいてMIDI情報を送出するものであり、その送出されたMIDI情報は、音源10A,10Bなどに入力され、自動演奏が行なわれる。
【0041】
このシーケンサ50からのMIDI情報を図1に示す波形再生装置10のMIDI入力端子25に供給することにより、その供給されたMIDI情報に基づいて波形再生をコントロールすることができる。このシーケンサ50からは、そのシーケンサ50に記憶されている演奏情報に基づいて、自動演奏の進行に伴ってノートオン情報(ノートナンバおよびベロシティの各情報を含む)や、ノートオフ情報(ノートナンバおよびノートオフであることの各情報を含む)が出力され、さらに、自動演奏のテンポに応じた周期でクロック情報(テンポクロック)が出力される。
【0042】
このクロック情報は、自動演奏のテンポをtとしたとき、以下の周期T0で出力される。
【0043】
周期T0=60000/(t×24) [msec]
但し、60000[msec]=60[sec]=1[min]
24:4分音符1つあたりのクロック数
である。
【0044】
図3には、シーケンサ50と図1に示す波形再生装置10を含む2つの音源10A,10Bとの接続態様が示されているが、ここではシーケンサ50は、2パート分の演奏情報に基づいて各パートに対応する2つの音源10A,10Bにそれぞれ独立してMIDI情報を出力するものとする。
【0045】
ここで、2つの音源10A,10Bのうちの一方の音源10Aとして図1に示す波形再生装置10を用い、他方の音源10Bとして従来の通常の音源を用いると、自動演奏の際、演奏テンポに応じたタイミングでノートオン情報、ノートオフ情報が出力され、波形再生装置10を含む各音源10A,10Bを発音させるとともに、波形再生装置10で発音される波形の再生速度はそのシーケンサ50から出力されるクロック情報により制御される。
【0046】
したがって、この場合、音源10A(波形再生装置10)では、通常の音源10Bによる自動演奏のテンポに合わせた波形再生が実現される。
【0047】
また、図1に示す波形再生装置10を2台用意し、図3に示す2つの音源10A,10Bの双方を図1に示す波形再生装置10とした場合、それぞれの音源(波形再生装置)10A,10Bには、シーケンサ50から同一のクロック情報が同一のタイミングで順次供給され、それぞれの音源(波形再生装置)10A,10Bでは、共通の演奏テンポに従った、音楽的に同期した波形再生が行なわれることになる。
【0048】
図4は、図1に示す波形再生装置10のRAM12に格納される波形の一例を示す図である。
【0049】
RAM12に波形が格納されると、その格納された波形に、後述するようにしてマークが付される、この図4には、アドレス上の各点に各番号0〜13が付された各マーク(マーク0〜13)が対応づけられており、これらのマーク0〜13は、‘イベント',‘ループ',‘エンド'の3つのタイプに分類されている。この図4に示す例では、マーク0〜13のうち、マーク0,3,7,10のタイプは‘イベント'であり、マーク1,2,4〜6,8,9,11,12のタイプは‘ループ'であり、マーク13のタイプは‘エンド'である。イベントのマーク0,3,7,10と、そのマークに続くマーク1,4,8,11とで区切られる区間a,b,c,dは、後述する繰返し読出しや読み飛ばしを行なわない、すなわち波形再生時に1回のみ読み出される区間である。これに対し、ループマークとそれに続くマークとで区切られる区間は繰返し読出しや読み飛ばしの対象となることのある区間である。なお、イベントマークとその次のイベントマーク(あるいはエンドマーク)との間には最低限1つのループマークが設定される。
【0050】
エンドマークは、その波形の最終アドレスであることをあらわすマークであり、仮にエンドマークが付されたアドレスよりも後のアドレスに他のマークが付されていてもそのマークは一切無視される。
【0051】
RAM12には、波形データのみでなく、以上のような、マークのアドレスやマークのタイプが記憶される。RAM12には、これら各種のデータの記憶のために、以下のような格納領域が確保されている。
【0052】
(A)波形データの格納領域
WAVE[i],iはアドレスを示す。
【0053】
(B)波形データに付されたマークのアドレスおよびマークのタイプの格納領域
MARK[i]:i番目のマークのアドレス
TYPE[i]:i番目のマークのタイプ
(C)波形データがあらわす波形の基本テンポの格納領域
TEMPO
(D)波形データの波形の基本ノートナンバの格納領域
NOTE#
これらの格納領域へのデータ格納の操作について後述する。尚、以下において、説明の繁雑さを避けるため、これらの格納領域に付した名前(例えばMARK[i]等)とその格納領域に格納された値(例えばMARK[i]に格納されたアドレス)とを区別せずに、その格納領域に格納された値を指す場合もその格納領域に付した名前をそのまま用いることがある。以下において説明する各種のレジスタやフラグ等に関しても同様である。
【0054】
図5は、図1に示す操作子群16および表示器17を備えた操作表示パネルを示す図である。
【0055】
この図5に示す操作表示パネル20には、図1に示す操作子群16を構成する複数のボタンおよびダイアルと、図1に示す表示器17が備えられている。この図5には、表示器17に、波形1711と、その波形1711の任意の点の格納アドレスを指標するアドレスマーク1712が表示されている。以下、各種のボタンおよびダイアルについて説明する。
【0056】
(A)RECボタン1611
このRECボタン1611は、外部入力音をサンプリングするときに押されるボタンである。サンプリング処理については後述する。
(B)START/STOPボタン1612
このSTART/STOPボタン1612は、サンプリングを実際に開始するときに押されるボタンである。このSTART/STOPボタン1612を押すと、その押されたタイミング以降の入力音がサンプリングされる。サンプリングを終了させるときもこのSTART/STOPボタン1612が押される。
【0057】
(C)EDITボタン1613
このEDITボタン1613は、上記のサンプリングにより得られた波形データに、各種マーク、基本テンポ、基本ノートナンバを設定する編集処理を開始するときに押されるボタンである。編集処理については後述する。
(D)VALUE/ADDRESSダイアル1630
このVALUE/ADDRESSダイアル1630は、表示器17に表示される波形上の位置を指定したり、パラメータ値を変更するときに操作されるダイアルである。使い方については後述する。
(E)ADDRESSボタン1614,EVENT_MARKボタン1615,LOOP_MARKボタン1616,END_MARKボタン1617
これらのボタン1614〜1617は、入力音のサンプリングにより得られた波形データに、図4を参照して説明した、イベントマーク,ループマーク、およびエンドマークを設定するときに押されるボタンである。これらのマークの設定操作については後述する。
【0058】
(F)BASIC_TEMPOボタン1618
このBASIC_TEMPOボタン1618は、波形の基本テンポを設定するためのボタンである。基本テンポの設定操作については後述する。
(G)BASIC_NOTE#ボタン1619
このBASIC_NOTE#ボタン1619は、波形の基本ノートナンバを設定するためのボタンである。基本ノートナンバの設定操作については後述する。
(H)EXITボタン1620
このEXITボタン1620は、編集を終了する時に押されるボタンである。
【0059】
(I)MODEボタン1623
このMODEボタン1623は、SYNCボタン1621とMANUALボタン1622の2つのボタンからなり、SYNCボタン1621を押すと、波形再生時における波形再生速度をクロック情報に同期させるモード(SYNCモード)に設定され、MANUALボタン1622を押すと、波形再生時における波形再生速度が操作子操作(ここでは、図2に示すキーボード40のピッチベンドレバー42の操作)により制御されるモード(MANUALモード)に設定される。
【0060】
ここで、SYNCモードは、図1に示す波形再生装置10のMIDI入力端子25にシーケンサ50(図3参照)を接続した場合に設定されるモードであり、シーケンサ50が演奏テンポに応じた周期でクロック情報を出力し、波形再生装置10では、このクロック情報を入力してこのクロック情報の入力周期に同期した再生速度で波形再生が行なわれる。このSYNCモードでは、以下に説明するベンダ情報が入力されても無視される。
【0061】
またMANUALモードは、図1に示す波形再生装置10のMIDI入力端子25に図2に示すキーボード40を接続した場合に設定されるモードであり、キーボード40から出力されるベンダ情報(−x〜+x)を入力して、その入力されたベンダ情報に応じた再生速度で波形再生が行なわれる、このMANUALモードでは、クロック情報が入力されても無視される。
【0062】
尚、クロック情報の周期やベンダ情報は波形再生中においても変更が可能であり、クロック情報の周期やベンダ情報が変更されると、その変更時点以降はその変更された後のクロック情報の周期あるいはベンダ情報に応じた再生速度で波形の再生が続行される。
【0063】
図6は、図1に示すは波形再生装置10のCPU11で実行されるメインルーチンのフローチャートである。
【0064】
CPU11で実行されるプログラムで用いられる主な変数は以下のとおりである。
【0065】
(A)MODE:動作モードを示すフラグであり、SYNCモードでは、‘Sync'、MANUALモードでは‘Manual'が設定される。
【0066】
(B)GATE:発音中であるか否かを示すフラグであり、発音中は‘1'、発音中でないときは‘0'が設定される。
【0067】
(C)ON#:最新に入力されたノートオン情報中のノートナンバが格納されるレジスタである。
【0068】
尚、上記(A)のMODEフラグは、図6のメインルーチン中に示されているが、上記(B),(C)のGATEフラグ,ON#レジスタは、後述する図8に示す波形再生処理ルーチン中に示されている。
【0069】
図6に示すメインルーチンでは、先ずステップ1002においてサンプリング処理が実行される。このサンプリング処理は、外部から音(楽器音や歌唱音等)を入力して録音(サンプリング)する処理である。サンプリングにより得られた波形データは、RAM12に格納される。
【0070】
このサンプリング処理においては、先ずRAM12内の各種領域が初期化される。RAM12内に設定される格納領域には、前述したとおりの、
(A)波形データの格納領域
WAVE[i],iはアドレスを示す。
【0071】
(B)波形データに付されたマークのアドレスおよびマークのタイプの格納領域
MARK[i]:i番目のマークのアドレス
TYPE[i]:i番目のマークのタイプ
(C)波形データがあらわす波形の基本テンポの格納領域
TEMPO
(D)波形データがあらわす波形の基本ノートナンバの格納領域
NOTE#
が存在する。
【0072】
初期化に続いて、図5に示すSTART/STOPボタン1612が押されるのを待って、そのボタンが押されると、波形入力端子21(図1参照)から入力されている音波形がサンプリング周期毎にサンプリングされ、このサンプリングにより順次得られた各波形データが、RAM12内の各格納領域WAVE[i],i=0,1,2,……に順次書き込まれる。ここでは44.1kHzのサンプリング周波数が採用されており、したがって1秒あたり44100回のサンプリングが行なわれる。サンプリングされた波形データをWAVE[i]に格納するにあたっては、先ず最初のサンプリング値がWAVE[O]に書き込まれ、それ以降各サンプリング毎に、そのサンプリングにより得られたサンプリング値が、アドレスiが1ずつインクリメントされたWAVE[i]に書き込まれる。START/STOPボタン1612が再度押されると、上記のサンプリング処理が終了する。
【0073】
図6に示すメインルーチンのステップ1004では波形編集処理が行なわれる。この波形編集処理は、ステップ1002におけるサンプリング処理で得られた波形データに関し、波形の加工、各種マークの設定、基本テンポや基本ノートナンバの設定を行なう処理である。
【0074】
波形の加工は、波形データの前端、後端などの不要部分の削除や、波形データの繰返し読出し、飛越し読出しの際に読出しアドレスがジャンプすることによる再生波形の不連続性を解消するために、ジャンプする前後の波形データを平滑化する処理などを行なうものである。波形の加工については、本発明には直接は無関係であるので、これ以上の説明は省略する。
【0075】
以下、図5に示した操作表示パネルを参照しながら、波形の加工処理以外の波形編集処理について説明する。
【0076】
(A)各種マークの設定
波形データにイベントマーク、ループマーク、エンドマークの各マークを設定する。各マークの設定の操作は以下の通りである。
先ず、マークの設定の開始を指示するためにADRESSボタン1614を押してマーク設定の状態とする。すると表示器17には、波形1711とアドレスマーク1712が表示される。次に表示器17に表示された波形1711およびアドレスマーク1712を見ながらVALUE/ADDRESS1630を操作する。すると、この操作に応じて、表示器17上のアドレスマーク1712がアドレスの増減方向(図5の左右方向)に移動する。このようにして、アドレスマーク1712により指定される波形上のアドレス位置を決め、EVENT_MARKボタン1615,LOOP_MARKボタン1616,END_MARKボタン1617のうちのいずれかのボタンを押す。すると、そのアドレス位置に、押されたボタンに応じて、それぞれ、イベントマーク、ループマーク、エンドマークが設定される。以上の、VALUE/ADDRESS1630の操作とEVENT_MARKボタン1615,LOOP_MARKボタン1616,END_MARKボタン1617のうちのいずれかのボタンの押下とを繰り返して、必要なマークを全て設定する。
【0077】
上記の操作により設定された各マークは、波形データのアドレスの先頭からアドレス順に0,1,2,……の番号が付与され、それらのマーク0,1,2,…のアドレスとタイプが、
マーク0のアドレスがMARK[0]、タイプがTYPE[0]に、
マーク1のアドレスがMARK[1]、タイプがTYPE[1]に、
マーク2のアドレスがMARK[2]、タイプがTYPE[2]に、
……
それぞれ記憶される。
【0078】
マークの各タイプの意味については、図4を参照してその概要を説明したが、ここで詳細にまとめておく。
【0079】
(イベントマーク)
イベントマークは、振幅あるいはピッチが急激に変化する波形位置を指し示すマークである。具体的には打楽器のアタック部の始点、人声音の子音部の始点などを示すためのマークである。
【0080】
上記のアタック部や子音部は繰返し読み出されると、アタック部が連続することにより音の2度鳴りとして、あるいはこのような部分は複雑な波形をもっておりそれを繰返すために波形が滑らかに接続できず雑音として聞こえてしまう。また、アタック部や子音部というのは、音の特徴を多く含む部分であるため、この部分の読み出しを飛越してしまうと、その音の特徴が大きく削がれてしまう。図1に示す波形再生装置10では、これらの不都合が起きないように、波形再生時にはこのイベントマークから次のマーク(ループマーク)までの区間を繰返し読み出したり、読み出しを飛越したりしないようにしている。
【0081】
(ループマーク)
ループマークは波形再生にあたり繰り返し読み出しても、飛越しをしても不都合が少ない区間を特定するための当該区間の始点を示すマークである。不都合が少ない区間とは、音の定常部、つまり振幅やピッチの急激な変化がない部分である。また区間の長さは、単音であればそのピッチに相当する周期、またはその整数倍の長さとし、和音や混合音であれば、最低音の全周期の略整数倍の長さとし、ビブラートやトレモロの周期を変化させたくないのであれば、そのビブラートやトレモロの周期とすればよい。
【0082】
波形再生時にはこのループマークから次のマークまでの区間は、必要に応じて繰り返して、あるいは飛び越して読み出すことになるため、このマークが示す位置の波形と、次のマークが示す位置の波形との関係に注意して、マークを設定することが好ましい。
【0083】
図7は、ループマークの設定方法の説明図であり、図7(A)は良い例、図7(B)は悪い例である。
【0084】
図7(A)では、周期的な波形の1周期が区間となるようにループマーク(a)(b)が設定されており、このため、波形再生時においてこの区間を繰り返し読み出す(つまり読出アドレスが(b)から(a)へジャンプする)際にも、あるいは、この区間を飛び越して読み出す(つまり読出アドレスが(a)から(b)にジャンプする)際にも、波形が滑らかに接続される。これは、(a)の位置の波形の傾きと(b)の位置の波形の傾きがほぼ同じだからである。
【0085】
一方図7(B)は、(a')の位置の波形の傾きと(b')の位置の波形の傾きが明らかに食い違っているために、読出アドレスがジャンプする時に波形が滑らかに接続されることは期待できず、雑音の原因となる。
【0086】
なお、図1に示す波形再生装置10において、ループマークは、イベントマークとそれに続くイベントマーク(または後述のエンドマーク)との間に最低1つ設定されなければならない。イベントマークと、次のイベントマーク(あるいはエンドマーク)との間にループマークが1つも設定されていないと、イベントマークで示される例えばアタック部から、次のイベントマークで示されるアタック部までの再生時間を制御できなくなってしまうからである。
【0087】
(エンドマーク)
エンドマークは、波形再生を終了する位置を示すマークである。
【0088】
このマークが示すアドレス位置以降の波形データは波形再生時には無視される。また、このマークよりも後ろに設定されたマークも全て無視される。
(B)基本テンポの設定
波形データによりあらわされる波形の基本テンポを設定する。基本テンポとは、その波形の元々のテンポのことであり、例えば、打楽器によるフレーズをサンプリングした場合にそのフレーズのテンポが130であったならば、基本テンポは130となる。
【0089】
動作モードがSYNCモード、すなわち外部のシーケンサ50(図3参照)から出力されるクロック情報に応じて再生速度を制御するモードに設定されているときに、この設定された基本テンポが参照され、シーケンサ50の自動演奏テンポに同期した再生速度で波形が再生される。
【0090】
基本テンポの設定の操作は以下の通りである。
【0091】
まず、BASIC_TEMPOボタン1618を押して基本テンポの設定の状態とする。すると表示器17にデフォルト値としてのテンポ値が表示される。このテンポ値は、VALUE/ADDRESSダイアル1630を操作することにより変更することができる。そこで、表示器17に表示されたテンポ値を見ながらVALUE/ADDRESSダイアル1630を操作し、所望のテンポ値とする。
【0092】
この操作により設定されたテンポ値は、RAM12内に設定された基本テンポの格納領域TEMPOに格納される。
【0093】
(C)基本ノートナンバの設定
波形データが示す波形の基本ノートナンバを設定する。基本ノートナンバとは、図1に示すMIDI入力端子25から入力されたノートオン情報(発音開始指示情報)に含まれるノートナンバを波形再生に反映させるときの基準となるノートナンバである。
【0094】
例えば基本ノートナンバが60(中央C)に設定されているとき、入力されたノートオン情報に含まれるノートナンバが62であれば、サンプリング時の楽音より62−60=2半音高いピッチで波形再生がなされ、また入力されたノートオン情報に含まれるノートナンバが57であれば、サンプリング時の楽音より57−60=−3半音高い(つまり3半音低い)ピッチで波形再生がなされる。
【0095】
基本ノートナンバの設定の操作は以下の通りである。
【0096】
まず、BASIC_NOTE#ボタン1619を押して基本ノートナンバの設定の状態とする。すると表示器17にデフォルト値としてのノートナンバが表示される。このノートナンバはVALUE/ADDRESSダイアル1630を操作することにより変更することができる。そこで、表示器17に表示されるノートナンバを見ながらVALUE/ADDRESSダイアル1630を操作し、所望のノートナンバとする。
【0097】
この操作により設定されたノートナンバは、RAM12内に設定された基本ノートナンバの格納領域NOTE#に格納される。
【0098】
以上の各種マーク、基本テンポ、基本ノートナンバの設定が終了したら、EXITボタン1620を押すことにより波形編集処理が終了する。なお、必要な情報が設定されていない場合(例えば基本ノートナンバが設定されていない、あるいはエンドマークが設定されていない、というような場合)には、EXITボタン1620を押しても波形編集処理を終了することはできない。
【0099】
図6に示すステップ1004の波形編集処理のステップでは、以上のような波形編集処理が行なわれる。
【0100】
図6に示すステップ1006では、波形再生処理を行なうための初期設定が行なわれる。ここでは、前述したSYNCモードとMANUALモードのうちデフォルトとしてSYNCモードに設定するために、動作モードを示すフラグMODEに‘Sync'が格納され、発音中であるか否かを示すGATEに発音停止中を示す‘0'が格納される。また、図1に示すDSP15の、再生速度が格納されるレジスタtcompに初期値1が格納される。
【0101】
また、図6に示すステップ1008,1010では、それぞれ、EDITボタン1613,RECボタン1611が押されたか否かが判定され、EDITボタン1613が押されるとステップ1004の波形編集処理に戻り、RECボタン1611が押されるとステップ1002のサンプリング処理に戻る。
【0102】
ステップ1012では、MODEボタン1623が押されたか否かが判定され、MODEボタン1623が押されると、ステップ1014において、そのMODEボタン1623のうちのSYNCボタン1621が押されたかあるいはMANUALボタン1622が押されたかに応じて、動作モードを示すフラグMODEに、それぞれ‘Sync'あるいは‘Manual'が格納される。
【0103】
ステップ1016では、波形再生処理が行なわれる。この波形再生処理については図8を参照して説明するが、発音中であるか否かを示すフラグGATEが‘0'に設定されているときはこの波形再生処理のステップ1016をそのまま抜けてステップ1008に戻り、EDITボタン1613,RECボタン1611、およびMODEボタン1623が押されたか否かが繰返し監視される。
【0104】
図8は、図6に1つのステップで示されている波形再生処理ルーチンのフローチャートである。以下、この図8に基づいて、CPU11における波形再生処理ルーチンを説明する。
【0105】
先ずステップ1102では、MIDI入力端子25からMIDI情報が入力されたか否かが判定される。MIDI情報が入力されるとステップ1104に進み、入力されていなければステップ1142に進む。
【0106】
ステップ1142では、発音中か否かを示すフラグGATEが発音中‘1'を示しているか否かが判定され、発音中(GATE=1)のときは、この図8に示す波形再生処理ルーチンを抜けることなくステップ1102に戻って次のMIDI情報の入力が監視され、発音停止中(GATE=0)のときは、この図8に示す波形処理ルーチンを抜けて図6に示すステップ1008に戻り、EDITボタン1613、RECボタン1611、およびMODEボタン1623が押されたか否かが監視される。
【0107】
図8に示す波形再生処理ルーチンのステップ1102においてMIDI情報が入力されたことが判定されると、ステップ1104に進み、その入力されたMIDI情報がノートオン情報であるか否かが判定され、ノートオン情報ではなかったときはステップ1118においてノートオフ情報であるか否かが判定され、ノートオフ情報でもなかったときはステップ1126においてクロック情報(テンポクロック)であるか否かが判定され、クロック情報でもなかったときはステップ1136においてベンダ情報であるか否かが判定される。ベンダ情報でもなかったときはステップ1142に進む。
【0108】
ステップ1104において、今回入力されたMIDI情報がノートオン情報であると判定されると、ステップ1106に進む。ステップ1106では、入力されたノートオン情報に含まれるノートナンバ(「今回のノートナンバ」と称する)とRAM12に格納されている基本ノートナンバNOTE#とに基づいて、
S=POW(2,(今回のノートナンバ − 基本ノートナンバ)/12)
但し、POW(a,b)はaのb乗を表わすの演算を行ない、この演算値SをDSP15のレジスタspeedにセットする。
【0109】
DSP15のレジスタspeedは、波形再生時のピッチを指示する値が格納されるレジスタであり、このレジスタspeedに1より大きい値がセットされると、サンプリング時の音よりもピッチの高い音が発音され、1より小さい値がセットされるとサンプリング時の音より1ピッチの低い音が発音される。1をセットすると、サンプリング時の音のピッチと同じピッチの音が発音される。
【0110】
ステップ1108では、今回のノートナンバが変数ON#にセットされ、ステップ1110では、今回入力されたノートオン情報に含まれるベロシティ情報に基づいて発音の音量が定められその音量を表わす値がDSP15のレジスタlevelにセットされる。このlevelにセットされた値は再生波形の振幅に反映される。
【0111】
ステップ1112では、発音中か否かを示すフラグGATEに発音中であることをあらわす‘1'がセットされているか否かが判定される。
【0112】
GATE=1でないときは、これから新たに発音を開始するために、DSP15のレジスタn_onに1をセットし(ステップ1114)、さらにフラグGATEに‘1'をセットする(ステップ1116)。DSP15のレジスタn_onは、DSP15への発音開始指示用のレジスタであり、そこに‘1'をセットすることにより、DSP15は発音の指示がなされたものと解釈する。DSP15における処理については後述する。
【0113】
ステップ1112においてGATE=1であると判定されたときは、発音は既に開始されていることを意味し、DSP15に対し再度の発音開始指示は行なわない。このステップ1112でGATE=1であると判定される場合というのは、ノートオン情報の入力により発音開始した後で再度ノートオン情報が入力されたことを意味し、具体的には、例えばキーボード40(図2参照)の鍵盤41を構成している多数の鍵のうちのある1つの第1の鍵を押して発音を開始させ、その鍵を離す前にさらに別の第2の鍵を押した場合に相当する。この場合、後に押した第2の鍵に対応するノートオン情報は、ステップ1106,1110におけるDSP15のレジスタspeed,levelへの設定には反映されるため、DSP15の処理(後述する)により発音中の音のピッチや音量は第2の鍵を押した時点からその第2の鍵の押下に対応したものとなり、音の発音自体はそのまま継続される。
【0114】
尚、新たに入力されたノートオン情報のノートナンバはステップ1108において変数ON#にも反映されるが、これに関しては、ステップ1120にて説明する。
【0115】
ステップ1118において今回入力されたMIDI情報がノートオフ情報であると判定されると、ステップ1120に進み、今回入力されたノートオフ情報に含まれるノートナンバが変数ON#に格納されているノートナンバに等しいか否かが判定される。等しい場合には、ステップ1122においてDSP15のレジスタn_offに‘1'がセットされ、ステップ1124においてフラグGATEに‘0'がセットされる。
【0116】
DSP15のレジスタn_offは、DSP15に対し発音停止を指示するためのレジスタであり、DSP15は、レジスタn_offに‘1'がセットされると発音を停止する。DSP15の処理については後述する。
またGATEは、発音中か否かを示すフラグであり、GATEに‘0'がセットされるというのは、発音停止中に移行したことを意味する。
【0117】
尚、ステップ1120において今回入力されたノートオフ情報に含まれるノートナンバと変数ON#に格納されているノートナンバが等しくない場合というのは、例えばキーボード40(図2参照)で、ある第1の鍵を押下して発音を開始させ、その第1の鍵を離鍵しないままでさらに別の第2の鍵を押下し、その後、先に押下した第1の鍵を離鍵した場合であり、この場合には、第1の鍵を離鍵しても発音を継続させる必要があるため、DSP15に対し発音停止の指示は行なわないようにしている。
【0118】
ステップ1126においてMIDI情報がクロック情報(テンポクロック)であると判定されると。ステップ1128に進み、ステップ1128では、動作モードを示すレジスタMODEにSYNCモードをあらわす‘Sync'が格納されているか否かが判定され、SYNCモードではない(MANUALモードである)と判定されたときはクロック情報は無視される。
【0119】
ステップ1128において、クロックと同期した波形再生を行なうSYNCモードであると判定されると、ステップ1130に進み、タイマ14(図1参照)から時間T[msec]を取得する。このタイマ14は、クロック情報(テンポクロック)が前回入力された時点でこの図8に示す波形再生処理ルーチンが実行され、その際におけるステップ1134においてリセットされており、したがってステップ1130で取得された時間T[msec]は、前回のクロック情報の入力時点から今回のクロック情報の入力時点までの時間間隔をあらわしている。
【0120】
ステップ1132では、ステップ1130で取得した時間Tと、RAM12内の基本テンポ格納領域TEMPOに格納されている基本テンポとに基づく、
R=(60000/(T×24))/基本テンポ)
但し、60000[msec]=60[sec]=1[min]
24:4分音符1つあたりのクロック数
である。
の演算が行なわれる。(60000/(T×24))は、クロック情報の入力周期Tに基づいて算出されるテンポをあらわす値であり、ステップ1132では、この算出されたテンポと基本テンポとの比Rが求められてDSP15のレジスタtcompにセットされる。このレジスタtcompに1より大きい値がセットされるとサンプリング時よりも速い速度で再生され、レジスタtcompに1より小さい値がセットされるとサンプリング時よりもゆっくりとした速度で再生される。1がセットされたときはサンプリング時と同じ速度で再生される。ただし、この再生速度は再生音のピッチ(音高)とは無関係であり、再生音のピッチは前述したようにDSP15のレジスタspeedにセットされた値により定められる。
【0121】
図8のステップ1134ではタイマが0にリセットされる。
【0122】
ステップ1136において、今回入力されたMIDI情報がベンダ情報であると判定されると、ステップ1138に進み、このステップ1138では、動作モードを示すレジスタMODEに、例えば、図2に示すキーボード40のピッチベンドレバー42の操作により再生速度を制御する、MANUALモードを表わす‘Manual'が格納されているか否かが判定される。MANUALモードではない(SYNCモードである)と判定されると、ベンダ情報は無視される。
【0123】
ステップ1138においてMANUALモードであると判定されるとステップ1140に進み、ベンダ情報により示されるピッチベンドレバー42の操作量に基づいて波形再生速度が求められ、DSP15のレジスタtcompにセットされる。
【0124】
ここでは、操作量(ベンダ情報)は−x〜+x(x>0)の範囲内で変化し、その場合に、以下の演算により、再生速度がサンプリング時の0.5倍〜2倍の範囲内で変化するように制御される。すなわち、
R=POW(2,操作量/x)
で求められ、この演算量RがDSP15のレジスタtcompにセットされる。
【0125】
このとき、操作量=−xのときR=0.5となり再生速度はサンプリング時の半分の速度となり、操作量=0のときR=1であって再生速度はサンプリング時の速度と同一となり、操作量=+xのときR=2であって再生速度はサンプリング時の速度の2倍の速度となる。
【0126】
次に、DSP15における波形再生動作について説明する。以上の説明でもDSP15のレジスタについても言及してきたが、ここでは、DSP15における波形再生処理で用いられるレジスタについてまとめておく。
【0127】
CPU11で実行されるプログラムにより値がセットされるレジスタとしては以下の(A)〜(E)の5つレジスタがある。
【0128】
(A)読出速度:speed
このレジスタspeedに1よりも大きな値がセットされるとサンプリング時の音高(ピッチ)よりも高い音高(ピッチ)の音が再生され、1よりも小さい値がセットされるとサンプリング時の音高(ピッチ)よりも低い音高(ピッチ)の音が再生される。speedに1がセットされるとサンプリング時の音高と同じ音高の音が再生される。
【0129】
(B)再生速度:tcomp
このレジスタtcompに1よりも大きな値がセットされるとサンプリング時の速度よりも速い速度で再生され、1よりも小さい値がセットされるとサンプリング時の速度よりもゆっくりとした速度で再生され、1がセットされるとサンプリング時の速度と同一の速度で再生される。
【0130】
(C)レベル(音量):level
レジスタlevelにセットされた値に応じて再生波形の振幅が定められる。
【0131】
(D)発音開始:n_on
レジスタn_onに1がセットされると、DSP15は発音開始指示があったものと受け取り、発音を開始する。
【0132】
(E)発音停止:n_off
レジスタn_offに1がセットされると、DSP15は発音停止指示があったものと受け取り、発音を停止する。
【0133】
また、DSP15で実行されるプログラム内で使用されるレジスタとして、上記のもののほか、さらに以下の(F)〜(M)のレジスタがある。
【0134】
(F)アドレスカウンタ:ac
このアドレスカウンタacは、波形データの読出アドレスとして使用される。このアドレスカウンタacは、読出速度speedずつ歩進される。
【0135】
(G)再生時間カウンタ:pc
この再生時間カウンタpcは、波形データのアドレスを指し示す変数であり、波形データ読出しの現在の平均的な進行位置を表わす。この再生時間カウンタpcは、再生速度tcompずつ歩進される。
【0136】
(H)マークカウンタ:i
このマークカウンタiは、再生時間カウンタpcが次に到達すべきマークの番号を示すカウンタである。
【0137】
(I)マークカウンタ:j
このマークカウンタjは、アドレスカウンタacが次に到達すべきマークの番号を示すカウンタである。
【0138】
(J)発音フラグ:gate
この発音フラグgateは、発音開始指示を受けて‘1'にセットされ、発音停止の指示を受けて‘0'にリセットされるフラグである。
【0139】
(K)波形データ一次格納レジスタ:wav
このレジスタwavには、RAM12から読み出された波形データが一時的に格納される。
【0140】
(L)エンベロープ値:env
このエンベロープ値envは、後述のトランケート処理におけるエンベロープ値を示している。
【0141】
(M)トランケート長:pre
このトランケート長preは、後述のトランケート処理を行なう区間の長さをアドレス単位で示している。
【0142】
図9は、DSP15で実行される波形再生処理ルーチンのフローチャートである。このルーチンは、サンプリング周期毎に繰り返し実行される。すなわち本実施形態ではサンプリング周波数=44.1kHzであり、このルーチンは1秒間に44100回実行される。
【0143】
この図9に示す波形再生処理ルーチンが起動されると、先ずステップ2002において、n_onが‘1'か否かが判定される。このn_onは、CPU11により、DSP15に発音開始を指示するにあたり‘1'にセットされる(図8ステップ1114)。n_on=1でないときは、ステップ2016に進む。
n_on=1、すなわち、今回、発音開始が指示されたタイミングである場合は、発音開始のための初期化が行なわれる。すなわち、ステップ2004に進み、再生時間カウンタpc,アドレスカウンタacの双方にMARK[0]が格納される。MARK[0]は波形データの先頭アドレス(波形の先頭に付されたマーク0(図4参照)のアドレス)である。また、マークカウンタiに0,マークカウンタjに1がセットされる。
【0144】
次いで、ステップ2006,2008において、マークのタイプTYPE[i]が次のイベントマーク(あるいはエンドマーク)示すまでiがインクリメントされる。図4に示す例では、マーク1,2のタイプはループであり、マーク3のタイプがイベントであり、したがってi=3にセットされる。
【0145】
さらにステップ2010において、トランケート長preにtcomp×nがセットされる。ここで、nは定数であり、後述の定数kを考慮して適当な値が予め定められている。ステップ2010ではさらに、エンベロープ値envに‘1'がセットされる。
【0146】
さらに、ステップ2012では発音フラグgateに‘1'がセットされ、以後発音状態となる。これらの処理が終了すると、ステップ2014においてn_onが‘0'に戻される。
【0147】
ステップ2016では、n_offが‘1'か否かが判定される。このn_offは、CPU11により、DSP15に発音停止を指示するにあたり‘1'にセットされる(図8ステップ1122)。n_off=1であるときはステップ2022に進む。
【0148】
ステップ2016でn_off=1と判定されると、ステップ2108に進み、gateが‘0'リセットされて発音停止状態となり、n_offが‘0'に戻される。
【0149】
ステップ2022では、RAM12のアドレスカウンタacが指し示すアドレスから波形データWAVE[ac]が読み出されてwavに格納される。
【0150】
ステップ2024では、再生時間カウンタpcがMARK[i]よりもpreだけ手前のアドレスにまで進んだか否かが判定される。ここで、iはステップ2006,2008で次のイベントマーク(あるいはエンドマーク)のマーク番号までインクリメントされているため、MARK[i]は、次のイベントマーク(あるいはエンドマーク)のアドレスをあらわしており、したがってステップ2024は、再生時間カウンタpcが次のイベントマーク(あるいはエンドマーク)のアドレス(次のイベントマーク(あるいはエンドマーク)を発音すべきタイミング)よりもpreだけ前のアドレスにまで近づいたか否かを判定するステップである。
【0151】
再生時間カウンタpcが、
pc≧MARK[i]−pre
を満足するアドレスの場合、ステップ2026に進み、エンベロープ値envがenv×kに変更される。ここで、kは減衰率をあらわす定数であって、0<k<1の範囲内であらかじめその値が定められている。
【0152】
上述の定数n(ステップ2010参照)と定数k(ステップ2026参照)との関係は次のとおりである。すなわち定数nはサンプリング周期を単位としてトランケート処理を行なう時間間隔をあらわす定数であり、実際のトランケート処理はほぼnサンプリング周期の間に行なわれることになる。また、定数kはサンプリング周期毎のレベルの減衰率をあらわす定数であり、定数kとして小さい値(但し0<k<1の範囲内)を設定するほど、音が急速に減衰されることになる。
【0153】
ステップ2026において、エンベロープ値envがenv×kに変更された後、あるいはステップ2024において再生時間カウンタpcがMARK[i]−preよりもさらに手前にあると判定されたときは、ステップ2028に進む。このステップ2028では、
wav×level×env×gate
が演算され、この演算値がD/A変換器23(図1参照)に出力される。
【0154】
ここで、wavは、ステップ2022で読み出した、アドレスカウンタacが示すアドレスの波形データWAVE[ac]であり、levelは、図8に示す、CPUで実行される波形再生処理のステップ1110で設定された、ベロシティ情報に基づく音量に相当する値であり、envは、再生時間カウンタpcがイベントマーク(あるいはエンドマーク)に近づいたときのトランケート処理の減衰率をあらわす値であり、gateは発音開始指示があったときにステップ2012で‘1'がセットされ発音停止指示があったときにステップ2018で‘0'にリセットされる、音を出力するか否かを定めるスイッチの役割りをなすものである。
【0155】
ステップ2030,2032では、それぞれ、再生時間カウンタpc,アドレスカウンタacがそれぞれtcomp,speedだけ更新される。ここで、tcompは、図8に示す、CPUで実行される波形再生処理のステップ1132あるいはステップ1140において、クロック情報(テンポクロック)あるいはベンダ情報に応じて設定される、波形再生速度を定める値である。また、speedは、やはり図8に示すCPUの波形再生処理ルーチンのステップ1106で設定される、再生波形の音高(ピッチ)を定める値である。
【0156】
以上のようにして、アドレス1つ分の波形データの出力が行なわれると、次にDSP15では、ステップ2034の読出アドレス制御ルーチンが実行される。
【0157】
図10は、図9に1つのステップで示す読出アドレス制御ルーチンのフローチャートである。
【0158】
ここでは先ずステップ2102において、再生時間カウンタpcが、pc≧MARK[i]を満足するか否かが判定される。MARK[i]は、前述のとおり、図9に示すフローのステップ2006,2008でイベントマーク(あるいはエンドマーク)のアドレスを指すように設定されており、したがって、このステップ2102では、再生時間カウンタpcがイベントマーク(あるいはエンドマーク)のアドレスに達したか否か(そのイベントを発音すべきタイミング(あるいは発音を停止すべきタイミング)に達したか否か)が判定される。
【0159】
ステップ2102において再生時間カウンタpcがイベントマーク(あるいはエンドマーク)に到達した旨判定されると、ステップ2104に進み、今回到達したマークがイベントマークであるかエンドマークであるかが判定される。
【0160】
ステップ2104において再生時間カウンタpcがイベントマークに達したと判定されると、ステップ2106に進み、アドレスカウンタacが強制的に、すなわち、それまでのアドレスカウンタacの値が何であろうと、そのイベントマークのアドレスMARK[i]に変更される。これにより、再生時間カウンタpcがイベントマークに達するごとに再生時間カウンタpcとアドレスカウンタacとの時間ずれ(アドレス軸上のずれ)が調整される。
【0161】
ステップ2108では、アドレスカウンタacが次に到達すべきマークの番号を示すマークカウンタjがi+1に更新され、ステップ2110,2112において、マークカウンタiが次のイベントマーク(あるいはエンドマーク)の番号に更新される。ステップ2114では、次のトランケート処理の準備のためにpreにtcomp×nが格納され、envに初期値‘1'が設定される。preにtcomp×nを設定し直すのは、発音中にテンポが変更され、あるいはピッチベンドレバー42が操作されて、tcompが変更される可能性があるからである。
【0162】
また、ステップ2104において再生時間カウンタpcがエンドマークに達したと判定されると、ステップ2116に進み、gateに発音停止中を示す‘0'が格納され、再生時間カウンタpcにMARK[i−1]が格納される。pcにMARK[i−1]を格納するのは、pcが今回発音を行なった波形データが格納されているRAMのアドレス範囲内から外に食み出さないようにするための措置であり、pcにエンドマークのアドレスMARK[i]を設定するのではなく、それよりも1つ手前のマークのアドレスMARK[i−1]を設定するのは、もしpcにエンドマークのアドレスMARK[i]を設定すると、pcにMARK[i]が設定された後で、アドレスカウンタacがMARK[i−1]に達すると、後述するステップ2136において、アドレスカウンタacにエンドマークのアドレス(ここではMARK[j+1])が設定され、以後、アドレスカウンタacは、エンドマークのアドレスを越えて先に進んでしまう(今回の波形データの格納アドレス範囲から外れてしまう)からである。
【0163】
ステップ2120では、アドレスカウンタacが次のマークのアドレスMARK[j]に到達したか否かが判定される。次のマークのアドレスMARK[j]に達した旨判定されるとステップ2122に進み、今回到達したマークがループマークであるか否かが判定される。ステップ2122において、今回到達したマークがループマークではない、すなわちイベントマーク(あるいはエンドマーク)であると判定されるとステップ2124に進み、アドレスカウンタacが1つ手前のマークのアドレスMARK[j−1]に戻される。このステップ2124に進む場合というのは、アドレスカウンタacが再生時間カウンタpcよりもアドレス軸上で先行している状態において、そのアドレスカウンタacが次のイベントマーク(あるいはエンドマーク)に到達した場合であり、再生時間カウンタpcがイベントマーク(あるいはエンドマーク)に到達する前にイベントの発音が行なわれないよう(あるいは発音が停止しないよう)、ここではアドレスカウンタacを1つ手前のマークのアドレスに戻し、そこから再び波形の読み出しを行なわせるようにしているのである。
【0164】
ステップ2122において、アドレスカウンタacが今回到達したマークがループマークであると判定されると、ステップ2126に進み、再生時間カウンタpcがpc<MARK[j]か否か、すなわちアドレスカウンタacよりも遅れているか否かが判定される。再生時間カウンタpcがアドレスカウンタacよりも遅れている(アドレスカウンタacが再生時間カウンタpcよりも進んでいる)ときは、ステップ2128に進み、1つ手前のマークがイベントマークであるか否かが判定される。1つ手前のマークがイベントマークではない(1つ手前のマークであるから当然に最終のマーク(エンドマーク)でもなく、したがってループマークである)ときは、ステップ2130において、アドレスカウンタacが1つ前のマークのアドレスMARK[j−1]に戻される。こうすることにより、以後、再びそのアドレスMARK[j−1]から順に波形データが読み出されることになる。
【0165】
このステップ2130に進む状況を図4を参照して例示的に説明すると以下のようになる。すなわち、例えばアドレスカウンタacがマーク5に到達したタイミング(ステップ2120で判定される)で、再生時間カウンタpcがマーク4とマーク5との間にあったとき(ステップ2126で判定される)は、そのマーク4はループマークであるので、ステップ2130に進み、アドレスカウンタacが、マーク5のアドレスからマーク4のアドレスに戻される。これにより、マーク4とマーク5との間が繰り返し読み出しされることになる。
【0166】
ステップ2128において1つ手前のマークがイベントマークであったときは、前述したようにイベントマークと次のマーク(ループマーク)との間は繰返し読出しは禁止されているため、ステップ2132に進み、アドレスカウンタacが次に到達すべきマークの番号jがj+1に更新される。すなわちアドレスカウンタacは戻らずにそのまま先へ進むことになる。
【0167】
このステップ2132に進む状況を図4を参照して例示的に説明すると、例えばアドレスカウンタacがマーク4に到達したタイミング(ステップ2120で判定される)で、再生時間カウンタpcが、それよりも遅れたマーク3とマーク4との間にあったとき(ステップ2126で判定される)は、ステップ2128において、アドレスカウンタacが到達したマーク4よりも1つ手前のマーク3のタイプが判定され、そのマーク3のタイプがイベントであり、マーク3とマーク4との間の波形の繰返し読み出しを避けるため、ステップ2132に進み、アドレスカウンタacが次に到達すべきマークの番号jがj=5に更新される。アドレスカウンタacはマーク4を越えてさらに先に進むことになる。
【0168】
ステップ2126において、PC<MARK[j]ではない。すなわち、アドレスカウンタacよりも再生時間カウンタpcの方が進んでいる(同時を含む)と判定されると、ステップ2134に進み、再生時間カウンタpcがさらに1つ先のマークのアドレスMARK[j+1]よりもさらに進んでいるか否かが判定される。例えば図4を参照し、ステップ2134では、アドレスカウンタacがマーク5に達したタイミング(ステップ2120で判定される)で、再生時間カウンタpcがマーク6よりもさらに先に進んでいるか、それともマーク5〜マーク6の間にあるかが判定される。
【0169】
pc≧MARK[j+1]である。すなわち、上記の例においてアドレスカウンタacがマーク5に達したときに再生時間カウンタがマーク6よりもさらに進んでいたときは、ステップ2136に進み、アドレスカウンタacに1つ先のマークのアドレスMARK[j+1]が設定される。図4を参照して説明している例では、アドレスカウンタacがマーク5に到達したタイミングで再生時間間カウンタpcがマーク6よりもさらに先に進んでいたときは、アドレスカウンタacにマーク6のアドレスが設定されることになる。すなわち、この場合、再生時間カウンタpcがかなり先(マーク6よりも先)に進んでいたという状況からマーク5とマーク6との間が読み飛ばされることになる。
【0170】
ステップ2138では、アドレスカウンタacがジャンプしたことに対応し、アドレスカウンタacが次に到達すべきマークの番号jがj+2に更新される。
【0171】
ステップ2134において、pc≧MARK[j+1]ではない、すなわち、上記の例においてアドレスカウンタacがマーク5に達した時点で再生時間カウンタpcがマーク5とマーク6との間に存在していたときは、アドレスカウンタacはそのまま進めればよく、ステップ2140において、アドレスカウンタacが次に到達すべきマークの番号jがj+1に更新され、アドレスカウンタacの飛びや戻りは行なわれない。
【0172】
図9,図10に示すDSPにおける発音処理では、以上のようにして、ノートオン情報に含まれるノートナンバに応じた音高(ピッチ)の音が、クロック情報(テンポクロック)あるいはベンダ情報に応じた再生速度で再生される。
【0173】
【発明の効果】
以上説明したように、本発明によれば、再生速度と再生ピッチとの発音が制御され、しかもアタック部や子音部等、波形の変化の激しい部分が消失したり損なわれたりすることのない音品質の再生波形を得ることができる。
【図面の簡単な説明】
【図1】本発明の波形再生装置の構成図である。
【図2】図1に示す波形再生装置に接続されるキーボードの概略構成図である。
【図3】図1に示す波形再生装置に接続することが可能なシーケンサと、その接続の態様を示す図である。
【図4】図1に示す波形再生装置のRAMに格納される波形の一例を示す図である。
【図5】図1に示す操作子群および表示器を備えた操作表示パネルを示す図である。
【図6】図1に示すは波形再生装置のCPUで実行されるメインルーチンのフローチャートである。
【図7】ループマークの設定方法の説明図であり、図7(A)は良い例、図7(b)は悪い例である。
【図8】図6に1つのステップで示されている波形再生処理ルーチンのフローチャートである。
【図9】DSPで実行される波形再生処理ルーチンのフローチャートである。
【図10】図9に1つのステップで示す読出アドレス制御ルーチンのフローチャートである。
【符号の説明】
10 波形再生装置
10A,10B 音源
11 CPU
12 RAM
13 ROM
14 タイマ
15 DSP
16 操作子群
17 表示器
18 MIDI入力インターフェース
19 バス
20 操作表示パネル
21 波形入力端子
22 A/D変換器
23 D/A変換器
24 波形出力端子
25 MIDI端子
30 サウンドシステム
31 アンプ
32 スピーカ
40 キーボード
41 鍵盤
42 ピッチベンドレバー
50 シーケンサ
1611 RECボタン
1612 START/STOPボタン
1613 EDITボタン
1614 ADDRESSボタン
1615 EVENT_MARKボタン
1616 LOOP_MARKボタン
1617 END_MARKボタン
1618 BASIC_TEMPOボタン
1619 BASIC_NOTE#ボタン
1620 EXITボタン
1621 SYNCボタン
1622 MANUALボタン
1623 MODEボタン
1630 VALUE/ADDRESSダイアル
1711 波形
1712 アドレスマーク
Claims (5)
- 音の波形を表わす波形データを記憶するとともに、該波形上の、読み飛ばし及び繰り返しの双方が禁止された特定区間の先頭に設定された特定ポイントと、読み飛ばしおよび繰り返しの双方が許容されたループ区間の先頭に設定されたループポイントとを含む複数のポイントを表わすポイント情報を記憶する記憶手段と、
再生波形の音高を指定する音高情報を取得する音高情報取得手段と、
第1の歩進速度で歩進する、前記波形データの表わす波形上の進行位置を表わす参照アドレスを生成する参照アドレス生成手段と、
前記波形データの表わす波形上の読出位置を表わす読出アドレスであって、前記音高情報取得手段で取得した音高情報に応じた第2の歩進速度で歩進するとともに、書換自在であって、書換えを受けたときは書き換え後の値から該第2の歩進速度で歩進する読出アドレスを生成する読出アドレス生成手段と、
前記参照アドレスが前記特定ポイントに達したときに前記読出アドレスを該特定ポイントを示すアドレスに書き換え、
前記読出アドレスが前記特定ポイントに達したときに前記読出アドレスを該特定ポイントよりも一つ手前のポイントを示すアドレスに書き換え、
前記読出アドレスが前記ループポイントに達したときに、前記参照アドレスが該ループポイントよりも一つ先のポイントよりさらに先にあったときは、該読出アドレスを該参照アドレスの直前のポイントを示すアドレスに書き換え、
前記読出アドレスが前記ループポイントに達したときに、前記参照アドレスが該読出しアドレスよりも遅れていて、かつ該ループポイントよりも1つ前のポイントもループポイントであったときは、該読出アドレスを該1つ前のループポイントを示すアドレスに書き換える読出アドレス書換手段と、
順次更新された読出アドレスの波形データを順次再生して再生波形信号を生成する波形再生手段と、
でなる波形再生装置。 - 前記波形再生手段は、前記記憶手段から、前記読出アドレスが示す波形位置の近傍の波形データを読み出して、該読出アドレスの波形信号を再生するものであることを特徴とする請求項1記載の波形再生装置。
- 前記参照アドレス生成手段が、前記波形データの再生位置の歩進速度を表す波形再生速度情報を取得する波形再生速度情報取得手段を備え、前記参照アドレスを、該波形再生速度情報取得手段で得られた波形再生速度情報に対応した歩進速度で歩進させるものであることを特徴とする請求項1又は2記載の波形再生装置。
- 前記波形再生速度情報取得手段が、前記波形再生速度情報を、波形再生中における該波形再生速度情報の変更を許容して取得するものであることを特徴とする請求項3記載の波形再生装置。
- 前記音高情報取得手段が、前記音高情報を、波形再生中における該音高情報の変更を許容して取得するものであることを特徴とする請求項1から4のうちいずれか1項記載の波形再生装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22302398A JP4070315B2 (ja) | 1998-08-06 | 1998-08-06 | 波形再生装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22302398A JP4070315B2 (ja) | 1998-08-06 | 1998-08-06 | 波形再生装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000056771A JP2000056771A (ja) | 2000-02-25 |
JP4070315B2 true JP4070315B2 (ja) | 2008-04-02 |
Family
ID=16791635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP22302398A Expired - Fee Related JP4070315B2 (ja) | 1998-08-06 | 1998-08-06 | 波形再生装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4070315B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4612254B2 (ja) * | 2001-09-28 | 2011-01-12 | ローランド株式会社 | 波形再生装置 |
JP4622908B2 (ja) * | 2006-03-28 | 2011-02-02 | ヤマハ株式会社 | 信号処理装置 |
JP6019803B2 (ja) * | 2012-06-26 | 2016-11-02 | ヤマハ株式会社 | 自動演奏装置及びプログラム |
JP6011064B2 (ja) * | 2012-06-26 | 2016-10-19 | ヤマハ株式会社 | 自動演奏装置及びプログラム |
-
1998
- 1998-08-06 JP JP22302398A patent/JP4070315B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000056771A (ja) | 2000-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6252088B2 (ja) | 波形再生を行うためのプログラム、波形再生装置及び方法 | |
US6177624B1 (en) | Arrangement apparatus by modification of music data | |
JP4070315B2 (ja) | 波形再生装置 | |
JP4040181B2 (ja) | 波形再生装置 | |
JPH11305772A (ja) | 電子楽器 | |
JP4552769B2 (ja) | 楽音波形合成装置 | |
JP4802947B2 (ja) | 奏法決定装置及びプログラム | |
JP4270102B2 (ja) | 自動演奏装置及びプログラム | |
JP3047879B2 (ja) | 演奏ガイド装置、演奏ガイド用演奏データ作成装置および記憶媒体 | |
JP2660462B2 (ja) | 自動演奏装置 | |
JP2674452B2 (ja) | 楽曲再生装置 | |
JP3887957B2 (ja) | カラオケ装置 | |
JP2000221967A (ja) | 電子楽器等における設定制御装置 | |
US7692088B2 (en) | Musical sound waveform synthesizer | |
JP4835434B2 (ja) | 演奏パターン再生装置及びそのコンピュータプログラム | |
JP2770767B2 (ja) | 自動演奏装置 | |
JP4685226B2 (ja) | 波形再生用自動演奏装置 | |
JPH07191669A (ja) | 電子楽器 | |
JP2000056761A (ja) | 波形再生装置 | |
JP3460562B2 (ja) | 入力・編集装置および記憶媒体 | |
JP3637782B2 (ja) | データ生成装置と記録媒体 | |
JP3147111B2 (ja) | 自動演奏記録再生装置 | |
JP3758041B2 (ja) | 楽音制御データ発生装置 | |
JP3577852B2 (ja) | 自動演奏装置 | |
JPH08129394A (ja) | カラオケ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050804 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070502 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070515 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070712 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070814 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071012 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20071130 |
|
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: 20080108 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080115 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110125 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110125 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120125 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120125 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130125 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140125 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |