(57)【特許請求の範囲】
【請求項１】
波形データを表示して編集する波形編集方法であって、
編集対象の波形データを第１の記憶手段に記憶するステップと、
前記波形データを所定数のサンプル毎のブロックに分け、それらのブロックから所定間隔で順次取り出した各ブロックについて当該ブロック中のサンプルの最大値と最小値を検出し、表示用データとして第２の記憶手段に記憶するステップと、
前記第２の記憶手段の表示用データに基づいて表示手段に波形データのグラフィック表示を行うステップと、
編集指示に応じて、前記第１の記憶手段に記憶されている波形データの編集処理を行うステップと、
前記第２の記憶手段に記憶された表示データのうち、前記編集処理が行われた編集範囲に対応する部分を無効化するステップと、
前記無効化された編集範囲に対して、前記所定間隔で順次取り出した各ブロックについて当該ブロック中のサンプルの最大値と最小値を検出し、表示用データとして第２の記憶手段に記憶する処理と、該第２の記憶手段の表示用データに基づいて表示手段に波形データのグラフィック表示を行う処理とを実行する再表示ステップと
を含み、編集指示があったときには、前記第２の記憶手段に表示用データを記憶するステップ、前記波形データのグラフィック表示を行うステップ、および前記再表示ステップの処理よりも、前記編集処理を行うステップおよび前記無効化するステップの処理を優先的に行うことを特徴とする波形編集方法。
【請求項２】
波形データを表示して編集する波形編集方法であって、
フォアグラウンドプロセスで、編集指示に応じて波形データの編集処理を行うステップと、
バックグラウンドプロセスで、前記編集処理が行われた波形データの表示処理を行うステップとを備え、
前記表示処理は、前記編集処理が行われた波形データに対し、該波形データを所定数のサンプル毎のブロックに分け、それらのブロックから所定間隔で順次取り出した各ブロックについて当該ブロック中のサンプルの最大値と最小値を検出し、表示用データとして記憶するとともに、該表示用データを表示し、さらに前記取り出すブロックの間隔を徐々に狭めて、まず前記波形データに対して第１の間隔で取り出した各ブロック中の最大値と最小値の検出と表示用データの記憶および表示を行い、次に前記波形データに対して第１の間隔より狭めた第２の間隔で取り出した各ブロック中の最大値と最小値の検出と表示用データの記憶および表示を行い、次に前記波形データに対して第２の間隔より狭めた第３の間隔で取り出した各ブロック中の最大値と最小値の検出と表示用データの記憶および表示を行い、…というように処理を進めて、最終的に全ブロックについて処理するものであることを特徴とする波形編集方法。
【請求項３】
請求項１または２に記載の波形編集方法において、
前記波形データは、編集対象の波形データを全体表示する表示領域および当該編集対象の波形データのうちの一部分を拡大表示する拡大表示領域に表示され、
前記表示用データの作成は、前記拡大表示領域に実際に表示されている範囲を優先的に行うようにしたことを特徴とする波形編集方法。
【請求項４】
請求項１または２に記載の波形編集方法において、
前記編集対象の波形データを記憶媒体に保存する際、その波形データに対応する表示用データが完成されていない状態であっても、その波形データに加えて、前記表示用データおよびその作成状況を示す管理データを保存し、次にその波形データが読み出されたときには保存してある表示用データおよび管理データも読み出し、その管理データに基づいて表示用データの作成を継続することを特徴とする波形編集方法。
【請求項５】
請求項４に記載の波形編集方法において、
前記波形データに加えて前記表示用データおよびその作成状況を示す管理データを保存した後、表示用データが完成したときには、前記記憶媒体に保存してある表示用データおよび管理データを自動更新することを特徴とする波形編集方法。
【請求項６】
波形データを表示して編集する波形編集装置であって、
編集対象の波形データを記憶する第１の記憶手段と、
前記編集対象の波形データに対する表示用データを記憶する第２の記憶手段であって、該表示用データは、前記編集対象の波形データを所定数のサンプル毎のブロックに分けた各ブロックの最大値と最小値を表現するデータであるものと、
前記波形データ中の範囲を表すアドレス情報と該範囲に対する表示用データの生成状況を表すスキャン状態とを管理データとして記憶する手段と、
前記波形データの所定範囲に対する編集指示を受け付ける手段と、
受け付けた編集指示に応じて、前記第１の記憶手段に記憶されている波形データの当該範囲に編集処理を施す手段と、
前記編集処理を行った範囲に対する前記管理データのスキャン状態を初期状態に設定変更する手段と、
前記編集指示の受け付け、前記編集処理、および前記スキャン状態を初期状態に設定変更する処理とは独立のバックグラウンドプロセスで、前記管理データを参照し、スキャン状態が表示用データ作成済みになっていないブロックを探し、表示用データを作成して前記第２の記憶手段に記憶するとともに該表示用データに基づいて表示を行い、その表示用データが作成され記憶され表示された範囲に対する前記管理データのスキャン状態を変更する手段と
を備えたことを特徴とする波形編集装置。
【請求項７】
波形データを表示して編集する波形編集装置であって、
編集対象の波形データを記憶する第１の記憶手段と、
前記編集対象の波形データに対する表示用データを記憶する第２の記憶手段であって、該表示用データは、前記編集対象の波形データを所定数のサンプル毎のブロックに分けた各ブロックの最大値と最小値を表現するデータであるものと、
前記波形データ中の範囲を表すアドレス情報と該範囲に対する表示用データの生成状況を表すスキャン状態とを管理データとして記憶する手段であって、前記スキャン状態は、表示用データが未作成であることを示す未スキャン状態、所定数ｉ1おきのブロックの表示用データが作成済みであることを示す第１段階状態、ｉ1より小さい所定数ｉ2おきのブロックの表示用データが作成済みであることを示す第２段階状態、…、ｉn-2より小さい所定数ｉn-1おきのブロックの表示用データが作成済みであることを示す第ｎ−１段階状態、および全ブロックの表示用データが作成済みであることを示す第ｎ段階状態（ｎは２以上の整数）の何れかの状態をとるものと、
前記波形データの所定範囲に対する編集指示を受け付ける手段と、
受け付けた編集指示に応じて、前記第１の記憶手段に記憶されている波形データの当該範囲に編集処理を施す手段と、
前記編集処理を行った範囲に対する前記管理データのスキャン状態を初期状態である未スキャン状態に初期化する手段と、
前記編集指示の受け付け、編集処理、およびスキャン状態の初期化処理とは独立のバックグラウンドプロセスで、前記管理データを参照し、スキャン状態が前記第ｎ段階状態になっていないブロックを探し、あればそのブロックが含まれる範囲の第ｍ段階の範囲について第ｍ段階から第ｍ＋１段階に移行するようにその範囲の表示用データを作成して前記第２の記憶手段に記憶するとともに該表示用データに基づいて表示を行い、さらに前記管理データのスキャン状態を変更する手段と
を備えたことを特徴とする波形編集装置。
【請求項８】
請求項６または７に記載の波形編集装置において、
前記波形データは、編集対象の波形データを全体表示する表示領域および当該編集対象の波形データのうちの一部分を拡大表示する拡大表示領域に表示され、
前記表示用データの作成は、前記拡大表示領域に実際に表示されている範囲を優先的に行うようにしたことを特徴とする波形編集装置。
【請求項９】
請求項６または７に記載の波形編集装置において、
前記編集対象の波形データを記憶媒体に保存する際、その波形データに対応する表示用データが完成されていない状態であっても、その波形データに加えて、前記表示用データおよび前記管理データを保存する手段をさらに備え、次にその波形データが読み出されたときには保存してある表示用データおよび管理データも読み出し、その管理データに基づいて表示用データの作成を継続することを特徴とする波形編集装置。
【請求項１０】
請求項９に記載の波形編集装置において、
前記波形データに加えて前記表示用データおよび前記管理データを保存した後、表示用データが完成したときには、前記記憶媒体に保存してある表示用データおよび管理データを自動更新することを特徴とする波形編集装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、楽音などの波形データを編集する波形編集方法および装置に関する。
【０００２】
【従来の技術】
従来より、録音した波形データや記憶媒体から読み出した波形データを表示して編集（エディット）する波形編集装置が知られている。波形編集装置では、編集対象の波形データを波形編集画面に表示し編集する。編集が終了した波形データは、波形メモリや記憶媒体に格納する。
【０００３】
従来の波形編集装置での波形データの表示方式として、所定数のサンプルを１つのブロックとし、各ブロックごとに波形データの正と負のピーク値を検出し、それを表示用データとして使用して表示することにより、波形を収縮表示したときの処理速度を改善している例がある。表示用データを生成して表示するためには、編集対象の波形データを読み込んで、上述したようにブロックごとに波形データのピーク値を求める処理（以下、スキャンという）が必要である。
【０００４】
【発明が解決しようとする課題】
ところで、波形データを編集する際、波形のフィルタリングや無音部分のカットなど、編集画面に波形がきれいに表示される前でも編集処理を行いたい場合があるが、従来の波形編集装置では、上述のスキャンの処理が終了するまで編集作業を行うことはできなかった。また、スキャン途中で編集処理が行われた場合、表示用データをどのように管理すればよいのか、という問題があった。
【０００５】
また、波形データを編集した直後に「保存」の処理を行った場合は、スキャンが終了しておらず表示用データが未だ得られていない状態で保存の指示があったことになるので、表示用データは波形データとともに保存されない。したがって、次にその波形データを波形メモリや記憶媒体から読み出してきたときには、表示用データを生成するために波形データの始めからスキャンし直さなければならなかった。
【０００６】
さらに、表示用データ作成のためのスキャンは、波形データ全体に対して行われるため、波形データの容量が大きい（時間的に長い）と表示データが完成してきれいに表示されるまでに時間がかかるという問題があった。また、全体波形の表示は先頭から順に行われるため、ユーザの見たい部分がなかなか表示されない場合があった。
【０００７】
この発明は、上述の従来技術における問題点に鑑み、波形データを編集する際、表示用データを作成するスキャンの途中であっても待たされることなく波形データの編集を行うことができ、その一方、必ず最終的には正確な表示用データを作成して表示することができ、また波形データを保存して再び読み出した場合のスキャン時間を節約し、さらにユーザの興味のある部分を先に詳しく見ることができる波形編集方法および装置を提供することを目的とする。
【０００８】
【課題を解決するための手段】
この目的を達成するため、請求項１に係る発明は、波形データを表示して編集する波形編集方法であって、編集対象の波形データを第１の記憶手段に記憶するステップと、前記波形データを所定数のサンプル毎のブロックに分け、それらのブロックから所定間隔で順次取り出した各ブロックについて当該ブロック中のサンプルの最大値と最小値を検出し、表示用データとして第２の記憶手段に記憶するステップと、前記第２の記憶手段の表示用データに基づいて表示手段に波形データのグラフィック表示を行うステップと、編集指示に応じて、前記第１の記憶手段に記憶されている波形データの編集処理を行うステップと、前記第２の記憶手段に記憶された表示データのうち、前記編集処理が行われた編集範囲に対応する部分を無効化するステップと、前記無効化された編集範囲に対して、前記所定間隔で順次取り出した各ブロックについて当該ブロック中のサンプルの最大値と最小値を検出し、表示用データとして第２の記憶手段に記憶する処理と、該第２の記憶手段の表示用データに基づいて表示手段に波形データのグラフィック表示を行う処理とを実行する再表示ステップとを含み、編集指示があったときには、前記第２の記憶手段に表示用データを記憶するステップ、前記波形データのグラフィック表示を行うステップ、および前記再表示ステップの処理よりも、前記編集処理を行うステップおよび前記無効化するステップの処理を優先的に行うことを特徴とする。
【０００９】
請求項２に係る発明は、波形データを表示して編集する波形編集方法であって、フォアグラウンドプロセスで、編集指示に応じて波形データの編集処理を行うステップと、バックグラウンドプロセスで、前記編集処理が行われた波形データの表示処理を行うステップとを備え、前記表示処理は、前記編集処理が行われた波形データに対し、該波形データを所定数のサンプル毎のブロックに分け、それらのブロックから所定間隔で順次取り出した各ブロックについて当該ブロック中のサンプルの最大値と最小値を検出し、表示用データとして記憶するとともに、該表示用データを表示し、さらに前記取り出すブロックの間隔を徐々に狭めて、まず前記波形データに対して第１の間隔で取り出した各ブロック中の最大値と最小値の検出と表示用データの記憶および表示を行い、次に前記波形データに対して第１の間隔より狭めた第２の間隔で取り出した各ブロック中の最大値と最小値の検出と表示用データの記憶および表示を行い、次に前記波形データに対して第２の間隔より狭めた第３の間隔で取り出した各ブロック中の最大値と最小値の検出と表示用データの記憶および表示を行い、…というように処理を進めて、最終的に全ブロックについて処理するものであることを特徴とする。
【００１０】
請求項３に係る発明は、請求項１または２に記載の波形編集方法において、前記波形データは、編集対象の波形データを全体表示する表示領域および当該編集対象の波形データのうちの一部分を拡大表示する拡大表示領域に表示され、前記表示用データの作成は、前記拡大表示領域に実際に表示されている範囲を優先的に行うようにしたことを特徴とする。
【００１１】
請求項４に係る発明は、請求項１または２に記載の波形編集方法において、前記編集対象の波形データを記憶媒体に保存する際、その波形データに対応する表示用データが完成されていない状態であっても、その波形データに加えて、前記表示用データおよびその作成状況を示す管理データを保存し、次にその波形データが読み出されたときには保存してある表示用データおよび管理データも読み出し、その管理データに基づいて表示用データの作成を継続することを特徴とする。
【００１２】
請求項５に係る発明は、請求項４に記載の波形編集方法において、前記波形データに加えて前記表示用データおよびその作成状況を示す管理データを保存した後、表示用データが完成したときには、前記記憶媒体に保存してある表示用データおよび管理データを自動更新することを特徴とする。
【００１３】
請求項６に係る発明は、波形データを表示して編集する波形編集装置であって、編集対象の波形データを記憶する第１の記憶手段と、前記編集対象の波形データに対する表示用データを記憶する第２の記憶手段であって、該表示用データは、前記編集対象の波形データを所定数のサンプル毎のブロックに分けた各ブロックの最大値と最小値を表現するデータであるものと、前記波形データ中の範囲を表すアドレス情報と該範囲に対する表示用データの生成状況を表すスキャン状態とを管理データとして記憶する手段と、前記波形データの所定範囲に対する編集指示を受け付ける手段と、受け付けた編集指示に応じて、前記第１の記憶手段に記憶されている波形データの当該範囲に編集処理を施す手段と、前記編集処理を行った範囲に対する前記管理データのスキャン状態を初期状態に設定変更する手段と、前記編集指示の受け付け、前記編集処理、および前記スキャン状態を初期状態に設定変更する処理とは独立のバックグラウンドプロセスで、前記管理データを参照し、スキャン状態が表示用データ作成済みになっていないブロックを探し、表示用データを作成して前記第２の記憶手段に記憶するとともに該表示用データに基づいて表示を行い、その表示用データが作成され記憶され表示された範囲に対する前記管理データのスキャン状態を変更する手段とを備えたことを特徴とする。
【００１４】
請求項７に係る発明は、波形データを表示して編集する波形編集装置であって、編集対象の波形データを記憶する第１の記憶手段と、前記編集対象の波形データに対する表示用データを記憶する第２の記憶手段であって、該表示用データは、前記編集対象の波形データを所定数のサンプル毎のブロックに分けた各ブロックの最大値と最小値を表現するデータであるものと、前記波形データ中の範囲を表すアドレス情報と該範囲に対する表示用データの生成状況を表すスキャン状態とを管理データとして記憶する手段であって、前記スキャン状態は、表示用データが未作成であることを示す未スキャン状態、所定数ｉ1おきのブロックの表示用データが作成済みであることを示す第１段階状態、ｉ1より小さい所定数ｉ2おきのブロックの表示用データが作成済みであることを示す第２段階状態、…、ｉn-2より小さい所定数ｉn-1おきのブロックの表示用データが作成済みであることを示す第ｎ−１段階状態、および全ブロックの表示用データが作成済みであることを示す第ｎ段階状態（ｎは２以上の整数）の何れかの状態をとるものと、前記波形データの所定範囲に対する編集指示を受け付ける手段と、受け付けた編集指示に応じて、前記第１の記憶手段に記憶されている波形データの当該範囲に編集処理を施す手段と、前記編集処理を行った範囲に対する前記管理データのスキャン状態を初期状態である未スキャン状態に初期化する手段と、前記編集指示の受け付け、編集処理、およびスキャン状態の初期化処理とは独立のバックグラウンドプロセスで、前記管理データを参照し、スキャン状態が前記第ｎ段階状態になっていないブロックを探し、あればそのブロックが含まれる範囲の第ｍ段階の範囲について第ｍ段階から第ｍ＋１段階に移行するようにその範囲の表示用データを作成して前記第２の記憶手段に記憶するとともに該表示用データに基づいて表示を行い、さらに前記管理データのスキャン状態を変更する手段とを備えたことを特徴とする。
【００１５】
請求項８に係る発明は、請求項６または７に記載の波形編集装置において、前記波形データは、編集対象の波形データを全体表示する表示領域および当該編集対象の波形データのうちの一部分を拡大表示する拡大表示領域に表示され、前記表示用データの作成は、前記拡大表示領域に実際に表示されている範囲を優先的に行うようにしたことを特徴とする。
【００１６】
請求項９に係る発明は、請求項６または７に記載の波形編集装置において、前記編集対象の波形データを記憶媒体に保存する際、その波形データに対応する表示用データが完成されていない状態であっても、その波形データに加えて、前記表示用データおよび前記管理データを保存する手段をさらに備え、次にその波形データが読み出されたときには保存してある表示用データおよび管理データも読み出し、その管理データに基づいて表示用データの作成を継続することを特徴とする。
【００１７】
請求項１０に係る発明は、請求項９に記載の波形編集装置において、前記波形データに加えて前記表示用データおよび前記管理データを保存した後、表示用データが完成したときには、前記記憶媒体に保存してある表示用データおよび管理データを自動更新することを特徴とする。
【００１８】
【発明の実施の形態】
以下、図面を用いてこの発明の実施の形態を説明する。
【００１９】
図１は、本発明に係る波形編集機能を実現するＰＣ（パーソナルコンピュータ）のブロック構成を示す。このＰＣは、中央処理装置（ＣＰＵ）１０１、リードオンリーメモリ（ＲＯＭ）１０２、ランダムアクセスメモリ（ＲＡＭ）１０３、表示器１０４、入力装置１０５、ＭＩＤＩ（Musical Instruments Digital Interface）インターフェイス１０６、ドライブ１０７、書き込み回路１０９、アクセス管理部１１０、波形メモリ１１１、音源１１２、およびサウンドシステム１１３を備えている。これら各部は、双方向のバスライン１１４により互いに接続されている。
【００２０】
ＣＰＵ１０１は、このＰＣ全体の動作を制御する。ＲＯＭ１０２は、ＢＩＯＳなどを格納した記憶装置である。ＲＡＭ１０３は、ＣＰＵ１０１が実行するプログラムをロードしたり各種バッファ領域を確保する記憶領域である。表示器１０４は、ＣＰＵ１０１の指示に応じて各種のデータを表示する。入力装置１０５は、ユーザが各種の情報を入力するために用いるキーボードやマウスなどの入力装置である。ＭＩＤＩインターフェース１０６は、外部のＭＩＤＩ機器との間でＭＩＤＩデータを授受するためのインターフェースである。ドライブ１０７は、外部記憶装置のドライブであり、例えばＣＤ−ＲＯＭやハードディスクなどの記憶装置１０８（以下、単にハードディスク１０８と言う）などが使用される。
【００２１】
書き込み回路１０９は、ＣＰＵ１０１からの指示に応じて、外部から入力される所定のサンプリング周波数のデジタル波形データを波形メモリ１１１に書き込む。音源１１２は、ＣＰＵ１０１からの指示に応じて、波形メモリ１１１に記憶された波形データに基づき楽音波形データを生成して、サウンドシステム１１３に出力する。音源１１２は、複数時分割チャンネル動作を行っているので、複数の楽音波形データを同時に生成することが可能である。アクセス管理部１１０は、書き込み回路１０９による波形データの波形メモリ１１１への書き込みと、音源１１２による波形データの波形メモリ１１１からの読み出しと、ＣＰＵ１０１による波形メモリ１１１の波形データの読み書きが衝突しないように、書き込み回路１０９と音源１１２とＣＰＵ１０１との波形メモリ１１１に対するアクセスタイミングを調整する。
【００２２】
表示器１０４は、ＣＰＵ１０１からの指示に応じて、様々なグラフィック画面を表示する。表示する画面としては、波形録音、波形エディット、音色選択、音色エディット、およびシステム設定などの画面がある。
【００２３】
ＭＩＤＩインターフェース１０６には、ＭＩＤＩ鍵盤、ＭＩＤＩギターなどが接続される。ＣＰＵ１０１は、ＭＩＤＩインターフェース１０６から入力するＭＩＤＩイベントや、シーケンサソフトで発生したＭＩＤＩイベントに応じて、音源１１２の楽音発生状態を制御する。
【００２４】
ＭＩＤＩインターフェース１０６を介してＭＩＤＩのノートオンイベントを受信したときには、以下の処理が行われる。まず、ノートオンをバッファ（ＲＡＭ１０３上）に取り込む。次に音源１１２のチャンネルに発音割り当てする。次に、音源１１２の割り当てたチャンネルのレジスタに、ノートオンに応じた楽音の発生を制御する制御データを設定する。その制御データの中には、発音に使用する波形データを指定する情報、付与する効果を制御する情報、音量エンベロープを制御する情報などが含まれる。ここで、波形データを指定する情報は、選択されている音色やノートオンの音高に応じて波形データが選択する情報であり、そのアタックスタートＡＴＳ、ループスタートＬＰＳ、およびループエンドＬＰＥの各アドレスが設定される。次に当該チャンネルのレジスタにノートオンを指示する。この指示に応じて該チャンネルの楽音生成がスタートする。
【００２５】
図１のＰＣでは、波形編集プログラムを起動して波形データの編集を行うことができる。図２は、図１のＰＣで波形編集を行う画面例を示す。
【００２６】
波形編集プログラムを起動すると、表示器１０４に、図２のウインドウ２００が表示される。このウインドウ２００のFileメニューなどで編集対象の波形データを指定することにより、サブウインドウ２０１が開き指定された波形データが表示される。図２は、ファイル名abc.wabの波形データを開いてサブウインドウ２０１に表示した例である。なお、編集対象の波形データは、図１のハードディスク１０８にあらかじめ保存してあるものである。書き込み回路１０９を用いて波形メモリ１１１に録音した波形データをハードディスク１０８に格納して編集対象とすることもできる。
【００２７】
画面下方の領域２０２は、編集対象の波形データの全体を表示する領域である。領域２０４は、編集対象の波形データのうち細かく編集を行いたい部分を指定して表示する拡大表示領域である。バー２０３は、領域２０２に表示された波形データ全体の中で拡大表示領域２０４に表示する範囲を示す。すなわち、このバーの左端から右端に対応する波形データの部分が、拡大表示領域２０４に表示されている。ユーザは、マウスなどのポインティングデバイス（以下、単にマウスと言う）によりバー２０３を左右に移動させ、拡大表示領域２０４に表示する範囲を任意に指定できる。反転領域２０５は、ユーザがマウスでドラッグすることにより選択した範囲であり、この選択区間の波形データに対して各種の編集（例えば、時間軸に関する反転、波形データの符号の反転、フェードイン、フェードアウトなどの処理）を行うことができる。
【００２８】
図２の拡大表示領域２０４上で波形を編集すると、編集結果を表示するために波形データがスキャンされて再表示される。本実施の形態の波形編集プログラムでは、波形のスキャンが完全に終了していないときにも、大雑把に波形を表示し、その時点でも次の編集が可能である。これは波形のスキャン処理を、編集処理とは別プロセスとしてバックグラウンドで行うことにより実現する。また、スキャン処理を行っている途中で編集が行われたときには、編集が行われた波形データの区間を未スキャン部として登録し後で再スキャンする。したがって、スキャン途中で何度編集を行ったとしても、無駄なスキャンを行うことなく、最終的には正しい表示用データで表示がなされる。
【００２９】
図３は、波形データに対して編集を行ったときの全体表示領域２０２あるいは拡大表示領域２０４における画面表示の例を示す。編集を行ったことにより矢印３０１の位置から後の波形データが変更されたものとする。このとき表示データも変更する必要があるが、本実施の形態では段階的にスキャンおよび表示を行う。すなわち、初めは波形データの全ブロックをスキャン（ブロック中の波形サンプルデータの正と負のピーク値を検出）するのではなく、３０２に示すように複数ブロックおきに飛び飛びに取り出したブロックについてスキャンを行い、その結果を表示データとして表示する。スキャンするブロックの間隔を徐々に狭めていき、途中結果も表示しながら、最終的には全ブロックのスキャンを行い表示する。
【００３０】
図４は、編集後の表示の変化の例である。始めに、大きな間隔おきに取り出したブロックをスキャンすることにより▲１▼のような表示を行い、次に徐々にブロックの間隔を狭めて取り出したブロックをスキャンすることにより▲２▼のような表示を行い、最終的には全ブロックでスキャンすることにより▲３▼のような表示とする。以上のようなスキャンおよび表示の処理は、バックグラウンドプロセスで実行する。
【００３１】
さらに、本実施の形態の波形編集プログラムでは、波形のスキャン途中で保存の指示が来た場合、波形データのどの範囲でどの段階までのスキャンが済んでいる（あるいは済んでいない）かを示す情報（後述する管理データ）を、波形データとともに保存し、次にこの波形データが読み出されたときには前回の続きからスキャンする。これにより、処理時間を節約できる。さらに、スキャンを行う際、拡大表示領域２０４に表示されている範囲を優先して行うので、ユーザが見たい部分が先にスキャンされ表示される。
【００３２】
図５は、本実施の形態の波形編集プログラム（波形エディタ）のメインルーチンを示す。ステップ５０１で、各種の領域の初期化を行う。次にステップ５０２で、波形データの編集に関する何らかの操作があったか否か判定する。操作があったときは、ステップ５０３で、その操作に応じた処理をフォアグラウンドプロセスとして実行する。ステップ５０２で操作がなかったとき、あるいはステップ５０３の処理の後、ステップ５０４でバックグラウンドプロセスを実行し、再びステップ５０２に戻る。
【００３３】
波形データの各種の編集操作に応じた編集処理は、ステップ５０３のフォアグラウンドプロセスで実行される。このとき、その編集処理に応じて表示用データも書き替える必要があるが、表示用データの作成更新はステップ５０４のバックグラウンドプロセスで、フォアグラウンドプロセスが実行されていない空き時間で、実行される。したがって、フォアグラウンドプロセス５０３で編集処理を行い、その編集に関してバックグラウンドプロセス５０４で表示用データを作成している途中であっても、次の編集操作が入力可能である。
【００３４】
なお、バックグラウンドプロセス５０５は、フォアグラウンドプロセス５０３の処理が所定時間以上かかるときに途中でバックグラウンドプロセス５０４と同じ処理を実行するためのものである。これにより、フォアグラウンドプロセス５０３の処理時間が長いときでも、表示の実行が止まってしまうことがなくなる。
【００３５】
図６は、フォアグラウンドプロセスおよびバックグラウンドプロセスの処理のタイミングを説明するタイミング説明図である。時間軸６００に沿って矢印６０１あるいは６０２のようなタイミングで編集操作が行われたものとする。編集操作６０１に応じて、波形データに対する編集処理が、フォアグラウンドプロセスＦＡで実行される。この編集処理に応じてバックグラウンドプロセスＡ，Ｂ，Ｃなどにより表示用波形データを生成し段階的な波形データの表示を行う。
【００３６】
図７は、編集対象である波形ファイルの構造を示す。図７（ａ）に示すように編集対象の波形ファイルは、補助データ７０２と波形データ７０１とからなる。波形データ７０１は、編集対象の波形サンプルデータそのものである。補助データ７０２は、図７（ｂ）に示すように、管理データ７１１、表示用データ７１２、およびその他データ７１３からなる。管理データ７１１は、図７（ｃ）に示すように、アドレス情報とスキャン状態との組データを並べたものである。アドレス情報は、波形データ７０１中の位置を示す。スキャン状態は、対応するアドレス情報の位置からの波形データのスキャンの状態を示す。スキャン状態については後に詳しく説明する。
【００３７】
図８は、波形データのアドレスおよび表示用データ取得ブロックのアドレスの構造説明図である。８０１に示すように、波形データのアドレスは２８ビットデータで構成される。これにより最大２５６Ｍワードの波形データをアドレッシングでき、サンプリング周波数ＦＳが５０kHzで1.5時間分程度の波形データを処理可能である。表示用データのスキャンの１ブロックの大きさは２５６サンプルとする。したがって、波形データのアドレスの下位８ビットはスキャンの際には不要なデータである。
【００３８】
表示用データを取得するブロックを指すためのアドレスは、スキャンを行った範囲を示すためのアドレス表現であり、８０２に示すように、波形データのアドレスの下位８ビットを切り捨てた形式（２０ビット）で表現される。２０ビットであるので第０ブロックから第1,048,575ブロックまで指すことができる。上述した図７（ｃ）の管理データで用いる「アドレス情報」は、ブロックを指すアドレスであり、８０２の表現形式である。
【００３９】
波形データが未だスキャンされていないときは、８２１に示すようにＮＵＬＬが設定されている。第１段階のスキャン（２０４８ブロック毎のスキャン）が終わった範囲を表すときは、上位９ビット（波形データのアドレス２８ビットのうちの最上位から９ビット分）にその下位１１ビットは０としたアドレス８２２が使用される。スキャンするブロックを特定する２０ビットのうちの下位１１ビットは常に０なので、例えば上記の上位９ビットでカウントアップしていけば２０４８ブロック毎の飛び飛びのブロックを次々に指していける。１つのブロックのスキャンについては、アドレス８２２の下位側に８ビット分の領域８２５を付加し、この領域８２５を０から２５５までカウントアップすることにより１ブロック内の２５６サンプルをスキャンできる。
【００４０】
第２段階のスキャン（６４ブロック毎のスキャン）が終わった範囲を表すときは、上位１４ビット（波形データのアドレス２８ビットのうちの最上位から１４ビット分）にその下位６ビットは０としたアドレス８２３が使用される。スキャンするブロックを特定する２０ビットのうちの下位６ビットは常に０なので、例えば上記の上位１４ビットでカウントアップしていけば６４ブロック毎の飛び飛びのブロックを次々に指していける。１つのブロックの２５６サンプルのスキャンについては、上記と同様に下位側に８ビット分の領域を付加して行えばよい。
【００４１】
第３段階のスキャン（全ブロックのスキャン）が終わった範囲を表すときは、２０ビット（波形データのアドレス２８ビットのうちの最上位から２０ビット分）アドレス８２４が使用される。スキャンするブロックを特定する２０ビットの全部を使用するので、第０ブロックから第1,048,575ブロックまでの全ブロックを次々に指していける。１つのブロックの２５６サンプルのスキャンについては、上記と同様に下位側に８ビット分の領域を付加して行えばよい。
【００４２】
図９は、波形データスキャン途中の状態例を示す。９００は編集対象の波形データを示し、図７（ａ）の波形データ７０１に相当する。ＳＴはスキャンの進行の度合いあるいは状態を示すインジケータであり、ＳＴが０のとき未スキャン、ＳＴが１のとき第１段階のスキャン、ＳＴが２のとき第２段階のスキャン、ＳＴが３のとき第３段階のスキャン、がそれぞれ終了した範囲であることを示す。図９の例では、波形データの先頭位置９０１から位置９０２の区間がＳＴ＝３であり、第３段階のスキャンまで終了していることを示している。同様に、位置９０２から位置９０３の区間はＳＴ＝０で未スキャン状態、位置９０３から位置９０４の区間はＳＴ＝２で第２段階のスキャンまで終了している状態、位置９０４から位置９０５の区間はＳＴ＝１で第１段階のスキャンまで終了している状態、位置９０５から波形データの末尾位置９０６の区間はＳＴ＝３で第３段階のスキャンまで終了している状態であることを示している。
【００４３】
このような波形データの各区間のスキャン状態の管理は、図７（ｃ）の管理データで行う。すなわち、図７（ｃ）の管理データの「アドレス情報」に図９の９０１〜９０５のような波形データ内の位置を設定し、対応する「スキャン状態」にその位置からのＳＴの値を設定して管理する。具体的に図９の状態は、図７（ｃ）の管理データの「アドレス情報１」に図９の位置９０１のアドレスを設定し「スキャン状態１」にＳＴの値である３を設定し、続いて「アドレス情報２」に位置９０２のアドレスを設定し「スキャン状態２」にＳＴの値０を設定し、「アドレス情報３」に位置９０３のアドレスを設定し「スキャン状態３」にＳＴの値２を設定し、…というようにして表現される。
【００４４】
図１０（ａ）は、バックグラウンドプロセス（図５のステップ５０４，５０５）で行うスキャン処理のフローチャート図である。ステップ１００１で管理データを参照することにより編集対象の波形データの全範囲がＳＴ＝３に設定されているか否か判定する。全範囲ＳＴ＝３であればスキャンが第３段階まで終了しているということだから、そのまま処理を終了する。ＳＴ＝３でない区間があるときは、ステップ１００２でＳＴ＝３でないブロックの中から今回スキャンするブロックを決定し、ステップ１００３で当該ブロックをスキャンし表示用データを生成変更する。ステップ１００４でそのスキャン結果に応じて表示画面を更新し、ステップ１００５で管理データを更新して、処理を終了する。
【００４５】
図１０（ｂ）は、スキャン処理の進行による管理データの変化の様子を示す。▲１▼で波形データのある範囲がＳＴ＝０で未スキャン状態であったとする。▲２▼でこの範囲の先頭から第１段階のスキャン処理を行う。スキャン処理が進行した範囲がＳＴ＝１となっている。▲３▼でこの全範囲がＳＴ＝１の状態となり、その次に▲４▼で第２段階のスキャン処理を進行させＳＴ＝２の状態に移行させている。この全範囲がＳＴ＝２になった後、同様にして第３段階のスキャン処理を進行させ、最終的に全範囲がＳＴ＝３の状態になるようにする。
【００４６】
なお、ステップ１００２〜１００５の処理は１ブロックずつ行うものとする。複数ブロックについてまとめてステップ１００２〜１００５の処理を行うと、バックグラウンド処理に１回入ったときの処理時間がかかるためである。当然、ＣＰＵの処理能力が高い場合は、複数ブロックについての処理を行うようにしてもよい。また、ステップ１００２でスキャンするブロックを決定する際には、まず拡大表示領域２０４に表示されている範囲を優先的にスキャンするようにする。これにより、ユーザが編集対象として注目している範囲が先にスキャンされる。
【００４７】
図１１は、ユーザの操作に応じたフォアグラウンドプロセス（図５のステップ５０３）の処理の１つである読み込み指示イベントの処理ルーチンを示す。ユーザが図２の画面で編集する波形ファイルを指定して読み込み指示したとき、図１１の処理が実行される。ステップ１１０１で、ユーザが指示した波形ファイル名に応じて波形ファイルを検出する。その波形ファイルから、ステップ１１０２で波形データ（図７（ａ）の７０１）を読み込み、ステップ１１０３で表示用データ（図７（ｂ）の７１２）を読み込み、ステップ１１０４で管理データ（図７（ｂ）の７１１、図７（ｃ））を読み込み、ステップ１１０５でその他データ（図７（ｂ）の７１３）を読み込む。これらの読み込みとは、データをＲＡＭ１０３上の所定のバッファに読み込むことである。ステップ１１０６で、波形データ、表示用データ、および管理データに基づいて、図２で説明したような波形グラフィック表示を行い、処理を終了する。
【００４８】
なお、ステップ１１０６の表示は、読み込んだ表示用データに基づく表示を行うだけである。読み込んだ表示用データが、波形の全範囲について第３段階までのスキャンが終了していないものであっても、その時点の表示用データで（例えば図３のように）表示を行い、ステップ１１０６を終える。その後は、バックグラウンドプロセスで実行される図１０（ａ）の処理でスキャンが進み、最終的には全ブロックのスキャンが実行されて正確な表示用データで表示されることになる。
【００４９】
図１２は、フォアグラウンドプロセスの処理の１つであるエディット指示イベントの処理ルーチンを示す。ユーザが図２の画面で波形データの範囲を指定して何らかの編集指示操作を行うと、図１２の処理が実行される。ステップ１２０１で、指定された範囲の波形データに、指定された編集（エディット）処理を施す。次にステップ１２０２で、当該範囲のスキャン状態をＳＴ＝０に変更して、処理終了する。これ以後は、バックグラウンドプロセスで実行される図１０（ａ）の処理でスキャンおよび表示が実行される。ステップ１２０２ではＳＴ＝０をセットするだけで処理終了し、スキャンおよび表示はバックグラウンドプロセスに任されるので、編集された範囲に対してスキャンが行われる前でも再度の編集処理を施すことができる。
【００５０】
図１３は、フォアグラウンドプロセスの処理の１つである書き込み指示イベントの処理ルーチンを示す。ユーザが図２の画面で編集対象の波形データの保存を指示したとき、図１３の処理が実行される。ステップ１３０１で、書き込む波形ファイルのファイル名を決定する。次にステップ１３０２で波形データを書き込み、ステップ１３０３で表示用データを書き込み、ステップ１３０４で管理データを書き込み、ステップ１３０５でその他データを書き込み、処理を終了する。書き込みは、任意の記憶媒体に対する書き込みである。全範囲第３段階までのスキャンが終了していない波形データであっても、管理データおよび表示用データとともに保存されるので、次に読み込んだときには保存したときの状態からスキャンを再開でき処理時間が節約できる。
【００５１】
なお、上記実施の形態において、スキャン途中に保存の指示が来たとき、スキャン中の表示用データと管理データとを波形データとともに保存しているが、さらにその後、スキャンが完了したときに記憶媒体に記憶された表示用データおよび管理データを完成した表示用データおよび管理データで自動更新するようにしても良い。
【００５２】
【発明の効果】
以上説明したように、この発明によれば、波形データを編集する際、表示用データを作成するスキャンの途中であっても待たされることなく波形データの編集を行うことができる。その一方、表示途中で編集を行ったとしても、必ず最終的には編集結果に基づいた正確な表示用データを作成して表示することができる。また波形データの保存の際には、表示用データと管理データも保存し、再び読み出した場合に継続して表示用データの作成を行えるので、表示用データの作成時間を節約することができる。さらに、表示されている部分の表示データ作成を優先的に行うので、ユーザの興味のある部分を先に詳しく見ることができる
【図面の簡単な説明】
【図１】本発明に係る波形編集機能を実現するＰＣ（パーソナルコンピュータ）のブロック構成図
【図２】波形編集を行う画面例を示す図
【図３】波形データに対して編集を行ったときの表示画面例図
【図４】編集後の表示の変化の例を示す図
【図５】波形編集プログラム（波形エディタ）のメインルーチンのフローチャート図
【図６】フォアグラウンドプロセスおよびバックグラウンドプロセスの処理のタイミングを説明するタイミング説明図
【図７】波形ファイルの構造を示す図
【図８】波形データのアドレスおよび表示用データ取得ブロックのアドレスの構造説明図
【図９】波形データスキャン途中の状態例を示す図
【図１０】スキャン処理のフローチャートおよび管理データの変化を示す図
【図１１】読み込み指示イベントの処理ルーチンのフローチャート図
【図１２】エディット指示イベントの処理ルーチンのフローチャート図
【図１３】書き込み指示イベントの処理ルーチンのフローチャート図
【符号の説明】
１０１…ＣＰＵ（中央処理装置）、１０２…リード・オンリ・メモリ（ＲＯＭ）、１０３…ランダム・アクセス・メモリ（ＲＡＭ）、１０４…表示器、１０５…入力装置、１０６…ＭＩＤＩインターフェース、１０７…ドライブ装置、１０８…ＣＤ−ＲＯＭやハードディスクなど、１０９…書き込み回路、１１０…アクセス管理部、１１１…波形メモリ、１１２…音源、１１３…サウンドシステム、１１４…バスライン。
【図１】
0003671417.tif 000002
【図２】
0003671417.tif 000003
【図３】
0003671417.tif 000004
【図４】
0003671417.tif 000005
【図５】
0003671417.tif 000006
【図６】
0003671417.tif 000007
【図７】
0003671417.tif 000008
【図８】
0003671417.tif 000009
【図９】
0003671417.tif 000010
【図１０】
0003671417.tif 000011
【図１１】
0003671417.tif 000012
【図１２】
0003671417.tif 000013
【図１３】
0003671417.tif 000014