JP3625914B2 - Arpeggiator - Google Patents

Arpeggiator Download PDF

Info

Publication number
JP3625914B2
JP3625914B2 JP24105695A JP24105695A JP3625914B2 JP 3625914 B2 JP3625914 B2 JP 3625914B2 JP 24105695 A JP24105695 A JP 24105695A JP 24105695 A JP24105695 A JP 24105695A JP 3625914 B2 JP3625914 B2 JP 3625914B2
Authority
JP
Japan
Prior art keywords
note
scan
routine
stored
information
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
JP24105695A
Other languages
Japanese (ja)
Other versions
JPH0990953A (en
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 JP24105695A priority Critical patent/JP3625914B2/en
Priority to US08/652,368 priority patent/US5714705A/en
Publication of JPH0990953A publication Critical patent/JPH0990953A/en
Application granted granted Critical
Publication of JP3625914B2 publication Critical patent/JP3625914B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、押鍵情報を走査しその走査結果に従って複数の演奏情報を順次生成するアルペジエータに関する。
【0002】
【従来の技術】
従来の電子楽器には、いわゆるアルペジエータと呼ばれる機能が搭載されているものがある。このアルペジエータとは、時間の経過毎に、押鍵情報を、例えば音高の低い方から高い方へと順番に走査し、その結果に従って演奏情報を順次出力する機能である。
【0003】
この機能によって、演奏者にとって本来演奏の困難なアルペジオ演奏を、単に複数の鍵を同時に押鍵するだけの簡単な演奏操作によって実現することができる。
【0004】
【発明が解決しようとする課題】
しかしながら、従来のアルペジエータは、ある決まった一定の時間間隔で押鍵情報を走査してその一定の時間間隔で演奏情報を順次出力するものであり、このため発音タイミングは完全に均等になり、人間らしさがなく、音楽的に味気ないものとなってしまう傾向があった。
【0005】
また、楽音の発音持続時間や楽音の音量等の楽音の特質も均等であり、この点からも人間らしさがなく、音楽的に味気ないアルペジオ演奏となってしまっていた。本発明は、従来のアルペジエータでは不可能であった、より音楽的なアルペジオ演奏を簡単な操作で行なうことのできるアルペジエータを提供することを目的とする。
【0006】
【課題を解決するための手段】
上記目的を達成する本発明の第1のアルペジエータは、
(1−1)複数の鍵それぞれに対応する記憶領域を有し、鍵が押鍵されたことを表わす押鍵情報を、押鍵された鍵に対応する記憶領域に、消去自在に書き込む押鍵情報記憶手段と、
(1−2)リズムの1ステップ毎に、あるステップと当該ステップに続く次のステップとの間の時間間隔と、当該ステップにおける楽音の発音持続時間情報とを組にして、1つのステップもしくは複数のステップそれぞれに記憶されて成るリズムパターンテーブルを記憶するリズムパターンテーブル記憶手段と、
(1−3)前記リズムパターンテーブルの各ステップを順次参照するととともに、該各ステップに対応して前記記憶領域を走査し、該走査により検出された押鍵情報、および前記リズムパターンテーブルの該走査に対応するステップに記録された発音持続時間情報との双方に基づく楽音を表わす演奏情報を、当該ステップに記録された時間間隔に従ったタイミングで生成する演奏情報生成手段とを備え、
前記演奏情報生成手段が、さらに発音持続時間の変更の度合いを規定する情報に基づき変更された楽音を表わす演奏情報を生成するものであることを特徴とする。
【0007】
また、上記目的を達成する本発明の第2のアルペジエータは、
(2−1)複数の鍵それぞれに対応する記憶領域を有し、鍵が押鍵されたことを表わす押鍵情報を、押鍵された鍵に対応する記憶領域に、消去自在に書き込む押鍵情報記憶手段と、
(2−2)リズムの1ステップ毎に、あるステップと当該ステップに続く次のステップとの間の時間間隔と、当該ステップにおける楽音の発音強度情報とを組にして、1つのステップもしくは複数のステップそれぞれに記憶されて成るリズムパターンテーブルを記憶するリズムパターンテーブル記憶手段と、
(2−3)前記リズムパターンテーブルの各ステップを順次参照するととともに、該各ステップに対応して前記記憶領域を走査し、該走査により検出された押鍵情報、および前記リズムパターンテーブルの該走査に対応するステップに記録された発音強度情報との双方に基づく楽音を表わす演奏情報を、当該ステップに記録された時間間隔に従ったタイミングで生成する演奏情報生成手段とを備え、
前記演奏情報生成手段が、さらに発音強度の変更の度合いを規定する情報に基づき変更された楽音を表わす演奏情報を生成するものであることを特徴とする。
【0008】
ここで、本発明の第1のアルペジエータにおいて、操作の度合いに応じて、前記発音持続時間の変更の度合いを規定する情報を生成する操作子を備えることが好ましい。
【0009】
また、本発明の第2のアルペジエータにおいて、操作の度合いに応じて、前記発音強度の変更の度合いを規定する情報を生成する操作子を備えることが好ましい。
【0010】
【発明の実施の形態】
以下、本発明の実施形態について説明する。
【0011】
図1は、本発明のアルペジエータの一実施形態の回路構成図である。ここには、CPU10、アドレスバス11およびデータバス12でそのCPU10と接続された、RAM13,ROM14,パネル15、およびCPU10にクロックの発生を通知するクロックタイマ16、MIDI規格に準拠したデータを入力するデータ入力端子(MIDI IN)17、MIDI規格に準拠したデータを出力するデータ出力端子(MIDI OUT)18が備えられている。
【0012】
ROM14は、読出し専用のメモリエリアであり、ここには、CPU10で実行されるプログラムや、そのプログラムで参照される各種テーブルが格納されている。プログラムやテーブルの詳細については後述する。RAM13は、CPU10で実行されるプログラムのワーキングエリアとして使用される。ここでは、このRAM13は電池でバックアップされており、電源を切ってもそのときのメモリ内容は保存される。メモリの内容について後述する。
【0013】
パネル15は、操作スイッチと表示器を持ち、パラメータを独立して選択しそのパラメータに値を設定することができる。設定された値はRAM13内のメモリに記憶される。図2は、パネル15を示した図である。このパネルでは、リズムパターン番号(Rhythem Pattern#)、スキャンモード番号(Scan Mode#)、およびグルーブレート(Groove Rate)を設定することができる。
【0014】
リズムパターンは、本実施形態では、発音タイミング、デュレーション、ベロシティ係数のパターンを組み合わせたものである。リズムパターン設定用操作子151は、値をインクリメントする操作ボタン151aと値をデクリメントする操作ボタン151bとのペアから成り、それらの操作ボタン151a,151bで設定した値は表示器151cに表示されるとともに、上述したように、RAM13に格納される。
【0015】
スキャンモードは押鍵情報をどのように走査するかというスキャン方式のセットをいう。スキャンモード設定用操作子152は、上記リズムパターン設定用操作子151と同様に、値をインクリメントする操作ボタン152aと値をデクリメントする操作ボタン151bとのペアから成り、それらの操作ボタン151a,151bで設定した値は、表示器152cに表示されるとともに、RAM13に格納される。
【0016】
グルーブレートは、いわゆる‘ノリ’の程度を定めるものであり、グルーブレート設定用操作子153はスライダから成り、そのスライドボタン153aを一番下に動かすとグルーブレートパラメータに値‘0’が設定され、一番上に動かすとグルーブレートパラメータに値‘100’が設定され、それらの中間に設定すると設定された位置に応じた、0〜100の間の値が設定される。この設定された値は、RAM13に格納される。
【0017】
各パラメータの詳細については後述する。図1に戻って説明を続行する。クロックタイマ16は、一定の周期でクロックを発生し、クロック発生のたびに、CPUに対し、クロックの発生を通知する。本実施形態では、96クロック分の時間が4分音符の発音時間と定めれており、このクロック周期によってアルペジオのテンポが決定される。
【0018】
データ入力端子(MIDI IN)17には、例えば図示のように鍵盤20が接続され、鍵盤20の演奏により生成された押鍵(ノートオン)情報、離鍵(ノートオフ)情報が入力される。また、その鍵盤20には、ホールドペダル21が接続されており、そのホールドペダル21の操作により生成されたホールドオン情報、ホールドオフ情報(これらを合わせてホールド情報と称する。)も、MIDIデータの一種として、データ入力端子17を経由して入力される。
【0019】
CPU10は、データ入力端子17から入力される押鍵情報、離鍵情報を受信してアルペジオ演奏用の演奏情報を順次生成し、その演奏情報をデータ出力端子18から外部に向けて出力する。データ出力端子18には、例えば図示のように音源30が接続されており、その音源30では受信した演奏情報に基づいて楽音信号が生成される。その楽音信号は、例えば音源30に内蔵された、あるいは音源30に接続されたアンプ、スピーカ等から成るサウンドシステムにより、楽音として空間に放音される。
【0020】
以下、先ず後述するプログラムで参照される、ROM内に記憶された各種テーブルについて説明し、次いで、RAM内に確保された各種メモリについて説明し、その後、それらのテーブルやメモリを用いたプログラムについて説明する。図3は、リズムパターンテーブルの基本パターンを示す図である。リズムパターンテーブルは、その各ステップがリズムの各ステップに対応しており、各ステップには、そのステップとそのステップに続く次のステップとの間の時間間隔(ステップタイム;Step Time)、そのステップのリズム音の持続時間(デュレーション;Duration)、そのステップのリズム音の発音の強さを規定するベロシティ係数(Velo.Coef.)が記録されており、最後にそのリズムパターンテーブルのサイズ(ステップ数;Step Size)が記録されている。1ステップ分のメモリ容量は、ステップタイムが2バイト、デュレーションが2バイト、ベロシテイ係数が1バイトの合計5バイトであり、ステップ数は、1バイトである。ステップタイム、デュレーションの欄は、前述したクロック(4分音符=96クロック)を単位とした数値が記録されている。
【0021】
このリズムパターンテーブルはROM内に複数種類記録されており、各リズムパターンテーブルには番号が付されている。図2に示すリズムパターン設定用操作子151を操作してそのリズムパターン番号を設定することにより、演奏者が任意のリズムパターンテーブルを選択することができる。ここでは、リズムパターンテーブル、およびそのステップ数は、それぞれ、RHY_XXX_TBL[n]、RHY_XXX_SIZEと表記される。XXXはそのリズムパターンテーブルの名称を表わし、[n]のnは、そのリズムパターンテーブル内部のステップ番号(0≦n<RHY_XXX_SIZE)である。
【0022】
またリズムパターンテーブル名XXXの第nステップに記録されたステップタイム、デュレーション、ベロシティ係数は、それぞれ、RHY_XXX_TBL[n].stepTimeRHY_XXX_TBL[n].durationRHY_XXX_TBL[n].veloCoefと表記される。
【0023】
次にリズムパターンテーブルの各例について説明する。図4は、4分音符用のリズムパターンテーブルおよびそのステップ数を示した図である。このリズムパターンテーブルは4分音符用であることを表わす‘4’という名称を有しており、RHY_4_TBLと表記される。RHY_4_TBL[0].stepTime,RHY_4_TBL[0].duration,RHY_4_TBL[0].veloCoefは、それぞれ96(4分音符のクロック数)、92、127である。ステップ数はRHY_4_SIZEと表記される。このリズムパターンテーブルRHY_4_TBLは1ステップのみで成り立っているため、ステップ数RHY_4_SIZEは‘1’である。
【0024】
このリズムパターンテーブルRHY_4_TBL、および以下に示すリズムパターンテーブルRHY_XXX_TBLのそれぞれには、それぞれ異なるリズムパターン番号が付されており、この図4に示すリズムパターンテーブルRHY_XXX_TBLのリズムパターン番号は‘0’である。図5,図6,図7,図8,図9は、それぞれ、16分音符用(名称:16)、ワルツ(WALTZ)用、シャッフル(SHUFFLE)用、ディミニッシュ(DIM)用、レゲエ(REGGAE)用のリズムパターンテーブルおよびそのステップ数を示した図である。リズムパターン番号はこの順に、1,2,3,4,5が付されている。これらの構造については上述の説明から明らかであるため、詳細説明は省略する。
【0025】
図10は、スキャンモードテーブルの基本パターンを示す図である。スキャンモードテーブルの各ステップには、押鍵情報を走査する方式(スキャン方式)の番号(スキャンファンクション番号;Scan Function#)が記録されている。このスキャンモードテーブル1ステップ分のメモリ容量は1バイトであり、ステップ数も1バイトである。
【0026】
このスキャンモードテーブルは、ROM14に複数種類記憶されており、図2に示すスキャンモード設定用操作子152を操作することにより、演奏者が任意のスキャンモードテーブルを選択することができる。ここで、スキャンモードテーブル、およびそのステップ数は、それぞれSMODE_XXX_TBL[n]、SMODE_XXX_SIZEと表記される。XXXはそのスキャンモードテーブルの名称を表わし、[n]のnは、そのスキャンモードテーブル内部のステップ番号(0≦n<SMODE_XXX_SIZE)である。
【0027】
本実施形態における各スキャン方式(Scan Fuction)は以下のとおりである。
【0028】
(1)上昇スキャン方式押鍵情報を、音高の低い方から高い方へと走査する。ここでは、これを、SCAN_Uと表記する。
【0029】
(2)下降スキャン方式音高の高い方から低い方へと走査する。ここではこれを、SCAN_Dと表記する。
【0030】
(3)上昇下降スキャン方式音高の低い方から高い方へと走査し、最高音に達したら、今度は音高の高い方から低い方へと走査する。ここでは、これをはSCAN_UDと表記する。
【0031】
(4)ランダムスキャン方式ランダムに走査する。ここではこれを、SCAN_Rと表記する。
【0032】
(5)押鍵順スキャン方式押鍵情報の入力順に走査する。ここではこれを、SCAN_Oと表記する。
【0033】
(6)和音スキャン方式現在押鍵されているものすべてを走査する。ここではこれを、SCAN_Cと表記する。
【0034】
(7)最低音スキャン方式現在押鍵されているもののうちノートナンバのもっとも小さなもの(最低音)だけを走査する。ここではこれを、SCAN_Bと表記する。
【0035】
(8)最高音スキャン方式現在押鍵されているもののうちノートナンバのもっとも大きなもの(最高音)だけを走査する。ここではこれを、SCAN_Tと表記する。
【0036】
(9)最低音抜き上昇スキャン方式最低音を除いて、音高の低い方から高い方へと走査する。ここでは、これをSCAN_U_WO_B(Scam up without bass)と表記する。
【0037】
(10)最低音抜きランダムスキャン方式最低音を除いて、ランダムに走査する。ここでは、これをSCAN_R_WO_Bと表記する。
【0038】
(11)最低音抜き和音スキャン方式最低音を除いて、現在押鍵されているものをすべて走査する。ここでは、これをSCAN_C_WO_Bと表記する。
【0039】
(12)最高音抜き上昇スキャン方式最高音を除いて、音高の低い方から高い方へと走査する。ここでは、これをSCAN_U_WO_Tと表記する。
【0040】
次にスキャンモードテーブルの各例を示す。図11は、上昇スキャン用のスキャンモードテーブル、およびそのステップ数を示した図である。このスキャンモードテーブルは、上昇スキャン用であることを表わす‘UP’という名称を表わしており、SMODE_UP_TBLと表記される。ステップ数は、SMODE_UP_SIZEと表記される。このスキャンモードテーブルSMODE_UP_TBLは、上昇スキャン方式SCAN_Uが記録された1ステップのみで成り立っているため、ステップ数SMODE_UP_SIZEは‘1’である。このスキャンモードテーブルSMODE_UP_TBL、および以下に示す各スキャンモードテーブルSMODE_XXX_TBLのそれぞれには、それぞれ異なるスキャンモード番号が付されており、この図11に示すスキャンモードテーブルSMODE_UP_TBLのスキャンモード番号は‘0’である。
【0041】
図12,図13,図14,図15,図16,図17,図18,図19は、それぞれ下降スキャン用(DOWN)、上昇下降スキャン用(UP_DW),ランダムスキャン用(RANDOM)、和音スキャン用(CHORD)、押鍵順スキャン用(ORDER)、ワルツ用(WALTZ)、レゲエ用(REGGAE)、三味線用(SHAMI)のスキャンモードテーブルおよびそのステップを示した図である。
【0042】
スキャンモード番号は、この順に、1,2,3,4,5,6,7,8が付されている。これらの構造については、上述の説明から明らかであるため、詳細説明は省略する。
【0043】
次に各種パラメータ値等が格納されるRAM内のメモリについて説明する。
【0044】
図20はリズムパターンパラメータを示す図である。このリズムパターンパラメータは1バイトのメモリであり、このメモリには、図2に示すパネル15のリズムパターン設定用操作子151の操作により設定されたリズムパターン番号が格納される。ここではこれを、PRM_RHYTHMと表記する。
【0045】
図21は、スキャンモードパラメータを示す図である。このスキャンモードパラメータも、1バイトのメモリであり、このメモリには、図2に示すパネル15のスキャンモード設定用操作子152の操作により設定されたスキャンモード番号が格納される。ここでは、これを、PRM_SMODEと表記する。図22は、グルーブレートパラメータを示す図である。このグルーブレートパラメータも1バイトのメモリであり、このメモリには図2に示すパネル15のグルーブレート設定用操作子の操作により設定されたグルーブレートの値が格納される。この値の範囲は、前述したように、0〜100である。ここではこれを、PRM_GROOVEと表記する。
【0046】
図23は、ノートバッファを示す図である。このノートバッファは、128バイトの配列であり、各1バイトは、鍵盤20(図1参照)の各鍵(ノートナンバ)に対応しており、押鍵情報を受信すると、その押鍵情報中の押鍵強さを表わす情報(ノートオンベロシティ)が、その押鍵情報中のノートナンバに対応する領域に格納される。対応する鍵が離鍵(ノートオフ)されている場合、あるいはそれまで押鍵されていて離鍵された場合は、その領域には‘−1’が格納される。
【0047】
ここでは、このノートバッファの各領域をNOTEBUF[n]と表記する。nはノートナンバを表わす。図24は、プレイバッファを示す図である。このプレイバッファは、図23に示すノートバッファと同様128バイトの配列であり、各1バイトは、各ノートナンバに対応している。ただし、このプレイバッファには、図23に示すノートバッファとは異なり、ホールド情報を加味したノートオンベロシティが記憶される。すなわち、図1に示す鍵盤20に接続されたホールドペダル21が踏まれると、データ入力端子17を経由してホールドオン情報が入力され、ホールドペダル21が離されるとデータ入力端子17を経由してホールドオフ情報が入力されるが、ホールドオン情報を受信すると、ホールドオフ情報を受信する迄の間、この図24に示すプレイバッファに格納された押鍵情報の消去が禁止される。ホールドオフ情報が入力されると、プレイバッファにはそのときのノートバッファの内容がコピーされ、以後、次にホールドオン情報が入力されない限り、プレイバッファは常にノートバッファと同一の内容を維持する。アルペジオ演奏を行なうにあたっては、ホールド情報が加味されたベロシティが配列された、このプレイバッファが走査される。ここでは、このプレイバッファの領域を、PLAYBUF[n]と表記する。nはノートナンバを表わす。
【0048】
図25は、カレントプレイノートナンババッファを示す図である。このカレントプレイノートナンババッファは1バイトのメモリであり、このメモリには、アルペジオ演奏中の現在のステップのノートナンバが格納される。ここではこれを、CUR_NOTEと表記する。図26は、ホールドバッファを示す図である。このホールドバッファは1バイトのメモリであり、ここには0〜127の数値のホールド情報が格納される。図1に示すホールドペダル21を操作すると、データ入力端子17からは、その操作量に応じた0〜127の数値で表わされるホールド情報が入力され、そのホールド情報がこのホールドバッファに格納される。ここでは、この数値が64以上であればホールドオン情報、64未満であれはホールドオフ情報とみなされる。ここではこれを、HOLDと表記する。
【0049】
図27は、オーダバッファを示す図である。このオーダバッファは、1ステップが2バイトからなる16ステップの配列であり、各ステップには、ノートナンバとそのノートナンバのベロシティが格納される。このオーダバッファには、押鍵された鍵のノートナンバとその押鍵時のベロシティが押鍵順に格納され、離鍵されたときは、その鍵のノートナンバおよびベロシティが抹消され先頭詰めに並べ直される。ここではこれを、ORDER[n]と表記する。nは、ステップ番号(n=0〜15)である。特に、第nステップのノートナンバのみ、ベロシティのみを指すときは、それぞれORDER[n].note、ORDER[n].veloと表記される。
【0050】
図28は、オーダライトカウンタを示す図である。このオーダライトカウンタは1バイトのメモリであり、このメモリには、押鍵情報を次に受信した場合に、その受信した押鍵情報を、図27に示すオーダバッファORDER[]の何番目のステップに格納するかを示す値が格納される。このオーダライトカウンタのとり得る値は0〜16である。0〜15は、オーダバッファORDER[]の各ステップに対応し、16は、オーダバッファORDER[]が満杯であることを意味する。ここではこれを、ORDER_WRと表記する。
【0051】
図29は、オーダポジションカウンタを示す図である。このオーダポジションカウンタは1バイトのメモリであり、このメモリには、アルペジオ演奏中の現在のステップの楽音が図27に示すオーダバッファORDER[]の何番めのステップに対応する楽音であるかを示す値が格納される。このオーダポジションカウンタのとり得る値は−1〜15である。0〜15は、図27に示すオーダバッファORDER[]の各ステップに対応し、−1はアルペジオ演奏の一連のステップをこれから開始するタイミング(前回の一連のステップが終了したタイミング)であることを意味している。ここではこれを、CUR_ORDERと表記する。
【0052】
図30は、リズムパターンテーブルポジションカウンタを示す図である。このリズムパターンテーブルポジションカウンタは1バイトのメモリであり、このメモリは、現在選択されているリズムパターンテーブル(図3、および図4〜図9の各例を参照)中のステップを指し示すポインタである。このポインタはアルペジオ演奏中の現在のリズムステップに対応している。このリズムパターンテーブルポジションカウンタのとり得る値は0以上、かつ現在選択されているリズムパターンテーブルのステップ数RHY_XXX_SIZE未満である。ここではこれを、CUR_RHYと表記する。
【0053】
図31は、スキャンモードテーブルポジションカウンタを示す図である。このスキャンモードテーブルポジションカウンタは1バイトのメモリであり、現在選択されているスキャンモードテーブル(図10、および図11〜図19の各例を参照)中のステップを指し示すポインタである。このポインタも、アルペジオ演奏中の現在のリズムステップに対応している。スキャンモードテーブルポジションカウンタのとり得る値は、0以上、かつ現在選択されているスキャンモードテーブルのステップ数SMODE_XXX_SIZE未満である。ここでは、これをCUR_SMODEと表記する。
【0054】
図32は、クロックカウンタを示す図である。このクロックカウンタは2バイト(16ビット)のメモリであり、図1に示すクロックタイマ16がクロックを1つ発生するたびにこのクロックカウンタの値が‘1’ずつ増加する。このクロックカウンタの値の範囲は、0000h〜FFFFhであり、FFFFhの次は0000hに戻り、電源がオンである間、無限に巡回する。このクロックの値の増加に基づいてアルペジオが進行する。ここではこれを、CLOCKと表記する。
【0055】
図33は、ネクストクロックバッファを示す図である。このネクストクロックバッファは2バイト(16ビット)のメモリであり、このメモリには、アルペジオ演奏の次のステップの時刻が格納される。すなわち、図32に示すCLOCKが増加して、このネクストクロックバッファに格納されている値に達すると、押鍵情報を走査してノートオンデータを送信する。1回のステップの処理が終了すると、このネクストクロックバッファの値は次のステップの時刻に更新される。このネクストクロックバッファのとり得る値の範囲は0000h〜FFFFhである。ここではこれを、NEXTCLKと表記する。
【0056】
図34は、ノートオフリザベーションバッファを示す図である。このノートオフリザベーションバッファは3バイト×16の配列であり、このノートオフリザベーションバッファには、ノートオフすべきノートナンバと、それをノートオフデータとして実際に送信すべきタイミングとがペアで格納される。この送信タイミングは図32のCLOCKの値で表わされる。CLOCKが順次増加していってこのノートオフリザベーションバッファに格納されている送信タイミングのうちのいずれかの送信タイミングに到達すると、その送信タイミングとペアで格納されているノートナンバについてノートオフデータが送信される。このノートオフリザベーションバッファ中の有効なデータが格納されていない領域、あるいはノートオフデータを送信し終わった領域には‘−1’が格納される。
【0057】
ここではこれを、OFFRSV[n]と表記する。nは、ノートナンバとその送信タイミングとのペアのn番目の格納領域を意味する。特にOFFRSV[n]の中ノートナンバ、送信タイミングを指し示すときは、それぞれ、OFFRSV[n].note,OFFRSV[n].clockと表記される。図35は、エンドフラグを示す図である。このエンドフラグは、ここでは1バイトのメモリで構成されているが、フラグの性質上1ビットで構成してもよい。このエンドフラグは‘0’と‘1’との2値をとり、‘0’は、アルペジオ演奏中の1回のステップの発音のための走査が未了であることを示し、‘1’は、1回のステップの発音のための走査が終了したことを示している。ここではこれを、END_FLGと表記する。
【0058】
図36は、ベースノートバッファを示す図である。このベースノートバッファは1バイトのメモリであり、このメモリには、ホールド情報を加味した押鍵中の鍵のうちの最低音の鍵のノートナンバが格納される。ここではこれを、LOと表記する。図37は、トップノートバッファを示す図である。このトップノートバッファは1バイトのメモリであり、このメモリにはホールド情報を加味した押鍵中の鍵のうちの最高音の鍵のノートナンバが格納される。ここではこれを、HIと表記する。
【0059】
以上説明した各メモリの他にも作業領域として使用するメモリもあるが、後述するプログラムの説明で足りるため、ここでは、ここに説明した以外のメモリについて1つずつ取りあげた説明は省略する。以下に、これまで説明したテーブルやメモリを用いてCPUで実行されるプログラムについて説明する。
【0060】
図38は、電源オン時に動作を開始し、電源オフ時まで動作し続けるゼネラルプログラムのフローチャートである。電源が投入されると、先ず所定の初期化が行なわれ(ステップ38_1)、それ以後、クロックタイマ16(図1参照)からクロックの発生が通知されたか否か(ステップ38_2)、パネル15(図1,図2参照)が操作されいずれかのパラメータがエディットされたか否か(ステップ38_4)、ノートオンデータ(押鍵情報)が入力されたか否か(ステップ38_6)、ノートオフデータ(離鍵情報)が入力されたか否か(ステップ38_8)、ホールドデータ(ホールド情報)が入力されたか否か(ステップ38_10)が順次循環的にモニタされ、各ステップ38_2,38_4,38_6,38_8,38_10で各イベントが発生したことが認識されると、それぞれ、クロック処理(ステップ38_3)、エディット処理(ステップ38_5)、ノートオン処理(ステップ38_7)、ノートオフ処理(ステップ38_9)、ホールドデータ処理(ステップ38_11,38_12,38_13)が行なわれる。
【0061】
ホールドデータ処理では、先ずHOLD(図26参照)にホールド値が格納され(ステップ38_11)、そのホールド値が、ホールドオンを表わす64以上であるか否かが判定され(ステップ38_12)、ホールドオフを表わす63以下の場合、ホールドオフ処理が行なわれる(ステップ38_13)。図39は、初期化処理ルーチンのフローチャートである。この初期化処理ルーチンは、図38に示すゼネラルプログラムのステップ38_1で実行される。
【0062】
この初期化処理では、先ず、押鍵時のベロシティが押鍵順に格納されるオーダバッファORDER[](図27参照)がクリアされ、そのオーダバッファORDER[]の格納ポインタORDER_WR(図28参照)が‘0’(ORDER[]の先頭)に初期化され、さらに、オーダポジションカウンタCUR_ORDER(図29)が、アルペジオ演奏の一連のステップをこれから開始するタイミングであることを表わす‘−1’に初期化される(ステップ39_1)。
【0063】
次いで、クロックタイマ16(図1参照)で発生したクロックをカウントするクロックカウンタCLOCK(図32参照)が‘0’に初期化され(ステップ39_2)、次の演奏情報の生成のタイミングが格納されるネクストクロックバッファNEXTCLK(図33参照)も‘0’に初期化される(ステップ39_3)。さらに、ノートオフすべきノートナンバやそのノートオフすべきタイミングが格納されるノートオフリザベーションバッファOFFRSV[](図34参照)がクリアされ(ステップ39_4)、鍵盤20(図1参照)の鍵の配列に対応した配列を有し押鍵された鍵のベロシティが格納されるノートバッファNOTEBUF[](図23参照)がクリアされ(ステップ39_5)、さらに、ホールド情報を加味したベロシティが格納されるプレイバッファPLAYBUF[](図24参照)がクリアされる(ステップ39_6)。さらにホールド値が格納されるホールドバッファHOLD(図26参照)が‘0’にクリアされ(ステップ39_7)、さらに、スキャナをリセットするリセットスキャナルーチンが実行される(ステップ39_8)。
【0064】
図40は、リセットスキャナルーチンのフローチャートである。リセットスキャナルーチンは、図39に示す初期化ルーチンのステップ39_8で実行される。ここでは、現在アルペジオ演奏中のノートナンバが格納されるカレントプレイノートナンババッファCUR_NOTE(図25参照)に空きを表わす‘−1’が格納され、オーダバッファORDER[](図27参照)の、現在アルペジオ演奏中のステップを指し示すオーダポジションカウンタCUR_ORDER(図29参照)にも、空きを表わす‘−1’が格納され、さらに、スキャンモードテーブル、リズムパターンテーブルの各ポインタであるスキャンモードテーブルポジションカウンタCUR_SMODE(図31参照)、リズムパターンテーブルポジションカウンタCUR_RHY(図30参照)が、先頭を指し示す‘0’に初期化される。さらに、クロックCLOCK(図32参照)に1を加えた値がネクストクロックNEXTCLK(図33)参照に格納される。CLOCKに‘1’を加えた値をNEXTCLKとする理由は、後述するようにNEXTCLK=CLOCKのときに発音される(ノートオンデータが送信される)が、このプログラムが動作中にCLOCKがインクリメントされてCLOCKが発音開始タイミングを示すNEXTCLKを越えてしまい、その発音が行なわれないことが生じる可能性をなくすためである。
【0065】
図40に示すリセットスキャナルーチンでは、さらに、演奏中のアルペジオ演奏の1回ステップの発音のための操作が未了か終了かを示すエンドフラグEND_FLGに、未了を示す‘0’が格納される。図41は、クロック処理ルーチンのフローチャートである。このクロック処理ルーチンは、図38に示すゼネラルプログラムのステップ38_3で実行される。
【0066】
このクロック処理ルーチンでは、先ずCLOCK(図32参照)がインクリメントされる(ステップ41_1)。次に、OFFRSV[](図34参照)をサーチし、そこに現在のタイミングで送信すべきノートオフデータが存在するかどうかを調べ、現在のタイミングで送信すべきノートオフデータが存在する場合にそのノートオフデータを送信する(ステップ41_2〜41_8)。
【0067】
具体的には、先ずiに‘0’を置いて(ステップ41_2)、OFFRSV[i].noteに有効なノートオフデータが格納されているか(0〜127)否か(−1)を調べ(ステップ41_3)、‘−1’の場合はiをインクリメントして(ステップ41_7)、iが16に達するまで(ステップ41_8)、そのサーチが行なわれる。ステップ41_3で有効なノートオフデータの格納が確認されるとステップ41_4に進み、OFFRSV[i].clockが現在のCLOCKと等しいかどうかが判定され、等しい場合にそのノートオフデータを演奏情報として送信し(ステップ41_5)、そのノートオフデータが格納されていた領域のOFFRSV[i].noteに‘−1’を書き込む(ステップ41_6)。
【0068】
ノートオフデータのサーチが終了すると、今度は送信すべきノートオンデータを見つけに行く処理を行なう(ステップ41_9〜41_17)。具体的には、先ず現在のCLOCKがNEXTCLKに達したか否か、すなわちノートオンデータを送信すべきタイミングに達したか否かが判定され(ステップ41_9)、未だそのタイミングに達していないときはそのまま終了する。
【0069】
NEXTCLK=CLOCKのときは、ステップ41_10に進み、押鍵情報を走査するスキャンノートオンルーチンが実行される(ステップ41_10)。このスキャンノートオンルーチンの詳細は後述するが、このスキャンノートオンルーチンでは、送信すべきノートナンバのうちの1つがNTに格納される。NT=−1は、送信すべきノートが存在しないことを意味している。ステップ41_11においてNT=−1ではない、すなわち送信すべきノートが存在すると判定されると、ステップ41_12に進み、ノートオフ予約ルーチンが実行される。このノートオフ予約ルーチンの詳細についても後述するが、このノートオフ予約ルーチンでは、これから送信しようとするノートオンデータに対応するノートオフデータをOFFRSV[](図34参照)に格納することにより、ノートオフ予約を行なう。OFFRSV[]が満杯のときは、NTに、ノートオフ予約ができないことを示す‘−1’が格納される。
【0070】
ステップ41_13ではNT=−1かどうかを調べることによりノートオフ予約が行なわれたか否かを知り、ノートオフ予約不能であったときはノートオンデータを送信せずにステップ41_10に戻り、送信すべき次のノートオンデータのサーチを行なう。ステップ41_13でNT≠−1であったとき、すなわち正常にノートオフ予約が行なわれたときは、ステップ41_14に進み、ベロシティ生成ルーチンが実行される。このベロシティ生成ルーチンの詳細についても後述する。このベロシティ生成ルーチンでは、後述する演算により送信しようとするノートオンデータのベロシティが生成される。その後ステップ41_15においてそのノートオンデータが送信され、ステップ41_10に戻り、現在のタイミングでさらに送信すべきノートオンデータが存在するかどうかのサーチが行なわれる。
【0071】
ステップ41_10でNTに‘−1’が格納された場合、すなわち現在のタイミングで送信すべきノートオンデータが存在しない(もしくは、現在のタイミングで送信すべきノートオンデータは全て送信してしまった)場合、ステップ41_11を経由してステップ41_16に進む。ステップ41_16では、ネクストクロック更新ルーチンが実行される。このネクストクロック更新ルーチンの詳細は後述するが、ここでは、ノートオンデータ送信の次のタイミングがNEXTCLKに格納される。
【0072】
その後、ステップ41_17に進み、スキャナ更新ルーチンが実行される。このスキャナ更新ルーチンでスキャナの更新が行なわれる。このスキャナ更新ルーチンの詳細についても後述する。図42は、スキャンノートオンルーチンのフローチャートである。このスキャンノートオンルーチンは、図41のクロック処理ルーチンのステップ41_10で実行される。
【0073】
このスキャンノートオンルーチンでは、先ずスキャンモード番号が格納されているPRM_SMODE(図21参照)が参照され(ステップ42_1)、そのPRM_SMODEに格納されているスキャンモード番号に応じたスキャンモードテーブル(図10、および図11〜図19の各例参照)中の現在のステップ番号CUR_SMODEに格納されたスキャン方式(スキャンファンクション番号)SMODE_XXX_TBL[CUR_MODE]が作業領域funcに格納される(ステップ42_2)。次いで、そのfuncに格納されたスキャンファンクション番号がSCAN_U,SCAN_D,SCAN_UD,……,SCAN_U_WO_Tのいずれを指しているかに応じて、それぞれ、図示の、スキャンアップルーチン(ステップ42_4)、スキャンダウンルーチン(ステップ42_5)、スキャンアップダウンルーチン(ステップ42_6)、……、スキャンアップウィズアウトトップルーチン(42_15)が実行される。
【0074】
以下では、代表的なものとして、スキャンアップルーチン(ステップ42_4)、スキャンオーダルーチン(ステップ42_8)、スキャンコードルーチン(ステップ42_9)、スキャンベースルーチン(ステップ42_10)、スキャンコードウィズアウトベース(ステップ42_14)について説明する。図43は、スキャンアップルーチンのフローチャートである。このスキャンアップルーチンは、前述した上昇スキャン方式を実現するルーチンである。
【0075】
ここでは、先ず、END_FLG(図35参照)が‘1’か‘0’か、すなわち、今回の1ステップ分の発音のための走査が既に終了しているか否かが判定され(ステップ43_1)、END_FLG=1の場合、すなわち、今回の走査が既に終了している場合は、ステップ43_2に進み、NTに‘−1’が格納されて終了する。ただし、今回のステップで最初にこのスキャンアップルーチンが実行される際はEND_FLG=0である。
【0076】
ステップ43_1でEND_FLGが‘1’でなかったときは、ステップ43_3に進み、PLAYBUF[](図24参照)に1つでもノートオンデータが存在するか否かが判定され、ノートオンデータが1つも存在しないときは、発音しようがないので、ステップ43_2に進み、NTに‘−1’が格納されて終了する。
【0077】
PLAYBUF[]にノートオン情報が存在することが認識されると、次に、上昇スキャン方式に従って、次に送信すべきノートオンデータが走査される(ステップ43_4〜43_7)。具体的には、CUR_NOTE(図25参照)は、直前に送信したノートオンデータのノートナンバが格納されているため、そのCUR_NOTEを次のノートナンバに進め(ステップ43_4)、そのノートナンバが128に達すると(ステップ43_5)、CUR_NOTEに‘0’が格納される(ステップ43_6)、このようにして更新されたCUR_NOTEを用いて、PLAYBUF[CUR_NOTE]に有効なベロシティデータが格納されているか否かが判定される(ステップ43_7)。PLAYBUF[CUR_NOTE]=−1、すなわちそこには有効なベロシティデータが格納されていないときは、ステップ43_4に進み、CUR_NOTEが再度インクリメントされ、PLAYBUF[]の有効なベロシティが格納されている領域を見い出すべく、音高の低い方から高い方へと走査される。
【0078】
このようにして、有効なベロシティデータが格納されているPLAYBUF[]が見い出されると、そのときのCUR_NOTEがNTに格納され(ステップ43_8)、PLAYBUF[NT]に格納されている、CUR_NOTEのベロシティデータがVLに格納され(ステップ43_9)、上昇スキャン方式では1つのステップでは1つのノートオンデータしか送信しないためEND_FLGに走査の終了を示す‘1’が格納される(ステップ43_10)。
【0079】
図44は、スキャンオーダルーチンのフローチャートである。このスキャンオーダルーチンは、前述した押鍵順スキャン方式を実現するルーチンである。ステップ44_1,44_2は、図43に示すスキャンアップルーチンのステップ43_1,43_2と同様であり、説明は省略する。ステップ44_3では、ORDER_WR=0か否かが調べられる。ODER_WRは、図28と参照して説明したように、押鍵情報を押鍵順に格納するORDER[](図27参照)のポインタであり、ORDER WR=0ということは、ORDER[]が空であって、押鍵順アルペジオ演奏を行なうことができないことを意味しており、この場合もステップ44_2に進み、NTに‘−1’が格納されて終了する。
【0080】
ステップ44_3でORDER_WR=0ではない、すなわちORDER[]が空ではないと判定されると、ステップ44_4に進んでCUR_ORDER(図29参照)がインクリメントされ、CUR_ORDERがORDER[]の書き込まれる最大ステップを越えたか否かが判定されて(ステップ44_5)、越えた場合は、CUR_ORDERに0が格納される(ステップ44_6)。このようにして値が進められたCUR_ORDERを用いて、次に発音すべきノートナンバORDER[CUR_ORDER].noteがNTに格納され(ステップ44_7)、そのノートナンバのベロシティORDER[CUR_ORDER].veloがVLに格納される(ステップ44_8)。この押鍵順スキャン方式においても、1つのステップでは1つのノートオンデータしか送信しないため、END_FLGに、走査の終了を示す‘1’が格納される(ステップ44_9)。
【0081】
図45は、スキャンコードルーチンのプログラムである。このスキャンコードルーチンは、前述した和音スキャン方式を実現するルーチンである。ステップ45_1,45_2,45_3は、図43に示すスキャンアップルーチンのステップ43_1,43_2,43_3と同様であり、説明は省略する。今回のステップにおいて、このスキャンコードルーチンが第1回目に呼ばれたときは、CUR_NOTEには‘−1’が格納されており、したがってステップ45_4,45_5,45_6のループでは、CUR_NOTE=0から始まり、CUR_NOTE=127まで走査される。その走査の途中で、PLAYBUF[CUR_NOTE]に‘−1’以外の値、すなわち有効なベロシティデータが格納されていることを見出すと、ステップ45_7に進み、NTにそのノート番号CUR_NOTEを格納し、VLにそのノートナンバのベロシティデータPLAYBUF[NT]を格納して(ステップ45_8)、このルーチンを一旦抜ける。
【0082】
和音スキャン方式では、PLAYBUF[]の全域を走査し有効なベロシティデータの格納された全てのノートオンデータを送信する必要があるため、CUR_NOTE≧128に達する前にこのスキャンコードルーチンを抜けるときはEND_FLGには‘1’には格納しない。このスキャンコードルーチンを抜けると、図42に示すスキャンノートオンルーチンも抜け、図41のクロック処理ルーチンのステップ41_10を抜けることになる。NT=−1ではないときは、ステップ41_12,41_13,41_14,41_15と進んで1つのノートオンデータの送信が行なわれ、再度ステップ41_10に戻り、図42のスキャンノートオンルーチンを経由して、図45のスキャンコードルーチンが再度実行される。そのときには、再度実行を開始したときの、すなわち前回このルーチンを抜けたときCUR_NOTEの次の値CUR_NOTEから走査が行なわれる(ステップ45_4)。ステップ45_5においてCUR_NOTE≧128、すなわちPLAYBUF[]の走査が終了したことが判定されると、ステップ45_9に進んでNTに‘−1’が格納され、さらにステップ45_10に進んで、END_FLGに‘1’が格納される。
【0083】
図46は、スキャンベースルーチンのプログラムである。このスキャンベースルーチンは、前述した最低音スキャン方式を実現するルーチンである。ステップ46_1,46_2,46_3は、図43に示すスキャンアップルーチンのステップ43_1,43_2,43_3と同様であり、説明は省略する。ステップ46_4では、最低音LO(図36参照)がNTに格納される。LOへの最低音の格納処理については後述する。
【0084】
ステップ46_5では、その最低音LOのベロシティPLAYBUF[NT]がVLに格納される。さらにステップ46_6において、END_FLGに‘1’が格納される。最低音は1つしか存在しないからである。図47は、スキャンコードウィズアウトベースルーチンのプログラムである。このルーチンは、前述した最低音抜き和音スキャン方式を実現するルーチンである。
【0085】
ステップ47_1,47_2,47_3は、図43に示すスキャンアップルーチンのステップ43_1,43_2,43_3と同様であり、説明は省略する。ステップ47_4では、PLAYBUF[]にノートオンの数が1つだけ存在するか、それとも複数存在するかが判定される、ノートオンの数が1つだけの場合、本来は最低音抜き和音スキャン方式は成立しないが、ここでは、その唯一のノートオンのノートナンバを送信することとし、ステップ47_5に進んで、NTにそのノートのノートナンバを格納し、そのノートナンバのベロシティPLAYBUF[NT]をVLに格納し(ステップ47_6)、END_FLGに‘1’を格納する(ステップ47_7)。
【0086】
ステップ47_4においてノートオンの数が複数存在することが確認されるとステップ47_8に進む。今回のステップにおいて、このスキャンコードウィズアウトベースルーチンが第1回目に呼ばれたときは、図45に示すスキャンコードルーチンの場合と同様に、CUR_NOTEには‘−1’が格納されている。CUR_NOTEに‘−1’を格納する処理については後述する。したがって、ここでは、PLAYBUF[]の全域にわたって、音高の低い方から高い方へと順次走査される。ここでの走査の手順(ステップ47_8〜47_15)は、図45に示すスキャンコードルーチンにおける走査の手順(ステップ45_4〜45_10)と同様であるが、ステップ47_11において、CUR_NOTEが最低量LOであるか否かを判定し、最低音の場合にそのノートオンを無視するようにしている点のみが異なる。詳細説明は省略する。尚、LOに最低音を格納する処理については後述する。
【0087】
以上では、図42に示すスキャンノートオンルーチン中で実行される、スキャンアップルーチン(ステップ42_4)、スキャンオーダルーチン(ステップ42_8)、スキャンコードルーチン(ステップ42_9)、スキャンベースルーチン(42_10)、スキャンコードウィズアウトベースルーチン(ステップ42_13)について説明した。スキャンダウンルーチン(ステップ42_5)、スキャンアップダウンルーチン(ステップ42_6)、スキャンランダムルーチン(ステップ42_7)、スキャントップルーチン(ステップ42_11)、スキャンアップウィズアウトベースルーチン(ステップ42_12)、スキャンランダムウィズアウトベースルーチン(ステップ42_13)、スキャンアップウィズアウトトップルーチン(42_14)は、前述した、それぞれ、下降スキャン方式、上昇下降スキャン方式、ランダムスキャン方式、最高音スキャン方式、最低音抜き上昇スキャン方式、最低音抜きランダムスキャン方式、最高音抜き上昇スキャン方式を実現するルーチンであるが、上述した各種のルーチン(図43〜図47)から自明であるため、ここではそれらについての図示および説明は省略する。
【0088】
図48は、ノートオフ予約ルーチンのプログラムである。このノートオフ予約ルーチンは、図41に示すクロック処理ルーチンのステップ41_12で実行される。このノートオフ予約ルーチンでは、ノートオフ予約に用いられるOFFRSV[](図34参照)をサーチしてその空いている領域を見つけ、一方、リズムパターンテーブルから読み出したデュレーションと、ステップタイムと、グルーブレート設定用操作子153(図2参照)の操作により設定されたグルーブレートPRM_GROOVEとに従ってデュレーションを計算し、そのデュレーションに基づいてノートオフのタイミングを求めて、そのノートオフのタイミングをOFFRSV[]の空き領域に設定することにより、ノートオフ予約を行なう。
【0089】
すなわち、先ずステップ48_1においてiに‘0’を設定し、ステップ48_2においてOFFRSV[i].note=−1であるか否か、すなわち、OFFRSV[i]が空いているか否かが判定される。OFFRSV[i].note=−1ではないとき、すなわちOFFRSV[i]が空いていないときは、iがインクリメントされ(ステップ48_3)、iがOFFRSV[]の配列の大きさを越えたか否かが判定され(ステップ48_4)、その配列以内であるときはステップ48_2に戻ってインクリメントされた新たなiに対してOFFRSV[i].note=−1か否かに判定される。これを繰り返し、空き領域を発見できないままi=16に達すると、ステップ48_5に進み、NTに、OFFRSV[]が満杯であることを示す‘−1’を格納して終了する。
【0090】
ステップ48_2においてOFFRSV[i].note=−1、すなわち空き領域を見つけたときは、その空き領域OFFRSV[i].noteに、図41のクロック処理ルーチンのステップ41_10で得られたノートナンバNTが格納される(ステップ48_6)。次いで、リズムパターン番号PRM_RHYTHM(図20参照)に応じて(ステップ48_7)、そのリズムパターン番号PRM_RHYTHMに対応するリズムパターンテーブルRHY_XXX_TBL[](図3、および図4〜図9の各例を参照)の現在のステップ番号CUR_RHY(図30参照)のステップに格納されている、デュレーションRHY_XXX_TBL[CUR_RHY].durationおよびステップタイムRHY_XXX_TBL[CUR_RHY].stepTimeが読み出されて、それぞれD1,D2に格納される(ステップ48_8)。
【0091】
ステップ48_9では、デュレーションD1,ステップタイムD2、およびグルーブレートPRM_GROOVE(図22参照)に基づいて、そのノートナンバのデュレーションDURATIONが、DURATION=(D1−D2)×PRM_GROOVE/100+D2の計算により求められる。
【0092】
この計算結果は、PRM_GROOVE=0のときは、DURATION=D2、すなわちステップタイムと同値となり、そのアルペジオ演奏にテヌートのような効果を与え、PRM_GROOVE=100のときは、DURATION=D1、すなわちリズムパターンテーブルRHY_XXX_TBL[]に格納されたデュレーションのままとなる。このリズムパターンテーブルRHY_XXX_TBL[]にスタッカートのような短いデュレーションを格納しておくと、図2に示すグルーブレート設定用操作子153の操作により、スタッカートのようなアルペジオ演奏からテヌートのようなアルペジオ演奏まで、各音のデュレーションを連続的に変えることができる。このようにして求めたDURATIONは、CLOCK(図32参照)と加算されて、OFFRSV[i].clockに格納される(ステップ48_10)。
【0093】
図49は、ベロシティ生成ルーチンのフローチャートで、図50は、図49に示すベロシティ生成ルーチンで生成されるベロシティの説明図である。図49に示すベロシティ生成ルーチンは、図41に示すクロック処理ルーチンのステップ(41_14)で実行される。図49に示すベロシティ生成ルーチンでは、リズムパターン番号PRM_RHYTHM(図20参照)が参照され(ステップ49_1)、そのリズムパターン番号PRM_RHYTHMに対応するリズムパターンテーブルRHY_XXX_TBL(図3、および図4〜図9の各例参照)の現在のステップCUR_RHY(図38参照)のベロシティ係数RHY_XXX_TBL[CUR_RHY].veloCoefが読み出されてCOEFに格納される(ステップ49_2)。その後、ステップ49_3において、ベロシティ係数COEFと、押鍵により生成されたベロシティVLとの間で、VL2=VL×COEF/127の計算が行なわれ、さらにステップ49_4において、VL−(VL−VL2)×PRM_GROOVE/100の計算が行なわれて、その計算の結果求められたベロシティが再度VLに格納される。
【0094】
ここでは、図50に示すように、図2に示すグルーブレート設定用操作子153の操作により設定されたグルーブレートPRM_GROOVEがPRM_GROOVE=0の時、リズムパターンテーブルRHY_XXX_TBL[]に格納されたベロシティにかかわらず、押鍵ベロシティがそのまま採用され、PRM_GROOVE=100のときは、(押鍵ベロシティ×ベロシティ係数)が採用され、グルーブレート設定用操作子153をその中間に設定すると、その位置に応じて、押鍵ベロシティと、(押鍵ベロシティ×ベロシティ係数)との間で連続的に変化するベロシティが採用される。
【0095】
このようにグルーブレートを変えることにより、いわゆる‘ノリ’の程度を変化させることができる。図41のクロック処理ルーチンのステップ41_14では、上記のようにしてベロシティが求められ、ステップ41_15では、このようにして求められたベロシティデータを伴ったノートオンデータが送信される。
【0096】
図51は、ネクストクロック更新ルーチンのフローチャートである。このネクストックロック更新ルーチンは、図40に示すクロック処理ルーチンのステップ41_16で実行される。このネクストクロック更新ルーチンでは、先ずリズムパターン番号PRM_RHYTHM(図20参照)が参照され、そこに格納されたリズムパターン番号PRM_RHYTHMに応じたリズムパターンテーブルRHY_XXX_TBL[]の現在のステップ番号CUR_RHY(図30参照)のステップに格納されているステップタイムRHY_XXX_TBL[CUR_RHY].stepTimeが読み出されてSTEPに格納され(ステップ51_2)、CLOCK(図32参照)にそのSTEPが加算されてNEXTCLK(図33参照)に格納される(ステップ51_3)。これにより、次の発音タイミングがNEXTCLKに設定される。
【0097】
図52、53は、それぞれ、スキャナ更新ルーチンのフローチャートの前半部分、後半部分である。このスキャナ更新ルーチンは、図41に示すクロック処理ルーチンのステップ41_17で実行される。このスキャナ更新ルーチンでは、先ず、前回のノートオンデータの走査の最後でEND_FLGに‘1’が格納されたのを解除してEND_FLGに‘0’を格納し(ステップ52_1)、次に、リズムパターンテーブルの現在のステップCUR_RHY(図30参照)が更新される(ステップ52_2〜52_6)。具体的には、ステップ52_2においてCUR_RHYがインクリメントされ、次いで、リズムパターン番号PRM_RHYTHM(図20参照)が参照されそのリズムパターン番号PRM_RHYTHMに応じたリズムパターンテーブルのステップ数RHY_XXX_SIZEが読み出されてSIZEに格納され(ステップ52_4)、CUR_RHY≦SIZEであるか否か、すなわち、CUR_RHYがインクリメントされた(ステップ52_2)結果、現在使用中のリズムパターンテーブルRHY_XXX_TBL[]のステップ数を越えたか否かが判定され、越えていないときはそのままステップ52_7に進み、越えたときは、CUR_RHYに‘0’が格納されることにより先頭のステップに戻った上で、ステップ52_7に進む。
【0098】
ステップ52_7〜52_11では、スキャンモードテーブルの現在のステップCUR_SMODE(図31参照)が更新される。すなわち、先ずステップ52_7でCUR_SMODEがインクリメントされ、その後スキャンモード番号PRM_SMODE(図21参照)が参照され(ステップ52_8)、そのスキャンモード番号PRM_MODEに対応するスキャンモードテーブルのステップ数SMODE_XXX_SIZEが読み出されてSIZEに格納され(ステップ52_9)、CUR_SMODE≧SIZEの場合に(ステップ52_10)、CUR_SMODEが先頭(ステップ0)に戻される(ステップ52_11)。
【0099】
次に図53に示すステップ53_1に進み、スキャンモード番号PRM_SMODE(図21参照)が参照され、そのスキャンモード番号PRM_SMODEに対応したスキャンモードテーブルSMODE_XXX_TBL[]の、図52のステップ52_7〜52_11で更新されたステップCUR_SMODEのスキャン方式(スキャンファンクション番号)SMODE_XXX_TBL[CUR_SMODE]が読み出されて、funcに格納される。ステップ53_3,53_4では、それぞれ、funcが和音スキャン方式SCAN_Cであるか否か、および最低音抜き和音スキャン方式SCAN_C_WO_Bであるか否かが判定され、SCA_CもしくはSCAN_C_WO_Bの場合は、CUR_NOTE(図25参照)に‘−1’が格納される。SCAN_CもしくはSCAN_C_WO_Bの場合、CUR_NOTEに‘−1’を格納しておくことによって、ノートオンデータの走査のときに音高の低い方から高い方に向かってPLAYBUF[]の領域が走査される(図45,図47参照)。図54は、エディットルーチンのフローチャートである。このエディットルーチンは、パネル(図2参照)が操作された際に、図38に示すゼネラルプログラムのステップ38_5で実行される。
【0100】
ステップ54_1では、リズムパターンが変更されたか否かが判定される。リズムパターンの変更は、図2に示すリズムパターン設定用操作子151を操作することにより行われる。リズムパターン設定用操作子151を操作することによりリズムパターンが変更される。ステップ54_2において、PRM_RHYTHM(図20参照)に、変更後の新たなリズムパターン番号が格納され、ステップ52_3に進み、リセットスキャナルーチン(図40参照)が実行されてスキャナのリセットが行われる。
【0101】
ステップ54_4では、スキャンモードが変更されたか否かが判定される。スキャンモードの変更は、図2に示すスキャンモード設定用操作子152を操作することにより行われる。スキャンモード設定用操作子152が操作されることによりスキャンモードが変更されると、ステップ54_5において、PRM_SMDE(図21参照)に変更後の新たなスキャンモード番号が格納され、ステップ52_3でスキャナのリセットが行われる。
【0102】
ステップ54_6では、グルーブレートが変更されたか否かが判定される。グルーブレートの変更は、図2に示すグルーブレート設定用操作子153の操作により行われる。グルーブレート設定用操作子153の操作によりグルーブレートが変更されると、ステップ54_7に進み、PRM_GROOVE(図22参照)にグルーブレートの新たな値が格納される。
【0103】
図55は、ノートオン処理ルーチンのフローチャートである。このノートオン処理分は、ノートオンデータを受信した際に、図38に示すゼネラルブロックプログラムのステップ38_7で実行される。ステップ55_1では、受信したノートオンデータのうちのノートナンバがNTに格納され、ベロシティがVLに格納される。このベロシティVLは、NOTEBUF[NT](図23参照)およびPLAYBUF[NT](図24参照)に格納される(ステップ55_2,55_3)。次に、ORDER_WR(図28参照)が16末端か否か判定され、16未満のときは、押鍵順バッファORDER[](図27参照)に空きがあるため、ORDER[ORDER_WR].noteにノートナンバNTが格納され、ORDER[ORDER_WR].veloにベロシティVLが格納される。ステップ55_7では、今回入力されたノートオンデータが全て離鍵(ノートオフ)されていた状態から最初に受信したノートオンデータであるか否かが判定される。すなわち、具体的には、PLAYBUF[]に格納されている有効なベロシティデータは、ステップ55_3で今回格納したベロシティ1個のみであるか否かが検出される。最初のノートオンデータであった場合はステップ55_8に進み、スキャナのリセットが実行される。その後、PLAYBUF[]が走査されて、最低音LO,最高音HIが更新される(ステップ55_9,55_10)。
【0104】
図56は、ノートオフ処理ルーチンのフローチャートである。このノートオフ処理ルーチンは、ノートオフデータを受信した際に、図38に示すゼネラルプログラムのステップ38_9で実行される。ステップ56_1では、受信したノートオフデータのノートナンバがNTに格納され、NOTEBUF[NT](図23参照)に、有効なデータが格納されていないことを表わす‘−1’が格納される(ステップ56_2)。ステップ56_3では、HOLD(図26参照)が64未満(ホールドオフ)か否かが判定され、ホールドオン(64以上)のときはそのまま終了する。ホールドオフ(64未満)のときは、PLAYBUF[NT](図24参照)に‘−1’が格納され(ステップ56_4)、押鍵順バッファORDER[](図27参照)から今回のノートオフデータに対応するノートオンデータを削除するデリートオーダルーチンが実行され(ステップ56_5)、さらにデリートオーダルーチンにより削除が行われた押鍵順バッファORDER[]を前詰めにするパックオーダルーチンが実行される(ステップ56_6)。ステップ56_7,56_8ではPLAYBUF[]がサーチされて最低音LO,最高音HIが更新される。
【0105】
図57は、デリートオーダルーチンのフローチャートである。このデリートオーダルーチンは、図56に示すノートオフ処理ルーチンのステップ56_5で実行される。ここではORDER[](図27参照)がサーチされ、ノートオフデータのノートナンバNTの存在がサーチされ(ステップ57_1〜57_5)、ORDER[i]=NTの場合、ORDER[i].noteおよびORDER[i].veloの双方に−1が格納される。複数のORDER[i]にNTが格納されていた場合、その全てについて‘−1’が格納される。
【0106】
図58は、パックオーダルーチンのフローチャートである。このパックオーダルーチンは、図56に示すノートオフ処理ルーチンのステップ56_6で実行される。ここでは、押鍵順バッファORDER[]がサーチされ、‘−1’が格納されている領域をなくすように前詰めされる。具体的には、ステップ58_1において、i,j双方に初期値‘0’が格納され、ステップ58_2においてORDER[i].noteに‘−1’が格納されているか否かが調べられる。ORDER[i].noteに有効なデータ(すなわち‘−1’以外)が格納されていたときは、ステップ58_3に進み、ORDER[i].note,ORDER[i].veloが、それぞれ、ORDER[j].note,ORDER[j].veloに転記され、ステップ58_4でjがインクリメントされる。ORDER[]の前詰めに伴って、押鍵順アルペジオ演奏における現在のステップCUR_ORDER(図29参照)も変更する必要があることから、ステップ58_5ではCUR_ORDERがiか否か調べられ、CUR_ORDER=iのときは、CUR_ORDERにj−1が格納される(ステップ58_6).ステップ58_7ではiがインクリメントされ、ステップ58_8でiがORDER_WR(図28参照)以下か否か判定され、i≦ORDER_WRの場合ステップ58_2に戻って、更新されたiについてのORDER[i].noteが‘−1’か否か調べられる。
【0107】
ORDER[]のポインタORDER_WR(図28参照)もORDER[]の前詰めに伴って変更する必要があり、ステップ58_9では、ORDER_WRにjが格納される。図59は、ホールドオフ処理ルーチンのフローチャートである。このホールドオフ処理ルーチンはホールドデータを受信した際に、図38に示すゼネラルプログラムのステップ38_13で実行される。このホールドオフ処理ルーチンが実行されるときは、図38のステップ38_12の判定により、HOLDが64未満(ホールドオフ)であることがわかっている。
【0108】
図59に示すホールドオフ処理ルーチンが実行されると、押鍵,離鍵をそのまま反映したNOTEBUF[](図23参照)が、その全域にわたって、ホールド情報を加味した押鍵情報を格納するPLAYBUF[](図24参照)に転記される(ステップ59_1〜59_4)。次いで、押鍵順バッファORDER[](図27参照)の再構築を行うリメークオーダルーチンが実行される(ステップ59_5)。ORDER[]が再構築された後、ステップ59_6,59_7では、PLAYBUF[]がサーチされて最低音LO,最高音HIの更新が行われる。
【0109】
図60は、リメークオーダルーチンのフローチャートである。このリメークオーダルーチンは図59に示すホールドオフ処理ルーチンのステップ59_5で実行される。ここでは、PLAYBUF[]を音高の低い方から高い方と順にサーチするために、NTに、先ず初期値‘0’が格納される(ステップ60_1)。
【0110】
次いで、PLAYBUF[NT]が読み出されてVLに格納され(ステップ60_2)、そのVLが‘−1’か否か、すなわちPLAYBUF[NT]に有効なベロシティデータが格納されていた(−1以外)か否(−1)かが判定される。VL=−1のときは、ステップ60_4に進み、デリートオーダルーチン(図57参照)が実行され、このデリートオーダルーチンの中で、ORDER[]にノートナンバNTのノートオンデータが格納されていた場合にそれを削除する(具体的には‘−1’を格納する)。ステップ60_5ではNTがインクリメントされ、ステップ60_6では、NTが128未満か否か判定され、NTが128未満のときはステップ60_2に戻って新たなNTについてPLAYBUF[NT]が読み出される。
【0111】
このようにして、PLAYBUF[]の全域がサーチされ、ORDER[]から、VL=−1が格納されているPLAYBUF[NT]に対応するノートナンバNTが全て削除される。その後、ステップ60_7において、パックオーダルーチン(図29参照)が実行されて、ORDER[]の‘−1’が格納された領域をなくすようにORDER[]が前詰めされる。これにより、ORDER[]は、現在押鍵中の鍵のみについて、押鍵順に押鍵情報が並んだ状態となる。
【0112】
本実施形態におけるアルペジエータは、以上説明したように構成されており、図2に示すリズムパターン設定用操作子151およびスキャンモード設定操作子152により設定された、リズムパターンテーブル(図3、および図4〜図9の各例参照)およびスキャンモードテーブル(図10および図11〜図19の各例参照)を用いて、複数の鍵を同時に押鍵し、あるいは順次に押鍵して押鍵したままとし、あるいはホールドペダルを踏んで押鍵を記憶させておくという簡単な動作で、音楽的に意味の深い、種々のアルペジオ演奏を行うことができる。また、図2に示すグルーブレート操作子151を操作することにより、‘ノリ’の程度を簡単に変更することができる。
【0113】
次に、本発明のアルペジエータの他の実施形態について説明する。ただし、これ以降では、上述した実施形態と共通的な部分については図示および説明は省略し、上述の実施形態との相違点のみ、図示および説明を行う。図61は、図2のパネルに付加されるベロシティボリウムを示した図、図62は、図2に示すパネルに図61に示したベロシティボリウムが付加された構成において、図49に示すベロシティ生成ルーチンに代えて採用されるベロシティ生成ルーチンのフローチャートである。
【0114】
この実施形態では、図61に示すようなベロシティボリウム154がパネル15(図2参照)に付加される。このベロシティボリウム154は、手でつまんで回転させることができ、反時計まわりにいっぱいに回転させると‘0’、時計まわりにいっぱいに回転させると‘127’、それらの中間位置ではその位置に応じた値が出力され、RAM13(図1参照)中のVELOCITY_VOLUMEに格納される。このVELOCITY_VOLUMEは、図62のフローチャートで説明するように、アルペジオ演奏におけるベロシティデータの生成にかかわっている。
【0115】
図62に示すベロシティ生成ルーチンでは、図49のベロシティ生成ルーチンと同様に、リズムパターン番号PRM_RHYTHMが参照され(ステップ62_1)、そのリズムパターン番号PRM_RHYTHMに対応するリズムパターンテーブルPHY_XXX_TBL(図3、および図4〜図9の各例参照)の現在のステップCUR_RHY(図38参照)のベロシティ係数RHY_XXX_TBL[CUR_RHY].veloCoefが読み出されて、COEFに格納される(ステップ62_2)。
【0116】
その後、図49に示すベロシティ生成ルーチンと異なり、VELOCITY_VOLUME=0か否かが判定される(ステップ62_3)。VELOCITY_VOLUME=0の場合は、図49のベロシティ生成ルーチンと同様であり、ステップ62_5に進んで、ベロシティ係数COEFと、押鍵により生成されたベロシティVLとの間で、VL2=VL×COEF/127の計算が行われ、さらにステップ62_6において、VL−(VL−VL2)×PRM_GROOVE/100の計算が行われて、その計算の結果求められたベロシティが再度VLに格納される。
【0117】
一方、ステップ62_3において、VELOCITY_VOLUMEが‘0’ではないと判定されると、ステップ62_4に進み、そのVELOCITY_VOLUMEがVLに格納される。すなわち、この場合は、押鍵により生成されたベロシティは無視され、その押鍵により生成されたベロシティに代わり、図61に示すベロシティボリウム154により設定されたVELOCITY_VOLUMEが採用される。
【0118】
このように、押鍵ベロシティの代わりに固定のベロシティを用いるようにすると、押鍵強さに関係なく、一定の強さを持つアルペジオ演奏が実現できる。すなわち、演奏状態に左右されず安定した再現性のあるアルペジオ演奏を行うことができる。図63は、図2のパネルに付加されるスタイルスイッチを示した図、図64は、図2に示すパネルに図63に示したスタイルスイッチが付加された構成において、図54に示すエディットルーチンに代えて採用されるエディットルーチンのフローチャートである。
【0119】
図63に示すスタイルスイッチ155は、ジャンル毎に複数(この例では3個)のボタン155a,155b,155cから成り、各ボタン155a,155b,155cを押すと、それぞれワルツ(WALTZ)、レゲエ(REGGAE)、三味線(SHAMISEN)のイメージに合致した、リズムパターン番号とスキャンモード番号とのセットが選択されるようになっている。
【0120】
図64に示すエディットルーチンでは、先ず、ステップ64_1において、スタイルスイッチ155(図63参照)のいずれかのボタン155a,155b,155cが押されることによりスタイルが変更されたか否かが判定される。スタイルが変更されたことが認識されると、その変更後のスタイルに応じて(ステップ64_2)、ワルツの場合はPRM_RHYTHM(図20参照)、PRM_SMODE(図21参照)にそれぞれ‘2’(図6参照)、‘6’(図17参照)が格納され、レゲエの場合は、PRM_RHYTHM,PRM_SMODEにそれぞれ‘5’(図9参照)、‘7’(図18参照)が格納され、三味線の場合はPRM_RHYTHM,PRM_SMODEにそれぞれ‘1’(図5参照)、‘8’(図19参照)が格納される。図64のエディットルーチンの他のステップ64_4〜64_10は、図54に示すエディットルーチンのステップ54_1〜54_7と同様であるため、説明は省略する。
【0121】
このように、本実施形態では、例えばワルツのボタン154aを押したときには、ワルツに最もふさわしいと一般的に考えられるリズムパターンとスキャンモードが同時に選択されて設定される。したがって演奏者は、リズムパターンとスキャンモードとの組合せをいちいち考えることなく、自分の選びたいスタイルをワンタッチで選ぶことができる。
【0122】
なお、上記実施形態ではアルペジオ演奏に使用する音色に関しては特に触れなかったが、選択されたスタイルに対応してそのスタイルの演奏に適した音色を自動的に選択するようにしてもよい。例えば、ワルツ、レゲエのスタイルが選択された場合にはワルツ、レゲエの楽曲を演奏する際によく用いられる楽器の音色をそれぞれ選択し、三味線のスタイルが選択された場合には三味線の音色を選択するようにしてもよい。尚、上記各実施形態では、ホールド情報はデータ入力端子17(図1参照)を経由して入力されるが、パネル15にホールドオン情報とホールドオフ情報とを切換え入力するスイッチを設けてもよく、あるいはアルペジエータ自体にホールド情報生成用ペダル、ないしそのペダル接続用のジャックを備えてもよい。また、上記各実施形態では、鍵盤および音源が外部に接続されているが、鍵盤もしくは音源のうちの一方もしくは双方を内蔵し、あるいは一体的に構成してもよく、それに加え、さらに外部と送受信できるようにしてもよい。
【0123】
また、上記各実施形態では、グルーブレート設定用操作子153を1個のみ備え、その1個のグルーブレート設定用操作子153で設定したグルーブレートPRM_GROOVEによってアルペジオ演奏の各ステップのデュレーションとベロシティとの双方を変更しているが、それらの双方を変更できる構成になっている必要はなく、それらのうちの一方のみ変更できても、音楽的に十分意味のある変更が可能である。あるいは、より微妙な調整を演奏者に委ねるために、その1個のグルーブレート設定用操作子153を、デュレーション変更用とベロシティ変更用とに切換えて操作できるように構成したり、デュレーション変更用とベロシティ変更用とに役割が分担された2つの操作子を備えてもよい。
【0124】
また、上記各実施形態では、リズムパターンテーブルの各ステップに、ステップタイム、デュレーション、ベロシティ係数の三者がセットになって記録されているが、ステップタイムのみ、デュレーションのみ、あるいはベロシティのみのいずれかのリズムパターンテーブルを持ち、他の二者は固定値を用いるようにしてもよい。リズムパターンテーブルとして、デェレーションのみのテーブルを持った場合であっても、時間的に等分された単純なアルペジオ演奏だけでなくさまざまなリズムのアルペジオ演奏が可能となり、ステップタイムのみのテーブルを持った場合であっても、スタッカートやテヌートの効果を、アルペジオ演奏の各ステップ毎に独立して付加できるので、リズムの多彩なニュアンスやアーティキュレーションを付けることができ、ベロシティ係数のみのテーブルを持った場合であっても、アルペジオ演奏の各ステップ毎に強弱を付けることができさまざまなアクセントのアルペジオ演奏が実現するなど、それぞれ音楽的に意味のあるアルペジオ演奏を実現できる。もちろん、上記三者のうちのいずれか二者のリズムパターンテーブルを持ってもよい。
【0125】
また、リズムパターンテーブルに関し、上記二者ないし三者のリズムパターンテーブルを持つにあたり、それら二者ないし三者のリズムパターンテーブルをそれぞれ独立して持ち(例えばステップタイムのみのテーブルとデュレーションのみのテーブルとベロシティのみのテーブルとに分けて持ち)、演奏者の好みや、演奏スタイルに応じてそれらを組合せて用いるようにしてもよい。
【0126】
なお、リズムパターンテーブルに記憶するデータの種類としてステップタイム、デュレーション、ベロシティー係数以外の種類のデータを記憶するようにしてもよい。例えば、各ステップ毎に音色指定データを記憶すれば各ステップ毎に音色を切り換えることができ、より一層高度なアルペジオ演奏が可能となる。この場合、この音色が、本発明にいう楽音の特質として観念される。さらに、上記各実施形態においては、リズムパターンテーブル、およびスキャンモードテーブルはROM14(図1参照)に固定的に記憶されている旨説明したが、ROM14に代わり、あるいはROM14とともに、RAM13にリズムパターンテーブルないしスキャンモードテーブルを置いてもよい。その場合、外部から新たなリズムパターンテーブルないしスキャンモードテーブルをロードして、あるいは、パネル15にリズムパターンテーブルないしスキャンモードテーブルを設定できるような操作子を配置しておいて演奏者がその操作子を操作することにより新たなリズムパターンテーブルないしスキャンモードテーブルを定義して、自分の好みに一層適合したアルペジオ演奏を行うことができる。
【0127】
【発明の効果】
以上説明したように、本発明のアルペジエータによれば、より音楽的なアルペジオ演奏を簡単な操作で行うことができる。
【図面の簡単な説明】
【図1】本発明のアルペジエータの一実施形態の回路構成図である。
【図2】パネルの構成を示した図である。
【図3】リズムパターンテーブルの基本パターンを示す図である。
【図4】4分音符用のリズムパターンテーブルおよびそのステップ数を示した図である。
【図5】16分音符用のリズムパターンテーブルおよびそのステップ数を示した図である。
【図6】ワルツ用のリズムパターンテーブルおよびそのステップ数を示した図である。
【図7】シャッフル用のリズムパターンテーブルおよびそのステップ数を示した図である。
【図8】ディミニッシュ用のリズムパターンテーブルおよびそのステップ数を示した図である。
【図9】レゲエ用のリズムパターンテーブルおよびそのステップ数を示した図である。
【図10】スキャンモードテーブルの基本パターンを示す図である。
【図11】上昇スキャン用のスキャンモードテーブルおよびそのステップ数を示した図である。
【図12】下降スキャン用のスキャンモードテーブルおよびそのステップを示した図である。
【図13】上昇下降スキャン用のスキャンモードテーブルおよびそのステップを示した図である。
【図14】ランダムスキャン用のスキャンモードテーブルおよびそのステップを示した図である。
【図15】和音スキャン用のスキャンモードテーブルおよびそのステップを示した図である。
【図16】押鍵順スキャン用のスキャンモードテーブルおよびそのステップを示した図である。
【図17】ワルツ用のスキャンモードテーブルおよびそのステップを示した図である。
【図18】レゲエ用のスキャンモードテーブルおよびそのステップを示した図である。
【図19】三味線用のスキャンモードテーブルおよびそのステップを示した図である。
【図20】リズムパターンパラメータを示す図である。
【図21】スキャンモードパラメータを示す図である。
【図22】グルーブレートパラメータを示す図である。
【図23】ノートバッファを示す図である。
【図24】プレイバッファを示す図である。
【図25】カレントプレイノートナンババッファを示す図である。
【図26】ホールドバッファを示す図である。
【図27】オーダバッファを示す図である。
【図28】オーダライトカウンタを示す図である。
【図29】オーダポジションカウンタを示す図である。
【図30】リズムパターンテーブルポジションカウンタを示す図である。
【図31】スキャンモードテーブルポジションカウンタを示す図である。
【図32】クロックカウンタを示す図である。
【図33】ネクストクロックバッファを示す図である。
【図34】ノートオフリザベーションバッファを示す図である。
【図35】エンドフラグを示す図である。
【図36】ベースノートバッファを示す図である。
【図37】トップノートバッファを示す図である。
【図38】ゼネラルプログラムのフローチャートである。
【図39】初期化処理ルーチンのフローチャートである。
【図40】リセットスキャナルーチンのフローチャートである。
【図41】クロック処理ルーチンのフローチャートである。
【図42】スキャンノートオンルーチンのフローチャートである。
【図43】スキャンアップルーチンのフローチャートである。
【図44】スキャンオーダルーチンのフローチャートである。
【図45】スキャンコードルーチンのプログラムである。
【図46】スキャンベースルーチンのプログラムである。
【図47】スキャンコードウィズアウトベースルーチンのプログラムである。
【図48】ノートオフ予約ルーチンのプログラムである。
【図49】ベロシティ生成ルーチンのフローチャートである。
【図50】図49に示すベロシティ生成ルーチンで生成されるベロシティの説明図である。
【図51】ネクストクロック更新ルーチンのフローチャートである。
【図52】スキャナ更新ルーチンのフローチャートの前半部分である。
【図53】スキャナ更新ルーチンのフローチャートの後半部分である。
【図54】エディットルーチンのフローチャートである。
【図55】ノートオン処理ルーチンのフローチャートである。
【図56】ノートオフ処理ルーチンのフローチャートである。
【図57】デリートオーダルーチンのフローチャートである。
【図58】パックオーダルーチンのフローチャートである。
【図59】ホールドオフ処理ルーチンのフローチャートである。
【図60】リメークオーダルーチンのフローチャートである。
【図61】図2のパネルに付加されるベロシティボリウムを示した図である。
【図62】図49に示すベロシティ生成ルーチンに代えて採用されるベロシティ生成ルーチンのフローチャートである。
【図63】図2のパネルに付加されるスタイルスイッチを示した図である。
【図64】図54に示すエディットルーチンに代えて採用されるエディットルーチンのフローチャートである。
【符号の説明】
10 CPU
11 アドレスバス
12 データバス
13 RAM
14 ROM
15 パネル
16 クロックタイマ
17 データ入力端子
18 データ出力端子
20 鍵盤
21 ペダル
30 音源
151 リズムパターン設定用操作子
152 スキャンモード設定用操作子
153 グルーブレート設定用操作子
154 ベロシティボリウム
155 スタイルスイッチ
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to an arpeggiator that scans key pressing information and sequentially generates a plurality of performance information according to the scanning result.
[0002]
[Prior art]
Some conventional electronic musical instruments have a so-called arpeggiator function. The arpeggiator is a function that scans the key press information in order from the lowest pitch to the highest pitch, for example, and outputs the performance information sequentially according to the result.
[0003]
With this function, it is possible to realize an arpeggio performance that is difficult for a performer by a simple performance operation by simply pressing a plurality of keys simultaneously.
[0004]
[Problems to be solved by the invention]
However, the conventional arpeggiator scans the key pressing information at a certain fixed time interval and sequentially outputs performance information at the fixed time interval. There was a tendency to become musically unsavory.
[0005]
In addition, the characteristics of the musical sound, such as the duration of the musical sound and the volume of the musical sound, are uniform, and from this point of view, the arpeggio performance was not musical and tasteless. An object of the present invention is to provide an arpeggiator capable of performing a more musical arpeggio performance with a simple operation, which is impossible with a conventional arpeggiator.
[0006]
[Means for Solving the Problems]
The first arpeggiator of the present invention that achieves the above object is as follows.
(1-1) A key depression having a storage area corresponding to each of a plurality of keys and erasably writing key depression information indicating that the key has been depressed into a storage area corresponding to the depressed key. Information storage means;
(1-2) For each step of the rhythm, one step or a plurality of time intervals between a certain step and the next step following the step and the tone duration information of the musical sound at the step Rhythm pattern table storage means for storing a rhythm pattern table stored in each of the steps,
(1-3) The steps of the rhythm pattern table are sequentially referred to, and the storage area is scanned corresponding to the steps, and the key depression information detected by the scan and the scan of the rhythm pattern table And performance information generating means for generating performance information representing a musical sound based on both the pronunciation duration information recorded in the step corresponding to, at a timing according to the time interval recorded in the step,
The performance information generating means further generates performance information representing the changed musical sound based on information defining the degree of change in pronunciation duration.
[0007]
The second arpeggiator of the present invention that achieves the above object is
(2-1) A key depression having a storage area corresponding to each of a plurality of keys and erasably writing key depression information indicating that the key has been depressed into a storage area corresponding to the depressed key. Information storage means;
(2-2) For each step of the rhythm, a time interval between a certain step and the next step following the step is combined with the tone intensity information of the musical sound in the step, and one step or a plurality of steps A rhythm pattern table storage means for storing a rhythm pattern table stored in each step;
(2-3) Each step of the rhythm pattern table is sequentially referred to, and the storage area is scanned corresponding to each step, and the key depression information detected by the scan and the scan of the rhythm pattern table Performance information generating means for generating performance information representing a musical sound based on both of the pronunciation intensity information recorded in the step corresponding to, at a timing according to the time interval recorded in the step,
The performance information generating means further generates performance information representing a musical tone that has been changed based on information that defines the degree of change in pronunciation intensity.
[0008]
Here, it is preferable that the first arpeggiator of the present invention further includes an operator that generates information that defines the degree of change in the pronunciation duration according to the degree of operation.
[0009]
In the second arpeggiator of the present invention, it is preferable to include an operator that generates information that defines the degree of change in the pronunciation intensity according to the degree of operation.
[0010]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, embodiments of the present invention will be described.
[0011]
FIG. 1 is a circuit configuration diagram of an embodiment of an arpeggiator of the present invention. Here, the CPU 10, the address bus 11 and the data bus 12 connected to the CPU 10, the RAM 13, the ROM 14, the panel 15, the clock timer 16 for notifying the CPU 10 of the generation of the clock, and data conforming to the MIDI standard are input. A data input terminal (MIDI IN) 17 and a data output terminal (MIDI OUT) 18 for outputting data compliant with the MIDI standard are provided.
[0012]
The ROM 14 is a read-only memory area, and stores a program executed by the CPU 10 and various tables referred to by the program. Details of the program and table will be described later. The RAM 13 is used as a working area for programs executed by the CPU 10. Here, the RAM 13 is backed up by a battery, and the memory contents at that time are saved even when the power is turned off. The contents of the memory will be described later.
[0013]
The panel 15 has an operation switch and a display, and can select a parameter independently and set a value for the parameter. The set value is stored in a memory in the RAM 13. FIG. 2 is a view showing the panel 15. In this panel, a rhythm pattern number (Rhythem Pattern #), a scan mode number (Scan Mode #), and a groove rate (Groove Rate) can be set.
[0014]
In the present embodiment, the rhythm pattern is a combination of sound generation timing, duration, and velocity coefficient patterns. The rhythm pattern setting operator 151 is composed of a pair of an operation button 151a for incrementing a value and an operation button 151b for decrementing the value. The values set by these operation buttons 151a and 151b are displayed on the display 151c. As described above, it is stored in the RAM 13.
[0015]
The scan mode refers to a set of scan methods for scanning key pressing information. Similarly to the rhythm pattern setting operation element 151, the scan mode setting operation element 152 is composed of a pair of an operation button 152a for incrementing a value and an operation button 151b for decrementing the value, and these operation buttons 151a and 151b are used. The set value is displayed on the display 152c and stored in the RAM 13.
[0016]
The groove rate determines the degree of so-called “groove”, and the groove rate setting operation element 153 is composed of a slider. When the slide button 153a is moved to the bottom, a value “0” is set in the groove rate parameter. When it is moved to the top, the value “100” is set in the groove rate parameter, and when set in the middle, a value between 0 and 100 is set according to the set position. This set value is stored in the RAM 13.
[0017]
Details of each parameter will be described later. Returning to FIG. 1, the description will be continued. The clock timer 16 generates a clock at a constant cycle, and notifies the CPU of the clock generation every time the clock is generated. In the present embodiment, the time for 96 clocks is determined as the quarter note production time, and the arpeggio tempo is determined by this clock cycle.
[0018]
For example, a keyboard 20 is connected to the data input terminal (MIDI IN) 17 as shown in the figure, and key depression (note-on) information and key release (note-off) information generated by playing the keyboard 20 are input. A hold pedal 21 is connected to the keyboard 20, and hold-on information and hold-off information (collectively referred to as hold information) generated by operating the hold pedal 21 are also MIDI data. As one type, it is input via the data input terminal 17.
[0019]
The CPU 10 receives key pressing information and key release information input from the data input terminal 17 to sequentially generate performance information for arpeggio performance, and outputs the performance information from the data output terminal 18 to the outside. For example, a sound source 30 is connected to the data output terminal 18 as shown in the figure, and the sound source 30 generates a musical sound signal based on the received performance information. The musical sound signal is emitted into space as a musical sound, for example, by a sound system including an amplifier, a speaker and the like built in the sound source 30 or connected to the sound source 30.
[0020]
In the following, various tables stored in the ROM, which are referred to by programs described later, will be described first, then various memories secured in the RAM will be described, and then the programs using these tables and memories will be described. To do. FIG. 3 is a diagram showing a basic pattern of the rhythm pattern table. In the rhythm pattern table, each step corresponds to each step of the rhythm, and each step includes a time interval (step time) between that step and the next step following that step. The duration of the rhythm sound (duration) and the velocity coefficient (Velo. Coef.) That defines the intensity of the rhythm sound at that step are recorded, and finally the size of the rhythm pattern table (number of steps) ; Step Size) is recorded. The memory capacity for one step is a total of 5 bytes including a step time of 2 bytes, a duration of 2 bytes, a velocity coefficient of 1 byte, and the number of steps is 1 byte. In the column of step time and duration, numerical values in units of the above-described clock (quarter note = 96 clocks) are recorded.
[0021]
A plurality of types of rhythm pattern tables are recorded in the ROM, and each rhythm pattern table is numbered. By operating the rhythm pattern setting operator 151 shown in FIG. 2 and setting the rhythm pattern number, the performer can select an arbitrary rhythm pattern table. Here, the rhythm pattern table and the number of steps thereof are written as RHY_XXX_TBL [n] and RHY_XXX_SIZE, respectively. XXX represents the name of the rhythm pattern table, and n in [n] is a step number (0 ≦ n <RHY_XXX_SIZE) in the rhythm pattern table.
[0022]
The step time, duration, and velocity coefficient recorded in the nth step of the rhythm pattern table name XXX are RHY_XXX_TBL [n]. stepTimeRHY_XXX_TBL [n]. durationRHY_XXX_TBL [n]. It is written as veloCoef.
[0023]
Next, each example of the rhythm pattern table will be described. FIG. 4 is a diagram showing a rhythm pattern table for quarter notes and the number of steps. This rhythm pattern table has a name “4” indicating that it is for a quarter note, and is represented as RHY — 4_TBL. RHY_4_TBL [0]. stepTime, RHY — 4_TBL [0]. duration, RHY — 4_TBL [0]. The veloCoef is 96 (number of quarter note clocks), 92 and 127, respectively. The number of steps is expressed as RHY — 4_SIZE. Since this rhythm pattern table RHY_4_TBL consists of only one step, the number of steps RHY_4_SIZE is “1”.
[0024]
The rhythm pattern table RHY_4_TBL and the rhythm pattern table RHY_XXX_TBL shown below are assigned different rhythm pattern numbers. The rhythm pattern number of the rhythm pattern table RHY_XXX_TBL shown in FIG. 4 is “0”. 5, 6, 7, 8, and 9 are for sixteenth notes (name: 16), waltz (shuffle), shuffle (shuffle), diminished (dim), and reggae (reggae), respectively. It is the figure which showed the rhythm pattern table and the number of steps for it. Rhythm pattern numbers are assigned 1, 2, 3, 4, and 5 in this order. Since these structures are clear from the above description, detailed description is omitted.
[0025]
FIG. 10 is a diagram showing a basic pattern of the scan mode table. In each step of the scan mode table, a number (scan function number; Scan Function #) of a method for scanning key pressing information (scan method) is recorded. The memory capacity for one step of this scan mode table is 1 byte, and the number of steps is also 1 byte.
[0026]
A plurality of types of scan mode tables are stored in the ROM 14, and the player can select an arbitrary scan mode table by operating the scan mode setting operator 152 shown in FIG. Here, the scan mode table and the number of steps thereof are expressed as SMODE_XXX_TBL [n] and SMODE_XXX_SIZE, respectively. XXX represents the name of the scan mode table, and n in [n] is a step number (0 ≦ n <SMODE_XXX_SIZE) in the scan mode table.
[0027]
Each scanning method (Scan Function) in this embodiment is as follows.
[0028]
(1) Ascending scan type Key pressing information is scanned from the lowest pitch to the highest pitch. Here, this is expressed as SCAN_U.
[0029]
(2) Down-scan method Scans from the highest pitch to the lowest pitch. Here, this is expressed as SCAN_D.
[0030]
(3) Ascending / descending scan method Scanning from the lowest pitch to the highest pitch, when the highest pitch is reached, this time, scanning from the highest pitch to the lowest pitch. Here, this is expressed as SCAN_UD.
[0031]
(4) Random scan method Scan at random. Here, this is expressed as SCAN_R.
[0032]
(5) Key-pressing order scanning method Scanning is performed in the order of key-pressing information input. Here, this is expressed as SCAN_O.
[0033]
(6) Chord scan method All currently pressed keys are scanned. Here, this is expressed as SCAN_C.
[0034]
(7) Lowest note scanning method Only the lowest note number (lowest note) of the currently pressed keys is scanned. Here, this is expressed as SCAN_B.
[0035]
(8) Highest sound scanning method Only the highest note number (highest sound) of the currently pressed keys is scanned. Here, this is expressed as SCAN_T.
[0036]
(9) Minimum sound removal ascending scan method Scanning from the lowest pitch to the highest pitch except the lowest tone. Here, this is expressed as SCAN_U_WO_B (Scam up without bass).
[0037]
(10) Random scan method without lowest sound Scans randomly except for the lowest sound. Here, this is expressed as SCAN_R_WO_B.
[0038]
(11) Minimum tone-free chord scanning method All the keys currently pressed are scanned except the lowest tone. Here, this is expressed as SCAN_C_WO_B.
[0039]
(12) Maximum sound removal scan method Except for the highest sound, scanning is performed from a lower pitch to a higher pitch. Here, this is expressed as SCAN_U_WO_T.
[0040]
Next, each example of the scan mode table is shown. FIG. 11 is a diagram showing a scan mode table for ascending scan and the number of steps. This scan mode table represents the name “UP” indicating that it is for upward scanning, and is represented as SMODE_UP_TBL. The number of steps is expressed as SMODE_UP_SIZE. Since this scan mode table SMODE_UP_TBL consists of only one step in which the ascending scan method SCAN_U is recorded, the step number SMODE_UP_SIZE is “1”. Each of the scan mode table SMODE_UP_TBL and each of the following scan mode tables SMODE_XXX_TBL is assigned a different scan mode number, and the scan mode number of the scan mode table SMODE_UP_TBL shown in FIG. 11 is “0”. .
[0041]
12, FIG. 13, FIG. 14, FIG. 15, FIG. 17, FIG. 17, FIG. 19, respectively, are for down scan (DOWN), up / down scan (UP_DW), random scan (RANDOM), and chord scan. FIG. 4 is a diagram showing scan mode tables and steps for use (CHORD), key-pressing order scan (ORDER), waltz (WALTZ), reggae (REGGAE), and shamisen (SHAMI).
[0042]
Scan mode numbers are assigned 1, 2, 3, 4, 5, 6, 7, and 8 in this order. Since these structures are clear from the above description, detailed description is omitted.
[0043]
Next, a memory in the RAM in which various parameter values are stored will be described.
[0044]
FIG. 20 is a diagram showing rhythm pattern parameters. This rhythm pattern parameter is a 1-byte memory, and the rhythm pattern number set by the operation of the rhythm pattern setting operation 151 of the panel 15 shown in FIG. 2 is stored in this memory. Here, this is expressed as PRM_RHYTHM.
[0045]
FIG. 21 is a diagram showing scan mode parameters. This scan mode parameter is also a 1-byte memory, and this memory stores a scan mode number set by operating the scan mode setting operator 152 of the panel 15 shown in FIG. Here, this is expressed as PRM_SMODE. FIG. 22 is a diagram showing the groove rate parameters. This groove rate parameter is also a 1-byte memory, in which the value of the groove rate set by the operation of the groove rate setting operator of the panel 15 shown in FIG. 2 is stored. The range of this value is 0 to 100 as described above. Here, this is expressed as PRM_GROOVE.
[0046]
FIG. 23 is a diagram illustrating a note buffer. This note buffer is an array of 128 bytes, and each 1 byte corresponds to each key (note number) of the keyboard 20 (see FIG. 1). Information indicating the key depression strength (note on velocity) is stored in an area corresponding to the note number in the key depression information. If the corresponding key has been released (note-off), or if the key has been pressed and released, “−1” is stored in that area.
[0047]
Here, each area of the note buffer is denoted as NOTEBUF [n]. n represents a note number. FIG. 24 is a diagram illustrating a play buffer. This play buffer is an array of 128 bytes, similar to the note buffer shown in FIG. 23, and each byte corresponds to each note number. However, unlike the note buffer shown in FIG. 23, this play buffer stores note-on velocity taking hold information into account. That is, when the hold pedal 21 connected to the keyboard 20 shown in FIG. 1 is stepped on, hold-on information is input via the data input terminal 17, and when the hold pedal 21 is released, the hold input 21 is released via the data input terminal 17. Although hold-off information is input, when hold-on information is received, key press information stored in the play buffer shown in FIG. 24 is prohibited from being erased until the hold-off information is received. When hold-off information is input, the contents of the note buffer at that time are copied to the play buffer, and thereafter, the play buffer always maintains the same contents as the note buffer unless hold-on information is input next time. When performing an arpeggio performance, this play buffer in which velocities taking hold information into consideration are arranged is scanned. Here, this play buffer area is denoted as PLAYBUF [n]. n represents a note number.
[0048]
FIG. 25 shows the current play note number buffer. The current play note number buffer is a 1-byte memory in which the note number of the current step during the arpeggio performance is stored. Here, this is expressed as CUR_NOTE. FIG. 26 is a diagram illustrating a hold buffer. This hold buffer is a 1-byte memory in which numerical hold information of 0 to 127 is stored. When the hold pedal 21 shown in FIG. 1 is operated, hold information represented by a numerical value of 0 to 127 corresponding to the operation amount is input from the data input terminal 17, and the hold information is stored in the hold buffer. Here, if this value is 64 or more, it is regarded as hold-on information, and if it is less than 64, it is regarded as hold-off information. Here, this is expressed as HOLD.
[0049]
FIG. 27 is a diagram illustrating an order buffer. This order buffer is an array of 16 steps in which 1 step consists of 2 bytes, and each step stores a note number and the velocity of the note number. In this order buffer, the note number of the key that was pressed and the velocity at the time of the key press are stored in the order in which the key was pressed. When the key was released, the note number and velocity of that key were deleted and rearranged to the top. It is. Here, this is expressed as ORDER [n]. n is a step number (n = 0-15). In particular, when only the note number of the nth step and only the velocity are indicated, ORDER [n]. note, ORDER [n]. Indicated as velo.
[0050]
FIG. 28 is a diagram illustrating an order write counter. This order write counter is a 1-byte memory. When the key depression information is received next time, the received key depression information is stored in this memory at the step number of the order buffer ORDER [] shown in FIG. A value indicating whether to store in is stored. Possible values of this order write counter are 0-16. 0 to 15 correspond to each step of the order buffer ORDER [], and 16 means that the order buffer ORDER [] is full. Here, this is expressed as ORDER_WR.
[0051]
FIG. 29 is a diagram illustrating an order position counter. This order position counter is a 1-byte memory. In this memory, the musical tone of the current step in the arpeggio performance is a musical tone corresponding to the step number of the order buffer ORDER [] shown in FIG. The indicated value is stored. Possible values of the order position counter are −1 to 15. 0 to 15 correspond to the respective steps of the order buffer ORDER [] shown in FIG. 27, and −1 represents the timing at which a series of steps of the arpeggio performance will be started (the timing at which the previous series of steps is completed). I mean. Here, this is expressed as CUR_ORDER.
[0052]
FIG. 30 is a diagram showing a rhythm pattern table position counter. This rhythm pattern table position counter is a 1-byte memory, and this memory is a pointer that points to a step in the currently selected rhythm pattern table (see the examples in FIGS. 3 and 4 to 9). . This pointer corresponds to the current rhythm step during the arpeggio performance. The value that this rhythm pattern table position counter can take is 0 or more and less than the number of steps RHY_XXX_SIZE of the currently selected rhythm pattern table. Here, this is expressed as CUR_RHY.
[0053]
FIG. 31 is a diagram showing a scan mode table position counter. This scan mode table position counter is a 1-byte memory, and is a pointer that points to a step in the currently selected scan mode table (see FIGS. 10 and 11 to 19). This pointer also corresponds to the current rhythm step during the arpeggio performance. Possible values of the scan mode table position counter are 0 or more and less than the number of steps SMODE_XXX_SIZE of the currently selected scan mode table. Here, this is expressed as CUR_SMODE.
[0054]
FIG. 32 is a diagram showing a clock counter. This clock counter is a 2-byte (16-bit) memory, and the value of this clock counter increases by “1” every time the clock timer 16 shown in FIG. 1 generates one clock. The range of the value of this clock counter is 0000h to FFFFh, and next to FFFFh returns to 0000h, and circulates indefinitely while the power is on. The arpeggio proceeds based on the increase in the clock value. Here, this is expressed as CLOCK.
[0055]
FIG. 33 is a diagram illustrating a next clock buffer. This next clock buffer is a 2-byte (16-bit) memory, and this memory stores the time of the next step of the arpeggio performance. That is, when CLOCK shown in FIG. 32 increases and reaches the value stored in the next clock buffer, key-on information is scanned and note-on data is transmitted. When the processing of one step is completed, the value of the next clock buffer is updated at the time of the next step. The range of values that the next clock buffer can take is 0000h to FFFFh. Here, this is expressed as NEXTCLK.
[0056]
FIG. 34 is a diagram illustrating a note-off reservation buffer. The note-off reservation buffer is an array of 3 bytes × 16, and in this note-off reservation buffer, a note number to be note-off and a timing to actually transmit it as note-off data are stored in pairs. . This transmission timing is represented by the value of CLOCK in FIG. When the CLOCK sequentially increases and reaches one of the transmission timings stored in the note-off reservation buffer, note-off data is transmitted for the note number stored in a pair with the transmission timing. Is done. '-1' is stored in an area where no valid data is stored in the note-off reservation buffer or an area where the note-off data has been transmitted.
[0057]
Here, this is expressed as OFFRSV [n]. n means the nth storage area of a pair of a note number and its transmission timing. In particular, when indicating the note number and transmission timing in OFFRSV [n], OFFRSV [n]. note, OFFRSV [n]. It is written as clock. FIG. 35 is a diagram showing an end flag. This end flag is composed of a 1-byte memory here, but may be composed of 1 bit due to the nature of the flag. This end flag takes a binary value of '0' and '1'. '0' indicates that scanning for the pronunciation of one step during the arpeggio performance has not been completed, and '1' It shows that the scanning for the sound generation of one step is completed. Here, this is expressed as END_FLG.
[0058]
FIG. 36 is a diagram showing a base note buffer. This base note buffer is a 1-byte memory, and the memory stores the note number of the lowest tone key among the keys being pressed in consideration of hold information. Here, this is expressed as LO. FIG. 37 is a diagram showing a top note buffer. This top note buffer is a 1-byte memory, in which the note number of the key of the highest tone among the keys being pressed with the hold information added is stored. Here, this is expressed as HI.
[0059]
In addition to the memories described above, there is a memory used as a work area. However, in order to suffice with a description of a program to be described later, a description of each memory other than those described here is omitted here. Hereinafter, a program executed by the CPU using the tables and memories described so far will be described.
[0060]
FIG. 38 is a flowchart of a general program that starts operating when the power is turned on and continues to operate until the power is turned off. When the power is turned on, first, predetermined initialization is performed (step 38_1). Thereafter, whether or not the clock generation is notified from the clock timer 16 (see FIG. 1) (step 38_2), the panel 15 (see FIG. 1). 1 (see FIG. 2) and any parameter has been edited (step 38_4), note-on data (key press information) is input (step 38_6), note-off data (key release information) ) Is input (step 38_8) and hold data (hold information) is input (step 38_10) is cyclically monitored sequentially, and each event is performed in each step 38_2, 38_4, 38_6, 38_8, 38_10. Is recognized, the clock processing (step 38_3) and the editing processing (step -Up 38_5), note-on process (step 38_7), note-off process (step 38_9), hold the data processing (step 38_11,38_12,38_13) is performed.
[0061]
In the hold data processing, first, a hold value is stored in HOLD (see FIG. 26) (step 38_11), and it is determined whether or not the hold value is 64 or more indicating hold-on (step 38_12). If it is 63 or less, hold-off processing is performed (step 38_13). FIG. 39 is a flowchart of the initialization processing routine. This initialization processing routine is executed in step 38_1 of the general program shown in FIG.
[0062]
In this initialization process, first, the order buffer ORDER [] (see FIG. 27) in which the velocities at the time of key depression are stored in the key depression order is cleared, and the storage pointer ORDER_WR (see FIG. 28) of the order buffer ORDER [] is stored. It is initialized to “0” (the head of ORDER []), and further, the order position counter CUR_ORDER (FIG. 29) is initialized to “−1” indicating that it is time to start a series of steps of the arpeggio performance. (Step 39_1).
[0063]
Next, a clock counter CLOCK (see FIG. 32) that counts the clock generated by the clock timer 16 (see FIG. 1) is initialized to “0” (step 39_2), and the timing for generating the next performance information is stored. The next clock buffer NEXTCLK (see FIG. 33) is also initialized to “0” (step 39_3). Furthermore, the note-off reservation buffer OFFRSV [] (see FIG. 34) storing the note number to be turned off and the timing at which the note is to be turned off is cleared (step 39_4), and the key arrangement of the keyboard 20 (see FIG. 1) The note buffer NOTEBUF [] (see FIG. 23) in which the velocity of the depressed key is stored is cleared (step 39_5), and the play buffer in which the velocity taking hold information into consideration is stored PLAYBUF [] (see FIG. 24) is cleared (step 39_6). Further, the hold buffer HOLD (see FIG. 26) in which the hold value is stored is cleared to “0” (step 39_7), and further, a reset scanner routine for resetting the scanner is executed (step 39_8).
[0064]
FIG. 40 is a flowchart of the reset scanner routine. The reset scanner routine is executed in step 39_8 of the initialization routine shown in FIG. Here, “−1” representing a vacancy is stored in the current play note number buffer CUR_NOTE (see FIG. 25) in which the note number currently being played by the arpeggio is stored, and the current value of the order buffer ORDER [] (see FIG. 27) is stored. The order position counter CUR_ORDER (refer to FIG. 29) indicating the step during the arpeggio performance also stores “−1” indicating empty, and further, the scan mode table position counter CUR_SMODE which is each pointer of the scan mode table and rhythm pattern table. (See FIG. 31), the rhythm pattern table position counter CUR_RHY (see FIG. 30) is initialized to “0” indicating the head. Further, a value obtained by adding 1 to the clock CLOCK (see FIG. 32) is stored in the next clock NEXTCLK (see FIG. 33). The reason why the value obtained by adding “1” to CLOCK is NEXTCLK is pronounced when NEXTCLK = CLOCK as described later (note-on data is transmitted), but CLOCK is incremented while this program is operating. This is to eliminate the possibility that the CLOCK exceeds the NEXTCLK indicating the sound generation start timing and the sound generation is not performed.
[0065]
In the reset scanner routine shown in FIG. 40, “0” indicating incomplete is further stored in an end flag END_FLG indicating whether or not the operation for sound generation in one step of the arpeggio performance being performed is incomplete. . FIG. 41 is a flowchart of the clock processing routine. This clock processing routine is executed in step 38_3 of the general program shown in FIG.
[0066]
In this clock processing routine, CLOCK (see FIG. 32) is first incremented (step 41_1). Next, OFFRSV [] (see FIG. 34) is searched to check whether there is note-off data to be transmitted at the current timing, and when there is note-off data to be transmitted at the current timing. The note-off data is transmitted (steps 41_2 to 41_8).
[0067]
Specifically, first, '0' is set to i (step 41_2), and OFFRSV [i]. Whether or not valid note-off data is stored in note (0 to 127) is checked (-1) (step 41_3). If '-1', i is incremented (step 41_7), and i is 16 The search is carried out until (step 41_8) is reached. When it is confirmed in step 41_3 that valid note-off data is stored, the process proceeds to step 41_4, and OFFRSV [i]. It is determined whether or not the clock is equal to the current CLOCK. If it is equal, the note-off data is transmitted as performance information (step 41_5), and OFFRSV [i]. Write “−1” to note (step 41_6).
[0068]
When the search for note-off data is completed, a process for finding note-on data to be transmitted is performed (steps 41_9 to 41_17). Specifically, first, it is determined whether or not the current CLOCK has reached NEXTCLK, that is, whether or not the timing at which note-on data should be transmitted has been reached (step 41_9), and when the timing has not yet been reached. It ends as it is.
[0069]
When NEXTCLK = CLOCK, the process proceeds to step 41_10, and a scan note-on routine for scanning key pressing information is executed (step 41_10). The details of this scan note-on routine will be described later. In this scan note-on routine, one of the note numbers to be transmitted is stored in NT. NT = -1 means that there is no note to be transmitted. If it is determined in step 41_11 that NT is not -1, that is, there is a note to be transmitted, the process proceeds to step 41_12 and a note-off reservation routine is executed. The details of this note-off reservation routine will be described later. In this note-off reservation routine, note-off data corresponding to the note-on data to be transmitted is stored in OFFRSV [] (see FIG. 34). Make an off-line reservation. When OFFRSV [] is full, “−1” indicating that note-off reservation cannot be made is stored in NT.
[0070]
In step 41_13, it is determined whether or not note-off reservation has been made by checking whether NT = -1. If note-off reservation is not possible, note-on data is not transmitted and the process returns to step 41_10 to be transmitted. Search for the next note-on data. When NT ≠ −1 in step 41_13, that is, when the note-off reservation is normally made, the process proceeds to step 41_14, and the velocity generation routine is executed. Details of the velocity generation routine will be described later. In this velocity generation routine, the velocity of note-on data to be transmitted is generated by an operation described later. Thereafter, the note-on data is transmitted in step 41_15, and the process returns to step 41_10 to search whether or not there is any note-on data to be transmitted at the current timing.
[0071]
When “−1” is stored in NT in step 41_10, that is, there is no note-on data to be transmitted at the current timing (or all note-on data to be transmitted at the current timing has been transmitted). In this case, the process proceeds to step 41_16 via step 41_11. In step 41_16, a next clock update routine is executed. The details of the next clock update routine will be described later. Here, the next timing of note-on data transmission is stored in NEXTCLK.
[0072]
Thereafter, the process proceeds to step 41_17, and the scanner update routine is executed. The scanner is updated by this scanner update routine. Details of this scanner update routine will also be described later. FIG. 42 is a flowchart of the scan note-on routine. This scan note-on routine is executed in step 41_10 of the clock processing routine of FIG.
[0073]
In this scan note-on routine, first, PRM_SMODE (see FIG. 21) in which a scan mode number is stored is referred to (step 42_1), and a scan mode table (FIG. 10, FIG. 10) corresponding to the scan mode number stored in the PRM_SMODE. The scan method (scan function number) SMODE_XXX_TBL [CUR_MODE] stored in the current step number CUR_SMODE in FIG. 11 to FIG. 19) is stored in the work area func (step 42_2). Then, depending on whether the scan function number stored in the func indicates SCAN_U, SCAN_D, SCAN_UD,..., SCAN_U_WO_T, respectively, the scan-up routine (step 42_4) and the scan-down routine (step 42_5), scan up / down routine (step 42_6),..., Scan up with out top routine (42_15) is executed.
[0074]
In the following, as representative examples, a scan-up routine (step 42_4), a scan order routine (step 42_8), a scan code routine (step 42_9), a scan base routine (step 42_10), a scan code with out base (step 42_14) Will be described. FIG. 43 is a flowchart of the scan-up routine. This scan-up routine is a routine for realizing the above-described ascending scan method.
[0075]
Here, first, it is determined whether END_FLG (see FIG. 35) is “1” or “0”, that is, whether or not the scanning for the sound generation for this one step has already been completed (step 43_1). If END_FLG = 1, that is, if the current scan has already been completed, the process proceeds to step 43_2, where “−1” is stored in NT and the process ends. However, when this scan-up routine is executed for the first time in this step, END_FLG = 0.
[0076]
When END_FLG is not “1” in step 43_1, the process proceeds to step 43_3, where it is determined whether or not there is any note-on data in PLAYBUF [] (see FIG. 24), and no note-on data exists. If it does not exist, there is no way of sounding, so the process proceeds to step 43_2, where "-1" is stored in NT and the process ends.
[0077]
When it is recognized that note-on information exists in PLAYBUF [], next, note-on data to be transmitted is scanned in accordance with the ascending scan method (steps 43_4 to 43_7). Specifically, since the note number of the note-on data transmitted immediately before is stored in CUR_NOTE (see FIG. 25), the CUR_NOTE is advanced to the next note number (step 43_4), and the note number is set to 128. When it reaches (step 43_5), “0” is stored in CUR_NOTE (step 43_6). Using the updated CUR_NOTE, whether or not valid velocity data is stored in PLAYBUF [CUR_NOTE]. It is determined (step 43_7). If PLAYBUF [CUR_NOTE] =-1, that is, no valid velocity data is stored there, the process proceeds to step 43_4, where CUR_NOTE is incremented again to find an area where the effective velocity of PLAYBUF [] is stored. Therefore, scanning is performed from the lowest pitch to the highest pitch.
[0078]
Thus, when PLAYBUF [] in which valid velocity data is stored is found, CUR_NOTE at that time is stored in NT (step 43_8), and velocity data of CUR_NOTE stored in PLAYBUF [NT] is stored. Is stored in VL (step 43_9), and in the ascending scan method, only one note-on data is transmitted in one step, so '1' indicating the end of scanning is stored in END_FLG (step 43_10).
[0079]
FIG. 44 is a flowchart of the scan order routine. This scan order routine is a routine for realizing the key pressing order scanning method described above. Steps 44_1 and 44_2 are the same as steps 43_1 and 43_2 of the scan-up routine shown in FIG. In step 44_3, it is checked whether ORDER_WR = 0. As described with reference to FIG. 28, ODER_WR is a pointer of ORDER [] (see FIG. 27) that stores key pressing information in the order of key pressing. ORDER WR = 0 means that ORDER [] is empty. This means that a key-pressed arpeggio performance cannot be performed, and also in this case, the process proceeds to step 44_2, where “−1” is stored in NT and the process ends.
[0080]
If it is determined in step 44_3 that ORDER_WR is not 0, that is, ORDER [] is not empty, the process proceeds to step 44_4, CUR_ORDER (see FIG. 29) is incremented, and CUR_ORDER exceeds the maximum step in which ORDER [] is written. (Step 44_5), if exceeded, 0 is stored in CUR_ORDER (step 44_6). Using the CUR_ORDER whose value has been advanced in this way, the note number ORDER [CUR_ORDER]. note is stored in NT (step 44_7), the velocity ORDER [CUR_ORDER]. velo is stored in VL (step 44_8). Also in this key pressing order scanning method, only one note-on data is transmitted in one step, and therefore, “1” indicating the end of scanning is stored in END_FLG (step 44_9).
[0081]
FIG. 45 shows a scan code routine program. This scan code routine is a routine for realizing the chord scanning method described above. Steps 45_1, 45_2, and 45_3 are the same as steps 43_1, 43_2, and 43_3 of the scan-up routine shown in FIG. In this step, when this scan code routine is called for the first time, “−1” is stored in CUR_NOTE. Therefore, in the loop of steps 45_4, 45_5 and 45_6, CUR_NOTE = 0 and Scan until CUR_NOTE = 127. In the middle of the scanning, if PLAYBUF [CUR_NOTE] finds that a value other than “−1”, that is, valid velocity data is stored, the process proceeds to step 45_7, where the note number CUR_NOTE is stored in NT, and VL The velocity data PLAYBUF [NT] of the note number is stored in (step 45_8), and this routine is temporarily exited.
[0082]
In the chord scan method, it is necessary to scan the entire area of PLAYBUF [] and transmit all the note-on data in which valid velocity data is stored. Therefore, when exiting this scan code routine before reaching CUR_NOTE ≧ 128, END_FLG Is not stored in '1'. When this scan code routine is exited, the scan note-on routine shown in FIG. 42 is also exited, and step 41_10 of the clock processing routine of FIG. 41 is exited. When NT is not -1, the process proceeds to steps 41_12, 41_13, 41_14, and 41_15 to transmit one note-on data, and returns to step 41_10 again, through the scan note-on routine of FIG. The 45 scan code routine is executed again. At that time, scanning is performed from the value CUR_NOTE next to CUR_NOTE when execution is started again, that is, when this routine is exited last time (step 45_4). If it is determined in step 45_5 that CUR_NOTE ≧ 128, that is, PLAYBUF [] has been scanned, the process proceeds to step 45_9, where “−1” is stored in NT, and further proceeds to step 45_10, where “1” is stored in END_FLG. Is stored.
[0083]
FIG. 46 shows a scan base routine program. This scan base routine is a routine for realizing the above-described lowest sound scanning method. Steps 46_1, 46_2, and 46_3 are the same as steps 43_1, 43_2, and 43_3 of the scan-up routine shown in FIG. In Step 46_4, the lowest sound LO (see FIG. 36) is stored in NT. The process of storing the lowest sound in the LO will be described later.
[0084]
In step 46_5, the velocity PLAYBUF [NT] of the lowest tone LO is stored in VL. In step 46_6, '1' is stored in END_FLG. This is because there is only one minimum sound. FIG. 47 is a program of a scan code with out base routine. This routine is a routine for realizing the above-described lowest tone-free chord scanning method.
[0085]
Steps 47_1, 47_2, and 47_3 are the same as steps 43_1, 43_2, and 43_3 of the scan-up routine shown in FIG. In step 47_4, it is determined whether PLAYBUF [] has only one note-on or a plurality of note-ons. If there is only one note-on, the lowest tone-free chord scanning method is originally In this case, it is assumed that the only note-on note number is transmitted, the process proceeds to step 47_5, the note number of the note is stored in NT, and the velocity PLAYBUF [NT] of the note number is set to VL. Store (step 47_6), and store '1' in END_FLG (step 47_7).
[0086]
If it is confirmed in step 47_4 that there are a plurality of note-on numbers, the process proceeds to step 47_8. In this step, when this scan code with out base routine is called for the first time, “−1” is stored in CUR_NOTE as in the case of the scan code routine shown in FIG. The process of storing “−1” in CUR_NOTE will be described later. Accordingly, here, scanning is sequentially performed from the lowest pitch to the highest pitch over the entire area of PLAYBUF []. The scanning procedure (steps 47_8 to 47_15) here is the same as the scanning procedure (steps 45_4 to 45_10) in the scan code routine shown in FIG. 45, but in step 47_11, whether or not CUR_NOTE is the minimum amount LO. The only difference is that the note-on is ignored for the lowest note. Detailed description is omitted. The processing for storing the lowest sound in LO will be described later.
[0087]
The scan up routine (step 42_4), scan order routine (step 42_8), scan code routine (step 42_9), scan base routine (42_10), scan code executed in the scan note on routine shown in FIG. The with-out base routine (step 42_13) has been described. Scan down routine (step 42_5), scan up / down routine (step 42_6), scan random routine (step 42_7), scan top routine (step 42_11), scan up with out base routine (step 42_12), scan random with out base routine (Step 42_13) and the scan-up with out-top routine (42_14) are the above-described descending scan method, ascending / descending scan method, random scan method, highest sound scan method, lowest sound removal up scan method, and lowest sound removal random method, respectively. This is a routine that realizes the scan method and the highest-tone-free ascending scan method, but it is obvious from the various routines described above (FIGS. 43 to 47). Illustration and description of the stomach is omitted.
[0088]
FIG. 48 shows a program for a note-off reservation routine. This note-off reservation routine is executed in step 41_12 of the clock processing routine shown in FIG. In this note-off reservation routine, OFFRSV [] (see FIG. 34) used for note-off reservation is searched to find an empty area, while the duration read from the rhythm pattern table, the step time, and the groove rate The duration is calculated according to the groove rate PRM_GROOVE set by the operation of the setting operator 153 (see FIG. 2), the note-off timing is obtained based on the duration, and the note-off timing is set to OFFRSV []. Note-off reservation is performed by setting the area.
[0089]
That is, first, i is set to '0' in step 48_1, and OFFRSV [i]. It is determined whether or not note = −1, that is, whether or not OFFRSV [i] is free. OFFRSV [i]. When not = −1, that is, when OFFRSV [i] is not empty, i is incremented (step 48_3), and it is determined whether i exceeds the size of the array of OFFRSV [] (step 48_4). ), If it is within the array, the process returns to step 48_2 and OFFRSV [i]. It is determined whether or not note = -1. This process is repeated, and when i = 16 is reached without finding a free area, the process proceeds to step 48_5, and “−1” indicating that OFFRSV [] is full is stored in NT, and the process ends.
[0090]
In step 48_2, OFFRSV [i]. note = −1, that is, when an empty area is found, the empty area OFFRSV [i]. In note, the note number NT obtained in step 41_10 of the clock processing routine of FIG. 41 is stored (step 48_6). Next, according to the rhythm pattern number PRM_RHYTHM (see FIG. 20) (step 48_7), the rhythm pattern table RHY_XXX_TBL [] (see FIG. 3 and each example of FIGS. 4 to 9) corresponding to the rhythm pattern number PRM_RHYTHM. The duration RHY_XXX_TBL [CUR_RHY].. Stored in the step of the current step number CUR_RHY (see FIG. 30). duration and step time RHY_XXX_TBL [CUR_RHY]. StepTime is read and stored in D1 and D2, respectively (step 48_8).
[0091]
In step 48_9, based on the duration D1, the step time D2, and the groove rate PRM_GROOVE (see FIG. 22), the duration DURATION of the note number is obtained by calculating DURATION = (D1-D2) × PRM_GROUP / 100 + D2.
[0092]
This calculation result is that when PRM_GROOVE = 0, DURATION = D2, that is, the same value as the step time, and gives a tenuto effect to the arpeggio performance. When PRM_GROOVE = 100, DURATION = D1, ie, rhythm pattern table The duration stored in RHY_XXX_TBL [] remains unchanged. If a short duration such as a staccato is stored in the rhythm pattern table RHY_XXX_TBL [], an arpeggio performance such as a staccato to an arpeggio performance such as a tenuto is operated by the operation of the groove rate setting operator 153 shown in FIG. The duration of each sound can be changed continuously. DURATION obtained in this way is added to CLOCK (see FIG. 32), and OFFRSV [i]. It is stored in clock (step 48_10).
[0093]
FIG. 49 is a flowchart of the velocity generation routine, and FIG. 50 is an explanatory diagram of the velocity generated by the velocity generation routine shown in FIG. The velocity generation routine shown in FIG. 49 is executed in step (41_14) of the clock processing routine shown in FIG. In the velocity generation routine shown in FIG. 49, the rhythm pattern number PRM_RHYTHM (see FIG. 20) is referred to (step 49_1), and the rhythm pattern table RHY_XXX_TBL (FIG. 3 and each of FIGS. 4 to 9) corresponding to the rhythm pattern number PRM_RHYTHM. The velocity coefficient RHY_XXX_TBL [CUR_RHY] .. of the current step CUR_RHY (see FIG. 38) of the example). The veloCoef is read and stored in the COEF (step 49_2). Thereafter, in step 49_3, the calculation of VL2 = VL × COEF / 127 is performed between the velocity coefficient COEF and the velocity VL generated by pressing the key, and in step 49_4, VL− (VL−VL2) × PRM_GROOVE / 100 is calculated, and the velocity obtained as a result of the calculation is stored again in VL.
[0094]
Here, as shown in FIG. 50, when the groove rate PRM_GROOVE set by the operation of the groove rate setting operator 153 shown in FIG. 2 is PRM_GROOVE = 0, the velocity stored in the rhythm pattern table RHY_XXX_TBL [] is used. If PRM_GROOVE = 100, (key press velocity × velocity coefficient) is used, and if the groove rate setting operator 153 is set in the middle, the key press velocity is adopted as it is. A velocity that continuously changes between the key velocity and (key-pressed velocity × velocity coefficient) is employed.
[0095]
By changing the groove rate in this way, the degree of so-called “nodding” can be changed. In step 41_14 of the clock processing routine of FIG. 41, the velocity is obtained as described above, and in step 41_15, note-on data with the velocity data thus obtained is transmitted.
[0096]
FIG. 51 is a flowchart of the next clock update routine. This next stock lock update routine is executed in step 41_16 of the clock processing routine shown in FIG. In this next clock update routine, first, the rhythm pattern number PRM_RHYTHM (see FIG. 20) is referred to, and the current step number CUR_RHY (see FIG. 30) of the rhythm pattern table RHY_XXX_TBL [] corresponding to the rhythm pattern number PRM_RHYTHM stored there. Step time RHY_XXX_TBL [CUR_RHY]. The stepTime is read and stored in STEP (step 51_2), and the STEP is added to CLOCK (see FIG. 32) and stored in NEXTCLK (see FIG. 33) (step 51_3). As a result, the next sound generation timing is set to NEXTCLK.
[0097]
52 and 53 are the first half and the second half of the flowchart of the scanner update routine, respectively. This scanner update routine is executed in step 41_17 of the clock processing routine shown in FIG. In this scanner update routine, first, “1” stored in END_FLG at the end of the previous scan of the note-on data is canceled and “0” is stored in END_FLG (step 52_1), and then the rhythm pattern. The current step CUR_RHY (see FIG. 30) of the table is updated (steps 52_2 to 52_6). Specifically, CUR_RHY is incremented in step 52_2, and then the rhythm pattern number PRM_RHYTHM (see FIG. 20) is referred to, and the number of steps RHY_XXX_SIZE in the rhythm pattern table corresponding to the rhythm pattern number PRM_RHYTHM is read and stored in SIZE. (Step 52_4), it is determined whether or not CUR_RHY ≦ SIZE, that is, whether or not the number of steps of the currently used rhythm pattern table RHY_XXX_TBL [] has been exceeded as a result of incrementing CUR_RHY (Step 52_2). If not, the process proceeds directly to step 52_7. If exceeded, the process returns to the first step by storing “0” in CUR_RHY, and then proceeds to step 52_7. .
[0098]
In steps 52_7 to 52_11, the current step CUR_SMODE (see FIG. 31) of the scan mode table is updated. That is, first, CUR_SMODE is incremented in step 52_7, and then the scan mode number PRM_SMODE (see FIG. 21) is referred to (step 52_8), and the step number SMODE_XXX_SIZE corresponding to the scan mode number PRM_MODE is read and SIZE is read. (Step 52_9), and when CUR_SMODE ≧ SIZE (step 52_10), CUR_SMODE is returned to the head (step 0) (step 52_11).
[0099]
Next, the process proceeds to step 53_1 shown in FIG. 53, the scan mode number PRM_SMODE (see FIG. 21) is referred to, and updated in steps 52_7 to 52_11 of FIG. 52 of the scan mode table SMODE_XXX_TBL [] corresponding to the scan mode number PRM_SMODE. The scan method (scan function number) SMODE_XXX_TBL [CUR_SMODE] of step CUR_SMODE is read and stored in func. In steps 53_3 and 53_4, it is determined whether or not func is the chord scan method SCAN_C, and whether or not it is the lowest chord scan method SCAN_C_WO_B. In the case of SCA_C or SCAN_C_WO_B, CUR_NOTE (see FIG. 25). '-1' is stored in. In the case of SCAN_C or SCAN_C_WO_B, by storing “−1” in CUR_NOTE, the region of PLAYBUF [] is scanned from the lower pitch to the higher pitch when scanning note-on data (FIG. 45, see FIG. 47). FIG. 54 is a flowchart of the edit routine. This edit routine is executed in step 38_5 of the general program shown in FIG. 38 when the panel (see FIG. 2) is operated.
[0100]
In step 54_1, it is determined whether or not the rhythm pattern has been changed. The rhythm pattern is changed by operating a rhythm pattern setting operator 151 shown in FIG. The rhythm pattern is changed by operating the rhythm pattern setting operator 151. In step 54_2, the new rhythm pattern number after the change is stored in PRM_RHYTHM (see FIG. 20), the process proceeds to step 52_3, the reset scanner routine (see FIG. 40) is executed, and the scanner is reset.
[0101]
In step 54_4, it is determined whether or not the scan mode has been changed. The scan mode is changed by operating the scan mode setting operator 152 shown in FIG. When the scan mode is changed by operating the scan mode setting operator 152, the new scan mode number after the change is stored in PRM_SMDE (see FIG. 21) in step 54_5, and the scanner is reset in step 52_3. Is done.
[0102]
In step 54_6, it is determined whether or not the groove rate has been changed. The change of the groove rate is performed by operating the groove rate setting operator 153 shown in FIG. When the groove rate is changed by operating the groove rate setting operation unit 153, the process proceeds to step 54_7, and a new value of the groove rate is stored in PRM_GROUP (see FIG. 22).
[0103]
FIG. 55 is a flowchart of the note-on processing routine. This note-on process is executed in step 38_7 of the general block program shown in FIG. 38 when note-on data is received. In step 55_1, the note number of the received note-on data is stored in NT, and the velocity is stored in VL. This velocity VL is stored in NOTEBUF [NT] (see FIG. 23) and PLAYBUF [NT] (see FIG. 24) (steps 55_2 and 55_3). Next, it is determined whether or not ORDER_WR (see FIG. 28) is at the 16th end. If it is less than 16, the key press order buffer ORDER [] (see FIG. 27) is empty, so ORDER [ORDER_WR]. note number NT is stored in note, and ORDER [ORDER_WR]. Velocity VL is stored in velo. In step 55_7, it is determined whether or not the note-on data input this time is the first note-on data received from the state where all the keys are released (note-off). Specifically, it is detected whether or not the effective velocity data stored in PLAYBUF [] is only one velocity stored at step 55_3. If it is the first note-on data, the process proceeds to step 55_8, and the scanner is reset. Thereafter, PLAYBUF [] is scanned to update the lowest sound LO and the highest sound HI (steps 55_9 and 55_10).
[0104]
FIG. 56 is a flowchart of the note-off process routine. This note-off processing routine is executed in step 38_9 of the general program shown in FIG. 38 when the note-off data is received. In step 56_1, the note number of the received note-off data is stored in NT, and '-1' indicating that valid data is not stored is stored in NOTEBUF [NT] (see FIG. 23) (step 56). 56_2). In step 56_3, it is determined whether or not HOLD (see FIG. 26) is less than 64 (hold-off). If hold-on (64 or more), the process ends. When hold-off (less than 64), “−1” is stored in PLAYBUF [NT] (see FIG. 24) (step 56_4), and the current note-off data from the key press order buffer ORDER [] (see FIG. 27). A delete order routine that deletes the note-on data corresponding to is executed (step 56_5), and a pack order routine that prepends the key pressing order buffer ORDER [] that has been deleted by the delete order routine is executed (step 56_5). Step 56_6). In steps 56_7 and 56_8, PLAYBUF [] is searched, and the lowest sound LO and the highest sound HI are updated.
[0105]
FIG. 57 is a flowchart of the delete order routine. This delete order routine is executed in step 56_5 of the note-off process routine shown in FIG. Here, ORDER [] (see FIG. 27) is searched, the presence of the note number NT of the note-off data is searched (steps 57_1 to 57_5), and when ORDER [i] = NT, ORDER [i]. note and ORDER [i]. -1 is stored in both velos. When NT is stored in a plurality of ORDER [i], “−1” is stored for all of them.
[0106]
FIG. 58 is a flowchart of the pack order routine. This pack order routine is executed in step 56_6 of the note-off process routine shown in FIG. Here, the key pressing order buffer ORDER [] is searched and left-justified so as to eliminate the area where “−1” is stored. Specifically, in step 58_1, the initial value “0” is stored in both i and j, and in step 58_2 ORDER [i]. It is checked whether “−1” is stored in the note. ORDER [i]. When valid data (that is, other than “−1”) is stored in “note”, the process proceeds to step 58_3 and ORDER [i]. note, ORDER [i]. velo is ORDER [j]. note, ORDER [j]. velo and j is incremented in step 58_4. Since the current step CUR_ORDER (see FIG. 29) in the key pressing order arpeggio performance needs to be changed as the order of ORDER [] is adjusted, it is checked in step 58_5 whether CUR_ORDER is i, and CUR_ORDER = i When j-1 is stored in CUR_ORDER (step 58_6). In step 58_7, i is incremented. In step 58_8, it is determined whether i is less than or equal to ORDER_WR (see FIG. 28). If i ≦ ORDER_WR, the process returns to step 58_2 to return ORDER [i]. It is checked whether or not note is “−1”.
[0107]
The pointer ORDER_WR (see FIG. 28) of ORDER [] needs to be changed as the ORDER [] is left-justified, and in step 58_9, j is stored in ORDER_WR. FIG. 59 is a flowchart of the hold-off process routine. This hold-off processing routine is executed in step 38_13 of the general program shown in FIG. 38 when hold data is received. When this hold-off processing routine is executed, it is known from the determination in step 38_12 in FIG. 38 that HOLD is less than 64 (hold-off).
[0108]
When the hold-off processing routine shown in FIG. 59 is executed, the NOTEBUF [] (see FIG. 23) that reflects the key depression and key release as it is, and the PLAYBUF [] that stores the key depression information including the hold information over the entire area. ] (See FIG. 24) (steps 59_1 to 59_4). Next, a remake order routine for reconstructing the key pressing order buffer ORDER [] (see FIG. 27) is executed (step 59_5). After ORDER [] is reconstructed, in steps 59_6 and 59_7, PLAYBUF [] is searched and the lowest sound LO and the highest sound HI are updated.
[0109]
FIG. 60 is a flowchart of the remake order routine. This remake order routine is executed in step 59_5 of the hold-off process routine shown in FIG. Here, in order to search PLAYBUF [] in order from the lowest pitch, the initial value “0” is first stored in NT (step 60_1).
[0110]
Next, PLAYBUF [NT] is read and stored in the VL (step 60_2), and whether or not the VL is “−1”, that is, valid velocity data is stored in PLAYBUF [NT] (other than −1). ) Or (-1). When VL = −1, the process proceeds to step 60_4, and a delete order routine (see FIG. 57) is executed. In this delete order routine, note-on data of note number NT is stored in ORDER []. (Specifically, store “−1”). In step 60_5, NT is incremented. In step 60_6, it is determined whether NT is less than 128. When NT is less than 128, the process returns to step 60_2 to read PLAYBUF [NT] for the new NT.
[0111]
In this way, the entire area of PLAYBUF [] is searched, and all the note numbers NT corresponding to PLAYBUF [NT] storing VL = −1 are deleted from ORDER []. Thereafter, in step 60_7, a pack order routine (see FIG. 29) is executed, and ORDER [] is left-justified so as to eliminate the area in which "-1" of ORDER [] is stored. As a result, ORDER [] is in a state in which the key pressing information is arranged in the key pressing order only for the currently pressed key.
[0112]
The arpeggiator in the present embodiment is configured as described above, and the rhythm pattern table (FIGS. 3 and 4) set by the rhythm pattern setting operation 151 and the scan mode setting operation 152 shown in FIG. -Refer to each example in FIG. 9) and a scan mode table (refer to each example in FIG. 10 and FIG. 11 to FIG. 19), and simultaneously press a plurality of keys or sequentially press and hold the keys. Or, it is possible to perform various arpeggio performances that are musically meaningful with a simple operation of storing the key depression by pressing the hold pedal. Further, by operating the groove rate operator 151 shown in FIG. 2, the degree of “nodding” can be easily changed.
[0113]
Next, another embodiment of the arpeggiator of the present invention will be described. However, in the following, illustration and description of parts common to the above-described embodiment will be omitted, and only the differences from the above-described embodiment will be illustrated and described. 61 is a diagram showing the velocity volume added to the panel of FIG. 2, and FIG. 62 is a velocity generation routine shown in FIG. 49 in the configuration in which the velocity volume shown in FIG. 61 is added to the panel shown in FIG. 5 is a flowchart of a velocity generation routine employed instead of
[0114]
In this embodiment, a velocity volume 154 as shown in FIG. 61 is added to the panel 15 (see FIG. 2). This velocity volume 154 can be rotated by pinching by hand. When it is fully rotated counterclockwise, it is “0”. When it is fully rotated clockwise, it is “127”. Are output and stored in VELOCITY_VOLUME in the RAM 13 (see FIG. 1). This VELOCITY_VOLUME is related to the generation of velocity data in an arpeggio performance, as will be described with reference to the flowchart of FIG.
[0115]
In the velocity generation routine shown in FIG. 62, the rhythm pattern number PRM_RHYTHM is referred to in the same manner as the velocity generation routine in FIG. 49 (step 62_1), and the rhythm pattern table PHY_XXX_TBL corresponding to the rhythm pattern number PRM_RHYTHM (FIGS. 3 and 4). ~ Velocity coefficient RHY_XXX_TBL [CUR_RHY] .. of current step CUR_RHY (see FIG. 38) of each example in FIG. The veloCoef is read and stored in the COEF (step 62_2).
[0116]
Thereafter, unlike the velocity generation routine shown in FIG. 49, it is determined whether or not VELOCITY_VOLUME = 0 (step 62_3). When VELOCITY_VOLUME = 0, the procedure is the same as the velocity generation routine of FIG. 49, and the process proceeds to step 62_5, where VL2 = VL × COEF / 127 between the velocity coefficient COEF and the velocity VL generated by the key depression. In step 62_6, calculation of VL− (VL−VL2) × PRM_GROOVE / 100 is performed, and the velocity obtained as a result of the calculation is stored in the VL again.
[0117]
On the other hand, if it is determined in step 62_3 that VELOCITY_VOLUME is not “0”, the flow proceeds to step 62_4, and the VELOCITY_VOLUME is stored in VL. That is, in this case, the velocity generated by the key depression is ignored, and VELOCITY_VOLUME set by the velocity volume 154 shown in FIG. 61 is adopted instead of the velocity generated by the key depression.
[0118]
Thus, if a fixed velocity is used instead of the key pressing velocity, an arpeggio performance having a certain strength can be realized regardless of the key pressing strength. That is, it is possible to perform a stable and reproducible arpeggio performance regardless of the performance state. FIG. 63 shows a style switch added to the panel of FIG. 2, and FIG. 64 shows an edit routine shown in FIG. 54 in a configuration in which the style switch shown in FIG. 63 is added to the panel shown in FIG. It is a flowchart of an edit routine adopted instead.
[0119]
The style switch 155 shown in FIG. 63 includes a plurality of (in this example, three) buttons 155a, 155b, and 155c for each genre. When the buttons 155a, 155b, and 155c are pressed, the waltz (WALTZ) and the reggae (REGGAE), respectively. ), A set of a rhythm pattern number and a scan mode number that matches the image of the shamisen (SHAMISEN) is selected.
[0120]
In the editing routine shown in FIG. 64, first, in step 64_1, it is determined whether or not the style has been changed by pressing any one of the buttons 155a, 155b, and 155c of the style switch 155 (see FIG. 63). When it is recognized that the style has been changed, according to the style after the change (step 64_2), in the case of waltz, PRM_RHYTHM (see FIG. 20) and PRM_SMODE (see FIG. 21) are set to “2” (see FIG. 6). (Refer to FIG. 17). In the case of reggae, “5” (refer to FIG. 9) and “7” (refer to FIG. 18) are stored in PRM_RHYTHM and PRM_SMODE, respectively. “1” (see FIG. 5) and “8” (see FIG. 19) are stored in PRM_RHYTHM and PRM_SMODE, respectively. The other steps 64_4 to 64_10 of the edit routine of FIG. 64 are the same as steps 54_1 to 54_7 of the edit routine shown in FIG.
[0121]
As described above, in this embodiment, for example, when the waltz button 154a is pressed, a rhythm pattern and a scan mode generally considered to be most suitable for the waltz are simultaneously selected and set. Therefore, the performer can select the style he / she wants to select with one touch without thinking about the combination of the rhythm pattern and the scan mode.
[0122]
In the above embodiment, the timbre used for the arpeggio performance is not particularly mentioned, but a timbre suitable for the performance of the style may be automatically selected corresponding to the selected style. For example, if a waltz or reggae style is selected, select the timbre of a musical instrument that is often used when playing waltz or reggae music. If a shamisen style is selected, select a shamisen timbre. You may make it do. In each of the above embodiments, hold information is input via the data input terminal 17 (see FIG. 1). However, a switch for switching and inputting hold-on information and hold-off information may be provided on the panel 15. Alternatively, the arpeggiator itself may be provided with a hold information generating pedal or a jack for connecting the pedal. In each of the above embodiments, the keyboard and the sound source are connected to the outside, but one or both of the keyboard and the sound source may be built in, or may be configured integrally. You may be able to do it.
[0123]
Further, in each of the above embodiments, only one groove rate setting operator 153 is provided, and the duration and velocity of each step of the arpeggio performance are determined by the groove rate PRM_GROUP set by the one groove rate setting operator 153. Although both are changed, it is not necessary to be able to change both of them, and even if only one of them can be changed, a change that is meaningful in terms of music is possible. Alternatively, in order to leave a finer adjustment to the performer, the single groove rate setting controller 153 can be configured to be operated by switching between duration change and velocity change, or for duration change. You may provide the two operation element by which the role was divided for the velocity change use.
[0124]
In each of the above embodiments, the step time, duration, and velocity coefficient are recorded as a set in each step of the rhythm pattern table. However, either step time only, duration only, or velocity only is recorded. The other two parties may use fixed values. Even if you have a deration-only table as a rhythm pattern table, you can perform not only simple arpeggio performances that are equally divided in time but also arpeggio performances of various rhythms. Even in this case, the effects of staccato and tenuto can be added independently for each step of the arpeggio performance. Even in this case, each step of the arpeggio performance can be strengthened and arpeggio performances with various accents can be realized. Of course, you may have a rhythm pattern table of any two of the above three parties.
[0125]
Also, regarding the rhythm pattern table, in order to have the above two or three rhythm pattern tables, the two or three rhythm pattern tables are independently provided (for example, a step time only table and a duration only table). The table may be divided into a table having only velocity), and may be used in combination according to the player's preference and performance style.
[0126]
Note that data of a type other than the step time, duration, and velocity coefficient may be stored as the type of data stored in the rhythm pattern table. For example, if timbre designation data is stored for each step, the timbre can be switched for each step, and a more sophisticated arpeggio performance is possible. In this case, this timbre is considered as a characteristic of the musical tone referred to in the present invention. Further, in each of the above embodiments, it has been described that the rhythm pattern table and the scan mode table are fixedly stored in the ROM 14 (see FIG. 1). However, instead of the ROM 14 or together with the ROM 14, the rhythm pattern table is stored in the RAM 13. Or a scan mode table may be set. In that case, a new rhythm pattern table or scan mode table is loaded from the outside, or an operator that can set the rhythm pattern table or scan mode table is arranged on the panel 15, and the player operates the operator. By operating, you can define a new rhythm pattern table or scan mode table and perform an arpeggio performance that is more suited to your taste.
[0127]
【The invention's effect】
As described above, according to the arpeggiator of the present invention, a more musical arpeggio performance can be performed with a simple operation.
[Brief description of the drawings]
FIG. 1 is a circuit configuration diagram of an embodiment of an arpeggiator of the present invention.
FIG. 2 is a diagram showing a configuration of a panel.
FIG. 3 is a diagram showing a basic pattern of a rhythm pattern table.
FIG. 4 is a diagram showing a rhythm pattern table for quarter notes and the number of steps thereof.
FIG. 5 is a diagram showing a rhythm pattern table for sixteenth notes and the number of steps thereof.
FIG. 6 is a diagram showing a rhythm pattern table for waltz and the number of steps thereof.
FIG. 7 is a diagram showing a rhythm pattern table for shuffle and its number of steps.
FIG. 8 is a diagram showing a rhythm pattern table for diminished and its number of steps.
FIG. 9 is a diagram showing a rhythm pattern table for reggae and the number of steps thereof.
FIG. 10 is a diagram showing a basic pattern of a scan mode table.
FIG. 11 is a diagram showing a scan mode table for ascending scan and its number of steps.
FIG. 12 is a diagram showing a scan mode table for descending scan and its steps.
FIG. 13 is a diagram showing a scan mode table for ascending / descending scan and its steps.
FIG. 14 is a diagram showing a scan mode table for random scan and its steps.
FIG. 15 is a diagram showing a scan mode table for chord scan and its steps.
FIG. 16 is a diagram showing a scan mode table for key pressing order scan and its steps.
FIG. 17 is a diagram showing a scan mode table for waltz and its steps.
FIG. 18 is a diagram showing a scan mode table for reggae and its steps.
FIG. 19 is a diagram showing a scan mode table for shamisen and its steps.
FIG. 20 is a diagram showing rhythm pattern parameters.
FIG. 21 is a diagram showing scan mode parameters.
FIG. 22 is a diagram showing groove rate parameters.
FIG. 23 is a diagram illustrating a note buffer.
FIG. 24 is a diagram illustrating a play buffer.
FIG. 25 is a diagram illustrating a current play note number buffer.
FIG. 26 is a diagram illustrating a hold buffer.
FIG. 27 is a diagram illustrating an order buffer.
FIG. 28 is a diagram illustrating an order write counter.
FIG. 29 is a diagram illustrating an order position counter.
FIG. 30 is a diagram illustrating a rhythm pattern table position counter.
FIG. 31 is a diagram showing a scan mode table position counter.
FIG. 32 is a diagram illustrating a clock counter.
FIG. 33 is a diagram illustrating a next clock buffer.
FIG. 34 is a diagram illustrating a note-off reservation buffer.
FIG. 35 is a diagram showing an end flag.
FIG. 36 is a diagram illustrating a base note buffer.
FIG. 37 is a diagram illustrating a top note buffer.
FIG. 38 is a flowchart of a general program.
FIG. 39 is a flowchart of an initialization processing routine.
FIG. 40 is a flowchart of a reset scanner routine.
FIG. 41 is a flowchart of a clock processing routine.
FIG. 42 is a flowchart of a scan note-on routine.
FIG. 43 is a flowchart of a scan-up routine.
FIG. 44 is a flowchart of a scan order routine.
FIG. 45 is a program of a scan code routine.
FIG. 46 is a program of a scan base routine.
FIG. 47 is a scan code with base program.
FIG. 48 is a program of a note-off reservation routine.
FIG. 49 is a flowchart of a velocity generation routine.
50 is an explanatory diagram of velocity generated by the velocity generation routine shown in FIG. 49. FIG.
FIG. 51 is a flowchart of a next clock update routine.
FIG. 52 is the first half of a flowchart of a scanner update routine.
FIG. 53 is the latter half of the flowchart of the scanner update routine.
FIG. 54 is a flowchart of an edit routine.
FIG. 55 is a flowchart of a note-on process routine.
FIG. 56 is a flowchart of a note-off process routine.
FIG. 57 is a flowchart of a delete order routine.
FIG. 58 is a flowchart of a pack order routine.
FIG. 59 is a flowchart of a hold-off process routine.
FIG. 60 is a flowchart of a remake order routine.
FIG. 61 is a diagram showing a velocity volume added to the panel of FIG. 2;
FIG. 62 is a flowchart of a velocity generation routine employed instead of the velocity generation routine shown in FIG.
63 is a view showing a style switch added to the panel of FIG. 2;
FIG. 64 is a flowchart of an edit routine employed instead of the edit routine shown in FIG.
[Explanation of symbols]
10 CPU
11 Address bus
12 Data bus
13 RAM
14 ROM
15 panels
16 clock timer
17 Data input terminal
18 Data output terminal
20 keys
21 pedals
30 sound sources
151 Rhythm pattern setting operator
152 Scan mode setting operator
153 Controller for setting the groove rate
154 Velocity Volume
155 style switch

Claims (4)

複数の鍵それぞれに対応する記憶領域を有し、鍵が押鍵されたことを表わす押鍵情報を、押鍵された鍵に対応する記憶領域に、消去自在に書き込む押鍵情報記憶手段と、
リズムの1ステップ毎に、あるステップと当該ステップに続く次のステップとの間の時間間隔と、当該ステップにおける楽音の発音持続時間情報とを組にして、1つのステップもしくは複数のステップそれぞれに記憶されて成るリズムパターンテーブルを記憶するリズムパターンテーブル記憶手段と、
前記リズムパターンテーブルの各ステップを順次参照するととともに、該各ステップに対応して前記記憶領域を走査し、該走査により検出された押鍵情報、および前記リズムパターンテーブルの該走査に対応するステップに記録された発音持続時間情報との双方に基づく楽音を表わす演奏情報を、当該ステップに記録された時間間隔に従ったタイミングで生成する演奏情報生成手段とを備え、
前記演奏情報生成手段が、さらに発音持続時間の変更の度合いを規定する情報に基づき変更された楽音を表わす演奏情報を生成するものであることを特徴とするアルペジエータ。
A key-pressing information storage unit that has a storage area corresponding to each of the plurality of keys and erasably writes key-pressing information indicating that the key has been pressed into a storage area corresponding to the key pressed;
For each step of the rhythm, a time interval between a step and the next step following the step is combined with the pronunciation duration information of the musical sound at the step, and stored in one step or each of a plurality of steps. A rhythm pattern table storage means for storing a rhythm pattern table comprising:
The steps in the rhythm pattern table are sequentially referred to, and the storage area is scanned corresponding to each step, and the key pressing information detected by the scanning and the step corresponding to the scan in the rhythm pattern table Performance information generating means for generating performance information representing a musical sound based on both of the recorded pronunciation duration information at a timing according to the time interval recorded in the step;
The arpeggiator characterized in that the performance information generating means further generates performance information representing a changed musical tone based on information defining the degree of change in pronunciation duration.
複数の鍵それぞれに対応する記憶領域を有し、鍵が押鍵されたことを表わす押鍵情報を、押鍵された鍵に対応する記憶領域に、消去自在に書き込む押鍵情報記憶手段と、
リズムの1ステップ毎に、あるステップと当該ステップに続く次のステップとの間の時間間隔と、当該ステップにおける楽音の発音強度情報とを組にして、1つのステップもしくは複数のステップそれぞれに記憶されて成るリズムパターンテーブルを記憶するリズムパターンテーブル記憶手段と、
前記リズムパターンテーブルの各ステップを順次参照するととともに、該各ステップに対応して前記記憶領域を走査し、該走査により検出された押鍵情報、および前記リズムパターンテーブルの該走査に対応するステップに記録された発音強度情報との双方に基づく楽音を表わす演奏情報を、当該ステップに記録された時間間隔に従ったタイミングで生成する演奏情報生成手段とを備え、
前記演奏情報生成手段が、さらに発音強度の変更の度合いを規定する情報に基づき変更された楽音を表わす演奏情報を生成するものであることを特徴とするアルペジエータ。
A key-pressing information storage unit that has a storage area corresponding to each of the plurality of keys and erasably writes key-pressing information indicating that the key has been pressed into a storage area corresponding to the key pressed;
For each step of the rhythm, the time interval between a step and the next step following that step is combined with the tone intensity information of the musical sound at that step and stored in one step or each of a plurality of steps. Rhythm pattern table storage means for storing a rhythm pattern table comprising:
The steps in the rhythm pattern table are sequentially referred to, and the storage area is scanned corresponding to each step, and the key pressing information detected by the scanning and the step corresponding to the scan in the rhythm pattern table Performance information generating means for generating performance information representing a musical sound based on both the recorded pronunciation intensity information and a timing according to a time interval recorded in the step;
The arpeggiator characterized in that the performance information generating means further generates performance information representing a musical tone that has been changed based on information that defines the degree of change in pronunciation intensity.
操作の度合いに応じて、前記発音持続時間の変更の度合いを規定する情報を生成する操作子を備えたことを特徴とする請求項1記載のアルペジエータ。2. The arpeggiator according to claim 1, further comprising an operator that generates information that defines a degree of change in the pronunciation duration according to the degree of operation. 操作の度合いに応じて、前記発音強度の変更の度合いを規定する情報を生成する操作子を備えたことを特徴とする請求項2記載のアルペジエータ。The arpeggiator according to claim 2, further comprising an operator that generates information that defines a degree of change in the pronunciation intensity according to a degree of operation.
JP24105695A 1995-09-19 1995-09-20 Arpeggiator Expired - Fee Related JP3625914B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP24105695A JP3625914B2 (en) 1995-09-20 1995-09-20 Arpeggiator
US08/652,368 US5714705A (en) 1995-09-19 1996-05-23 Arpeggiator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP24105695A JP3625914B2 (en) 1995-09-20 1995-09-20 Arpeggiator

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2004323564A Division JP3902207B2 (en) 2004-11-08 2004-11-08 Arpeggiator

Publications (2)

Publication Number Publication Date
JPH0990953A JPH0990953A (en) 1997-04-04
JP3625914B2 true JP3625914B2 (en) 2005-03-02

Family

ID=17068659

Family Applications (1)

Application Number Title Priority Date Filing Date
JP24105695A Expired - Fee Related JP3625914B2 (en) 1995-09-19 1995-09-20 Arpeggiator

Country Status (1)

Country Link
JP (1) JP3625914B2 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3829439B2 (en) * 1997-10-22 2006-10-04 ヤマハ株式会社 Arpeggio sound generator and computer-readable medium having recorded program for controlling arpeggio sound
JP3707300B2 (en) 1999-06-02 2005-10-19 ヤマハ株式会社 Expansion board for musical sound generator
JP2003029748A (en) * 2001-07-17 2003-01-31 Roland Corp Arpeggiator
JP4506147B2 (en) * 2003-10-23 2010-07-21 ヤマハ株式会社 Performance playback device and performance playback control program
JP6953746B2 (en) * 2017-03-02 2021-10-27 ヤマハ株式会社 Electronic sound device and tone setting method

Also Published As

Publication number Publication date
JPH0990953A (en) 1997-04-04

Similar Documents

Publication Publication Date Title
JPH079586B2 (en) Automatic musical instrument accompaniment device
US5714705A (en) Arpeggiator
JPH0125078B2 (en)
JP3625914B2 (en) Arpeggiator
JPH10187157A (en) Automatic performance device
JP3902207B2 (en) Arpeggiator
JP3625913B2 (en) Arpeggiator
JP3844286B2 (en) Automatic accompaniment device for electronic musical instruments
JP2536596B2 (en) Electronic musical instrument
JPH06259064A (en) Electronic musical instrument
JP4318194B2 (en) Automatic accompaniment apparatus and automatic accompaniment method for electronic musical instrument
JP2940449B2 (en) Automatic performance device
JP2640992B2 (en) Pronunciation instruction device and pronunciation instruction method for electronic musical instrument
JP3609045B2 (en) Automatic performance device
JP3505292B2 (en) Arpeggiator
JP2570562B2 (en) Automatic performance device and automatic accompaniment device
JPS6261280B2 (en)
JP2639381B2 (en) Electronic musical instrument
JP2513014B2 (en) Electronic musical instrument automatic performance device
JP3630266B2 (en) Automatic accompaniment device
JP2564811B2 (en) Performance recorder
JP3055352B2 (en) Accompaniment pattern creation device
JP2528722B2 (en) Motif playing device
JPH0863159A (en) Automatic player
JP3046094B2 (en) Automatic accompaniment device

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040127

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040907

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041108

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041201

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313532

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20071210

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20101210

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20111210

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees