JP5915420B2 - 楽音発生装置、楽音発生方法、電子楽器及びプログラム - Google Patents
楽音発生装置、楽音発生方法、電子楽器及びプログラム Download PDFInfo
- Publication number
- JP5915420B2 JP5915420B2 JP2012151597A JP2012151597A JP5915420B2 JP 5915420 B2 JP5915420 B2 JP 5915420B2 JP 2012151597 A JP2012151597 A JP 2012151597A JP 2012151597 A JP2012151597 A JP 2012151597A JP 5915420 B2 JP5915420 B2 JP 5915420B2
- Authority
- JP
- Japan
- Prior art keywords
- channel
- waveform
- flag
- data
- sound
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
- G10H7/00—Instruments in which the tones are synthesised from a data store, e.g. computer organs
- G10H7/02—Instruments in which the tones are synthesised from a data store, e.g. computer organs in which amplitudes at successive sample points of a tone waveform are stored in one or more memories
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
- G10H2240/00—Data organisation or data communication aspects, specifically adapted for electrophonic musical tools or instruments
- G10H2240/171—Transmission of musical instrument data, control or status information; Transmission, remote access or control of music data for electrophonic musical instruments
- G10H2240/185—Error prevention, detection or correction in files or streams for electrophonic musical instruments
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Electrophonic Musical Instruments (AREA)
Description
例えば、特許文献1には、PCM(Pulse Coded Modulation)によって符号化された波形のデータを、1サンプル周期における各チャネルのタイムスロット毎に時分割で音源のデータとして読み出し、複数チャネルの楽音を合成して発生する技術が記載されている。
即ち、特許文献1には、各チャネルのタイムスロットにおいて、メモリから波形のデータを読み出し、楽音を合成して出力する処理を繰り返し行う技術が記載されている。
波形のデータを記憶するメモリを共有メモリとした場合、複数のプロセスによってメモリへのアクセスが衝突する可能性が高まり、メモリへのアクセスを待たされる結果、処理の遅延を招く場合があった。
特に、同時に発生可能な楽音のチャネル数が増加した場合、このような状況が顕著に現れることとなる。
このように、従来の楽音発生装置においては、楽音を発生するための処理効率が十分に高いものではなかった。
夫々割り当てられた波形データに基づき、所定の順序で楽音生成処理を行う複数の発音チャネルと、
当該複数の発音チャネル内の指定された発音チャネルに割り当てられるべき波形データの読み出し要求を受信した場合に、バスで接続されたメモリに記憶された波形データを読み出す読み出し手段と、
前記発音チャネルに対応する前記波形データの読み出し要求を受信したことに応じて、前記発音チャネルに対応する第1フラグをオンにする第1フラグオン手段と、
前記読み出し手段によって前記波形データの読み出しが完了されたと判定された場合に、前記発音チャネルに対応する前記第1フラグをオフにする第1フラグオフ手段と、
前記楽音生成処理開始のタイミングにおいて、前記発音チャネルに対応する前記第1フラグがオフである場合には前記波形データの読み出し要求に対応する前記発音チャネルでの楽音生成処理を開始させるとともに、前記第1フラグがオンである場合には前記発音チャネルでの楽音生成処理を開始させないように制御する制御手段と、
を備える。
図1は、本発明の一実施形態に係る楽音発生装置を備えた電子楽器のハードウェアの構成を示すブロック図である。
楽音発生装置20は、例えば電子楽器1の音源として構成される。なお、本実施形態において、電子楽器1は電子ピアノ等の鍵盤楽器として実現される場合を例に挙げて説明するが、他の楽器として構成することも可能である。
次に、楽音発生装置20の構成について説明する。
図2は、楽音発生装置20の構成を示すブロック図である。
図2において、楽音発生装置20は、波形生成部100と、波形メモリインターフェース部200と、バス破綻検出部300とを備えている。
この波形生成部100、波形メモリインターフェース部200及びバス破綻検出部300は、夫々、バス14に接続されている。
波形生成部100は、波形メモリインターフェース部200に対して、エントリリクエスト、エントリデータ及びアドレスを供給し、逆に波形メモリインターフェース部200からデータを受け取っている。また、波形生成部100は、バス破綻検出部300に対して、エントリリクエスト及びエントリデータを供給し、逆にバス破綻検出部300から破綻情報を受け取っている。なお、エントリリクエスト、エントリデータ及びアドレスの詳細については後述する。
波形メモリインターフェース部200は、バス破綻検出部300に対して、サンプル受信完了信号及びサンプル受信完了チャネル番号を供給している。なお、サンプル受信完了信号及びサンプル受信完了チャネル番号については後述する。
図3は、波形生成部100の具体的構成を示すブロック図である。
波形生成部100は、楽音発生装置20のシステムクロックを基に生成されるマスタカウンタmcに従って、動作する。具体的には、11ビットのカウンタとして構成されるマスタカウンタmcの上位7ビットによって、各チャネルch0〜ch127のタイムスロット128個が規定される。そして、マスタカウンタmcの下位4ビットは、夫々のタイムスロットをさらに16フィールドに分割している。
そして、次のサンプリング周期における当該チャネルのタイムスロット終了タイミングまでに、波形メモリインターフェース部200から入力される波形データを用いて楽音を表すデジタル信号を生成し、ミキサ21に出力する。
RAM調停部117は、CPU11からのバス14を介した上述の各レジスタに対するアクセス、及び、上述のセレクタの動作の選択を制御する。
音源制御パラメータ用RAM101には、各チャネルch0〜ch127に対応する記憶領域が形成され、夫々の記憶領域に、音源を制御する各種パラメータ(以下、「音源制御パラメータ」と称する。)が記憶されている。
図4において、音源制御パラメータ用RAM101には、チャネルch0〜チャネルch127に対応する記憶領域が形成されており、各チャネルの記憶領域には、波形アドレス整数部Aと、波形アドレス小数部aと、アドレス歩進値nと、再生モード値mと、再生ピッチデータ整数部Pと、再生ピッチデータ小数部pと、波高値Wとが記憶されている。なお、図4に示すアドレスは模式的に各記憶領域を表したものである。
波形アドレス整数部Aは、メモリ12の読み出しアドレスにおける整数部を表し、波形アドレス小数部aは、メモリ12の読み出しアドレスにおける小数部を表している。
再生モード値mは、楽音をPCMに基づいて再生するか、あるいは、差分PCMに基づいて再生するかを示す再生モードを表している。
再生ピッチデータ整数部Pは、波形のサンプルデータを読み出す際の音高に従うピッチ幅における整数部を表し、再生ピッチデータ小数部pは、ピッチ幅における整数部を表している。
波高値Wは、前回のサンプリング周期でメモリ12から読み出されたサンプルデータの波高値を表している。
アドレスレジスタ103は、加算器112によって算出されたアドレス(メモリ12における次の読み出しアドレス)の波形アドレス整数部Aを一時的に記憶し、記憶している波形アドレス整数部Aをセレクタ109、減算器110及びエントリデータ生成部113に出力する。
アドレスレジスタ105は、セレクタ107から入力された波形アドレス小数部aを一時的に記憶し、記憶している波形アドレス小数部aをセレクタ108,109及び波形補間処理部116aに出力する。
セレクタ107は、加算器112によって算出されたアドレス(メモリ12における次の読み出しアドレス)の波形アドレス小数部aあるいは音源制御パラメータ用RAM101から読み出された波形アドレス小数部aのいずれかを選択し、アドレスレジスタ105に出力する。
セレクタ109は、アドレスレジスタ103から入力された波形アドレス整数部Aと、歩進値レジスタ111から入力されたアドレス歩進値nと、アドレスレジスタ105から入力された波形アドレス小数部aと、波形演算部116から入力された波高値Wとのいずれかを選択してRAM調停部117を介して音源制御パラメータ用RAM101に出力する。
歩進値レジスタ111は、減算器110から入力されたアドレス歩進値nを一時的に記憶し、記憶しているアドレス歩進値nをエントリデータ生成部113に出力する。
そして、各チャネルのタイムスロットに制約されることなく、以後、次のサンプリング周期における当該チャネルのタイムスロット終了までに波形メモリインターフェース部200がメモリ12から読み出した波形のサンプルデータを用いて、波形演算部116によって楽音が発生される。
なお、破綻情報は、エントリデータ生成部113に代えて、後述する波形演算部116が受信するようにしてもよい。波形演算部116は、破綻情報を受信したことに応じて、楽音の発生を停止する。
波形メモリインターフェース部200は、波形生成部100からエントリデータが入力されると、入力されたエントリデータを一時的に記憶し、バス14が空き状態であるタイミングで、記憶しているエントリデータに対応する波形のサンプルデータをメモリ12から読み出す。
そして、波形メモリインターフェース部200は、読み出した波形のサンプルデータを一時的に記憶し、波形生成部100からの読み出し要求(リードアドレス演算回路114によるアドレスの入力)に対応して、記憶している波形のサンプルデータを波形生成部100に出力する。
図5において、波形メモリインターフェース部200は、エントリ処理部210と、エントリ用RAM220と、リクエストステータス用RAM230と、メモリバスインターフェース部240と、サンプルデータバッファ用RAM250とを備えている。
エントリデータ制御部211は、波形生成部100からエントリリクエスト信号を受信すると、書き込みポインタ用レジスタ212にラッチ信号を入力し、書き込みポインタが示すアドレスを1インクリメントさせる。
ステータスデータ用レジスタ216は、リクエストステータス用RAM230から読み出されたリクエストステータス情報を一時的に記憶し、記憶しているリクエストステータス情報をエントリデータ制御部211に出力する。
図6は、バストラフィックモニタ部217の構成例を示すブロック図である。
図6において、バストラフィックモニタ部217は、インクリメンタ217aと、セレクタ217bと、レジスタ217cとを備えている。
レジスタ217cには、システムクロックが入力され、各クロックの立ち上がりに同期して、セレクタ217bの出力信号が示す値を保持する。レジスタ217cは、保持している値を示す出力信号(トラフィック情報)をインクリメンタ217a及びエントリデータ制御部211に出力する。
エントリ用RAM220は、楽音発生装置20のローカルメモリとして備えられ、波形生成部100から入力されたエントリデータを記憶する。
図7において、エントリ用RAM220には、チャネルch0〜ch127が同時発音された場合に対応可能な数、即ち、128個の記憶領域が形成されており、各記憶領域には、再生モード値mと、発音開始であるか否かを表す開始フラグfと、リクエストワード数RWと、チャネル番号chと、リクエストアドレスRAとが記憶されている。なお、図7に示すアドレスは模式的に各記憶領域を表したものである。
また、各記憶領域は、書き込みポインタ及び読み出しポインタによって循環的にアドレスが指定される。即ち、エントリ用RAM220は、複数のエントリデータを順次記憶するリングバッファを構成している。
図8において、リクエストステータス用RAM230には、メモリ12から波形のサンプルデータが既に読み出された前回のエントリデータ夫々に対応するリクエストステータス情報の記憶領域が形成されている。各記憶領域には、前回のサンプリング周期で処理されたリクエストアドレスRAと、そのリクエストアドレスを基準として、既に読み出されたワード数XWと、再生モード値mとが記憶されている。
また、各記憶領域は、書き込みポインタ及び読み出しポインタによってアドレスが指定される。即ち、リクエストステータス用RAM230は、チャネルごとに固定アドレスの記憶領域が確保され、各記憶領域には複数のリクエストステータス情報が記憶されている。
なお、図8に示すアドレスは模式的に各記憶領域を表したものである。
さらに、メモリバスインターフェース部240は、メモリ12から波形のサンプルデータの読み出しが完了すると、サンプル受信完了信号及びサンプル受信完了チャネル番号をバス破綻検出部300に出力する。サンプル受信完了信号とは、メモリ12から波形のサンプルデータの読み出しが完了したことを示す信号である。また、サンプル受信完了チャネル番号とは、エントリデータに含まれるチャネル番号であり、読み出しが完了したサンプルデータに対応するチャネル番号である。
図9は、サンプルデータバッファ用RAM250における記憶領域のフォーマットを示す模式図である。
図9において、サンプルデータバッファ用RAM250には、チャネルch0〜ch127に対応する128個の記憶領域が形成されている。各チャネルの記憶領域には、波高値Wを表すデータが記憶されており、サンプルデータバッファ用RAM250の1つの記憶領域に記憶されるサンプルデータの数(ワード数)は、再生モード値m(PCMまたは差分PCMのいずれを示しているか)によって異なるものとなる。ここでは、1つの記憶領域に、最大で16アドレスに対応する16個のサンプルデータが記憶されるものとする。なお、図9に示すアドレスは模式的に各記憶領域を表したものである。
なお、サンプルデータバッファ用RAM250は、デュアルポートメモリによって構成され、波形生成部100からのデータの読み出しと、メモリバスインターフェース部240からのデータの書き込みとを同時に行うことが可能である。ただし、バスの調停を行うことにより、サンプルデータバッファ用RAM250をシングルポートメモリで構成することも可能である。
図10は、バス破綻検出部300の具体的構成を示すブロック図である。
図10において、バス破綻検出部300は、破綻判定フラグ制御部301と、破綻判定フラグレジスタ302と、破綻フラグレジスタ303と、OR回路304と、セレクタ305とを備えている。
また、破綻判定フラグ制御部301は、波形生成部100からエントリリクエスト及びエントリデータを受信すると、エントリデータ内のチャネル番号を、マスタカウンタmcに同期して、破綻判定フラグレジスタ302に出力する。破綻判定フラグレジスタ302は、当該チャネル番号を、マスタカウンタmcに同期して受信し、当該チャネル番号に対応する領域のフラグを「HIGH」にする。
また、破綻判定フラグ制御部301は、波形メモリインターフェース部200からサンプル受信完了信号及びサンプル受信完了チャネル番号を受信すると、サンプル受信完了チャネル番号を、マスタカウンタmcに同期して、破綻判定フラグレジスタ302に出力する。
さらに、破綻判定フラグレジスタ302は、次のサンプリング周期における該当チャネルの波形生成処理の直前にて、マスタカウンタmcに同期して、フラグ領域の各値を破綻フラグレジスタ303に出力する。
なお、破綻フラグレジスタ303には、チャネルch0〜ch127に対応する128個のフラグ領域が形成されている。したがって、破綻判定フラグ制御部301が波形生成部100から、該当チャネルの、エントリリクエスト及びエントリデータを受信してから次のサンプリング周期における該当チャネルの波形生成処理の直前までの間に、該当チャネルの、サンプル受信完了信号及びサンプル受信完了チャネル番号を受信しなかった場合には、破綻フラグレジスタ303の該当チャネルのフラグ領域は「HIGH」になる。
「HIGH」になった場合、バス破綻検出部300は、次のサンプリング周期における該当チャネルの波形生成処理の直前までの間に、メモリ12から波形のサンプルデータを受信できなかった場合を意味する。このような場合、該当チャネルにおけるバス破綻が検出される。
破綻フラグレジスタ303は、マスタカウンタmcに同期して、各破綻フラグの領域の値をOR回路304及びセレクタ305に出力する。
詳細には、マスタカウンタmcの上位7ビットにおける1カウントに対応する128個のタイムスロットの夫々に当該各破綻フラグの領域の値が対応している。そこで、セレクタ305は、各タイムスロットの夫々に対応する各破綻フラグの領域の値のうち、「HIGH」である値を格納する破綻フラグの領域を選択する。そして、セレクタ305は、選択した破綻フラグの領域に対応するチャネルに対して、バス破綻が検出されたことを示す情報を、破綻情報として波形生成部100に出力する。
例えば、チャネル0のタイムスロットに対応する破綻フラグの領域の値が「HIGH」である場合、チャネル0に対して破綻情報が出力される。
次に、電子楽器1の動作を説明する。
以下、図11〜図13を用いて電子楽器1の動作を説明し、適宜、図2〜図9を参照するものとする。
図11は、マスタカウンタmcと各チャネルのタイムスロットとの関係を示す模式図である。
図11に示すように、電子楽器1では、マスタカウンタmcの上位7ビットが一巡する期間によって1サンプリング周期が定義される。そして、1サンプリング周期内には、マスタカウンタmcの上位7ビットにおける1カウントに対応する128個のタイムスロットが形成されている。なお、マスタカウンタmcの下位4ビットは、夫々のタイムスロットを16フィールドに分割している。
即ち、電子楽器1は、各チャネルのタイムスロットと対応付けられた処理として、エントリデータの出力を実行し、波形のサンプルデータの読み出し及び波形を示すデジタル信号の生成については、バス14の空き状態に対応して、タイミングを選択して行うこととしている。
図12に示すように、各サンプリング周期において、各チャネルに対応するタイムスロットに移行すると、波形生成部100のエントリデータ生成部113が、モードレジスタ102から入力される再生モード値mに従って、次に発生する楽音のデータをメモリ12から読み出すためのエントリデータを生成する。
なお、エントリデータは、当該チャネルの発音が行われている場合にのみ、エントリデータ生成部113によって生成される。
各チャネルのタイムスロットでは、このようなエントリデータの生成とエントリ用RAM220への記憶が必須の処理として対応付けられている。
なお、エントリデータが出力されたタイムスロット以降にメモリ12から読み出しが開始された波形のサンプルデータについて、その後の読み出しの状態によって、バス破綻の検出有無が決定される。
即ち、遅くとも次のサンプリング周期における当該チャネルのタイムスロットまでに波形のサンプルデータの読み出しが完了した場合(詳細は、後述の図16の説明を参照)には、サンプルデータバッファ用RAM250にキャッシュされた状態となり、バス破綻検出部300によるバス破綻は検出されない。
これに対して、次のサンプリング周期における当該チャネルのタイムスロットまでに波形のサンプルデータの読み出しが完了しない場合(詳細は、後述の図17の説明を参照)には、バス破綻検出部300によりバス破綻が検出される。
さらなるバス破綻の検出の詳細については、図14〜図17を参照して後述する。
このような動作により、エントリデータを生成したタイムスロットのほぼ1サンプリング周期後に、楽音が発生することとなる。なお、サンプリング周波数は約44kHzであるため、1サンプリング周期は約0.02msであり、ほぼ遅延なく楽音が再生される。
次に、電子楽器1において実際に楽音が生成される具体例について説明する。
図13は、エントリ用RAM220にエントリデータが記憶される状態を示す模式図である。
以下、図13を参照し、初めにチャネルch3とチャネル10が発音開始され、続いて、チャネル3の発音が停止するとともに、チャネル16が発音開始される例について説明する。
次に、サンプリング周期T2では、エントリ用RAM220のアドレス003及びアドレス004に、発音中であるチャネル3のエントリデータE032及びチャネル10のエントリデータE102が記憶される。
なお、サンプリング周期T2終了時において、書き込みポインタはアドレス005、読み出しポインタはアドレス003を示している。
エントリデータE103では、エントリデータE102に対して、読み出しアドレス“00000104h”と変化している。また、エントリデータE161は、サンプリング周期T3で書き込まれたエントリデータであり、再生モードが16bitPCM、開始フラグ1(発音開始である)、読み出しワード数2、チャネル16、読み出しアドレス“00040000h”であることが示されている。
なお、サンプリング周期T3終了時において、書き込みポインタはアドレス007、読み出しポインタはアドレス005を示している。
図14においては、チャネルch0〜ch127毎に、エントリ出力タイミング、バス破綻判定タイミング、破綻判定フラグ、及び破綻フラグの関係が示されている。また、図14によれば、マスタカウンタmcの上位7ビットが一巡する期間によって1サンプリング周期が定義される。そして、1サンプリング周期内には、マスタカウンタmcの上位7ビットにおける1カウントに対応する128個のタイムスロットが形成されている。この128個のタイムスロットにch0〜ch127の各チャネルの処理が対応している。エントリデータの出力は、発音中のチャネルのみ行われ、エントリデータの出力タイミングは、各チャネル処理の終了タイミング付近となっている。
まず、第n(nは自然数)サンプリング周期において、チャネルch0の処理の終了タイミング付近でエントリデータ生成部113からエントリデータが出力される(図14中の(1))。
エントリデータが出力されると、破綻判定フラグレジスタ302に存在するチャネル0の破綻判定フラグがセットされる(図14中の(2))。
メモリバスインターフェース部240が波形のサンプルデータをメモリ12から受信したことに応じて、破綻判定フラグ制御部301がメモリバスインターフェース部240からサンプル受信完了信号を受信すると、破綻判定フラグレジスタ302に存在するチャネルch0の破綻判定フラグがリセットされる(図14中の(3))。
しかし、破綻判定フラグ制御部301がメモリバスインターフェース部240からサンプル受信完了信号を受信しない場合、破綻判定フラグレジスタ302に存在するチャネルch0の破綻判定フラグはリセットされない。
第(n+1)サンプリング周期のチャネルch0処理が開始される直前で、チャネルch0の破綻判定が行われる(図14中の(4))。このとき、チャネルch0の破綻判定フラグがセットされている場合、破綻フラグレジスタ303に存在するチャネルch0の破綻フラグがセットされ、チャネルch0の破綻判定フラグがセットされていない場合、当該破綻フラグはセットされない。
チャネルchxについて発音停止中なので、チャネルchxのエントリデータは、エントリデータ生成部113から出力されない(図15中の(1))。チャネルxのエントリデータは出力されないので、チャネルxの破綻判定フラグはセットされない(図15中の(2))。したがって、次のサンプリング周期のチャネルx処理が開始される直前で、チャネルxの破綻判定が行われても、チャネルxの破綻フラグはセットされない(図15中の(3))。次サンプリング周期においてもエントリデータは出力されない(図15中の(4))。
チャネルxについて発音継続中なので、チャネルxのエントリデータが、エントリデータ生成部113から出力される(図16中の(1))。チャネルxのエントリデータが出力されるので、チャネルxの破綻判定フラグがセットされる(図16中の(2))。次サンプリング周期に移行する前にチャネルxの波形のサンプルデータの受信が完了されるので(図16中の(3))、チャネルxの破綻判定フラグがリセットされる(図16中の(4))。したがって、次のサンプリング周期のチャネルx処理が開始される直前で、チャネルxの破綻判定が行われても、チャネルxの破綻フラグはセットされない(図16中の(5))。発音継続中なので、次サンプリング周期においてチャネルxのエントリデータが出力される(図16中の(6))。
チャネルxについて発音継続中なので、チャネルxのエントリデータが、エントリデータ生成部113から出力される(図17中の(1))。チャネルxのエントリデータが出力されるので、チャネルxの破綻判定フラグがセットされる(図17中の(2))。さらに、チャネルxの波形のサンプルデータをリクエストする(図17中の(3))。次のサンプリング周期のチャネルx処理が開始される直前になっても波形のサンプルデータの受信が完了されないので、チャネルxの破綻判定フラグがセットされたままとなり、チャネルxの破綻フラグがセットされる(図17中の(4))。したがって、次サンプリング周期においてチャネルxのエントリデータが出力されないよう制御される(図16中の(5))。
次に、上述の動作を実現する電子楽器1の処理アルゴリズムについて説明する。
電子楽器1の処理アルゴリズムは、エントリデータ生成処理と、波形生成処理と、バス破綻検出処理の主に3つによって構成され、これら3つの処理が相互に連携し合って上述の動作を実現している。なお、これら3つの相互の処理関係は、図21の対応するステップを参照することで容易に理解することが可能である。
図18は、エントリデータ生成処理を示すフローチャートである。
エントリデータ生成処理は、楽音発生装置20の波形生成部100によって実行され、電子楽器1の電源ONとともに開始された後、電源OFFとなるまで繰り返し実行される。
当該タイムスロットに対応するチャネルの発音がない場合、ステップS2においてNOと判定されて、処理はステップS7に移行する。
該タイムスロットに対応するチャネルの破綻情報を受信した場合、ステップS3においてYESと判定されて、処理はステップS7に移行する。これにより、当該タイムスロットに対応するチャネルの破綻情報を受信した場合には、ステップS4〜S6までの処理が実行されないので、当該タイムスロットに対応するチャネルのエントリデータが出力されないように制御できる。
一方、当該タイムスロットに対応するチャネルの破綻情報を受信していない場合、ステップS3においてNOと判定されて、処理はステップS4に移行する。
ステップS5において、波形生成部100は、発音されているチャネルのエントリリクエストを破綻判定フラグ制御部301に出力する。同時に、波形生成部100は、ステップS4にて生成したエントリデータを破綻判定フラグ制御部301に出力する。
ステップS6において、波形生成部100は、エントリ用RAM220にエントリデータを記憶する。このとき、書き込みポインタが示しているエントリ用RAM220のアドレスにエントリデータが書き込まれる。
1サンプリング周期において、最終チャネルのタイムスロットが終了していない場合、ステップS7においてNOと判定されて、処理はステップS1に移行する。
これに対し、1サンプリング周期において、最終チャネルのタイムスロットが終了した場合、ステップS7においてYESと判定されて、処理はステップS8に移行する。
このようなステップS8の処理が終了すると、エントリデータ生成処理は終了となる。
図18においては、波形生成指示の処理(ステップS8)を全チャネル分のエントリデータ生成終了後に実行しているが、この処理はこれより以前のタイムスロット区間内の所定の決められたタイミングで行うようにしてもよい。
図19は、波形生成処理を示すフローチャートである。
波形生成処理は、楽音発生装置20の波形メモリインターフェース部200によって実行され、電子楽器1の電源ONとともに開始された後、電源OFFとなるまで繰り返し実行される。
ステップS12において、波形メモリインターフェース部200は、空き状態に応じたチャネル数分のエントリデータをエントリ用RAM220から読み出す。このとき、読み出しポインタが示しているエントリ用RAM220のアドレスからエントリデータが順に読み出される。
ステップS15において、波形メモリインターフェース部200は、読み出しが完了した場合(ステップS14においてその旨の判定がなされた場合)にのみ、メモリ12から読み出した波形のサンプルデータをサンプルデータバッファ用RAM250に記憶する。
ステップS16において、波形メモリインターフェース部200は、読み出しが完了した場合(ステップS14においてその旨の判定がなされた場合)にのみ、サンプル受信完了信号を破綻判定フラグ制御部301出力する。また、この場合、波形メモリインターフェース部200は、サンプル受信完了チャネル番号も破綻判定フラグ制御部301に出力する。したがって、破綻判定フラグレジスタ302の該当チャネルのフラグ領域は「LOW」となる。
一方、該当チャネルからエントリデータが出力されたにもかかわらず、メモリ12から波形のサンプルデータの読み出しが完了していない場合には、サンプル受信完了信号及びサンプル受信完了チャネル番号のいずれも破綻判定フラグ制御部301に出力されないので、破綻判定フラグレジスタ302の該当チャネルのフラグ領域は「HIGH」のままとなる。
ステップS17において、波形メモリインターフェース部200は、1サンプリング周期における全チャネル分の波形のサンプルデータについてメモリ12からの読み出し処理を実行したか否かの判定を行う。
これに対し、1サンプリング周期における全チャネル分の波形のサンプルデータについてメモリ12からの読み出し処理を実行した場合、ステップS17においてYESと判定されて、処理はステップ18に移行する。
これにより、ミキサ21によって各チャネルの楽音が合成され、図示していないDAC
(Digital To Analog Converter)を経て、スピーカ等から楽音が出力される。
図20は、バス破綻検出処理を示すフローチャートである。
バス破綻検出処理は、楽音発生装置20のバス破綻検出部300によって実行され、電子楽器1の電源ONとともに開始された後、電源OFFとなるまで繰り返し実行される。また、バス破綻検出処理は、1サンプリング周期において、チャネルch0〜127までの各チャネルについて実行される。
受信した場合、ステップS21においてYESと判定されて、処理はステップS22に移行する。
ステップS23において、バス破綻検出部300は、メモリバスインターフェース部240からサンプル受信完了信号を受信したか否かを判定する。
受信した場合、ステップS23においてYESと判定されて、処理はステップS24に移行する。
ステップS24において、バス破綻検出部300は、該当チャネルの破綻判定フラグをリセットする。即ち、バス破綻検出部300は、破綻判定フラグレジスタ302の該当チャネルに対応するフラグ領域を「LOW」にする。
このステップS21〜S24の処理を繰り返している最中に、以下に述べるステップS25〜S28の処理を並行して行う。
まず、ステップS25において、バス破綻検出部300は、該当チャネルの破綻判定タイミングであるか否か、即ち、次のサンプリング周期の該当チャネルのチャネル処理が開始される直前であるか否かを判断する。
該当チャネルの破綻判定タイミングでない場合、ステップS25においてNOと判定されて、処理はステップS25に戻され、YESと判定されるまで、ステップS25の処理が繰り返される。
これに対し、該当チャネルの破綻判定タイミングである場合、ステップS25において、YESと判定されて、処理はステップS26に移行する。
該当チャネルの破綻判定フラグがセット中でない場合、ステップS26においてNOと判定されて、再びステップS25の処理に戻る。
これに対し、該当チャネルの破綻判定フラグがセット中である場合、ステップS26においてYESと判断されて、処理はステップS27に移行する。
ステップS27において、バス破綻検出部300は、該当チャネルの破綻フラグをセットする。即ち、バス破綻検出部300は、破綻フラグレジスタ303の該当チャネルに対応するフラグ領域を「HIGH」にする。
ステップS28において、バス破綻検出部300は、インタラプト信号をCPU11に出力するとともに、破綻情報を波形生成部100に出力して、再びステップS25の処理に戻る。
そして、電子楽器1は、発音が行われている各チャネルについて、当該チャネルのタイムスロットにおいては、メモリ12の読み出しアドレスを示すエントリデータの生成を行い、エントリ用RAM220に記憶する。
さらに、破綻判定タイミングの経過時点において、各チャネルに対応する破綻判定フラグが「HIGH」である場合に、バス14のオーバーフローであるバス破綻が生じたことを検出して各チャネルに対応する破綻フラグを「HIGH」にする。
そして、破綻フラグが「HIGH」である場合、各チャネルに対応する波形のサンプルデータのエントリリクエストに対応する各チャネルの発音に関して、エントリデータの生成を行わない、発音を停止させる等の所定の制御を実行する。
例えば、本発明は、発音機能を有する電子機器一般に適用することができる。具体的には、例えば、本発明は、ノート型のパーソナルコンピュータ、携帯端末、ポータブルゲーム機等に適用可能である。
換言すると、図2,3,5,10の構成は例示に過ぎず、特に限定されない。即ち、上述した一連の処理を全体として実行できる機能が楽音発生装置20に備えられていれば足り、この機能を実現するためにどのような機能ブロックを用いるのかは特に図2,3,5,10の例に限定されない。
また、1つの機能ブロックは、ハードウェア単体で構成してもよいし、ソフトウェア単体で構成してもよいし、それらの組み合わせで構成してもよい。
コンピュータは、専用のハードウェアに組み込まれているコンピュータであってもよい。また、コンピュータは、各種のプログラムをインストールすることで、各種の機能を実行することが可能なコンピュータ、例えば汎用のパーソナルコンピュータであってもよい。
また、本明細書において、システムの用語は、複数の装置や複数の手段等により構成される全体的な装置を意味するものとする。
[付記1]
夫々割り当てられた波形データに基づき、所定の順序で楽音生成処理を行う複数の発音チャネルと、
当該複数の発音チャネル内の指定された発音チャネルに割り当てられるべき波形データの読み出し要求を受信した場合に、バスで接続されたメモリに記憶された波形データを読み出す読み出し手段と、
前記読み出し手段による前記波形データの読み出しが、前記指定された発音チャネルにおける楽音生成処理の開始前に完了されたか否かを判定する読み出し判定手段と、
前記読み出し判定手段により前記波形データの読み出しが完了しなかったと判定された場合に、前記指定された発音チャネルの発音に関して所定の制御を実行する制御手段と、
を備える楽音発生装置。
[付記2]
前記読み出し判定手段は、
前記発音チャネルに対応する前記波形データの読み出し要求を受信したことに応じて、前記発音チャネルに対応する第1フラグをオンにする第1フラグオン手段と、
前記読み出し判定手段によって前記波形データの読み出しが前記楽音生成処理の開始前に完了されたと判定された場合に、前記発音チャネルに対応する前記第1フラグをオフにする第1フラグオフ手段と、
前記楽音生成処理の開始時点において、前記発音チャネルに対応する前記第1フラグがオンである場合に、前記バスがオーバーフローしたことを検出して前記発音チャネルに対応する第2フラグをオンにする第2フラグオン手段と、
を有し、
前記制御手段は、
前記第2フラグがオンである場合、前記波形データの読み出し要求に対応する前記発音チャネルの発音に関して前記所定の制御を実行する、
付記1に記載の楽音発生装置。
[付記3]
前記制御手段は、前記所定の制御として、前記指定された発音チャネルにより発音すべき楽音を停止させる、
付記1に記載の楽音発生装置。
[付記4]
夫々割り当てられた波形データに基づき、所定の順序で楽音生成処理を行う複数の発音チャネルを有する楽音発生装置が実行する楽音発生方法であって、
当該複数の発音チャネル内の指定された発音チャネルに割り当てられるべき波形データの読み出し要求を受信した場合に、バスで接続されたメモリに記憶された波形データを読み出す読み出しステップと、
前記読み出しステップによる前記波形データの読み出しが、前記指定された発音チャネルにおける楽音生成処理の開始前に完了されたか否かを判定する読み出し判定ステップと、
前記読み出し判定ステップにより前記波形データの読み出しが完了しなかったと判定された場合に、前記指定された発音チャネルの発音に関して所定の制御を実行する制御ステップと、
を含む楽音発生方法。
[付記5]
夫々割り当てられた波形データに基づき、所定の順序で楽音生成処理を行う複数の発音チャネルを有する楽音発生装置として用いられるコンピュータに、
当該複数の発音チャネル内の指定された発音チャネルに割り当てられるべき波形データの読み出し要求を受信した場合に、バスで接続されたメモリに記憶された波形データを読み出す読み出しステップと、
前記読み出しステップによる前記波形データの読み出しが、前記指定された発音チャネルにおける楽音生成処理の開始前に完了されたか否かを判定する読み出し判定ステップと、
前記読み出し判定ステップにより前記波形データの読み出しが完了しなかったと判定された場合に、前記指定された発音チャネルの発音に関して所定の制御を実行する制御ステップと、
を実行させるプログラム。
Claims (4)
- 夫々割り当てられた波形データに基づき、所定の順序で楽音生成処理を行う複数の発音チャネルと、
当該複数の発音チャネル内の指定された発音チャネルに割り当てられるべき波形データの読み出し要求を受信した場合に、バスで接続されたメモリに記憶された波形データを読み出す読み出し手段と、
前記発音チャネルに対応する前記波形データの読み出し要求を受信したことに応じて、前記発音チャネルに対応する第1フラグをオンにする第1フラグオン手段と、
前記読み出し手段によって前記波形データの読み出しが完了されたと判定された場合に、前記発音チャネルに対応する前記第1フラグをオフにする第1フラグオフ手段と、
前記楽音生成処理開始のタイミングにおいて、前記発音チャネルに対応する前記第1フラグがオフである場合には前記波形データの読み出し要求に対応する前記発音チャネルでの楽音生成処理を開始させるとともに、前記第1フラグがオンである場合には前記発音チャネルでの楽音生成処理を開始させないように制御する制御手段と、
を備える楽音発生装置。 - 夫々割り当てられた波形データに基づき、所定の順序で楽音生成処理を行う複数の発音チャネルを有する楽音発生装置が実行する楽音発生方法であって、
当該複数の発音チャネル内の指定された発音チャネルに割り当てられるべき波形データの読み出し要求を受信した場合に、バスで接続されたメモリに記憶された波形データを読み出す読み出しステップと、
前記発音チャネルに対応する前記波形データの読み出し要求を受信したことに応じて、前記発音チャネルに対応する第1フラグをオンにする第1フラグオンステップと、
前記読み出しステップによって前記波形データの読み出しが完了されたと判定された場合に、前記発音チャネルに対応する前記第1フラグをオフにする第1フラグオフステップと、
前記楽音生成処理開始のタイミングにおいて、前記発音チャネルに対応する前記第1フラグがオフである場合には前記波形データの読み出し要求に対応する前記発音チャネルでの楽音生成処理を開始させるとともに、前記第1フラグがオンである場合には前記発音チャネルでの楽音生成処理を開始させないように制御する制御ステップと、
を含む楽音発生方法。 - 夫々割り当てられた波形データに基づき、所定の順序で楽音生成処理を行う複数の発音チャネルを有する楽音発生装置として用いられるコンピュータに、
当該複数の発音チャネル内の指定された発音チャネルに割り当てられるべき波形データの読み出し要求を受信した場合に、バスで接続されたメモリに記憶された波形データを読み出す読み出しステップと、
前記発音チャネルに対応する前記波形データの読み出し要求を受信したことに応じて、前記発音チャネルに対応する第1フラグをオンにする第1フラグオンステップと、
前記読み出しステップによって前記波形データの読み出しが完了されたと判定された場合に、前記発音チャネルに対応する前記第1フラグをオフにする第1フラグオフステップと、
前記楽音生成処理開始のタイミングにおいて、前記発音チャネルに対応する前記第1フラグがオフである場合には前記波形データの読み出し要求に対応する前記発音チャネルでの楽音生成処理を開始させるとともに、前記第1フラグがオンである場合には前記発音チャネルでの楽音生成処理を開始させないように制御する制御ステップと、
を実行させるプログラム。 - 請求項1に記載の楽音発生装置と、
鍵盤と、
前記鍵盤に対して行われた押鍵操作に対応した楽音の発生を、前記楽音発生装置に指示する制御部と、
を有する電子楽器。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012151597A JP5915420B2 (ja) | 2012-07-05 | 2012-07-05 | 楽音発生装置、楽音発生方法、電子楽器及びプログラム |
US13/923,848 US9000284B2 (en) | 2012-07-05 | 2013-06-21 | Musical sound generation device, musical sound generation method, and storage medium |
CN201310280888.4A CN103531193B (zh) | 2012-07-05 | 2013-07-05 | 乐音产生装置以及乐音产生方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012151597A JP5915420B2 (ja) | 2012-07-05 | 2012-07-05 | 楽音発生装置、楽音発生方法、電子楽器及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014016378A JP2014016378A (ja) | 2014-01-30 |
JP5915420B2 true JP5915420B2 (ja) | 2016-05-11 |
Family
ID=49877528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012151597A Active JP5915420B2 (ja) | 2012-07-05 | 2012-07-05 | 楽音発生装置、楽音発生方法、電子楽器及びプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US9000284B2 (ja) |
JP (1) | JP5915420B2 (ja) |
CN (1) | CN103531193B (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014092722A (ja) * | 2012-11-05 | 2014-05-19 | Yamaha Corp | 音発生装置 |
JP6447024B2 (ja) | 2014-11-07 | 2019-01-09 | カシオ計算機株式会社 | 楽音発生装置、処理方法、プログラムおよび電子楽器 |
JP6607369B2 (ja) * | 2015-03-23 | 2019-11-20 | カシオ計算機株式会社 | 信号処理装置、信号処理方法、プログラムおよび電子楽器 |
JP6904141B2 (ja) * | 2017-07-28 | 2021-07-14 | カシオ計算機株式会社 | 楽音発生装置、方法、プログラム、及び電子楽器 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4348928A (en) * | 1976-09-24 | 1982-09-14 | Kabushiki Kaishi Kawai Gakki Seisakusho | Electronic musical instrument |
JP2580814B2 (ja) * | 1990-01-05 | 1997-02-12 | ヤマハ株式会社 | 楽音信号発生装置 |
US5243658A (en) * | 1990-08-10 | 1993-09-07 | Casio Computer Co., Ltd. | Modulation effect adding apparatus |
US5861567A (en) * | 1996-03-05 | 1999-01-19 | Yamaha Corporation | Music computer saving abnormal tone generation by hangup |
US5689080A (en) * | 1996-03-25 | 1997-11-18 | Advanced Micro Devices, Inc. | Computer system and method for performing wavetable music synthesis which stores wavetable data in system memory which minimizes audio infidelity due to wavetable data access latency |
JP3163984B2 (ja) * | 1996-06-28 | 2001-05-08 | ヤマハ株式会社 | 楽音発生装置 |
JP2003157082A (ja) * | 2001-11-20 | 2003-05-30 | Matsushita Electric Ind Co Ltd | 楽音合成装置 |
JP3878485B2 (ja) * | 2002-01-11 | 2007-02-07 | ローランド株式会社 | 波形再生装置 |
EP1580729B1 (en) * | 2004-03-26 | 2008-02-13 | Yamaha Corporation | Sound waveform synthesizer |
CN2762269Y (zh) * | 2004-12-29 | 2006-03-01 | 方泰有限公司 | 移动音频处理器 |
US20080163744A1 (en) * | 2007-01-09 | 2008-07-10 | Yamaha Corporation | Musical sound generator |
JP2010139592A (ja) * | 2008-12-10 | 2010-06-24 | Casio Computer Co Ltd | 楽音発生装置および楽音発生プログラム |
JP5534389B2 (ja) * | 2009-03-31 | 2014-06-25 | ヤマハ株式会社 | 楽音生成装置 |
-
2012
- 2012-07-05 JP JP2012151597A patent/JP5915420B2/ja active Active
-
2013
- 2013-06-21 US US13/923,848 patent/US9000284B2/en active Active
- 2013-07-05 CN CN201310280888.4A patent/CN103531193B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN103531193B (zh) | 2016-08-17 |
JP2014016378A (ja) | 2014-01-30 |
US20140007754A1 (en) | 2014-01-09 |
CN103531193A (zh) | 2014-01-22 |
US9000284B2 (en) | 2015-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5614420B2 (ja) | 楽音発生装置、電子楽器、プログラム及び楽音発生方法 | |
JPS6147435B2 (ja) | ||
JP5915420B2 (ja) | 楽音発生装置、楽音発生方法、電子楽器及びプログラム | |
CN105590620B (zh) | 处理装置、处理方法以及电子乐器 | |
WO2001065536A1 (fr) | Generateur de sons musicaux | |
JPH1020860A (ja) | 楽音発生装置 | |
KR100236686B1 (ko) | 데이터 샘플열 액세스 장치 | |
JPH07121181A (ja) | 音声情報処理装置 | |
JP2950461B2 (ja) | 楽音発生装置 | |
JP4096952B2 (ja) | 楽音発生装置 | |
JP3137043B2 (ja) | 波形メモリ音源装置および楽音発生装置 | |
JP4353225B2 (ja) | 楽音形成装置 | |
JP3723973B2 (ja) | 音源装置 | |
JP3832382B2 (ja) | 楽音生成装置及びプログラム | |
JP2003330469A (ja) | 楽音生成装置及びプログラム | |
JP3148803B2 (ja) | 音源装置 | |
JP4144090B2 (ja) | 楽音発生装置 | |
JP3858905B2 (ja) | メモリ使用音源装置 | |
JP2956552B2 (ja) | 楽音発生方法および装置 | |
JP3695404B2 (ja) | 波形処理デバイス | |
JPH07168574A (ja) | 波形メモリ音源 | |
JP3705203B2 (ja) | 楽音発生方法 | |
JP2905905B2 (ja) | 楽音発生装置 | |
JPH0850486A (ja) | サウンドデータアクセス装置、サンプリングデータ列補間装置、サンプリングデータ列アクセス装置、およびサンプリングデータ列補間方法、ならびにサウンドデータアクセス装置を用いたマルチメディア機器、および電子楽器 | |
JPH11203129A (ja) | ディジタル信号処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140919 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150423 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150602 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150730 |
|
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: 20160308 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160321 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5915420 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |