JPWO2010137312A1 - 不揮発性記憶システムおよび楽音生成システム - Google Patents

不揮発性記憶システムおよび楽音生成システム Download PDF

Info

Publication number
JPWO2010137312A1
JPWO2010137312A1 JP2011515894A JP2011515894A JPWO2010137312A1 JP WO2010137312 A1 JPWO2010137312 A1 JP WO2010137312A1 JP 2011515894 A JP2011515894 A JP 2011515894A JP 2011515894 A JP2011515894 A JP 2011515894A JP WO2010137312 A1 JPWO2010137312 A1 JP WO2010137312A1
Authority
JP
Japan
Prior art keywords
data
read
storage module
musical
sound generation
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.)
Withdrawn
Application number
JP2011515894A
Other languages
English (en)
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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JPWO2010137312A1 publication Critical patent/JPWO2010137312A1/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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/00Instruments in which the tones are synthesised from a data store, e.g. computer organs
    • G10H7/02Instruments 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
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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
    • G10H1/00Details of electrophonic musical instruments
    • G10H1/18Selecting circuits
    • G10H1/183Channel-assigning means for polyphonic instruments
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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
    • G10H2250/00Aspects of algorithms or signal processing methods without intrinsic musical character, yet specifically adapted for or used in electrophonic musical processing
    • G10H2250/541Details of musical waveform synthesis, i.e. audio waveshape processing from individual wavetable samples, independently of their origin or of the sound they represent
    • G10H2250/621Waveform interpolation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Electrophonic Musical Instruments (AREA)

Abstract

大容量NANDフラッシュメモリを楽音データ用のメモリとして使用した場合においても、高音質かつ小型の楽音生成システムを実現する。楽音データをN個の音高グループに分割し、それぞれを異なるN個の記憶モジュールに分割して記憶し、発音指示分類部(3000)が、外部からの発音指示をN個の発音指示群に分類し、該発音指示群に基づいてアクセスモジュールの各々に備えられた読み出し指示部が記憶モジュールの読み出し行うようにしたので、記憶モジュールから並列的に楽音データを読み出せるようにしている。このため、楽音生成システムのような、どの音高の楽音データの読み出し指示がなされるか予想のつかないシステムにおいて、複数のデータの読み出しの際に複数の記憶モジュールから並列的に読み出すことができ、発音遅延時間をその許容範囲内におさえることが可能となる。

Description

本発明は、楽器音などの楽音データを予め記憶した複数の不揮発性記憶モジュールから楽音データを読み出し、該楽音データに信号処理を施すことにより楽音を生成する楽音生成システムおよび不揮発性記憶システムに関する。
書き換え可能な不揮発性メモリを備える不揮発性記憶モジュールは、着脱型の記憶装置として半導体メモリカードを中心にその需要が広まっている。半導体メモリカードは、光ディスクやテープメディアなどと比較して非常に高価格なものではあるが、小型・軽量・耐震性・取り扱いの簡便さなどのメリットにより、デジタルスチルカメラや携帯電話などのポータブル機器の記録媒体としてその需要が広まっている。
この半導体メモリカードは、不揮発性の主記憶メモリとしてフラッシュメモリと、フラッシュメモリを制御するメモリコントローラとを有している。メモリコントローラは、デジタルスチルカメラなどのアクセスモジュールからの読み書き指示に応じて、フラッシュメモリに対する読み書き制御を行う。また、非着脱型の不揮発性記憶モジュールとして、デジタルスチルカメラやポータブルオーディオ機器本体内に組み込まれたもの、あるいはハードディスクの代替として、パーソナルコンピュータに組み込まれたものもある。
フラッシュメモリは、メモリセルアレイと、メモリセルアレイから読み出したデータを一時的に保持するため、あるいは外部から書き込まれたデータを一時的に保持するためのI/Oレジスタ(RAM)などから構成される。フラッシュメモリは、メモリセルアレイを構成するメモリセルへの書き込みや消去に比較的長い時間を必要とするため、複数のメモリセルに保持されているデータを一括して消去したり書き込んだりできる構造となっている。具体的には、フラッシュメモリは、複数の物理ブロックから構成され、各物理ブロックは、複数のページを含む。データの消去は、物理ブロック単位で行われ、データの書き込みは、ページ単位で行われる。
さて、電子楽器などの楽音データをROMに保持した楽音生成システムがある。楽音生成システムは、鍵盤などの打鍵操作に応じて楽器の音(以下、「楽音」という)を生成するシステムである。楽音生成システムは、通常32チャンネル以上の発音チャンネルを有しており、例えば、打鍵された順に発音チャンネルを割り当てて楽音を生成する。このシステムでは、ランダムな打鍵操作に対応して楽音を生成しなければならないので、ランダム読み出し速度の速いマスクROMが楽音データ用のROMとして使われている。
特許文献1によれば、フラッシュメモリの技術進歩に伴い、マスクROMのビット単価よりもフラッシュメモリのビット単価が下がることが予測されている。特許文献1には、マスクROMよりもランダム読み出し速度の遅いフラッシュメモリを楽音データ用のROMとして利用することによりシステムコストを合理化する技術が開示されている。
その予測通り、フラッシュメモリは、大容量化と低コスト化への要望に対応し、多値化とプロセスシュリンクによりギガビットクラスの多値NANDフラッシュメモリ(以下、「大容量フラッシュメモリ」という)が主流となってきた。それにより、フラッシュメモリは、ビット単価がマスクROMよりも遙かに安価になると共に、単位面積当たりの容量もマスクROMよりも遙かに大容量となり、システムの低価格化と小型化の可能性がますます高まっている。
尚、特許文献1の実施例で用いられた2値NANDフラッシュメモリ(品番:TC58V64FT)は、容量が64Mbit、メモリセルアレイからI/Oレジスタへアクセスしてデータを読み出すリードタイム(以下、「TR」という)は7μ秒と、2値NANDフラッシュメモリの中でも小容量かつ高速である旧式タイプのフラッシュメモリである。
特開2000−284783号公報
ここで、高音質を維持するため、ピアノ等の楽器音をデジタル録音した楽音データを非圧縮でマスクROMやNANDフラッシュメモリに記憶した高音質の楽音生成システムについて検討する。この場合には、メモリには、例えば、式(1)に示すように約621MByteの容量が必要となる。
44.1kHz×40秒×2Byte×2タッチ×88鍵盤≒621MByte・・(1)
尚、式(1)において、「44.1kHz」はサンプリング周波数であり、「40秒」は1つの鍵盤あたりの発音時間であり、「2Byte」は楽音データ1サンプルあたりの語長であり、「2タッチ」は最も強く打鍵した時と最も弱く打鍵した時の2つの場合を示しており、「88鍵盤」はピアノの総鍵盤数である。
従って前述した容量64Mbitの2値NANDフラッシュメモリを使用した場合、式(2)に示すように約77個のNANDフラッシュメモリを実装する必要がある。
621MByte÷64Mbit≒77個 ・・・(2)
従って、楽音生成システムを小型化することが困難となる。
一方、現在主流であるギガビットクラスの大容量フラッシュメモリを使用した場合は、該大容量フラッシュメモリを1個〜数個程度実装するたけで、621MByte分の楽音データを圧縮することなく記憶することができる。
しかしながら、大容量フラッシュメモリは、大容量データを一度に読み書きする速度を高めるためにページサイズを拡張したこと、及び多値化したことにより、リードタイムTRが50μ秒と桁違いに長くなった。楽音生成システムでは、通常32チャンネルを同時に発音することが要求されるが、32チャンネル目の楽音を生成しようとすると、式(3)に示すように発音遅延時間は少なくとも1.6m秒となる。
発音遅延時間=50μ秒×32=1.6m秒 ・・・(3)
尚、「発音遅延時間」とは、打鍵操作〜発音開始までの時間であり、その許容範囲は一般的に1m秒以内とされている。これが1m秒を超えてしまうと演奏上違和感をきたし、楽音生成システムとして成り立たない。
そこで、本発明は、現在主流である大容量フラッシュメモリなどのメモリを楽音データ用のメモリとして使用した場合においても、高音質かつ小型の楽音生成システムを実現することができる、アクセスモジュール、記憶モジュール、楽音生成システム、及びデータ書き込みモジュールを提供することを目的とする。
上記課題を解決するために、本発明の不揮発性記憶システムは、不揮発性記憶モジュールと、該不揮発性記憶モジュールに記録されたデータを読み出すアクセスモジュールと、を備えた不揮発性記憶システムである。
不揮発性記憶モジュールは、第1記憶モジュールから第N記憶モジュール(Nは自然数)までのN個の記憶モジュールを有し、該不揮発性記憶モジュールに記録されるデータは第1記憶モジュールから第N記憶モジュールまでの少なくともひとつ選択された記憶モジュールに記録される。
アクセスモジュールは、データ分類部と、読み出し指示部と、を備える。
データ分類部は、外部からのデータ読み出し指示に応じて、第1記憶モジュールから第N記憶モジュールのN個の記憶モジュールから該データが記録された記憶モジュールを決定する。読み出し指示部は、データ分類部の決定に基づいて、第1記憶モジュールから第N記憶モジュールのいずれかからデータを読み出す。
これにより、この不揮発性記憶システムでは、複数(N個)の記憶モジュールから並列的にデータを読み出すことができるので、例えば、現在主流である大容量フラッシュメモリなどのメモリを楽音データ用のメモリとして使用して、高音質かつ小型の楽音生成システムを実現することができる。
また、上記課題を解決するために、本発明の楽音生成システムは、第1記憶モジュールから第N記憶モジュール(Nは自然数)からなるN個の記憶モジュールを含み、楽音データを、第1音高グループから第N音高グループ(Nは自然数)からなるN個の音高グループに分割し、第k音高グループ(kは、1≦k≦Nを満たす自然数)の楽音データを、第k記憶モジュールに記憶することで、楽音データを音高グループ単位で分割してN個の記憶モジュールに記憶する記憶モジュール群と、記憶モジュール群に対して、データの読み出し指示を行うアクセスモジュールと、を備える。
そして、アクセスモジュールは、発音指示分類部と、N個の読み出し指示部と、を備える。
発音指示分類部は、外部からの発音指示を第1発音指示群から第N発音指示群(Nは自然数)のN個の発音指示群のいずれかに分類することができる。また、発音指示分類部は、発音指示がN個の音高グループのどの音高グループに属するかを決定し、発音指示が第k音高グループ(kは、1≦k≦Nを満たす自然数)に属するものであると決定された場合、当該発音指示を第k発音指示群(kは、1≦k≦Nを満たす自然数)に分類する。
N個の読み出し指示部とは、N個の発音指示群の各々に対応する楽音データを記憶するN個の記憶モジュールに対して、データ読み出し指示を出力する。
この楽音生成システムでは、楽音データを音高グループに分類し、それに対応させて、N個の記憶モジュールに楽音データが分割して記憶されており、アクセスモジュールから、読み出しに従って、複数(N個)の記憶モジュールから並列的に楽音データを読み出すことができる。これにより、現在主流である大容量フラッシュメモリなどのメモリを楽音データ用のメモリとして使用して、高音質かつ小型の楽音生成システムを実現することができる。
ここで、前記記憶モジュール群の各々は、複数の不揮発性記憶モジュールを含み、該複数の不揮発性記憶モジュールは楽音データを多重化して記録することが好ましい。
ここで、前記N個の読み出し指示部の各々は、外部からの1つの発音指示に応じて前記いずれかの不揮発性記憶モジュールからデータの読み出しを行い、当該読み出しを完了する前に、他の発音指示があったときに該読み出し中の不揮発性記憶モジュールと異なる不揮発性記憶モジュールから読み出しを並行して行うことが好ましい。
ここで、前記N個の読み出し指示部の各々は、1回の読み出し指示毎に複数サンプル分の楽音データをまとめて読み出すことが好ましい。
本発明によれば、楽音データをN個の音高グループ(音高グループ1〜N)に分割しそれぞれを異なるN個の記憶モジュール(記憶モジュール1〜N)に分割して記憶し、発音指示分類部が、外部からの発音指示を前記N個の音高グループのどの音高グループに属するかを決定しN個の発音指示(発音指示群1〜N)に分類し、該発音指示群1〜Nに基づいてN個の読み出し指示部が記憶モジュール1〜Nの読み出し行うようにしたので、複数の記憶モジュールから並列的に楽音データを読み出すことができる。このため、本発明を適用することで、楽音生成システムのような、どの音高の楽音データの読み出し指示がなされるか予想のつかないシステムにおいて、複数のデータの読み出しの際に複数の記憶モジュールから並列的に読み出すことができ、発音遅延時間をその許容範囲である1m秒よりも短くすることが可能となる。従って、本発明を適用することで、現在主流である大容量フラッシュメモリを楽音データ用のメモリとして使用した場合においても、低価格かつ小型の楽音生成システムを実現することが可能となる。
第1実施形態による楽音生成システムの不揮発性記憶モジュールを示すブロック図 第1実施形態による楽音生成システムのアクセスモジュールを示すブロック図 不揮発性メモリバンク112〜142のメモリセルアレイの構造を説明した説明図 ページ内の記録フォーマットをPB0のP0を例に説明した図 物理セクタ番号PSNを示すビットフォーマット 楽音データバッファ231を示すブロック図 チャンネルアサインテーブル232を示す説明図 チャンネルアサインテーブル232を示す説明図 チャンネルアサインテーブル232を示す説明図 NNテーブル233Aを示す説明図 チャンネルレジスタ241を示すメモリマップ MMレジスタ242を示すメモリマップ 楽音データ1サンプルを示すビットフォーマット ピアノの楽音データの特性情報を示す説明図 メモリ構成情報を示す説明図 CPU部230Aのメインルーチンを示すフローチャート CPU部230Aの割り込みルーチンを示すフローチャート 読み出し指示部240のメインルーチンを示すフローチャート 読み出し指示部240の割り込みルーチン1を示すフローチャート 読み出し指示部240の割り込みルーチン2を示すフローチャート 読み出し指示情報を示すビットフォーマット 演奏データを示すビットフォーマット メモリコントローラの処理を示すフローチャート メモリコントローラが不揮発性メモリバンクに発行するリードコマンドのタイムチャート 記憶モジュール100Aから外部バス上に読み出された際の楽音データを示すビットフォーマット 信号処理部220の処理を示すフローチャート PDが値0の時の打鍵後のLDの時間変化を示すグラフ PDが値1の時の打鍵後のLDの時間変化を示すグラフ 1サンプリング周期あたりの信号処理を示すタイムスロット図 楽音生成システムのタイムチャート 楽音生成システムのタイムチャート 楽音生成システムのタイムチャート 本発明の第2実施形態における楽音生成システムを示すブロック図 楽音データの音名コードと、記憶モジュール1100〜1300に分割的に記憶する楽音データの対応関係を示す表 記憶モジュール1100の記録状態を表すメモリマップ
以降、発明を実施するための最良の形態について説明する。第2実施形態が前述した解決手段の構成に対応するが、第2実施形態を構成する構成要素の動作を、第1実施形態で説明する。
[第1実施形態]
<1.1:楽音生成システムの構成>
図1A、図1Bは、第1実施形態における楽音生成システム(不揮発性記憶システム)を示すブロック図である。楽音生成システムは、図1Aに示す記憶モジュール100Aと、図1Bに示すアクセスモジュール200Aとを含んで構成される。
記憶モジュール100Aは、図1Aに示すように、不揮発性記憶モジュール110A、120A、130A、および、140Aを1つの筐体内に納め、アクセスモジュールに装着して使用するものである。
不揮発性記憶モジュール110A、120A、130A、および、140Aは、それぞれ、メモリコントローラ111A、121A、131A、および、141Aと、不揮発性メモリバンク112、122、132、および、142とを含む。
アクセスモジュール200Aは、図1Bに示すように、入出力部210Aと、信号処理部220と、CPU部230Aと、読み出し指示部240とを含み、32チャンネル分の楽音を同時に出力できるようにしたものである。以下、チャンネル番号をCH0〜CH31とする。
CPU部230Aは、楽音データバッファ231と、チャンネルアサインテーブル232と、NNテーブル233Aと、演奏データバッファ234と、転送監視部235とを含む。
(1.1.1:不揮発性記憶モジュール110A〜140A)
次に、不揮発性記憶モジュール110A〜140Aの各部について詳細に説明する。
不揮発性メモリバンク112〜142は、フラッシュメモリであり、それぞれ、I/Oレジスタ113、123、133、143と、メモリセルアレイ114、124、134、144とを含む。
I/Oレジスタ113〜143は、それぞれ、4096Byte+128Byteの容量を有するRAMである。
メモリセルアレイ114〜144は、それぞれ、1024個の物理ブロックを有する。物理ブロックは、フラッシュメモリの消去単位である。尚、以降、物理ブロックを「PB」と、物理ブロック番号を「PBN」と、物理セクタ番号を「PSN」と、それぞれ、表記する。例えば、物理ブロック番号PBNが「0」の物理ブロックを「PB0」と表記する。
図2は、不揮発性メモリバンク112〜142のメモリセルアレイの構造を説明するための図である。不揮発性メモリバンク112〜142は、それぞれ、物理ブロックPB0〜PB1023を有している。また、各物理ブロックは、それぞれ、256ページ(P0〜P255)から構成される。
図3は、各ページ内の記録フォーマットについて、物理ブロックPB0のページP0を例に説明した図である。全物理ブロックの各ページは、4096Byteのデータ領域と128Byteの冗長領域とから成る。本実施形態において、データ領域は、8セクタに分割される。各セクタは、512Byteの容量を持つ。また、冗長領域は使用しない。尚、記録されているデータの詳細については後述する。
図4は、物理セクタ番号PSNを示すビットフォーマットである。図4において、ビットb0〜b2は、ページ内セクタ選択ビットであり、b3〜b10は、ページ番号を示すビットであり、b11〜b20は、物理ブロック番号を示すビットである。
ページ内セクタ選択ビットは、ページ(ページの先頭アドレス)をセクタサイズで割り算した商に相当するビットである。本実施形態においては、ページサイズを4096+128Byteとし、セクタサイズを512Byteとした場合、即ち、図3に示すように1ページが8個のセクタに分割される場合であり、これらを前述した物理アドレスの下位3bitによって選択する。尚、ページサイズやセクタサイズは前述した値に限定される必要はなく、その値に応じてページ内セクタ選択ビットを可変としても構わない。
メモリコントローラ111A〜141Aは、アクセスモジュール200Aから供給された読み出し指示情報を、不揮発性メモリバンク112〜142へのリードコマンドに変換するためのインターフェース回路やバッファ等を備えたものである。該インターフェース回路は、市販のメモリカード(例えば、SDカード)にも搭載されているものであるので、説明を省略する。
(1.1.2:アクセスモジュール200A)
次に、アクセスモジュール200Aの各ブロックについて、図1Bを用いて詳細に説明する。演奏データは、外部のマスターキーボード300の打鍵などの操作に応じて生成され、入出力部210Aを介してCPU部230Aに取り込まれる。
入出力部210Aは、マスターキーボード300から演奏データを入力するための端子と、信号処理部220が生成した楽音をデジタル−アナログ変換するDAコンバータと、該変換後の楽音を増幅するアンプ部と、そのアンプ部の出力を外部に出力するためのラインアウト端子とを含む。
信号処理部220は、CPU部230Aから供給された最大で32チャンネル分の楽音データの補間演算やレベル制御を行った後に、発音チャンネルのミキシングや、リバーブなどのエフェクト処理を行うことにより楽音を生成するブロックである。信号処理部220は、デジタルシグナルプロセッサ(以下、「DSP」という)、該DSPのプログラムを格納したROM、及び、エフェクタ処理に必要な遅延素子のために、あるいはパラメータを一時記憶するために必要なRAMなどによって構成される。
CPU部230Aは、入出力部210Aが受信した演奏データについてチャンネルアサイン処理を行い、読み出し指示部240に対して不揮発性記憶モジュール110A〜140Aの読み出しを要求すると共に、読み出し指示部240が不揮発性記憶モジュール110A〜140Aから読み出した楽音データと、演奏データの一部とを信号処理部220に供給するブロックである。
図5は、CPU部230Aに含まれる楽音データバッファ231を示すブロック図である。楽音データバッファ231は、231_0〜231_3の4つのバッファから構成される。各バッファの内部の回路構成は、同一であり、下記(a)〜(d)に示す通り、発音チャンネルによって使い分けられる。
(a)バッファ231_0・・・CH0、4、8、12、16、20、24、28の楽音データの一時記憶用
(b)バッファ231_1・・・CH1、5、9、13、17、21、25、29の楽音データの一時記憶用
(c)バッファ231_2・・・CH2、6、10、14、18、22、26、30の楽音データの一時記憶用
(d)バッファ231_3・・・CH3、7、11、15、19、23、27、31の楽音データの一時記憶用
バッファ231_0は、デュアルポートRAM231_0a、231_0b及びマルチプレクサ231_0c、デマルチプレクサ231_0dを有している。デュアルポートRAM231_0a、231_0bは、それぞれ、CH0、4、8・・・28迄の8つのチャンネル分のデータを一時記憶する4kByteのRAMであり、1チャンネルあたり512Byteの記憶容量を有する。バッファ231_1は、デュアルポートRAM231_1a、231_1b及びマルチプレクサ231_1c、デマルチプレクサ231_1dを有している。デュアルポートRAM231_1a、231_1bは、それぞれ、CH1、5、9・・・29迄の8つのチャンネル分のデータを一時記憶する4kByteのRAMであり、1チャンネルあたり512Byteの記憶容量を有する。また、他のバッファバッファ231_2、231_3についても同様の構成であり、前述のチャンネル用のバッファとして用いられる。
図6A〜図6Cは、CPU部230Aに含まれるチャンネルアサインテーブル232を示す説明図である。チャンネルアサインテーブル232は、全チャンネル、即ちCH0〜CH31の発音状態などのステータスを表す以下の情報が保持されている。以下、これらの情報について説明する。
発音中フラグSONは、対応するチャンネルが発音中か否かを示すフラグであり、値0の時は発音中チャンネル、値1の時は空きチャンネルであることを示す。
KONフラグは、打鍵してから離鍵されるまでの間に値1になるフラグである。
ノートナンバーNNは、ピアノの鍵盤位置に対応する16進数の番号である。
タッチパラメータTPは、打鍵の強さに対応する強弱情報である。
レベルデータLDは、打鍵の強さに応じて決まる楽音の音量に対応するものである。
強制消音フラグFは、楽音を強制的に消音するためのフラグである。
セクタカウントSCは、楽音データが1セクタ分即ち128サンプル分読み出される毎にカウントアップするカウンタである。
ウェーブエンドフラグWEは、楽音データの最終サンプル、即ちs1763999が楽音生成のために処理されたことを示すフラグである。
エンベロープエンドフラグEEは、打鍵の状態やサスティンペダルの状態に応じて変化する楽音の音量変化(以下、「エンベロープENV」という)が、聴感上聞こえない音量レベルになった時に値1にセットされるフラグである。
楽音データ読み出し要求フラグDQは、信号処理部220が楽音の生成として使用した楽音データのサンプル数が所定の閾値(例えば96サンプル)に到達した時点でセットされるフラグである。
選択フラグMは、楽音データバッファ231のうちバッファ231_0については、デュアルポートRAM231_0aと231_0bのどちらに楽音データを書き込むかを選択するフラグである。バッファ231_1〜231_3も同様である。
選択フラグDは、バッファ231_0については、デュアルポートRAM231_0aと231_0bのどちらに記憶されている楽音データを信号処理部220に転送するかを選択するフラグである。バッファ231_1〜231_3も同様である。尚、フラグDとMは、バッファ231_0については、値0の時にデュアルポートRAM231_0aを選択し、値1の時にデュアルポートRAM231_0bを選択する。バッファ231_1〜231_3も同様である。
図7は、CPU部230Aに保持されているNNテーブル233Aを示す説明図である。NNテーブルとは、ノートナンバーNNと、該NNに対応する楽音データを記憶した物理ブロック番号との関係を示すテーブルである。
演奏データバッファ234は、マスターキーボード300から入力された複数の演奏データを保持するFIFO(First In First Out)メモリである。
CPU部230A内の転送監視部235は、データ転送を監視し、各バッファ231_0〜231_3の2つのいずれかのチャンネルに対応するエリアにデータが一時記憶され終わると、信号処理部220に対して転送完了フラグTRNFを転送するものである。
読み出し指示部240は、CPU部230Aの読み出し要求と不揮発性記憶モジュール110A〜140Aのアクセス状態に応じて、不揮発性記憶モジュール110A〜140Aに読み出し指示情報を転送するブロックである。
読み出し指示部240は、チャンネルレジスタ241及びMMレジスタ242を含んでいる
図8は、読み出し指示部240に含まれるチャンネルレジスタ241を示すメモリマップである。チャンネルレジスタ241は、32チャンネル分の読み出し指示状態を表すレジスタであり、32チャンネル分について、読み出し指示情報と、読み出し要求フラグRRQと、読み出し指示情報転送フラグRDTとを有している。
読み出し要求フラグRRQ(以下、「RRQ」という)は、CPU部230Aが読み出し要求をしない間は値0であり、要求があれば値1となるフラグである。
読み出し指示情報転送フラグRDT(以下、「RDT」という)は、読み出し指示部240が読み出し指示情報を不揮発性記憶モジュール110A〜140Aのいずれかに転送した時に立てられ、要求をしなくなったときにリセットされるフラグである。
図9は、読み出し指示部240に含まれるMMレジスタ242を示すメモリマップである。MMレジスタ242は、不揮発性記憶モジュール110A〜140Aのアクセス状態を表すレジスタであり、不揮発性記憶モジュール110A〜140Aの4モジュール分について読み出し中フラグRBSYを有している。不揮発性記憶モジュール110はMMNが0(以下、「MM0」という)、不揮発性記憶モジュール120はMMNが1(以下、「MM1」という)、不揮発性記憶モジュール130はMMNが2(以下、「MM2」という)、不揮発性記憶モジュール140はMMNが3(以下、「MM3」という)に対応する。読み出し中フラグRBSY(以下、「RBSY」という)は、読み出し指示部240が不揮発性記憶モジュール110A〜140Aに読み出し指示情報を転送したときに値1にセットされ、不揮発性記憶モジュール110A〜140Aから該読み出し指示情報に対応するデータ(512Byte分)が読み出されたときに値0にリセットされる。
また、MMレジスタ242は、不揮発性記憶モジュールMM0〜MM3のそれぞれに8個の登録枠1〜8を含み、それぞれの登録枠1〜8はMAFとCHNを含む。MAFは、モジュールアサインフラグを示し、このフラグが値1の場合、対応する不揮発性記憶モジュールに読み出し指示情報が転送されていて発音中であることを表す。MAFは対応するチャンネルの発音が終了した時点で値0にリセットされる。また、CHNは、発音中のチャンネル番号を表す。不揮発性記憶モジュール110A〜140Aは、それぞれ、最大8チャンネル分の読み出し指示情報を受け付けることが可能となる。
≪初期状態≫
まず、記憶モジュール100A、あるいは図1Aと図1Bに示した楽音生成システムの出荷前において、メーカー側で処理する初期化の内容について説明する。本実施形態では、ピアノの楽音データを44.1kHzのサンプリング周波数でデジタル録音した場合において、各音高毎に約40秒分の楽音データを圧縮せずに各不揮発性メモリバンク112〜142に記録する。なお、ピアノの鍵盤を打鍵してから音が十分減衰するまでの時間を40秒とする。この場合には式(4)に示すとおり、1764000サンプルとなる。
44.1kHz×40秒=1764000サンプル ・・・(4)
ここでは、最強タッチと最弱タッチの2種類について、あらかじめデジタル録音したピアノの楽音データを、図2に示すように不揮発性メモリバンク112の物理ブロックPB0〜PB703に、ピアノの最低音から最高音に至る88鍵分の楽音データを昇順に書き込む。不揮発性メモリバンク112〜142にもそれぞれ同一のデータを同様に書き込む。これによって同一のデータを4つの並列化された不揮発性メモリバンクに多重化して記録する。
各メモリバンクのPB0〜PB7には、ピアノの最低音のデータが記録され、PB0のP0から昇順に打鍵直後の先頭サンプル(s0)から順番に最後尾サンプル(s1763999)までの1764000サンプル分の楽音データが記憶されている。但し、図3に示すように、512Byte単位で、最弱タッチと最強タッチの2種類の楽音データが組となって書き込まれる。
図10は、楽音データの1サンプルを示すビットフォーマットである。図10において、b15には、正負を表すサインビットが書き込まれ、b15〜b1までの15ビットが楽音データの1サンプルとして使用される。b0には、ウェーブエンドフラグWEが記録される。フラグWEは、対応するサンプルが最終サンプルかどうかを示すフラグであり、値1の場合は最終サンプルであるとする。
更に初期化の際には、不揮発性メモリバンク112の最終物理ブロックPB1023のページP0には、記憶モジュール100Aに記録されているピアノの楽音データの特性情報(以下、「記録データ特性情報」という)と記憶モジュール100Aのメモリ構成に係る情報(以下、「メモリ構成情報」という)を書き込んでおく。
図11は、記録データ特性情報の一例を示す説明図である。この特性情報には、少なくとも楽音データのサンプリング周波数(この場合は44.1kHz)の情報が含まれている。また、リバーブ及びコーラスは、エフェクト処理をする際に用いられる。なお、図11のテーブルにおいて、備考欄は実際に記録されているものではなく、参考情報である。
図12は、記憶モジュール100Aのメモリ構成情報の一例を示す説明図である。ここで、図12のセクタサイズは、1回の読み出し指示毎に読み出すデータのサイズを示しており、リードタイムTRは、メモリセルアレイからIOレジスタへの読み出し時間を示す。転送時間TT1は、各メモリバンクのIOレジスタからメモリコントローラ内にバッファリングする時間を示す。なお、図12のテーブルにおいて、備考欄は実際に記録されているものではなく、参考情報である。
<1.2:楽音生成システムの動作>
以上のように構成された、本発明の第1実施形態における楽音生成システムの動作について説明する。
(1.2.1:電源立ち上げ時の初期化処理)
アクセスモジュール200A及び記憶モジュール100Aの電源立ち上げ後、アクセスモジュール200A及び記憶モジュール100Aは、それぞれ、初期化処理を開始する。記憶モジュール100Aの初期化処理は、それぞれのメモリコントローラが行い、初期化が完了するとアクセスモジュール200Aに対してアクセスを許可する。なお、メモリコントローラの初期化処理については一般的であるので説明を省略する。
アクセスモジュール200Aの初期化処理は、CPU部230Aによる処理と読み出し指示部240による処理とに分かれて行われる。
アクセスモジュール200AのCPU部230Aは、図13Aのフローチャートに示すように、S100において初期化処理を行う。初期化処理では、信号処理部220のリセットや、楽音データバッファ231内のバッファ231_0〜231_3内の各デュアルポートRAMをクリアする。信号処理部220をリセットすることにより、信号処理部220は、内部のDSPのプログラムカウンタのカウントアップを開始する。また、図6A〜図6Cに示すチャンネルアサインテーブル232の初期設定、即ち、以下の処理を行う。
(1)SONを値0、即ちCH0〜31を空きチャンネルに設定
(2)KON、PD、NN、TP、LD、F、SC、WE、DQ、M、Dを値0に設定
(3)EEを値1に設定
その後、アクセスモジュール200Aは、不揮発性記憶モジュール110Aに対して、記録データ特性情報とメモリ構成情報の読み出し指示情報とを転送する。図15は、アクセスモジュール200Aから不揮発性記憶モジュール110に対する読み出し指示情報を示すビットフォーマットである。なお、b22とb21は、読み出し以外の指示にも拡張できるように設けたが、本実施形態においては、読み出し以外の指示は行わないので値11に固定する。なお、これらの特性情報は、不揮発性メモリバンク112のPB1023のP0の0番地から512Byte分以内に書き込まれている。アクセスモジュール200Aは、この読み出し指示情報を不揮発性記憶モジュール110に転送することによって、記録データ特性情報とメモリ構成情報を読み出すことができる。
CPU部230Aは、図11に示す記録データ特性情報を取得すると、サンプリング周期(22.7μs)を信号処理部220内のタイマーにセットし、1サンプリング時間の信号処理のタイムスロットの1周期を決定する。このタイマーは信号処理部220内のDSPの1周期を制御するためのタイマーとして機能する。CPU部230Aは、記録データ特性情報内の1サンプル容量(2Byte)とフラグ割り当てビット(b0)を信号処理部220内のRAMのパラメータとして書き込み、楽音データが図10に示すビットフォーマットのどのビット位置に相当するかを決定するためのパラメータとして使用する。
また、CPU部230Aは、記録データ特性情報内の最大発音チャンネル数(32CH)によって、チャンネルアサインテーブル232のチャンネル枠を決定すると共に、信号処理部220のタイムスロットのチャンネル数を決定する。また、信号処理部220は、リバーブとコーラスによりエフェクト処理を決定する。図11の場合にはエフェクト処理としてリバーブのみを行うことを決定する。
さらに、CPU部230Aは、図12に示すメモリ構成情報を取得すると、不揮発性記憶モジュール数に基づき、式(5)を実行することにより並列数を求める。
並列数=不揮発性記憶モジュール数 ・・・(5)
1つの不揮発性記憶モジュールあたりにアサインされる、即ち読み出し指示情報が転送されるチャンネルの最大数(モジュール当たり最大チャンネル数)は、式(6)によって与えられる。
モジュール当たり最大チャンネル数=CHN÷並列数 ・・・(6)
本実施形態においては、CHNは32、並列数が4であるので、式(6)によれば不揮発性記憶モジュール110A〜140Aのそれぞれは最大8チャンネル分の読み出し指示情報をアサインすることが可能となる。各チャンネルをどの不揮発性記憶モジュールにアサインするかについては後述する。
CPU部230Aは、図12に示すメモリ構成情報の中のセクタサイズ(512Byte)を参照し、記憶モジュール100Aからのデータの読み出し単位のサイズを512Byteとして管理する。また、式(7)を実行することにより、セクタ毎の総サンプル数(以下、usnという)を決定する。
usn=セクタサイズ/1サンプルサイズ/タッチ数 ・・・(7)
本実施形態においては、セクタサイズが512Byte、1サンプルサイズが2Byte、タッチ数が2であるので、usn=128サンプルとなる。
さらに、CPU部230Aは、図11に示す記録データ特性情報の中の1ノートあたりの占有容量と、メモリ構成情報の中のページサイズと1物理ブロックあたりのページ数TPN(この場合は256)とに基づき、式(8)を実行することにより、1ノートあたり必要な物理ブロック数を算出する。
1ノートあたり必要な物理ブロック数=1ノートあたりの占有容量/(ページサイズ×TPN)=8個 ・・・(8)
そして、最低音A−1から最高音C7まで、それぞれのノートに対応するPBNを決定し、図7に示すNNテーブル233Aを生成する。
以上メインルーチンにおいて、記録データ特性情報とメモリ構成情報とを読み出し、各種パラメータの設定処理によってCPU部230Aは初期化処理(S100)を終える。
図14Aは、読み出し指示部240の通常処理を示すフローチャートであり、図14B及び図14Cは、その割り込み処理を示すフローチャートである。
読み出し指示部240は、図14Aのフローチャートに示すように、S200において初期化処理を行う。初期化処理では、読み出し指示部240が、記憶モジュール100Aの全ての不揮発性記憶モジュールからアクセス許可を受信すると、読み出し指示部240は、CPU部230Aに対してアクセス可能であることを通知する。
CPU部230Aは、読み出し指示部240からアクセス可の通知を受けると、S110から通常動作処理S101に移行し、割り込みをイネーブルにして外部のマスターキーボード300からの演奏データを受付ける。
(1.2.2:通常動作時の処理)
(1)全体的な動作説明
演奏データの入力から楽音の生成に至る全体的な動作説明を、CPU部230Aのフローチャート及び読み出し指示部240のフローチャートを中心に説明する。なお、CPU部230Aのフローチャートと読み出し指示部240のフローチャートは独立して実行されるものである。
図13Bは、CPU部230Aの割り込みルーチンを示しており、マスターキーボード300の演奏操作によって演奏データがアクセスモジュール200Aに転送された際に起動される。図13Aに示すメインルーチンの処理中にマスターキーボード300の演奏操作がなされると、即座に割り込みルーチンに移行する。なお、割り込みルーチンは多重割り込みが可能、即ち割り込みルーチン中であっても、次の割り込みを受け付けるものとする。
一方、読み出し指示部240のフローチャートにおいて、割り込みルーチンは、図14Bに示す割り込みルーチン1と図14Cの割り込みルーチン2とからなり、それらに優先順位はなく、また、いずれも多重割り込みが可能である。割り込みルーチン1は、CPU部230Aから読み出し要求があった時に起動されるルーチンであり、割り込みルーチン2は、記憶モジュール100Aから楽音データを受信した時に起動されるルーチンである。
まず、通常動作処理S101への移行後、マスターキーボード300の演奏操作がなされないとすると、全チャンネルの強制消音フラグFは値0であり、また、読み出し要求フラグDQは値0であるので、S102とS107の分岐はNoとなり、S102とS107の分岐処理を永続的に実行することとなる。
マスターキーボード300の演奏操作がなされると、図13Bに示す割り込みルーチンが起動される。この割り込み処理について説明する。
図16は、マスターキーボード300から転送される演奏データを示すビットフォーマットである。演奏データには、打鍵に応じて生成される打鍵データと、サスティンペダルのON/OFF操作に応じて生成されるペダルデータとの2種類がある。それらのデータは、b15の値によって識別される。打鍵データにおいて、KONフラグ、ノートナンバーNN、及びタッチパラメータTPは前述のものである。ペダルデータにおいて、PDはサスティンペダルがONされた時に値1になるフラグである。なお、サスティンペダルとは、離鍵時にも音を持続させるためのペダルであり、本物のピアノにも備えられたペダルである。
割り込みルーチンにおいて、まず、マスターキーボード300から入出力部210Aを介して転送された演奏データを、演奏データバッファ234に取得する(S120)。この演奏データのフォーマットは図16に示すように、打鍵データまたはペダルデータのいずれかである。演奏データバッファ234に、既に取得した未処理の演奏データがなければ(S121)、今回取得した演奏データをチェックする(S122)。具体的には図16に示す演奏データのb15を調べることにより、打鍵データであるかペダルデータであるかを識別する。演奏データがペダルデータである場合は(S123)、図16に示すペダルデータ内のb14即ちPDフラグをそのままチャンネルアサインテーブル232内のPDにコピーし(S124)、S132に移行する。
一方、演奏データが打鍵データの場合は(S123)、図16に示す打鍵データのb14からKONフラグを抽出し(S125)、S126においてKONの値をチェックし、KONが値0の場合即ち離鍵の場合は、S132に移行する。
KONが値1の場合即ち打鍵の場合は、チャンネルアサインテーブル232内において空きチャンネルがあるかどうかを調べる(S127)。具体的には、CH0から昇順に値0の発音中フラグSONがあるかどうかを調べ、あれば最初に見つかったチャンネルに該演奏データをアサインする(S129)。チャンネルアサイン処理においては、下記の通りアサイン先のチャンネルの各情報の設定を行う。
(1)SONを値1にセット
(2)NNとTPを打鍵データからコピー
(3)SC、WE、EE、DQ、M、Dを値0に設定
さて、CPU部230Aはチャンネルアサイン処理の後、読み出し指示部240に対して読み出し要求と共に図15に示す楽音データの読み出し指示情報を渡す。読み出し指示情報は以下の手順で求められる。
(a)打鍵データのNNに基づきNNテーブル233Aを参照し、先頭PBNを求める。
(b)先頭PBNとSCに基づき式(9)を実行することによりPSNを求める。
PSN=(先頭PBN<<11)+SC ・・・(9)
但し、&は論理積をとる演算子、|は論理和をとる演算子、<<は左にビットシフトする演算子である。
(c)式(9)により求められたPSNは21ビットであり、その上位の2ビットは「11」である。従って、次の式(10)を実行することにより読み出し指示情報を求める。尚、“0x”は16進数を表す記号である。図15は、この読み出し指示情報を示す。
読み出し指示情報=0x600000|PSN ・・・(10)
このようにして、CPU部230Aは読み出し先のPSNを決定し、図15に示すフォーマットにて読み出し指示部240に読み出し指示情報を渡す。読み出し指示部240は、読み出し要求と対応するCHNと読み出し指示情報を受け取ると、まず、受け取ったCHNと読み出し指示情報をチャンネルレジスタ241に登録する。その後、MMレジスタ242に基づき読み出し対象となる不揮発性記憶モジュールを決定する。そして、楽音データの読み出し中でなければ、チャンネルレジスタ241に登録されている読み出し指示情報を該不揮発性記憶モジュールに転送し、所望の楽音データを読み出す。
≪読み出し指示部240による記憶モジュール100Aの楽音データの読み出し≫
次に、読み出し指示部240による記憶モジュール100Aの楽音データの読み出しについて、図14A〜図14C及び図17のフローチャートを中心に説明する。
まず、読み出し指示部240は、図14Aに示すメインルーチンにおいて、前述した初期化処理(S200)の後に、通常処理(S201)に移行する。CPU部230Aから読み出し要求がない間は、チャンネルレジスタ241内のRRQは全て値0であり、その場合はCPU部230Aが管理しているEEの変化をモニターし、その結果に応じてMMレジスタ242のフラグ操作を行う(S203)。具体的には、MMレジスタ242のMAFが値1となっているチャンネルについて、EEが値0から値1に変化、即ち発音中から無音状態に変化したチャンネルはMAFを値0にリセットし、登録枠から該チャンネルを除外する。その後、S202に戻り、以降、S202とS203の判断分岐を永続的に実行し続けることとなる。
そして、CPU部230Aから読み出し要求を受け取ると、メインルーチンのS202とS203のループから図14Bの割り込みルーチン1に移行し、チャンネルレジスタ241に読み出し指示情報を登録し、読み出し指示情報と同時に転送されるCHNをチャンネルレジスタ241のCHN欄に登録する(S220)。さらに、前記CHNに対応するRRQを値1にセットし(S221)、割り込みを終了しメインルーチンに戻る。なお、図8に示す例は、CPU部230AからCH0〜3の読み出し要求がなされ、以降に説明する処理によって各フラグが変化する様子を示した例である。具体的には、CH0〜3の読み出し要求と不揮発性記憶モジュール110A〜140Aへの読み出し指示情報の転送を完了し、不揮発性記憶モジュール110A、120Aからアクセスモジュール200Aへの楽音データの転送を完了した時点までを表している。この動作によって、チャンネルレジスタ241内の各フラグの値が変化することとなる。また、MMレジスタ242(図9)についても、各不揮発性記憶モジュール(MM0〜MM3)が読み出し中か否かを示すフラグRBSY等の値を変化させることとなる。
図14Aのメインルーチンにおいては、CH0〜3のRRQが値1となったので、S202からS204に移行し、MMレジスタ242に基づきアサイン状況、CH0〜3に対応する読み出し指示情報が不揮発性記憶モジュールにアサイン(転送)されたかどうかについてチェックする。具体的には、S205において、登録枠1〜8をチェックしMAFが値1になっているCHNがCH0〜3のいずれかであれば、既にアサイン済みであると判断する。そして、MAFが値1になっているCHNがCH0〜3である不揮発性記憶メモリモジュールを読み出し指示情報の転送先に決定する(S206)。
一方、アサイン済みでなければ、S207において、MMレジスタ242においてMAFが値1となっている登録枠の個数(登録数)を計数し、登録数が最も少ない不揮発性記憶メモリモジュールを読み出し指示情報の転送先に決定する。なお、登録数が最も少ない不揮発性記憶メモリモジュールが複数ある場合は不揮発性記憶メモリモジュールの小さい方を優先的に選択する。その後、読み出し指示情報の転送先に決定した不揮発性記憶メモリモジュールにおいて、MAFが値0となっている登録枠のいずれかのMAFを値1にセットすると共に、対応するCHN欄にアサイン対象であるCHNの値を登録する(S207)。なお、最初は、MMレジスタ242は未登録状態であるので、CH0〜3は図9に示すように、それぞれMN0〜3の登録枠1に登録されることとなる。
次に、MMレジスタ242の読み出し中フラグRBSYを参照し、不揮発性記憶モジュール110A〜140Aが読み出し中か否かを判断する(S209)。最初は、MMレジスタ242のRBSYは全て値0、即ち不揮発性記憶モジュール110A〜140A全てが読み出し中ではないので、まず、CH0の処理においてS210に移行する。
そして、読み出し指示部240はCH0に対応する読み出し指示を不揮発性記憶モジュール110に転送し(S210)、チャンネルレジスタ241の対応するチャンネルのRDTを値1にセットする(S211)。さらに、MMレジスタ242の対応する記憶モジュール(MM0)のRBSYを値1にセットすると共に、MM0の読み出し中CHNの欄に0を設定する(S212)。これは不揮発性記憶モジュール110からCH0の楽音データを読み出し中であることを示している。
以上の処理を、チャンネルレジスタ241においてRRQが値1となっているチャンネル、即ちCH0〜3について実行する。
図17は、各メモリコントローラの処理を示すフローチャートである。読み出し指示情報を受信すると(S300)、該読み出し指示情報に含まれるPSNを読み出し先アドレスとしてリードコマンドを不揮発性メモリバンクに出力する(S301)。その結果、読み出された楽音データをアクセスモジュール200Aに転送する(S302)。
図18は、メモリコントローラが不揮発性メモリバンクに発行するリードコマンドのタイムチャートである。コマンド1は、次に物理アドレスの転送開始を通知するコマンドであり、コマンド2は、メモリセルアレイからI/Oレジスタに物理アドレスに記憶されている楽音データを読み出すことを指示するコマンドである。
ここで、リードコマンドは、図18に示す通り、時刻t1にコマンド1を出力した直後に物理アドレスを出力し、その後、コマンド2を出力する。このアドレッシングタイムTAは数百n秒程度であるので時間的に無視できる。
なお、図18における物理アドレスとは、図4のPBNとページ番号とページ内セクタ選択ビットによって512Byte単位で指定される物理アドレスである。また、この物理アドレスは、読み出したい楽音データが記憶されているスタート番地(バイト単位)を指定するものであり、該スタート番地から対応するページの最終番地までの楽音データがTR中に対応するI/Oレジスタに読み出される。その後、転送時間TT1の間に512個のリードクロックを与えることによって、所望の512Byte分の楽音データがI/Oレジスタからメモリコントローラに読み出されることとなる。
さて、読み出し指示部240が、CH0〜3に対応する読み出し指示情報をそれぞれ不揮発性記憶モジュール110A〜140Aに発行し終わると、CH0〜3のRDTが全て値0となる。従って、図14Aにおいて、再びS202からS203の判断分岐をループするようになる。
アクセスモジュール200Aは、転送された楽音データを読み出し指示部240を介して楽音データバッファ231に一時記憶する。この時、読み出し指示部240は、512Byte分(1セクタ分)の楽音データを受け取ったことを検知すると、図14Cの割り込みルーチン2に制御を移し、MMレジスタ242の対応するMMNのRBSYを値0にリセットし(S230)、さらに、チャンネルレジスタ241の対応するCHNのRDTとRRQを値0にリセットする(S231)。さらに、MMレジスタ242の対応するMMNの読み出し中CHNを取得し(S232)、受信した楽音データを、楽音データバッファ231内のどのバッファに一時記憶するかを決定する。
チャンネルレジスタ241のRRQが値0になっているエリアは、次の新たな読み出し指示情報のエリアとして解放されたエリアとなる。因みに、RRQが値0になっている場合は、S231によりRDTも値0になっているし、S230によりMNレジスタ242のRBSYも値0になっている。なお、チャンネルレジスタ241への読み出し指示情報の登録は、最上段のエリアから順に使用され、最下段に到達した時点で再び最上に戻るように、即ち巡回的に使用される。
アクセスモジュール200Aは、いずれかの不揮発性記憶モジュールから楽音データを受信すると、該楽音データに付加されたCHNに対応する楽音データバッファ231のエリアに、該楽音データを一時記憶する。
次に、メモリコントローラから楽音データバッファ231への楽音データを転送する転送時間TT2について説明する。TT2の値は、アクセスモジュール200Aの仕様によって決まるパラメータであり、アクセスモジュール200Aが外部バスを介して記憶モジュール100Aに送信するクロック(図示せず)の周波数に依存する。本実施形態では、アクセスモジュール200Aと不揮発性記憶モジュール110Aから140Aのそれぞれを繋ぐ外部バスのバス幅を1Byteとし、40MHzの転送周波数で転送するものとする。この場合、転送時間TT2は、式(11)により、約12.8μ秒となる。
512Byte×(25n秒/Byte)=12.8μ秒 ・・・(11)
読み出し指示情報の転送に応じて、不揮発性記憶モジュール110A〜140Aのいずれかから読み出された楽音データは、読み出し指示部240を介してCPU部230Aに転送される。ここでは、不揮発性記憶モジュール110Aから読み出すものとする。図19は、不揮発性記憶モジュール110Aから外部バス上に読み出された際の楽音データを示すビットフォーマットである。このビットフォーマットに示すように最弱タッチと最強タッチの楽音データが含まれている。CPU部230Aでは、楽音データを楽音データバッファ231内のバッファ231_0に転送し、図5のマルチプレクサ231_0c(M=0)を介してデュアルポートRAM231_0aのCH0に対応するエリアに一時記憶する。なお、楽音データの一時記憶に際して、バッファ231_0〜231_3の選択、あるいは各バッファ内のデュアルポートRAMの記憶領域の選択は、後述するMMレジスタ242に登録されたCHNによって決定する。
先頭セクタの全サンプル、即ち最弱タッチ及び最強タッチそれぞれについてs0〜S127までの512ByteがデュアルポートRAM231_0aのCH0に対応するエリアに一時記憶され終わると、CPU部230A内の転送監視部235が信号処理部220に対して転送完了フラグTRNFを転送する。なお、CPU部のS130以降の処理と、楽音データバッファ231への楽音データ転送(転送監視を含む)とは、並行して実行される。
S130の後に、信号処理部220による発音(S131)を行う。発音の制御では、TP/0x7Fの演算によりレベルデータLDを算出して、それをチャンネルアサインテーブル232のLDに設定し、S125で抽出したKONをチャンネルアサインテーブル232のKONに設定する。0x7Fは、TPの最大値を表す。即ち、レベルデータLDは、タッチパラメータTPに応じて値0以上1以下の値をとる。信号処理部220の動作については後述する。
さて、S127において、空きチャンネルがなかった場合、即ちチャンネルアサインテーブル232内のSONが全て値1であった場合は、チャンネルアサインテーブル232の強制消音フラグFを値1にセットし(S128)、S132に移行する。
その後、次に処理すべき楽音データの有無をチェックし(S132)、次に処理すべき楽音データが有ればS121に戻る。S121では、既に前回の演奏データは処理を完了しているので、無条件でS122以降の処理に移行する。一方、S132において、次に処理すべき楽音データが無ければ、割り込みルーチンを終了する。この場合には、メインルーチンに戻って、該割り込みルーチンに移行した時に実行していた処理を続行する。
≪信号処理部22の動作≫
次に、信号処理部220の動作について、図20のフローチャートを中心に説明する。
まず、S400において式(12)に従ってイニシャルフラグINIを設定する。
INI=KON&EE ・・・(12)
ここで、式(11)において、EEをINIの算出要素にした理由について説明する。後述するように全チャンネルが発音中(EEの値が0)の状態において、新たな打鍵を行った場合、ノイズが生じないようにするために、新たな打鍵に対応するチャンネルの急速消音を行ってから、即ちEEが値1及びSONが値0になるのを待ってから、新たな打鍵に対応した発音を開始する必要がある。
但し、新たな打鍵があってから発音開始されるまでの遅延時間を短くするため、急速消音を指示すると同時に、新たな打鍵に対応するチャンネルアサイン処理(S129)と楽音データの読み出し指示(S130)を行う必要がある。しかし、新たな打鍵がなされる直前に少なくとも新たな打鍵がアサインされるチャンネルのKONが値1であった場合、新たな打鍵に対応するチャンネルは、KONが値0を経ることなく、即ち値1のままで、急速消音に続いて新たな発音制御を行うこととなる。このような場合に、発音開始時刻を決定する要素としてKONが使えないので、式(12)においてEEをINIの算出要素にした。なお、式(12)は、上述の動作に限らず、如何なるケースにおいても適用できる。
次いでS401において、INIとTRNFについて判定する。CPU部230Aから信号処理部220内のRAMに転送完了フラグTRNFが転送されると、INIとTRNFが共に1となるので、S402に進んで各種パラメータの初期設定を行う。パラメータの初期設定では、信号処理部220内のカウンタに保持したsnを値0に設定し、信号処理部220内のRAMに保持した転送完了フラグTRNFを値0に設定する。
さて、S401あるいはS402の後、補間処理を行う(S403)。補間処理とは、打鍵の強さ、即ちタッチパラメータTPの値に応じて楽音の音色を変更する処理である。一般的には、強打鍵時の音色の方が弱打鍵時の音色よりも高域成分に富んだ音色であることが知られている。そこで、本実施形態においては、強打鍵時の音色の代表である最強タッチの楽音データと、弱打鍵時の音色の代表である最弱タッチの楽音データとを、タッチパラメータTPに基づいて2点間直線補間することによって、TPに応じて音色を変更できるようにした。具体的には、式(13)に従った補間処理を行う。なお、wは補間後の楽音データの1サンプルの値であり、waは最弱タッチに対応する楽音データの1サンプルの値であり、wbは最強タッチに対応する楽音データの1サンプルの値であり、αは値0〜1の補間係数である。
w=wb×α+wa(1−α) ・・・(13)
但し、α=TP/0x7F
補間処理の後に、式(14)に従ったエンベロープ(以下、「ENV」という)の算出を行う(S404)。
ENV=LD×REL ・・・(14)
但し、RELは次のように決定される。
(a)F=1の場合は、
REL=g
(b)F=0かつKON=0かつPD=0の場合は
REL=REL_old×0.5
(c)上記以外の場合は、
REL=1
なお、RELは減衰パラメータであり、REL_oldは前サンプリング期間のRELであり、gは減衰変数である。
gはF=1がCPU部230Aから転送された時点のサンプリング周期において0.875、次のサンプリング期間において0.750、以降0.125ずつ小さくなり、値0になった時点以降は値0を維持する時変パラメータとする。このように決めておけばF=1が転送されてから8サンプルでENVは値0に到達する。また、REL_oldは信号処理部220内のRAMに保持され、式(14)の実行毎にRELに更新されるものであり、RELは指数関数的に0に漸近することとなる。
図21と図22とは、ENVの時間変化を示している。図21は、PDが値0の場合、即ちサスティンペダルがOFFされている場合である。この場合には、KONが値1の間は前述の(c)のようにENVは変化せず、値0になった時、即ち離鍵した時以降にENVは指数関数的に減衰することとなる。図22は、PDが値1の場合、即ちサスティンペダルがONされている場合である。この場合は、KONが値1になっても前述した(c)の状態が続き、打鍵時のENVの値のままとなる。図21及び図22のいずれの場合においても、強制消音の指示があった時、即ちF=1となった時点で、前述した(a)の場合となり、RELは時変パラメータgとなる。従って、破線で示す8サンプリング周期でENVは値0に直線的に減衰することとなる。なお、1サンプリング周期は式(15)に従う。
1/サンプリング周波数(44.1kHz)≒約22.7μ秒 ・・・(15)
従って、8サンプリング周期は約182μ秒となる。
ENVの算出の後、ENVと閾値ENVthとの比較を行う(S405)。ENVthは、聴感上十分聞こえないレベルの値である。S405でENVがENVth未満になった場合に、CPU部230A内のチャンネルアサインテーブル232内の対応するチャンネルのEEを値1に、SONを値0に更新する(S406)。なお、SONが値0に更新したチャンネルは、以降空きチャンネルとして管理される。
次に、式(16)に基づきエンベロープ処理後のデジタルデータWを求める(S407)。
W=w×ENV ・・・(16)
なお、前述した通り楽音データはピアノの音を鍵盤毎にデジタル録音したデータであるので、ENVのレベルが時間的に変化しなくても、Wの波高値は時間的に減衰するので聴感上は減衰して聞こえる。
次に、WEが値1、即ち任意の打鍵に対応する楽音データが最終サンプル(s1763999サンプル)まで到達するか、あるいはEEが値1、即ちENVが聴感上聞こえないレベルに到達すると(S408)、もはや信号処理を続けて出力する必要がない。従って、セクタ番号snのインクリメントや選択フラグDのトグル動作が不要となるので、S414にジャンプする。それ以外の場合にはS409に移行し、snのインクリメントを行う。なお、ウェーブエンドフラグWEは図10に示すように楽音データバッファ231から取得した楽音データのb0に記録されているフラグであり、s1763999サンプルのみWEが値1である。b0が値0の楽音データをS403において読み出すまでは、対応するチャンネルのWEは値1のままである。
S410において、セクタ番号snのインクリメントの結果snが値96になった場合はS411に進む。そして、次の楽音データ1セクタ分を読み出すために、チャンネルアサインテーブル232内の対応するチャンネルのSCをインクリメントすると共に楽音データ読出要求フラグDQを値1に設定する。snが96以外ならこの処理を行うことなくS412に進む。
次に、S412において、snが127、即ち楽音データ1セクタ分の中の最後のサンプルに到達したか否かを判断し、到達した場合は選択フラグDのトグル、即ち現在の値と逆の論理に変更する。この操作においては、チャンネルアサインテーブル232内の対応するチャンネルのDを、例えば、0から1に切換えると共に、楽音データバッファ231のデマルチプレクサ、例えば、231_0dの入力を切り換える。これにより、楽音データの読み出し元を、デュアルポートRAM231_0aからデュアルポートRAM231_0bに切り替える。
次に、S414において、信号処理部220が内部保持しているCHNをインクリメントし、CHNが0でなければ次のチャンネルの処理に移行すべくS401に戻る。但しCHNは5ビットのカウンタに保持されCH0〜CH31を巡回的に更新する。S415でCHNが値0になった時、即ちCH31までの処理が終了した時、ミキシング処理(S416)に移行する。
ミキシング処理では、CH0〜31までのWnを式(17)に基づいてミキシング処理する。
Wx=(W0+W1+・・・・+W31)/32 ・・・(17)
ここで、Wn(nはCHNに対応する0〜31の整数)は任意のチャンネルのWとし、Wxはミキシング結果である。ミキシングの後S417において更にエフェクト処理を行う。
図23は、1サンプリング周期あたりの信号処理を示すタイムスロット図である。図23において、左側が時刻の早い方であり、CH0〜31までの補間処理やレベル制御の後、CH0〜31までの楽音のミキシング処理(MIX)、及びリバーブやコーラスなどのエフェクト処理(EFFECT)がなされる。これらの一連の処理は、サンプリング周期である22.7μ秒毎に巡回して実行されることとなる。
以上説明した信号処理は、1サンプリング周期(22.7μ秒)毎に繰り返して実行され、22.7μ秒毎に処理後の楽音データが入出力部210AのDAコンバータにてデジタル−アナログ変更がなされ、その結果が所望の楽音としてラインアウト端子を介して外部に出力される。該楽音は、外部のアンプとスピーカを介してピアノの演奏音が得られる。
さて、図13AのCPU部230Aのメインルーチンの説明に戻り、S102以降の処理について説明する。CPU部230AはS102においてチャンネルアサインテーブル232において全てのチャンネルのFを調べる。Fが値1のチャンネルの中でEEが値1のチャンネルがあれば、該チャンネルのFを値0にクリアし(S103)、該チャンネルにチャンネルアサイン処理を行う(S104)。なお、EEのクリアは、前述したとおり信号処理部220がS402にて行う。
次に、楽音データの読み出し要求(S105)と信号処理部220の発音制御(S106)を行う。S105とS106とは、前述したS130とS131と同じ処理である。
次に、S107において、DQが値1のチャンネルをサーチし、あればS108において該チャンネルの楽音データの読み出し要求を行う。なお、S107やS102におけるチャンネルアサインテーブル232のサーチはCH0から昇順に行う。
(2)発音遅延時間に関する説明
以上の処理を踏まえ、さまざまな打鍵方法別に、図24A〜図24Cに示すタイムチャートと、図6A〜図6Cに示すチャンネルアサインテーブル232を用いて、打鍵から楽音が発音されるまでの動作、及び発音遅延時間について説明する。
(2−1)離散的な打鍵の場合
図24Aは離散的な打鍵を行った場合の動作を説明したタイムチャート、図6Aは該打鍵に対応するチャンネルアサインテーブル232内のパラメータの変化を表したものである。
まず、無音状態からマスターキーボード300によってNNが0x19、0x1C、0x1E、0x20に対応する4つの鍵盤が時刻t0に同時に打鍵され、その後、数十μ秒ずつの時間間隔をおいて、NNが0x25の鍵盤、NNが0x29の鍵盤、最後にNNが0x2Cと0x2Fの2つの鍵盤が打鍵される場合について説明する。各打鍵は、前述したCPU部230Aのチャンネルアサイン処理により、それぞれCH0〜7に割り当てられ、打鍵タイミングにCPU部230Aの処理遅延を付加したタイミングで、CH0〜7の読み出し要求が読み出し指示部240に出力される。さらに、読み出し指示部240が前述したように不揮発性記憶モジュール群のアクセス状況に応じて、読み出し指示情報を記憶モジュール100Aに転送する。
不揮発性メモリバンクからのメモリコントローラへの楽音データの読み出し中、及びメモリコントローラからアクセスモジュール200Aへのデータ転送中の間は、アクセスモジュール200Aは、次の読み出し指示情報を転送できない。このため、記憶モジュール100Aへの読み出し指示情報の転送タイミングは、図24Aに示すタイミングで、CH0〜7の読み出し指示がアクセスモジュール200Aから記憶モジュール100Aに転送される。この転送タイミングに応じて、それぞれのメモリバンク112〜142においてリードタイムTRの間にメモリセルアレイよりI/Oレジスタに読み出される。
その後、楽音データは、転送時間TT1の間にI/Oレジスタからメモリコントローラに読み出され、転送時間TT2の間にメモリコントローラから読み出し指示部240を介して楽音データバッファ231に一時記憶されることとなる。
信号処理部220は、楽音データバッファ231に記憶された楽音データを用いて前述した通り楽音の生成処理がなされる。信号処理部220は、1サンプリング周期毎にCH0〜31までの処理を時分割にて行う。即ち22.7μ秒毎に各チャンネルの楽音データがs0から順番に使用されることとなる。
CH0〜3においては、図24Aの時刻t2から始まる最初のタイムスロットにおいて、s0が使用されることとなる。前記タイムスロットから4タイムスロット遅れてCH4、5のs0が使用され始め、さらに3タイムスロット遅れてCH6、7が使用され始める。
各チャンネルにおいて、s0を使用したタイムスロットから数えて127番目のタイムスロットで512Byte分の楽音データを全て使いきる。このため前述した通り、snが96になった時刻t4で、あらかじめ次の512Byte分の楽音データを取得しておく必要がある。なお、次の512Byte分の楽音データを取得するタイミングは、必ずしもsnが96になったタイミングである必要はなく、次の512Byte分の楽音データの処理に間に合うように、該512Byte分の楽音データを取得できれば、該512Byte分の楽音データを取得するタイミングは、別の値により規定されるタイミングであってもよい。
これに対応して、図24Aの破線で示したタイミングで、CH0〜7の読み出し指示がアクセスモジュール200Aから記憶モジュール100Aに転送される。読み出し指示の間隔は、基本的にタイムスロットの間隔、即ち22.7μ秒毎になる。
次に、発音遅延時間について説明する。
発音遅延時間とは、打鍵時刻からs0に対応する楽音を生成するまでの時間をいう。図24Aの場合は、図面によればCH4の発音遅延時間は、時刻t1〜t3の期間で最大であり、該発音遅延時間は150μ秒以下であると言える。これは発音遅延時間の許容範囲である1m秒より十分短い値であるので、図24Aの場合においては、本実施形態の楽音生成システムは、電子楽器などの楽音生成システムとして適用できる。
(2−2)集中的な打鍵の場合
次に、32チャンネル全てを使用して一度に発音する場合について説明する。
図24Bは、マスターキーボード300により32個の鍵盤を時刻t0に同時に打鍵した場合の動作を説明するためのタイムチャートであり、図6Bはこの打鍵に対応するチャンネルアサインテーブル232内のパラメータの変化を表したものである。なお、このような打鍵方法は通常の演奏ではあまりなされない方法である。
このような場合においては、例えば、図6Bに示すように、NNが0x28〜0x47に対応する32個の鍵盤が同時に打鍵される。この打鍵は、前述したCPU部230Aのチャンネルアサイン処理によりCH0〜31に割り当てられ、打鍵タイミングにCPU部230Aの処理遅延を付加したタイミングで、CH0〜31の読み出し要求が読み出し指示部240に出力され、さらに該読み出し要求に対応する読み出し指示情報がアクセスモジュール200Aから記憶モジュール100Aに転送される。以降は、図24Bに示すように、楽音データが楽音データバッファ231に転送され、楽音を生成することとなる。
この場合、最も発音遅延時間が長くなるのはCH28〜31であり、発音遅延時間は時刻t0〜t1までの期間、即ち図24Bの図面上650μ秒以下であると言える。これは発音遅延時間の許容範囲である1m秒より短い値であるので、図24Bの場合においても、本実施形態の楽音生成システムは、電子楽器などの楽音生成システムとして適用できる。
(2−3)急速消音の後に集中的な打鍵を行う場合
最後に、急速消音の後に32チャンネル全てを使用して一度に発音する場合について、図24Cと図6Cを用いて説明する。この場合は、例えば(2−2)に示した打鍵、即ち図6Cに示したようにNNが0x28〜0x47に対応する32個の鍵盤が時刻t0に打鍵された状態のままで、新たに時刻t1にNNが0x48〜0x67に対応する32個の鍵盤が打鍵された場合、即ち最大発音チャンネル数(32チャンネル)を超えた発音となる。
このように最大発音チャンネル数を超えた発音制御をする場合は、既に発音されている32チャンネル分全てを前もって急速消音し、該32チャンネル分のEEを値1にする。そして、聴感上聞こえないレベルまで消音した後に、該32チャンネルに新たな打鍵を割り当てる必要がある。このような場合が最も発音遅延時間が長くなる場合である。
このような急速消音を行う期間は、図24Cにおいて、時刻t1の打鍵直後の8サンプリング周期に相当する182μ秒の期間である。図6Cにおいて全チャンネルは、既に打鍵されていた鍵盤が離鍵されることなく、かつ、発音された状態において、新たな打鍵が行われたチャンネルとなるので、KON、SON共に値1から始まることとなる。そして信号処理部220の急速消音処理によりEEが値1に、SONが値0になり、その結果、CPU部230Aのチャンネルアサイン処理によりCH0〜31の読み出し指示情報が記憶モジュール100Aに転送されることとなる。それ以降のタイムチャートは、図24Bに示すタイムチャートと同様である。
この場合、最も発音遅延時間が長くなるのはCH28〜31であり、該発音遅延時間は時刻t1〜t3までの期間、即ち図24Cの図面上850μ秒以下であると言える。これは発音遅延時間の許容範囲である1m秒より短い値であるので、本実施形態の楽音生成システムは、電子楽器などの楽音生成システムとして適用できる。
以上のように、第1実施形態の楽音生成システムでは、不揮発性メモリバンク112〜142毎に楽音データを記録することにより多重化しておき、読み出し指示部240が、アクセスモジュール200Aからの読み出し指示に従って複数の不揮発性メモリバンクから並列的に楽音データを読み出すことができる。このため、本実施形態の楽音生成システムは、楽音を生成するシステムのような、どの音高の楽音データの読み出し指示がなされるか予想のつかないシステムに適用することができる。つまり、本実施形態の楽音生成システムでは、複数のデータの読み出し時に複数の不揮発性メモリバンクから並列的にデータを読み出すことができるので、発音遅延時間をその許容範囲である1m秒よりも短くすることができる。即ち、本実施形態の楽音生成システムでは、上記のように処理を行うことで、現在主流である大容量フラッシュメモリを楽音データ用のメモリとして使用することができるので、本発明により、低価格かつ小型の楽音信号発生装置を実現することが可能となる。
[第2実施形態]
次に、第2実施形態について、説明する。
<2.1:楽音生成システムの構成>
図25は、第2実施形態における楽音生成システムを示すブロック図である。本実施形態の楽音生成システムは、記憶モジュール群1000と、アクセスモジュール2000とを含んで構成される。記憶モジュール群1000は、記憶モジュール1100〜1300を含み、アクセスモジュール2000は、発音指示分類部3000とアクセスモジュール2100〜2300を含む。
記憶モジュール1100〜1300の各々は、第1実施形態で説明した記憶モジュール100Aと基本的に同一である。相違点は、記憶モジュール100Aがピアノ音の全音域(最低音〜最高音)を記憶しているのに対して、記憶モジュール1100〜1300は、全音域を分割的に記憶している点である。
アクセスモジュール2100〜2300の各々は、第1実施形態で説明したアクセスモジュール200Aと基本的に同一である。相違点は、アクセスモジュール200Aがピアノ音の全音域(最低音〜最高音)に対応する発音指示を処理するのに対して、アクセスモジュール2100〜2300は、全音域に対応する発音指示を分割的に処理する点である。ここで、発音指示とは、第1実施形態における打鍵データ(図16)に対応する。なお、ペダルデータは、アクセスモジュール2100〜2300に共通に転送されるものとする。
図26は、楽音データの音名コードと、記憶モジュール1100〜1300に分割的に記憶する楽音データとの対応関係を示す表である。図27は、記憶モジュール1100の記録状態を表すメモリマップである。
<2.2:楽音システムの動作>
以上のように構成された、本実施形態の楽音生成システムの動作について説明する。
マスターキーボード300から転送された発音指示は、発音指示分類部3000により分類される。A−1〜D2の発音指示はアクセスモジュール2100に、D#2〜G4の発音指示群はアクセスモジュール2200に、G#4〜C7の発音指示群はアクセスモジュール2300に、それぞれ、転送され、それぞれの発音指示群は、第1実施形態で説明したアクセスモジュール200Aと同様の処理が施され、記憶モジュール群1000に対して読み出し指示として出力される。ここで、A−1〜D2、D#2〜G4、G#4〜C7を、それぞれ音高グループ0、音高グループ1、音高グループ2とする。これらの音高グループは同じ音高を含まない、すなわち排他的なものである事が好ましい。但し、冗長ではあるが、各音高グループが同じ音高を含んでも構わない。その場合は、同じ音高に対する発音指示は、例えば音高グループ番号の小さい方を優先的に行えばよい。
アクセスモジュール2100は、最大30鍵分の発音指示に対する処理を行う、すなわち処理するチャンネル数は30CH以下となるので、アクセスモジュール2100が記憶モジュール1100から楽音データを読み出し、所望の楽音を生成するタイムチャートは、図24Aあるいは図24Bに対応する。アクセスモジュール2200、2300も同様である。すなわち、各アクセスモジュールは発音遅延が1mSec以内となるように処理することが可能となる。また、第1実施形態では、32CH以上の発音指示がなされた場合、図24Cに示すような強制消音を伴う場合があるが、第2実施形態では、アクセスモジュール2100が最大30鍵分、アクセスモジュール2200、2300がそれぞれ最大29鍵分の処理、すなわちいずれも32CH未満の処理ですむ為、強制消音が不要であり、聴感上好ましい。
ここで、発音指示分類部3000による発音指示の分類について補足する。第2実施形態では、マスターキーボード300の88鍵を3分割したが、例えば8鍵ずつ11分割するように拡張してもよい。この場合、アクセスモジュールと記憶モジュールとの組が11組必要となり回路規模が増大する。但し、各組8CHずつの処理ですむため、図24A、Bによれば不揮発性記憶モジュールは1つで発音遅延1mSecを満足できる。つまり、楽音データの記憶容量を合理化することができる。
以上のように、本実施形態の楽音生成システムでは、発音指示分類部3000が発音指示を音名に基づいて分類(グルーピング)し、1つのグループのチャンネル数が8より大きい場合は、記憶モジュール内の複数の不揮発性記憶モジュール間で楽音データを多重化して記録し、アクセスモジュール内の読み出し指示部が楽音データを並列読み出しするようにしたので、発音遅延を1mSec以内におさえることが可能となる。また、本実施形態の楽音生成システムでは、1つのグループのチャンネル数が8以下の場合は、記憶モジュール内の不揮発性記憶モジュールの個数が1つ、すなわち楽音データを多重記録しなくても発音遅延を1mSec以内におさえることが可能となる。
[他の実施形態]
なお、第1実施形態及び第2実施形態においては、ピアノの音をデジタル録音したデータを楽音データとして不揮発性メモリバンク112〜142、1112〜1142に記録したが、これに限定されることはなく、例えば、ピアノ以外の楽器音や音声、あるいはその他のデータを記憶しても構わない。また、楽音データは、デジタル録音したデータではなく人工的に作られたデータであってもよい。また、MP3などの圧縮技術によって圧縮されたデータであっても構わない。ただし、その場合は信号処理部220に該圧縮データを伸張する処理、即ちデコード処理を実行させる必要がある。また、打鍵強度に対応して2種類の楽音データを予め記憶したが、1種類あるいは3種類以上であっても構わない。ただし、1種類の場合は、信号処理部220による補間処理は不要であり、3種類以上の場合は該補間処理の方法を3点間直線補間などに拡張すればよい。また、補間処理ではなくフィルタリング処理を用いても構わない。
なお、上記実施形態では、1つの鍵盤に対応する楽音データを約40秒分としたが、それに限定されることはなく、またNNに応じて楽音データの時間長を変えてもよい。通常ピアノの場合は低音ほど発音時間が長いので、低音側の楽音データの時間長を比較的長めにして、高音側の楽音データの時間長を比較的短めにした方が記憶容量を合理化でき好ましい。また、上記実施形態では、楽音データの多重化に際して、不揮発性メモリバンク112〜142、1112〜1142に同一の楽音データを記録するようにしたが、聴感上同じように聞こえるのであれば、不揮発性メモリバンク112〜142間あるいは不揮発性メモリバンク1112〜1142間で楽音データの値が多少違っていても差し支えない。
記憶モジュール100A、記憶モジュール群1000は、メモリカードのようなリムーバブル記憶装置であってもよいし、電子楽器などの装置に組み込まれたメモリ部であってもよい。また、記憶モジュール1100〜1300、不揮発性記憶モジュール110A〜140A、不揮発性記憶モジュール1110〜1340のそれぞれが、メモリカードのようなリムーバブル記憶装置であってもよい。また、アクセスモジュール150、2000は電子楽器などの装置であってもよいし、電子楽器などの装置に組み込まれたアクセス回路部であってもよい。
第1実施形態においては不揮発性記憶モジュールの数を4個としたが、それ以外の数であっても構わない。不揮発性記憶モジュールの数が多いほど、より発音遅延時間を短くすることができる。また、セクタサイズ即ち1回あたりの楽音データの読み出しサイズを512Byteとしたが、その他のサイズであってもよい。該サイズが小さいほど楽音データバッファのRAM容量を合理化できるが、必要以上に小さくすると楽音生成処理が破綻する。また、1つの不揮発性記憶モジュール内に複数不揮発性メモリバンクを含んでも構わない。
なお、第1実施形態においては、図14AのS202〜S208に示す通り、不揮発性記憶モジュール群のアサイン状況に応じて読み出し指示情報の転送先の不揮発性記憶モジュールを決定するようにしたが、例えば、下記(a)〜(d)に示すようにCHNとMMNとの関係を固定化しても構わない。
(a)CH0、4、8、12、16、20、24、28・・・MM0(不揮発性記憶モジュール110A、110B)
(b)CH1、5、9、13、17、21、25、29・・・MM1(不揮発性記憶モジュール120A、120B)
(c)CH2、6、10、14、18、22、26、30・・・MM2(不揮発性記憶モジュール130A、130B)
(d)CH3、7、11、15、19、23、27、31・・・MM3(不揮発性記憶モジュール140A、140B)
なお、上記実施形態では、楽音データをページ内に連続的に配置したが、配置の規則性を記憶モジュール100Aやアクセスモジュール200Aが認識していれば、不連続であっても構わない。また、第1実施形態では、PB0を先頭ブロックとして楽音データの最低音から順に連続的に配置したが、配置の規則性を記憶モジュール100Aやアクセスモジュール200Aが認識していれば、PB0が先頭ブロックでなくてもよく、また不連続であっても構わない。
なお、上記実施形態では、不揮発性メモリバンクをフラッシュメモリとしたが、本発明はその他の不揮発性メモリを用いた場合に適用できる。
上記実施形態では、不揮発性メモリバンクに楽音データ特性情報とメモリ構成情報とを保持するようにしているが、これらの情報を保持する別の不揮発性メモリを設けておいてもよい。あるいは、前記メモリ構成情報は、予め規格化された情報として扱っても構わない。
なお、メモリコントローラ111A〜141Aは、アクセスモジュール200A側にあっても構わない。その場合、不揮発性メモリバンク112〜142は、それぞれが1つのメモリチップにパッケージされたものであってもよいし、あるいは不揮発性メモリバンク112〜142の中の2個以上をまとめて1つのメモリチップにパッケージされたものであってもよい。
なお、条規実施形態では、マスターキーボード300から演奏情報を入力したがそれ以外の形態の入力コントローラ、例えば弦を弾くことによって演奏データを出力するギター型のコントローラや、物を叩くことによって演奏データを出力するスティック型のコントローラ、あるいは加速度センサを備えたもので、それを振る動作に従って演奏データを出力するタイプのコントローラであってもよい。また、パーソナルコンピュータなどの装置から、あるいはネットワークを介してスタンダードMIDIファイルのような演奏データをアクセスモジュール200Aに入力するようにしても構わない。
なお、上記実施形態で説明した楽音生成システムにおいて、各ブロックは、LSIなどの半導体装置により個別に1チップ化されても良いし、一部又は全部を含むように1チップ化されても良い。
なお、ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてあり得る。
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。なお、上記実施形態に係る楽音生成システムをハードウェアにより実現する場合、各処理を行うためのタイミング調整を行う必要があるのは言うまでもない。上記実施形態においては、説明便宜のため、実際のハードウェア設計で生じる各種信号のタイミング調整の詳細については省略している。
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
また、上記実施形態において、アクセスモジュールと記憶モジュールとは、別装置である場合について説明したが、これに限定されることはなく、アクセスモジュールと記憶モジュールとは、1つの装置内に構成されるものであってもよい。また、アクセスモジュールは、アクセス装置を含む概念であり、記憶モジュールは、記憶装置を含む概念である。
本発明にかかる不揮発性記憶システムおよび楽音生成システムは、不揮発性メモリを楽音データ用のメモリとして使用する方法を提案したものであり、電子楽器やカラオケ装置、あるいは楽音生成機能(例えばサウンドカード)を有するパーソナルコンピュータや携帯電話などにおいて有益である。
100A、1100、1200、1300 記憶モジュール
110A、120A、130A、140A 不揮発性記憶モジュール
111A、121A、131A、141A メモリコントローラ
112、122、132、142 不揮発性メモリバンク
113、123、133、143 I/Oレジスタ
114、124、134、144 メモリセルアレイ
200A、2000、2100、2200、2300 アクセスモジュール
210、410、510 入出力部
220 信号処理部
230、420、520 CPU部
231 楽音データバッファ
231_0〜231_3 バッファ
231_0a、231_0b、231_1a、231_1b デュアルポートRAM
231_2a、231_2b、231_3a、231_3b デュアルポートRAM
231_0c、231_1c、231_2c、231_3c マルチプレクサ
231_0d、231_1d、231_2d、231_3d デマルチプレクサ
232 チャンネルアサインテーブル
233A NNテーブル
234 演奏データバッファ
235 転送監視部
236 ファイルシステム部
237 多重化部
240 読み出し指示部
250、430、530 書き込み指示部
300 マスターキーボード
310 インターネット
400、500 データ書き込みモジュール
1000 記憶モジュール群
3000 発音指示分類部
本発明は、楽器音などの楽音データを予め記憶した複数の不揮発性記憶モジュールから楽音データを読み出し、該楽音データに信号処理を施すことにより楽音を生成する楽音生成システムおよび不揮発性記憶システムに関する。
書き換え可能な不揮発性メモリを備える不揮発性記憶モジュールは、着脱型の記憶装置として半導体メモリカードを中心にその需要が広まっている。半導体メモリカードは、光ディスクやテープメディアなどと比較して非常に高価格なものではあるが、小型・軽量・耐震性・取り扱いの簡便さなどのメリットにより、デジタルスチルカメラや携帯電話などのポータブル機器の記録媒体としてその需要が広まっている。
この半導体メモリカードは、不揮発性の主記憶メモリとしてフラッシュメモリと、フラッシュメモリを制御するメモリコントローラとを有している。メモリコントローラは、デジタルスチルカメラなどのアクセスモジュールからの読み書き指示に応じて、フラッシュメモリに対する読み書き制御を行う。また、非着脱型の不揮発性記憶モジュールとして、デジタルスチルカメラやポータブルオーディオ機器本体内に組み込まれたもの、あるいはハードディスクの代替として、パーソナルコンピュータに組み込まれたものもある。
フラッシュメモリは、メモリセルアレイと、メモリセルアレイから読み出したデータを一時的に保持するため、あるいは外部から書き込まれたデータを一時的に保持するためのI/Oレジスタ(RAM)などから構成される。フラッシュメモリは、メモリセルアレイを構成するメモリセルへの書き込みや消去に比較的長い時間を必要とするため、複数のメモリセルに保持されているデータを一括して消去したり書き込んだりできる構造となっている。具体的には、フラッシュメモリは、複数の物理ブロックから構成され、各物理ブロックは、複数のページを含む。データの消去は、物理ブロック単位で行われ、データの書き込みは、ページ単位で行われる。
さて、電子楽器などの楽音データをROMに保持した楽音生成システムがある。楽音生成システムは、鍵盤などの打鍵操作に応じて楽器の音(以下、「楽音」という)を生成するシステムである。楽音生成システムは、通常32チャンネル以上の発音チャンネルを有しており、例えば、打鍵された順に発音チャンネルを割り当てて楽音を生成する。このシステムでは、ランダムな打鍵操作に対応して楽音を生成しなければならないので、ランダム読み出し速度の速いマスクROMが楽音データ用のROMとして使われている。
特許文献1によれば、フラッシュメモリの技術進歩に伴い、マスクROMのビット単価よりもフラッシュメモリのビット単価が下がることが予測されている。特許文献1には、マスクROMよりもランダム読み出し速度の遅いフラッシュメモリを楽音データ用のROMとして利用することによりシステムコストを合理化する技術が開示されている。
その予測通り、フラッシュメモリは、大容量化と低コスト化への要望に対応し、多値化とプロセスシュリンクによりギガビットクラスの多値NANDフラッシュメモリ(以下、「大容量フラッシュメモリ」という)が主流となってきた。それにより、フラッシュメモリは、ビット単価がマスクROMよりも遙かに安価になると共に、単位面積当たりの容量もマスクROMよりも遙かに大容量となり、システムの低価格化と小型化の可能性がますます高まっている。
尚、特許文献1の実施例で用いられた2値NANDフラッシュメモリ(品番:TC58V64FT)は、容量が64Mbit、メモリセルアレイからI/Oレジスタへアクセスしてデータを読み出すリードタイム(以下、「TR」という)は7μ秒と、2値NANDフラッシュメモリの中でも小容量かつ高速である旧式タイプのフラッシュメモリである。
特開2000−284783号公報
ここで、高音質を維持するため、ピアノ等の楽器音をデジタル録音した楽音データを非圧縮でマスクROMやNANDフラッシュメモリに記憶した高音質の楽音生成システムについて検討する。この場合には、メモリには、例えば、式(1)に示すように約621MByteの容量が必要となる。
44.1kHz×40秒×2Byte×2タッチ×88鍵盤≒621MByte・・(1)
尚、式(1)において、「44.1kHz」はサンプリング周波数であり、「40秒」は1つの鍵盤あたりの発音時間であり、「2Byte」は楽音データ1サンプルあたりの語長であり、「2タッチ」は最も強く打鍵した時と最も弱く打鍵した時の2つの場合を示しており、「88鍵盤」はピアノの総鍵盤数である。
従って前述した容量64Mbitの2値NANDフラッシュメモリを使用した場合、式(2)に示すように約77個のNANDフラッシュメモリを実装する必要がある。
621MByte÷64Mbit≒77個 ・・・(2)
従って、楽音生成システムを小型化することが困難となる。
一方、現在主流であるギガビットクラスの大容量フラッシュメモリを使用した場合は、該大容量フラッシュメモリを1個〜数個程度実装するたけで、621MByte分の楽音データを圧縮することなく記憶することができる。
しかしながら、大容量フラッシュメモリは、大容量データを一度に読み書きする速度を高めるためにページサイズを拡張したこと、及び多値化したことにより、リードタイムTRが50μ秒と桁違いに長くなった。楽音生成システムでは、通常32チャンネルを同時に発音することが要求されるが、32チャンネル目の楽音を生成しようとすると、式(3)に示すように発音遅延時間は少なくとも1.6m秒となる。
発音遅延時間=50μ秒×32=1.6m秒 ・・・(3)
尚、「発音遅延時間」とは、打鍵操作〜発音開始までの時間であり、その許容範囲は一般的に1m秒以内とされている。これが1m秒を超えてしまうと演奏上違和感をきたし、楽音生成システムとして成り立たない。
そこで、本発明は、現在主流である大容量フラッシュメモリなどのメモリを楽音データ用のメモリとして使用した場合においても、高音質かつ小型の楽音生成システムを実現することができる、アクセスモジュール、記憶モジュール、楽音生成システム、及びデータ書き込みモジュールを提供することを目的とする。
上記課題を解決するために、本発明の不揮発性記憶システムは、不揮発性記憶モジュールと、該不揮発性記憶モジュールに記録されたデータを読み出すアクセスモジュールと、を備えた不揮発性記憶システムである。
不揮発性記憶モジュールは、第1記憶モジュールから第N記憶モジュール(Nは自然数)までのN個の記憶モジュールを有し、該不揮発性記憶モジュールに記録されるデータは第1記憶モジュールから第N記憶モジュールまでの少なくともひとつ選択された記憶モジュールに記録される。
アクセスモジュールは、データ分類部と、読み出し指示部と、を備える。
データ分類部は、外部からのデータ読み出し指示に応じて、第1記憶モジュールから第N記憶モジュールのN個の記憶モジュールから該データが記録された記憶モジュールを決定する。読み出し指示部は、データ分類部の決定に基づいて、第1記憶モジュールから第N記憶モジュールのいずれかからデータを読み出す。
これにより、この不揮発性記憶システムでは、複数(N個)の記憶モジュールから並列的にデータを読み出すことができるので、例えば、現在主流である大容量フラッシュメモリなどのメモリを楽音データ用のメモリとして使用して、高音質かつ小型の楽音生成システムを実現することができる。
また、上記課題を解決するために、本発明の楽音生成システムは、第1記憶モジュールから第N記憶モジュール(Nは自然数)からなるN個の記憶モジュールを含み、楽音データを、第1音高グループから第N音高グループ(Nは自然数)からなるN個の音高グループに分割し、第k音高グループ(kは、1≦k≦Nを満たす自然数)の楽音データを、第k記憶モジュールに記憶することで、楽音データを音高グループ単位で分割してN個の記憶モジュールに記憶する記憶モジュール群と、記憶モジュール群に対して、データの読み出し指示を行うアクセスモジュールと、を備える。
そして、アクセスモジュールは、発音指示分類部と、N個の読み出し指示部と、を備える。
発音指示分類部は、外部からの発音指示を第1発音指示群から第N発音指示群(Nは自然数)のN個の発音指示群のいずれかに分類することができる。また、発音指示分類部は、発音指示がN個の音高グループのどの音高グループに属するかを決定し、発音指示が第k音高グループ(kは、1≦k≦Nを満たす自然数)に属するものであると決定された場合、当該発音指示を第k発音指示群(kは、1≦k≦Nを満たす自然数)に分類する。
N個の読み出し指示部とは、N個の発音指示群の各々に対応する楽音データを記憶するN個の記憶モジュールに対して、データ読み出し指示を出力する。
この楽音生成システムでは、楽音データを音高グループに分類し、それに対応させて、N個の記憶モジュールに楽音データが分割して記憶されており、アクセスモジュールから、読み出しに従って、複数(N個)の記憶モジュールから並列的に楽音データを読み出すことができる。これにより、現在主流である大容量フラッシュメモリなどのメモリを楽音データ用のメモリとして使用して、高音質かつ小型の楽音生成システムを実現することができる。
ここで、前記記憶モジュール群の各々は、複数の不揮発性記憶モジュールを含み、該複数の不揮発性記憶モジュールは楽音データを多重化して記録することが好ましい。
ここで、前記N個の読み出し指示部の各々は、外部からの1つの発音指示に応じて前記いずれかの不揮発性記憶モジュールからデータの読み出しを行い、当該読み出しを完了する前に、他の発音指示があったときに該読み出し中の不揮発性記憶モジュールと異なる不揮発性記憶モジュールから読み出しを並行して行うことが好ましい。
ここで、前記N個の読み出し指示部の各々は、1回の読み出し指示毎に複数サンプル分の楽音データをまとめて読み出すことが好ましい。
本発明によれば、楽音データをN個の音高グループ(音高グループ1〜N)に分割しそれぞれを異なるN個の記憶モジュール(記憶モジュール1〜N)に分割して記憶し、発音指示分類部が、外部からの発音指示を前記N個の音高グループのどの音高グループに属するかを決定しN個の発音指示(発音指示群1〜N)に分類し、該発音指示群1〜Nに基づいてN個の読み出し指示部が記憶モジュール1〜Nの読み出し行うようにしたので、複数の記憶モジュールから並列的に楽音データを読み出すことができる。このため、本発明を適用することで、楽音生成システムのような、どの音高の楽音データの読み出し指示がなされるか予想のつかないシステムにおいて、複数のデータの読み出しの際に複数の記憶モジュールから並列的に読み出すことができ、発音遅延時間をその許容範囲である1m秒よりも短くすることが可能となる。従って、本発明を適用することで、現在主流である大容量フラッシュメモリを楽音データ用のメモリとして使用した場合においても、低価格かつ小型の楽音生成システムを実現することが可能となる。
第1実施形態による楽音生成システムの不揮発性記憶モジュールを示すブロック図 第1実施形態による楽音生成システムのアクセスモジュールを示すブロック図 不揮発性メモリバンク112〜142のメモリセルアレイの構造を説明した説明図 ページ内の記録フォーマットをPB0のP0を例に説明した図 物理セクタ番号PSNを示すビットフォーマット 楽音データバッファ231を示すブロック図 チャンネルアサインテーブル232を示す説明図 チャンネルアサインテーブル232を示す説明図 チャンネルアサインテーブル232を示す説明図 NNテーブル233Aを示す説明図 チャンネルレジスタ241を示すメモリマップ MMレジスタ242を示すメモリマップ 楽音データ1サンプルを示すビットフォーマット ピアノの楽音データの特性情報を示す説明図 メモリ構成情報を示す説明図 CPU部230Aのメインルーチンを示すフローチャート CPU部230Aの割り込みルーチンを示すフローチャート 読み出し指示部240のメインルーチンを示すフローチャート 読み出し指示部240の割り込みルーチン1を示すフローチャート 読み出し指示部240の割り込みルーチン2を示すフローチャート 読み出し指示情報を示すビットフォーマット 演奏データを示すビットフォーマット メモリコントローラの処理を示すフローチャート メモリコントローラが不揮発性メモリバンクに発行するリードコマンドのタイムチャート 記憶モジュール100Aから外部バス上に読み出された際の楽音データを示すビットフォーマット 信号処理部220の処理を示すフローチャート PDが値0の時の打鍵後のLDの時間変化を示すグラフ PDが値1の時の打鍵後のLDの時間変化を示すグラフ 1サンプリング周期あたりの信号処理を示すタイムスロット図 楽音生成システムのタイムチャート 楽音生成システムのタイムチャート 楽音生成システムのタイムチャート 本発明の第2実施形態における楽音生成システムを示すブロック図 楽音データの音名コードと、記憶モジュール1100〜1300に分割的に記憶する楽音データの対応関係を示す表 記憶モジュール1100の記録状態を表すメモリマップ
以降、発明を実施するための最良の形態について説明する。第2実施形態が前述した解決手段の構成に対応するが、第2実施形態を構成する構成要素の動作を、第1実施形態で説明する。
[第1実施形態]
<1.1:楽音生成システムの構成>
図1A、図1Bは、第1実施形態における楽音生成システム(不揮発性記憶システム)を示すブロック図である。楽音生成システムは、図1Aに示す記憶モジュール100Aと、図1Bに示すアクセスモジュール200Aとを含んで構成される。
記憶モジュール100Aは、図1Aに示すように、不揮発性記憶モジュール110A、120A、130A、および、140Aを1つの筐体内に納め、アクセスモジュールに装着して使用するものである。
不揮発性記憶モジュール110A、120A、130A、および、140Aは、それぞれ、メモリコントローラ111A、121A、131A、および、141Aと、不揮発性メモリバンク112、122、132、および、142とを含む。
アクセスモジュール200Aは、図1Bに示すように、入出力部210Aと、信号処理部220と、CPU部230Aと、読み出し指示部240とを含み、32チャンネル分の楽音を同時に出力できるようにしたものである。以下、チャンネル番号をCH0〜CH31とする。
CPU部230Aは、楽音データバッファ231と、チャンネルアサインテーブル232と、NNテーブル233Aと、演奏データバッファ234と、転送監視部235とを含む。
(1.1.1:不揮発性記憶モジュール110A〜140A)
次に、不揮発性記憶モジュール110A〜140Aの各部について詳細に説明する。
不揮発性メモリバンク112〜142は、フラッシュメモリであり、それぞれ、I/Oレジスタ113、123、133、143と、メモリセルアレイ114、124、134、144とを含む。
I/Oレジスタ113〜143は、それぞれ、4096Byte+128Byteの容量を有するRAMである。
メモリセルアレイ114〜144は、それぞれ、1024個の物理ブロックを有する。物理ブロックは、フラッシュメモリの消去単位である。尚、以降、物理ブロックを「PB」と、物理ブロック番号を「PBN」と、物理セクタ番号を「PSN」と、それぞれ、表記する。例えば、物理ブロック番号PBNが「0」の物理ブロックを「PB0」と表記する。
図2は、不揮発性メモリバンク112〜142のメモリセルアレイの構造を説明するための図である。不揮発性メモリバンク112〜142は、それぞれ、物理ブロックPB0〜PB1023を有している。また、各物理ブロックは、それぞれ、256ページ(P0〜P255)から構成される。
図3は、各ページ内の記録フォーマットについて、物理ブロックPB0のページP0を例に説明した図である。全物理ブロックの各ページは、4096Byteのデータ領域と128Byteの冗長領域とから成る。本実施形態において、データ領域は、8セクタに分割される。各セクタは、512Byteの容量を持つ。また、冗長領域は使用しない。尚、記録されているデータの詳細については後述する。
図4は、物理セクタ番号PSNを示すビットフォーマットである。図4において、ビットb0〜b2は、ページ内セクタ選択ビットであり、b3〜b10は、ページ番号を示すビットであり、b11〜b20は、物理ブロック番号を示すビットである。
ページ内セクタ選択ビットは、ページ(ページの先頭アドレス)をセクタサイズで割り算した商に相当するビットである。本実施形態においては、ページサイズを4096+128Byteとし、セクタサイズを512Byteとした場合、即ち、図3に示すように1ページが8個のセクタに分割される場合であり、これらを前述した物理アドレスの下位3bitによって選択する。尚、ページサイズやセクタサイズは前述した値に限定される必要はなく、その値に応じてページ内セクタ選択ビットを可変としても構わない。
メモリコントローラ111A〜141Aは、アクセスモジュール200Aから供給された読み出し指示情報を、不揮発性メモリバンク112〜142へのリードコマンドに変換するためのインターフェース回路やバッファ等を備えたものである。該インターフェース回路は、市販のメモリカード(例えば、SDカード)にも搭載されているものであるので、説明を省略する。
(1.1.2:アクセスモジュール200A)
次に、アクセスモジュール200Aの各ブロックについて、図1Bを用いて詳細に説明する。演奏データは、外部のマスターキーボード300の打鍵などの操作に応じて生成され、入出力部210Aを介してCPU部230Aに取り込まれる。
入出力部210Aは、マスターキーボード300から演奏データを入力するための端子と、信号処理部220が生成した楽音をデジタル−アナログ変換するDAコンバータと、該変換後の楽音を増幅するアンプ部と、そのアンプ部の出力を外部に出力するためのラインアウト端子とを含む。
信号処理部220は、CPU部230Aから供給された最大で32チャンネル分の楽音データの補間演算やレベル制御を行った後に、発音チャンネルのミキシングや、リバーブなどのエフェクト処理を行うことにより楽音を生成するブロックである。信号処理部220は、デジタルシグナルプロセッサ(以下、「DSP」という)、該DSPのプログラムを格納したROM、及び、エフェクタ処理に必要な遅延素子のために、あるいはパラメータを一時記憶するために必要なRAMなどによって構成される。
CPU部230Aは、入出力部210Aが受信した演奏データについてチャンネルアサイン処理を行い、読み出し指示部240に対して不揮発性記憶モジュール110A〜140Aの読み出しを要求すると共に、読み出し指示部240が不揮発性記憶モジュール110A〜140Aから読み出した楽音データと、演奏データの一部とを信号処理部220に供給するブロックである。
図5は、CPU部230Aに含まれる楽音データバッファ231を示すブロック図である。楽音データバッファ231は、231_0〜231_3の4つのバッファから構成される。各バッファの内部の回路構成は、同一であり、下記(a)〜(d)に示す通り、発音チャンネルによって使い分けられる。
(a)バッファ231_0・・・CH0、4、8、12、16、20、24、28の楽音データの一時記憶用
(b)バッファ231_1・・・CH1、5、9、13、17、21、25、29の楽音データの一時記憶用
(c)バッファ231_2・・・CH2、6、10、14、18、22、26、30の楽音データの一時記憶用
(d)バッファ231_3・・・CH3、7、11、15、19、23、27、31の楽音データの一時記憶用
バッファ231_0は、デュアルポートRAM231_0a、231_0b及びマルチプレクサ231_0c、デマルチプレクサ231_0dを有している。デュアルポートRAM231_0a、231_0bは、それぞれ、CH0、4、8・・・28迄の8つのチャンネル分のデータを一時記憶する4kByteのRAMであり、1チャンネルあたり512Byteの記憶容量を有する。バッファ231_1は、デュアルポートRAM231_1a、231_1b及びマルチプレクサ231_1c、デマルチプレクサ231_1dを有している。デュアルポートRAM231_1a、231_1bは、それぞれ、CH1、5、9・・・29迄の8つのチャンネル分のデータを一時記憶する4kByteのRAMであり、1チャンネルあたり512Byteの記憶容量を有する。また、他のバッファバッファ231_2、231_3についても同様の構成であり、前述のチャンネル用のバッファとして用いられる。
図6A〜図6Cは、CPU部230Aに含まれるチャンネルアサインテーブル232を示す説明図である。チャンネルアサインテーブル232は、全チャンネル、即ちCH0〜CH31の発音状態などのステータスを表す以下の情報が保持されている。以下、これらの情報について説明する。
発音中フラグSONは、対応するチャンネルが発音中か否かを示すフラグであり、値0の時は発音中チャンネル、値1の時は空きチャンネルであることを示す。
KONフラグは、打鍵してから離鍵されるまでの間に値1になるフラグである。
ノートナンバーNNは、ピアノの鍵盤位置に対応する16進数の番号である。
タッチパラメータTPは、打鍵の強さに対応する強弱情報である。
レベルデータLDは、打鍵の強さに応じて決まる楽音の音量に対応するものである。
強制消音フラグFは、楽音を強制的に消音するためのフラグである。
セクタカウントSCは、楽音データが1セクタ分即ち128サンプル分読み出される毎にカウントアップするカウンタである。
ウェーブエンドフラグWEは、楽音データの最終サンプル、即ちs1763999が楽音生成のために処理されたことを示すフラグである。
エンベロープエンドフラグEEは、打鍵の状態やサスティンペダルの状態に応じて変化する楽音の音量変化(以下、「エンベロープENV」という)が、聴感上聞こえない音量レベルになった時に値1にセットされるフラグである。
楽音データ読み出し要求フラグDQは、信号処理部220が楽音の生成として使用した楽音データのサンプル数が所定の閾値(例えば96サンプル)に到達した時点でセットされるフラグである。
選択フラグMは、楽音データバッファ231のうちバッファ231_0については、デュアルポートRAM231_0aと231_0bのどちらに楽音データを書き込むかを選択するフラグである。バッファ231_1〜231_3も同様である。
選択フラグDは、バッファ231_0については、デュアルポートRAM231_0aと231_0bのどちらに記憶されている楽音データを信号処理部220に転送するかを選択するフラグである。バッファ231_1〜231_3も同様である。尚、フラグDとMは、バッファ231_0については、値0の時にデュアルポートRAM231_0aを選択し、値1の時にデュアルポートRAM231_0bを選択する。バッファ231_1〜231_3も同様である。
図7は、CPU部230Aに保持されているNNテーブル233Aを示す説明図である。NNテーブルとは、ノートナンバーNNと、該NNに対応する楽音データを記憶した物理ブロック番号との関係を示すテーブルである。
演奏データバッファ234は、マスターキーボード300から入力された複数の演奏データを保持するFIFO(First In First Out)メモリである。
CPU部230A内の転送監視部235は、データ転送を監視し、各バッファ231_0〜231_3の2つのいずれかのチャンネルに対応するエリアにデータが一時記憶され終わると、信号処理部220に対して転送完了フラグTRNFを転送するものである。
読み出し指示部240は、CPU部230Aの読み出し要求と不揮発性記憶モジュール110A〜140Aのアクセス状態に応じて、不揮発性記憶モジュール110A〜140Aに読み出し指示情報を転送するブロックである。
読み出し指示部240は、チャンネルレジスタ241及びMMレジスタ242を含んでいる
図8は、読み出し指示部240に含まれるチャンネルレジスタ241を示すメモリマップである。チャンネルレジスタ241は、32チャンネル分の読み出し指示状態を表すレジスタであり、32チャンネル分について、読み出し指示情報と、読み出し要求フラグRRQと、読み出し指示情報転送フラグRDTとを有している。
読み出し要求フラグRRQ(以下、「RRQ」という)は、CPU部230Aが読み出し要求をしない間は値0であり、要求があれば値1となるフラグである。
読み出し指示情報転送フラグRDT(以下、「RDT」という)は、読み出し指示部240が読み出し指示情報を不揮発性記憶モジュール110A〜140Aのいずれかに転送した時に立てられ、要求をしなくなったときにリセットされるフラグである。
図9は、読み出し指示部240に含まれるMMレジスタ242を示すメモリマップである。MMレジスタ242は、不揮発性記憶モジュール110A〜140Aのアクセス状態を表すレジスタであり、不揮発性記憶モジュール110A〜140Aの4モジュール分について読み出し中フラグRBSYを有している。不揮発性記憶モジュール110はMMNが0(以下、「MM0」という)、不揮発性記憶モジュール120はMMNが1(以下、「MM1」という)、不揮発性記憶モジュール130はMMNが2(以下、「MM2」という)、不揮発性記憶モジュール140はMMNが3(以下、「MM3」という)に対応する。読み出し中フラグRBSY(以下、「RBSY」という)は、読み出し指示部240が不揮発性記憶モジュール110A〜140Aに読み出し指示情報を転送したときに値1にセットされ、不揮発性記憶モジュール110A〜140Aから該読み出し指示情報に対応するデータ(512Byte分)が読み出されたときに値0にリセットされる。
また、MMレジスタ242は、不揮発性記憶モジュールMM0〜MM3のそれぞれに8個の登録枠1〜8を含み、それぞれの登録枠1〜8はMAFとCHNを含む。MAFは、モジュールアサインフラグを示し、このフラグが値1の場合、対応する不揮発性記憶モジュールに読み出し指示情報が転送されていて発音中であることを表す。MAFは対応するチャンネルの発音が終了した時点で値0にリセットされる。また、CHNは、発音中のチャンネル番号を表す。不揮発性記憶モジュール110A〜140Aは、それぞれ、最大8チャンネル分の読み出し指示情報を受け付けることが可能となる。
≪初期状態≫
まず、記憶モジュール100A、あるいは図1Aと図1Bに示した楽音生成システムの出荷前において、メーカー側で処理する初期化の内容について説明する。本実施形態では、ピアノの楽音データを44.1kHzのサンプリング周波数でデジタル録音した場合において、各音高毎に約40秒分の楽音データを圧縮せずに各不揮発性メモリバンク112〜142に記録する。なお、ピアノの鍵盤を打鍵してから音が十分減衰するまでの時間を40秒とする。この場合には式(4)に示すとおり、1764000サンプルとなる。
44.1kHz×40秒=1764000サンプル ・・・(4)
ここでは、最強タッチと最弱タッチの2種類について、あらかじめデジタル録音したピアノの楽音データを、図2に示すように不揮発性メモリバンク112の物理ブロックPB0〜PB703に、ピアノの最低音から最高音に至る88鍵分の楽音データを昇順に書き込む。不揮発性メモリバンク112〜142にもそれぞれ同一のデータを同様に書き込む。これによって同一のデータを4つの並列化された不揮発性メモリバンクに多重化して記録する。
各メモリバンクのPB0〜PB7には、ピアノの最低音のデータが記録され、PB0のP0から昇順に打鍵直後の先頭サンプル(s0)から順番に最後尾サンプル(s1763999)までの1764000サンプル分の楽音データが記憶されている。但し、図3に示すように、512Byte単位で、最弱タッチと最強タッチの2種類の楽音データが組となって書き込まれる。
図10は、楽音データの1サンプルを示すビットフォーマットである。図10において、b15には、正負を表すサインビットが書き込まれ、b15〜b1までの15ビットが楽音データの1サンプルとして使用される。b0には、ウェーブエンドフラグWEが記録される。フラグWEは、対応するサンプルが最終サンプルかどうかを示すフラグであり、値1の場合は最終サンプルであるとする。
更に初期化の際には、不揮発性メモリバンク112の最終物理ブロックPB1023のページP0には、記憶モジュール100Aに記録されているピアノの楽音データの特性情報(以下、「記録データ特性情報」という)と記憶モジュール100Aのメモリ構成に係る情報(以下、「メモリ構成情報」という)を書き込んでおく。
図11は、記録データ特性情報の一例を示す説明図である。この特性情報には、少なくとも楽音データのサンプリング周波数(この場合は44.1kHz)の情報が含まれている。また、リバーブ及びコーラスは、エフェクト処理をする際に用いられる。なお、図11のテーブルにおいて、備考欄は実際に記録されているものではなく、参考情報である。
図12は、記憶モジュール100Aのメモリ構成情報の一例を示す説明図である。ここで、図12のセクタサイズは、1回の読み出し指示毎に読み出すデータのサイズを示しており、リードタイムTRは、メモリセルアレイからIOレジスタへの読み出し時間を示す。転送時間TT1は、各メモリバンクのIOレジスタからメモリコントローラ内にバッファリングする時間を示す。なお、図12のテーブルにおいて、備考欄は実際に記録されているものではなく、参考情報である。
<1.2:楽音生成システムの動作>
以上のように構成された、本発明の第1実施形態における楽音生成システムの動作について説明する。
(1.2.1:電源立ち上げ時の初期化処理)
アクセスモジュール200A及び記憶モジュール100Aの電源立ち上げ後、アクセスモジュール200A及び記憶モジュール100Aは、それぞれ、初期化処理を開始する。記憶モジュール100Aの初期化処理は、それぞれのメモリコントローラが行い、初期化が完了するとアクセスモジュール200Aに対してアクセスを許可する。なお、メモリコントローラの初期化処理については一般的であるので説明を省略する。
アクセスモジュール200Aの初期化処理は、CPU部230Aによる処理と読み出し指示部240による処理とに分かれて行われる。
アクセスモジュール200AのCPU部230Aは、図13Aのフローチャートに示すように、S100において初期化処理を行う。初期化処理では、信号処理部220のリセットや、楽音データバッファ231内のバッファ231_0〜231_3内の各デュアルポートRAMをクリアする。信号処理部220をリセットすることにより、信号処理部220は、内部のDSPのプログラムカウンタのカウントアップを開始する。また、図6A〜図6Cに示すチャンネルアサインテーブル232の初期設定、即ち、以下の処理を行う。
(1)SONを値0、即ちCH0〜31を空きチャンネルに設定
(2)KON、PD、NN、TP、LD、F、SC、WE、DQ、M、Dを値0に設定
(3)EEを値1に設定
その後、アクセスモジュール200Aは、不揮発性記憶モジュール110Aに対して、記録データ特性情報とメモリ構成情報の読み出し指示情報とを転送する。図15は、アクセスモジュール200Aから不揮発性記憶モジュール110に対する読み出し指示情報を示すビットフォーマットである。なお、b22とb21は、読み出し以外の指示にも拡張できるように設けたが、本実施形態においては、読み出し以外の指示は行わないので値11に固定する。なお、これらの特性情報は、不揮発性メモリバンク112のPB1023のP0の0番地から512Byte分以内に書き込まれている。アクセスモジュール200Aは、この読み出し指示情報を不揮発性記憶モジュール110に転送することによって、記録データ特性情報とメモリ構成情報を読み出すことができる。
CPU部230Aは、図11に示す記録データ特性情報を取得すると、サンプリング周期(22.7μs)を信号処理部220内のタイマーにセットし、1サンプリング時間の信号処理のタイムスロットの1周期を決定する。このタイマーは信号処理部220内のDSPの1周期を制御するためのタイマーとして機能する。CPU部230Aは、記録データ特性情報内の1サンプル容量(2Byte)とフラグ割り当てビット(b0)を信号処理部220内のRAMのパラメータとして書き込み、楽音データが図10に示すビットフォーマットのどのビット位置に相当するかを決定するためのパラメータとして使用する。
また、CPU部230Aは、記録データ特性情報内の最大発音チャンネル数(32CH)によって、チャンネルアサインテーブル232のチャンネル枠を決定すると共に、信号処理部220のタイムスロットのチャンネル数を決定する。また、信号処理部220は、リバーブとコーラスによりエフェクト処理を決定する。図11の場合にはエフェクト処理としてリバーブのみを行うことを決定する。
さらに、CPU部230Aは、図12に示すメモリ構成情報を取得すると、不揮発性記憶モジュール数に基づき、式(5)を実行することにより並列数を求める。
並列数=不揮発性記憶モジュール数 ・・・(5)
1つの不揮発性記憶モジュールあたりにアサインされる、即ち読み出し指示情報が転送されるチャンネルの最大数(モジュール当たり最大チャンネル数)は、式(6)によって与えられる。
モジュール当たり最大チャンネル数=CHN÷並列数 ・・・(6)
本実施形態においては、CHNは32、並列数が4であるので、式(6)によれば不揮発性記憶モジュール110A〜140Aのそれぞれは最大8チャンネル分の読み出し指示情報をアサインすることが可能となる。各チャンネルをどの不揮発性記憶モジュールにアサインするかについては後述する。
CPU部230Aは、図12に示すメモリ構成情報の中のセクタサイズ(512Byte)を参照し、記憶モジュール100Aからのデータの読み出し単位のサイズを512Byteとして管理する。また、式(7)を実行することにより、セクタ毎の総サンプル数(以下、usnという)を決定する。
usn=セクタサイズ/1サンプルサイズ/タッチ数 ・・・(7)
本実施形態においては、セクタサイズが512Byte、1サンプルサイズが2Byte、タッチ数が2であるので、usn=128サンプルとなる。
さらに、CPU部230Aは、図11に示す記録データ特性情報の中の1ノートあたりの占有容量と、メモリ構成情報の中のページサイズと1物理ブロックあたりのページ数TPN(この場合は256)とに基づき、式(8)を実行することにより、1ノートあたり必要な物理ブロック数を算出する。
1ノートあたり必要な物理ブロック数=1ノートあたりの占有容量/(ページサイズ×TPN)=8個 ・・・(8)
そして、最低音A−1から最高音C7まで、それぞれのノートに対応するPBNを決定し、図7に示すNNテーブル233Aを生成する。
以上メインルーチンにおいて、記録データ特性情報とメモリ構成情報とを読み出し、各種パラメータの設定処理によってCPU部230Aは初期化処理(S100)を終える。
図14Aは、読み出し指示部240の通常処理を示すフローチャートであり、図14B及び図14Cは、その割り込み処理を示すフローチャートである。
読み出し指示部240は、図14Aのフローチャートに示すように、S200において初期化処理を行う。初期化処理では、読み出し指示部240が、記憶モジュール100Aの全ての不揮発性記憶モジュールからアクセス許可を受信すると、読み出し指示部240は、CPU部230Aに対してアクセス可能であることを通知する。
CPU部230Aは、読み出し指示部240からアクセス可の通知を受けると、S110から通常動作処理S101に移行し、割り込みをイネーブルにして外部のマスターキーボード300からの演奏データを受付ける。
(1.2.2:通常動作時の処理)
(1)全体的な動作説明
演奏データの入力から楽音の生成に至る全体的な動作説明を、CPU部230Aのフローチャート及び読み出し指示部240のフローチャートを中心に説明する。なお、CPU部230Aのフローチャートと読み出し指示部240のフローチャートは独立して実行されるものである。
図13Bは、CPU部230Aの割り込みルーチンを示しており、マスターキーボード300の演奏操作によって演奏データがアクセスモジュール200Aに転送された際に起動される。図13Aに示すメインルーチンの処理中にマスターキーボード300の演奏操作がなされると、即座に割り込みルーチンに移行する。なお、割り込みルーチンは多重割り込みが可能、即ち割り込みルーチン中であっても、次の割り込みを受け付けるものとする。
一方、読み出し指示部240のフローチャートにおいて、割り込みルーチンは、図14Bに示す割り込みルーチン1と図14Cの割り込みルーチン2とからなり、それらに優先順位はなく、また、いずれも多重割り込みが可能である。割り込みルーチン1は、CPU部230Aから読み出し要求があった時に起動されるルーチンであり、割り込みルーチン2は、記憶モジュール100Aから楽音データを受信した時に起動されるルーチンである。
まず、通常動作処理S101への移行後、マスターキーボード300の演奏操作がなされないとすると、全チャンネルの強制消音フラグFは値0であり、また、読み出し要求フラグDQは値0であるので、S102とS107の分岐はNoとなり、S102とS107の分岐処理を永続的に実行することとなる。
マスターキーボード300の演奏操作がなされると、図13Bに示す割り込みルーチンが起動される。この割り込み処理について説明する。
図16は、マスターキーボード300から転送される演奏データを示すビットフォーマットである。演奏データには、打鍵に応じて生成される打鍵データと、サスティンペダルのON/OFF操作に応じて生成されるペダルデータとの2種類がある。それらのデータは、b15の値によって識別される。打鍵データにおいて、KONフラグ、ノートナンバーNN、及びタッチパラメータTPは前述のものである。ペダルデータにおいて、PDはサスティンペダルがONされた時に値1になるフラグである。なお、サスティンペダルとは、離鍵時にも音を持続させるためのペダルであり、本物のピアノにも備えられたペダルである。
割り込みルーチンにおいて、まず、マスターキーボード300から入出力部210Aを介して転送された演奏データを、演奏データバッファ234に取得する(S120)。この演奏データのフォーマットは図16に示すように、打鍵データまたはペダルデータのいずれかである。演奏データバッファ234に、既に取得した未処理の演奏データがなければ(S121)、今回取得した演奏データをチェックする(S122)。具体的には図16に示す演奏データのb15を調べることにより、打鍵データであるかペダルデータであるかを識別する。演奏データがペダルデータである場合は(S123)、図16に示すペダルデータ内のb14即ちPDフラグをそのままチャンネルアサインテーブル232内のPDにコピーし(S124)、S132に移行する。
一方、演奏データが打鍵データの場合は(S123)、図16に示す打鍵データのb14からKONフラグを抽出し(S125)、S126においてKONの値をチェックし、KONが値0の場合即ち離鍵の場合は、S132に移行する。
KONが値1の場合即ち打鍵の場合は、チャンネルアサインテーブル232内において空きチャンネルがあるかどうかを調べる(S127)。具体的には、CH0から昇順に値0の発音中フラグSONがあるかどうかを調べ、あれば最初に見つかったチャンネルに該演奏データをアサインする(S129)。チャンネルアサイン処理においては、下記の通りアサイン先のチャンネルの各情報の設定を行う。
(1)SONを値1にセット
(2)NNとTPを打鍵データからコピー
(3)SC、WE、EE、DQ、M、Dを値0に設定
さて、CPU部230Aはチャンネルアサイン処理の後、読み出し指示部240に対して読み出し要求と共に図15に示す楽音データの読み出し指示情報を渡す。読み出し指示情報は以下の手順で求められる。
(a)打鍵データのNNに基づきNNテーブル233Aを参照し、先頭PBNを求める。
(b)先頭PBNとSCに基づき式(9)を実行することによりPSNを求める。
PSN=(先頭PBN<<11)+SC ・・・(9)
但し、&は論理積をとる演算子、|は論理和をとる演算子、<<は左にビットシフトする演算子である。
(c)式(9)により求められたPSNは21ビットであり、その上位の2ビットは「11」である。従って、次の式(10)を実行することにより読み出し指示情報を求める。尚、“0x”は16進数を表す記号である。図15は、この読み出し指示情報を示す。
読み出し指示情報=0x600000|PSN ・・・(10)
このようにして、CPU部230Aは読み出し先のPSNを決定し、図15に示すフォーマットにて読み出し指示部240に読み出し指示情報を渡す。読み出し指示部240は、読み出し要求と対応するCHNと読み出し指示情報を受け取ると、まず、受け取ったCHNと読み出し指示情報をチャンネルレジスタ241に登録する。その後、MMレジスタ242に基づき読み出し対象となる不揮発性記憶モジュールを決定する。そして、楽音データの読み出し中でなければ、チャンネルレジスタ241に登録されている読み出し指示情報を該不揮発性記憶モジュールに転送し、所望の楽音データを読み出す。
≪読み出し指示部240による記憶モジュール100Aの楽音データの読み出し≫
次に、読み出し指示部240による記憶モジュール100Aの楽音データの読み出しについて、図14A〜図14C及び図17のフローチャートを中心に説明する。
まず、読み出し指示部240は、図14Aに示すメインルーチンにおいて、前述した初期化処理(S200)の後に、通常処理(S201)に移行する。CPU部230Aから読み出し要求がない間は、チャンネルレジスタ241内のRRQは全て値0であり、その場合はCPU部230Aが管理しているEEの変化をモニターし、その結果に応じてMMレジスタ242のフラグ操作を行う(S203)。具体的には、MMレジスタ242のMAFが値1となっているチャンネルについて、EEが値0から値1に変化、即ち発音中から無音状態に変化したチャンネルはMAFを値0にリセットし、登録枠から該チャンネルを除外する。その後、S202に戻り、以降、S202とS203の判断分岐を永続的に実行し続けることとなる。
そして、CPU部230Aから読み出し要求を受け取ると、メインルーチンのS202とS203のループから図14Bの割り込みルーチン1に移行し、チャンネルレジスタ241に読み出し指示情報を登録し、読み出し指示情報と同時に転送されるCHNをチャンネルレジスタ241のCHN欄に登録する(S220)。さらに、前記CHNに対応するRRQを値1にセットし(S221)、割り込みを終了しメインルーチンに戻る。なお、図8に示す例は、CPU部230AからCH0〜3の読み出し要求がなされ、以降に説明する処理によって各フラグが変化する様子を示した例である。具体的には、CH0〜3の読み出し要求と不揮発性記憶モジュール110A〜140Aへの読み出し指示情報の転送を完了し、不揮発性記憶モジュール110A、120Aからアクセスモジュール200Aへの楽音データの転送を完了した時点までを表している。この動作によって、チャンネルレジスタ241内の各フラグの値が変化することとなる。また、MMレジスタ242(図9)についても、各不揮発性記憶モジュール(MM0〜MM3)が読み出し中か否かを示すフラグRBSY等の値を変化させることとなる。
図14Aのメインルーチンにおいては、CH0〜3のRRQが値1となったので、S202からS204に移行し、MMレジスタ242に基づきアサイン状況、CH0〜3に対応する読み出し指示情報が不揮発性記憶モジュールにアサイン(転送)されたかどうかについてチェックする。具体的には、S205において、登録枠1〜8をチェックしMAFが値1になっているCHNがCH0〜3のいずれかであれば、既にアサイン済みであると判断する。そして、MAFが値1になっているCHNがCH0〜3である不揮発性記憶メモリモジュールを読み出し指示情報の転送先に決定する(S206)。
一方、アサイン済みでなければ、S207において、MMレジスタ242においてMAFが値1となっている登録枠の個数(登録数)を計数し、登録数が最も少ない不揮発性記憶メモリモジュールを読み出し指示情報の転送先に決定する。なお、登録数が最も少ない不揮発性記憶メモリモジュールが複数ある場合は不揮発性記憶メモリモジュールの小さい方を優先的に選択する。その後、読み出し指示情報の転送先に決定した不揮発性記憶メモリモジュールにおいて、MAFが値0となっている登録枠のいずれかのMAFを値1にセットすると共に、対応するCHN欄にアサイン対象であるCHNの値を登録する(S207)。なお、最初は、MMレジスタ242は未登録状態であるので、CH0〜3は図9に示すように、それぞれMN0〜3の登録枠1に登録されることとなる。
次に、MMレジスタ242の読み出し中フラグRBSYを参照し、不揮発性記憶モジュール110A〜140Aが読み出し中か否かを判断する(S209)。最初は、MMレジスタ242のRBSYは全て値0、即ち不揮発性記憶モジュール110A〜140A全てが読み出し中ではないので、まず、CH0の処理においてS210に移行する。
そして、読み出し指示部240はCH0に対応する読み出し指示を不揮発性記憶モジュール110に転送し(S210)、チャンネルレジスタ241の対応するチャンネルのRDTを値1にセットする(S211)。さらに、MMレジスタ242の対応する記憶モジュール(MM0)のRBSYを値1にセットすると共に、MM0の読み出し中CHNの欄に0を設定する(S212)。これは不揮発性記憶モジュール110からCH0の楽音データを読み出し中であることを示している。
以上の処理を、チャンネルレジスタ241においてRRQが値1となっているチャンネル、即ちCH0〜3について実行する。
図17は、各メモリコントローラの処理を示すフローチャートである。読み出し指示情報を受信すると(S300)、該読み出し指示情報に含まれるPSNを読み出し先アドレスとしてリードコマンドを不揮発性メモリバンクに出力する(S301)。その結果、読み出された楽音データをアクセスモジュール200Aに転送する(S302)。
図18は、メモリコントローラが不揮発性メモリバンクに発行するリードコマンドのタイムチャートである。コマンド1は、次に物理アドレスの転送開始を通知するコマンドであり、コマンド2は、メモリセルアレイからI/Oレジスタに物理アドレスに記憶されている楽音データを読み出すことを指示するコマンドである。
ここで、リードコマンドは、図18に示す通り、時刻t1にコマンド1を出力した直後に物理アドレスを出力し、その後、コマンド2を出力する。このアドレッシングタイムTAは数百n秒程度であるので時間的に無視できる。
なお、図18における物理アドレスとは、図4のPBNとページ番号とページ内セクタ選択ビットによって512Byte単位で指定される物理アドレスである。また、この物理アドレスは、読み出したい楽音データが記憶されているスタート番地(バイト単位)を指定するものであり、該スタート番地から対応するページの最終番地までの楽音データがTR中に対応するI/Oレジスタに読み出される。その後、転送時間TT1の間に512個のリードクロックを与えることによって、所望の512Byte分の楽音データがI/Oレジスタからメモリコントローラに読み出されることとなる。
さて、読み出し指示部240が、CH0〜3に対応する読み出し指示情報をそれぞれ不揮発性記憶モジュール110A〜140Aに発行し終わると、CH0〜3のRDTが全て値0となる。従って、図14Aにおいて、再びS202からS203の判断分岐をループするようになる。
アクセスモジュール200Aは、転送された楽音データを読み出し指示部240を介して楽音データバッファ231に一時記憶する。この時、読み出し指示部240は、512Byte分(1セクタ分)の楽音データを受け取ったことを検知すると、図14Cの割り込みルーチン2に制御を移し、MMレジスタ242の対応するMMNのRBSYを値0にリセットし(S230)、さらに、チャンネルレジスタ241の対応するCHNのRDTとRRQを値0にリセットする(S231)。さらに、MMレジスタ242の対応するMMNの読み出し中CHNを取得し(S232)、受信した楽音データを、楽音データバッファ231内のどのバッファに一時記憶するかを決定する。
チャンネルレジスタ241のRRQが値0になっているエリアは、次の新たな読み出し指示情報のエリアとして解放されたエリアとなる。因みに、RRQが値0になっている場合は、S231によりRDTも値0になっているし、S230によりMNレジスタ242のRBSYも値0になっている。なお、チャンネルレジスタ241への読み出し指示情報の登録は、最上段のエリアから順に使用され、最下段に到達した時点で再び最上に戻るように、即ち巡回的に使用される。
アクセスモジュール200Aは、いずれかの不揮発性記憶モジュールから楽音データを受信すると、該楽音データに付加されたCHNに対応する楽音データバッファ231のエリアに、該楽音データを一時記憶する。
次に、メモリコントローラから楽音データバッファ231への楽音データを転送する転送時間TT2について説明する。TT2の値は、アクセスモジュール200Aの仕様によって決まるパラメータであり、アクセスモジュール200Aが外部バスを介して記憶モジュール100Aに送信するクロック(図示せず)の周波数に依存する。本実施形態では、アクセスモジュール200Aと不揮発性記憶モジュール110Aから140Aのそれぞれを繋ぐ外部バスのバス幅を1Byteとし、40MHzの転送周波数で転送するものとする。この場合、転送時間TT2は、式(11)により、約12.8μ秒となる。
512Byte×(25n秒/Byte)=12.8μ秒 ・・・(11)
読み出し指示情報の転送に応じて、不揮発性記憶モジュール110A〜140Aのいずれかから読み出された楽音データは、読み出し指示部240を介してCPU部230Aに転送される。ここでは、不揮発性記憶モジュール110Aから読み出すものとする。図19は、不揮発性記憶モジュール110Aから外部バス上に読み出された際の楽音データを示すビットフォーマットである。このビットフォーマットに示すように最弱タッチと最強タッチの楽音データが含まれている。CPU部230Aでは、楽音データを楽音データバッファ231内のバッファ231_0に転送し、図5のマルチプレクサ231_0c(M=0)を介してデュアルポートRAM231_0aのCH0に対応するエリアに一時記憶する。なお、楽音データの一時記憶に際して、バッファ231_0〜231_3の選択、あるいは各バッファ内のデュアルポートRAMの記憶領域の選択は、後述するMMレジスタ242に登録されたCHNによって決定する。
先頭セクタの全サンプル、即ち最弱タッチ及び最強タッチそれぞれについてs0〜S127までの512ByteがデュアルポートRAM231_0aのCH0に対応するエリアに一時記憶され終わると、CPU部230A内の転送監視部235が信号処理部220に対して転送完了フラグTRNFを転送する。なお、CPU部のS130以降の処理と、楽音データバッファ231への楽音データ転送(転送監視を含む)とは、並行して実行される。
S130の後に、信号処理部220による発音(S131)を行う。発音の制御では、TP/0x7Fの演算によりレベルデータLDを算出して、それをチャンネルアサインテーブル232のLDに設定し、S125で抽出したKONをチャンネルアサインテーブル232のKONに設定する。0x7Fは、TPの最大値を表す。即ち、レベルデータLDは、タッチパラメータTPに応じて値0以上1以下の値をとる。信号処理部220の動作については後述する。
さて、S127において、空きチャンネルがなかった場合、即ちチャンネルアサインテーブル232内のSONが全て値1であった場合は、チャンネルアサインテーブル232の強制消音フラグFを値1にセットし(S128)、S132に移行する。
その後、次に処理すべき楽音データの有無をチェックし(S132)、次に処理すべき楽音データが有ればS121に戻る。S121では、既に前回の演奏データは処理を完了しているので、無条件でS122以降の処理に移行する。一方、S132において、次に処理すべき楽音データが無ければ、割り込みルーチンを終了する。この場合には、メインルーチンに戻って、該割り込みルーチンに移行した時に実行していた処理を続行する。
≪信号処理部22の動作≫
次に、信号処理部220の動作について、図20のフローチャートを中心に説明する。
まず、S400において式(12)に従ってイニシャルフラグINIを設定する。
INI=KON&EE ・・・(12)
ここで、式(11)において、EEをINIの算出要素にした理由について説明する。後述するように全チャンネルが発音中(EEの値が0)の状態において、新たな打鍵を行った場合、ノイズが生じないようにするために、新たな打鍵に対応するチャンネルの急速消音を行ってから、即ちEEが値1及びSONが値0になるのを待ってから、新たな打鍵に対応した発音を開始する必要がある。
但し、新たな打鍵があってから発音開始されるまでの遅延時間を短くするため、急速消音を指示すると同時に、新たな打鍵に対応するチャンネルアサイン処理(S129)と楽音データの読み出し指示(S130)を行う必要がある。しかし、新たな打鍵がなされる直前に少なくとも新たな打鍵がアサインされるチャンネルのKONが値1であった場合、新たな打鍵に対応するチャンネルは、KONが値0を経ることなく、即ち値1のままで、急速消音に続いて新たな発音制御を行うこととなる。このような場合に、発音開始時刻を決定する要素としてKONが使えないので、式(12)においてEEをINIの算出要素にした。なお、式(12)は、上述の動作に限らず、如何なるケースにおいても適用できる。
次いでS401において、INIとTRNFについて判定する。CPU部230Aから信号処理部220内のRAMに転送完了フラグTRNFが転送されると、INIとTRNFが共に1となるので、S402に進んで各種パラメータの初期設定を行う。パラメータの初期設定では、信号処理部220内のカウンタに保持したsnを値0に設定し、信号処理部220内のRAMに保持した転送完了フラグTRNFを値0に設定する。
さて、S401あるいはS402の後、補間処理を行う(S403)。補間処理とは、打鍵の強さ、即ちタッチパラメータTPの値に応じて楽音の音色を変更する処理である。一般的には、強打鍵時の音色の方が弱打鍵時の音色よりも高域成分に富んだ音色であることが知られている。そこで、本実施形態においては、強打鍵時の音色の代表である最強タッチの楽音データと、弱打鍵時の音色の代表である最弱タッチの楽音データとを、タッチパラメータTPに基づいて2点間直線補間することによって、TPに応じて音色を変更できるようにした。具体的には、式(13)に従った補間処理を行う。なお、wは補間後の楽音データの1サンプルの値であり、waは最弱タッチに対応する楽音データの1サンプルの値であり、wbは最強タッチに対応する楽音データの1サンプルの値であり、αは値0〜1の補間係数である。
w=wb×α+wa(1−α) ・・・(13)
但し、α=TP/0x7F
補間処理の後に、式(14)に従ったエンベロープ(以下、「ENV」という)の算出を行う(S404)。
ENV=LD×REL ・・・(14)
但し、RELは次のように決定される。
(a)F=1の場合は、
REL=g
(b)F=0かつKON=0かつPD=0の場合は
REL=REL_old×0.5
(c)上記以外の場合は、
REL=1
なお、RELは減衰パラメータであり、REL_oldは前サンプリング期間のRELであり、gは減衰変数である。
gはF=1がCPU部230Aから転送された時点のサンプリング周期において0.875、次のサンプリング期間において0.750、以降0.125ずつ小さくなり、値0になった時点以降は値0を維持する時変パラメータとする。このように決めておけばF=1が転送されてから8サンプルでENVは値0に到達する。また、REL_oldは信号処理部220内のRAMに保持され、式(14)の実行毎にRELに更新されるものであり、RELは指数関数的に0に漸近することとなる。
図21と図22とは、ENVの時間変化を示している。図21は、PDが値0の場合、即ちサスティンペダルがOFFされている場合である。この場合には、KONが値1の間は前述の(c)のようにENVは変化せず、値0になった時、即ち離鍵した時以降にENVは指数関数的に減衰することとなる。図22は、PDが値1の場合、即ちサスティンペダルがONされている場合である。この場合は、KONが値1になっても前述した(c)の状態が続き、打鍵時のENVの値のままとなる。図21及び図22のいずれの場合においても、強制消音の指示があった時、即ちF=1となった時点で、前述した(a)の場合となり、RELは時変パラメータgとなる。従って、破線で示す8サンプリング周期でENVは値0に直線的に減衰することとなる。なお、1サンプリング周期は式(15)に従う。
1/サンプリング周波数(44.1kHz)≒約22.7μ秒 ・・・(15)
従って、8サンプリング周期は約182μ秒となる。
ENVの算出の後、ENVと閾値ENVthとの比較を行う(S405)。ENVthは、聴感上十分聞こえないレベルの値である。S405でENVがENVth未満になった場合に、CPU部230A内のチャンネルアサインテーブル232内の対応するチャンネルのEEを値1に、SONを値0に更新する(S406)。なお、SONが値0に更新したチャンネルは、以降空きチャンネルとして管理される。
次に、式(16)に基づきエンベロープ処理後のデジタルデータWを求める(S407)。
W=w×ENV ・・・(16)
なお、前述した通り楽音データはピアノの音を鍵盤毎にデジタル録音したデータであるので、ENVのレベルが時間的に変化しなくても、Wの波高値は時間的に減衰するので聴感上は減衰して聞こえる。
次に、WEが値1、即ち任意の打鍵に対応する楽音データが最終サンプル(s1763999サンプル)まで到達するか、あるいはEEが値1、即ちENVが聴感上聞こえないレベルに到達すると(S408)、もはや信号処理を続けて出力する必要がない。従って、セクタ番号snのインクリメントや選択フラグDのトグル動作が不要となるので、S414にジャンプする。それ以外の場合にはS409に移行し、snのインクリメントを行う。なお、ウェーブエンドフラグWEは図10に示すように楽音データバッファ231から取得した楽音データのb0に記録されているフラグであり、s1763999サンプルのみWEが値1である。b0が値0の楽音データをS403において読み出すまでは、対応するチャンネルのWEは値1のままである。
S410において、セクタ番号snのインクリメントの結果snが値96になった場合はS411に進む。そして、次の楽音データ1セクタ分を読み出すために、チャンネルアサインテーブル232内の対応するチャンネルのSCをインクリメントすると共に楽音データ読出要求フラグDQを値1に設定する。snが96以外ならこの処理を行うことなくS412に進む。
次に、S412において、snが127、即ち楽音データ1セクタ分の中の最後のサンプルに到達したか否かを判断し、到達した場合は選択フラグDのトグル、即ち現在の値と逆の論理に変更する。この操作においては、チャンネルアサインテーブル232内の対応するチャンネルのDを、例えば、0から1に切換えると共に、楽音データバッファ231のデマルチプレクサ、例えば、231_0dの入力を切り換える。これにより、楽音データの読み出し元を、デュアルポートRAM231_0aからデュアルポートRAM231_0bに切り替える。
次に、S414において、信号処理部220が内部保持しているCHNをインクリメントし、CHNが0でなければ次のチャンネルの処理に移行すべくS401に戻る。但しCHNは5ビットのカウンタに保持されCH0〜CH31を巡回的に更新する。S415でCHNが値0になった時、即ちCH31までの処理が終了した時、ミキシング処理(S416)に移行する。
ミキシング処理では、CH0〜31までのWnを式(17)に基づいてミキシング処理する。
Wx=(W0+W1+・・・・+W31)/32 ・・・(17)
ここで、Wn(nはCHNに対応する0〜31の整数)は任意のチャンネルのWとし、Wxはミキシング結果である。ミキシングの後S417において更にエフェクト処理を行う。
図23は、1サンプリング周期あたりの信号処理を示すタイムスロット図である。図23において、左側が時刻の早い方であり、CH0〜31までの補間処理やレベル制御の後、CH0〜31までの楽音のミキシング処理(MIX)、及びリバーブやコーラスなどのエフェクト処理(EFFECT)がなされる。これらの一連の処理は、サンプリング周期である22.7μ秒毎に巡回して実行されることとなる。
以上説明した信号処理は、1サンプリング周期(22.7μ秒)毎に繰り返して実行され、22.7μ秒毎に処理後の楽音データが入出力部210AのDAコンバータにてデジタル−アナログ変更がなされ、その結果が所望の楽音としてラインアウト端子を介して外部に出力される。該楽音は、外部のアンプとスピーカを介してピアノの演奏音が得られる。
さて、図13AのCPU部230Aのメインルーチンの説明に戻り、S102以降の処理について説明する。CPU部230AはS102においてチャンネルアサインテーブル232において全てのチャンネルのFを調べる。Fが値1のチャンネルの中でEEが値1のチャンネルがあれば、該チャンネルのFを値0にクリアし(S103)、該チャンネルにチャンネルアサイン処理を行う(S104)。なお、EEのクリアは、前述したとおり信号処理部220がS402にて行う。
次に、楽音データの読み出し要求(S105)と信号処理部220の発音制御(S106)を行う。S105とS106とは、前述したS130とS131と同じ処理である。
次に、S107において、DQが値1のチャンネルをサーチし、あればS108において該チャンネルの楽音データの読み出し要求を行う。なお、S107やS102におけるチャンネルアサインテーブル232のサーチはCH0から昇順に行う。
(2)発音遅延時間に関する説明
以上の処理を踏まえ、さまざまな打鍵方法別に、図24A〜図24Cに示すタイムチャートと、図6A〜図6Cに示すチャンネルアサインテーブル232を用いて、打鍵から楽音が発音されるまでの動作、及び発音遅延時間について説明する。
(2−1)離散的な打鍵の場合
図24Aは離散的な打鍵を行った場合の動作を説明したタイムチャート、図6Aは該打鍵に対応するチャンネルアサインテーブル232内のパラメータの変化を表したものである。
まず、無音状態からマスターキーボード300によってNNが0x19、0x1C、0x1E、0x20に対応する4つの鍵盤が時刻t0に同時に打鍵され、その後、数十μ秒ずつの時間間隔をおいて、NNが0x25の鍵盤、NNが0x29の鍵盤、最後にNNが0x2Cと0x2Fの2つの鍵盤が打鍵される場合について説明する。各打鍵は、前述したCPU部230Aのチャンネルアサイン処理により、それぞれCH0〜7に割り当てられ、打鍵タイミングにCPU部230Aの処理遅延を付加したタイミングで、CH0〜7の読み出し要求が読み出し指示部240に出力される。さらに、読み出し指示部240が前述したように不揮発性記憶モジュール群のアクセス状況に応じて、読み出し指示情報を記憶モジュール100Aに転送する。
不揮発性メモリバンクからのメモリコントローラへの楽音データの読み出し中、及びメモリコントローラからアクセスモジュール200Aへのデータ転送中の間は、アクセスモジュール200Aは、次の読み出し指示情報を転送できない。このため、記憶モジュール100Aへの読み出し指示情報の転送タイミングは、図24Aに示すタイミングで、CH0〜7の読み出し指示がアクセスモジュール200Aから記憶モジュール100Aに転送される。この転送タイミングに応じて、それぞれのメモリバンク112〜142においてリードタイムTRの間にメモリセルアレイよりI/Oレジスタに読み出される。
その後、楽音データは、転送時間TT1の間にI/Oレジスタからメモリコントローラに読み出され、転送時間TT2の間にメモリコントローラから読み出し指示部240を介して楽音データバッファ231に一時記憶されることとなる。
信号処理部220は、楽音データバッファ231に記憶された楽音データを用いて前述した通り楽音の生成処理がなされる。信号処理部220は、1サンプリング周期毎にCH0〜31までの処理を時分割にて行う。即ち22.7μ秒毎に各チャンネルの楽音データがs0から順番に使用されることとなる。
CH0〜3においては、図24Aの時刻t2から始まる最初のタイムスロットにおいて、s0が使用されることとなる。前記タイムスロットから4タイムスロット遅れてCH4、5のs0が使用され始め、さらに3タイムスロット遅れてCH6、7が使用され始める。
各チャンネルにおいて、s0を使用したタイムスロットから数えて127番目のタイムスロットで512Byte分の楽音データを全て使いきる。このため前述した通り、snが96になった時刻t4で、あらかじめ次の512Byte分の楽音データを取得しておく必要がある。なお、次の512Byte分の楽音データを取得するタイミングは、必ずしもsnが96になったタイミングである必要はなく、次の512Byte分の楽音データの処理に間に合うように、該512Byte分の楽音データを取得できれば、該512Byte分の楽音データを取得するタイミングは、別の値により規定されるタイミングであってもよい。
これに対応して、図24Aの破線で示したタイミングで、CH0〜7の読み出し指示がアクセスモジュール200Aから記憶モジュール100Aに転送される。読み出し指示の間隔は、基本的にタイムスロットの間隔、即ち22.7μ秒毎になる。
次に、発音遅延時間について説明する。
発音遅延時間とは、打鍵時刻からs0に対応する楽音を生成するまでの時間をいう。図24Aの場合は、図面によればCH4の発音遅延時間は、時刻t1〜t3の期間で最大であり、該発音遅延時間は150μ秒以下であると言える。これは発音遅延時間の許容範囲である1m秒より十分短い値であるので、図24Aの場合においては、本実施形態の楽音生成システムは、電子楽器などの楽音生成システムとして適用できる。
(2−2)集中的な打鍵の場合
次に、32チャンネル全てを使用して一度に発音する場合について説明する。
図24Bは、マスターキーボード300により32個の鍵盤を時刻t0に同時に打鍵した場合の動作を説明するためのタイムチャートであり、図6Bはこの打鍵に対応するチャンネルアサインテーブル232内のパラメータの変化を表したものである。なお、このような打鍵方法は通常の演奏ではあまりなされない方法である。
このような場合においては、例えば、図6Bに示すように、NNが0x28〜0x47に対応する32個の鍵盤が同時に打鍵される。この打鍵は、前述したCPU部230Aのチャンネルアサイン処理によりCH0〜31に割り当てられ、打鍵タイミングにCPU部230Aの処理遅延を付加したタイミングで、CH0〜31の読み出し要求が読み出し指示部240に出力され、さらに該読み出し要求に対応する読み出し指示情報がアクセスモジュール200Aから記憶モジュール100Aに転送される。以降は、図24Bに示すように、楽音データが楽音データバッファ231に転送され、楽音を生成することとなる。
この場合、最も発音遅延時間が長くなるのはCH28〜31であり、発音遅延時間は時刻t0〜t1までの期間、即ち図24Bの図面上650μ秒以下であると言える。これは発音遅延時間の許容範囲である1m秒より短い値であるので、図24Bの場合においても、本実施形態の楽音生成システムは、電子楽器などの楽音生成システムとして適用できる。
(2−3)急速消音の後に集中的な打鍵を行う場合
最後に、急速消音の後に32チャンネル全てを使用して一度に発音する場合について、図24Cと図6Cを用いて説明する。この場合は、例えば(2−2)に示した打鍵、即ち図6Cに示したようにNNが0x28〜0x47に対応する32個の鍵盤が時刻t0に打鍵された状態のままで、新たに時刻t1にNNが0x48〜0x67に対応する32個の鍵盤が打鍵された場合、即ち最大発音チャンネル数(32チャンネル)を超えた発音となる。
このように最大発音チャンネル数を超えた発音制御をする場合は、既に発音されている32チャンネル分全てを前もって急速消音し、該32チャンネル分のEEを値1にする。そして、聴感上聞こえないレベルまで消音した後に、該32チャンネルに新たな打鍵を割り当てる必要がある。このような場合が最も発音遅延時間が長くなる場合である。
このような急速消音を行う期間は、図24Cにおいて、時刻t1の打鍵直後の8サンプリング周期に相当する182μ秒の期間である。図6Cにおいて全チャンネルは、既に打鍵されていた鍵盤が離鍵されることなく、かつ、発音された状態において、新たな打鍵が行われたチャンネルとなるので、KON、SON共に値1から始まることとなる。そして信号処理部220の急速消音処理によりEEが値1に、SONが値0になり、その結果、CPU部230Aのチャンネルアサイン処理によりCH0〜31の読み出し指示情報が記憶モジュール100Aに転送されることとなる。それ以降のタイムチャートは、図24Bに示すタイムチャートと同様である。
この場合、最も発音遅延時間が長くなるのはCH28〜31であり、該発音遅延時間は時刻t1〜t3までの期間、即ち図24Cの図面上850μ秒以下であると言える。これは発音遅延時間の許容範囲である1m秒より短い値であるので、本実施形態の楽音生成システムは、電子楽器などの楽音生成システムとして適用できる。
以上のように、第1実施形態の楽音生成システムでは、不揮発性メモリバンク112〜142毎に楽音データを記録することにより多重化しておき、読み出し指示部240が、アクセスモジュール200Aからの読み出し指示に従って複数の不揮発性メモリバンクから並列的に楽音データを読み出すことができる。このため、本実施形態の楽音生成システムは、楽音を生成するシステムのような、どの音高の楽音データの読み出し指示がなされるか予想のつかないシステムに適用することができる。つまり、本実施形態の楽音生成システムでは、複数のデータの読み出し時に複数の不揮発性メモリバンクから並列的にデータを読み出すことができるので、発音遅延時間をその許容範囲である1m秒よりも短くすることができる。即ち、本実施形態の楽音生成システムでは、上記のように処理を行うことで、現在主流である大容量フラッシュメモリを楽音データ用のメモリとして使用することができるので、本発明により、低価格かつ小型の楽音信号発生装置を実現することが可能となる。
[第2実施形態]
次に、第2実施形態について、説明する。
<2.1:楽音生成システムの構成>
図25は、第2実施形態における楽音生成システムを示すブロック図である。本実施形態の楽音生成システムは、記憶モジュール群1000と、アクセスモジュール2000とを含んで構成される。記憶モジュール群1000は、記憶モジュール1100〜1300を含み、アクセスモジュール2000は、発音指示分類部3000とアクセスモジュール2100〜2300を含む。
記憶モジュール1100〜1300の各々は、第1実施形態で説明した記憶モジュール100Aと基本的に同一である。相違点は、記憶モジュール100Aがピアノ音の全音域(最低音〜最高音)を記憶しているのに対して、記憶モジュール1100〜1300は、全音域を分割的に記憶している点である。
アクセスモジュール2100〜2300の各々は、第1実施形態で説明したアクセスモジュール200Aと基本的に同一である。相違点は、アクセスモジュール200Aがピアノ音の全音域(最低音〜最高音)に対応する発音指示を処理するのに対して、アクセスモジュール2100〜2300は、全音域に対応する発音指示を分割的に処理する点である。ここで、発音指示とは、第1実施形態における打鍵データ(図16)に対応する。なお、ペダルデータは、アクセスモジュール2100〜2300に共通に転送されるものとする。
図26は、楽音データの音名コードと、記憶モジュール1100〜1300に分割的に記憶する楽音データとの対応関係を示す表である。図27は、記憶モジュール1100の記録状態を表すメモリマップである。
<2.2:楽音システムの動作>
以上のように構成された、本実施形態の楽音生成システムの動作について説明する。
マスターキーボード300から転送された発音指示は、発音指示分類部3000により分類される。A−1〜D2の発音指示はアクセスモジュール2100に、D#2〜G4の発音指示群はアクセスモジュール2200に、G#4〜C7の発音指示群はアクセスモジュール2300に、それぞれ、転送され、それぞれの発音指示群は、第1実施形態で説明したアクセスモジュール200Aと同様の処理が施され、記憶モジュール群1000に対して読み出し指示として出力される。ここで、A−1〜D2、D#2〜G4、G#4〜C7を、それぞれ音高グループ0、音高グループ1、音高グループ2とする。これらの音高グループは同じ音高を含まない、すなわち排他的なものである事が好ましい。但し、冗長ではあるが、各音高グループが同じ音高を含んでも構わない。その場合は、同じ音高に対する発音指示は、例えば音高グループ番号の小さい方を優先的に行えばよい。
アクセスモジュール2100は、最大30鍵分の発音指示に対する処理を行う、すなわち処理するチャンネル数は30CH以下となるので、アクセスモジュール2100が記憶モジュール1100から楽音データを読み出し、所望の楽音を生成するタイムチャートは、図24Aあるいは図24Bに対応する。アクセスモジュール2200、2300も同様である。すなわち、各アクセスモジュールは発音遅延が1mSec以内となるように処理することが可能となる。また、第1実施形態では、32CH以上の発音指示がなされた場合、図24Cに示すような強制消音を伴う場合があるが、第2実施形態では、アクセスモジュール2100が最大30鍵分、アクセスモジュール2200、2300がそれぞれ最大29鍵分の処理、すなわちいずれも32CH未満の処理ですむ為、強制消音が不要であり、聴感上好ましい。
ここで、発音指示分類部3000による発音指示の分類について補足する。第2実施形態では、マスターキーボード300の88鍵を3分割したが、例えば8鍵ずつ11分割するように拡張してもよい。この場合、アクセスモジュールと記憶モジュールとの組が11組必要となり回路規模が増大する。但し、各組8CHずつの処理ですむため、図24A、Bによれば不揮発性記憶モジュールは1つで発音遅延1mSecを満足できる。つまり、楽音データの記憶容量を合理化することができる。
以上のように、本実施形態の楽音生成システムでは、発音指示分類部3000が発音指示を音名に基づいて分類(グルーピング)し、1つのグループのチャンネル数が8より大きい場合は、記憶モジュール内の複数の不揮発性記憶モジュール間で楽音データを多重化して記録し、アクセスモジュール内の読み出し指示部が楽音データを並列読み出しするようにしたので、発音遅延を1mSec以内におさえることが可能となる。また、本実施形態の楽音生成システムでは、1つのグループのチャンネル数が8以下の場合は、記憶モジュール内の不揮発性記憶モジュールの個数が1つ、すなわち楽音データを多重記録しなくても発音遅延を1mSec以内におさえることが可能となる。
[他の実施形態]
なお、第1実施形態及び第2実施形態においては、ピアノの音をデジタル録音したデータを楽音データとして不揮発性メモリバンク112〜142、1112〜1142に記録したが、これに限定されることはなく、例えば、ピアノ以外の楽器音や音声、あるいはその他のデータを記憶しても構わない。また、楽音データは、デジタル録音したデータではなく人工的に作られたデータであってもよい。また、MP3などの圧縮技術によって圧縮されたデータであっても構わない。ただし、その場合は信号処理部220に該圧縮データを伸張する処理、即ちデコード処理を実行させる必要がある。また、打鍵強度に対応して2種類の楽音データを予め記憶したが、1種類あるいは3種類以上であっても構わない。ただし、1種類の場合は、信号処理部220による補間処理は不要であり、3種類以上の場合は該補間処理の方法を3点間直線補間などに拡張すればよい。また、補間処理ではなくフィルタリング処理を用いても構わない。
なお、上記実施形態では、1つの鍵盤に対応する楽音データを約40秒分としたが、それに限定されることはなく、またNNに応じて楽音データの時間長を変えてもよい。通常ピアノの場合は低音ほど発音時間が長いので、低音側の楽音データの時間長を比較的長めにして、高音側の楽音データの時間長を比較的短めにした方が記憶容量を合理化でき好ましい。また、上記実施形態では、楽音データの多重化に際して、不揮発性メモリバンク112〜142、1112〜1142に同一の楽音データを記録するようにしたが、聴感上同じように聞こえるのであれば、不揮発性メモリバンク112〜142間あるいは不揮発性メモリバンク1112〜1142間で楽音データの値が多少違っていても差し支えない。
記憶モジュール100A、記憶モジュール群1000は、メモリカードのようなリムーバブル記憶装置であってもよいし、電子楽器などの装置に組み込まれたメモリ部であってもよい。また、記憶モジュール1100〜1300、不揮発性記憶モジュール110A〜140A、不揮発性記憶モジュール1110〜1340のそれぞれが、メモリカードのようなリムーバブル記憶装置であってもよい。また、アクセスモジュール150、2000は電子楽器などの装置であってもよいし、電子楽器などの装置に組み込まれたアクセス回路部であってもよい。
第1実施形態においては不揮発性記憶モジュールの数を4個としたが、それ以外の数であっても構わない。不揮発性記憶モジュールの数が多いほど、より発音遅延時間を短くすることができる。また、セクタサイズ即ち1回あたりの楽音データの読み出しサイズを512Byteとしたが、その他のサイズであってもよい。該サイズが小さいほど楽音データバッファのRAM容量を合理化できるが、必要以上に小さくすると楽音生成処理が破綻する。また、1つの不揮発性記憶モジュール内に複数不揮発性メモリバンクを含んでも構わない。
なお、第1実施形態においては、図14AのS202〜S208に示す通り、不揮発性記憶モジュール群のアサイン状況に応じて読み出し指示情報の転送先の不揮発性記憶モジュールを決定するようにしたが、例えば、下記(a)〜(d)に示すようにCHNとMMNとの関係を固定化しても構わない。
(a)CH0、4、8、12、16、20、24、28・・・MM0(不揮発性記憶モジュール110A、110B)
(b)CH1、5、9、13、17、21、25、29・・・MM1(不揮発性記憶モジュール120A、120B)
(c)CH2、6、10、14、18、22、26、30・・・MM2(不揮発性記憶モジュール130A、130B)
(d)CH3、7、11、15、19、23、27、31・・・MM3(不揮発性記憶モジュール140A、140B)
なお、上記実施形態では、楽音データをページ内に連続的に配置したが、配置の規則性を記憶モジュール100Aやアクセスモジュール200Aが認識していれば、不連続であっても構わない。また、第1実施形態では、PB0を先頭ブロックとして楽音データの最低音から順に連続的に配置したが、配置の規則性を記憶モジュール100Aやアクセスモジュール200Aが認識していれば、PB0が先頭ブロックでなくてもよく、また不連続であっても構わない。
なお、上記実施形態では、不揮発性メモリバンクをフラッシュメモリとしたが、本発明はその他の不揮発性メモリを用いた場合に適用できる。
上記実施形態では、不揮発性メモリバンクに楽音データ特性情報とメモリ構成情報とを保持するようにしているが、これらの情報を保持する別の不揮発性メモリを設けておいてもよい。あるいは、前記メモリ構成情報は、予め規格化された情報として扱っても構わない。
なお、メモリコントローラ111A〜141Aは、アクセスモジュール200A側にあっても構わない。その場合、不揮発性メモリバンク112〜142は、それぞれが1つのメモリチップにパッケージされたものであってもよいし、あるいは不揮発性メモリバンク112〜142の中の2個以上をまとめて1つのメモリチップにパッケージされたものであってもよい。
なお、上記実施形態では、マスターキーボード300から演奏情報を入力したがそれ以外の形態の入力コントローラ、例えば弦を弾くことによって演奏データを出力するギター型のコントローラや、物を叩くことによって演奏データを出力するスティック型のコントローラ、あるいは加速度センサを備えたもので、それを振る動作に従って演奏データを出力するタイプのコントローラであってもよい。また、パーソナルコンピュータなどの装置から、あるいはネットワークを介してスタンダードMIDIファイルのような演奏データをアクセスモジュール200Aに入力するようにしても構わない。
なお、上記実施形態で説明した楽音生成システムにおいて、各ブロックは、LSIなどの半導体装置により個別に1チップ化されても良いし、一部又は全部を含むように1チップ化されても良い。
なお、ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてあり得る。
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。なお、上記実施形態に係る楽音生成システムをハードウェアにより実現する場合、各処理を行うためのタイミング調整を行う必要があるのは言うまでもない。上記実施形態においては、説明便宜のため、実際のハードウェア設計で生じる各種信号のタイミング調整の詳細については省略している。
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
また、上記実施形態において、アクセスモジュールと記憶モジュールとは、別装置である場合について説明したが、これに限定されることはなく、アクセスモジュールと記憶モジュールとは、1つの装置内に構成されるものであってもよい。また、アクセスモジュールは、アクセス装置を含む概念であり、記憶モジュールは、記憶装置を含む概念である。
本発明にかかる不揮発性記憶システムおよび楽音生成システムは、不揮発性メモリを楽音データ用のメモリとして使用する方法を提案したものであり、電子楽器やカラオケ装置、あるいは楽音生成機能(例えばサウンドカード)を有するパーソナルコンピュータや携帯電話などにおいて有益である。
100A、1100、1200、1300 記憶モジュール
110A、120A、130A、140A 不揮発性記憶モジュール
111A、121A、131A、141A メモリコントローラ
112、122、132、142 不揮発性メモリバンク
113、123、133、143 I/Oレジスタ
114、124、134、144 メモリセルアレイ
200A、2000、2100、2200、2300 アクセスモジュール
210、410、510 入出力部
220 信号処理部
230、420、520 CPU部
231 楽音データバッファ
231_0〜231_3 バッファ
231_0a、231_0b、231_1a、231_1b デュアルポートRAM
231_2a、231_2b、231_3a、231_3b デュアルポートRAM
231_0c、231_1c、231_2c、231_3c マルチプレクサ
231_0d、231_1d、231_2d、231_3d デマルチプレクサ
232 チャンネルアサインテーブル
233A NNテーブル
234 演奏データバッファ
235 転送監視部
236 ファイルシステム部
237 多重化部
240 読み出し指示部
250、430、530 書き込み指示部
300 マスターキーボード
310 インターネット
400、500 データ書き込みモジュール
1000 記憶モジュール群
3000 発音指示分類部

Claims (5)

  1. 不揮発性記憶モジュールと、該不揮発性記憶モジュールに記録されたデータを読み出すアクセスモジュールと、を備えた不揮発性記憶システムであって、
    前記不揮発性記憶モジュールは、第1記憶モジュールから第N記憶モジュール(Nは自然数)までのN個の記憶モジュールを有し、該不揮発性記憶モジュールに記録されるデータは前記第1記憶モジュールから第N記憶モジュールまでの少なくともひとつ選択された記憶モジュールに記録され、
    前記アクセスモジュールは、
    外部からのデータ読み出し指示に応じて、前記第1記憶モジュールから第N記憶モジュールのN個の記憶モジュールから該データが記録された記憶モジュールを決定するデータ分類部と、
    前記データ分類部の決定に基づいて、前記第1記憶モジュールから第N記憶モジュールのいずれかから前記データを読み出す読み出し指示部と、
    を備える不揮発性記憶システム。
  2. 第1記憶モジュールから第N記憶モジュール(Nは自然数)のN個の記憶モジュールを含み、楽音データを、第1音高グループから第N音高グループ(Nは自然数)のN個の音高グループに分割し、第k音高グループ(kは、1≦k≦Nを満たす自然数)の楽音データを、第k記憶モジュールに記憶することで、前記楽音データを前記音高グループ単位で分割して前記N個の記憶モジュールに記憶する記憶モジュール群と、
    前記記憶モジュール群に対して、データの読み出し指示を行うアクセスモジュールと、
    を備え、
    前記アクセスモジュールは、
    外部からの発音指示を第1発音指示群から第N発音指示群(Nは自然数)のN個の発音指示群のいずれかに分類することができる発音指示分類部であって、前記発音指示が前記N個の音高グループのどの音高グループに属するかを決定し、前記発音指示が第k音高グループ(kは、1≦k≦Nを満たす自然数)に属するものであると決定された場合、当該発音指示を第k発音指示群(kは、1≦k≦Nを満たす自然数)に分類する発音指示分類部と、
    前記N個の発音指示群の各々に対応する楽音データを記憶する前記N個の記憶モジュールに対して、データ読み出し指示を出力するN個の読み出し指示部と、
    を備える楽音生成システム。
  3. 前記記憶モジュール群の各々は、複数の不揮発性記憶モジュールを含み、該複数の不揮発性記憶モジュールは楽音データを多重化して記録する、
    請求項2に記載の楽音生成システム。
  4. 前記N個の読み出し指示部の各々は、外部からの1つの発音指示に応じて前記いずれかの不揮発性記憶モジュールからデータの読み出しを行い、当該読み出しを完了する前に、他の発音指示があったときに該読み出し中の不揮発性記憶モジュールと異なる不揮発性記憶モジュールから読み出しを並行して行う、
    請求項3に記載の楽音生成システム。
  5. 前記N個の読み出し指示部の各々は、1回の読み出し指示毎に複数サンプル分の楽音データをまとめて読み出す、
    請求項2から4のいずれかに記載の楽音生成システム。
JP2011515894A 2009-05-27 2010-05-26 不揮発性記憶システムおよび楽音生成システム Withdrawn JPWO2010137312A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2009127344 2009-05-27
JP2009127344 2009-05-27
PCT/JP2010/003532 WO2010137312A1 (ja) 2009-05-27 2010-05-26 不揮発性記憶システムおよび楽音生成システム

Publications (1)

Publication Number Publication Date
JPWO2010137312A1 true JPWO2010137312A1 (ja) 2012-11-12

Family

ID=43222438

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011515894A Withdrawn JPWO2010137312A1 (ja) 2009-05-27 2010-05-26 不揮発性記憶システムおよび楽音生成システム

Country Status (3)

Country Link
US (1) US20110246188A1 (ja)
JP (1) JPWO2010137312A1 (ja)
WO (1) WO2010137312A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8450589B2 (en) * 2008-04-10 2013-05-28 Panasonic Corporation Nonvolatile storage module, access module, musical sound data file generation module and musical sound generation system
JPWO2010010646A1 (ja) * 2008-07-24 2012-01-05 パナソニック株式会社 アクセスモジュール、記憶モジュール、楽音生成システム、及びデータ書き込みモジュール
US20120066471A1 (en) * 2010-09-14 2012-03-15 Advanced Micro Devices, Inc. Allocation of memory buffers based on preferred memory performance
US20130065213A1 (en) * 2011-09-13 2013-03-14 Harman International Industries, Incorporated System and method for adapting audio content for karaoke presentations
JP2013140541A (ja) * 2012-01-06 2013-07-18 Toshiba Corp 半導体記憶装置
JP6388048B1 (ja) 2017-03-23 2018-09-12 カシオ計算機株式会社 楽音生成装置、楽音生成方法、楽音生成プログラム及び電子楽器
JP6443772B2 (ja) * 2017-03-23 2018-12-26 カシオ計算機株式会社 楽音生成装置、楽音生成方法、楽音生成プログラム及び電子楽器

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5792399A (en) * 1980-11-29 1982-06-08 Nippon Musical Instruments Mfg Electronic musical instrument
US5142593A (en) * 1986-06-16 1992-08-25 Kabushiki Kaisha Toshiba Apparatus and method for classifying feature data at a high speed
JPH03174592A (ja) * 1989-12-04 1991-07-29 Kawai Musical Instr Mfg Co Ltd 電子楽器の音源回路
JPH05134673A (ja) * 1991-02-23 1993-05-28 Kawai Musical Instr Mfg Co Ltd 電子楽器
JP3152123B2 (ja) * 1995-09-11 2001-04-03 カシオ計算機株式会社 自動作曲機
JP4089688B2 (ja) * 2004-12-28 2008-05-28 ヤマハ株式会社 楽音信号生成装置
JP4513713B2 (ja) * 2005-10-21 2010-07-28 カシオ計算機株式会社 演奏教習装置および演奏教習処理のプログラム
JP4254793B2 (ja) * 2006-03-06 2009-04-15 ヤマハ株式会社 演奏装置

Also Published As

Publication number Publication date
US20110246188A1 (en) 2011-10-06
WO2010137312A1 (ja) 2010-12-02

Similar Documents

Publication Publication Date Title
WO2010137312A1 (ja) 不揮発性記憶システムおよび楽音生成システム
JP4655812B2 (ja) 楽音発生装置、及びプログラム
US8450589B2 (en) Nonvolatile storage module, access module, musical sound data file generation module and musical sound generation system
US8035021B2 (en) Tone generation apparatus
US10373595B2 (en) Musical sound generation device
US10475425B2 (en) Musical sound generation device
US10474387B2 (en) Musical sound generation device, musical sound generation method, storage medium, and electronic musical instrument
JP7124371B2 (ja) 電子楽器、方法及びプログラム
JP4438766B2 (ja) 楽音発生装置、及びプログラム
WO2010010646A1 (ja) アクセスモジュール、記憶モジュール、楽音生成システム、及びデータ書き込みモジュール
JP2650488B2 (ja) 電子楽器の楽音制御方法
JPS6231358B2 (ja)
US8492635B2 (en) Music sound generation apparatus, music sound generation system, and music sound generation method
JP4254677B2 (ja) 楽音発生装置および楽音発生処理のプログラム
JP3518716B2 (ja) 楽音合成装置
JP7332002B2 (ja) 電子楽器、方法及びプログラム
JP5360474B2 (ja) 楽音生成装置
JP6443773B2 (ja) 楽音生成装置、楽音生成方法、楽音生成プログラム及び電子楽器
JP5510814B2 (ja) 楽音生成装置
JP2011197550A (ja) 楽音生成装置
JP5510815B2 (ja) 楽音生成装置
EP1101217A1 (en) Synthesizer system utilizing mass storage devices for real time, low latency access of musical instrument digital samples
JPH08179774A (ja) 楽音合成装置
JP2014092723A (ja) 音発生装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130205

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20130925