JP6524742B2 - 楽音発生装置、方法、およびプログラム - Google Patents

楽音発生装置、方法、およびプログラム Download PDF

Info

Publication number
JP6524742B2
JP6524742B2 JP2015060223A JP2015060223A JP6524742B2 JP 6524742 B2 JP6524742 B2 JP 6524742B2 JP 2015060223 A JP2015060223 A JP 2015060223A JP 2015060223 A JP2015060223 A JP 2015060223A JP 6524742 B2 JP6524742 B2 JP 6524742B2
Authority
JP
Japan
Prior art keywords
waveform data
read
designated
waveform
output
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
JP2015060223A
Other languages
English (en)
Other versions
JP2016180821A (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=57132693&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP6524742(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2015060223A priority Critical patent/JP6524742B2/ja
Publication of JP2016180821A publication Critical patent/JP2016180821A/ja
Application granted granted Critical
Publication of JP6524742B2 publication Critical patent/JP6524742B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

本発明は、ドローバー方式の電気オルガンの発音メカニズムをシミュレートする楽音発生装置、方法、およびプログラムに関する。
ドローバー方式の電気オルガン(以下、「ドローバーオルガン」と略称する)では、フィートの異なる9種類のドローバーの操作に応じてピッチの異なる9種類の正弦波を任意に組み合わせて合成することで所望の音色の楽音を形成する。
近年では、波形データ読出し方式の音源を用いた正弦波加算合成アルゴリズムに従ってドローバーオルガンのような音色の楽音を発生する電子楽器も知られている(例えば特許文献1または2に記載の技術)。
特許第5532446号公報 特許第4258878号公報
しかし、ドローバーオルガンの発音メカニズムをシミュレートする従来の電子楽器では、ドローバーの操作に応じてピッチの異なる9種類の正弦波を組み合わせて合成された1つの波形データに対して、鍵盤上の鍵の押鍵タイミングで読出しアクセスが行われていた。この場合、押鍵タイミング次第で、既に発音されている楽音波形との位相関係が変わり、同じ押鍵の順番でもタイミング次第で、押鍵された各鍵に対応する各楽音波形同士が共鳴することにより、それらが混合されて放音された楽音の音量が大きくなったり小さくなったりしてしまうという課題があった。
また、ドローバーが変更されることにより再合成された波形データが、変更前の波形データと切り替えられる際に、変更直前に生成された楽音サンプルデータと変更直後に生成された楽音サンプルデータとで振幅の変化幅が大きくなって、ノイズが発生してしまう場合があるという課題があった。
本発明は、混合されて放音された楽音の音量の変動をなくすとともに、ノイズの発生を抑制することを目的とする。
態様の一例では、演奏指示により音高が指定されたかにかかわらず、複数種の音高夫々に基づいて波形データを読み出す波形データ読出し部と、演奏指示によりいずれかの音高が指定されたときに、その指定された音高に対応して波形データ読出し部から読み出された波形データを出力させるように制御する出力制御部と、を備える。
本発明によれば、混合されて放音された楽音の音量の変動をなくすとともに、ノイズの発生を抑制することが可能となる。
電子鍵盤楽器の実施形態のハードウェア構成例を示す図である。 ドローバー部のハードウェア構成例を示す図である。 ドローバーによる波形データ合成機能の説明図である。 音源部の機能説明図である。 波形データ更新機能の説明図である。 電子楽器の実施形態の全体制御処理の例を示すフローチャートである。 ドローバー処理の詳細例を示すフローチャートである。 サンプリング割込み処理の詳細例を示すフローチャートである。
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。図1は、電子鍵盤楽器の実施形態のハードウェア構成例を示す図である。図1においおいて、電子鍵盤楽器100は、CPU(中央演算処理装置)101、ROM(リードオンリーメモリ)102、記憶部としてのRAM(ランダムアクセスメモリ)103、鍵盤部(操作子)104、ドローバー部105、および音源部106を備え、それらがシステムバス108によって相互に接続された構成を有する。また、音源部106の出力はサウンドシステム107に入力する。
CPU101は、RAM103をワークメモリとして使用しながらROM102に記憶された制御プログラムを実行することにより、図1の電子鍵盤楽器100の制御動作を実行する。
操作子としての鍵盤部104は、演奏者による各鍵の押鍵または離鍵操作を検出し、CPU101に通知する。
ドローバー部105は、演奏者によるドローバーの操作を検出し、CPU101に通知する。
音源部106は、CPU101から入力する発音指示データに基づいて、デジタル楽音波形データを生成し、サウンドシステム107に出力する。サウンドシステム107は、音源部106から入力したデジタル楽音波形データをアナログ楽音波形信号に変換した後、そのアナログ楽音波形信号を内蔵のアンプで増幅して内蔵のスピーカから放音する。
図2は、図1のドローバー部105のハードウェア構成例を示す図である。ドローバー部105は、基音および各倍音成分毎の音量を調整する#1〜#9のスライドボリューム201と、#1〜#9のスライドボリューム201によってそれぞれレベル制御された音量信号を入力チャンネルch1〜ch9に取り込み、それぞれA/D(アナログ/デジタル)変換してドローバー出力Ddr(ch1)〜Ddr(ch9)として出力し、RAM103に記憶させるA/D変換器202とから構成される。
#1〜#9のスライドボリューム201には、ドローバーオルガンにおける16’(16フィート)(「’」はフィートの省略記号)、5−1/3’(5と3分の1フィート)、8’、4’、2−2/3’、2’、1−3/5’、1−1/3’、1’という、フィートの異なる9種類のドローバーがそれぞれアサインされる。ここで、「フィート」は、パイプオルガンの、相当するパイプの長さを示す単位である。このうちドローバー8’は「基音」と呼ばれ、演奏者は、この基本を中心にドローバーであるスライドボリューム201を調整して音色を作成する。ドローバー4’、2−2/3’、2’、1−3/5’、1−1/3’、および1’はそれぞれ、基音の第2倍音(1オクターブ上)、第3倍音(1オクターブ+5度上)、第4倍音(2オクターブ上)、第5倍音(2オクターブ+3度上)、第6倍音(2オクターブ+5度上)、および第8倍音(3オクターブ上)となっている。これらのスライドボリューム201により、演奏者は、基音の周波数成分に対して整数次倍音の周波数成分を任意の比率で有する音色の波形データを作成することができる。また、ドローバー16’は基音の第1/2倍音(1オクターブ下)であり、ドローバー5−1/3’は、基音の第1.5倍音(ドローバー16’の第3倍音)となっている。これらのスライドボリューム201により、基音に対して例えば深みのある音色の波形データを作成することができる。
図3は、図1、図2に示されるドローバー部105でのスライドボリューム201(ドローバー)の操作に基づいて図1のCPU101が実行する波形データ合成機能の説明図である。この機能は、CPU101がドローバー部105が操作されたことを検知することにより実行する後述するドローバー処理(後述する図6のステップS602)内の波形データ合成処理(後述する図7のステップS701)として実現される。まず、CPU101は、#1〜#9の乗算処理に対して、図2のA/D変換器202から図1のRAM103に得られているドローバー出力Ddr(ch1)〜Ddr(ch9)を乗算値として与える。次に、CPU101は、#1〜#9の正弦波生成処理301によって、前述した16’、5−1/3’、8’、4’、2−2/3’、2’、1−3/5’、1−1/3’、および1’の各倍音関係に対応する周波数を有する#1〜#9の各正弦波データを生成する。そして、CPU101は、#1〜#9の正弦波データをそれぞれ、#1〜#9の乗算処理302に入力し、そこで各ドローバー出力Ddr(ch1)〜Ddr(ch9)の乗算値を乗算する。その後、CPU101は、乗算結果の#1〜#9の各正弦波データを、加算処理303で混合し、その混合結果の波形データ304としてRAM103に記憶する。最後に、CPU101は、波形データ304をコピーして、鍵盤105の79鍵分のRAM103上の記憶領域に、#0〜#78の79組のコピー波形データ305を生成する。なお、このコピー処理においては、図5の説明で後述する波形データ更新機能の処理が実行される。
図4は、図1の音源部106の機能説明図である。音源部106は、例えばLSI(大規模集積回路)として実装されている。音源部106は、鍵盤部104の79鍵の各音高に対応して、#0〜#78の79組のOSC401(読み出し部)と、#0〜#78の79組のEG(出力制御部)402と、MIXER(出力部)403とを備える。
任意の#i(0≦i≦78)番目の1つのOSC401(#i)は、鍵盤部104の#i番目の音高(#i)の鍵に対応しており、図3のCPU101の波形データ合成機能によりRAM103に得られている#i番目のコピー波形データ305(#i)中の1つ以上の波形サンプルデータを、音高(#i)に対応した読出し速度(サンプル間隔)で読み出す。そして、OSC401(#i)は、その読み出した波形サンプルデータに対して必要に応じて例えば補間処理を実行することにより、音高(#i)に対応する波形データを生成する。OSC401(#i)は、読み出す波形サンプルデータの読出しアドレスがコピー波形データ305(#i)の末端アドレスまで達したら、再び先頭アドレスに戻って、音高(#i)に対応した読出し速度(サンプル間隔)での読出しを繰り返す。先頭アドレスと末端アドレスの波形サンプルデータの接続性を考慮して、波形データ304は、ドローバー方式等の正弦波合成方式により生成されるものとする。
音源部106中の#0〜#78の各OSC401は、図3のCPU101の波形データ合成機能によりRAM103に得られている各OSC401に対応する#0〜#78の各コピー波形データ305に対して、上述のOSC401の動作を並列に実行する。このとき、#0〜#78の各OSC401は、RAM103に得られている同一の波形データ304(図3)からコピーされた#0〜#78の各コピー波形データ305の先頭アドレスの波形サンプルデータから同時に読出しを開始し、先頭アドレスから末端アドレスまでの間で#0〜#78のそれぞれの音高に対応する読出し速度(サンプル間隔)での読出しを繰り返し実行し、#0〜#78のそれぞれの音高に対応する各波形データを生成する。また、電子楽器100(図1)が動作をしている間は、#0〜#78の各OSC401は、演奏者が鍵盤部104で#0〜#78までのそれぞれの音高に対応する鍵を押鍵することによる演奏の指示を行っているか否かに関わらず常に、上述の各波形データの生成動作を実行している。
一方、#0〜#78の各EG402は、鍵盤部104の#0番目〜#78番目の各音高の鍵に対応しており、各鍵が押鍵されていなければそれぞれの出力を0にして、各波形データは発音出力しない。そして、演奏者が鍵盤部104の任意の#i番目(0≦i≦78)の音高の鍵を押鍵すると、CPU101が、鍵盤部104での音高(#i)の鍵の押鍵を検出することにより、音源部106に対して音高(#i)の楽音の発音指示データを供給する。この結果、音源部106内のEG402(#i)が動作を開始する。EG402(#i)は、OSC401(#i)が生成する波形データに対して、例えば演奏者が予め指示をした所定の強度変化特性の振幅エンベロープを押鍵開始後の時間経過とともに乗算し、その乗算の結果得られる波形データを発音出力する。
MIXER403は、#0〜#78のEG402からそれぞれ発音出力される各波形データを混合して、その混合結果をデジタルの楽音波形デ−タ404として図1のサウンドシステム107に出力する。
近年の電子楽器用の音源LSIは、本実施形態のような波形データの読出し方式により並列して独立動作する最大で256組程度のOSCを搭載することが可能となっており、また多くの波形データを記憶可能な大容量メモリも低コスト化が進んでいる。そこで、本実施形態は、このような機能を有する音源LSIを音源部106として用いた上で、#0〜#78の79組のOSC401を使用する。そして、#0〜#78の各OSC401が読出しを行う波形データとして、1つの波形データ304ではなく、波形データ304から個別にコピーされた#0〜#78の各コピー波形データ305をRAM103に記憶させて用いる。#0〜#78の各OSC401は、もともと同一の波形データ304からコピーされた#0〜#78の各コピー波形データ305から位相(読出し開始アドレス)を合わせて常に読出しを行って、#0〜#78の各波形データを生成している。この上で、各音高に対応する鍵盤105上の鍵が押鍵されていないときは、CPU101が、各OSC401の後段に接続される各EG402におけるゲインを0にして、各波形データが出力されないように制御する。そして、鍵盤部104上の各音高に対応する鍵が押鍵されたタイミングで、該当するEG402がそれに接続さるOSC401が出力している波形データへの振幅エンベロープの乗算を開始する。このような処理により、各EG402が発音出力した各波形データをMIXER403で混合して得られる楽音波形デ−タ404では、各音高ごとの各波形データの位相が常に揃った状態となる。従って、押鍵タイミング次第で、既に発音されている他の波形データとの位相関係が変わり、出力される楽音波形デ−タ404の音量が大きくなったり小さくなったりしてしまうという課題を克服することが可能となる。これと同時に、現在実現されている技術のもとでは、波形データ304からコピーされた例えば79組のコピー波形データ305をRAM103に記憶させ、これらに対して音源部106が搭載する79組のOSC401が各コピー波形データ305に対して並列読出しを行うという構成は、十分に実用的である。なお、79組のコピー波形データ305は、図1のRAM103にではなく、音源部106のLSIが内蔵する波形メモリに記憶されてもよい。
図5は、図1、図2に示されるドローバー部105でのスライドボリューム201(ドローバー)の操作に基づいて図1のCPU101が実行する波形データ更新機能の説明図である。この機能は、CPU101がドローバー部105が操作されたことを検知することにより実行する後述するドローバー処理(後述する図6のステップS602)内の波形データ更新処理(後述する図7のフローチャートの破線枠Aの処理群、および図8のフローチャート)として実現される。
図3の説明で前述したように、CPU101は、図1のドローバー部105が操作されたことを検知すると、波形データ合成機能によりまず波形データ304を生成してRAM103に記憶する。続いて、CPU101は、RAM103に記憶された波形データ304をコピーして、#0〜#78の79組のコピー波形データ305をRAM103上に生成する。
ここで、ドローバー操作により変更された波形データ304が任意の#i(0≦i≦78)番目のコピー波形データ305(#i)にコピーされるとき、音源部106内の対応するEG402(#i)が波形データを発音出力していない場合には、出力される楽音波形データ404に影響はないため、波形データ304をコピー波形データ305(#i)としてそのままコピーすればよい。
一方、変更された波形データ304がコピー波形データ305(#i)にコピーされるときに、音源部106内の対応するEG402(#i)が波形データを発音出力している場合には、図5(a)に示されるように、OSC401(#i)がコピー波形データ305(#i)に対して読出しを行っている現在アドレス501付近の波形サンプルデータが変更された波形データ304によって置き換えられてしまうと、変更前と変更後とでサンプル値に大きな差分が発生する可能性がある。この場合には、OSC401(#1)が生成する波形データに、その差分を起因とするノイズが重畳されてしまい、EG402からMIXER403を介して出力される楽音波形データ404にも、そのノイズが乗ってしまう。なお、現在アドレス501に対して、OSC401(#i)が読出しを行う波形サンプルデータのアドレス範囲は、その#i番目の音高(#i)の値によって変化する。すなわち、音高(#i)によっては、OSC401(#i)は、現在アドレス501の前後数サンプル分の波形サンプルデータを読み出し、それらに対して補間処理を実行することにより、波形データを生成する場合がある。このため、そのようなアドレス範囲の波形サンプルデータについても、変更された波形データ304の対応する波形サンプルデータによって置き換えられてしまうと、変更前と変更後とでサンプル値に大きな差分が発生してノイズとなる可能性がある。
そこで、本実施形態では、変更された波形データ304がコピー波形データ305(#i)にコピーされるときに、音源部106内の対応するEG402(#i)が波形データを発音出力している場合には、CPU101は、以下のような処理を実行する。
CPU101はまず、音源部106から、OSC401(#i)が現在アドレス501を中心として現在読出しを行っている読出し対象のアドレス範囲を取得する。CPU101は、OSC401(#i)における読出し対象のアドレス範囲の先頭アドレスおよび終了アドレスをそれぞれ、RAM103上の配列変数データread_start[i]およびread_end[i]に格納する。なお、以下の説明において、read_start[i]およびread_end[i]をそれぞれ、「読出し対象の先頭アドレス」および「読出し対象の終了アドレス」と呼ぶことがある。
次に、CPU101は、図5(b)の502の破線波形部分として示される、コピー波形データ305(#i)上の読出し対象のアドレス範囲read_start[i]〜read_end[i]の波形サンプルデータについては、現在のサンプリングタイミングでは、OSC401(#i)およびEG402(#i)が波形データを発音出力するための補間処理に使用する可能性がある。このため、CPU101は、この範囲の波形サンプルデータについては、変更後の波形データ304による書換え(置換え)は行わない。
一方、コピー波形データ305(#i)上の、読出し対象のアドレス範囲read_start[i]〜read_end[i]以外のアドレス範囲、すなわち図5(b)の波形部分503として示される、波形開始アドレスstart[i]から読出し対象の先頭アドレスread_start[i]の1アドレス手前までと、読出し対象の終了アドレスread_end[i]の1アドレス後から波形末尾アドレスend[i]までのアドレス範囲の波形サンプルデータについては、現在のサンプリングタイミングでは、OSC401(#i)およびEG402(#i)が波形データを発音出力するための補間処理に使用する可能性はない。このため、CPU101は、この範囲の波形サンプルデータを、変更後の波形データ304の対応する波形サンプルデータで書き換える(置き換える)。
さらに、CPU101は、上記部分的な書換え(置換え)を行った後、サンプリングタイミングごとに、OSC401(#i)がコピー波形データ305(#i)に対して指定する読出し対象のアドレス範囲が、RAM103に記憶されている読出し対象のアドレス範囲read_start[i]〜read_end[i]外となったか否かを監視する。そして、CPU101は、この監視結果がYESとなって、コピー波形データ305(#i)上の読出し対象のアドレス範囲read_start[i]〜read_end[i]の波形サンプルデータの読出しが完了したサンプリングタイミングで、図5(b)の破線波形部分502として示される、コピー波形データ305(#i)上の読出し対象のアドレス範囲read_start[i]〜read_end[i]の波形サンプルデータを、変更後の波形データ304上の対応する波形サンプルデータによって書き換える(置き換える)。
CPU101は、以上の波形データ更新機能の処理を、図1のドローバー部105が操作されたことを検知して波形データ304を生成した後に、#0〜#78の79組のコピー波形データ305に対してそれぞれ実行する。このように、本実施形態では、波形データ304をコピーして#0〜#78の79組のコピー波形データ305を生成するときに、EG402(#i)が発音出力中である場合には、それぞれのコピー波形データ305(#i)(0≦i≦78)に対して、OSC401(#i)が読出しを行っているアドレス範囲を避けながら、波形サンプルデータの書換え(置換え)を行うことにより、ノイズの発生を抑制することが可能となる。
図6は、図1および図2に示されるハードウェア構成例を有する電子楽器100においてCPU101が実行する、全体制御処理の例を示すフローチャートである。これは、CPU101が、ROM102に記憶された制御処理プログラムを実行する処理である。
電子楽器100の電源スイッチが投入されると、CPU101は、図6のフローチャートで例示される制御処理を開始し、まず、RAM103の内容を初期化し(ステップS601)、その後、ステップS602からS604までの一連の処理を繰り返し実行する。
上記繰返し処理において、CPU101はまず、ドローバー処理を実行する(ステップS602)。ドローバー処理では、図1のドローバー部105の操作が検知された場合に、図3の波形データ304を生成し、その波形データ304をコピーして図3の#0〜#78の79組のコピー波形データ305を生成、更新する処理が実行される。
図7は、図6のステップS602のドローバー処理の詳細例を示すフローチャートである。
まず、CPU101は、図1のドローバー部105で操作が行われたか否かを判定する(ステップS701)。
ドローバー部105で操作が行われていない場合(ステップS701の判定がNOの場合)には、CPU101は、そのまま図7のフローチャートで示される図6のステップS602のドローバー処理を終了する。
ドローバー部105で操作が行われた場合(ステップS701の判定がYESの場合)には、CPU101は、波形データ合成処理を実行する(ステップS702)。ここでは、CPU101は、図3の説明で前述した波形データ304を生成する処理を実行し、生成した波形データ304をRAM103に記憶する。
次に、CPU101は、破線枠Aで示されるステップS703からS710までの一連の処理で示される波形データ更新処理を実行する。ここでは、CPU101は、図5を用いて前述した波形データ304から#0〜#78のコピー波形データ305を生成、更新する処理を実行する。
波形データ更新処理において、CPU101は、ステップS703で79組の各コピー波形データ305を選択するためのRAM103上の変数iの値を0に初期化した後、ステップS709で変数iの値を+1ずつインクリメントしながら、ステップS710で変数iの値が79に達したと判定されるまで、ステップS704からステップS708までの一連の処理を繰り返し実行する。これにより、0≦i≦78として#iのコピー波形データ305に対する生成、更新処理が繰り返し実行される。
ステップS704からステップS708までの一連の処理において、CPU101はまず、音源部106にアクセスすることにより、変数iの値が示す#i番目のEG402(#i)が発音中か否か、すなわち波形データを出力中か否かを判定する(ステップS704)。
EG402(#i)が発音中ではない場合(ステップS704の判定がNOの場合)には、CPU101は、ステップS702でRAM103上に生成した波形データ304を、#i番目のコピー波形データ305(#i)としてコピーしてRAM103に記憶させる(ステップS708)。その後、CPU101は、ステップS709の処理に移行して、次の#i番目の処理に移る。
EG402(#i)が発音中である場合(ステップS704の判定がYESの場合)には、CPU101はまず、図5(b)の説明で前述したように、音源部106から、変数iの値が示す#i番目のOSC401(#i)が現在アドレス501を中心として現在読出しを行っている読出し対象のアドレス範囲の先頭アドレスおよび終了アドレスを取得し、それぞれ変数iの値を要素番号とするRAM103上の配列変数データread_start[i]およびread_end[i]に格納する(ステップS705)。
次に、CPU101は、図5(b)の説明で前述したように、コピー波形データ305(#i)上の、読出し対象のアドレス範囲read_start[i]〜read_end[i]以外のアドレス範囲、すなわち図5(b)の波形部分503として示される、波形開始アドレスstart[i]から読出し対象の先頭アドレスread_start[i]の1アドレス手前までと、読出し対象の終了アドレスread_end[i]の1アドレス後から波形末尾アドレスend[i]までのアドレス範囲の波形サンプルデータを、ステップS702でRAM103上に生成された変更後の波形データ304の対応する波形サンプルデータで書き換える(ステップS706)。
次に、CPU101は、#i番目のコピー波形データ305(#i)に対するサンプリング割込み設定を指示するための変数iの値を要素番号とするRAM103上の配列変数データint[i]に、割込みを有効化する値「1」を格納する(ステップS707)。この処理は、#iのコピー波形データ305について、図5(b)の説明で前述した監視処理を有効にする処理である。
その後、CPU101は、変数iの値を+1インクリメントし(ステップS709)、さらに変数iの値が79に等しくなったか否かを判定し(ステップS710)、i<79(ステップS710の判定がNO)であれば、CPU101は、ステップS704の処理に戻って、次の#i番目のコピー波形データ305に対して、上述した更新処理を実行する。
CPU101は、#0〜#78までの79組の全てのコピー波形データ305に対する更新処理を終了し、ステップS710の判定がYESになると、図7のフローチャートで示される図6のステップS602のドローバー処理を終了する。
図8は、サンプリングタイミング毎の割込み処理によってCPU101が実行する、サンプリング割込み処理の詳細例を示すフローチャートである。この処理は、サンプリングタイミング毎のタイマ割込みに基づいて、CPU101が、ROM102に記憶されているサンプリング割込み処理プログラムを実行する処理である。この処理は、図5(b)において、現在アドレス501のサンプリングタイミング以後、各サンプリングタイミングごとに、図5(b)の説明で前述した監視動作を実行するための処理である。
サンプリング割込み処理において、CPU101は、ステップS801で79組の各コピー波形データ305を選択するためのRAM103上の変数iの値を0に初期化した後、ステップS807で変数iの値を+1ずつインクリメントしながら、ステップS808で変数iの値が79に達したと判定されるまで、ステップS802からステップS806までの一連の処理を繰り返し実行する。これにより、0≦i≦78として#iのコピー波形データ305に対する監視処理が繰り返し実行される。なお、ここで使用される変数iは、図7のフローチャートで例示されるドローバー処理で使用される変数iとは競合しないで制御可能なローカル変数であるとする。
ステップS802からステップS806までの一連の処理において、CPU101はまず、サンプリング割込み設定を指示するための変数iの値を要素番号とするRAM103上の配列変数データint[i]に割込みを有効化する値「1」が格納されているか否かを判定する(ステップS802)。
int[i]に割込みを有効化する値「1」が格納されていない(ステップS802の判定がNO)の場合には、変数iが示す#iのコピー波形データ305については図7のステップS708によって更新済みであるため、CPU101は、ステップS807の処理に移行して、次の#i番目のコピー波形データ305に対する監視処理に移行する。
int[i]に割込みを有効化する値「1」が格納されている場合(ステップS802の判定がYESの場合)には、CPU101は、変数iの値が示す#i番目のOSC401(#i)が#i番目のコピー波形データ305(#i)に対して指定する読出し対象のアドレス範囲が、図7のステップS705でRAM103に記憶されている読出し対象のアドレス範囲read_start[i]〜read_end[i]の範囲外となったか否かを判定する(ステップS803)。
ステップS803の判定がNOならば、OSC401(#i)がコピー波形データ305(#i)に対して指定する読出し対象のアドレス範囲がまだ読出し対象のアドレス範囲read_start[i]〜read_end[i]の範囲内にあるため、CPU101は、現在のサンプリングタイミングでは、#i番目のコピー波形データ305(#i)上の上記読出し対象のアドレス範囲の波形サンプルデータの書換えは行わず、ステップS807の処理に移行して、次の#i番目のコピー波形データ305に対する監視処理に移行する。
ステップS803の判定がYESならば、コピー波形データ305(#i)上の読出し対象のアドレス範囲read_start[i]〜read_end[i]の波形サンプルデータの読出しが完了したため、CPU101は、コピー波形データ305(#i)上の読出し対象のアドレス範囲read_start[i]〜read_end[i]の波形サンプルデータを、ステップS702でRAM103上に生成された変更後の波形データ304上の対応する波形サンプルデータによって書き換える(ステップS804)。
その後、CPU101は、RAM103上の読出し対象の先頭アドレスが格納されている配列変数データread_start[i]と、終了アドレスが格納されている配列変数データread_end[i]を初期化する。
また、コピー波形データ305(#i)の全ての波形サンプルデータの更新が完了しこれ以上監視を行う必要はなくなったため、CPU101は、コピー波形データ305(#i)に対するサンプリング割込み設定を指示するための変数iの値を要素番号とするRAM103上の配列変数データint[i]に、割込みを無効化する値「0」を格納する(ステップS806)。
その後、CPU101は、変数iの値を+1インクリメントし(ステップS807)、さらに変数iの値が79に等しくなったか否かを判定し(ステップS808)、i<79(ステップS808の判定がNO)であれば、CPU101は、ステップS802の処理に戻って、次の#i番目のコピー波形データ305に対して、上述した監視処理を実行する。
CPU101は、#0〜#78までの79組の全てのコピー波形データ305に対する監視処理を終了し、ステップS808の判定がYESになると、図8のフローチャートで示される今回のサンプリングタイミングにおけるサンプリング割込み処理を終了する。
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)
演奏指示により音高が指定されたかにかかわらず、複数種の音高夫々に基づいて波形データを読み出す波形データ読出し部と、
前記演奏指示によりいずれかの音高が指定されたときに、当該指定された音高に対応して前記波形データ読出し部から読み出された前記波形データを出力させるように制御する出力制御部と、
を備える楽音発生装置。
(付記2)
前記波形データを生成するドローバー部をさらに備え、
前記ドローバー部は、基本波形データ及び当該基本波形の倍音波形データ夫々を生成する複数の波形データ生成部と、前記複数の波形データ生成部から生成された波形データ夫々に対して、ドローバー操作子によって指定された係数を乗算して出力する複数の乗算器と、前記複数の乗算器夫々の出力を混合して波形データとして出力する混合器と、を備える、
ことを特徴とする付記1に記載の楽音発生装置。
(付記3)
前記出力制御部は、前記いずれかの音高が指定されるとともにベロシティが指定された場合、当該指定されたベロシティに基づいて前記波形データの出力を制御することを特徴とする付記1または2に記載の楽音発生装置。
(付記4)
付記1ないし3のいずれかに記載の楽音発生装置と、
前記複数の音高のいずれかを指定する複数の操作子と、
前記楽音発生装置から出力される波形データに対応する楽音を生成するサウンドシステムと、
を備えることを特徴とする電子楽器。
(付記5)
波形データを読み出す波形データ読出し部と、前記波形データを出力させるように制御する出力制御部と、を備える楽音発生装置に用いられる楽音発生方法であって、前記楽音発生装置は、
演奏指示により音高が指定されたかにかかわらず、複数種の音高夫々に基づいて波形データを読み出し、
前記演奏指示によりいずれかの音高が指定されたときに、当該指定された音高に対応して前記読み出された波形データを出力させるように制御する、楽音発生方法。
(付記6)
波形データを読み出す波形データ読出し部と、前記波形データを出力させるように制御する出力制御部と、を備える楽音発生装置に用いられるコンピュータに、
演奏指示により音高が指定されたかにかかわらず、複数種の音高夫々に基づいて波形データを読み出すステップと、
前記演奏指示によりいずれかの音高が指定されたときに、当該指定された音高に対応して前記読み出された波形データを出力させるように制御するステップと、
をコンピュータに実行させるためのプログラム。
101 CPU
102 ROM
103 RAM
104 鍵盤部
105 ドローバー部
106 音源部
107 サウンドシステム
201 スライドボリューム
202 A/D変換器
301 正弦波生成処理
302 乗算処理
303 加算処理
304 波形データ
305 コピー波形データ
401 OSC(読み出し部)
402 EG(出力制御部)
403 MIXER(出力部)
404 楽音波形データ
501 現在アドレス
502 コピー波形データ上の読出し対象のアドレス範囲の波形サンプルデータ
503 コピー波形データ上の読出し対象のアドレス範囲以外のアドレス範囲の波形サンプルデータ

Claims (6)

  1. 演奏指示により音高が指定されたかにかかわらず、複数種の音高夫々に基づいて波形データを読み出す波形データ読出し部と、
    前記演奏指示によりいずれかの音高が指定されたときに、当該指定された音高に対応して前記波形データ読出し部から読み出された前記波形データを出力させるように制御する出力制御部と、
    を備える楽音発生装置。
  2. 前記波形データを生成するドローバー部をさらに備え、
    前記ドローバー部は、基本波形データ及び当該基本波形の倍音波形データ夫々を生成する複数の波形データ生成部と、前記複数の波形データ生成部から生成された波形データ夫々に対して、ドローバー操作子によって指定された係数を乗算して出力する複数の乗算器と、前記複数の乗算器夫々の出力を混合して波形データとして出力する混合器と、を備える、
    ことを特徴とする請求項1に記載の楽音発生装置。
  3. 前記出力制御部は、前記いずれかの音高が指定されるとともにベロシティが指定された場合、当該指定されたベロシティに基づいて前記波形データの出力を制御することを特徴とする請求項1または2に記載の楽音発生装置。
  4. 請求項1ないし3のいずれかに記載の楽音発生装置と、
    前記複数の音高のいずれかを指定する複数の操作子と、
    前記楽音発生装置から出力される波形データに対応する楽音を生成するサウンドシステムと、
    を備えることを特徴とする電子楽器。
  5. 波形データを読み出す波形データ読出し部と、前記波形データを出力させるように制御する出力制御部と、を備える楽音発生装置に用いられる楽音発生方法であって、前記楽音発生装置は、
    演奏指示により音高が指定されたかにかかわらず、複数種の音高夫々に基づいて波形データを読み出し、
    前記演奏指示によりいずれかの音高が指定されたときに、当該指定された音高に対応して前記読み出された波形データを出力させるように制御する、楽音発生方法。
  6. 波形データを読み出す波形データ読出し部と、前記波形データを出力させるように制御する出力制御部と、を備える楽音発生装置に用いられるコンピュータに、
    演奏指示により音高が指定されたかにかかわらず、複数種の音高夫々に基づいて波形データを読み出すステップと、
    前記演奏指示によりいずれかの音高が指定されたときに、当該指定された音高に対応して前記読み出された波形データを出力させるように制御するステップと、
    をコンピュータに実行させるためのプログラム。
JP2015060223A 2015-03-23 2015-03-23 楽音発生装置、方法、およびプログラム Active JP6524742B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015060223A JP6524742B2 (ja) 2015-03-23 2015-03-23 楽音発生装置、方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015060223A JP6524742B2 (ja) 2015-03-23 2015-03-23 楽音発生装置、方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2016180821A JP2016180821A (ja) 2016-10-13
JP6524742B2 true JP6524742B2 (ja) 2019-06-05

Family

ID=57132693

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015060223A Active JP6524742B2 (ja) 2015-03-23 2015-03-23 楽音発生装置、方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP6524742B2 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2802709B2 (ja) * 1992-11-27 1998-09-24 株式会社河合楽器製作所 電子楽器
JP3732606B2 (ja) * 1997-01-14 2006-01-05 ローランド株式会社 電子楽器
JP4258878B2 (ja) * 1999-03-08 2009-04-30 カシオ計算機株式会社 楽音制御装置及び楽音制御方法
JP5532446B2 (ja) * 2011-07-27 2014-06-25 カシオ計算機株式会社 楽音発生装置およびプログラム

Also Published As

Publication number Publication date
JP2016180821A (ja) 2016-10-13

Similar Documents

Publication Publication Date Title
US9478203B2 (en) Resonance tone generation apparatus and resonance tone generation program
US9330648B2 (en) Electronic keyboard musical instrument
JPS6339919B2 (ja)
JP2018106006A (ja) 楽音生成装置および方法、電子楽器
JP2018106007A (ja) 楽音生成装置および方法、電子楽器
US20210090539A1 (en) Electronic musical instrument, method of generating musical sound, and storage medium
JP2009265470A (ja) 共鳴音発生装置および電子楽器
US8779272B2 (en) Musical sound producing apparatus, recording medium and musical sound producing method
JP5142363B2 (ja) 成分音合成装置及び成分音合成方法。
JP6176480B2 (ja) 楽音発生装置、楽音発生方法およびプログラム
US4554854A (en) Automatic rhythm performing apparatus
JP6524742B2 (ja) 楽音発生装置、方法、およびプログラム
JP2004317615A (ja) 共鳴装置、共鳴方法及び共鳴のためのコンピュータプログラム
JP4182958B2 (ja) 楽音信号生成装置
JP3999984B2 (ja) 楽音信号生成装置及び楽音信号生成プログラム
JP2015087436A (ja) 音声処理装置、音声処理装置の制御方法およびプログラム
WO2022054517A1 (ja) 電子楽器、方法、プログラム
JP5434445B2 (ja) 楽音信号制御装置及びプログラム
JP2953217B2 (ja) 電子楽器
JP2010008880A (ja) 電子楽音発生装置の位相同期装置
JP2580795B2 (ja) 電子楽器
JPS60153093A (ja) 複音電子楽器
JPH10247084A (ja) 音源装置
JP2013015857A (ja) 成分音合成装置及び成分音合成方法。
JPH03217899A (ja) 電子楽器の楽音発生装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180321

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190308

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190422

R150 Certificate of patent or registration of utility model

Ref document number: 6524742

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R157 Certificate of patent or utility model (correction)

Free format text: JAPANESE INTERMEDIATE CODE: R157