JP4438766B2 - 楽音発生装置、及びプログラム - Google Patents

楽音発生装置、及びプログラム Download PDF

Info

Publication number
JP4438766B2
JP4438766B2 JP2006096104A JP2006096104A JP4438766B2 JP 4438766 B2 JP4438766 B2 JP 4438766B2 JP 2006096104 A JP2006096104 A JP 2006096104A JP 2006096104 A JP2006096104 A JP 2006096104A JP 4438766 B2 JP4438766 B2 JP 4438766B2
Authority
JP
Japan
Prior art keywords
tone
musical
data
waveform data
music
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.)
Active
Application number
JP2006096104A
Other languages
English (en)
Other versions
JP2007271827A (ja
Inventor
義則 田近
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
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 Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2006096104A priority Critical patent/JP4438766B2/ja
Publication of JP2007271827A publication Critical patent/JP2007271827A/ja
Application granted granted Critical
Publication of JP4438766B2 publication Critical patent/JP4438766B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、楽音の波形を示す波形データを用いて発音させるべき楽音を発音させる楽音発生装置に関する。
楽音発生装置のなかには、楽音の波形を示す波形データを用意し、その波形データを用いて、楽音を発音(発生)させるものがある。波形データを用いて楽音を発音させる従来の楽音発生装置としては、例えば特許文献1に記載されたものが挙げられる。
特許文献1に記載された従来の楽音発生装置では、CD−ROM8に格納された波形データを読み出して楽音波形ストックメモリ12に保存し、発音させるべき楽音の波高値を生成するトーンジェネレータ15内の楽音波形メモリ16には、選曲された楽曲によって特定される波形データを格納するようにしている。波形データの特定は、選曲された楽曲の自動演奏用の演奏情報を参照して行っている。そのようにして特定される波形データを楽音波形メモリ16に用意することにより、選曲された楽曲の自動演奏を発音させるべき音色で行えるようになっている。
発音させるべき楽音の波高値を生成する上記トーンジェネレータ15のような楽音生成手段がアクセスする楽音波形メモリ16のようなワークメモリには、高速なアクセスが可能なことが求められる。そのワークメモリに格納する波形データを多くするほど、楽音をより様々な音色で発音させることが可能となる。しかし、波形データ(圧縮された波形データは解凍されてワークメモリに格納される)のデータ量は大きいのが普通であり、ワークメモリについては、その記憶容量が比較的に小さい、或いは他の用途にも用いる、といったようなことが考えられる。
楽音波形全体の形は、音高によって変化する。このことから、より高い音質で楽音を発音できるように、音色毎に複数の波形データを用意する場合がある。それにより、同一の音色において、音高域別に波形データを用意する場合がある。
そのように波形データを用意すると、音色毎の波形データのデータ量はより大きなものとなる。このため、特許文献1に記載された従来の楽音発生装置のように、演奏情報から特定した音色毎に波形データをワークメモリに格納すると、その波形データの格納に必要な記憶容量は膨大なものとなりやすい。それにより、記憶容量が比較的に小さいワークメモリでは、全ての波形データを格納できないということが生じやすくなる。その記憶容量が比較的に大きくとも、他の用途に用いている場合には、記憶容量全体で波形データの格納に用いる割合が高くなって、他の用途での利用に支障をきたす可能性が生じやすくなる。このようなことから、音色毎に複数の波形データを用意している場合には、ワークメモリに格納する波形データのデータ量をより抑えるようにすることも重要であると考えられる。
より高い音質で楽音を発音できるように、波形データとして、発音開始から発音終了までの楽音波形を示す波形データを用意する場合がある。そのような波形データのデータ量は一つでも非常に大きいのが普通である。このことから、そのような波形データを用意している場合にも、ワークメモリに格納する波形データのデータ量をより抑えるようにすることが重要であると考えられる。
特許第3040583号公報 特許第3029339号公報 特許第3217772号公報 特許第3560930号公報
本発明の課題は、発音させるべき楽音の波高値生成用に波形データをワークメモリに格納する場合に、そのデータ量をより抑えることが可能な楽音発生装置を提供することにある。
本発明の楽音発生装置は、楽音の波形を示す波形データを用いて発音させるべき楽音を発音させる楽音発生装置において、音色毎に波形データを一つ以上、記憶した第1の記憶手段と、前記第1の記憶手段と比較して高速なアクセスが可能な第2の記憶手段と、演奏対象とする楽曲を特定する楽曲特定手段と、前記楽曲特定手段が特定した楽曲の演奏内容を示すとともに楽音を発音させるべき音色を示す音色データと、該楽音の音高及び発音時間を示す音符データとからなる曲データを参照して、該楽曲の演奏で発音される楽音の音色、及び該楽曲において発音させるべき楽音の発音時間の中から最大発音時間を特定する演奏内容特定手段と、前記演奏内容特定手段により特定された楽音の音色に対応する波形データを、該演奏内容特定手段により特定された最大発音時間に対応する部分のみ前記第1の記憶手段から読み出して該第2の記憶手段に記憶させることにより、前記楽曲特定手段が特定した楽曲の演奏に必要な波形データを該第2の記憶手段上に用意するデータ転送手段と、を具備する。
本発明のプログラムは、音色毎に波形データを一つ以上、記憶した第1の記憶手段と、前記第1の記憶手段と比較して高速なアクセスが可能な第2の記憶手段と、を有し、楽音の波形を示す波形データを用いて発音させるべき楽音を発音させる楽音発生装置として用いることが可能なコンピュータに実行させるプログラムを前提とし、演奏対象とする楽曲を特定する楽曲特定機能と、前記特定された楽曲の演奏内容を示すとともに楽音を発音させるべき音色を示す音色データと、該楽音の音高及び発音時間を示す音符データとからなる曲データを参照して、該楽曲の演奏で発音される楽音の音色、及び該楽曲において発音させるべき楽音の発音時間の中から最大の発音時間を特定する演奏内容特定機能と、前記特定された楽音の音色に対応する波形データを、前記特定された最大発音時間に対応する部分のみ前記第1の記憶手段から読み出して該第2の記憶手段に記憶させることにより、前記特定された楽曲の演奏に必要な波形データを該第2の記憶手段上に用意するデータ転送機能と、を実現させる。
本発明は、演奏対象とする楽曲を特定し、その楽曲の演奏内容を示す曲データを参照して、その楽曲の演奏で発音される楽音の音色、及び楽音の種類を特定し、音色毎に波形データを一つ以上、記憶した第1の記憶手段から、特定した楽音の音色、及び楽音の種類によって特定される波形データを読み出し、その第1の記憶手段と比較して高速なアクセスが可能な第2の記憶手段に記憶させることにより、特定した楽曲の演奏に必要な波形データを第2の記憶手段上に用意する。そのようにして必要な波形データのみを第2の記憶手段に転送し記憶させるため、楽曲の演奏に不具合が生じるのを回避させつつ、第2の記憶手段に記憶させる波形データのデータ量をより抑えることができる。
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
図1は、本実施の形態による楽音発生装置の構成を説明する図である。
その楽音発生装置は、図1に示すように、例えば不図示の電源によって不揮発性化されているRAM101と、プログラムや制御データ等を格納したROM102と、ワーク用のRAM103と、装置全体の制御を行う音源LSI104と、ユーザーに必要な情報を表示するための液晶表示装置(LCD)105と、各種スイッチを有するスイッチ(SW)部106と、二つのスピーカ108を有するサウンドシステム(SoundSystem)107と、を備えた構成となっている。
上記RAM101には、楽曲の演奏内容を示す曲データSDが1つ以上、格納されている。本実施の形態による楽音発生装置は、その曲データSDに従った自動演奏を行えるものとして実現されている。そのRAM101は、不図示のインターフェース、或いは入力装置を介して取得したデータの格納に用いられる。
図2は、曲データの構成を説明する図である。
曲データSDは、処理内容を示すデータを処理すべき順序で並べた構成となっている。処理内容を示すデータとしては、楽音を発音させるべき音色を示す音色データや、その楽音の内容を示す音符データが存在する。その音符データは、その処理によって発音させるべき楽音の音高を示す音高データ、及びその楽音の発音時間を示す音符長データ、を有する構成となっている。
図2に構成を示す曲データSDでは、音符データの次に位置するデータは、その音符データを処理してからその音符データ中の音符長データに相当する時間が経過した後に処理するようになっている。しかし、その曲データSDの構成は図2に示すようなものでなくとも良い。例えば音符データ等の演奏上のイベントを示すイベントデータに、それを処理すべき時間データを付した構成であっても良い。或いはスタンダードMIDIファイルのような構成のものであっても良い。
上記音源LSI104は、内部にCPU111、及びジェネレータ(Generator)112を搭載したシステムLSIである。CPU111は、ROM102に格納されたプログラムを実行することにより、装置全体の制御を行う。ジェネレータ112は、サウンドシステム107に出力すべき楽音の波高値の生成を行う。そのシステム107は、例えば2つのスピーカ108の他に、デジタルデータをアナログ信号に変換するD/Aコンバータ、そのコンバータが出力するアナログ信号(オーディオ信号)の増幅を行うアンプ、などを備えたものである。2つのスピーカ108には、アンプが出力したオーディオ信号が入力される。
CPU111は、スイッチ部106への操作に応じて制御を行う。そのスイッチ部106には、スイッチとして、自動演奏する曲の選択を行うための曲選択用スイッチ、自動演奏の開始を指示するためのスタートスイッチ、テンキー、及びその終了を指示するためのストップスイッチ、などが備えられている。曲選択は、例えば曲選択用スイッチを操作した後、テンキーを操作して行うようになっている。それにより、テンキーには曲選択用スイッチが操作された後、所定時間、曲を選択するための機能を割り当てるようになっている。ここでは便宜的に、曲選択用スイッチ、及びテンキーを曲選択スイッチと総称し、それらを操作して曲選択を行うことを曲選択操作と呼ぶことにする。スイッチ部106は、例えばスキャンして各スイッチの状態を検出し、その検出結果を前回の検出結果と比較することにより、状態が変化したスイッチ、及びその変化内容を特定し、その結果をCPU111に通知する。
CPU111は、ROM102に格納されたプログラムをRAM103に読み出して実行する。これは、RAM103はROM102と比較してより高速なアクセスが可能なためであり、CPU111のワークに用いられる。そのROM102には、ジェネレータ112が楽音の波高値の生成に用いる波形データ群WD1が格納されている。
ROM102がフラッシュメモリであった場合、そのアクセスには比較的に非常に長い時間が必要となる。このことから、波形データ群WD1のなかで楽音の波高値生成用に必要な波形データはRAM103に格納している。それにより、RAM103はジェネレータ112のワークにも用いている。RAM103に示すWD2は、ROM102から読み出してRAM103に格納した波形データ群を表している。
図3は、ROM102に格納された波形データ群WD1の構成を説明する図である。その図3において、音色A〜Dはそれぞれ異なる音色を表している。音域(1)〜(3)もそれぞれ異なる音域(音高域)を表している。
図3に示すように波形データ群WD1は、音色毎に1つ以上の波形データを有する構成となっている。複数、波形データが存在する音色では、各波形データには対応する音域(音高域)が存在し、或る音高の楽音の波高値は、その音高が属する音域の波形データを用いて生成するようになっている。波形データは、定められたサンプリングレートで楽音をサンプリングすることにより得られた波高値をサンプリング順に並べた構成となっている。各波高値はそれぞれ1アドレスに格納されている。
音域別の波形データはそれぞれ、その音域に属する音高のうちの一つに該当する音高(以降「基準音高」と呼ぶ)の楽音をサンプリングしたものである。このため、基準音高に該当する音高の楽音は、順次、次のアドレスに格納された波高値を読み出していくことで発音させる。その基準音高に該当しない音高の楽音は、基準音高との音高差によって特定される速さ(歩進幅)で波高値を読み出していくことで発音させる。ジェネレータ112は、発音が指示された楽音の音高から、その波高値生成用の波形データを特定し、その特定後は、発音を終了させるタイミングとなるまで、その音高から特定した歩進幅で波高値を順次読み出し、その歩進幅に応じた波高値を生成する。サウンドシステム107には、そのように生成した波高値にエンベロープを付与する操作、例えば波高値にエンベロープ付加用の係数を乗算する操作を行ったものを出力する。そのような波高値を入力することにより、システム107はスピーカ108から楽音を放音させる。
CPU111は、曲選択が行われると、つまり曲選択スイッチを対象とした曲選択操作をユーザーが行うと、その操作によって指定された曲の曲データ(以降、他と区別するために「指定曲データ」と呼ぶ)SDをRAM101から読み出して参照し、音色データが示す音色、その音色で発音させる楽音の音高をそれぞれ確認し、それらの確認結果から特定される波形データを波形データ群WD1から抽出してRAM103に格納する。それにより、指定曲データSDに従った自動演奏を行ううえで必要な波形データのみからなる波形データ群WD2をRAM103上に用意する。楽音を発音させる音色に複数の波形データが存在していたとしても、そのなかで実際に用いるのみを抜粋する形でRAM103に格納する。そのようにRAM103に必要な波形データのみを用意するため、RAM103に格納する波形データのデータ量はより抑えることができる。必要な波形データは全てRAM103に用意するため、自動演奏(その自動演奏中における楽音の発音)は適切に行うことができる。
音域別の波形データのサンプリング期間(基準となる楽音の発音時間)は、通常、楽譜に記譜される音符のなかで最も発音時間の長い種類の音符を想定したものとしている。その音符が示す発音時間は曲の拍子によって異なることから、そのサンプリング期間は曲の拍子を考慮して決定している。それにより波形データは、通常、考えられる長さの発音時間の発音が可能なものとしている。しかし、そのような波形データでは、そのサンプリング期間は自動演奏で実際に発音させる楽音の発音時間よりも短くなるのが普通である。このことから本実施の形態では、音色データが示す音色、その音色で発音させる楽音の音高をそれぞれ確認する他に、楽音の発音時間(音符長データ)を確認するようにしている。その発音時間を確認することにより、音色データが示す音色、及びその音色で発音させる楽音の音高によって特定される波形データは、その波形データを用いて発音させる楽音のなかで発音時間が最も長いものを発音できる部分のみ抽出してRAM103に格納するようにしている。それにより、自動演奏は適切に行えるようにしつつ、RAM103に格納する波形データのデータ量をより抑えられるようにしている。
図4は、曲の選択によってROM102からRAM103に転送される波形データを説明する図である。その図4は、選択された曲に対応する曲データSDによる自動演奏によってピアノ、ギター、及び電子的手法によって生成された音の各音色で楽音を発音させる場合のものである。電子的手法によって生成された音の音色は「シンセ音色」と表記している。
ピアノ音色では、波形A〜Eの計5つの波形データが存在し、ギター音色では、波形A〜Cの計3つの波形データが存在し、シンセ音色では一つの波形データのみが存在している。曲データSDを参照して音色、楽音の音高、及びその発音時間(音符長)を確認することにより、それらの波形データのなかで、ピアノ音色では波形A、Eの一部、及び波形BのみがRAM103に転送されている。同様に、ギター音色では波形Cの一部のみ、シンセ音色では波形AがそれぞれRAM103に転送されている。そのように必要な波形データの必要な部分のみをRAM103に転送することにより、RAM103に格納する波形データのデータ量を大幅に抑えられている。それにより、データ転送に要する負荷もより軽いものとなっている。
以降は図5〜図9に示す各種フローチャートを参照して、図4に示すようなデータ転送を実現させるCPU111の動作、及び発音させるべき楽音の波高値を生成するジェネレータ112の動作について詳細に説明する。CPU111の動作は、そのCPU111がROM102に格納されたプログラムを読み出して実行することで実現される。ジェネレータ112の動作は、その内部に搭載されたROM、或いはROM102に格納されたプログラムを実行することで実現される。
図5、及び図6は、全体処理のフローチャートである。始めに図5、及び図6を参照して、CPU111の動作について詳細に説明する。その全体処理は、電源の投入後に実行される主な処理を抜粋してその流れを示したものである。ここでは、曲データSDを構成するデータとして、音色データ、及び音符データのみを想定している。
先ず、ステップ501では、電源の投入によりイニシャライズを行う。次のステップ502では、曲選択スイッチがオンされて曲選択操作が行われたか否か判定する。その曲選択操作をユーザーが行った場合、判定はYESとなってステップ503に移行し、そうでない場合には、判定はNOとなってステップ504に移行する。
ステップ503では、変数ADに、ユーザーが曲選択操作によって選択した曲の曲データ(指定曲データ)SDが格納されている開始(先頭)アドレスの値を代入する。続くステップ504では、スタートスイッチがオンしたか否か判定する。そのスイッチをユーザーが操作した場合、その旨がスイッチ部106からCPU111に通知されることから、判定はYESとなってステップ505に移行する。そうでない場合には、判定はNOとなって上記ステップ502に戻る。それにより、曲選択を行える状態を維持させる。
ステップ505では、それぞれが2次元の配列変数WAVE、LENGTHの各要素にそれぞれ0を代入する。次のステップ506では、指定曲データSD中の変数ADの値によって指定されるデータを読み出す。その次のステップ507では、読み出したデータが音色データか否か判定する。そのデータが音色データ(例えば音色番号)であった場合、判定はYESとなり、ステップ508で変数TONEに音色データを代入した後、ステップ510に移行する。そうでない場合には、つまり音符データであった場合には、判定はNOとなり、ステップ509でその音符データが示す楽音(音符)の内容を確認するための音符検査処理を実行した後、そのステップ510に移行する。
図7は、その音符検査処理のフローチャートである。ここで図7を参照して、その検査処理について詳細に説明する。
本実施の形態では、音色データが示す音色、その音色で発音させる楽音の音高、及び楽音の発音時間を確認するようにしている。確認した音色データは変数TONEに代入している。このことから、音符検査処理では、確認した音色で発音される楽音の音高、及び楽音の発音時間を、波形データの音域別に確認するための処理が行われる。上記配列変数WAVE、LENGTHはそれぞれ、楽音の音高、発音時間を音色、及び音域別に確認するために用意したものである。それにより、それらの確認結果により、配列変数WAVE、LENGTHの何れかの要素の値を必要に応じて更新するようになっている。
先ず、ステップ701では、変数NOTEに、音符データ中の音高データを代入する。続くステップ702では、変数LENGに、音符データ中の音符長データを代入する。その次に移行するステップ703では、変数NOTEに代入した音高データが示す音高の属する音域を特定し、その音域を示す値を変数RANGEに代入する。ステップ704にはその後に移行する。音域の特定、及びその音域を示す値の特定は、例えばそれらの関係を定義したテーブルを参照して行う。
ステップ704では、配列変数WAVEの変数TONE、RANGEの各値で指定される要素WAVE[TONE][RANGE]の値が0か否か判定する。その0の値は、変数TONEの値が示す音色で、且つ変数RANGEの値が示す音域に属する音高の楽音の発音を指示する音符データが見つかっていないことを表している。1の値はそのような音符データが見つかっていることを表している。このことから、ステップ506で読み出した音符データがその楽音を示す初めてのものであった場合、判定はYESとなり、ステップ705で要素WAVE[TONE][RANGE]に1を代入した後、ステップ706に移行する。そうでない場合には、判定はNOとなり、そのステップ706に移行する。
ステップ706では、配列変数LENGTHの変数TONE、RANGEの各値で指定される要素LENGTH[TONE][RANGE]の値が変数LENGの値より小さいか否か判定する。その関係が満たされている場合、判定はYESとなり、ステップ707で要素LENGTH[TONE][RANGE]に変数LENGの値を代入した後、一連の処理を終了する。そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。
上述したようなことから、要素LENGTH[TONE][RANGE]には、変数TONEの値が示す音色で、且つ変数RANGEの値が示す音域に属する音高の楽音の発音を指示するこれまでの音符データのなかで発音時間(音符長データが示す発音時間)が最大のものが代入される。それにより、配列変数LENGTHは、音色毎、及び音域毎に、楽音の最大発音時間の保持に用いている。
図5のステップ510以降の説明に戻る。
そのステップ510では、変数ADの値をインクリメントし、指定曲データSDからデータを読み出す対象を次に進める。次のステップ511では、インクリメント後の変数ADの値が最終アドレスの値より大きいか否か判定する。指定曲データSDから全てのデータを読み出して参照した場合、その関係が満たされることから、判定はYESとなり、ステップ512でROM102から必要な波形データのみを読み出してRAM103に転送するための波形データ読み出し処理を実行した後、図6のステップ513に移行する。そうでない場合には、判定はNOとなって上記ステップ506に戻り、次のデータの読み出しを行う。
図8は、上記波形データ読み出し処理のフローチャートである。ここで図8を参照して、その読み出し処理について詳細に説明する。
上述したように、配列変数WAVEの要素のなかで、確認された音色、その音色で発音させることが確認された楽音の音高が属する音域によって特定される要素には1が代入されている。その要素に対応する配列変数LENGTHの要素には、確認された楽音の発音時間のなかで最大のものが代入されている。このようなことから、ROM102からの波形データの読み出しは、配列変数WAVEの要素のなかで1が代入された要素に対応する波形データの最大の発音時間分のみを対象とする形で行われる。そのROM102はフラッシュメモリを想定している。
先ず、ステップ801では、変数N、Mにそれぞれ0を代入する。続くステップ802では、要素WAVE[N][M]の値が1か否か判定する。その値が1であった場合、つまり音色番号がNで音域を示す値がMの波形データが楽音の波高値生成に必要であった場合、判定はYESとなってステップ803に移行する。そうでない場合には、判定はNOとなってステップ808に移行する。
ステップ803では、その波形データを最初からROM102に読み出させるためのコマンドを生成する。次のステップ804では、そのコマンドをROM102に送付する。その送付後に移行するステップ805では、ROM103からその波形データが読み出されるのを待つ。その読み出しが開始すると、ステップ805の判定がYESとなってステップ806に移行して、ROM102から読み出された分の波形データをROM103に転送してストアする。ステップ807にはその後に移行する。
ステップ807では、ROM102から、要素LENGTH[N][M]の値分、波形データを読み出したか否か判定する。その値分の波形データをRAM103にストアした場合、判定はYESとなってステップ808に移行する。そうでない場合には、判定はNOとなってステップ805に戻り、ROM102から次の波形データが読み出されるのを待つ。
ステップ808では、変数Mの値をインクリメントする。続くステップ809では、変数Mの値が配列変数WAVEの要素を指定できる最大値より大きいか否か判定する。その値が最大値より大きい場合、判定はYESとなってステップ810に移行する。そうでない場合には、判定はNOとなって上記ステップ802に戻る。それにより、同じ音色番号Nで異なる音域の波形データが楽音の波高値生成に必要か否か確認する。
ステップ810では、変数Nの値をインクリメントし、変数Mに0を代入する。次のステップ811では、変数Nの値が配列変数WAVEの要素を指定できる最大値より大きいか否か判定する。その値が最大値より大きい場合、判定はYESとなり、ここで一連の処理を終了する。そうでない場合には、判定はNOとなって上記ステップ802に戻る。それにより、楽音の波高値生成に必要な波形データの確認対象は別の音色のものに移行する。
このようにして、楽音の波高値生成に必要な波形データはその生成に必要な部分のみROM102から読み出され、RAM103に転送されてストアされる。それにより、図4に示すような波形データの転送が実現される。
図6のステップ513以降の説明に戻る。
上述の波形データ読み出し処理を図5のステップ512として実行することにより、指定曲データSDによる自動演奏を開始する準備が完了する。このことから、そのステップ510以降では、その指定曲データSDに従って自動演奏するための処理が行われる。
先ず、ステップ513では、変数ADに、指定曲データSDの開始(先頭)アドレスの値を代入する。続くステップ514では、変数Tに所定値を代入する。その次に移行するステップ515では、タイマーをスタートさせる。そのタイマーは、例えばCPU111に内蔵のハードタイマーである。そのタイマーをスタートさせた後はステップ516に移行する。
音符長データが示す発音時間は、単位時間を基準にして、つまりその単位時間を表現可能な最小の時間として表したものである。ステップ516では、タイマーがその単位時間をカウントしたか否か判定する。ステップ515でタイマーをスタートさせてから、或いは前回その単位時間をカウントしたと判定してから、その単位時間が経過した場合、判定はYESとなり、ステップ517で変数Tの値をデクリメントした後、ステップ518に移行する。そうでない場合には、判定はNOとなってステップ519に移行する。
ステップ518では、変数Tの値が0か否か判定する。その値が0であった場合、判定はYESとなってステップ522に移行する。そうでない場合には、判定はNOとなってステップ519に移行する。
ステップ519では、ストップスイッチがオンされたか否か判定する。そのスイッチをユーザーが操作して自動演奏の終了を指示した場合、判定はYESとなり、ステップ820でジェネレータ(図中「音源」と表記)112に全ての楽音の消音を指示し、次のステップ821でタイマーを停止させた後、図5のステップ502に戻る。そうでない場合には、判定はNOとなって上記ステップ516に戻る。それにより、ユーザーが自動演奏の終了を指示しなければ、変数Tの値が0となるのを待つ。
ステップ522では、変数ADの値で指定されるデータをRAM101から読み出す。次のステップ523では、読み出したデータの種類を判定する。そのデータが音色データであった場合、その旨が判定されてステップ527に移行する。そのデータが音符データであった場合には、その旨が判定されてステップ524に移行する。
ステップ524では、変数NOTEに、読み出した音符データ中の音高データを代入する。次のステップ525では、変数Tに、その音符データ中の音符長データを代入する。その次に移行するステップ526では、ジェネレータ112に、変数NOTE、Tの各値を出力し、それらの値で指定される楽音の発音を指示する。その後はステップ528に移行する。
一方、ステップ527では、音色データで指定される音色への変更をジェネレータ112に指示する。その指示は、変更後の音色を示す音色番号を出力して行う。続くステップ528では、変数ADの値をインクリメントして、指定曲データSD中から読み出すデータを次に進める。その後に移行するステップ529では、インクリメント後の変数ADの値が最終アドレスの値より大きいか否か判定する。指定曲データSDから全てのデータを読み出した場合、その関係が満たされることから、判定はYESとなり、上記ステップ520に移行する。そうでない場合には、判定はNOとなって上記ステップ516に戻る。それにより、自動演奏を継続させる。
ステップ522で読み出したデータが音色データであった場合、変数Tへの値の代入を行わない。このことから、特には図示していないが、直前に音色データを処理した場合には、ステップ516、518でYESと判定することにより、次のデータを直ちに処理するようにしている。そのようにして音色データの次に位置するデータは直ちに処理することから、音符長データのようなものは付さないようにしている。
図9は、ジェネレータ112が実行する音源処理のフローチャートである。その音源処理は、CPU111の指示に従って、発音させるべき楽音の波高値を生成するためのものである。次に図9を参照して、その音源処理について詳細に説明する。
先ず、ステップ901では、全ての楽音の消音がCPU111から指示されたか否か判定する。上述したように、自動演奏を終了させる場合にその指示をCPU111は行う。このことから、その場合、判定はYESとなり、ステップ902で波高値の生成を終了させる停止処理を実行した後、一連の処理を終了する。そうでない場合には、判定はNOとなってステップ903に移行する。
ステップ903では、音色変更が指示されたか否か判定する。その指示をCPU111が行った場合、判定はYESとなり、その指示で指定された音色番号に対応する波形データ群をステップ904で波高値生成用に設定した後、ステップ908に移行する。そうでない場合には、判定はNOとなってステップ905に移行する。
ステップ905では、発音が指示されたか否か判定する。その指示をCPU111が行った場合、判定はYESとなってステップ906に移行する。そうでない場合には、判定はNOとなってそのステップ908に移行する。
ステップ906では、発音の指示でCPU111から入力した変数NOTEの値に従って、設定中の波形データ群のなかで対象とすべき波形データを選択し、その値から歩進幅を決定する。CPU111から入力した変数T、NOTEの各値により、選択した波形データのなかで楽音のリリースを開始するまでの波高値の位置(アドレス)を特定する。そのようなことを行った後はステップ907に移行し、変数ONFに楽音を発音中であることを示す値の1を代入する。ステップ908にはその後に移行する。
ステップ908では、変数ONFの値が1か否か判定する。その値が1でない場合、つまり発音中の楽音が存在しないことを示す0であった場合、判定はNOとなって上記ステップ901に戻る。そうでない場合には、判定はYESとなってステップ909に移行し、発音中の楽音の全てでエンベロープを付与するための減衰レベルが0か否か判定する。その減衰レベルが0となっていない楽音が1つ以上、存在する場合、判定はNOとなってステップ911に移行する。そうでない場合には、判定はYESとなり、ステップ910で変数ONFに0を代入した後、上記ステップ901に戻る。
ステップ911では、発音中の楽音毎に、その波高値生成用の波形データから対応する波高値を読み出し、必要に応じて補間演算を行い、波形データから波高値を生成する。続くステップ912では、生成した波高値毎に、エンベロープを付与する操作を行う。その操作は、例えば減衰レベルを示す値を波高値に乗算することで行う。ステップ913では、そのような操作を行った後の波高値を加算してサウンドシステム107に出力する。上記ステップ901にはその後に戻る。
上記波形データからの波高値の読み出しは、ステップ906で決定した歩進幅に従って行う。そのステップ906で特定した波高値の位置まで読み出した場合、対応する楽音をリリースさせるためのエンベロープの付与を開始させる。そのようにして、ジェネレータ112は、音符データに従った楽音の発音を実現させる。
なお、本実施の形態では、自動演奏を想定してROM102から必要な波形データをRAM103に転送するようにしているが、その転送はユーザーの演奏を想定して行うようにしても良い。つまり、演奏する曲の特定は、ユーザーが演奏する予定の曲を対象として行っても良い。転送する波形データはROM102に格納されたものとしているが、その波形データはハードディスク装置、或いはCD−ROM等の記録媒体に格納されたものであっても良い。
上述したような波形データの転送を行う楽音発生装置は、CPU111に実行させるプログラムをROM102に格納することで実現させているが、そのようなプログラムは、CD−ROM、DVD、或いは着脱自在なフラッシュメモリ等の記録媒体に記録させて配布しても良い。公衆網等の通信ネットワークを介して、そのプログラムの一部、若しくは全部を配信するようにしても良い。そのようにした場合には、ユーザーはプログラムを取得して、楽音発生装置として用いることが可能なコンピュータにロードすることにより、そのコンピュータに本発明を適用させることができる。このことから、記録媒体は、プログラムを配信する装置がアクセスできるものであっても良い。
本実施の形態による楽音発生装置の構成を説明する図である。 曲データの構成を説明する図である。 ROM102に格納された波形データ群WD1の構成を説明する図である。 曲の選択によってROM102からRAM103に転送される波形データを説明する図である。 全体処理のフローチャートである。 全体処理のフローチャートである(続き)。 音符検査処理のフローチャートである。 波形データ読み出し処理のフローチャートである。 音源処理のフローチャートである。
符号の説明
101、103 RAM
102 ROM
104 音源LSI
106 スイッチ部
107 サウンドシステム
111 CPU
112 ジェネレータ
SD 曲データ
WD1、WD2 波形データ群

Claims (2)

  1. 楽音の波形を示す波形データを用いて発音させるべき楽音を発音させる楽音発生装置において、
    音色毎に波形データを一つ以上、記憶した第1の記憶手段と、
    前記第1の記憶手段と比較して高速なアクセスが可能な第2の記憶手段と、
    演奏対象とする楽曲を特定する楽曲特定手段と、
    前記楽曲特定手段が特定した楽曲の演奏内容を示すとともに楽音を発音させるべき音色を示す音色データと、該楽音の音高及び発音時間を示す音符データとからなる曲データを参照して、該楽曲の演奏で発音される楽音の音色、及び該楽曲において発音させるべき楽音の発音時間の中から最大発音時間を特定する演奏内容特定手段と、
    前記演奏内容特定手段により特定された楽音の音色に対応する波形データを、該演奏内容特定手段により特定された最大発音時間に対応する部分のみ前記第1の記憶手段から読み出して該第2の記憶手段に記憶させることにより、前記楽曲特定手段が特定した楽曲の演奏に必要な波形データを該第2の記憶手段上に用意するデータ転送手段と、
    を具備することを特徴とする楽音発生装置。
  2. 音色毎に波形データを一つ以上、記憶した第1の記憶手段と、前記第1の記憶手段と比較して高速なアクセスが可能な第2の記憶手段と、を有し、楽音の波形を示す波形データを用いて発音させるべき楽音を発音させる楽音発生装置として用いることが可能なコンピュータに実行させるプログラムであって、
    演奏対象とする楽曲を特定する楽曲特定機能と、
    前記特定された楽曲の演奏内容を示すとともに楽音を発音させるべき音色を示す音色データと、該楽音の音高及び発音時間を示す音符データとからなる曲データを参照して、該楽曲の演奏で発音される楽音の音色、及び該楽曲において発音させるべき楽音の発音時間の中から最大の発音時間を特定する演奏内容特定機能と、
    前記特定された楽音の音色に対応する波形データを、前記特定された最大発音時間に対応する部分のみ前記第1の記憶手段から読み出して該第2の記憶手段に記憶させることにより、前記特定された楽曲の演奏に必要な波形データを該第2の記憶手段上に用意するデータ転送機能と、
    を実現させるためのプログラム。
JP2006096104A 2006-03-30 2006-03-30 楽音発生装置、及びプログラム Active JP4438766B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006096104A JP4438766B2 (ja) 2006-03-30 2006-03-30 楽音発生装置、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006096104A JP4438766B2 (ja) 2006-03-30 2006-03-30 楽音発生装置、及びプログラム

Publications (2)

Publication Number Publication Date
JP2007271827A JP2007271827A (ja) 2007-10-18
JP4438766B2 true JP4438766B2 (ja) 2010-03-24

Family

ID=38674696

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006096104A Active JP4438766B2 (ja) 2006-03-30 2006-03-30 楽音発生装置、及びプログラム

Country Status (1)

Country Link
JP (1) JP4438766B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4475323B2 (ja) 2007-12-14 2010-06-09 カシオ計算機株式会社 楽音発生装置、及びプログラム
JP6540057B2 (ja) * 2015-02-02 2019-07-10 カシオ計算機株式会社 波形読み込み装置、方法、プログラム、および電子楽器
JP6455189B2 (ja) * 2015-02-02 2019-01-23 カシオ計算機株式会社 波形読み込み装置、方法、プログラム、および電子楽器
JP6606839B2 (ja) * 2015-03-20 2019-11-20 カシオ計算機株式会社 波形書き込み装置、方法、プログラム、および電子楽器
JP6428689B2 (ja) * 2016-03-23 2018-11-28 カシオ計算機株式会社 波形読込み装置、方法、プログラム、及び電子楽器

Also Published As

Publication number Publication date
JP2007271827A (ja) 2007-10-18

Similar Documents

Publication Publication Date Title
JP4655812B2 (ja) 楽音発生装置、及びプログラム
US8772618B2 (en) Mixing automatic accompaniment input and musical device input during a loop recording
JP5610235B2 (ja) 録音再生装置およびプログラム
US10373595B2 (en) Musical sound generation device
JP4438766B2 (ja) 楽音発生装置、及びプログラム
US10475425B2 (en) Musical sound generation device
JP4475323B2 (ja) 楽音発生装置、及びプログラム
JP7124371B2 (ja) 電子楽器、方法及びプログラム
US6762358B2 (en) Waveform reproduction apparatus
US20130125733A1 (en) Musical sound generator and method for generating musical sound based on element data
EP3709290A1 (en) Acoustic device and acoustic control program
JP5141407B2 (ja) 楽曲再生装置
JP3918849B2 (ja) リミックス装置、スライス処理装置および記憶媒体
JP5458494B2 (ja) 電子楽器
JP3904012B2 (ja) 波形生成装置及び方法
JP3518716B2 (ja) 楽音合成装置
JP5375869B2 (ja) 楽曲再生装置、楽曲再生方法及びプログラム
JP3928725B2 (ja) 楽音信号発生装置及びレガート処理プログラム
JP7130185B2 (ja) 電子楽器、電子楽器の制御方法及び制御プログラム
JP4106798B2 (ja) 音源装置
JP4132268B2 (ja) 波形再生装置
JP2006267173A (ja) 演奏データ編集装置および演奏データ編集プログラム
JP2006091460A (ja) 音源用波形データの決定装置
JP2006098859A (ja) 楽音発生装置および楽音発生処理のプログラム
JP2008009026A (ja) 音楽データ記録再生装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081002

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091001

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091110

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091118

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091228

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

Free format text: PAYMENT UNTIL: 20130115

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4438766

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130115

Year of fee payment: 3