JP4040181B2 - 波形再生装置 - Google Patents

波形再生装置 Download PDF

Info

Publication number
JP4040181B2
JP4040181B2 JP22302498A JP22302498A JP4040181B2 JP 4040181 B2 JP4040181 B2 JP 4040181B2 JP 22302498 A JP22302498 A JP 22302498A JP 22302498 A JP22302498 A JP 22302498A JP 4040181 B2 JP4040181 B2 JP 4040181B2
Authority
JP
Japan
Prior art keywords
waveform
information
mark
address
section
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
JP22302498A
Other languages
English (en)
Other versions
JP2000056772A (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.)
Roland Corp
Original Assignee
Roland 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 Roland Corp filed Critical Roland Corp
Priority to JP22302498A priority Critical patent/JP4040181B2/ja
Publication of JP2000056772A publication Critical patent/JP2000056772A/ja
Application granted granted Critical
Publication of JP4040181B2 publication Critical patent/JP4040181B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、記憶された波形データを読み出して波形を再生する波形再生装置に関する。
【0002】
【従来の技術】
音をあらわす波形を記憶しておいてその波形を読み出して再生波形を得るにあたり、その読出し速度を変えると、例えば磁気記録テープを早送りしながら音声を再生したときのようにその再生波形のピッチ(音高)が変化する。従来、再生波形のピッチは波形記録時のピッチのまま変化させずに、この読出し速度(波形再生速度)を変化させようとする技術が知られている。
【0003】
例えばそのような技術の1つとして、メモリに格納された波形の読出速度を変化させることによって波形再生時間を変化させ、その波形再生時間の変化に伴って変化した再生波形のピッチをピッチシフタによって元のピッチに戻す方式が知られている。
【0004】
この方式は波形再生時間をリアルタイムで制御することが可能であるが、ピッチシフタのピッチ変換能力に限界があり、再生時間の制御範囲が狭く制限される。例えばメモリからの波形読出速度を遅くして長い再生時間を得ようとすると、ピッチシフタでは元のピッチを再現することが難しい。さらに、この方法の場合、再生時間を変化させることによってピッチシフタに入力される波形のピッチも変化してしまうため、再生時間をリアルタイムで変化させると、その変化に伴って、ピッチシフタによるピッチシフト量もリアルタイムで変化させる必要がある。
【0005】
【発明が解決しようとする課題】
従来より、上記のように、再生速度を変化させてもピッチが変化しないようにするという観点の技術が知られているが、近年、再生速度を自在に変更するとともに、ピッチも自在に変更された再生波形を得ることが要請されている。
【0006】
例えば上記の技術においてメモリからの読出速度を変化させることにより再生速度を変化させ、さらにピッチシフタでピッチを元に戻すのではなく、あるいはピッチを元に戻すことも含めて自在に変更するように構成することが考えられる。
【0007】
しかしながら、上述の技術の場合、読出速度(再生速度)が変化するとそれと同時にピッチも変化してしまい、すなわち読出速度(再生速度)と再生ピッチが互いに関連してしまっており、読出速度(再生速度)と再生ピッチとの双方を自在に制御することが極めて難しいという問題がある。
【0008】
本発明は、上記事情に鑑み、再生速度と再生ピッチとの双方を効果的に制御することができ、しかもそれらの制御を簡単な構成で実現することのできる波形再生装置を提供することを目的とする。
【0009】
【課題を解決するための手段】
上記目的を達成する本発明の波形再生装置は、
音の波形をあらわす波形データとその波形データが時間的に区切られてなる複数の区間をあらわす区間情報とを記憶する記憶手段と、
再生波形の音高を指示する音高情報を取得する音高情報取得手段と、
波形再生速度を指示する再生速度情報を、音高情報に対応した音高の再生波形を得るための波形読出速度とは独立に取得する速度情報取得手段と、
記憶手段に記憶された波形データの読出アドレスの平均的な進行速度を、上記区間情報により示される区間の中から波形データを繰り返して読み出す繰返読出区間あるいは波形データの読出しを省略して飛び越す飛越区間を設定することにより速度情報取得手段で得られた再生速度情報があらわす波形再生速度に調整しながら、記憶手段に記憶された波形データを、音高情報取得手段で得られた音高情報に対応する波形読出速度で読み出す波形読出手段とを備えたことを特徴とする。
【0010】
本発明の波形再生装置は、記憶手段に、波形データのみでなく、上記区間情報を記憶しておき、区間情報に基づいて繰返読出区間あるいは飛越区間を設定することにより、音高情報に基づく波形再生速度と再生速度情報に基づく波形再生速度との調和を図るものであり、本発明によれば、このような簡単な構成により、再生波形の音高(再生ピッチ)と再生速度との双方が効果的に制御される。
【0011】
ここで、上記本発明の波形再生装置において、上記波形読出手段は、速度情報取得手段により得られた再生速度情報があらわす波形再生速度で変化する参照アドレスを生成し、記憶手段に記憶された波形データを、音高情報に対応した音高の再生波形を得るための波形読出速度で、かつ、1つの区間の波形データの読出しが終了した時点で参照アドレスを参照してその時点での参照アドレスに応じた区間の波形データの読出しを開始する読出方式で、読み出すことにより、繰返読出区間あるいは飛越区間を設定するものであってもよい。
【0012】
このような参照アドレスを生成し上記読出方式を採用することにより、繰返読出区間あるいは飛越区間を設定することができる。
【0013】
また、上記本発明の波形再生装置において、上記音高情報取得手段は、音高情報を、波形再生中における音高情報の変更を許容して取得するものであってもよく、また、上記速度情報取得手段は、再生速度情報を、波形再生中における再生速度情報の変更を許容して取得するものであってもよい。
【0014】
本発明の波形再生装置は、波形再生中に再生波形の音高(ピッチ)や再生速度の変化が指示されてもその指示に追随して音高(ピッチ)や再生速度を互いに独立して変更する構成にも適合する。
【0015】
ここで、上記本発明の波形再生装置において、音高情報取得手段は、音高情報を、MIDI情報より取得するものであってもよく、またこれと同様に、速度情報取得手段は、再生速度情報を、MIDI情報より取得するものであってもよい。
【0016】
また、上記本発明の波形再生装置において、上記波形読出手段は、音高情報取得手段で得られた音高情報に対応した音高の再生波形を得るための波形再生速度で変化する読出アドレスと、速度情報取得手段により得られた再生速度情報があらわす波形再生速度で変化する参照アドレスを生成し、記憶手段に記憶された波形データを読出アドレスから読み出すとともに読出アドレスが区間情報により示される区間の区切り点に達した時点における参照アドレスに応じて次の読出アドレスを設定することにより、繰返読出区間あるいは飛越区間を設定するものであってもよい。
【0017】
このような読出アドレスと参照アドレスを生成し、それらのアドレスを比較することにより、繰返読出区間あるいは飛越区間を設定することができる。
【0018】
ここで、上記読出アドレスおよび参照アドレスを生成する構成を採用した場合において、さらに、上記記憶手段が、波形データと区間情報に加え、さらに区間情報により示される区間のうちの一部の区間について、その一部の区間が繰返読出区間および飛越区間のいずれにも設定されることが禁止された特定区間であることをあらわす特定区間情報を記憶するものであり、
波形読出手段が、読出アドレスが区間情報により示される区間の区切り点に達した時点における参照アドレスに応じるとともに、特定区間情報により示される特定区間の存在を考慮して、次の読出アドレスを設定するものであることが好ましい。
【0019】
音の性質にもよるが、例えばアタック部分が存在する楽音や子音と母音が混在する音声の場合等、そのアタック部分や子音の部分が繰り返されたり、飛び越されたりすると楽音や音声の性質が変わってしまうおそれがある。このような楽音や音声の場合、上記の特定区間を設定し、その特定区間は1回のみ再生されるようにすることで、上記のような不都合の発生が回避される。
【0020】
さらに、そのような特定区間を設定した構成において、上記波形読出手段が、参照アドレスが特定区間の開始点に達した時点で、読出アドレスを、その読出アドレスが1つの区間の途中にあっても、その特定区間の開始点に設定するものであることが好ましい。
【0021】
こうすることにより、その特定区間、例えばアタック部や子音部は、速度情報取得手段で得られた再生速度情報により設定された波形再生速度に適合したタイミングで再生される。
【0022】
さらに、上記の、特定区間を設定した構成において、参照アドレスが特定区間の開始点よりも手前の所定点に達した時点以降その開始点に達する時点までの間、順次に変化する読出アドレスから順次に読み出した波形データをその開始点に近づくにつれて順次に大きな減衰率で減衰させるトランケート手段を備えることが好ましい。
【0023】
上記特定区間、例えばアタック部や子音部の再生を所定のタイミングで再生するには、参照アドレスが特定区間の開始点に達した時点で読出アドレスがどこにあってもその読出アドレスをその参照アドレス、すなわちその特定区間の開始点に設定する必要があるが、そうすると、読出アドレスが飛ぶことにより波形のつながりが悪くノイズ音が混入する恐れがある。そこで、上記トランケート手段を備え、参照アドレスが、特定区間の開始点に達する前に再生波形をトランケートする(減衰させる)ことにより、ノイズ音の発生が抑えられ、一層高音質の再生波形が得られる。
【0024】
さらに、上記本発明の波形再生装置において、上記記憶手段は、音の波形をあらわす波形データと区間情報とに加え、さらに、その波形のテンポをあらわすテンポ情報を記憶するものであり、上記速度情報取得手段は、再生波形のテンポを指定するテンポ情報を、記憶手段に記憶されたテンポ情報とは独立に取得するテンポ取得手段、および、記憶手段に記憶されたテンポ情報とテンポ取得手段により取得されたテンポ情報とに基づいて、波形再生速度を指示する再生速度情報を求める再生速度演算手段からなるものであってもよい。
【0025】
このように、直接に再生速度情報を入力することに代え、テンポ情報を入力し、記憶しておいたテンポと比較することにより再生速度を求めてもよい。
【0026】
【発明の実施の形態】
以下、本発明の実施形態について説明する。
【0027】
図1は、本発明の波形再生装置の構成図である。
【0028】
この図1に示す波形再生装置10には、CPU11,RAM12,ROM13,タイマ14,DSP15,操作子群16,表示器17,およびMIDI入力インターフェース18が備えられており、それらはバス19を介して互いに接続されている。
【0029】
CPU11は、プログラムを実行する中央演算装置であり、DSP15の制御を含む、この波形再生装置10の全体の制御を司っている。
【0030】
RAM12は、読み書き自在なメモリであり、波形データや、CPU11で実行される各種プログラムの変数等が格納される。
【0031】
ROM13は、書込み不能な読出し専用メモリであり、CPU11で実行される各種プログラムが記憶されている。
【0032】
タイマ14は、時間を計測するツールであり、CPU11で実行されるプログラム中でリセットされ、また、計時された時間がプログラムにより読み取られる。
【0033】
DSP(ディジタルシグナルプロセッサ)15には、CPU11で実行されるプログラムとは別に、そのDSP15により実行されるプログラムが格納されており、DSP15では、そのDSP15で実行されるプログラムに応じた各種のディジタル信号処理が行なわれる。この波形再生装置10においては、このDSP15は、波形入力端子21から入力されA/D変換器22によりサンプリング処理されたディジタルの波形データをRAM12に格納したり、RAM12から読み出された波形データを取り込んでその取り込んだ波形データに必要な信号処理を行ない、D/A変換器23を経由して波形出力端子24から外部に再生波形を送り出す役割りを担っている。
【0034】
出力端子24から送り出された再生波形は、アンプ31およびスピーカ32からなるサウンドシステム30を経由して空間に音として出力される。
【0035】
操作子群16は、詳細は後述するが、各種の操作子を備え、この波形再生装置10に各種の指示やデータを入力するためのものである。
【0036】
表示器17は、波形編集処理において波形を表示したり、各種パラメータの設定値を表示するなど、この波形再生装置10において必要となる各種の表示を行なうためのものである。
【0037】
MIDI入力インターフェース18は、MIDI入力端子25から入力されたMIDI情報を受けとってこの波形再生装置10の内部に取り込む役割りを担っている。MIDI入力端子25には、演奏用のキーボードやシーケンサから出力されたMIDI情報が取り込まれる。
【0038】
図2は、図1に示す波形再生装置10に接続されるキーボードの概略構成図である。
【0039】
このキーボード40は、演奏操作に応じたMIDI情報を送出するMIDIキーボードであり、多数の白鍵および多数の黒鍵からなる鍵盤41、およびピッチベンドレバー42を備えている。このキーボード40を図1に示す波形再生装置10のMIDI入力端子25に接続し、鍵の押鍵、離鍵操作やピッチベンドレバー42の操作で波形再生をコントロールすることができる。すなわち、鍵盤41の鍵が押されると、その押された鍵に応じたノートオン情報(押された鍵に対応するノートナンバ、およびその押鍵の速度を示すベロシティの各情報を含む)を出力する。押された鍵が離されると、ノートオフ情報(離された鍵を示すノートナンバの情報、および離されたことを示す情報を含む)が出力される。
【0040】
また、ピッチベンドレバー42が操作されると、その操作の変位に応じたコントロール値を示すベンダ情報が送出される。このベンダ情報は0を中心として−xから+xまで(x>0)のコントロール値を示すものである。
【0041】
図1に示す波形再生装置10では、MIDI入力端子25からノートオン情報が入力されるとRAM12に格納されている波形データに基づく、その入力されたノートオン情報に応じた音高(ピッチ)の発音が開始され、ノートオフ情報が入力されると発音が停止する。また、ベンダ情報が入力されるとその入力されたベンダ情報に応じて発音中の波形の再生速度が変更される。
【0042】
図3は、図1に示す波形再生装置10に接続することが可能なシーケンサと、その接続の態様を示す図である。
【0043】
シーケンサ50は、そのシーケンサ50内に記憶している演奏情報に基づいてMIDI情報を送出するものであり、その送出されたMIDI情報は、音源10A,10Bなどに入力され、自動演奏が行なわれる。
【0044】
このシーケンサ50からのMIDI情報を図1に示す波形再生装置10のMIDI入力端子25に供給することにより、その供給されたMIDI情報に基づいて波形再生をコントロールすることができる。このシーケンサ50からは、そのシーケンサ50に記憶されている演奏情報に基づいて、自動演奏の進行に伴ってノートオン情報(ノートナンバおよびベロシティの各情報を含む)や、ノートオフ情報(ノートナンバおよびノートオフであることの各情報を含む)が出力され、さらに、自動演奏のテンポに応じた周期でクロック情報(テンポクロック)が出力される。
【0045】
このクロック情報は、自動演奏のテンポをtとしたとき、以下の周期T0で出力される。
【0046】
周期T0=60000/(t×24) [msec]
但し、60000[msec]=60[sec]=1[min]
24:4分音符1つあたりのクロック数
である。
【0047】
図3には、シーケンサ50と図1に示す波形再生装置10を含む2つの音源10A,10Bとの接続態様が示されているが、ここではシーケンサ50は、2パート分の演奏情報に基づいて各パートに対応する2つの音源10A,10Bにそれぞれ独立してMIDI情報を出力するものとする。
【0048】
ここで、2つの音源10A,10Bのうちの一方の音源10Aとして図1に示す波形再生装置10を用い、他方の音源10Bとして従来の通常の音源を用いると、自動演奏の際、演奏テンポに応じたタイミングでノートオン情報、ノートオフ情報が出力され、波形再生装置10を含む各音源10A,10Bを発音させるとともに、波形再生装置10で発音される波形の再生速度はそのシーケンサ50から出力されるクロック情報により制御される。
【0049】
したがって、この場合、音源10A(波形再生装置10)では、通常の音源10Bによる自動演奏のテンポに合わせた波形再生が実現される。
【0050】
また、図1に示す波形再生装置10を2台用意し、図3に示す2つの音源10A,10Bの双方を図1に示す波形再生装置10とした場合、それぞれの音源(波形再生装置)10A,10Bには、シーケンサ50から同一のクロック情報が同一のタイミングで順次供給され、それぞれの音源(波形再生装置)10A,10Bでは、共通の演奏テンポに従った、音楽的に同期した波形再生が行なわれることになる。
【0051】
図4は、図1に示す波形再生装置10のRAM12に格納される波形の一例を示す図である。
【0052】
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つのループマークが設定される。
【0053】
エンドマークは、その波形の最終アドレスであることをあらわすマークであり、仮にエンドマークが付されたアドレスよりも後のアドレスに他のマークが付されていてもそのマークは一切無視される。
【0054】
RAM12には、波形データのみでなく、以上のような、マークのアドレスやマークのタイプが記憶される。RAM12には、これら各種のデータの記憶のために、以下のような格納領域が確保されている。
【0055】
(A)波形データの格納領域
WAVE[i],iはアドレスを示す。
【0056】
(B)波形データに付されたマークのアドレスおよびマークのタイプの格納領域
MARK[i]:i番目のマークのアドレス
TYPE[i]:i番目のマークのタイプ
(C)波形データがあらわす波形の基本テンポの格納領域
TEMPO
(D)波形データの波形の基本ノートナンバの格納領域
NOTE#
これらの格納領域へのデータ格納の操作について後述する。尚、以下において、説明の繁雑さを避けるため、これらの格納領域に付した名前(例えばMARK[i]等)とその格納領域に格納された値(例えばMARK[i]に格納されたアドレス)とを区別せずに、その格納領域に格納された値を指す場合もその格納領域に付した名前をそのまま用いることがある。以下において説明する各種のレジスタやフラグ等に関しても同様である。
【0057】
図5は、図1に示す操作子群16および表示器17を備えた操作表示パネルを示す図である。
【0058】
この図5に示す操作表示パネル20には、図1に示す操作子群16を構成する複数のボタンおよびダイアルと、図1に示す表示器17が備えられている。この図5には、表示器17に、波形1711と、その波形1711の任意の点の格納アドレスを指標するアドレスマーク1712が表示されている。以下、各種のボタンおよびダイアルについて説明する。
【0059】
(A)RECボタン1611
このRECボタン1611は、外部入力音をサンプリングするときに押されるボタンである。サンプリング処理については後述する。
(B)START/STOPボタン1612
このSTART/STOPボタン1612は、サンプリングを実際に開始するときに押されるボタンである。このSTART/STOPボタン1612を押すと、その押されたタイミング以降の入力音がサンプリングされる。サンプリングを終了させるときもこのSTART/STOPボタン1612が押される。
【0060】
(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を参照して説明した、イベントマーク,ループマーク、およびエンドマークを設定するときに押されるボタンである。これらのマークの設定操作については後述する。
【0061】
(F)BASIC_TEMPOボタン1618
このBASIC_TEMPOボタン1618は、波形の基本テンポを設定するためのボタンである。基本テンポの設定操作については後述する。
(G)BASIC_NOTE#ボタン1619
このBASIC_NOTE#ボタン1619は、波形の基本ノートナンバを設定するためのボタンである。基本ノートナンバの設定操作については後述する。
(H)EXITボタン1620
このEXITボタン1620は、編集を終了する時に押されるボタンである。
【0062】
(I)MODEボタン1623
このMODEボタン1623は、SYNCボタン1621とMANUALボタン1622の2つのボタンからなり、SYNCボタン1621を押すと、波形再生時における波形再生速度をクロック情報に同期させるモード(SYNCモード)に設定され、MANUALボタン1622を押すと、波形再生時における波形再生速度が操作子操作(ここでは、図2に示すキーボード40のピッチベンドレバー42の操作)により制御されるモード(MANUALモード)に設定される。
【0063】
ここで、SYNCモードは、図1に示す波形再生装置10のMIDI入力端子25にシーケンサ50(図3参照)を接続した場合に設定されるモードであり、シーケンサ50が演奏テンポに応じた周期でクロック情報を出力し、波形再生装置10では、このクロック情報を入力してこのクロック情報の入力周期に同期した再生速度で波形再生が行なわれる。このSYNCモードでは、以下に説明するベンダ情報が入力されても無視される。
【0064】
またMANUALモードは、図1に示す波形再生装置10のMIDI入力端子25に図2に示すキーボード40を接続した場合に設定されるモードであり、キーボード40から出力されるベンダ情報(−x〜+x)を入力して、その入力されたベンダ情報に応じた再生速度で波形再生が行なわれる、このMANUALモードでは、クロック情報が入力されても無視される。
【0065】
尚、クロック情報の周期やベンダ情報は波形再生中においても変更が可能であり、クロック情報の周期やベンダ情報が変更されると、その変更時点以降はその変更された後のクロック情報の周期あるいはベンダ情報に応じた再生速度で波形の再生が続行される。
【0066】
図6は、図1に示すは波形再生装置10のCPU11で実行されるメインルーチンのフローチャートである。
【0067】
CPU11で実行されるプログラムで用いられる主な変数は以下のとおりである。
【0068】
(A)MODE:動作モードを示すフラグであり、SYNCモードでは、‘Sync'、MANUALモードでは‘Manual'が設定される。
【0069】
(B)GATE:発音中であるか否かを示すフラグであり、発音中は‘1'、発音中でないときは‘0'が設定される。
【0070】
(C)ON#:最新に入力されたノートオン情報中のノートナンバが格納されるレジスタである。
【0071】
尚、上記(A)のMODEフラグは、図6のメインルーチン中に示されているが、上記(B),(C)のGATEフラグ,ON#レジスタは、後述する図8に示す波形再生処理ルーチン中に示されている。
【0072】
図6に示すメインルーチンでは、先ずステップ1002においてサンプリング処理が実行される。このサンプリング処理は、外部から音(楽器音や歌唱音等)を入力して録音(サンプリング)する処理である。サンプリングにより得られた波形データは、RAM12に格納される。
【0073】
このサンプリング処理においては、先ずRAM12内の各種領域が初期化される。RAM12内に設定される格納領域には、前述したとおりの、
(A)波形データの格納領域
WAVE[i],iはアドレスを示す。
【0074】
(B)波形データに付されたマークのアドレスおよびマークのタイプの格納領域
MARK[i]:i番目のマークのアドレス
TYPE[i]:i番目のマークのタイプ
(C)波形データがあらわす波形の基本テンポの格納領域
TEMPO
(D)波形データがあらわす波形の基本ノートナンバの格納領域
NOTE#
が存在する。
【0075】
初期化に続いて、図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が再度押されると、上記のサンプリング処理が終了する。
【0076】
図6に示すメインルーチンのステップ1004では波形編集処理が行なわれる。この波形編集処理は、ステップ1002におけるサンプリング処理で得られた波形データに関し、波形の加工、各種マークの設定、基本テンポや基本ノートナンバの設定を行なう処理である。
【0077】
波形の加工は、波形データの前端、後端などの不要部分の削除や、波形データの繰返し読出し、飛越し読出しの際に読出しアドレスがジャンプすることによる再生波形の不連続性を解消するために、ジャンプする前後の波形データを平滑化する処理などを行なうものである。波形の加工については、本発明には直接は無関係であるので、これ以上の説明は省略する。
【0078】
以下、図5に示した操作表示パネルを参照しながら、波形の加工処理以外の波形編集処理について説明する。
【0079】
(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のうちのいずれかのボタンの押下とを繰り返して、必要なマークを全て設定する。
【0080】
上記の操作により設定された各マークは、波形データのアドレスの先頭からアドレス順に0,1,2,……の番号が付与され、それらのマーク0,1,2,…のアドレスとタイプが、
マーク0のアドレスがMARK[0]、タイプがTYPE[0]に、
マーク1のアドレスがMARK[1]、タイプがTYPE[1]に、
マーク2のアドレスがMARK[2]、タイプがTYPE[2]に、
……
それぞれ記憶される。
【0081】
マークの各タイプの意味については、図4を参照してその概要を説明したが、ここで詳細にまとめておく。
【0082】
(イベントマーク)
イベントマークは、振幅あるいはピッチが急激に変化する波形位置を指し示すマークである。具体的には打楽器のアタック部の始点、人声音の子音部の始点などを示すためのマークである。
【0083】
上記のアタック部や子音部は繰返し読み出されると、アタック部が連続することにより音の2度鳴りとして、あるいはこのような部分は複雑な波形をもっておりそれを繰返すために波形が滑らかに接続できず雑音として聞こえてしまう。また、アタック部や子音部というのは、音の特徴を多く含む部分であるため、この部分の読み出しを飛越してしまうと、その音の特徴が大きく削がれてしまう。図1に示す波形再生装置10では、これらの不都合が起きないように、波形再生時にはこのイベントマークから次のマーク(ループマーク)までの区間を繰返し読み出したり、読み出しを飛越したりしないようにしている。
【0084】
(ループマーク)
ループマークは波形再生にあたり繰り返し読み出しても、飛越しをしても不都合が少ない区間を特定するための当該区間の始点を示すマークである。不都合が少ない区間とは、音の定常部、つまり振幅やピッチの急激な変化がない部分である。また区間の長さは、単音であればそのピッチに相当する周期、またはその整数倍の長さとし、和音や混合音であれば、最低音の全周期の略整数倍の長さとし、ビブラートやトレモロの周期を変化させたくないのであれば、そのビブラートやトレモロの周期とすればよい。
【0085】
波形再生時にはこのループマークから次のマークまでの区間は、必要に応じて繰り返して、あるいは飛び越して読み出すことになるため、このマークが示す位置の波形と、次のマークが示す位置の波形との関係に注意して、マークを設定することが好ましい。
【0086】
図7は、ループマークの設定方法の説明図であり、図7(A)は良い例、図7(B)は悪い例である。
【0087】
図7(A)では、周期的な波形の1周期が区間となるようにループマーク(a)(b)が設定されており、このため、波形再生時においてこの区間を繰り返し読み出す(つまり読出アドレスが(b)から(a)へジャンプする)際にも、あるいは、この区間を飛び越して読み出す(つまり読出アドレスが(a)から(b)にジャンプする)際にも、波形が滑らかに接続される。これは、(a)の位置の波形の傾きと(b)の位置の波形の傾きがほぼ同じだからである。
【0088】
一方図7(B)は、(a')の位置の波形の傾きと(b')の位置の波形の傾きが明らかに食い違っているために、読出アドレスがジャンプする時に波形が滑らかに接続されることは期待できず、雑音の原因となる。
【0089】
なお、図1に示す波形再生装置10において、ループマークは、イベントマークとそれに続くイベントマーク(または後述のエンドマーク)との間に最低1つ設定されなければならない。イベントマークと、次のイベントマーク(あるいはエンドマーク)との間にループマークが1つも設定されていないと、イベントマークで示される例えばアタック部から、次のイベントマークで示されるアタック部までの再生時間を制御できなくなってしまうからである。
【0090】
(エンドマーク)
エンドマークは、波形再生を終了する位置を示すマークである。
【0091】
このマークが示すアドレス位置以降の波形データは波形再生時には無視される。また、このマークよりも後ろに設定されたマークも全て無視される。
(B)基本テンポの設定
波形データによりあらわされる波形の基本テンポを設定する。基本テンポとは、その波形の元々のテンポのことであり、例えば、打楽器によるフレーズをサンプリングした場合にそのフレーズのテンポが130であったならば、基本テンポは130となる。
【0092】
動作モードがSYNCモード、すなわち外部のシーケンサ50(図3参照)から出力されるクロック情報に応じて再生速度を制御するモードに設定されているときに、この設定された基本テンポが参照され、シーケンサ50の自動演奏テンポに同期した再生速度で波形が再生される。
【0093】
基本テンポの設定の操作は以下の通りである。
【0094】
まず、BASIC_TEMPOボタン1618を押して基本テンポの設定の状態とする。すると表示器17にデフォルト値としてのテンポ値が表示される。このテンポ値は、VALUE/ADDRESSダイアル1630を操作することにより変更することができる。そこで、表示器17に表示されたテンポ値を見ながらVALUE/ADDRESSダイアル1630を操作し、所望のテンポ値とする。
【0095】
この操作により設定されたテンポ値は、RAM12内に設定された基本テンポの格納領域TEMPOに格納される。
【0096】
(C)基本ノートナンバの設定
波形データが示す波形の基本ノートナンバを設定する。基本ノートナンバとは、図1に示すMIDI入力端子25から入力されたノートオン情報(発音開始指示情報)に含まれるノートナンバを波形再生に反映させるときの基準となるノートナンバである。
【0097】
例えば基本ノートナンバが60(中央C)に設定されているとき、入力されたノートオン情報に含まれるノートナンバが62であれば、サンプリング時の楽音より62−60=2半音高いピッチで波形再生がなされ、また入力されたノートオン情報に含まれるノートナンバが57であれば、サンプリング時の楽音より57−60=−3半音高い(つまり3半音低い)ピッチで波形再生がなされる。
【0098】
基本ノートナンバの設定の操作は以下の通りである。
【0099】
まず、BASIC_NOTE#ボタン1619を押して基本ノートナンバの設定の状態とする。すると表示器17にデフォルト値としてのノートナンバが表示される。このノートナンバはVALUE/ADDRESSダイアル1630を操作することにより変更することができる。そこで、表示器17に表示されるノートナンバを見ながらVALUE/ADDRESSダイアル1630を操作し、所望のノートナンバとする。
【0100】
この操作にょり設定されたノートナンバは、RAM12内に設定された基本ノートナンバの格納領域NOTE#に格納される。
【0101】
以上の各種マーク、基本テンポ、基本ノートナンバの設定が終了したら、EXITボタン1620を押すことにより波形編集処理が終了する。なお、必要な情報が設定されていない場合(例えば基本ノートナンバが設定されていない、あるいはエンドマークが設定されていない、というような場合)には、EXITボタン1620を押しても波形編集処理を終了することはできない。
【0102】
図6に示すステップ1004の波形編集処理のステップでは、以上のような波形編集処理が行なわれる。
【0103】
図6に示すステップ1006では、波形再生処理を行なうための初期設定が行なわれる。ここでは、前述したSYNCモードとMANUALモードのうちデフォルトとしてSYNCモードに設定するために、動作モードを示すフラグMODEに‘Sync'が格納され、発音中であるか否かを示すGATEに発音停止中を示す‘0'が格納される。また、図1に示すDSP15の、再生速度が格納されるレジスタtcompに初期値1が格納される。
【0104】
また、図6に示すステップ1008,1010では、それぞれ、EDITボタン1613,RECボタン1611が押されたか否かが判定され、EDITボタン1613が押されるとステップ1004の波形編集処理に戻り、RECボタン1611が押されるとステップ1002のサンプリング処理に戻る。
【0105】
ステップ1012では、MODEボタン1623が押されたか否かが判定され、MODEボタン1623が押されると、ステップ1014において、そのMODEボタン1623のうちのSYNCボタン1621が押されたかあるいはMANUALボタン1622が押されたかに応じて、動作モードを示すフラグMODEに、それぞれ‘Sync'あるいは‘Manual'が格納される。
【0106】
ステップ1016では、波形再生処理が行なわれる。この波形再生処理については図8を参照して説明するが、発音中であるか否かを示すフラグGATEが‘0'に設定されているときはこの波形再生処理のステップ1016をそのまま抜けてステップ1008に戻り、EDITボタン1613,RECボタン1611、およびMODEボタン1623が押されたか否かが繰返し監視される。
【0107】
図8は、図6に1つのステップで示されている波形再生処理ルーチンのフローチャートである。以下、この図8に基づいて、CPU11における波形再生処理ルーチンを説明する。
【0108】
先ずステップ1102では、MIDI入力端子25からMIDI情報が入力されたか否かが判定される。MIDI情報が入力されるとステップ1104に進み、入力されていなければステップ1142に進む。
【0109】
ステップ1142では、発音中か否かを示すフラグGATEが発音中‘1'を示しているか否かが判定され、発音中(GATE=1)のときは、この図8に示す波形再生処理ルーチンを抜けることなくステップ1102に戻って次のMIDI情報の入力が監視され、発音停止中(GATE=0)のときは、この図8に示す波形処理ルーチンを抜けて図6に示すステップ1008に戻り、EDITボタン1613、RECボタン1611、およびMODEボタン1623が押されたか否かが監視される。
【0110】
図8に示す波形再生処理ルーチンのステップ1102においてMIDI情報が入力されたことが判定されると、ステップ1104に進み、その入力されたMIDI情報がノートオン情報であるか否かが判定され、ノートオン情報ではなかったときはステップ1118においてノートオフ情報であるか否かが判定され、ノートオフ情報でもなかったときはステップ1126においてクロック情報(テンポクロック)であるか否かが判定され、クロック情報でもなかったときはステップ1136においてベンダ情報であるか否かが判定される。ベンダ情報でもなかったときはステップ1142に進む。
【0111】
ステップ1104において、今回入力されたMIDI情報がノートオン情報であると判定されると、ステップ1106に進む。ステップ1106では、入力されたノートオン情報に含まれるノートナンバ(「今回のノートナンバ」と称する)とRAM12に格納されている基本ノートナンバNOTE#とに基づいて、
S=POW(2,(今回のノートナンバ − 基本ノートナンバ)/12)
但し、POW(a,b)はaのb乗を表わす
の演算を行ない、この演算値SをDSP15のレジスタspeedにセットする。
【0112】
DSP15のレジスタspeedは、波形再生時のピッチを指示する値が格納されるレジスタであり、このレジスタspeedに1より大きい値がセットされると、サンプリング時の音よりもピッチの高い音が発音され、1より小さい値がセットされるとサンプリング時の音より1ピッチの低い音が発音される。1をセットすると、サンプリング時の音のピッチと同じピッチの音が発音される。
【0113】
ステップ1108では、今回のノートナンバが変数ON#にセットされ、ステップ1110では、今回入力されたノートオン情報に含まれるベロシティ情報に基づいて発音の音量が定められその音量を表わす値がDSP15のレジスタlevelにセットされる。このlevelにセットされた値は再生波形の振幅に反映される。
【0114】
ステップ1112では、発音中か否かを示すフラグGATEに発音中であることをあらわす‘1'がセットされているか否かが判定される。
【0115】
GATE=1でないときは、これから新たに発音を開始するために、DSP15のレジスタn_onに1をセットし(ステップ1114)、さらにフラグGATEに‘1'をセットする(ステップ1116)。DSP15のレジスタn_onは、DSP15への発音開始指示用のレジスタであり、そこに‘1'をセットすることにより、DSP15は発音の指示がなされたものと解釈する。DSP15における処理については後述する。
【0116】
ステップ1112においてGATE=1であると判定されたときは、発音は既に開始されていることを意味し、DSP15に対し再度の発音開始指示は行なわない。このステップ1112でGATE=1であると判定される場合というのは、ノートオン情報の入力により発音開始した後で再度ノートオン情報が入力されたことを意味し、具体的には、例えばキーボード40(図2参照)の鍵盤41を構成している多数の鍵のうちのある1つの第1の鍵を押して発音を開始させ、その鍵を離す前にさらに別の第2の鍵を押した場合に相当する。この場合、後に押した第2の鍵に対応するノートオン情報は、ステップ1106,1110におけるDSP15のレジスタspeed,levelへの設定には反映されるため、DSP15の処理(後述する)により発音中の音のピッチや音量は第2の鍵を押した時点からその第2の鍵の押下に対応したものとなり、音の発音自体はそのまま継続される。
【0117】
尚、新たに入力されたノートオン情報のノートナンバはステップ1108において変数ON#にも反映されるが、これに関しては、ステップ1120にて説明する。
【0118】
ステップ1118において今回入力されたMIDI情報がノートオフ情報であると判定されると、ステップ1120に進み、今回入力されたノートオフ情報に含まれるノートナンバが変数ON#に格納されているノートナンバに等しいか否かが判定される。等しい場合には、ステップ1122においてDSP15のレジスタn_offに‘1'がセットされ、ステップ1124においてフラグGATEに‘0'がセットされる。
【0119】
DSP15のレジスタn_offは、DSP15に対し発音停止を指示するためのレジスタであり、DSP15は、レジスタn_offに‘1'がセットされると発音を停止する。DSP15の処理については後述する。
またGATEは、発音中か否かを示すフラグであり、GATEに‘0'がセットされるというのは、発音停止中に移行したことを意味する。
【0120】
尚、ステップ1120において今回入力されたノートオフ情報に含まれるノートナンバと変数ON#に格納されているノートナンバが等しくない場合というのは、例えばキーボード40(図2参照)で、ある第1の鍵を押下して発音を開始させ、その第1の鍵を離鍵しないままでさらに別の第2の鍵を押下し、その後、先に押下した第1の鍵を離鍵した場合であり、この場合には、第1の鍵を離鍵しても発音を継続させる必要があるため、DSP15に対し発音停止の指示は行なわないようにしている。
【0121】
ステップ1126においてMIDI情報がクロック情報(テンポクロック)であると判定されると。ステップ1128に進み、ステップ1128では、動作モードを示すレジスタMODEにSYNCモードをあらわす‘Sync'が格納されているか否かが判定され、SYNCモードではない(MANUALモードである)と判定されたときはクロック情報は無視される。
【0122】
ステップ1128において、クロックと同期した波形再生を行なうSYNCモードであると判定されると、ステップ1130に進み、タイマ14(図1参照)から時間T[msec]を取得する。このタイマ14は、クロック情報(テンポクロック)が前回入力された時点でこの図8に示す波形再生処理ルーチンが実行され、その際におけるステップ1134においてリセットされており、したがってステップ1130で取得された時間T[msec]は、前回のクロック情報の入力時点から今回のクロック情報の入力時点までの時間間隔をあらわしている。
【0123】
ステップ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にセットされた値により定められる。
【0124】
図8のステップ1134ではタイマが0にリセットされる。
【0125】
ステップ1136において、今回入力されたMIDI情報がベンダ情報であると判定されると、ステップ1138に進み、このステップ1138では、動作モードを示すレジスタMODEに、例えば、図2に示すキーボード40のピッチベンドレバー42の操作により再生速度を制御する、MANUALモードを表わす‘Manual'が格納されているか否かが判定される。MANUALモードではない(SYNCモードである)と判定されると、ベンダ情報は無視される。
【0126】
ステップ1138においてMANUALモードであると判定されるとステップ1140に進み、ベンダ情報により示されるピッチベンドレバー42の操作量に基づいて波形再生速度が求められ、DSP15のレジスタtcompにセットされる。
【0127】
ここでは、操作量(ベンダ情報)は−x〜+x(x>0)の範囲内で変化し、その場合に、以下の演算により、再生速度がサンプリング時の0.5倍〜2倍の範囲内で変化するように制御される。すなわち、
R=POW(2,操作量/x)
で求められ、この演算量RがDSP15のレジスタtcompにセットされる。
【0128】
このとき、操作量=−xのときR=0.5となり再生速度はサンプリング時の半分の速度となり、操作量=0のときR=1であって再生速度はサンプリング時の速度と同一となり、操作量=+xのときR=2であって再生速度はサンプリング時の速度の2倍の速度となる。
【0129】
次に、DSP15における波形再生動作について説明する。以上の説明でもDSP15のレジスタについても言及してきたが、ここでは、DSP15における波形再生処理で用いられるレジスタについてまとめておく。
【0130】
CPU11で実行されるプログラムにより値がセットされるレジスタとしては以下の(A)〜(E)の5つレジスタがある。
【0131】
(A)読出速度:speed
このレジスタspeedに1よりも大きな値がセットされるとサンプリング時の音高(ピッチ)よりも高い音高(ピッチ)の音が再生され、1よりも小さい値がセットされるとサンプリング時の音高(ピッチ)よりも低い音高(ピッチ)の音が再生される。speedに1がセットされるとサンプリング時の音高と同じ音高の音が再生される。
【0132】
(B)再生速度:tcomp
このレジスタtcompに1よりも大きな値がセットされるとサンプリング時の速度よりも速い速度で再生され、1よりも小さい値がセットされるとサンプリング時の速度よりもゆっくりとした速度で再生され、1がセットされるとサンプリング時の速度と同一の速度で再生される。
【0133】
(C)レベル(音量):level
レジスタlevelにセットされた値に応じて再生波形の振幅が定められる。
【0134】
(D)発音開始:n_on
レジスタn_onに1がセットされると、DSP15は発音開始指示があったものと受け取り、発音を開始する。
【0135】
(E)発音停止:n_off
レジスタn_offに1がセットされると、DSP15は発音停止指示があったものと受け取り、発音を停止する。
【0136】
また、DSP15で実行されるプログラム内で使用されるレジスタとして、上記のもののほか、さらに以下の(F)〜(M)のレジスタがある。
【0137】
(F)アドレスカウンタ:ac
このアドレスカウンタacは、波形データの読出アドレスとして使用される。このアドレスカウンタacは、読出速度speedずつ歩進される。
【0138】
(G)再生時間カウンタ:pc
この再生時間カウンタpcは、波形データのアドレスを指し示す変数であり、波形データ読出しの現在の平均的な進行位置を表わす。この再生時間カウンタpcは、再生速度tcompずつ歩進される。
【0139】
(H)マークカウンタ:i
このマークカウンタiは、再生時間カウンタpcが次に到達すべきマークの番号を示すカウンタである。
【0140】
(I)マークカウンタ:j
このマークカウンタjは、アドレスカウンタacが次に到達すべきマークの番号を示すカウンタである。
【0141】
(J)発音フラグ:gate
この発音フラグgateは、発音開始指示を受けて‘1'にセットされ、発音停止の指示を受けて‘0'にリセットされるフラグである。
【0142】
(K)波形データ一次格納レジスタ:wav
このレジスタwavには、RAM12から読み出された波形データが一時的に格納される。
【0143】
(L)エンベロープ値:env
このエンベロープ値envは、後述のトランケート処理におけるエンベロープ値を示している。
【0144】
(M)トランケート長:pre
このトランケート長preは、後述のトランケート処理を行なう区間の長さをアドレス単位で示している。
【0145】
図9は、DSP15で実行される波形再生処理ルーチンのフローチャートである。このルーチンは、サンプリング周期毎に繰り返し実行される。すなわち本実施形態ではサンプリング周波数=44.1kHzであり、このルーチンは1秒間に44100回実行される。
【0146】
この図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がセットされる。
【0147】
次いで、ステップ2006,2008において、マークのタイプTYPE[i]が次のイベントマーク(あるいはエンドマーク)示すまでiがインクリメントされる。図4に示す例では、マーク1,2のタイプはループであり、マーク3のタイプがイベントであり、したがってi=3にセットされる。
【0148】
さらにステップ2010において、トランケート長preにtcomp×nがセットされる。ここで、nは定数であり、後述の定数kを考慮して適当な値が予め定められている。ステップ2010ではさらに、エンベロープ値envに‘1'がセットされる。
【0149】
さらに、ステップ2012では発音フラグgateに‘1'がセットされ、以後発音状態となる。これらの処理が終了すると、ステップ2014においてn_onが‘0'に戻される。
【0150】
ステップ2016では、n_offが‘1'か否かが判定される。このn_offは、CPU11により、DSP15に発音停止を指示するにあたり‘1'にセットされる(図8ステップ1122)。n_off=1であるときはステップ2022に進む。
【0151】
ステップ2016でn_off=1と判定されると、ステップ2108に進み、gateが‘0'リセットされて発音停止状態となり、n_offが‘0'に戻される。
【0152】
ステップ2022では、RAM12のアドレスカウンタacが指し示すアドレスから波形データWAVE[ac]が読み出されてwavに格納される。
【0153】
ステップ2024では、再生時間カウンタpcがMARK[i]よりもpreだけ手前のアドレスにまで進んだか否かが判定される。ここで、iはステップ2006,2008で次のイベントマーク(あるいはエンドマーク)のマーク番号までインクリメントされているため、MARK[i]は、次のイベントマーク(あるいはエンドマーク)のアドレスをあらわしており、したがってステップ2024は、再生時間カウンタpcが次のイベントマーク(あるいはエンドマーク)のアドレス(次のイベントマーク(あるいはエンドマーク)を発音すべきタイミング)よりもpreだけ前のアドレスにまで近づいたか否かを判定するステップである。
【0154】
再生時間カウンタpcが、
pc≧MARK[i]−pre
を満足するアドレスの場合、ステップ2026に進み、エンベロープ値envがenv×kに変更される。ここで、kは減衰率をあらわす定数であって、0<k<1の範囲内であらかじめその値が定められている。
【0155】
上述の定数n(ステップ2010参照)と定数k(ステップ2026参照)との関係は次のとおりである。すなわち定数nはサンプリング周期を単位としてトランケート処理を行なう時間間隔をあらわす定数であり、実際のトランケート処理はほぼnサンプリング周期の間に行なわれることになる。また、定数kはサンプリング周期毎のレベルの減衰率をあらわす定数であり、定数kとして小さい値(但し0<k<1の範囲内)を設定するほど、音が急速に減衰されることになる。
【0156】
ステップ2026において、エンベロープ値envがenv×kに変更された後、あるいはステップ2024において再生時間カウンタpcがMARK[i]−preよりもさらに手前にあると判定されたときは、ステップ2028に進む。このステップ2028では、
wav×level×env×gate
が演算され、この演算値がD/A変換器23(図1参照)に出力される。
【0157】
ここで、wavは、ステップ2022で読み出した、アドレスカウンタacが示すアドレスの波形データWAVE[ac]であり、levelは、図8に示す、CPUで実行される波形再生処理のステップ1110で設定された、ベロシティ情報に基づく音量に相当する値であり、envは、再生時間カウンタpcがイベントマーク(あるいはエンドマーク)に近づいたときのトランケート処理の減衰率をあらわす値であり、gateは発音開始指示があったときにステップ2012で‘1'がセットされ発音停止指示があったときにステップ2018で‘0'にリセットされる、音を出力するか否かを定めるスイッチの役割りをなすものである。
【0158】
ステップ2030,2032では、それぞれ、再生時間カウンタpc,アドレスカウンタacがそれぞれtcomp,speedだけ更新される。ここで、tcompは、図8に示す、CPUで実行される波形再生処理のステップ1132あるいはステップ1140において、クロック情報(テンポクロック)あるいはベンダ情報に応じて設定される、波形再生速度を定める値である。また、speedは、やはり図8に示すCPUの波形再生処理ルーチンのステップ1106で設定される、再生波形の音高(ピッチ)を定める値である。
【0159】
以上のようにして、アドレス1つ分の波形データの出力が行なわれると、次にDSP15では、ステップ2034の読出アドレス制御ルーチンが実行される。
【0160】
図10は、図9に1つのステップで示す読出アドレス制御ルーチンのフローチャートである。
【0161】
ここでは先ずステップ2102において、再生時間カウンタpcが、pc≧MARK[i]を満足するか否かが判定される。MARK[i]は、前述のとおり、図9に示すフローのステップ2006,2008でイベントマーク(あるいはエンドマーク)のアドレスを指すように設定されており、したがって、このステップ2102では、再生時間カウンタpcがイベントマーク(あるいはエンドマーク)のアドレスに達したか否か(そのイベントを発音すべきタイミング(あるいは発音を停止すべきタイミング)に達したか否か)が判定される。
【0162】
ステップ2102において再生時間カウンタpcがイベントマーク(あるいはエンドマーク)に到達した旨判定されると、ステップ2104に進み、今回到達したマークがイベントマークであるかエンドマークであるかが判定される。
【0163】
ステップ2104において再生時間カウンタpcがイベントマークに達したと判定されると、ステップ2106に進み、アドレスカウンタacが強制的に、すなわち、それまでのアドレスカウンタacの値が何であろうと、そのイベントマークのアドレスMARK[i]に変更される。これにより、再生時間カウンタpcがイベントマークに達するごとに再生時間カウンタpcとアドレスカウンタacとの時間ずれ(アドレス軸上のずれ)が調整される。
【0164】
ステップ2108では、アドレスカウンタacが次に到達すべきマークの番号を示すマークカウンタjがi+1に更新され、ステップ2110,2112において、マークカウンタiが次のイベントマーク(あるいはエンドマーク)の番号に更新される。ステップ2114では、次のトランケート処理の準備のためにpreにtcomp×nが格納され、envに初期値‘1'が設定される。preにtcomp×nを設定し直すのは、発音中にテンポが変更され、あるいはピッチベンドレバー42が操作されて、tcompが変更される可能性があるからである。
【0165】
また、ステップ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は、エンドマークのアドレスを越えて先に進んでしまう(今回の波形データの格納アドレス範囲から外れてしまう)からである。
【0166】
ステップ2120では、アドレスカウンタacが次のマークのアドレスMARK[j]に到達したか否かが判定される。次のマークのアドレスMARK[j]に達した旨判定されるとステップ2122に進み、今回到達したマークがループマークであるか否かが判定される。ステップ2122において、今回到達したマークがループマークではない、すなわちイベントマーク(あるいはエンドマーク)であると判定されるとステップ2124に進み、アドレスカウンタacが1つ手前のマークのアドレスMARK[j−1]に戻される。このステップ2124に進む場合というのは、アドレスカウンタacが再生時間カウンタpcよりもアドレス軸上で先行している状態において、そのアドレスカウンタacが次のイベントマーク(あるいはエンドマーク)に到達した場合であり、再生時間カウンタpcがイベントマーク(あるいはエンドマーク)に到達する前にイベントの発音が行なわれないよう(あるいは発音が停止しないよう)、ここではアドレスカウンタacを1つ手前のマークのアドレスに戻し、そこから再び波形の読み出しを行なわせるようにしているのである。
【0167】
ステップ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]から順に波形データが読み出されることになる。
【0168】
このステップ2130に進む状況を図4を参照して例示的に説明すると以下のようになる。すなわち、例えばアドレスカウンタacがマーク5に到達したタイミング(ステップ2120で判定される)で、再生時間カウンタpcがマーク4とマーク5との間にあったとき(ステップ2126で判定される)は、そのマーク4はループマークであるので、ステップ2130に進み、アドレスカウンタacが、マーク5のアドレスからマーク4のアドレスに戻される。これにより、マーク4とマーク5との間が繰り返し読み出しされることになる。
【0169】
ステップ2128において1つ手前のマークがイベントマークであったときは、前述したようにイベントマークと次のマーク(ループマーク)との間は繰返し読出しは禁止されているため、ステップ2132に進み、アドレスカウンタacが次に到達すべきマークの番号jがj+1に更新される。すなわちアドレスカウンタacは戻らずにそのまま先へ進むことになる。
【0170】
このステップ2132に進む状況を図4を参照して例示的に説明すると、例えばアドレスカウンタacがマーク4に到達したタイミング(ステップ2120で判定される)で、再生時間カウンタpcが、それよりも遅れたマーク3とマーク4との間にあったとき(ステップ2126で判定される)は、ステップ2128において、アドレスカウンタacが到達したマーク4よりも1つ手前のマーク3のタイプが判定され、そのマーク3のタイプがイベントであり、マーク3とマーク4との間の波形の繰返し読み出しを避けるため、ステップ2132に進み、アドレスカウンタacが次に到達すべきマークの番号jがj=5に更新される。アドレスカウンタacはマーク4を越えてさらに先に進むことになる。
【0171】
ステップ2126において、PC<MARK[j]ではない。すなわち、アドレスカウンタacよりも再生時間カウンタpcの方が進んでいる(同時を含む)と判定されると、ステップ2134に進み、再生時間カウンタpcがさらに1つ先のマークのアドレスMARK[j+1]よりもさらに進んでいるか否かが判定される。例えば図4を参照し、ステップ2134では、アドレスカウンタacがマーク5に達したタイミング(ステップ2120で判定される)で、再生時間カウンタpcがマーク6よりもさらに先に進んでいるか、それともマーク5〜マーク6の間にあるかが判定される。
【0172】
pc≧MARK[j+1]である。すなわち、上記の例においてアドレスカウンタacがマーク5に達したときに再生時間カウンタがマーク6よりもさらに進んでいたときは、ステップ2136に進み、アドレスカウンタacに1つ先のマークのアドレスMARK[j+1]が設定される。図4を参照して説明している例では、アドレスカウンタacがマーク5に到達したタイミングで再生時間間カウンタpcがマーク6よりもさらに先に進んでいたときは、アドレスカウンタacにマーク6のアドレスが設定されることになる。すなわち、この場合、再生時間カウンタpcがかなり先(マーク6よりも先)に進んでいたという状況からマーク5とマーク6との間が読み飛ばされることになる。
【0173】
ステップ2138では、アドレスカウンタacがジャンプしたことに対応し、アドレスカウンタacが次に到達すべきマークの番号jがj+2に更新される。
【0174】
ステップ2134において、pc≧MARK[j+1]ではない、すなわち、上記の例においてアドレスカウンタacがマーク5に達した時点で再生時間カウンタpcがマーク5とマーク6との間に存在していたときは、アドレスカウンタacはそのまま進めればよく、ステップ2140において、アドレスカウンタacが次に到達すべきマークの番号jがj+1に更新され、アドレスカウンタacの飛びや戻りは行なわれない。
【0175】
図9,図10に示すDSPにおける発音処理では、以上のようにして、ノートオン情報に含まれるノートナンバに応じた音高(ピッチ)の音が、クロック情報(テンポクロック)あるいはベンダ情報に応じた再生速度で再生される。
【0176】
【発明の効果】
以上説明したように、本発明によれば、簡単な構成で、再生速度と再生ピッチとが制御される。
【図面の簡単な説明】
【図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 (4)

  1. 音の波形をあらわす波形データと該波形データが時間的に区切られてなる複数の区間をあらわす区間情報とを記憶する記憶手段と、
    再生波形の音高を指示する音高情報を取得する音高情報取得手段と、
    波形再生速度を指示する再生速度情報を、音高情報に対応した音高の再生波形を得るための波形読出速度とは独立に取得する速度情報取得手段と、
    前記記憶手段に記憶された波形データの読出アドレスの平均的な進行速度を、前記区間情報により示される区間の中から該波形データを繰り返して読み出す繰返読出区間あるいは該波形データの読出しを省略して飛び越す飛越区間を設定することにより前記速度情報取得手段で得られた再生速度情報があらわす波形再生速度に調整しながら、前記記憶手段に記憶された波形データを、前記音高情報取得手段で得られた音高情報に対応する波形読出速度で読み出す波形読出手段とを備え、
    さらに、前記記憶手段は、前記波形データと前記区間情報に加え、さらに区間情報により示される区間のうちの一部の区間について、該一部の区間が繰返読出区間および飛越区間のいずれにも設定されることが禁止された特定区間であることをあらわす特定区間情報を記憶するものであり、
    前記波形読出手段が、前記音高情報取得手段で得られた音高情報に対応した音高の再生波形を得るための波形読出速度で変化する読出アドレスと、前記速度情報取得手段により得られた再生速度情報があらわす波形再生速度で変化する参照アドレスを生成し、前記記憶手段に記憶された波形データを該読出アドレスから読み出すとともに該読出アドレスが前記区間情報により示される区間の区切り点に達した時点における前記参照アドレスに応じて次の読出アドレスを設定することにより、繰返読出区間あるいは飛越区間を設定するものであって、前記読出アドレスが前記区間情報により示される区間の区切り点に達した時点における前記参照アドレスに応じるとともに、前記特定区間情報により示される特定区間の存在を考慮して、次の読出アドレスを設定し、前記参照アドレスが前記特定区間の開始点に達した時点で、前記読出アドレスを、該読出アドレスが1つの区間の途中にあっても、該特定区間の開始点に設定するものであることを特徴とする波形再生装置。
  2. 前記波形読出手段は、前記読出アドレスが前記参照アドレスよりも先に前記特定区間上を進んで該特定区間と次の区間との区切りに達した場合には、無条件に該次の区間の読出アドレスを設定するものであることを特徴とする請求項1記載の波形再生装置。
  3. 前記参照アドレスが前記特定区間の開始点よりも手前の所定点に達した時点以降前記開始点に達する時点までの間、順次に変化する読出アドレスから順次に読み出した波形データを前記開始点に近づくにつれて順次に大きな減衰率で減衰させるトランケート手段を備えたことを特徴とする請求項1又は2記載の波形再生装置。
  4. 前記記憶手段は、音の波形をあらわす波形データと前記区間情報とに加え、さらに、該波形のテンポをあらわすテンポ情報を記憶するものであり、
    前記速度情報取得手段は、再生波形のテンポを指定するテンポ情報を、前記記憶手段に記憶されたテンポ情報とは独立に取得するテンポ取得手段、および、前記記憶手段に記憶されたテンポ情報と前記テンポ取得手段により取得されたテンポ情報とに基づいて、波形再生速度を指示する再生速度情報を求める再生速度演算手段からなることを特徴とする請求項1又は2記載の波形再生装置。
JP22302498A 1998-08-06 1998-08-06 波形再生装置 Expired - Fee Related JP4040181B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP22302498A JP4040181B2 (ja) 1998-08-06 1998-08-06 波形再生装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP22302498A JP4040181B2 (ja) 1998-08-06 1998-08-06 波形再生装置

Publications (2)

Publication Number Publication Date
JP2000056772A JP2000056772A (ja) 2000-02-25
JP4040181B2 true JP4040181B2 (ja) 2008-01-30

Family

ID=16791652

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22302498A Expired - Fee Related JP4040181B2 (ja) 1998-08-06 1998-08-06 波形再生装置

Country Status (1)

Country Link
JP (1) JP4040181B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5130809B2 (ja) * 2007-07-13 2013-01-30 ヤマハ株式会社 楽曲を制作するための装置およびプログラム

Also Published As

Publication number Publication date
JP2000056772A (ja) 2000-02-25

Similar Documents

Publication Publication Date Title
JP2956569B2 (ja) カラオケ装置
US20160240179A1 (en) Technique for reproducing waveform by switching between plurality of sets of waveform data
JP3266149B2 (ja) 演奏ガイド装置
US6177624B1 (en) Arrangement apparatus by modification of music data
JP3358292B2 (ja) 電子楽器
JP4070315B2 (ja) 波形再生装置
JP2008139450A (ja) 自動伴奏生成装置および自動伴奏生成方法を実現するためのプログラム
JP4040181B2 (ja) 波形再生装置
JP3267777B2 (ja) 電子楽器
JP4182761B2 (ja) カラオケ装置
US6274798B1 (en) Apparatus for and method of setting correspondence between performance parts and tracks
JP3047879B2 (ja) 演奏ガイド装置、演奏ガイド用演奏データ作成装置および記憶媒体
JP4802947B2 (ja) 奏法決定装置及びプログラム
JP4552769B2 (ja) 楽音波形合成装置
JP3887957B2 (ja) カラオケ装置
JP2674452B2 (ja) 楽曲再生装置
JP3397071B2 (ja) 自動演奏装置
JP2660462B2 (ja) 自動演奏装置
JP2002297139A (ja) 演奏データ変更処理装置
US7692088B2 (en) Musical sound waveform synthesizer
JP2000056761A (ja) 波形再生装置
JPH07191669A (ja) 電子楽器
JPH10319961A (ja) 発音タイミング制御装置
JP3460562B2 (ja) 入力・編集装置および記憶媒体
JP3577852B2 (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

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070814

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: 20071106

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071107

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101116

Year of fee payment: 3

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: 20111116

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121116

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131116

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees