JP3651241B2 - 音列合成装置 - Google Patents
音列合成装置 Download PDFInfo
- Publication number
- JP3651241B2 JP3651241B2 JP06921998A JP6921998A JP3651241B2 JP 3651241 B2 JP3651241 B2 JP 3651241B2 JP 06921998 A JP06921998 A JP 06921998A JP 6921998 A JP6921998 A JP 6921998A JP 3651241 B2 JP3651241 B2 JP 3651241B2
- Authority
- JP
- Japan
- Prior art keywords
- pitch
- string
- sound
- character code
- scale
- 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】
【従来の技術】
音列を合成(compose)する音列合成装置は既に知られている。
例えば、本件出願人に係る特開昭63−250696号には、モチーフ、コード進行及びキー(調)を入力すると音列を自動的に合成する音列合成装置が開示されている。
しかしながら、この種の従来の音列合成装置は、使用者にある程度の音楽知識が必要であり、入力が複雑であるという問題がある。
【0003】
【発明が解決しようとする課題】
したがって、この発明の目的は、音楽知識が全くなくても、きわめて簡単な入力だけで音列を自動合成する音列合成装置を提供することである。
【0005】
【課題を解決するための手段】
この発明によれば、文字コード列を入力する文字コード列入力手段と、スケールデータを記憶するスケール記憶手段と、入力された文字コード列のなかの特定要素である文字コードを基準データとして選択する基準データ選択手段と、前記基準データに対して基準の音高を割り当てるとともに、入力された文字コード列の各文字コードを、前記基準データと前記基準の音高と前記スケール記憶手段とを用いてスケール音の音高に変換して音列を生成する音列生成手段と、を有することを特徴とする音列合成装置が提供される。
この構成によれば、入力文字コード列の特定要素を基準データとして選択し、この基準データに対して基準の音高を割り当て、入力文字コード列の各文字コードを基準データとの関係においてスケールの音高に変換しているので、文字コード列を入力するだけで、スケール音の音高列から成る音楽的な音列を得ることが容易になり、誰でも簡単にオリジナルメロディを得ることができる。
【0006】
更に、この発明によれば、文字コード列を入力する文字コード列入力手段と、スケールデータを記憶するスケール記憶手段と、各音高に割り当てるべき音長データを記憶する音長データ記憶手段と、入力された文字コード列から音列を生成する音列生成手段であって、(a)入力された文字コード列の各文字コードを前記スケール記憶手段を用いてスケール音の音高に変換することにより、音列の音高列を生成する音高列生成手段と、(b)変換された音高を前記音長データ記憶手段を用いて音長に変換することにより、前記変換された各音高に対応する音長を取得する音長変換手段と、から成る音列生成手段と、を有することを特徴とする音列合成装置が提供される。
この構成によれば、入力文字コードをスケール上の音高に変換し、変換した音高をそれに対応づけた音長に変換しているので、入力文字コード列からリズムをもった音列を簡単に得ることができる。
【0007】
更に、この発明によれば、文字コード列を入力する文字コード列入力手段と、スケールデータを記憶するスケール記憶手段と、各音高に割り当てるべき音長と休符長のデータを記憶する音長・休符長記憶手段と、入力された文字コード列から音列を生成する音列生成手段であって、(a)入力された文字コード列の各文字コードを前記スケール記憶手段を用いてスケール音の音高に変換することにより、音列の音高列を生成する音高列生成手段と、(b)変換された音高を前記音長・休符長記憶手段を用いて音長とそれに続く休符長に変換することにより、音列のリズムを生成するリズム生成手段と、から成る音列生成手段と、を有することを特徴とする音列合成装置が提供される。
この構成によれば、入力文字コードをスケール上の音高に変換し、変換した音高をそれに対応づけた音長とそれに続く休符長に変換しているので、入力文字コード列から、所望のリズムをもった音列を簡単に得ることができる。
【0008】
更に、この発明によれば、文字コード列を入力する文字コード列入力手段と、スケールデータを記憶するスケール記憶手段と、各音高に割り当てるべき音長データを記憶する音長データ記憶手段と、各音高に割り当てるべきエンベロープ制御データを記憶するエンベロープ制御データ記憶手段と、入力された文字コード列から音列を生成する音列生成手段であって、(a)入力された文字コード列の各文字コードを前記スケール記憶手段を用いてスケール音の音高に変換することにより、音列の音高列を生成する音高列生成手段と、(b)変換された音高を前記音長データ記憶手段を用いて音長に変換することにより、前記変換された各音高に対応する音長を取得する音長変換手段と、(c)変換された音高を前記エンベロープ制御データ記憶手段を用いてエンベロープ制御データに変換することにより、前記変換された各音高に対応するエンベロープ制御データを取得するエンベロープ変換手段と、(d)変換された音高と、これに対応する音長及びエンベロープ制御データに従う波形を順次作成する波形作成手段と、から成る音列生成手段と、を有することを特徴とする音列合成装置が提供される。
この構成によれば、入力文字コードをスケール上の音高に変換し、変換した音高をそれに対応する音長とエンベロープ制御データに変換し、変換した音高、音長及びエンベロープ制御データを用いて波形データを作成しているので入力文字コード列から音楽的な表現、リズムの付いた音列を得ることができる。
【0009】
更に、この発明によれば、文字コード列を入力する文字コード列入力手段と、スケールデータを記憶するスケール記憶手段と、入力された文字コード列から音列を生成する音列生成手段であって、(a)入力された文字コード列のなかの特定要素である文字コードを基準データとして選択する基準データ選択手段と、(b)前記基準データに対して基準の音高を割り当てる基準音高割当手段と、(c)入力された文字コード列の各文字コードと前記基準データとの差を算出する差算出手段と、(d)算出された差を前記スケール記憶手段を用いて変換して音程を算出する音程算出手段と、(e)前記基準音高と前記音程とから各文字コードの音高を決定することにより、音高列を生成する音高列生成手段と、から成る音列生成手段と、を有することを特徴とする音列合成装置が提供される。
この構成によれば、入力文字コード列の各文字コードをスケール上の音高に変換する際に、入力文字コード列の特定要素を基準データとして選び、この基準データに基準の音高を割り当て、入力された各文字コードと基準データとの差を算出し、この差をスケール上の音程に変換し、この音程を基準音高と組み合わせて各文字コードの音高を決定しているので、入力文字コード列から音楽的な音列を得ることが容易になる。
【0010】
この構成に加え、繰り返し制御手段を設け、この繰り返し制御手段にて基準データ選択手段、基準音高割当手段、差算出手段、音程算出手段及び音高列生成手段による、入力文字コード列から音列への変換動作を繰り返し、変換動作の都度、基準データを変更するように制御する。
このようにすれば、同じ入力文字コード列から、複数の異なる音列を簡単に得ることができる。
【0011】
【発明の実施の形態】
以下、図面を参照してこの発明の実施の形態を説明する。
図1にこの発明による音列合成装置の機能ブロック図を示す。
文字コード列入力部10は文字コード列を入力する。この発明に従い、音列生成部20は入力された文字コード列から音列を生成する。
音列生成部20は音高列生成部30を有する。音高列生成部30は、入力された文字コード列の各文字コードをスケールデータベース40を用いてスケール上の音高に変換することにより音列の音高列を生成する。ここにスケールデータベースはスケールのピッチクラスセット(スケールデータ)を記憶するメモリである。
1つの簡単な例では、音高列生成部30は文字コードの値または文字コード値に対してモジュロ演算等の演算をした値(例えば、文字コード値mod12)をスケールの構成音番号とみることにより、スケールデータベースから該当する構成音番号のピッチクラスまたは音高を得る。
【0012】
好ましい構成例では、音高列生成部30は、基準データ選択部31と差算出変形部32を有する。基準データ選択部31は、入力された文字コード列のなかの特定の要素(例えば特定番目、例えば最後に入力された文字コード)である文字コードを基準データとして選択し、この基準データに対して基準の音高を割り当てる。差算出・変形部は、入力された文字コード列の各文字コードと基準データとの差を算出し、この差をスケールデータベース40を用いて変換して音程(基準の音高に対する音程)を求め、この音程と基準の音高とを合成して各文字コードの音高を決定する。
上記基準の音高はスケールの特定の構成音(例えば主音)に対応づけられる。したがってこの構成によれば、入力文字コード列の特定の要素が基準データとしてスケールの特定の構成音に対応づけられるため、調性上自然な音高列を得ることが容易になる。
【0013】
好ましい構成例において、音列生成部20は音高列生成部30が生成した音高列から音列のリズムを生成するリズム生成部50を有する。
リズム生成部50は音高に対応してリズムデータを記憶するリズムデータベース60を用いることにより、音高列をリズムに変換する。
一構成例において、リズムデータベース60は、各音高に割り当てるべき音長と休符長のデータを記憶する音長・休符長データベース61を有する。この場合、リズム生成部50は、生成された音高列の各音高を音長・休符長データベース61を用いて音長とそれに続く休符長に変換する。
なお、音長・休符長データベース61の代りに、各音高に割り当てるべき音長データを記憶する音長データベースを用いることができる。
【0014】
更にリズムデータベース60は各音高に割り当てるべきエンベロープ制御データを記憶するエンベロープ制御データベース62を有し得る。この場合、リズム生成部50は生成された音高列(ピッチデータの列)の各音高を用いてエンベロープ制御データベース62をルックアップして対応するエンベロープ制御データに変換する。
更に音列生成部20は生成された音列の各音の波形を生成する波形生成部70を有し得る。音高列生成部30とリズム生成部50とにより、各文字コードが音高、音長及びエンベロープ制御データに変換される場合において、波形生成部70はこれらの変換情報(音高、音長、エンベロープ制御データ)に従う波形を生成する。
【0015】
図2は本音列合成装置のハードウェア構成例を示すブロック図である。
CPU1はROM2に記憶されたプログラムに従ってシステムの各部を制御する。ROM2はプログラムと固定データを記憶する。RAM3はCPU1のワークメモリとして使用される。入力装置は文字(数字のみでもよく、数字を含む文字でもよいし、数字を含まない文字でもよい)と制御用のコードを入力する。楽音合成装置は作成された波形データからアナログの楽音信号を出力する。サウンドシステム6はアンプ、スピーカを含み、楽音信号を増幅して放音する。
【0016】
図3は音列合成装置が使用するデータベースを示すものである。
スケールデータベースscale[ ]は複数のスケールのピッチクラスセットを記憶する。ここでは、1オクターブのなかのどの音(どのピッチクラスの音またはどの度数の音)がスケール音であるかどうかを“1”、“0”のデータで表現している。
音長データベースdur[ ]は1オクターブ内の各音高に割り当てられるべき音長データを記憶する。
休符長データベースrest[ ]は1オクターブ内の各音高に割り当てるべき休符長データを記憶する。
ホールド時間データベースhold[ ]は1オクターブ内の各音高に割り当てるべきエンベロープ制御データとしてホールド時間データを記憶する。
【0017】
なお図3の例では各データベースはとり得る音高の範囲を1オクターブに圧縮して表現しているがこれには限らず、例えば数オクターブにわたる音高のそれぞれに対応づけてデータをもたせるようにしてもよい。またスケールデータベースは各スケールの音名コード(例えばC=“1”、C♯=“2”)を記憶する構造でもよい。
また、図3のスケールデータベースscale[ ]において、記号“C”は音名、音高またはピッチクラスの意味としてとらえてもよいし、あるいはスケールの度数1(または1度の音程)としてみてもよい。これにより、ある基準音高、例えばE3(第3オクターブのE)をスケールの度数1のスケール音に対応づけた場合、例えば、記号“G”に対応するスケール音は基準音高E3に対して完全5度の音程をもつ音高B3として解釈される。
【0018】
図4に音列合成装置の動作において使用する変数を示す。
文字コード列char[ ]は入力装置4から入力された文字コード列を表す。
波形データwave[ ]は各サンプリングポイントでの波形の振幅値を記憶する。
その他の変数として、データポインタptr、ノート番号note(スケール上の音高を表わす)、周波数freq、基準周波数basef、基準データbased、円周率×2である2pi、サンプリング周波数fs、発音中の長さlen、振幅定数amp、エンベロープ定数env、データのレンジrange、カウンタcnt、単位時間長time_unit、振幅変更定数rel、時定数k、ノートオフセットnote_offset(例えば24)等が使用される。
【0019】
図5に本音列合成装置の全体動作を表わすメインルーチンのフローチャートを示す。
A1で各種変数(basef、2pi、time_unit等)を初期化する。
A2で入力装置4をキースキャンし、ユーザーの入力操作に従って対応する処理を実行する。すなわち、文字コード列などの入力指示(A3)に対しては、入力処理A4を実行し、メロディ作成の指示入力A5に対してはメロディ(音列)作成処理A6を実行し、モニター(音列の再生)の指示入力A6に対してはモニター処理A8(楽音合成装置5を動作させて生成した音列を楽音として再生する処理)を実行する。なお、図5のフローには示していないが、スケールデータベースscale[ ]上のどのスケールをメロディ作成処理A6で使用するか決めるスケール選択処理を加えることが好ましい。スケール選択処理は、入力装置4からスケールの種類を選択入力することで行われる。
【0020】
図6に入力処理A4のフローチャートを示す。
まずデータカウンタdcを“0”に初期化し(B1)、B2でキーをスキャンして操作キーコードkey[ ]を読み取る。
操作キーが終了キー(例えばエンターキー)なら、変数char[dc]に終了コードendをセットする(B3、B4)。操作キーが文字キーならばその文字コードkey[key ID]をchar[dc]にセットし、データカウンタdcをインクリメントする(B5〜B7)。
簡単な構成例では文字キーとしてテンキー(0〜9の数値入力キー)を使用できる。あるいは、アルファベット等の文字キーを使用するようにしてもよい。
【0021】
図7に第1の態様によるメロディ作成(メロディ作成(1))のフローチャートを示す。
C1でデータポインタptrを文字コード列の先頭である“0”に初期化する。
C2でスケールデータベースscale[ ]を用いて文字コードchar[ptr]をノート番号に変換する。これは、スケールデータベースscale[ ]上の選択スケール(例えばメジャースケール)からchar[ptr]番目のスケール音をさがし出すことによって行われる。例えば、ノート番号カウンタとスケール音カウンタを用い、ノート番号カウンタを所定値に初期化し、スケール音カウンタを“0”に初期化し、スケールの先頭データ(図3の“C”の位置のデータ)からスケールの終りのデータ(図3の“B”のデータ)に向けてスキャンし、その間、ノート番号カウンタを順次インクリメントし、スケール音を見つけたら、スケール音カウンタをインクリメントし、文字コードchar[ptr]と比較する。なお、1オクターブ分のスケールをみてもchar[ptr]番目のスケール音がみつからない場合には、スケールを再び先頭からサーチする処理を繰り返すことによりchar[ptr]番目のスケール音をみつけ出して、対応するノート番号を得る。
【0022】
C3でノート番号noteに対応する周波数freqを求める。周波数freqは、
freq=basef×2(100 × note/1200)
で定められる。ここにbasefはnote=0に対応する基準周波数である。freqは演算で直接求めてもよいし、指数変換テーブルを用いて求めてもよい。
C4でnoteの波形データを作成する。
C5でデータポインタptrをインクリメントする。
C6で処理終了(ptr=dc)でなければC2に戻る。
【0023】
図8に波形データ作成C4のフローD1〜D4を示す。
波形データは、周期関数を用いて作成される。図8では周期関数としてsinを用いているが、他の任意の周期関数、例えば、矩形波や三角波でもよい。波形データ作成処理は周波数と音色情報に応じて波形信号を出力する音源装置で行うようにしてもよい。
D2〜D4のループで作成される波形データの数は、音長(秒)×fs(fsはサンプリング周波数)で与えられる。図8には音長の求め方を示していないが、予め初期設定した値を用いてもよいし、あるいは、波形データ作成C4の前処理として乱数発生器等により音長データを得るようにしてもよい。あるいは、図2に示す音長データベースdur[ ]からnoteの音長dur[note]を得るようにしてもよい。
【0024】
図17に第1態様のメロディ作成(1)(図7)の動作例を示す。メジャースケールの場合と全音音階(ホールトーンスケール)の場合を示してある。この動作例では入力される文字コードとして0〜9の数字コードを使用している。この場合、音列の音域があまり広くならず1オクターブか1オクターブ半程度に収まるので都合がよい。
このように第1態様の音列合成装置によれば、文字コードの列を入力するだけで音列(メロディ)が生成される。
【0025】
第2態様の音列合成装置によるメロディ作成のフローをメロディ作成(2)として図9に示す。
図中、E1、E4〜E7は、メロディ作成(1)(図7)のフローのC1、C3〜C6に対応している。異なる点は、E2の基準データbasedを求める処理とE3のノート番号を求める処理である。
基準データを求める処理E2では、入力された文字コード列char[ ]のなかの特定の要素である文字コードを基準データbasedとして選択する。
ノート番号を求める処理E3では、この基準データに対して基準の音高note_offsetを割り当て、この基準の音高をスケールの特定の構成音(例えば主音)に対応づける。そして、入力文字コード列の各文字コードと基準データとの差を算出し、この差をスケールデータベースscale[ ]を用いて音程(基準音高に対する音程)に変換し、この音程を基準音高に加えて各文字コードの音高(ノート番号)を求める。
【0026】
基準データを求める処理E2のフローの例を図10にF1〜F4で示す。ここでは、入力文字コード列の最後の文字コード(エンドマークendより1つ前にある文字コード)を基準データbasedとして選択している(F2、F4)。
ノート番号を求める処理E3のフローの例を図11に示す。
まずG1でノート番号のカウンタcntに、基準データに割り当てる基準音高のノート番号note_offsetをセットし、スケール音のカウンタscntを“0”に初期化する。
【0027】
入力文字コードchar[ptr]が基準データbasedのときは(char[ptr]=based)、ノート番号noteとして基準音高note_offset(例えば24)を割り当てる(G2、G14)。
入力文字コードの値char[ptr]が基準データbasedより大きいとき(G3でYESのとき)は次のようにしてノート番号noteを求める。
まずノート番号のカウンタcntをインクリメントし(G4)、スケールデータベースscale[ ]から、このノート番号に対応する音がスケール音かどうか、即ち、
scale[scale_id×12+(cnt mod12)]=1
かどうかチェックする(G5)。ここにscale_idは選択されたスケールの番号である。
【0028】
cntに対応する音がスケール音ならスケール音カウンタをインクリメントする(G6)。
G7で入力文字コードと基準データとの差(char[ptr]−based)を求め、スケール音カウンタscntの値がこの差の値に達したかどうかチェックする。
達してなければG4へ戻る。
【0029】
達しているときは、そのときの(cnt−note_offset)の値は、char[ptr]に対して割り当てるべき音高(ノート番号)が基準音高note_offsetに対して有する音程を表わしている。したがってこの音程(cnt−note_offset)を基準音高note_offsetに加えることにより、文字コードchar[ptr]を変換した音高(ノート番号)が得られる。
note=note_offset+cnt−note_offset
(note=cntとしてもよいが、(cnt−note_offset)が基準音高に対する音程であることを示すためにこのようにした)。
【0030】
このように、入力文字コード値char[ptr]が基準データbasedより大きいときは、両者の差(char[ptr]−based)を求め、この差をスケールデータベースの選択スケール上で変換して、音程(cnt−note_offset)を求め、この音程に基準音高note_offsetを加えることによって文字コードchar[ptr]の音高noteを決定している。
入力文字コード値char[ptr]が基準データbasedより小さいとき(G3でNOのとき)は次のようにして文字コードchar[ptr]の音高noteを決定する。
この場合は、G4のようにノート番号カウンタcntをインクリメントするのではなく、デクリメントする(G6)。
【0031】
cntに対応する音がスケール音かどうかをチェックし、スケール音ならスケール音カウンタscntをインクリメントする点(G10、G11)は、char[ptr]>basedの場合と同様である。
G12では、scnt=based−char[ptr]かどうか、即ち、基準データと文字コードchar[ptr]の差を求め、この差にスケール音カウンタscntが達したかどうかチェックする。
達してなければG9へ戻る。
達していれば、そのときの−1×(note_offset−cnt)の値が、音程、即ち、変換されるべき音高noteが基準音高に対して有する音程を表わしている。
【0032】
したがって、
note=note_offset+(−1×(note_offset−cnt))
により、文字コードchar[ptr]に対する音高(ノート番号)noteが決定される(G13)。
したがって、入力文字コードchar[ptr]が基準データbasedより小さいときも、差(based−char[ptr])を求め、この差をスケールデータベースの選択スケール上で変換して音程(cnt−note_offset)を求め、この音程に基準音高note_offsetを加えて入力文字コードchar[ptr]に対するノート番号noteを決定している。
【0033】
図11のフローにおいては、基準データの音高である基準音高note_offsetをスケールデータベース上のスケールの主音cに対応づけている(note_offset=12の倍数にした場合)。即ち、G5の式においてcnt=note_offset=12の倍数にしたとき、選択スケールscale_idの最初のスケール音(主音)cが位置ぎめされる。
なお、基準音高note_offsetは12の倍数でなくてもよく、それに対応するようにフローを変形することは容易である。即ち、基準データに割り当てるべき音高として任意の所望の音高を定めることができる。
【0034】
第2態様の音列合成装置によれば、文字コード列を入力するだけでメロディ(音列)が生成される。更に、入力文字コード列の特定の要素(例えば最後の文字コード)を基準データとして、これをスケールの特定の構成音(例えば主音)として基準音高を割り当てて、入力文字コード列の変換音高列を基準音高によってスケール上で相対化して決定しているので、音楽的に自然な音高列を得ることが容易になる利点がある。
【0035】
なお、図11のフローでは、文字コードchar[ptr]が基準データbasedより大きいときはカウンタcntをインクリメントして基準音高より高い音高を求め、基準データより小さいときはカウンタcntをデクリメントして基準音高より低い音高を求めているが、この逆でもよい。
第2態様の音列合成装置の動作例を図18に示す。文字コードとしては0〜9の数字コードを使用した。最終文字コードは“2”で、これを基準データとしてその音高(基準音高)をC2(ノート番号24)にした。スケールとしてはメジャースケールを使用した。
【0036】
図12に第3態様のメロディ作成のフローをメロディ作成(3)として示す。このフローH1〜H7は図9のメロディ作成(2)のフローE1〜E7に対応しているが、波形データ作成処理H5で入力文字コードから得た音高に対応づけた発音時間の処理を行っている点が異なる。
波形データ作成処理H5のフローチャートの一例を図13に波形データ作成(2)として示す。
図13のフローI1〜I8では、波形データ作成の際に、図3に示すような音長データベースdur[ ]と休符長データベースrest[ ]を使用する。ここに、参照符号100に示すように、音長durとは音の発音中の時間であり休符長restとは発音後の休止時間である。
【0037】
I4に示すdur[note]は音長データベースdur[ ]から読み取った、ノート番号noteのピッチクラスに対応づけた音長データを表わしている。dur[note]×time_unitが音長に対応する波形データの数である。発音中の波形データの値wave[ptr]は、周期関数としてsinを用いた場合は、既に述べたように、wave[ptr]=sin(2pi×ptr×freq/fs)で与えられる(I2)。
したがってI1とループI2〜I4で音が発音中のときの波形データを作成している。
【0038】
一方、I8に示すrest[note]は休符長データベースrest[ ]から読み取った、ノート番号noteのピッチクラスに対応づけた休符長データを表わしている。休符長に相当する波形データの数はrest[note]×time_unitで与えられる。ただし、休止中であるので波形データの値(振幅値)としては“0”を入れる(I6)。
したがって、I5とループI6〜I8で休止中の波形データを作成している。
【0039】
波形データ作成処理H5のフローチャートの別の例を図14に波形データ作成(3)として示す。
図14のフローJ1〜J12では、波形データ作成の際に、図3に示すような音長データベースdur[ ]、休符長データベースrest[ ]及びホールド時間データベースhold[ ]を使用する。
参照符号200に示すように、ホールド時間holdは発音中durにおいて波形のレベルがホールドされる時間である。ここではホールド後は波形のレベルが減衰して音がリリースされるようにしている。
J2とループJ3〜J8で発音中の波形データを作成している。ホールド時間hold[note]中の波形データの値は、
wave[ptr]=amp×sin(2pi×ptr×freq/fs)
で算出する(I3)。
【0040】
ホールド時間後の発音は、即ち、J5でptr≧hold[note]×time_unitが成立し、J8でptr<dur[note]×time_unitのときは、J3で求めたwave[ptr]に係数relを乗じて、減衰された波形データ値wave[ptr]を得る(J6)とともにrel=rel×Kにより係数relを更新する(J7)。
発音後の休止時間中の処理J9〜J12は図13の処理I5〜I8と同様である。
なお図14ではエンベロープ制御データとして音高に対応づけたホールド時間データを使用しているが他のエンベロープ制御データを用いてもよい。
【0041】
メロディ作成(3)を実行する第3態様の音列合成装置の動作例を図19に示す。
入力文字コードとして0〜9の数字コードを使用し、スケールとしてメジャースケールを使用した。
このように第3態様の音列合成装置によれば、文字コードの列を入力するだけで音列(メロディ)を生成できる。更に、文字コード列の特定要素を基準データとしてスケール上に相対化して音高列を生成するとともに、生成した音高列を音高に対応するリズムデータベース(音長データベース、休符長データベース、エンベロープ制御(ホールド時間)データベース)によりリズムに変換しているので、音楽的に自然な音列を容易に得ることができる。
【0042】
さて、入力文字コードのとり得る値の範囲(入力文字コードの種類の数)が大きいときは、入力文字コードから音高への変換を1対1対応で行うと、生成される音高列の音域が広くなりすぎる。このような場合、入力文字コードからスケール上の音高への変換を多対1対応で行うと音高列の音域を適当な範囲にコントロールできる。
この原理に従って音高(ノート番号)を求める処理のフローチャートを図15に示す。
図15のフローK1〜K14を図11のフローG1〜G14と比べてみると、K7とK12のところだけ違っていることがわかる。
【0043】
すなわち、K7では、(char[ptr]−based)/rangeを求め、この値にスケール音カウンタscntが達しているかどうかチェックしており、K12では(based−char[ptr])/rangeを求め、この値にスケール音カウンタscntが達しているかどうかをチェックしている。
基準データbasedと文字コードchar[ptr]との差をレンジデータrangeで圧縮することにより、生成される音高(ノート番号note)の音域がコントロールされる。
(char[ptr]−based)/rangeまたは(based−char[ptr])/rangeの圧縮演算の代りに、(char[ptr]−based)mod RANGEまたは(based−char[ptr])mod RANGEのようなモジュロによる圧縮演算を行ってもよい。
【0044】
なお、図15のフローは、基準データbasedを用いる方式であるが、基準データを用いなくてもよい。その場合、例えば、char[ptr]mod RANGEの値をスケール音カウンタscntと比較することによって文字コードchar[ptr]を音高noteに変換できる。
【0045】
第4態様の音列合成装置によるメロディ作成のフローチャートをメロディ作成(4)として図16に示す。
図16のフローL1〜L8では、入力文字コード列から音列への変換を所定回数繰り返すようにし(L8参照)、変換の都度、基準データを変更している。即ち、基準データを求める処理L2では、実行の都度、カウンタcntの値に対応する入力文字コードを基準データとして選択することにより、基準データを変更している(例えばcnt=0なら最後の入力文字コード、cnt=1なら最後より1つ前の入力文字コードを基準データとする)。
【0046】
第4態様の音列合成装置によれば、上述した効果のほか、同じ入力文字列から複数の異なる音列を得ることができる利点がある。
以上で実施の形態の説明を終えるが、この発明の範囲内で種々の変形が可能である。
【0047】
【発明の効果】
この発明によれば、音列合成装置の入力手段として文字コード列を入力する手段を用い、入力文字コード列をスケール記憶手段を介してスケール音の音高列に変換しているので、ユーザーに音楽知識は全く必要なく、きわめて簡単な入力操作から音列を合成することができる。
【図面の簡単な説明】
【図1】この発明による音列合成装置の機能ブロック図。
【図2】音列合成装置のハードウェア構成例を示すブロック図。
【図3】音列合成装置が使用するデータベースを示す図。
【図4】音列合成装置が使用する変数を示す図。
【図5】音列合成装置の全体動作を表わすメインルーチンのフローチャート。
【図6】入力処理のフローチャート。
【図7】メロディ作成(1)のフローチャート。
【図8】波形データ作成のフローチャート。
【図9】メロディ作成(2)のフローチャート。
【図10】基準データ選択のフローチャート。
【図11】ノート番号を求める処理のフローチャート。
【図12】メロディ作成(3)のフローチャート。
【図13】波形データ作成(2)のフローチャート。
【図14】波形データ作成(3)のフローチャート。
【図15】ノート番号を求める処理(2)のフローチャート。
【図16】メロディ作成(4)のフローチャート。
【図17】メロディ作成(1)の動作例を示す図。
【図18】メロディ作成(2)の動作例を示す図。
【図19】メロディ作成(3)の動作例を示す図。
【符号の説明】
1 CPU
2 ROM
4 入力装置
10 文字コード列入力部
20 音列生成部
30 音高列生成部
31 基準データ選択部
32 差算出・変形部
40 スケールデータベース
50 リズム生成部
60 リズムデータベース
61 音長・休符長データベース
62 エンベロープ制御データベース
70 波形生成部
Claims (6)
- 文字コード列を入力する文字コード列入力手段と、
スケールデータを記憶するスケール記憶手段と、
入力された文字コード列のなかの特定要素である文字コードを基準データとして選択する基準データ選択手段と、
前記基準データに対して基準の音高を割り当てるとともに、入力された文字コード列の各文字コードを、前記基準データと前記基準の音高と前記スケール記憶手段とを用いてスケール音の音高に変換して音列を生成する音列生成手段と、
を有することを特徴とする音列合成装置。 - 文字コード列を入力する文字コード列入力手段と、
スケールデータを記憶するスケール記憶手段と、
各音高に割り当てるべき音長データを記憶する音長データ記憶手段と、
入力された文字コード列から音列を生成する音列生成手段であって、
(a)入力された文字コード列の各文字コードを前記スケール記憶手段を用いてスケール音の音高に変換することにより、音列の音高列を生成する音高列生成手段と、
(b)変換された音高を前記音長データ記憶手段を用いて音長に変換することにより、前記変換された各音高に対応する音長を取得する音長変換手段と、
から成る音列生成手段と、
を有することを特徴とする音列合成装置。 - 文字コード列を入力する文字コード列入力手段と、
スケールデータを記憶するスケール記憶手段と、
各音高に割り当てるべき音長と休符長のデータを記憶する音長・休符長記憶手段と、
入力された文字コード列から音列を生成する音列生成手段であって、
(a)入力された文字コード列の各文字コードを前記スケール記憶手段を用いてスケール音の音高に変換することにより、音列の音高列を生成する音高列生成手段と、
(b)変換された音高を前記音長・休符長記憶手段を用いて音長とそれに続く休符長に変換することにより、音列のリズムを生成するリズム生成手段と、
から成る音列生成手段と、
を有することを特徴とする音列合成装置。 - 文字コード列を入力する文字コード列入力手段と、
スケールデータを記憶するスケール記憶手段と、
各音高に割り当てるべき音長データを記憶する音長データ記憶手段と、
各音高に割り当てるべきエンベロープ制御データを記憶するエンベロープ制御データ記憶手段と、
入力された文字コード列から音列を生成する音列生成手段であって、
(a)入力された文字コード列の各文字コードを前記スケール記憶手段を用いてスケール音の音高に変換することにより、音列の音高列を生成する音高列生成手段と、
(b)変換された音高を前記音長データ記憶手段を用いて音長に変換することにより、前記変換された各音高に対応する音長を取得する音長変換手段と、
(c)変換された音高を前記エンベロープ制御データ記憶手段を用いてエンベロープ制御データに変換することにより、前記変換された各音高に対応するエンベロープ制御データを取得するエンベロープ変換手段と、
(d)変換された音高と、これに対応する音長及びエンベロープ制御データに従う波形を順次作成する波形作成手段と、
から成る音列生成手段と、
を有することを特徴とする音列合成装置。 - 文字コード列を入力する文字コード列入力手段と、
スケールデータを記憶するスケール記憶手段と、
入力された文字コード列から音列を生成する音列生成手段であって、
(a)入力された文字コード列のなかの特定要素である文字コードを基準データとして選択する基準データ選択手段と、
(b)前記基準データに対して基準の音高を割り当てる基準音高割当手段と、
(c)入力された文字コード列の各文字コードと前記基準データとの差を算出する差算出手段と、
(d)算出された差を前記スケール記憶手段を用いて変換して音程を算出する音程算出手段と、
(e)前記基準音高と前記音程とから各文字コードの音高を決定することにより、音高列を生成する音高列生成手段と、
から成る音列生成手段と、
を有することを特徴とする音列合成装置。 - 文字コード列を入力する文字コード列入力手段と、
スケールデータを記憶するスケール記憶手段と、
入力された文字コード列から音列を生成する音列生成手段であって、
(a)入力された文字コード列のなかの特定要素である文字コードを基準データとして選択する基準データ選択手段と、
(b)前記基準データに対して基準の音高を割り当てる基準音高割当手段と、
(c)入力された文字コード列の各文字コードと前記基準データとの差を算出する差算出手段と、
(d)算出された差を前記スケール記憶手段を用いて変換して音程を算出する音程算出手段と、
(e)前記基準音高と前記音程とから各文字コードの音高を決定することにより、音高列を生成する音高列生成手段と、
(f)前記基準データ選択手段、基準音高割当手段、差算出手段、音程算出手段及び音高列生成手段による音列の生成動作を所定の回数繰り返し、繰り返しの都度、前記基準データ選択手段が選択する基準データを変更する繰り返し制御手段と、
から成る音列生成手段と、
を有することを特徴とする音列合成装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP06921998A JP3651241B2 (ja) | 1998-03-05 | 1998-03-05 | 音列合成装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP06921998A JP3651241B2 (ja) | 1998-03-05 | 1998-03-05 | 音列合成装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11249680A JPH11249680A (ja) | 1999-09-17 |
JP3651241B2 true JP3651241B2 (ja) | 2005-05-25 |
Family
ID=13396403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP06921998A Expired - Fee Related JP3651241B2 (ja) | 1998-03-05 | 1998-03-05 | 音列合成装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3651241B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1501072A4 (en) * | 2002-03-25 | 2005-07-20 | Yoshihiko Sano | METHOD, DEVICE AND SYSTEM FOR GENERATING REPRESENTATION |
JP6081382B2 (ja) * | 2013-04-15 | 2017-02-15 | 清 宮浦 | 音声生成装置、音声生成方法及びプログラム |
-
1998
- 1998-03-05 JP JP06921998A patent/JP3651241B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH11249680A (ja) | 1999-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3812328B2 (ja) | 自動伴奏パターン発生装置及び方法 | |
US20010047717A1 (en) | Portable communication terminal apparatus with music composition capability | |
US6175072B1 (en) | Automatic music composing apparatus and method | |
CN1770258B (zh) | 表演风格确定设备和方法 | |
JP3454140B2 (ja) | コンピュータ用キーボードを楽器用鍵盤として使用する装置、方法、及びプログラムを記録した媒体 | |
JPH0363078B2 (ja) | ||
JP3651241B2 (ja) | 音列合成装置 | |
JP3453044B2 (ja) | 楽音合成装置 | |
US5399800A (en) | Electronic musical instrument including an apparatus for aurally and visually displaying specification explanations and states of the electronic musical instrument | |
US4178825A (en) | Musical tone synthesizer for generating a marimba effect | |
JP3234593B2 (ja) | 電子楽器 | |
JP2623955B2 (ja) | 電子楽器 | |
JP3704901B2 (ja) | 自動演奏装置、自動演奏方法及び記録媒体 | |
JP3926445B2 (ja) | 楽音合成装置 | |
JP3933070B2 (ja) | アルペジオ生成装置及びプログラム | |
JP3158918B2 (ja) | 自動伴奏装置 | |
JPH0527762A (ja) | 電子楽器 | |
JPH06337677A (ja) | 自動伴奏装置 | |
JPH0453997A (ja) | 音声開発装置 | |
JPS6328473Y2 (ja) | ||
JP3413846B2 (ja) | 楽音合成装置 | |
JP4900233B2 (ja) | 自動演奏装置 | |
JPS61279893A (ja) | 自動演奏装置 | |
JPH02264998A (ja) | 楽音生成装置 | |
JP2639893B2 (ja) | 電子楽器のピッチ・データ発生装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040921 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041006 |
|
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: 20050201 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050214 |
|
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: 20090304 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100304 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110304 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110304 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120304 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130304 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130304 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140304 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |