JP4207914B2 - 波形データ処理装置 - Google Patents

波形データ処理装置 Download PDF

Info

Publication number
JP4207914B2
JP4207914B2 JP2005090763A JP2005090763A JP4207914B2 JP 4207914 B2 JP4207914 B2 JP 4207914B2 JP 2005090763 A JP2005090763 A JP 2005090763A JP 2005090763 A JP2005090763 A JP 2005090763A JP 4207914 B2 JP4207914 B2 JP 4207914B2
Authority
JP
Japan
Prior art keywords
data
reproduction
sound
block
track
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
JP2005090763A
Other languages
English (en)
Other versions
JP2006277783A (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.)
Yamaha Corp
Original Assignee
Yamaha 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 Yamaha Corp filed Critical Yamaha Corp
Priority to JP2005090763A priority Critical patent/JP4207914B2/ja
Priority to US11/391,866 priority patent/US7259314B2/en
Publication of JP2006277783A publication Critical patent/JP2006277783A/ja
Application granted granted Critical
Publication of JP4207914B2 publication Critical patent/JP4207914B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

本発明は、ハードディスク等の記録媒体を用いて波形データを記録・再生する装置に用いて好適な波形データ処理装置に関する。
ハードディスクに記録した複数トラックの波形データをバッファメモリに読み込み再生するとともに、バッファメモリに書き込まれた波形データをハードディスクに記録する装置であるハードディスクレコーダが特許文献1に開示されている。該装置においては、一の楽曲(ソング)を構成する各トラック毎に、バッファメモリ内にトラック領域が割り当てられ、各トラック領域は各々がハードディスクの「1」クラスタ相当量のメモリ容量を有する複数のバッファ領域から構成されている。そして、あるトラックのバッファ領域の再生が終了すると、そのバッファ領域に対してハードディスクから新たな波形データを転送しつつ他のバッファ領域を再生することにより、一連の波形データを連続的に読み込みつつ再生することができる。
また、特許文献1の技術においては、波形データとソング管理データとによって楽曲の内容が特定される。ここで、ソング管理データとは、波形データのうち実際に再生すべき一または複数の範囲(リージョン)と、これら各リージョンの再生タイミングとを規定するものである。これにより、一連の波形データのうちある部分を切り詰めたり、継ぎ足したりして楽曲を編集する場合には、実際に波形データそのものを編集する必要はなく、ソング管理データを編集すればよいことになる。
特開2003−323174号公報
ところで、上述した技術においては、あるトラック領域に対してハードディスクから新たな波形データを転送する条件は、「当該トラック領域中のあるバッファ領域の再生が完了したこと」のみである。そして、複数のトラックにおいて各トラック内の何れかのバッファ領域の再生が完了した場合には、再生の完了が発生した順に各トラック領域に波形データが転送されていた。かかる動作は、各トラック領域内において未だ再生が完了していないサンプル数が充分に確保できる場合には、全く支障の無いものであった。しかし、波形データとソング管理データとによって楽曲の内容を特定する以上、「1クラスタ」内の波形データがバッファ領域に転送されたとしても、必ずしも該波形データが全て再生されるのではなく、該波形データのうちソング管理データによって指定された再生範囲のみが再生されることになる。
ここで、未だ再生されていない波形データの再生範囲がきわめて短いトラックが存在すると、当該波形データの再生時間もきわめて短いものになり、次に必要な波形データの転送がかかる再生時間内に間に合わなくなる可能性がある。このような事態を避けるため、特許文献1の技術においては、再生範囲のきわめて短いクラスタを解消するように波形データを頻繁に再編成する必要があり、かかる作業はきわめて煩雑であった。
この発明は上述した事情に鑑みてなされたものであり、再生範囲のきわめて短いクラスタが存在した場合においても、波形データを支障なく再生できる波形データ処理装置を提供することを目的としている。
上記課題を解決するため本発明にあっては、下記構成を具備することを特徴とする。なお、括弧内は例示である。
請求項1記載の波形データ処理装置にあっては、クラスタを記憶単位として音データを記憶する第1の記憶装置(30,102)と、所定の順序(HEAD領域、TAIL領域およびアルファベット順)で音データの再生に使用され複数の記憶領域であって、それぞれ1クラスタ分の音データを記憶でき、かつ、再生範囲(Dest_X,Tar_X)の設定と有音または無音を示す設定とが可能な複数の記憶領域(バッファ領域A〜F)を有し、第1の記憶装置よりアクセス速度の速い第2の記憶装置(50)と、1つのトラックにおいて順次再生すべき有音または無音の複数のブロックを示す管理データ(104,106)であって、有音のブロックに関しては、前記第1の記憶装置に記憶されている1クラスタの音データとその内の再生すべき音データの範囲とを指示し、無音のブロックに関しては、その時間長を指示する(リージョンデータが存在しない区間の長さによって、無音ブロックの時間長を特定する)管理データを記憶する第3の記憶装置(30)と、前記所定の順序で前記複数の記憶領域の再生を行う再生手段であって、有音を示す設定がされている記憶領域に関しては、当該記憶領域に設定された前記再生範囲の音データの再生を行い、無音を示す設定がされている記憶領域に関しては、設定された前記再生範囲に相当する無音の音データの再生を行う再生手段(62,64)と、順次、前記再生手段による再生が終了した前記第2記憶手段の記憶領域に対して前記管理データ(104,106)に基づき次のブロックの再生準備を行う次ブロック準備手段であって、前記管理データが示す次のブロックが有音のブロックであれば、該管理データに従い、次のブロックの1クラスタの音データを前記第1の記憶装置(30,102)から読み出して当該再生が終了した記憶領域に転送して、該記憶領域に再生範囲(Dest_X,Tar_X)の設定と有音を示す設定とを行(SP34)、前記管理データが示す次のブロックが無音のブロックであれば、該管理データに従い、当該再生が終了した記憶領域に再生範囲を示す設定と無音を示す設定とを行う次ブロック準備手段(SP20〜SP34)とを有することを特徴とする。
また、請求項2記載の波形データ処理装置にあっては、クラスタを記憶単位として音データを記憶する第1の記憶装置(30,102)と、所定の順序(HEAD領域、TAIL領域およびアルファベット順)で音データの再生に使用される複数の記憶領域であって、それぞれ1クラスタ分の音データを記憶でき、かつ、有音または無音を示す設定が可能な複数の記憶領域(バッファ領域A〜F)を有し、第1の記憶装置よりアクセス速度の速い第2の記憶装置(50)と、1つのトラックにおいて順次再生すべき複数の有音乃至無音のブロックを示す管理データであって、有音のブロックに関しては、前記第1の記憶装置に記憶されている1クラスタの音データととそのブロックの有音とを示し(リージョンデータによって特定し)、無音のブロックに関しては、そのブロックの無音を示す(リージョンデータが存在しない区間の長さによって、無音ブロックの時間長を特定する)管理データを記憶する第3の記憶装置(30,104,106)と、前記所定の順序で前記複数の記憶領域の再生を行う再生手段であって、有音を示す設定がされている記憶領域に関しては当該記憶領域に記憶されている音データの再生を行い、無音を示す設定がされている記憶領域に関しては無音の音データの再生を行う再生手段(62,64)と、順次、前記再生手段による再生が終了した前記第2記憶手段の記憶領域に対して前記管理データに基づき次のブロックの再生準備を行う次ブロック準備手段であって、前記管理データ次のブロックの有音を示していれば、該管理データが指示する1クラスタの音データを前記第1の記憶装置から読み出して、当該再生が終了した記憶領域に転送して有音を示す設定を行い(SP34)、前記管理データ次のブロックの無音を示していれば、当該再生が終了した記憶領域に無音を示す設定を行う(SP30)次ブロック準備手段(SP20〜SP34)とを有することを特徴とする。
また、請求項3記載の波形データ処理装置にあっては、複数トラックの音データを同時に再生する波形データ処理装置であって、クラスタを記憶単位として音データを記憶する第1の記憶装置(30)と、各トラックにおいて所定の順序(HEAD領域、TAIL領域およびアルファベット順)で音データの再生に使用され複数の記憶領域であって、それぞれ1クラスタ分の音データを記憶でき、かつ、再生範囲(Dest_X,Tar_X)の設定と有音または無音を示す設定とが可能な複数の記憶領域(バッファ領域A〜F)を前記複数トラック分有し、第1の記憶装置よりアクセス速度の速い第2の記憶装置(50)と、前記各トラックにおいて順次再生すべき複数の有音または無音のブロックを示す管理データであって、有音のブロックに関しては、前記第1の記憶装置に記憶されている1クラスタの音データとその内の再生すべき音データの範囲とを指示し、無音のブロックに関しては、その時間長を指示する管理データを複数トラック分記憶する第3の記憶装置(30,104,106)と、前記複数のトラックの各々について、前記所定の順序で前記複数の記憶領域の再生を行う再生手段であって、有音を示す設定がされている記憶領域に関しては、前記各記憶領域の設定された前記再生範囲の音データの再生を行い、無音を示す設定がされている記憶領域に関しては、設定された前記再生範囲に相当する無音の音データの再生を行う再生手段(62,64)と、前記複数のトラックのうちの前記再生が終了した記憶領域が存在するトラックについて、当該再生が終了した記憶領域に対して当該トラックの前記管理データに基づき次のブロックの再生準備を行う(SP30,SP34)次ブロック準備手段であって、当該トラックの前記管理データが示す次のブロックが有音のブロックであれば、該管理データに従い、次のブロックの1クラスタの音データを前記第1の記憶装置から読み出して当該再生が終了した記憶領域に転送し、該記憶領域に再生範囲の設定と有音を示す設定とを行い、当該トラックの前記管理データが示す次のブロックが無音のブロックであれば、該管理データに従い、当該再生が終了した記憶領域に再生範囲を示す設定と無音を示す設定とをを行う次ブロック準備手段(SP20〜SP34)とを有し、前記次ブロック準備手段は、前記再生が終了した記憶領域が存在するトラックが複数あった場合、それらのトラックのうちの、未再生の記憶領域の再生すべき音データが少ないトラックの順(SP24:サンプル数が最小のトラック順)、または、未再生の記憶領域の数が少ないトラックの順(変形例(1):残存ブロック数が最小であるトラックの順)に、次のブロックの再生準備を行うことを特徴とする。
さらに、請求項4記載の構成にあっては、請求項1ないし7の何れかに記載の波形データ処理装置において、前記複数の記憶領域は、3以上の記憶領域であることを特徴とする。
このように、本発明によれば、各トラックのうち未再生のサンプル数が少ないトラックの順、または未再生のデータ単位が少ないトラックの順に、第1の記憶装置から各トラック領域に対して対応する波形データを転送するから、何れかのトラックにおいて再生範囲のきわめて短い波形データが存在した場合においても、これに続く波形データを速やかに補充することができ、波形データを支障なく再生することができる。
また、3以上の複数の記憶領域を用いて再生を行う構成によれば、準備から再生までの時間的余裕が2ブロック以上有り、ある瞬間のブロックの再生時間が短くて、その再生開始から終了までに1ブロックの準備ができなかったとしても、再生が破綻しない。また、複数の記憶領域の再生順序を予め決定する構成によれば、次ブロックの準備は、再生の終わった記憶領域に1クラスタ分の音データを転送して再生範囲を設定するだけでよい。
また、複数の記憶領域に、それぞれ個別に有音乃至無音の再生設定を行う構成によれば、ある瞬間の無音ブロックの再生時間が極端に短い場合であっても、その次のブロックの有音乃至無音の再生設定が遅れて再生が破綻することがない。
また、次ブロック準備手段によって、未再生の記憶領域の再生すべき音データが少ないトラックの順、または、未再生の記憶領域の数が少ないトラックの順に、次のブロックの再生準備を行う構成によれば、破綻の起こる可能性の高いトラックから順に次ブロックの準備を行うので、再生の破綻が一層起こりにくくなる。
1.実施例のデータ構成
次に、本発明の一実施例のハードディスクレコーダについて説明するが、最初に、本実施例に採用されているソングデータの構成を図2(a),(b)を参照し説明する。
図2(a)は後述するハードディスクに適用されるメモリマップである。図においてハードディスクには、システムに共通の各種管理データを格納する管理データ領域100と、波形データの実体を格納する音データ部102と、この音データ部102に含まれる波形データのアドレス等を指定することにより、楽曲(ソング)の内容を規定するソング管理データ104,106,……とから構成されている。
なお、ソング管理データ104,106,……は、楽曲の数だけ記憶されるが、音データ部102は全ソングに対して共通である。これにより、複数のソングに使用される波形データを重複して記憶することなく流用することができる。ハードディスクにおいては「クラスタ」を単位として波形データ等が記録されているが、本実施例において「1」クラスタは「128kバイト」から構成されている。従って、サンプリング周期「48kHz」、分解能「16ビット」の波形データであれば、凡そ「1.5秒」の波形データを「1」クラスタに記憶させることができる。
次に、これらソング管理データの構造を図2(b)を参照し説明する。各ソング管理データは最大「16」のトラックの内容を規定するトラックデータ108−1〜108−16を有している。そして、各トラックデータは、最大「8」の仮想トラックデータ110−1〜110−8から構成されている。ここで、各トラックデータにおいては、実際に録音・再生に供される一の仮想トラックが指定されている。換言すれば、ある「トラック」に対して録音または再生が実行されるときは、実際には、この指定された何れかの「仮想トラック」に対して録音または再生が実行されることになる。
ここで、ある仮想トラックに着目すると、この仮想トラックの時間軸上には、ほぼ連続的に楽音の波形データが存在する区間と、実質的に楽音が存在しない区間とが存在する。前者の区間を「リージョン」と呼び、後者の区間を「ミュート区間」と呼ぶ。そこで、本実施例においては、各リージョンについてのみ該リージョンの内容を特定するデータを記録することとし、特にリージョンが存在しない区間は全てミュート区間であることとしている。各仮想トラックデータは、このリージョンの内容を規定する一または複数のリージョンデータ112−1,112−2,……から構成されている。そして、各リージョンデータは、一または複数のノードデータ114−1,114−2,……から構成されている。ところで、リージョンデータにおいては、ソング内の各種タイミングが規定されるが、本実施例においてはリージョンデータ内のタイミングは「サンプル点」によって表される。ここで、「サンプル点」とは、「ソングの開始タイミングから、何サンプリング周期経過したタイミングかを表すものである。
これらノードデータは、各々音データ部102内における一のクラスタを指標するものであり、各ノードデータがリンクされることによって、対応するリージョンを再生するために必要なクラスタの列が特定されることになる。また、リージョンデータ112−1,112−2,……には、配下の一連のノードデータのうち、先頭のノードデータと、該先頭のノードデータに対するオフセットと、該リージョンの再生開始タイミングと、該リージョンの再生時間とが記録される。このリージョンデータが再生されるとき、最初に先頭のノードデータに係るクラスタの波形データが再生されるが、このクラスタは必ずしも先頭から再生されるわけではなく、クラスタの先頭からオフセット値によって示されたサンプル数だけ後のサンプルから当該クラスタの再生が開始されることになる。なお、図2(b)においては、このオフセットをノードデータ114−1に対する上向きの矢印によって表しておく。
次に、先頭のノードデータの再生が完了すると、この先頭のノードデータにリンクされている他のノードデータが順次連続的に再生されてゆくことになる。ここで、各クラスタの記憶容量は一定であり、各リージョン内においてはリンクされているクラスタの内容が連続的に再生されるから、各ノードデータのリンク状態と、再生開始位置(先頭のノードデータと、該先頭のノードデータに対するオフセットによって特定される位置)と、リージョンの再生時間とが特定されると、このリージョンの再生が終了する再生終了位置が一意に特定される。従って、リージョンの末尾のノードデータに係るクラスタは、必ずしも最後まで再生されるわけではなく、再生終了位置に対応するサンプルまでで再生が終了する。図2(b)においては、この再生終了位置をノードデータ114−3に対する下向きの矢印によって表しておく。
なお、説明の簡略化のため、以下では「16」のトラックで指定されている「16」の仮想トラックのことを単に「トラック」と呼ぶことにする。
2.実施例のハードウエア構成
2.1.全体構成
次に、本発明の一実施例のハードディスクレコーダの構成を図1を参照し説明する。
図1において2は表示器であり、ユーザに対して各種情報を表示する。4はフェーダであり、複数のトラック毎の録音/再生レベルを設定する。6は操作子群であり、録音/再生開始タイミングを設定するJOGダイアル、録音/再生スタートボタン等の各種操作子によって構成されている。8はCPUであり、フラッシュメモリ12に格納されたプログラムに基づいて、バス16を介してハードディスクレコーダ内の各部を制御する。14はRAMであり、CPU8のワークメモリとして使用される。
18はPCインタフェースであり、外部のパーソナルコンピュータに接続され、該パーソナルコンピュータとの間で波形データ等の送受信を行う。20はミキサであり、フェーダ4の操作量等に対応して、最大で再生「16」チャンネル、録音「8」チャンネルの音声信号のミキシング処理を実行する。22は波形入力部であり、外部から供給されたデジタル音声信号をミキサ20に供給する。24は波形出力部であり、ミキサ20から出力された音声信号を外部機器に供給する。28はIDEインタフェースであり、ハードディスク30、CD−RWドライブ32等の読出しおよび書込みを制御する。
ここで、ハードディスク30およびCD−RWドライブ32にセットされるCD−RWには、図2(a)において説明した管理データ領域100、音データ部102、ソング管理データ104,106,……等が格納される。また、IDEインタフェース28内には、少なくともハードディスク30の「1」クラスタの内容を格納できるバッファメモリ28aが設けられている。26は転送制御部であり、ミキサ20およびIDEインタフェース28間の波形データを仲介する。この転送回路26の内部には、波形データを一時的に記憶するためのバッファメモリ50が設けられている。10はDMA制御部であり、CPU8の空き時間においてバス16を介して、ハードディスクレコーダの各部間のデータ通信を実行する。
2.2.転送回路26
2.2.1.転送回路26の回路構成
次に、転送回路26内のバッファメモリ50中に設けられた転送バッファ用領域のメモリマップを図4を参照し説明する。
転送バッファ用領域は、「16」トラックの各々に対応したトラック領域52−0〜52−15から成る。各トラック領域は、さらにバッファ領域A〜Fから成る。各バッファ領域は、原則的にはハードディスク30の「1」クラスタ相当量のメモリ容量を有し、バッファメモリ50内の連続したアドレス領域上に割り当てられる。そして、このバッファ領域を介してハードディスク30に対する読出しまたは書込みが行われることになる。
次に、転送回路26の詳細構成を図3を参照し説明する。図において60はミュート回路であり、バッファメモリ50からデータバス61を介してミキサ20に供給される音声信号を必要に応じてミュートする(レベルを「0」に設定する)。62は録音・再生カウンタであり、録音時にミキサ20から供給されたデータをバッファメモリ50に書き込む際の書込みアドレスおよび再生時にバッファメモリ50の内容をミキサ20に供給する際の読出しアドレスを生成する。本実施例のハードディスクレコーダは、一部のトラックに対して録音を行っている際に同時に他のトラックを再生することができる。従って、録音・再生カウンタ62はこれらの録音中および再生中のトラックの全てに対して時分割で書込み/読出しアドレスを発生させる。ここで、各トラックのサンプリング周期は同一であるから、各サンプリング周期毎に、録音・再生カウンタ62によって各トラックの書込み/読出しアドレスが「1」づつインクリメントされることになる。
66−0〜66−15はCPU8により設定されるトラック対応レジスタ群であり、各トラックに対応して設けられている。トラック対応レジスタ群66−0の内部において70は開始位置レジスタであり、バッファ メモリに格納されている波形データの再生または録音を開始するサンプル点である開始アドレスDest_A〜Dest_Fが設定される。また72は終了位置レジスタであり、バッファメモリに格納されている波形データの再生または録音を終了するサンプル点である終了アドレスTar_A〜Tar_Fが設定される。74はミュートレジスタであり、当該トラックを再生している時に、各開始アドレスDest_A〜Dest_Fから対応する終了アドレスTar_A〜Tar_Fまで区間(区間A〜F)がそれぞれ「ミュート区間」に対応するものであるか否かを表すミュートフラグMUTE_A〜MUTE_Fが設定される。また、バッファ領域A〜Fのうち何れかをXとして、Dest_X,Tar_XおよびMUTE_Xを記憶するレジスタを総称して「レジスタセットReg_X」という。6つのレジスタセットReg_A〜Reg_Fは、各トラックの6つのバッファ領域A〜Fに一対一で対応付けられ制御される。例えば、各開始アドレスDest_A〜Dest_F及び終了アドレスTar_A〜Tar_Fとしてバッファメモリの任意のアドレスを設定可能であるが、後述する通常再生モードでは6つのレジスタセットReg_A〜Reg_Fをバッファ領域A〜Fに対応付け、各開始アドレスDest_A〜Dest_F及び終了アドレスTar_A〜Tar_Fには対応するバッファ領域A〜F内のアドレスを設定するようにしている。そのため、通常再生モードの説明では、トラック対応レジスタに関する制御を、対応するバッファ領域に関する制御として記載する場合がある。
ここで、各バッファ領域A〜Fとミュート区間との関係について説明しておく。上述したように、各仮想トラック内で「リージョン」を構成する区間以外の区間は「ミュート区間」と呼ばれ、音データ部102内には、かかるミュート区間に対応する波形データは存在しない。しかし、本実施例においては、必要な波形データをバッファ領域A〜Fに転送してゆく際、リージョン間のミュート区間が発生したのであれば、かかるミュート区間に対しても「1」クラスタに相当するサンプル数毎に「1」のバッファ領域を割り当て、該ミュート区間が継続する限り、当該バッファ領域を割り当てつつ読み出してゆくこととしている。そこで、各バッファ領域がミュート区間に対応する場合には“1”、ミュート区間に対応しない場合には“0”と設定されるミュートフラグ MUTE_A〜MUTE_Fを各バッファ領域毎に設けたのである。このように、本実施例では「リージョン」と「ミュート区間」の何れにおいても、「1」クラスタ以下の波形データを単位にトラック対応レジスタの制御が行われているが、本明細書ではこの波形データの単位を「ブロック」と呼ぶことにする。前述した「リージョン」と「ミュート区間」が存在する仮想トラックの時間軸は、それぞれ、複数の有音ないし無音の「ブロック」のシーケンスと見ることができる。
上述した録音・再生カウンタ62においては、このミュートレジスタ74が逐次参照され、再生時の読出しアドレスがミュート区間に対応するバッファ領域に係るアドレスであるか否かが逐次判定されている。そして、現在の読出しアドレスがミュート区間に係るものであると判定されると、ミュート回路60に対して音声信号をミュートをするように指令が出力され、これによってミュート区間においてはミキサ20に対する出力音声信号のレベルは常に「0」になる。このように、ミュートフラグMUTE_A〜MUTE_Fによって音声信号がミュートされるのであれば、ミュート区間に対応するバッファ領域の内容はどのようなものであっても差し支えない。従って、例えばミュート区間に対応するバッファ領域を「0」で埋めるような処理が不要になり、ミュート区間に対応する処理をきわめて高速化できるのである。
76はスタート/ストップレジスタであり、対応するトラックの録音/再生を実行するか否かを指定する。スタート/ストップフラグを記憶する。すなわち、該フラグが“1”ならば録音・再生状態、“0”ならば停止状態である。80はカレントバッファレジスタであり、バッファ領域A〜Fのうちカレント点CP の属する領域である「カレント領域」を指定するカレント領域指定値CBuffer を記憶する。すなわち、カレント領域指定値CBuffer は、バッファ領域A〜Fに各々対応して「1」〜「6」の数値の何れかに設定されるが、何れのバッファ領域A〜Fもカレント領域ではない場合には、カレント領域指定値CBuffer は「0」にされる。
ここで、カレント点CP とは、録音・再生等を開始する基準となるサンプル点であり、操作子群6内のJOGダイアル等によって指定される。カレント点CP 自体は全てのトラックに対して共通の値であるが、実際にこのカレント点CP に対応するサンプルがバッファ領域A〜Fの何れに格納されているかは各トラック毎に異なる。そこで、カレント点CP に対応するサンプルが格納されているバッファ領域をトラック毎に独立したカレント領域指定値CBuffer として記憶したものである。78はカレント点レジスタであり、該カレント領域内における、カレント点CP に対応するサンプルが記憶されているアドレスであるカレント点アドレスCPosition を記憶する。
ところで、録音・再生時においてバッファ領域A〜F(レジスタセットReg_A〜Reg_F)のデフォルトの使用順序は「アルファベット順」である。但し、これらバッファ領域のうち、ある領域(レジスタセット)を HEAD、他の領域(レジスタセット)をTAILとして指定しておくと、TAILとして指定された領域の録音・再生(レジスタセットに係る録音・再生)が終了した後にHEADとして指定された領域の録音・再生(レジスタセットに係る録音・再生)を開始させることができる。例えば、バッファ領域AをHEAD領域に指定し、バッファ領域FをTAIL領域に指定しておくと、バッファ領域A〜Fが循環的に使用されることになる。82はHEAD領域指定レジスタであり、バッファ領域A〜Fのうち何れかを必要に応じてHEAD領域として指定する。また、84はTAIL領域指定レジスタであり、バッファ領域A〜Fのうち何れかを必要に応じてTAIL領域として指定する。なお、レジスタ82,84においては「1」〜「6」の数値の何れかによってバッファ領域A〜Fを指定し、HEAD領域およびTAIL領域を指定しない場合にはレジスタ82,84の内容は共に「0」になる。
次に、64は比較器であり、録音・再生カウンタ62によってカウントされている読出しアドレスと、終了位置レジスタ72に記憶されている終了アドレスTar_X(Xはバッファ領域A〜Fのうち何れか)とを比較し、両者の一致を検出すると、その旨を録音・再生カウンタ62に通知する。これにより、録音・再生カウンタ62においては、次に読み出すべきバッファ領域の開始アドレスDest_Y(Yはバッファ領域A〜Fのうちバッファ領域Xの次に使用される領域を表す)に読出しアドレスが修正され、該読出しアドレスのカウントアップが続行される。また、比較器64は、読出しアドレスと終了アドレスTar_Xとの一致を検出すると、CPU8に対して「再生終了割込」という割込を発生させる。
86は転送カウンタであり、録音時にバッファメモリ50からIDEインタフェース28にデータを転送する際の読出しアドレス、および再生時にIDEインタフェース28から供給されたデータをバッファメモリ50に転送する際の書込みアドレスを生成する。以下、これらのアドレスを「転送アドレス」という。90は開始アドレスレジスタであり、該転送アドレスの初期値である開始アドレスSADを格納する。92はトリガレジスタであり、CPU8によってここに “1”が書き込まれると、ハードディスク30ないしCD−RWドライブ32との間のデータ転送が開始され、1アドレス分のデータが転送される毎に、転送カウンタ86によってバッファメモリ50の転送アドレスがカウントアップされる。94は終了アドレスレジスタであり、転送アドレスの最終値である終了アドレスEAD を記憶する。88は比較器であり、転送アドレスの現在値と終了アドレスEAD とを比較し、両者が一致すると転送カウンタ86の動作を停止させ、トリガレジスタ92をゼロクリアする。
また、比較器88においては、転送アドレスとその最終値との一致が検出されると、CPU8に対して「転送終了割込」という割込を発生させる。ハードディスク30は、複数のクラスタのうちの1つをクラスタ番号により指定して、そのクラスタへのアクセス(データ読出ないしデータ書込)を行うようになっており、複数のクラスタへの並列アクセスはできない。そのため、IDEインターフェース28との間のデータ転送を行う回路(86〜94)は、1セットだけ用意されている。次に、68はマルチプレクサであり、録音・再生カウンタ62の出力する書込み/読出しアドレスと、転送カウンタ86の出力する転送アドレスとを調停する。ここで、録音・再生カウンタ62はミキサ20に同期させる必要があるため、そのカウントアップはサンプリング周期毎に実行する必要がある。一方、転送カウンタ86の動作は特にミキサ20に同期させる必要はない。従って、録音・再生カウンタ62によるバッファメモリ50に対するアクセスが優先され、転送カウンタ86によるアクセスは、その空き時間において実行されることになる。このようにして、IDEインタフェース28に対するデータの入出力と、ミキサ20に対するデータの入出力とは時分割多重され並列に実行されることになる。
2.2.2.トラック対応レジスタ群の設定例
次に、トラック対応レジスタ群66−0内における各種レジスタの使用例を図5を参照し説明する。まず、HEAD領域指定レジスタ82およびTAIL領域指定レジスタ84が共に「0」(領域無指定)に設定されると、図5(a)に示すように、各バッファ領域A〜Fは録音・再生のためにアルファベット順に「1回」づつ使用されることになる。また、図5(b)に示すようにTAIL領域としてバッファ領域Fが指定されHEAD領域としてバッファ領域Aが指定された場合は、バッファ領域Fの使用が終了した後に再びバッファ領域Aが使用される。すなわち、各バッファ領域A〜Fは、繰り返し循環的に使用されることになる。
次に、図5(c)に示すようにHEAD領域としてバッファ領域Bが指定され、TAIL領域としてバッファ領域Fが指定されると、バッファ領域Aは最初に「1回」だけ使用され、その後はバッファ領域B〜Fが繰り返し使用されることになる。また、図5(d)に示すようにHEAD領域としてバッファ領域Bが指定され、TAIL領域としてバッファ領域Eが指定されると、バッファ領域Aは最初に「1回」だけ使用され、その後はバッファ領域B〜Eが繰り返し使用されることになる。
上述した使用態様のうち、図5(b)に示すものが最も普通の使用態様であり、バッファ領域A〜Fの全体のメモリ容量を最も有効に活用しつつ、波形データの再生ないし録音のためのハードディスク30とミキサ20との間での波形データ 転送のバッファリングができる。また、図5(c)に示した使用態様は、ポン出し再生に用いると便利である。すなわち、ポン出しされる可能性がある複数の波形データのうち先頭部分の内容を予めバッファメモリ50内の各トラックのバッファ領域A〜Fとして確保されている領域以外の領域に転送しておき、何れかの波形データについて再生指示を受信すると、指示された波形データの先頭部分の開始アドレスと終了アドレスを開始アドレスDest_A及び終了アドレスTar_Aとして何れかのトラック対応レジスタに設定することにより、再生指示に遅れることなく該波形データの再生を開始することができ、その後はバッファ領域B〜Fを転送バッファとして活用してハードディスク30中の該先頭部分に後続する波形データの再生が行える。
次に、開始アドレスDest_A〜Dest_Fおよび終了アドレスTar_A〜Tar_Fの設定例を図5(e)を参照し説明する。まず、図5(e)の各バッファ領域A〜F中において、実際に波形データが再生される範囲(再生範囲)にはハッチングを付している。この再生範囲以外の範囲を「非再生範囲」という。バッファ領域Aについては、その全範囲が再生範囲であるため、開始アドレスDest_Aはバッファ領域Aの先頭アドレスに設定され、終了アドレスTar_Aはバッファ領域Aの最終アドレスに設定される。また、バッファ領域Bについては、該領域の先頭から途中までが再生範囲であるため、開始アドレスDest_Bはバッファ領域Bの先頭アドレスに、終了アドレスTar_Bはバッファ領域Bの途中のアドレスに各々設定される。
また、バッファ領域Cについては、該領域の途中から最終アドレスまでが再生範囲であるため、開始アドレスDest_Cはバッファ領域Cの途中のアドレスに、終了アドレスTar_Cはバッファ領域Cの最終アドレスに、各々設定される。また、バッファ領域D,Fの再生範囲はバッファ領域Aと同様であり、バッファ領域Eの再生範囲はバッファ領域Bと同様であるため、開始アドレスDest_D〜Dest_Fおよび終了アドレスTar_D〜Tar_Fも、これらバッファ領域A,Bのものと同様に設定されることになる。
ここで、カレント領域指定値CBuffer として「バッファ領域A」が指定され、カレント点アドレスCPosition として開始アドレスDest_Aが指定され、スタート/ストップレジスタ76が“1”に設定されると、録音・再生カウンタ62においては、このカレント点アドレスCPosition (=Dest_A)を初期値として、読出しアドレスのカウントアップが開始される。これにより、開始アドレスDest_A〜終了アドレスTar_Aに至るまで、バッファ領域Aの内容が順次読み出され、ミキサ20に供給されることになる。ここで、読出しアドレスが終了アドレスTar_Aに一致すると、その旨が録音・再生カウンタ62に通知される。これにより、録音・再生カウンタ62においては、次に読み出すべきバッファ領域の開始アドレスDest_Bに読出しアドレスが設定されることになる。
但し、本実施例においては、各バッファ領域A〜Fには連続したアドレスが割り当てられるから、バッファ領域Bの開始アドレスDest_Bは、バッファ領域Aの終了アドレスTar_Aの次のアドレスに他ならないものである。従って、読出しアドレスがバッファ領域Aからバッファ領域Bに遷移してゆく過程においては、読出しアドレスは単にサンプリング周期毎に「1」づつインクリメントされているのと同様の値になる。その後に読出しアドレスが終了アドレスTar_Bになると、次のサンプリング周期においては、該読出しアドレスは開始アドレスDest_Cに変更される。これにより、バッファ領域B,Cの非再生範囲がジャンプされ、これら領域の再生範囲のみが再生されることが解る。
以後、同様にバッファ領域D〜Fについてもこれら領域の再生範囲のみが再生される。そして、図示のようにバッファ領域FがTAIL領域、バッファ領域AがHEAD領域に設定されていたのであれば、読出しアドレスがバッファ領域Fの終了アドレスTar_Fに達した次のサンプリング周期においては、該読出しアドレスは再び開始アドレスDest_Aに設定されることになる。但し、最初にバッファ領域Aが読み出された後、バッファ領域Aが再び読み出される前に、バッファ領域Aの内容は次に再生すべき波形データに応じて更新され、開始アドレスDest_A、終了アドレスTar_Aもこの新たな波形データに応じた値に設定されるから、その際の開始アドレスDest_Aは、当然、図示の状態(バッファ領域Aの先頭)からは異なる場合もある。
3.実施例の動作
3.1.通常再生モード
3.1.1.動作の概要
次に、本実施例における動作の概要を説明する。まず、本実施例のハードディスクレコーダには、「通常再生モード」および「ナッジモード」という動作モードがある。そこで、最初に通常再生モードにおける動作の概要を図6を参照し説明する。図6(a)はある仮想トラックの構成を示す図である。該仮想トラックは第1〜第3リージョンから構成されている。そして、第1リージョンに係る波形データはブロックBL1〜BL5から構成され、第2リージョンに係る波形データはブロックBL6〜BL8から構成され、第3リージョンに係る波形データはブロックをBL9〜BL12から構成されている。リージョンでの「ブロック」 は、各クラスタに記憶されている波形データのことを示す。各クラスタの内容は必ずしも全て再生されるわけではないため、各「ブロック」のデータ量はクラスタ毎に異なることになる。
また、本実施例では、ミュート区間に対しても「ブロック」(無音ブロック)が存在することとしているので、ミュート区間のブロックについて説明しておく。まず、「1」クラスタに格納可能な波形データの最大サンプル数を「クラスタ容量Scr 」とし、あるミュート区間の長さ(サンプル数)をSmt とする。該ミュート区間長Smt をクラスタ容量Scr で除算すると「商」と「余り」が得られるが、この「商」に「1」を加算した値が、該ミュート区間に割り当てられる無音ブロック数になる。換言すれば、楽曲のカレント点CP が進行すると、ミュート区間に対応するこれらの無音ブロックがバッファ領域A〜Fに循環的に割り当てられてゆくことになる。
ここで、各無音ブロックの長さは、最後のブロックを除いてクラスタ容量Scr に固定されている。すなわち、これらのブロックがバッファ領域Xに割り当てられると、開始アドレスDest_Xおよび終了アドレスTar_Xは常にバッファ領域Xの先頭および最終アドレスになる。そして、最後のブロックの長さは、「Smt/Scr」の「余り」に等しい。換言すれば、この最後のブロックがバッファ領域Xに割り当てられると、その開始アドレスDest_Xはバッファ領域Xの先頭アドレスになり、終了アドレスTar_Xは「余り」のサンプル数に応じた値に設定されることになる。
なお、ミュート区間においては楽音信号が生成されないため、そもそも「ブロック」を規定する必要は必ずしもないと考えることもできるが、カレント点CP に対応するブロックがリージョンであるのかミュート区間であるのかを問わず録音・再生カウンタ62に対する制御内容を統一するために、リージョンの場合と同様に、ミュート区間のサンプル数に応じてブロックを割り当て、バッファ領域A〜Fを確保し、開始アドレスDest_A〜Dest_Fおよび終了アドレスTar_A〜Tar_Fも設定することとしたものである。
ここで、ソング内のあるタイミングにユーザの操作に応じてカレント点CP が設定されたとする。図6(a)の例においては、このカレント点 CP は第1リージョン内のブロックBL3に属している。かかる場合においては、最初にブロックBL3の内容があるバッファ領域(例えばバッファ領域A)に読み込まれ、引き続いてブロックBL3の次のブロックBL4が、次の領域(同、領域B)に読み込まれる(図6(b))。この先頭の2ブロックが読み込まれるまで、当該仮想トラックの再生を開始することはできないので、そのためのハードディスク30へのアクセス要求は優先的に実行される。
引き続いて、より優先されるハードディスク30へのアクセス要求が他にないとき、次のブロックBL5が読み込まれる。この優先制御に関しては、後で詳細に説明する。その期間内に、JOGダイアルがユーザによって操作され続けている場合は、図6(c)に示すようにカレント点CP は若干移動している。ここで、ブロックBL5は第1リージョンの終了ブロックであり、第1リージョンと第2リージョンとの間にはミュート区間が存在する。かかる場合には、ブロックBL5の次のブロックは、無音ブロックであり、図6(d)に示すように、当該無音ブロックに対して次の領域が割り当てられる。このときも、JOGダイアルの操作は続いており、カレント点CP がブロックBL4に移ったとする。すると、先にブロックBL3が格納されていたバッファ領域は解放され、空きバッファ領域になる。
これらの空きバッファ領域に続くブロックBL7,BL8が読み込まれた状態を図6(e)に示す。この状態で当該トラックにおける空きバッファ数は「0」になる。その後、さらにカレント点CP がブロックBL5に移ったとすると、ブロックBL4が格納されていた領域が解放される(図6(f))。ブロックBL8は第2リージョンの終了ブロックであり、第2リージョンと第3リージョンとの間にはミュート区間が存在するため、ブロックBL8の次のブロックは、無音ブロックになる(図6(g))。
以上のようにして、ユーザがJOGダイアルを操作してカレント点CP を移動させると、カレント点CPを含むブロック(カレントブロック)を先頭とする複数のブロックの波形データが、その優先度に応じてバッファ領域A〜Fに順次読み込まれる。そして、カレント点CP を所望の位置にセットした後にスタートボタンを押下すると、当該カレント点CP に対応する位置からソングの再生が開始される。ソングの再生が開始された後は、カレント点CP はサンプリング周期毎に「1」づつインクリメントされ、対応するサンプル点が読み出され、楽音信号として出力されてゆくことになる。そして、このカレント点CP の変遷に伴ってバッファ領域の内容が更新されるが、その動作はJOGダイアルの操作によってカレント点CP が更新される場合と同様である。
3.1.2.カレント点指定イベント処理
以下、通常再生モードにおいて各種イベントが発生したときの動作の詳細を説明する。
まず、ユーザが再生モード操作子群6内のJOGダイアルを操作した場合には、その操作前後の操作量の差に応じてカレント点CP が変動する。また、ユーザは、テンキーボード等によってカレント点CP (絶対時刻)を指定することもできる。かかるイベントが発生すると、図7(a)に示すカレント点指定イベントルーチンが起動される。図7(a)において処理がステップSP2に進むと、ソング管理データに基づいて、同時に再生すべき各トラックの、当該カレント点CP に対応するブロックの波形データを記憶するクラスタのクラスタ番号と、該クラスタ内の該ブロックの開始アドレスおよび終了アドレスと、当該カレント点CPに対応するアドレスとが確定される。
次に、処理がステップSP4に進むと、該クラスタ番号に基づいて、各トラックのカレント点CP の属するブロックと、その次のブロックとに各々対応する波形データを含むクラスタを、ハードディスク30から各トラックに係るバッファ領域A〜F内の連続した「2」領域に転送するように、転送処理が開始される。そして、これら「2」領域に対する開始アドレスDest_Xおよび終了アドレスTar_Xとが開始位置レジスタ70および終了位置レジスタ72に記憶され、MUTE_X が“0”に設定される(有音の再生設定)。但し、カレント点CP の属するブロック、またはその次のブロックが無音ブロックである場合は、該無音ブロックのサイズに応じた開始アドレスDest_Xと終了アドレス Tar_X、および、“1”のミュートフラグMUTE_Xが設定され、当該バッファ領域Xには特に波形データは読み込まれない(無音の再生設定)。
また、ステップSP4においては、「空きバッファ数RB 」という値が設定される。空きバッファ数RB とは、ハードディスク30から新たに波形データを転送しても差し支えないバッファ領域の数である。例えば、あるトラックに対して図5(b)に示したようにHEAD領域およびTAIL領域が設定された場合には、使用できるバッファ領域の数は全体で「6」になる。しかし、このうち「2」領域についてはステップSP4において波形データが転送され有音の再生設定が行われ、または無音の再生設定が行われたから、空きバッファ数RB は「4」になる。
次に、処理がステップSP6に進むと、後述する転送制御処理ルーチン(図8)が呼び出される。このルーチンの処理内容について詳細は後述するが、このルーチンによって各トラックのバッファ領域A〜Fのうち空いているものに対して、ブロックが順次割り当てられ、必要な場合にはハードディスク30から波形データが順次転送される。
3.1.3.再生開始指示イベント処理
カレント点CP が指定された後、ユーザが操作子群6内のスタートボタンを操作すると、図7(b)に示す再生開始イベント処理ルーチンが起動される。図において処理がステップSP10に進むと、同時に再生すべき各トラックに対してそれぞれカレントと次のブロックから成る「2」ブロックの波形データが「設定済み」であるか否かが判定される。「設定済み」とは、当該ブロックがリージョン内にあり、ソング管理データに基づいてハードディスクから実際に波形データが読み込まれ、有音の再生設定が行われた場合と、当該ブロックがミュート区間にあり、ソング管理データに基づいてあるバッファ領域Xに対して無音の再生設定が行われた場合とをいう。ここで「NO」と判定されると、処理はステップSP12に進み、各トラックに対して少なくとも「2」ブロックの波形データが設定されるまで処理が待機される。
なお、本ルーチンは、先にカレント点指定イベントルーチン(図7(a))が起動された後に起動されるものであるから、上述したステップSP4により、各トラック毎に最低「2」のバッファ領域に波形データが必ず設定されることになる。しかし、上記ステップSP4は転送処理を「開始」させるものであるから、例えばカレント点CP が指定された直後にスタートボタンが押下された場合には、未だこれらの波形データが設定されていない場合も考えられる。このため、これら波形データの設定が完了するまで処理を待機させることにしたのである。
次に、処理がステップSP14に進むと、各トラックのカレントクラスタが設定済みのバッファ領域および同カレントクラスタ内のカレント点CPに対応するアドレスに応じてカレント領域指定値CBuffer およびカレント点アドレスCPosition がカレントバッファレジスタ80およびカレント点レジスタ78に各々設定される。次に、処理がステップSP16に進むと、同時に再生される各トラックに対して、再生指示が行われる。すなわち、当該トラックのスタート/ストップレジスタ76に対して“1”が書き込まれ、録音・再生カウンタ62におけるカウント動作が開始される。これにより、以後は各トラックのバッファ領域A〜Fの内容が読み出され、ミュート回路60を介してミキサ20に波形データが供給されてゆくことになる。
3.1.4.再生終了割込処理
波形データの再生が開始されると、各トラックのバッファ領域A〜Fの内容が読み出されるが、このうち一のトラックにおいてバッファ領域Xの読出しアドレスと終了アドレスTar_Xとが一致すると、CPU8に対して再生終了割込が発生し、図7(c)に示す再生終了割込処理ルーチンが起動される。図において処理がステップSP40に進むと、当該トラックにおける空きバッファ数RB が「1」だけインクリメントされる。次に、処理がステップSP42に進むと、IDEインタフェース28とバッファメモリ50との間で読出しまたは書込みのためにデータが転送中か否かが判定される。ここで「YES」と判定されると、本ルーチンの処理は直ちに終了する。一方、「NO」(転送中ではない)と判定されると、後述する転送制御処理ルーチン(図8)が呼び出され、バッファ領域A〜Fに対して必要に応じて波形データが転送される。
3.1.5.転送制御処理
次に、図8を参照し、上記ステップSP6,SP44等において呼び出される転送制御処理ルーチンの処理について説明する。
図において処理がステップSP20に進むと、再生中の各トラックについて、転送回路26内において再生設定済みのブロックの波形データのサンプルのうち未だ再生されていないサンプルの数である残存サンプル数が算出される。
次に、処理がステップSP22に進むと、空きバッファ数RB が「1」以上であるトラックが存在するか否か、すなわち、再生準備すべきブロックがあるか否かが判定される。ここで「NO」と判定されると、波形データを転送可能なバッファ領域は存在しないことになるから、本ルーチンの処理は直ちに終了する。一方、ステップSP22において「YES」と判定されると処理はステップSP24に進み、空きバッファ数RB が「1」以上であるトラックのうち残存サンプル数が最小であるトラック(転送対象トラック)が検出される。すなわち、残存サンプル数が少ないトラックの、ブロック準備要求が優先される。ここで、次のブロックの準備のためにハードディスク30へのアクセスが必要なトラックが複数あれば、その内の残存サンプル数が少ないトラックのブロック準備が優先的に処理され、そのハードディスク30へのアクセスが行われる。
次に、処理がステップSP26に進むと、転送対象トラックの空きバッファ数RB が「1」だけデクリメントされる。次に、処理がステップSP28に進むと、ソング管理データが参照され、転送対象トラックにおける次のブロック(再生設定済みの最後のブロックの次のブロック)は無音ブロックであるか否かが判定される。ここで「YES」と判定されると、処理はステップSP30に進み、次のバッファ領域Xに係るミュートフラグMUTE_Xが“1”に設定され、該ブロックの長さに応じて開始アドレスDest_Xおよび終了アドレス Tar_Xが設定される。次に、処理がステップSP32に進むと、当該トラックの残存サンプル数が更新される。すなわち、新たに追加されたブロックの長さが残存サンプル数に加算される。
ところで、上記ステップSP30,SP32において無音ブロックを設定する処理は、ハードディスク30の動作には関係しないために瞬時に終了する。そこで、かかる場合には処理はステップSP22に戻り、再び同ステップSP22以下の処理が実行されることになる。そして、無音ブロックではないブロックの設定が必要になった場合、すなわちステップSP28において「NO」と判定された場合には、処理はステップSP34に進む。ここでは、ソング管理データに基づいて、該次のブロックの波形データを含むクラスタのクラスタ番号が確定され、該クラスタを転送するように、転送回路26およびIDEインタフェース28に対して指示が送信される。
具体的には、IDEインタフェース28に対しては、転送すべきクラスタの番号が通知され、開始アドレスレジスタ90には転送先のバッファ領域Xの先頭アドレスが開始アドレスSADとして開始アドレスレジスタ90に格納され、バッファ領域Xの最終アドレスが終了アドレスEAD として終了アドレスレジスタ94に格納された後、トリガレジスタ92に“1”が書き込まれ、かつ、IDEインターフェースに読み出しの開始が指示される。また、ソング管理データに基づいて、該バッファ領域Xに転送されるクラスタのうち実際にブロックを構成する部分に基づいて、開始アドレスDest_Xおよび終了アドレスTar_Xが設定される。以上のステップにより、本ルーチンの処理が終了する。
本ルーチンが終了した後、IDEインタフェース28においては、指定されたクラスタの頭出し(ヘッドシーク&ディスク回転待ち)が行われ、該クラスタの内容が読み出しが開始される。順次読み出されたデータはIDEインタフェース28内のバッファメモリ(FIFO)28aに格納され、IDEインタフェース28から転送回路26に対してその旨の信号が送信される。転送回路26は、該信号に応じて、該バッファメモリ28aから読み出されたデータを1アドレス分ずつ順次受け取り、バッファメモリ50の転送カウンタ86の示す転送アドレスに書き込むとともに、転送カウンタ86にその転送アドレスを“1”ずつカウントアップさせる。このようにして、 IDEインタフェース28を介して、ハードディスク30からバッファ領域Xに対して、上記クラスタの波形データが転送されることになる。
3.1.6.転送終了割込処理
上記転送制御処理ルーチン(図8)のステップSP34で開始される、ないし、カレント点指定イベントルーチン(図7(a))のステップSP4で実行されるデータ転送では、ハードディスク30における何れかのクラスタのデータが、IDEインタフェース28により徐々にバッファメモリ28aに読み出され、転送回路26によって、徐々にバッファメモリ28aからバッファメモリ50に転送される。その際、転送アドレスのカウントアップが行われるが、この転送アドレスが終了アドレスレジスタ94に格納された終了アドレスEAD に一致すると、CPU8において「転送終了割込」という割込が発生し、図7(d)に示す転送終了割込ルーチンが起動される。
図において処理がステップSP50に進むと、次に転送すべきクラスタが決定されているか否かが判定される。すなわち、初回に上記ステップSP4が実行されると、各トラック毎に「2」ブロックの波形データの転送処理が開始されるから、これらのブロックがリージョン内のブロックである場合には、対応するクラスタを転送すべき旨がステップSP4において決定されることになる。従って、これらのクラスタが全て転送される前に転送終了割込が発生したとしても、ステップSP50において「YES」と判定され、本ルーチンは直ちに終了する。一方、ステップSP50において「NO」と判定されると、処理はステップSP52に進む。ここでは、上述した転送制御処理ルーチン(図8)が呼び出され、空きバッファ領域が存在するとともに残存サンプル数が最小であるトラックに対して、次の波形データが転送され、あるいは無音ブロックが設定されることになる。このように、カレント点CPの設定後の、各トラックのカレントブロックとその次のブロックの準備に係るハードディスク30のアクセス(クラスタの転送)は、図8の転送制御処理に係るハードディスク30のアクセス(クラスタの転送)より優先的に行われる。
3.2.ナッジモード
3.2.1.動作の概要
次に、本実施例のナッジモードにおける動作の概要を図9を参照し説明する。
まず、「ナッジモード」とは、ソング管理データの1つのトラック上の短い期間(例えば25msec〜800msec)であるループ区間を繰り返してループ再生することをいう。図9(a)に示すように、ナッジの種別には前方ナッジと後方ナッジの「2」種類がある。ここで、後方ナッジとは時間軸上でカレント点CP よりも後方にループ区間Pを置くものであり、前方ナッジとは時間軸上でカレント点CP よりも前方にループ区間Pを置くものである。ここで、前方ナッジは波形の立上がり箇所を検出するために用いられ、後方ナッジは波形の立下がり箇所を検出するために用いられる。図9において、ループ区間Pの上部の矢印が付与された弧は、波形データの再生が当該区間の終わりまで進行したら、続いて当該区間の先頭から再生が行われること、すなわち、ループ再生が行われることを示している。
例えば、波形の立上がり箇所を検出する場合には、波形の立上がり箇所からやや前方にカレント点CP を設定し、JOGダイアルを操作してカレント点CP を徐々に後方に移動させるとよい。その際、ナッジ再生された音声信号は最初は無音であるが、カレント点CP が立上がり箇所に達すると、音が発生するから、音が発生し始めるカレント点CP が波形の立上がり箇所ということになる。なお、ループ区間Pの長さは操作子群6において、「25msec〜800msec」の範囲内でユーザが任意に設定することができる。
次に、ナッジモードにおけるバッファメモリ50の使用方法について説明しておく。上述した通常再生モードにおいては、各トラック領域52−0〜52−15はバッファ領域A〜Fに分割されたが、ナッジモードにおいてはトラック領域52−K(但し、Kはトラック番号)は一体のバッファ領域として使用され、該トラック領域52−Kに格納されるブロックは、相互に隙間なく詰められる。さらに、通常再生モードにおいては、無音ブロックを再生する際にはミュート回路60によって波形データがミュートされるためにバッファ領域の内容は不定であったが、ナッジモードにおいては無音ブロックに係るバッファ領域には常に「0」が格納され、ミュート回路60が音声信号をミュートすることはない。従って、ナッジモードにおいてはミュートレジスタ74も使用されない(ミュートフラグには、常時、“0”が設定される)。
また、動作モードが通常再生モードからナッジモードに変更されると、通常再生モードが実行されていた際にカレント点CP が属するブロックおよびその周辺のブロックは既にトラック領域52−Kに転送されていたはずであるが、上述したように通常再生モードとナッジモードとではトラック領域52−Kの使用方法が異なるため、通常再生モードにおいて設定されたブロックは全て無効なものとされ、ナッジモードに応じた状態でトラック領域52−K内に各ブロックが設定されることになる。
次に、バッファメモリ50にブロックを設定する動作の概要を図10を参照し説明する。まず、図10(a)においては、上述した図6(a)と同一のトラックにおいて、カレント点CP がブロックBL5に置かれている。この状態で動作モードがナッジモードに変更されたとする。ここで、ナッジ種別は後方ナッジであり、ループ区間PはブロックBL5とその直後の無音ブロックZとに渡ることとする。かかる場合には、まずループ区間Pが属する全てのブロック(図示の例ではブロックBL5とその直後の無音ブロックZ)がトラック領域52−K上に設定される。これにより、ループ区間Pを繰り返し読み出すことが可能になる。このように、ブロックが設定されたサンプル点の範囲を「ブロック設定済範囲」といい、その先頭サンプル点を設定済先頭点HP、最終サンプル点を設定済最終点TP という。また、ループ区間Pの先頭サンプル点をループ開始点LS、最終サンプル点をループ終了点LE という。そして、ナッジ種別に応じて、ループ開始点LS またはループ終了点LE のうち一方がカレント点CP に一致することになる。
次に、設定済先頭点HP および設定済最終点TP のうちループ区間Pの両端から見て、サンプル数の余裕の無い側(図示の例では設定済先頭点HP)に対して、連続するブロックであるブロックBL4が追加される。図10(b)は、このブロックBL4が追加された場合の状態を示す。その後、図10(c)〜(e)に示すように、設定済最終点TP および設定済先頭点HP 側に対してブロックBL6,BL3,BL7が交互に追加されてゆくと、ループ区間Pから見て前方および後方に対してサンプル数の充分な余裕を持った状態でブロックが設定されることが解る。ここで、図10(c)〜(e)に示すように、ループ区間Pが後方に移動してゆくと、後方におけるサンプル数の余裕がなくなり、前方側に過大な余裕ができる。かかる場合には、前方側の最外縁のブロックBL3が解放される。これにより、トラック領域52−Kにおける空きサンプル数が多くなる。そこで、図10(g)に示すように、後方側に引き続くブロックBL8がトラック領域52−Kに転送されるのである。
次に、図9(b)を参照し、これら複数のブロックが実際にトラック領域52−Kに設定された状態を説明する。ナッジモードにおいてはトラック領域52−Kはリングバッファとして用いられる。図9(b-1)において、アドレスAD(HP)は設定済先頭点HP に係るサンプルを記憶したアドレスである。ここで、設定されたブロックが全てクラスタ容量Scr を有するものとすると、図示のようにトラック領域52−Kには「6」のブロックが格納され、アドレスAD(HP)より一つ前のアドレスが設定済最終点TP に係るアドレスAD(TP)になる。
また、ナッジモードにおいては、ループ区間を表すために、トラック対応レジスタ群66−KのレジスタセットReg_AおよびReg_Bが使用され、残りのレジスタセットReg_C〜Reg_Fは使用されない。ループ区間Pが連続したメモリ領域内に設定される場合には、レジスタセットReg_AないしReg_Bの何れか一方、例えばレジスタセットReg_AがHEADかつTAILに指定され、そこに設定された開始アドレスDest_Aから終了アドレス Tar_Aまでの範囲Aが繰り返し再生される。そして、ループ区間Pのループ開始点LS に係るアドレスAD(LS)は開始位置レジスタ70内に開始アドレスDest_Aとして格納され、ループ終了点LE に係るアドレスAD(LE)は終了アドレス Tar_Aとして終了位置レジスタ72に格納される。これにより、ループ区間Pが繰り返し再生されることになる。なお、HEADかつTAILに設定されなかった側のレジスタセットReg_Bは再生に使用されないので、開始アドレスDest_Bおよび終了アドレス Tar_Bはどのように設定されていてもよい。
一方、トラック領域52−Kがリングバッファとして使用されるために、ループ区間がトラック領域52−Kの先頭アドレスおよび最終アドレスを跨いで設定される場合がある。例えば、図9(b-2)に示すように、ループ区間が区間P,Qに分割される場合がある。かかる場合は、レジスタセットReg_AがHEADに設定されるとともに、レジスタセットReg_BがTAILに指定され、そこに設定された開始アドレスDest_Aから終了アドレス Tar_Aまでの範囲Aと開始アドレスDest_Bから終了アドレス Tar_Bまでの範囲Bとが交互に再生される。そして、ループ開始点LS に係るアドレスAD(LS)が開始アドレス Dest_Aとして、またトラック領域52−Kの先頭アドレスが開始アドレスDest_Bとして、各々開始位置レジスタ70内に格納される。また、トラック領域52−Kの最終アドレスが終了アドレスTar_Aとして、またループ終了点LE に係るアドレスAD(LE)は終了アドレス Tar_Bとして、各々終了位置レジスタ72に格納される。これにより、区間P,Qの内容が交互に再生されることになる。
また、ループ区間が移動して、図9(b-1)から図9(b-2)に変化する場合は、何れか一方のレジスタセットをHEADかつTAILに指定する状態から、レジスタセットReg_AをHEADに、かつレジスタセットReg_BをTAILに指定する状態に変化させ、逆に、図9(b-2)から図9(b-1)に変化する場合は、レジスタセットReg_AをHEADに、かつレジスタセットReg_BをTAILに指定する状態から、何れか一方のレジスタセットをHEADかつTAILに指定する状態に変化させればよい。このようにして、2つのレジスタセットReg_AおよびReg_Bを使用することにより、リングバッファとして使用されるトラック領域52−Kにおいてループ区間がどのように移動しても、そのループ範囲を適切にループ再生することができる。
また、各ブロックのサンプル数はクラスタ容量Scr に必ずしも一致しないため、一般的にはトラック領域52−Kにブロックを設定してゆくと、図9(b-3)に示すように、空きサンプル数Sr (但しSr <Scr )の空き領域(ハッチングを施していない部分)が発生する。また、各ブロックについても、必ずしもトラック領域52−K内に連続的に設定されるわけではなく、図示のブロックBL2のようにトラック領域52−Kの終端部分と先頭部分とに分割される場合も発生し得る。ここで、ループ区間(LS, LE)の中心にあるループ中心点LC が設定済先頭点HP に近接してゆき、所定のブロック解放条件を満たすと(例えば、両者の差がクラスタ容量Scr の「2」倍未満になると)、設定済最終点TP 側の最外縁のブロックBL7が解放される。そして、解放した結果、空きサンプル数Sr がクラスタ容量Scr 以上になると、ブロックBL2に隣接するブロックBL1が追加されることになる。
3.2.2.ナッジ開始イベント
操作子群6において、動作モードを通常再生モードからナッジモードに変更する操作が行われると、図11(a)に示すナッジ開始イベントルーチンが起動される。
図において処理がステップSP102に進むと、所定の初期設定が行われる。なお、動作モードがナッジモードに変更される前の通常再生モードにおいては、トラック領域52−Kには種々の波形データが適宜記憶されているが、これら通常再生モードにおいて記憶されていた波形データはナッジモードに変更された際に全て無視される。すなわち、これらの波形データは、後述する各処理によって、必要に応じてハードディスク30から再転送されることになる。
次に、処理がステップSP104に進むと、カレント点CP と、ナッジ種別と、ループ区間長LL とに基づいて、ソング管理データの時間軸上のループ区間(LS, LE)、すなわちループ開始点LS とループ終了点LE とが決定される。すなわち、ナッジ種別が「前方ナッジ」であった場合には、「ループ開始点LS = カレント点CP−ループ区間長LL 」、「ループ終了点LE = カレント点CP」によってループ区間(LS, LE)が決定される一方、ナッジ種別が「後方ナッジ」であった場合には、「ループ開始点LS = カレント点CP」および「ループ終了点LE =カレント点CP+ループ区間長LL 」によってループ区間(LS, LE)が決定されることになる。
次に、処理がステップSP106に進むと、ソング管理データに基づいて、ループ区間(LS, LE)を含む全てのブロックが確定され、バッファメモリ50のトラック領域52−Kに読み込まれる。すなわち、これらのブロックのうちリージョンを構成するブロックについては、ハードディスク30から各クラスタ毎の波形データが読み込まれ、これら波形データのうち非再生範囲は削除され、再生範囲のみが時間軸上で前方向に詰められることになる。また、これらのブロックのうちミュート区間を構成するブロックにおいては、該ブロックの長さだけトラック領域52−Kに「0」が書き込まれることになる。次に、処理がステップSP108に進むと、トラック対応レジスタ群66−Kに対して必要な設定が行われ、開始アドレス Dest_A,Dest_B、終了アドレスTar_A,Tar_B、HEAD領域およびTAIL領域がループ区間(LS, LE)に応じて設定される。次に、処理がステップSP110に進むと、後述する転送制御処理ルーチン(図12)が呼び出され、トラック領域52−Kに対して、必要に応じて波形データが転送される。
3.2.3.JOGダイアル操作イベント処理
以下、ナッジモードにおいて各種イベントが発生したときの動作の詳細を説明する。
ナッジモードにおいてJOGダイアルが操作されると、図11(b)に示すJOGダイアル操作イベント処理ルーチンが起動される。図において処理がステップSP120に進むと、JOGダイアルの回転量に比例したカレント点変動指定値ΔPが決定される。次に、処理がステップSP112に進むと、ブロック設定済範囲(HP, TP)の限度内でループ区間(LS, LE)が移動される。すなわち、ループ区間(LS, LE)がブロック設定済範囲(HP, TP)内である限り、ループ開始点LS およびループ終了点LE にはカレント点変動指定値ΔPが各々加算されるが、「LE +ΔP」が設定済最終点TP を超える場合には、両者の差をΔP1 とし、「LS +ΔP−ΔP1」および「LE +ΔP−ΔP1」が新たなループ区間(LS, LE)に設定されることになる。同様に、カレント点変動指定値ΔPが負値である場合には「LS +ΔP」が設定済先頭点HP 未満になる場合がある。かかる場合には、両者の差をΔP2 とし、「LS +ΔP+ΔP2」および「LE +ΔP+ΔP2 」が新たなループ区間(LS, LE)に設定されることになる。なお、本実施例ではバッファ領域が複数ブロック分準備されているので、よほど速くJOGダイヤルを回した場合でなければかかる事態は生じない。
次に、処理がステップSP124に進むと、更新後のループ区間(LS, LE)に基づいてカレント点CP が決定される。すなわち、カレント点CP は、ナッジ種別が「前方ナッジ」であった場合にはループ終了点LE に等しくなり、「後方ナッジ」であった場合にはループ開始点LS に等しくなる。次に、処理がステップSP126に進むと、更新後のループ区間(LS, LE)に基づいてトラック対応レジスタ群66−Kに対して必要な設定が行われ、開始アドレスDest_A,Dest_B、終了アドレスTar_A,Tar_B、HEAD領域およびTAIL領域がループ区間(LS, LE)に応じて設定される。次に、処理がステップSP128に進むと、後述する転送制御処理ルーチン(図12)が呼び出され、トラック領域52−Kに対して、必要に応じて波形データが転送される。
3.2.4.転送制御処理
次に、図12を参照し、上記ステップSP110,SP128等において呼び出される転送制御処理ルーチンの処理について説明する。
図において処理がステップSP150に進むと、IDEインタフェース28とバッファメモリ50との間で読出しまたは書込みのためにデータが転送中か否かが判定される。ここで「YES」と判定されると、本ルーチンの処理は直ちに終了する。一方、「NO」(転送中ではない)と判定されると、処理はステップSP152に進む。ここでは、ループ開始点LS およびループ終了点LE の平均値であるループ中心点LC が計算される。
次に、処理がステップSP154に進むと、このループ中心点LC から設定済先頭点HP 方向へのサンプル数である先頭方向サンプル数Sa と、ループ中心点LC から設定済最終点TP 方向へのサンプル数である末尾方向サンプル数Sb とが計算される。次に、トラック領域52−Kの全容量(クラスタ容量Scr ・6)からブロック設定済範囲(HP, TP)の全サンプル数(Sa +Sb )を減算することにより、トラック領域52−K内の空きサンプル数Sr が求められる。次に、処理がステップSP156に進むと、空きサンプル数Sr はクラスタ容量Scr 以上であるか否かが判定される。ここで「YES」と判定されると、処理はステップSP158に進む。
ステップSP158においては、ソング管理データに基づいて、サンプル数Sa, Sb のうち小さい方の側に、新たなブロックが追加される。すなわち、新たに追加されるブロックがリージョンを構成するブロックである場合は、ハードディスク30から当該ブロックの波形データを含むクラスタのデータの読み出し、および、トラック領域52−Kに転送が開始される。一方、新たに追加されるブロックが無音ブロックである場合には、その無音ブロックの長さに等しいサンプル数だけトラック領域52−Kに「0」が書き込まれ、該追加されたブロックに応じて設定済先頭点 HP または設定済最終点TP が修正される。
次に、処理がステップSP164に進むと、先のステップSP158において無音ブロックが設定されたか否かが判定される。ここで「YES」と判定されると、処理はステップSP154に戻り、サンプル数Sa,Sbおよび空きサンプル数Sr が再計算され、ステップSP156以降の処理が実行される。これは、上述したステップSP158における無音ブロックの設定は瞬時に完了するため、次のブロックに対する設定処理を引き続き行っても差し支えないからである。一方、上記ステップSP164において「NO」と判定されると、本ルーチンの処理は直ちに終了する。これは、前述したようにハードディスク30からトラック領域52−Kへの転送は、IDEインターフェース28と転送回路26により途中CPU8の補助なしに行われ、また、クラスタの頭出し等に相当の時間を要するため、本ルーチンを一旦終了されたものである。
また、空きサンプル数Sr がクラスタ容量Scr 未満である場合には、ステップSP156において「NO」と判定され処理はステップSP160に進む。ここでは、先頭方向サンプル数Sa および末尾方向サンプル数Sb のうち一方が「2Scr 」未満であるか否かが判定される(所定のブロック解放条件)。ここで「NO」と判定されると、本ルーチンは直ちに終了する。かかる場合は、先頭方向サンプル数Sa および末尾方向サンプル数Sb の双方がほぼ等しい値であるため、カレント点CP を中心として前後の波形データがほぼバランスよくトラック領域52−K内に記憶されていることになる。
一方、サンプル数Sa,Sb のうち一方が「2Scr 」未満であればステップSP160において「YES」と判定され処理はステップSP162に進む。ここでは、サンプル数Sa,Sb のうち他方の側(サンプル数が多い側)の最外縁のブロックが解放され、その結果に応じてブロック設定済範囲(HP, TP)が更新される。そして、処理がステップSP154に進むと、サンプル数Sa,Sb および空きサンプル数Sr が再計算される。以後同様に、空きサンプル数Sr がクラスタ容量Scr 以上になるまで、ステップSP154,SP156,SP160,SP162のループが繰り返される。そして、空きサンプル数Sr がクラスタ容量Scr 以上になると、処理はステップSP158に進み、上述したようにサンプル数Sa,Sb のうち小さい方の側に、新たなブロックが追加される。
3.2.5.転送終了割込処理
上記転送制御処理ルーチン(図12)のステップSP158によって開始されたハードディスク30からトラック領域52−Kへのクラスタの転送では、1アドレスのデータが転送される毎に転送アドレスがカウントアップされる。そして、この転送アドレスが終了アドレスレジスタ94に格納された終了アドレスEAD に一致すると、CPU8において転送終了割込が発生し、図11(c)に示す転送終了割込ルーチンが起動される。
図において処理がステップSP140に進むと、転送された1クラスタの波形データのうち非再生範囲(追加すべき新たなブロック以外の範囲)が除去され、残りの再生範囲がブロック設定済範囲(HP, TP)に隣接するようにシフトされる。次に、処理がステップSP142に進むと、該シフトされた再生範囲をブロック設定済範囲(HP, TP)に追加するように、設定済先頭点HP または設定済最終点TP が更新される。次に、処理がステップSP144に進むと、上記転送制御処理ルーチン(図12)が再び呼び出される。
このように、ナッジモードにおいては、JOGダイアルが操作されると、必要に応じて転送制御処理ルーチン(図12)が繰り返し実行されるから、やがてループ中心点LC を中心として、先頭方向サンプル数Sa および末尾方向サンプル数Sb として共に「2Scr 」が確保されるようにトラック領域52−Kの内容が更新される。これにより、再びJOGダイアルが操作された際に、新たなループ区間(LS, LE)がブロック設定済範囲(HP, TP)に含まれる可能性を高くすることができ、新たなループ区間(LS, LE)を速やかに再生することが可能になる。
4.実施例の効果
以上のように、通常再生モードにおいては、開始アドレスDest_A〜Dest_F、終了アドレスTar_A〜Tar_F、ミュートフラグMUTE_A〜MUTE_F等の値を、実際に波形データが再生される相当以前に設定することができる。これにより、バッファメモリ50等に対する設定を余裕をもって実行することができ、例えば再生範囲のきわめて短いクラスタが存在した場合においても、波形データの再生開始時において設定が間に合わなくなるような事態を未然に防止することができる。
また、ナッジモードにおいては、トラック領域52−Kにはクラスタ容量Scr の「6」倍の容量が確保されるが、各クラスタにおける再生範囲をのみを詰めて記憶するために、再生範囲のきわめて短いクラスタが存在した場合においても、トラック領域52−Kには充分なサンプル数の波形データを記憶することができる。そして、ループ区間(LS, LE)の前後にバランスよく波形データが配置されることにより、カレント点CP が大幅に移動した場合であっても、直ちにループ区間の再生を行うことができる。
5.変形例
本発明は上述した実施例に限定されるものではなく、例えば以下のように種々の変形が可能である。
(1)上記実施例のステップSP24においては、空きバッファ領域を有するトラックのうち残存サンプル数が最小であるトラックを次にブロックを設定すべきトラックとして選択したが、未だ再生されていないブロックの数である残存ブロック数が最小であるトラック(換言すれば空きバッファ領域の数が最大であるラック)を次にブロックを設定すべきトラックとして選択してもよい。
(2)また、上記実施例のステップSP160においては、サンプル数Sa,Sb (すなわちループ中心点LC から設定済先頭点HP または設定済最終点TP までのサンプル数)が「2Scr 」未満であるか否かを判定したが、ループ区間(LS, LE)から設定済先頭点HP または設定済最終点TP までのサンプル数を計算し、これらの計算結果のうち一方が所定値未満であるか否かを判定し、この判定結果が肯定的であった場合にステップSP162によって他方のブロックを解放するようにしてもよい。
(3)また、通常再生モードにおいては、各トラック毎にバッファ数を固定する必要はない。例えば編集を繰り返して「1」クラスタあたりの再生範囲のサンプル数が少なくなったトラックに対しては「6」以上のバッファ領域を割り当て、「1」クラスタあたりの再生範囲のサンプル数が比較的多いトラックに対しては「5」以下のバッファ領域を割り当てるようにしてもよい。
(4)上記実施例のナッジモードにおける限界値「2Scr」は、6クラスタ分のトラック領域52−Kを有効に使うために決定された限界値の一例であって、必ずしもその値である必要はない。一般的に、トラック領域52−Kがnクラスタ分のサイズであれば、限界値は(n/2−α)クラスタ位の値とするのがよい(但し、αは0.5≦α≦1.0の定数)。さらに、トラック領域52−Kのサイズがクラスタのサンプル数mの整数倍でない場合は、そのサイズをnサンプルとして、限界値は(n/2−α・m)サンプル位の値とするのがよい。
(5)上記実施例のように、先頭方向サンプル数Sa および末尾方向サンプル数Sbの一方が限界値以下であるか否かをブロック解放条件とすれば、ループ区間の中心から前と後の何れかの方向に所定の限界値以下のサンプルしか準備されていないとき、その逆の方向の端のブロックを解放してその方向のブロックを準備するよう動作する。そのため、何れの方向にも所定の限界値以上のサンプル数が準備されるようになる。
しかしながら、ブロックの解放条件はこのような条件に限らなくてよい。
例えば、先頭方向サンプル数Saおよび末尾方向サンプル数Sbの一方が限界値以上であるか否かをブロック解放条件としてもよい。その場合、トラック領域52−Kのサンプル数をn、クラスタのサンプル数をmとして、その限界値は、(n/2+α・m)サンプル位の値とするとよい。このブロック解放条件を用いれば、ループ区間の中心から前と後の何れかの方向に所定の限界値以上のサンプルが準備されているとき、そのサンプルを含むブロックを解放してその逆方向のブロックが準備されるので、何れかの方向にサンプルを準備しすぎて逆方向の準備されたサンプル数が不足するのを防止できる。
或いは、先頭方向サンプル数Saと末尾方向サンプル数Sbの差の絶対値が限界値以上であるか否かをブロック解放条件としてもよい。その場合、トラック領域52−Kのサンプル数をn、クラスタのサンプル数をmとして、その限界値は、(α・m)サンプル位の値とするとよい。このブロック解放条件を用いれば、ループ区間の中心から前方向に準備されているサンプル数と後方向に準備されているサンプル数の差が所定の限界値以上のとき、その順されているサンプル数が多い方向のブロックを解放してその逆方向のブロックが準備されるので、何れかの方向にサンプルを準備しすぎて逆方向の準備されたサンプル数が不足するのを防止できる。
本発明の一実施例の波形データ処理装置のブロック図である。 ハードディスク30のメモリマップおよびソング管理データのデータ構造を示す図である。 転送回路26の詳細ブロック図である。 通常再生モードにおけるバッファメモリ50のメモリマップである。 通常再生モードにおける動作説明図である。 通常再生モードにおける動作説明図である。 通常再生モードにおける各種イベント処理ルーチンのフローチャートである。 通常再生モードにおける転送制御処理ルーチンのフローチャートである。 ナッジモードにおける動作説明図である。 ナッジモードにおける動作説明図である。 ナッジモードにおける各種イベント処理ルーチンのフローチャートである。 ナッジモードにおける転送制御処理ルーチンのフローチャートである。
符号の説明
2:表示器、4:フェーダ、6:操作子群、8:CPU、10:DMA制御部、12:フラッシュメモリ、14:RAM、16:バス、18:PCインタフェース、20:ミキサ、22:波形入力部、24:波形出力部、26:転送回路、28:IDEインタフェース、28a:バッファメモリ、30:ハードディスク、32:CD−RWドライブ、50:バッファメモリ、52−0〜52−15:トラック領域、60:ミュート回路、61:データバス、62:録音・再生カウンタ、64:比較器、66−0〜66−15:トラック対応レジスタ群、68:マルチプレクサ、70:開始位置レジスタ、72:終了位置レジスタ、74:ミュートレジスタ、76:スタート/ストップレジスタ、78:カレント点レジスタ、80:カレントバッファレジスタ、82:HEAD領域指定レジスタ、84:TAIL領域指定レジスタ、86:転送カウンタ、88:比較器、90:開始アドレスレジスタ、92:トリガレジスタ、94:終了アドレスレジスタ、100:管理データ領域、102:音データ部、104,106:ソング管理データ、108−1〜108−16:トラックデータ、110−1〜110−8:仮想トラックデータ、112−1,112−2:リージョンデータ、114−1,114−2:ノードデータ、108−1〜108−16:トラックデータ、A〜F:バッファ領域、BL1〜BL8:ブロック。

Claims (4)

  1. クラスタを記憶単位として音データを記憶する第1の記憶装置と、
    所定の順序で音データの再生に使用され複数の記憶領域であって、それぞれ1クラスタ分の音データを記憶でき、かつ、再生範囲の設定と有音または無音を示す設定とが可能な複数の記憶領域を有し、第1の記憶装置よりアクセス速度の速い第2の記憶装置と、
    1つのトラックにおいて順次再生すべき有音または無音の複数のブロックを示す管理データであって、有音のブロックに関しては、前記第1の記憶装置に記憶されている1クラスタの音データとその内の再生すべき音データの範囲とを指示し、無音のブロックに関しては、その時間長を指示する管理データを記憶する第3の記憶装置と、
    前記所定の順序で前記複数の記憶領域の再生を行う再生手段であって、有音を示す設定がされている記憶領域に関しては、当該記憶領域に設定された前記再生範囲の音データの再生を行い、無音を示す設定がされている記憶領域に関しては、設定された前記再生範囲に相当する無音の音データの再生を行う再生手段と、
    順次、前記再生手段による再生が終了した前記第2記憶手段の記憶領域に対して前記管理データに基づき次のブロックの再生準備を行う次ブロック準備手段であって、前記管理データが示す次のブロックが有音のブロックであれば、該管理データに従い、次のブロックの1クラスタの音データを前記第1の記憶装置から読み出して当該再生が終了した記憶領域に転送して、該記憶領域に再生範囲の設定と有音を示す設定とを行い、前記管理データが示す次のブロックが無音のブロックであれば、該管理データに従い、当該再生が終了した記憶領域に再生範囲を示す設定と無音を示す設定とを行う次ブロック準備手段と
    を有することを特徴とする波形データ処理装置。
  2. クラスタを記憶単位として音データを記憶する第1の記憶装置と、
    所定の順序で音データの再生に使用される複数の記憶領域であって、それぞれ1クラスタ分の音データを記憶でき、かつ、有音または無音を示す設定が可能な複数の記憶領域を有し、第1の記憶装置よりアクセス速度の速い第2の記憶装置と、
    1つのトラックにおいて順次再生すべき複数の有音乃至無音のブロックを示す管理データであって、有音のブロックに関しては、前記第1の記憶装置に記憶されている1クラスタの音データととそのブロックの有音とを示し、無音のブロックに関しては、そのブロックの無音を示す管理データを記憶する第3の記憶装置と、
    前記所定の順序で前記複数の記憶領域の再生を行う再生手段であって、有音を示す設定がされている記憶領域に関しては当該記憶領域に記憶されている音データの再生を行い、無音を示す設定がされている記憶領域に関しては無音の音データの再生を行う再生手段と、
    順次、前記再生手段による再生が終了した前記第2記憶手段の記憶領域に対して前記管理データに基づき次のブロックの再生準備を行う次ブロック準備手段であって、前記管理データ次のブロックの有音を示していれば、該管理データが指示する1クラスタの音データを前記第1の記憶装置から読み出して、当該再生が終了した記憶領域に転送して有音を示す設定を行い、前記管理データ次のブロックの無音を示していれば、当該再生が終了した記憶領域に無音を示す設定を行う次ブロック準備手段と
    を有することを特徴とする波形データ処理装置。
  3. 複数トラックの音データを同時に再生する波形データ処理装置であって、
    クラスタを記憶単位として音データを記憶する第1の記憶装置と、
    各トラックにおいて所定の順序で音データの再生に使用され複数の記憶領域であって、それぞれ1クラスタ分の音データを記憶でき、かつ、再生範囲の設定と有音または無音を示す設定とが可能な複数の記憶領域を前記複数トラック分有し、第1の記憶装置よりアクセス速度の速い第2の記憶装置と、
    前記各トラックにおいて順次再生すべき複数の有音または無音のブロックを示す管理データであって、有音のブロックに関しては、前記第1の記憶装置に記憶されている1クラスタの音データとその内の再生すべき音データの範囲とを指示し、無音のブロックに関しては、その時間長を指示する管理データを複数トラック分記憶する第3の記憶装置と、
    前記複数のトラックの各々について、前記所定の順序で前記複数の記憶領域の再生を行う再生手段であって、有音を示す設定がされている記憶領域に関しては、前記各記憶領域の設定された前記再生範囲の音データの再生を行い、無音を示す設定がされている記憶領域に関しては、設定された前記再生範囲に相当する無音の音データの再生を行う再生手段と、
    前記複数のトラックのうちの前記再生が終了した記憶領域が存在するトラックについて、当該再生が終了した記憶領域に対して当該トラックの前記管理データに基づき次のブロックの再生準備を行う次ブロック準備手段であって、当該トラックの前記管理データが示す次のブロックが有音のブロックであれば、該管理データに従い、次のブロックの1クラスタの音データを前記第1の記憶装置から読み出して当該再生が終了した記憶領域に転送し、該記憶領域に再生範囲の設定と有音を示す設定とを行い、当該トラックの前記管理データが示す次のブロックが無音のブロックであれば、該管理データに従い、当該再生が終了した記憶領域に再生範囲を示す設定と無音を示す設定とをを行う次ブロック準備手段とを有し、
    前記次ブロック準備手段は、前記再生が終了した記憶領域が存在するトラックが複数あった場合、それらのトラックのうちの、未再生の記憶領域の再生すべき音データが少ないトラックの順、または、未再生の記憶領域の数が少ないトラックの順に、次のブロックの再生準備を行うことを特徴とする波形データ処理装置。
  4. 前記複数の記憶領域は、3以上の記憶領域であることを特徴とする請求項1ないし7の何れかに記載の波形データ処理装置。
JP2005090763A 2005-03-28 2005-03-28 波形データ処理装置 Expired - Fee Related JP4207914B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005090763A JP4207914B2 (ja) 2005-03-28 2005-03-28 波形データ処理装置
US11/391,866 US7259314B2 (en) 2005-03-28 2006-03-28 Waveform data processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005090763A JP4207914B2 (ja) 2005-03-28 2005-03-28 波形データ処理装置

Publications (2)

Publication Number Publication Date
JP2006277783A JP2006277783A (ja) 2006-10-12
JP4207914B2 true JP4207914B2 (ja) 2009-01-14

Family

ID=37212404

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005090763A Expired - Fee Related JP4207914B2 (ja) 2005-03-28 2005-03-28 波形データ処理装置

Country Status (1)

Country Link
JP (1) JP4207914B2 (ja)

Also Published As

Publication number Publication date
JP2006277783A (ja) 2006-10-12

Similar Documents

Publication Publication Date Title
JP3149093B2 (ja) 自動演奏装置
US7259314B2 (en) Waveform data processing apparatus
JP3857381B2 (ja) 編集装置及びデータ記録媒体
US8450589B2 (en) Nonvolatile storage module, access module, musical sound data file generation module and musical sound generation system
US6437228B2 (en) Method and apparatus for storing audio data
JP2002124022A (ja) オーディオデータ記録再生装置
JPH08195022A (ja) ディスク再生装置、カラオケシステム及びディスク再生方法
JP4207914B2 (ja) 波形データ処理装置
JP4140612B2 (ja) 波形データ処理装置
JP4089688B2 (ja) 楽音信号生成装置
JP3918817B2 (ja) 楽音生成装置
JP4055784B2 (ja) マルチトラック再生装置
JP4170438B2 (ja) 波形データ再生装置
JP4151726B2 (ja) 波形データ処理装置
JP4089687B2 (ja) 楽音信号処理装置
JP3925294B2 (ja) 波形データ処理装置
JP3770030B2 (ja) 録音再生装置
JP3714087B2 (ja) サンプルデータ再生装置およびサンプルデータ記録再生装置
JP3230756B2 (ja) デジタルレコーダ
JP2009032394A (ja) オーディオデータ記録再生装置
JP4766385B2 (ja) 書庫ファイル作成方法、ソングデータ抽出方法、書庫ファイル作成装置、プログラムおよびソングデータ抽出装置
JP4120979B2 (ja) 波形再生装置
JP2010027145A (ja) 記録装置、記録方法、再生装置、及び再生方法
JP2004164848A (ja) オーディオデータ記録再生装置
JP2004241068A (ja) 電子機器及びその再生制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080401

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080507

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080707

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20111031

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111031

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121031

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121031

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20131031

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees