JP5071124B2 - 音源装置 - Google Patents

音源装置 Download PDF

Info

Publication number
JP5071124B2
JP5071124B2 JP2008015734A JP2008015734A JP5071124B2 JP 5071124 B2 JP5071124 B2 JP 5071124B2 JP 2008015734 A JP2008015734 A JP 2008015734A JP 2008015734 A JP2008015734 A JP 2008015734A JP 5071124 B2 JP5071124 B2 JP 5071124B2
Authority
JP
Japan
Prior art keywords
data
sound
slot
work memory
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008015734A
Other languages
English (en)
Other versions
JP2009175560A (ja
Inventor
守人 森島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yamaha Corp
Original Assignee
Yamaha Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yamaha Corp filed Critical Yamaha Corp
Priority to JP2008015734A priority Critical patent/JP5071124B2/ja
Priority to US12/360,732 priority patent/US20090188377A1/en
Publication of JP2009175560A publication Critical patent/JP2009175560A/ja
Application granted granted Critical
Publication of JP5071124B2 publication Critical patent/JP5071124B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/002Instruments in which the tones are synthesised from a data store, e.g. computer organs using a common processing for different operations or calculations, and a set of microinstructions (programme) to control the sequence thereof
    • G10H7/004Instruments in which the tones are synthesised from a data store, e.g. computer organs using a common processing for different operations or calculations, and a set of microinstructions (programme) to control the sequence thereof with one or more auxiliary processor in addition to the main processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Electrophonic Musical Instruments (AREA)

Description

本発明は、音の波形を電子的に出力する音源を備えた音源装置に関する。
上記の音源の一つとしてFM(Frequency Modulation)音源が知られている。FM音源は、周波数変調の仕組みを使って音色を作り出す音源である。FM音源では、エンベロープジェネレータ(EG)が音量の時間的な変化を制御するエンベロープデータを生成し、フェイズジェネレータ(PG)が波形の周波数を制御するフェイズデータを生成し、オペレータ(OP)と呼ばれる波形発生部が、エンベロープデータとフェイズデータとに基づいて音データ(波形)を生成する。
FM音源としては、ハードウェアで構成されたものと、主にソフトウェアで実現されるものが知られている。以降、前者を「ハードFM音源」と呼び、後者を「ソフトFM音源」と呼ぶ。図7は、ハードFM音源の基本スロットの構成を示すブロック図である。ハードFM音源は、基本スロット110を複数個組み合わせて実現される。基本スロット110は、OP120、EG130、PG140及びレジスタ151〜153を備える。レジスタ151〜153には、各スロットの音色データが格納される。以降の説明では、スロット番号を角括弧で示す。
EG130は、セレクタ131と加算器132とを備え、レジスタ151に設定されたADSR[n]とTL[n]とに基づいてエンベロープデータ(env[n])を生成する。ADSR[n]とTL[n]は、それぞれ、エンベロープを制御するパラメータである。
PG140は、加算器141、142と乗算器143とを備え、レジスタ152に設定されたope[m]と、レジスタ153に設定されたNT[n]とML[n]とに基づいてフェイズデータ(phase[n])を生成する。ope[m]は、別のスロット[m]で生成された音データである。NT[n]及びML[n]は、それぞれ、周波数を制御するパラメータである。
OP120は、EG130が生成したenv[n]を指数形式からリニア形式へ変換して出力するExp演算部121と、PG140が生成したphase[n]に応じた正弦波データを出力するSin演算部122と、両演算部の出力を乗算する乗算器123とを備え、音データ(ope[n])を生成する。Exp演算部121はExpROM(Read Only Memory)を有し、Sin演算部122はSinROMを有する。以降、EG、PG及びOPが行う演算を「スロット演算」と呼ぶ。
一方、ソフトFM音源では、上記の基本スロットが主にソフトウェアで実現される。このFM音源では、DSP(Digital Signal Processor)またはCPU(Central Processing Unit)が、複数個のスロットに係る処理をスロット毎に順に実行する。特許文献1には、DSPで実現された音源が開示されている。ソフトFM音源では、レジスタはメモリ上にマップされ、スロット毎に、メモリへのアクセスが行われる。
特開2000−221981号公報
ところで、音源装置の機能構成を動的に変更することができれば便利である。例えば、一つの音源装置の機能構成を動的に変更し、128音(同時発音数が128)の音源とシーケンサの機能を持つ装置や、32音の音源とシーケンサと圧縮オーディオの伸長の機能を持つ装置として使用することができれば便利である。しかし、ハード音源では、機能構成を動的に変更することは困難である。一方、ソフト音源では、プログラムを入れ替えることで機能構成を動的に変更することができるが、DSPまたはCPUにおいて多数の処理を一つずつソフトウェアで実行しなければならず、十分な処理速度を実現することが困難である。
本発明は、このような状況を鑑みてなされたものであり、処理が高速で機能の動的再構成が可能な音源装置を提供することを目的とする。
上記課題を解決するため、本発明の音源装置は、複数のスロットの各々に係る音データを生成する音源装置において、ハードウェアで構成された複数の演算要素を備え、データを生成する演算を、前記演算要素を用いて行うことにより、複数種類の命令を実行する演算部と、複数のプログラムコードを含むプログラムを記憶するプログラムメモリと、前記演算部に一の前記スロットに係る音データを生成させるための第1及び第2のパラメータと、前記一のスロットに係る音データの生成過程で前記演算部に生成される第1及び第2の中間データと、前記一のスロットに係る音データと、別の前記スロットに係る音データとを記憶するワークメモリと、一つの前記プログラムコードを実行するコード実行処理を前記複数のプログラムコードについて順次行って前記プログラムを実行するプログラム実行処理を行う制御部とを備え、前記複数種類の命令は、音量の時間的な変化を制御するエンベロープデータを生成する演算を前記ワークメモリから読み出された前記第1のパラメータ及び前記第1の中間データと前記複数の演算要素のうち少なくとも二つとを用いて行うことを命じる第1の拡張命令と、波形の周波数を制御するフェイズデータを生成する演算を、前記ワークメモリから読み出された前記第2のパラメータ、前記第2の中間データ及び前記別のスロットに係る音データと前記複数の演算要素のうち少なくとも二つとを用いて行うことを命じる第2の拡張命令と、結果データを生成する演算を前記エンベロープデータと前記フェイズデータと前記複数の演算要素のうち少なくとも二つとを用いて行うことを命じる第3の拡張命令とを含み、前記プログラム実行処理は、前記ワークメモリから前記第1及び第2のパラメータと前記第1及び第2の中間データと前記別のスロットに係る音データとを読み出す一方、前記エンベロープデータ、前記フェイズデータ及び前記結果データを、前記第1の中間データ、前記第2の中間データ及び前記一のスロットに係る音データとして前記ワークメモリへ書き込むアクセス処理を含み、前記制御部は、前記コード実行処理において、実行する前記プログラムコードが前記複数種類の命令のいずれかに対応していれば、対応する命令を前記演算部に実行させる、ことを特徴とする。
この音源装置によれば、演算部に対して、データを生成する演算を、ハードウェアで構成された複数の演算要素のうち少なくとも二つを用いて行うことを命じる第1乃至第3の拡張命令が用意されているから、ソフト音源では実行に長時間を要したスロット演算を短時間で実行することができる。つまり、この音源装置によれば、音の波形を出力する処理が高速化される。例えば、ワークメモリへのアクセスに要する時間(例えば、8回のコード実行処理に要する時間)だけで音データを生成することも可能である。また、この音源装置では、制御部に読み出されるプログラムコード群を変更することで、音源装置の機能を動的に再構成することができる。
上記の音源装置において、前記制御部は、前記アクセス処理は、前記ワークメモリから前記第1及び第2の中間データと前記別のスロットに係る音データとを一括して読み出す第1処理と、前記ワークメモリから前記第1及び第2のパラメータを一括して読み出す第2処理と、前記エンベロープデータ、前記フェイズデータ及び前記結果データを、前記第1の中間データ、前記第2の中間データ及び前記一のスロットに係る音データとして一括して前記ワークメモリに書き込む第3処理と含む、ようにしてもよい。
この態様によれば、ワークメモリから第1及び第2の中間データと音データとが一括して読み出され、ワークメモリから第1及び第2のパラメータが一括して読み出され、ワークメモリへ第1及び第2の中間データと生成された音データとが一括して書き込まれるから、すなわちワークメモリに対してマルチワードアクセスが行われるから、更なる高速化が可能となる。例えば、ワークメモリへのアクセスに要する時間(例えば、3回のコード実行処理に要する時間)だけで音データを生成することも可能である。
上記の音源装置において、前記演算部をk(kは2以上の自然数)個備え、前記ワークメモリは、前記k個の演算部に共通して用いられ、前記アクセス処理は、前記ワークメモリからk組の前記第1の中間データ、前記第2の中間データ及び前記別のスロットに係る音データを一括して読み出す第4処理と、前記ワークメモリからk組の前記第1及び第2のパラメータを一括して読み出す第5処理と、k組の前記エンベロープデータ、前記フェイズデータ及び前記結果データを、k組の前記第1の中間データ、前記第2の中間データ及び前記一のスロットに係る音データとして一括して前記ワークメモリに書き込む第6処理とを含む、ようにしてもよい。
この態様によれば、ワークメモリからk組の第1の中間データ、第2の中間データ及び音データが一括して読み出され、ワークメモリからk組の第1及び第2のパラメータが一括して読み出され、ワークメモリへk組の第1の中間データ、第2の中間データ及び音データが一括して書き込まれるから、すなわちSIMD(Single Instruction / Multiple Data)で処理が行われるから、更なる高速化が可能となる。例えば、kを適宜に定めることにより、ハード音源を備えた音源装置と同等の処理速度とすることも可能である。
本発明の実施の形態について図面を参照して説明する。
<第1の実施形態>
図1は、本発明の第1の実施形態に係る音源装置100を備える装置のハードウェア構成を示すブロック図である。この装置は、音源装置100、ホストCPU91及びアナログ回路92を備える。音源装置100は、TLM(Transaction Level Modeling)によるバス(例えばAMBA(登録商標))に接続された、マイコンI/F(インターフェイス)81、オーディオコーデック82、ワークメモリ83、プログラムメモリ84及びカスタムDSP10を備える。
マイコンI/F81にはホストCPU91が接続され、オーディオコーデック82にはアナログ回路92が接続される。マイコンI/F81は、SDI(Serial Data In)及びSDO(Serial Data Out)を行うシリアルデータインターフェイスを備える。オーディオコーデック82は、ADC(Analog Digital Convertor)及びDAC(Digital Analog Convertor)を備える。
ワークメモリ83は、例えばRAM(Random Access Memory)であり、後述の、第1及び第2のパラメータと、第1及び第2の中間データと、音データとを一時的に記憶する。プログラムメモリ84は、例えばRAMまたはROMであり、複数のプログラムコードを含む複数のプログラム(ファームウェア)を記憶している。各プログラムは順序付けられた複数のプログラムコードを含む。
カスタムDSP10は、DSP101及び拡張ハードウェア(Custom Instruction)102を有する。DSP101は、一般的なDSPが備える複数の演算要素(具体的には、複数の加算器、複数の乗算器及び複数のアキュムレータ)を備える。これらの演算要素は、いずれもハードウェアで構成されている。拡張ハードウェア102は、一般的なDSPが備えていない複数の演算要素(具体的には、セレクタ、ExpROM及びSinROM)を備える。これらの演算要素は、いずれもハードウェアで構成されている。
DSP101の一部及び拡張ハードウェア102は、ハードウェアで構成された複数の演算要素を備え、データを生成する演算を、これらの演算要素のうち少なくとも一つを用いて行うことにより、複数種類の命令を実行する演算部Aとして機能する。複数種類の命令には、シーケンサ、FM音源、WT(Wave Table)音源、及びディジタル信号処理の実現に用いられる命令が含まれている。このような命令としては、FM音源の実現に用いられる第1乃至第3の拡張命令が挙げられる。詳しくは後述するが、第1乃至第3の拡張命令は、それぞれ、演算部Aに対して、データを生成する演算を、演算部Aが備える複数の演算要素のうち少なくとも二つを用いて行うことを命じる。なお、WT音源は、楽器等の音をデータとして記録しておき、それを再生する音源である。
DSP101の他の一部は、演算部Aを制御する制御部Bとして機能する。制御部Bは、マイコンI/F81からコマンドが渡されると、このコマンドに応じたプログラムをプログラムメモリ84から読み出し、プログラム実行処理を行う。プログラム実行処理は、一つのプログラムコードを実行するコード実行処理を一定の実行周期(例えば、1秒/150MHz)で複数のプログラムコードについて順次行うことによって、読み出されたプログラムを実行する処理である。また、制御部Bは、コード実行処理において、実行するプログラムコードが、上記の複数種類の命令のいずれか一つに対応していれば、対応している一つの命令を演算部Aに実行させる。つまり、音源装置100は、制御部Bに実行されるプログラムに応じた機能を持つ。
図2は、カスタムDSP10におけるプログラム実行処理の流れの一例を示す図である。カスタムDSP10は、サンプリング周期に同期して動作するものであり、この図には、1サンプリング期間分における流れが示されている。この例のプログラムは、音源装置100を高機能音源(シーケンサの機能と、64音のFM音源の機能と、64音のWT(Wave Table)音源の機能を持ち、ディジタル信号処理を実現可能なもの)として機能させるものであり、1サンプリング期間分のプログラムコードとして、レジスタアクセスコード群、シーケンスコード群、FMコード群、WTコード群及びDSPコード群を含む。各コード群は、分割されたプログラムであり、順序付けられた複数のプログラムコードを含む。制御部Bは、各サンプリング期間において、1サンプリング期間分のプログラムコードを先頭から順に実行する。具体例を次に述べる。
まず、レジスタアクセスコード群についてプログラム実行処理が行われる(S101)。この処理では、マイコンI/F81からのコマンドに対応する機能がワークメモリ83に展開される。具体的には、ワークメモリ83上へのレジスタのマッピングや、ワークメモリ83へのデータの書き込み、音色データや音符データの転送等の処理が行われる。次に、シーケンスコード群についてプログラム実行処理が行われる(S102)。この処理では、音符データに従って対応するキー(Key)のオン・オフを行うシーケンサが実現され、キーノート(Key Note)がワークメモリ83に書き込まれる。
次に、FMコード群についてプログラム実行処理が行われる(S103)。この処理では、演算部Aが、FM音源の複数のスロットにそれぞれ対応する複数のFM機能部(FM function)として機能する。各FM機能部は、対応するスロットに係るスロット演算を行うものであり、図には、n番目のスロットに対応するFM機能部[n]が例示されている。FM機能部の構成やFMコード群についてのプログラム実行処理の具体的内容については、後に詳述する。
次に、WTコード群についてプログラム実行処理が行われる(S104)。この処理では、演算部Aは、WT音源の複数のスロットにそれぞれ対応する複数のWT機能部(WT function)として機能する。各WT機能部は、対応するスロットに係るスロット演算を行うものであり、図には、n番目のスロットに対応するWT機能部[n]が例示されている。WT機能部はFM機能部に準じた構成を有する。また、WTコード群についてのプログラム実行処理の内容は、FMコード群についてのプログラム実行処理の内容に準じる。
次に、DSPコード群についてプログラム実行処理が行われる(S105)。この処理では、エフェクタ(Effector)や、サンプリングレートコンバータ(SRC)、オーバーサンプリングフィルタ(OSF)等のディジタル信号処理が行われる。この例では、外部のアナログ回路92からのアナログ信号がADCを介して入力され、この信号と、FMコード群及びWTコード群についてのプログラム実行処理で生成された信号(音データ)とのミキシングが行われ、ミキシング後の信号に対してエフェクタが実行され、実行後の信号が、オーバーサンプリングフィルタを通してDAC経由でアナログ回路92へ出力される。なお、サンプリングレートコンバータ(SRC)は、SDIの入力信号のサンプリング周波数をカスタムDSP10用のサンプリング周波数に変換するものである。
そして、1サンプリング期間分のプログラムコードについてのプログラム実行処理が終了すると、制御部Bは、カスタムDSP10をサスペンドモードへ移行させ、1サンプリング期間が終了するまで、消費電力を抑える。ただし、この例では、1サンプリング期間分のプログラムコードの実行が終了するとともに当該1サンプリング期間が終了するから、サスペンドモードへの移行は行われず、次の1サンプリング期間分のプログラムコードの実行が開始される。
図3は、一般的なソフトFM音源のスロット[n]に係る複数のプログラムコードの実行イメージを示す図である。この図において、プログラムコードの欄に記載されたプログラムコードは、演算を命じる命令に対応していないプログラムコードである。この図に示すように、一般的なソフトFM音源は、FM機能部[n]に相当する機能部を有する。この機能部は、FM機能部[n]と同様に、オペレータ(OP)20と、エンベロープジェネレータ(EG)30と、フェイズジェネレータ(PG)40と、アキュムレータACC1及びACC2とを有する。
EG30は、加算器31及びセレクタ32を有する。セレクタ32には、ワークメモリ83に相当する内部メモリから読み出された第1の中間データ(env[n])と、内部メモリから読み出された二つの第1のパラメータ(ADSR[n]及びTL[n])が供給される。ADSR[n]及びTL[n]は、いずれも、機能部にスロット[n]に係る音データ(ope[n])を生成させるための定数データである。第1の中間データ(env[n])は、ope[n]の生成過程で機能部に生成されたエンベロープデータである。エンベロープデータは、音量の時間的な変化を制御するデータである。
セレクタ32の出力データは、アキュムレータACC1に記憶される。加算器31は、アキュムレータACC1に記憶された出力データと、内部メモリから読み出された第1の中間データ(env[n])とを加算してエンベロープデータ(env[n])を生成する。このenv[n]は、アキュムレータACC1に記憶される。アキュムレータACC1に記憶されたenv[n]は、第1の中間データとして内部メモリに書き込まれる一方、OP20で使用される。
PG40は、加算器41、42及び乗算器43を有する。加算器41は、内部メモリから読み出された第2の中間データ(phase[n])と、内部メモリから読み出された音データ(ope[m])とを加算する。この加算結果は、アキュムレータACC1に記憶される。第2の中間データ(phase[n])は、ope[n]の生成過程で機能部に生成されたフェイズデータである。フェイズデータは、波形の周波数を制御するデータである。ope[m]は、別のスロット[m]に係る音データである。
乗算器43は、内部メモリから読み出された二つの第2のパラメータ(NT[n]及びML[n])を乗算する。NT[n]及びML[n]は、いずれも、機能部にスロット[n]に係る音データ(ope[n])を生成させるための定数データである。加算器42は、この乗算器43の乗算結果と、アキュムレータACC1に記憶された加算結果とを加算してフェイズデータ(phase[n])を生成する。このphase[n]は、アキュムレータACC2に記憶される。アキュムレータACC2に記憶されたphase[n]は、第2の中間データとして内部メモリに書き込まれる一方、OP20で使用される。
OP20は、乗算器21、Exp演算部22及びSin演算部23を有する。Exp演算部22は、アキュムレータACC1からエンベロープデータ(env[n])を読み出し、これを指数形式からリニア形式へ変換して出力する。Sin演算部23は、アキュムレータACC2からフェイズデータ(phase[n])を読み出し、これに応じた正弦波データを出力する。乗算器21は、Exp演算部22の出力データとSin演算部23の出力データとを乗算して結果データ(ope[n])を生成する。このope[n]は、アキュムレータACC1に記憶される。アキュムレータACC1に記憶されたope[n]は、スロット[n]に係る音データとして内部メモリに書き込まれる。
ところで、一般的なソフトFM音源では、セレクタ32、Exp演算部22及びSin演算部23が、ソフトウェアで実現される。したがって、セレクタ32、Exp演算部22およびSin演算部23の動作には、それぞれ、数十ステップ(実行周期)を要する。これでは、十分な処理速度の確保が困難である。これに対し、本実施形態では、加算器31、41、42及び乗算器21、43のみならず、セレクタ32、Exp演算部22及びSin演算部23もハードウェアで構成されている。例えば、Exp演算部22はExpROMであり、Sin演算部23はSinROMである。また、本実施形態では、前述の第1乃至第3の拡張命令が用意されている。
第1の拡張命令が演算部Aに命じる演算を式で表すと、env[n]=EG(env[n],ADSR[n],TL[n])=SEL(env[n],ADSR[n],TL[n])+env[n]、となる。つまり、第1の拡張命令は、エンベロープデータ(env[n])を生成する演算を、ワークメモリ83から読み出された第1のパラメータ(ADSR[n]及びTL[n])及び第1の中間データ(env[n])と、ハードウェアで構成された加算器31、セレクタ32およびアキュムレータACC1とを用いて行うことを演算部Aに命じる。
第2の拡張命令が演算部Aに命じる演算を式で表すと、phase[n]=PG(phase[n],NT[n],ML[n])=phase[n]+ope[m]+NT[n]*ML[n]、となる。つまり、第2の拡張命令は、フェイズデータ(phase[n])を生成する演算を、ワークメモリ83から読み出された第2のパラメータ(NT[n]及びML[n])、第2の中間データ(phase[n])及び別のスロットに係る音データ(ope[m])と、ハードウェアで構成された加算器41、加算器42、乗算器43、アキュムレータACC1及びアキュムレータACC2とを用いて行うことを演算部Aに命じる。
第3の拡張命令が演算部Aに命じる演算を式で表すと、ope[n]=OP(ACC1,ACC2)=Exp(ACC1)*Sin(ACC2)、となる。つまり、第3の拡張命令は、結果データ(ope[n])を生成する演算を、アキュムレータACC1に記憶されたエンベロープデータ(env[n])と、アキュムレータACC2に記憶されたフェイズデータ(phase[n])と、ハードウェアで構成された乗算器21、Exp演算部22及びSin演算部23とを用いて行うことを演算部Aに命じる。
第1〜第3の拡張命令が命じる演算は、いずれも、アキュムレータを除いたとしても、少なくとも二つの演算要素を用いる演算である。したがって、本実施形態によれば、ソフト音源では一つずつ実行しなければならなかった複数の処理を一挙に実行することができる。また、第1〜第3の拡張命令により行われる演算は、いずれも、ハードウェアで構成された演算要素のみを用いて行われる。よって、本実施形態によれば、スロット演算を極めて短時間(1実行周期未満の時間)で実行可能である。
また、FM音源のスロット[n]に係るFMコード群についてのプログラム実行処理には、演算部A(FM機能部[n])に第1の拡張命令を実行させる前にワークメモリ83からADSR[n]、TL[n]及び第1の中間データ(env[n])を読み出し、演算部A(FM機能部[n])に第2の拡張命令を実行させる前にワークメモリ83からNT[n]、ML[n]、第2の中間データ(phase[n])及びope[m]を読み出し、生成されたエンベロープデータ(env[n])、フェイズデータ(phase[n])及び結果データ(ope[n])を、第1の中間データ(env[n])、第2の中間データ(phase[n])及びスロット[n]に係る音データ(ope[n])としてワークメモリ83に書き込むアクセス処理が含まれている。
アクセス処理の実現形態は様々である。例えば、制御部Bが8回のコード実行処理を連続して行うことによって一つのスロットに係るプログラム実行処理を完了する形態が挙げられる。この形態では、例えば、スロット[n]について、図3に示すように、1番目のコード実行処理(「env[n]read」に係る処理)において第1の中間データが読み出され、2番目のコード実行処理(「ADSR[n]TL[n]read」に係る処理)において第1のパラメータが読み出され、この読み出しが終了してから3番目のコード実行処理(「env[n]write」に係る処理)が開始されるまでの間に演算部A(FM機能部[n])によって第1の拡張命令が実行され、3番目のコード実行処理において、第1の拡張命令の実行によって生成されたenv[n]が第1の中間データとして書き込まれ、4番目のコード実行処理(「phase[n]read」に係る処理)において第2の中間データが読み出され、5番目のコード実行処理(「ope[m]read」に係る処理)において別のスロット[m]に係る音データが読み出され、6番目のコード実行処理(「NT[n]ML[n]read」に係る処理)において第2のパラメータが読み出され、この読み出しが終了してから7番目のコード実行処理(「phase[n]write」に係る処理)が開始されるまでの間に演算部A(FM機能部[n])によって第2の拡張命令が実行され、7番目のコード実行処理において、第2の拡張命令の実行によって生成されたphase[n]が第2の中間データとして書き込まれ、この生成が終了してから8番目のコード実行処理(「ope[n]write」に係る処理)が開始されるまでの間に演算部A(FM機能部[n])によって第3の拡張命令が実行され、第3の拡張命令の実行によって生成されたope[n]がスロット[n]に係る音データとして書き込まれる。
この実現形態では、ワークメモリ83への1ワード単位のアクセスに要する合計8ステップ(実行周期×8)でFM音源の各スロットに係る処理を終えることができる。これは、ソフトFM音源では各スロットに係る処理に約100ステップを要することに鑑みると、大幅な高速化であるが、本実施形態では、更なる高速化を目指して、制御部Bが3回のコード実行処理を連続して行うことによって一つのスロットに係るプログラム実行処理を完了する形態を採用している。この形態の詳細は次に述べる通りである。
図4は、FM機能部[n]に係るFMコード群の実行イメージを示す図である。この図に示すように、本実施形態に係るアクセス処理の実現形態では、制御部Bは、例えば、スロット[n]について、1番目のコード実行処理(「env[n]/phase[n]/ope[m]read」に係る処理)において、ワークメモリ83から第1の中間データ、第2の中間データ及び別のスロット[m]に係る音データを一括して読み出す第1処理を行い、2番目のコード実行処理(「ADSR[n]/TL[n]/NT[n]/ML[n]read」に係る処理)において、ワークメモリ83から第1及び第2のパラメータを一括して読み出す第2処理を行い、この読み出しから3番目のコード実行処理(「env[n]/phase[n]/ope[n]write」に係る処理)において、第1の拡張命令の実行によって演算部A(FM機能部[n])に生成されたenv[n]、第2の拡張命令の実行によって演算部A(FM機能部[n])に生成されたphase[n]及び第3の拡張命令の実行によって演算部A(FM機能部[n])に生成されたope[n]を、第1の中間データ、第2の中間データ及びスロット[n]に係る音データとして一括してワークメモリ83に書き込む第3処理を行う。
つまり、この実現形態では、ワークメモリ83への3ワード(48ビット)単位のアクセスが行われ、ワークメモリ83への3ワード単位のアクセス(マルチワードアクセス)に要する合計3ステップ(実行周期×3)で、FM音源の各スロットに係る処理を終えることができる。以上、FM音源について説明したことは、WT音源にもあてはまる。
図5は、カスタムDSP10におけるリソースの分配イメージを示す図である。この図では、カスタムDSPの駆動周波数を約150MHz、サンプリング周波数を約48kHzとしたときのものであり、1サンプリング期間において配分可能なステップ(実行周期)は、約150MHz/約48kHz=3072ステップである。また、この図に示すように、音源装置100は、制御部Bに実行させるプログラムを変更することにより、用途毎にカスタマイズ可能である。第1の用途は前述の高機能音源である。第2の用途は、音源(32音のFM音源及び32音のWT音源)及び圧縮オーディオ(2チャンネルのMP3データの再生)である。第3の用途は汎用ディジタル信号処理である。第4の用途は、簡易音源(4音のFM音源及びシーケンサ)及び浮動小数点ディジタル信号処理である。
高機能音源に注目すると、3072ステップのうち、768ステップがシーケンサに、768ステップが計128音の音源(64音のFM音源及び64音のWT音源)に、1536ステップがディジタル信号処理に分配されている。ソフト音源で同時発音数を128にするには、1音当たり2スロットとすると、1スロット当たり約100ステップを要するから、約100ステップ*128音*2スロット=約25600ステップが必要となる。これに対し、音源装置100では、1スロット当たり3ステップで済むから、1音当たり2スロットとすると、3ステップ*128音*2スロット=768ステップで同時発音数を128とすることができる。このように、本実施形態によれば、ソフト音源では実現困難な機能を実現することができる。
<第2の実施形態>
図6は、本発明の第2の実施形態に係る音源装置における複数のプログラムコードの実行イメージを示す図である。この図に示すデータは、ワークメモリ83と制御部Bとの間で授受される。この音源装置は、拡張ハードウェア102に相当するハードウェアを四つ備えている。また、DSP101において演算部Aを構成していた部分に相当するハードウェアを四つ備えている。つまり、この音源装置は、四つの演算部Aを備えており、一つのワークメモリ83を四つの演算部Aに共通して用いる。
この音源装置では、SIMDで処理が行われる。具体的には、この音源装置におけるアクセス処理は、四つのスロット単位で行われる。このアクセス処理は、ワークメモリ83から4組の第1の中間データ、第2の中間データ及び別のスロットに係る音データを一括して読み出す第4処理と、ワークメモリ83から4組の第1及び第2のパラメータを一括して読み出す第5処理と、4組のエンベロープデータ、フェイズデータ及び結果データを、4組の第1の中間データ、第2の中間データ及び一のスロットに係る音データとして一括してワークメモリ83に書き込む第6処理とを含む。
例えば、四つのスロット[n〜n+3]に対応するアクセス処理は、第4処理として、ワークメモリ83から、env[n〜n+3]、phase[n〜n+3]及びope[m〜m+3]を一括して読み出す処理を、第5処理として、ワークメモリ83から、ADSR[n〜n+3]、TL[n〜n+3]、NT[n〜n+3]及びML[n〜n+3]を一括して読み出す処理を、第6処理として、env[n〜n+3]、phase[n〜n+3]及びope[n〜n+3]を一括してワークメモリ83に書き込む処理を含む。
つまり、本実施形態では、ワークメモリ83への3ワード×4スロット=12ワード(192ビット)単位のアクセスが行われる。そして、本実施形態では、ハードウェアによって1ステップ当たり2スロット分のスロット演算が行われる。よって、本実施形態によれば、4ステップで4スロット分の処理を実行可能である。これは、1ステップで1スロットの処理を実行するのと等価な速度である。つまり、本実施形態によれば、ハードFM音源と同等の処理速度を得ることができる。
<変形例>
第1の実施形態を変形し、1サンプリング期間分のプログラムコードについてのプログラム実行処理が終了すると、1サンプリング期間が終了するまで、カスタムDSP10がサンプリング周期とは非同期の別の処理を行う形態としてもよい。また、第2の実施形態を変形し、演算部Aの数(k)を、3以下としてもよいし、5以上としてもよい。この場合、演算部Aの数に応じて、一括して処理するスロットの数も増減させるべきである。また、各実施形態を変形し、1スロット当たり2ワード以下のワード単位でアクセスを行う形態としてもよいし、1スロット当たり4ワード以上のワード単位でアクセスを行う形態としてもよいし、DSP101が行う処理をCPUが行う形態としてもよい。これらの形態は、本発明の技術的範囲に含まれ得る。
本発明の第1の実施形態に係る音源装置100を備える装置のハードウェア構成を示すブロック図である。 音源装置100のカスタムDSP10におけるプログラム実行処理の流れの一例を示す図である。 一般的なソフトFM音源のスロット[n]に係る複数のプログラムコードの実行イメージを示す図である。 カスタムDSP10のFM機能部[n]に係るFMコード群の実行イメージを示す図である。 カスタムDSP10におけるリソースの分配イメージを示す図である。 本発明の第2の実施形態に係る音源装置における複数のプログラムコードの実行イメージを示す図である。 ハードFM音源の基本スロットの構成を示すブロック図である。
符号の説明
10…カスタムDSP、20…オペレータ(OP)、30…エンベロープジェネレータ(EG)、40…フェイズジェネレータ(PG)、81…マイコンI/F、82…オーディオコーデック、83…ワークメモリ、84…プログラムメモリ、91…ホストCPU、92…アナログ回路、100…音源装置。

Claims (3)

  1. 複数のスロットの各々に係る音データを生成する音源装置において、
    ハードウェアで構成された複数の演算要素を備え、データを生成する演算を、前記演算要素を用いて行うことにより、複数種類の命令を実行する演算部と、
    複数のプログラムコードを含むプログラムを記憶するプログラムメモリと、
    前記演算部に一の前記スロットに係る音データを生成させるための第1及び第2のパラメータと、前記一のスロットに係る音データの生成過程で前記演算部に生成される第1及び第2の中間データと、前記一のスロットに係る音データと、別の前記スロットに係る音データとを記憶するワークメモリと、
    一つの前記プログラムコードを実行するコード実行処理を前記複数のプログラムコードについて順次行って前記プログラムを実行するプログラム実行処理を行う制御部とを備え、
    前記複数種類の命令は、
    音量の時間的な変化を制御するエンベロープデータを生成する演算を前記ワークメモリから読み出された前記第1のパラメータ及び前記第1の中間データと前記複数の演算要素のうち少なくとも二つとを用いて行うことを命じる第1の拡張命令と、
    波形の周波数を制御するフェイズデータを生成する演算を、前記ワークメモリから読み出された前記第2のパラメータ、前記第2の中間データ及び前記別のスロットに係る音データと前記複数の演算要素のうち少なくとも二つとを用いて行うことを命じる第2の拡張命令と、
    結果データを生成する演算を前記エンベロープデータと前記フェイズデータと前記複数の演算要素のうち少なくとも二つとを用いて行うことを命じる第3の拡張命令とを含み、
    前記プログラム実行処理は、前記ワークメモリから前記第1及び第2のパラメータと前記第1及び第2の中間データと前記別のスロットに係る音データとを読み出す一方、前記エンベロープデータ、前記フェイズデータ及び前記結果データを、前記第1の中間データ、前記第2の中間データ及び前記一のスロットに係る音データとして前記ワークメモリへ書き込むアクセス処理を含み、
    前記制御部は、前記コード実行処理において、実行する前記プログラムコードが前記複数種類の命令のいずれかに対応していれば、対応する命令を前記演算部に実行させる、
    ことを特徴とする音源装置。
  2. 前記アクセス処理は、前記ワークメモリから前記第1及び第2の中間データと前記別のスロットに係る音データとを一括して読み出す第1処理と、前記ワークメモリから前記第1及び第2のパラメータを一括して読み出す第2処理と、前記エンベロープデータ、前記フェイズデータ及び前記結果データを、前記第1の中間データ、前記第2の中間データ及び前記一のスロットに係る音データとして一括して前記ワークメモリに書き込む第3処理と含む、
    ことを特徴とする請求項1に記載の音源装置。
  3. 前記演算部をk(kは2以上の自然数)個備え、
    前記ワークメモリは、前記k個の演算部に共通して用いられ、
    前記アクセス処理は、前記ワークメモリからk組の前記第1の中間データ、前記第2の中間データ及び前記別のスロットに係る音データを一括して読み出す第4処理と、前記ワークメモリからk組の前記第1及び第2のパラメータを一括して読み出す第5処理と、k組の前記エンベロープデータ、前記フェイズデータ及び前記結果データを、k組の前記第1の中間データ、前記第2の中間データ及び前記一のスロットに係る音データとして一括して前記ワークメモリに書き込む第6処理とを含む、
    ことを特徴とする請求項1に記載の音源装置。
JP2008015734A 2008-01-28 2008-01-28 音源装置 Expired - Fee Related JP5071124B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008015734A JP5071124B2 (ja) 2008-01-28 2008-01-28 音源装置
US12/360,732 US20090188377A1 (en) 2008-01-28 2009-01-27 Sound Generator Apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008015734A JP5071124B2 (ja) 2008-01-28 2008-01-28 音源装置

Publications (2)

Publication Number Publication Date
JP2009175560A JP2009175560A (ja) 2009-08-06
JP5071124B2 true JP5071124B2 (ja) 2012-11-14

Family

ID=40897897

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008015734A Expired - Fee Related JP5071124B2 (ja) 2008-01-28 2008-01-28 音源装置

Country Status (2)

Country Link
US (1) US20090188377A1 (ja)
JP (1) JP5071124B2 (ja)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5441497B2 (ja) * 1974-11-14 1979-12-08
US4373416A (en) * 1976-12-29 1983-02-15 Nippon Gakki Seizo Kabushiki Kaisha Wave generator for electronic musical instrument
JPS5748792A (en) * 1980-09-08 1982-03-20 Nippon Musical Instruments Mfg Electronic musical instrument
US4421003A (en) * 1980-11-25 1983-12-20 Kabushiki Kaisha Kawai Gakki Seisakusho Envelope generator for electronic musical instruments
US5719345A (en) * 1995-11-13 1998-02-17 Opti Inc. Frequency modulation system and method for audio synthesis
JP3246405B2 (ja) * 1996-08-30 2002-01-15 ヤマハ株式会社 楽音発生方法、楽音発生装置および楽音発生用プログラムを記録した記録媒体
JP2002297198A (ja) * 2001-03-30 2002-10-11 Seiko Epson Corp オーディオ復号装置
WO2006018873A1 (ja) * 2004-08-18 2006-02-23 Usc Digiark Corporation データ処理装置、電子機器システム評価装置及び評価方法
JP4254673B2 (ja) * 2004-09-22 2009-04-15 ヤマハ株式会社 楽音生成装置

Also Published As

Publication number Publication date
JP2009175560A (ja) 2009-08-06
US20090188377A1 (en) 2009-07-30

Similar Documents

Publication Publication Date Title
JP2765426B2 (ja) 効果付与装置および電子楽器
JPH07210380A (ja) ディジタル信号処理装置
JP5789993B2 (ja) 楽音信号発生装置
JPH0612069A (ja) ディジタル信号処理装置
JP5071124B2 (ja) 音源装置
Gordon System architectures for computer music
JPS5925235B2 (ja) 電子楽器
US5684260A (en) Apparatus and method for generation and synthesis of audio
JP3230449B2 (ja) 信号処理装置
US6085309A (en) Signal processing apparatus
JP3087631B2 (ja) 効果付与装置
JP3610759B2 (ja) ディジタル信号処理装置
JP3832383B2 (ja) 楽音生成装置及びプログラム
JPH0310959B2 (ja)
JPH07306681A (ja) 楽音生成装置
JP3832382B2 (ja) 楽音生成装置及びプログラム
JP3016470B2 (ja) 音源装置
JP3223757B2 (ja) 楽音波形発生方法
JPH06348262A (ja) 信号処理装置
JP3104873B2 (ja) 音源装置
JPH10198559A (ja) 信号処理装置
JP2910632B2 (ja) 波形メモリ音源装置
JP3918309B2 (ja) エフェクト装置
JPS58200294A (ja) 包絡線信号発生装置
JPH10133659A (ja) ディジタル信号処理プロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101122

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120709

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120724

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120806

R150 Certificate of patent or registration of utility model

Ref document number: 5071124

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150831

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees