SMF ファイルをコンバートする際、 マーカーなどのテキストイベントのテキスト長がゼロの場合、 アプリケーションエラーが発生する問題がありましたが、 これを修正しました。
「バンクデータマニュアル」と「サウンドアーカイブマニュアル」に、 波形個別ロードの際、管理領域として 4 波形につき 32 バイト消費する旨 明記しました。
波形アーカイブの個別ロードオプションが有効なときと、 無効なときの挙動の違いについて説明を追加しました。
SoundPlayer を TWL 開発用実機や IS-TWL-DEBUGGER の NAND にインポートできる NANDSoundPlayer.tad を追加しました。 インポートした NAND SoundPlayer を実行すると、 SD カードのルートフォルダにある sdat ファイルのうち、 一番最初に見つかったものを自動的にロードします。
詳しくは、「サウンドデザイナーガイド」に「9.10 NAND SoundPlayer」をご覧ください。
TWL または IS-TWL-DEBUGGER で実行した場合、 I2S 周波数を切り替えられるようになりました。
詳しくは、「サウンドデザイナーガイド」の「9.4.5 I2S 周波数」をご覧ください。
SoundPlayer.srl を IS-TWL-DEBUGGER および TWL 開発用実機で起動し、 ストリームサウンドを再生すると暴走してしまうことがありましたが、 これを修正しました。
日本語名フォルダに格納されたサウンドデータを SoundMaker などでコンバートするとエラーになりましたが、これを修正しました。
サウンドアーカイブを破棄し、異なるサウンドアーカイブを 同じアドレスにロードして使用する場合の注意書きを追加しました。
NNS_SndWaveOutStart 関数で扱える波形データフォーマットとして IMA-ADPCM が追加されました。
sndarc.exe の --align オプションで指定したアライメントサイズが 反映されなくなっていましたが、これを修正しました。 あわせて、サウンドマップファイルに出力されるサイズ値も 正しくありませんでしたので、修正しました。
NNS_SndArcInit* 関数のリファレンスに、 NAND アーカイブおよび、SD カードアーカイブ上のサウンドアーカイブデータを 使用できない旨を追記しました。
waveconv.exe で不正なループ情報を持つ波形ファイルを コンバートしたときに、エラーを出力するようにしました。
「サウンドデザイナーガイド」に SoundPlayer を TWL または IS-TWL-DEUBBGER で利用した場合に、 ハードウェアボリュームが表示される旨、説明を追加しました。 また、IS-TWL-MIDI 対応についても説明を追加しました。
「クイックスタートガイド」「サウンドデザイナーガイド」で サンプルデータが含まれるディレクトリのパスが間違って書かれていました。 これを修正しました。
「サウンドプログラマガイド」に TWL-SDKのSND/SNDEX/DSP関数使用時の注意書きを追加しました。
ストリームスレッドのスタックサイズが小さすぎたため、 ストリームコールバックなどでスタックを消費すると、 簡単にメモリ破壊が起こることがある問題がありましたが、 これを修正しました。
下記のpdfマニュアルにおいて、改訂履歴の書式変更とページヘッダの修正を行いました。
サウンドアーカイブからのデータロード時のロードブロックサイズを設定/取得できる以下の関数を追加しました。
設定したロードブロックサイズより大きなデータをロードするときは、 ロードブロックサイズ単位で分割し、 複数回に分けてロードが行われるようになります。
以下の関数の引数に、constをつけるようにしました。
MIDIのRPNに対応しました。RPN LSB=0 MSB=0で、ピッチベンドセンシティビティ(bendrange)を設定することができます。
attck, decay, sustain, release, envelopeの各シーケンスコマンドについて、 これまでは一度シーケンス側でエンベロープの設定を行うと、バンク側の設定に戻すことができませんでしたが、 それぞれ引数に-1を指定することで、シーケンス側の設定を無効にし、バンク側の設定が有効になるようにしました。
waveconvおよびstrmconvにおいて、ADPCMエンコードによるノイズ発生を軽減させるような改良を行いました。
NNS_SndArcStrmStart関数などで指定できる再生開始オフセットについて、 ライブラリ内の計算でオーバーフローを起こし、 指定されたオフセット位置から再生されないことがある不具合がありましたが、修正されました。
2007/03/14版の変更に伴い、サウンドアーカイブ内のデータのアライメントがずれてしまい、実行時にアサートにひっかかるなどする問題がありましたが、修正されました。
ただし、サウンドデータの再コンバートが必要です。
サウンドアーカイブのコンバート時に生成されるサウンドマップファイル(*.smap)に記述されるデータサイズについて、不正確な値が出力されることがある問題がありましたが、修正されました。
waveconv,およびstrmconvにおいて、 正しいAIFFファイルであるにも関わらずコンバートエラーになることがある問題がありましたが、 修正されました。
SoundPlayerに、出力エフェクトを変更することができる機能を追加しました。
SoundPlayerの画面上に、ストリーム再生中のストリームスレッドの処理負荷を表示するようにしました。
SoundPlayerで、複数のサウンドを同じタイミングで再生する機能を追加しました。詳しくは、「サウンドデザイナーガイド」をご覧下さい。
サウンドアーカイバsndarcに、アーカイブ内のサウンドデータのアライメントを指定できる.alignオプションを追加しました。詳しくは、「サウンドツールマニュアル」をご覧下さい。
サウンドアーカイバsndarcに、コンバートするファイルをファイルタイプで指定する.convertオプションを追加しました。詳しくは、「サウンドツールマニュアル」をご覧下さい。
再生中のストリームデータのチャンネル数を取得する関数NNS_SndArcStrmGetChannelCount及び、ストリームの音量を変更する関数NNS_SndArcStrmSetVolumeを追加しました。
バンクファイルなどのファイル数が増えたとき、コマンドライン引数オーバーによるコンバートエラーが発生することがある問題がありましたが、修正されました。
シーケンスデータからミュートの設定を行うコマンドmuteを追加しました。 このコマンドは、SDKバージョン3.1以降でのみ動作します。詳しくは、「シーケンスデータマニュアル」をご覧下さい。
サウンドアーカイブ定義ファイルにおいて、これまでは、使用するラベルはあらかじめ定義しておく必要がありましたが、後で定義するラベルも使用可能になりました。
SMFテキストコマンド埋め込みのラベル名展開機能で、'$'の代わりに、'$$'を使うことで、トラック番号のみ展開して、ファイル名を展開しないようにすることができるようになりました。 詳しくは、「シーケンスデータマニュアル」をご覧下さい。
発音中の音を止めずにミュートを行うことができるNNS_SndPlayerSetTrackMuteEx関数を追加しました。 この関数は、SDKバージョン3.1以降でのみ動作します。
キャプチャスレッドを終了させるNNS_SndCaptureDestroyThread関数を追加しました。
SMFフォーマット1をコンバートしたとき、トラック最後の部分に挿入されるべきwaitコマンドが欠けることがある問題がありましたが、修正されました。
空白文字を含んだパスでコンバートを実行すると、コンバートが正しく処理されない不具合がありましたが、修正されました。
サウンドアーカイブ定義ファイル(*.sarc)のグループ定義で、グループ番号を直接指定して、グループ番号の欠番を作ると、コンバート時に出力されるサウンドマップファイル(*.smap)のレイアウトが崩れてしまう問題がありましたが、修正されました。
従来は、NNS_SndArcInitOnMemory関数で初期化されたサウンドアーカイブに含まれるストリームデータを再生することはできませんでしたが、NNS_SndArcInit関数で初期化した時と同じ方法で、再生することができるようになりました。
サウンドアーカイバsndarcが出力する *.sdat, *.sadl, *.sbdlのファイル名を指定できるオプションを追加しました。 詳しくは、「サウンドツールマニュアル」をご覧下さい。
サウンドアーカイバsndarcで、引数に指定したサウンドアーカイブ定義ファイル(*.sarc)の前に処理を行う、前処理ファイルを指定できるオプションを追加しました。 詳しくは、「サウンドツールマニュアル」をご覧下さい。
ファイル読み込みが失敗する可能性がある状況で、サウンドアーカイブの初期化に成功したかどうかを判断できるように、NNS_SndArcInitWithResult関数を追加しました。この関数をNNS_SndArcInit関数の代わりに呼びだすことで、サウンドアーカイブの初期化に成功したかどうかを知ることができます。 詳しくは、関数リファレンスをご覧下さい。
キャプチャーが実行中かどうかを取得する関数NNS_SndCaptureIsActive及び、実行中のキャプチャーの種類を取得する関数NNS_SndCaptureGetCaptureTypeを追加しました。 詳しくは、関数リファレンスをご覧下さい。
NNS_SndUpdateDriverInfoを1フレームに1回の間隔で呼びだしていても、2回に1回失敗する問題がありましたが、修正されました。
サウンドアーカイバsndarc及び、バンクコンバータbankconvにおいて、@PATHを使わずに指定したファイルパスを、間違ったディレクトリからの相対パスとして解釈することがあり、不適切なコンバートエラーが発生するなどの症状を引き起こしていましたが、修正されました。
バンク定義ファイルで、ノートオフを無視して波形データ終端まで再生するインストを定義できるようになりました。 エンベロープのリリース設定箇所に、リリース値の代わりに、"DISABLE"と書くと、リリースが無効化され、ノートオフが行われた後もそのままの音量で、波形データ終端まで発音されます。 詳しくは、「バンクデータマニュアル」をご覧下さい。
バンク定義ファイルで、オリジナルキーをキー表記ではなく、数値でも指定できるようにしました。 詳しくは、「バンクデータマニュアル」をご覧下さい。
サウンドドライバ(SND)のソースコード及び関数リファレンスが、NITRO-SDKに収録されたことに伴い、NITRO-Systemのパッケージから、サウンドドライバ(SND)の関数リファレンスを削除しました。
ストリームプリペア処理を行うスレッドを起動する関数NNS_SndArcStrmCreatePrepareThreadを追加しました。 詳しくはリファレンスマニュアルをご覧下さい。
シーケンススタート直後にボリュームを変更していたり、立て続けにシーケンスを再生している場合に、プチノイズが発生することがある問題がありましたが、修正されました。 この問題は、一連のサウンド関数呼び出しが、別のサウンドフレームにまたがって処理される場合があり、中途半端な状態のサウンドが一瞬だけ再生されるために発生したものでした。このため、シーケンススタート時には、一連のサウンド関数呼び出しが完了するまで、実際のシーケンススタート処理を待たせるようにしました。
SoundPlayerを使ったリアルタイムMIDI再生において、ポルタメントを使って発音した場合、音程変化の開始位置が正しくなかった問題がありましたが、修正されました。
バンクコンバータbankconvにおいて、ドライブレターの大文字、小文字が違うだけの場合に、誤って別ファイルと認識していた問題がありましたが、修正されました。
波形データの個別ロード機能が、プレイヤーヒープへのロード時にも働くように修正されました。
シーケンスアーカイブの再生時に、バンクデータ及び波形データをプレイヤーヒープへロードできるように修正されました。 ただし、シーケンスアーカイブ自身は、プレイヤーヒープへロードすることはできません。あらかじめ、サウンドヒープへロードしておく必要があることに注意してください。
サウンドマップファイル(*.smap)ファイルのフォーマットを一部変更し、実際にデータをロードしたときに消費されるヒープサイズなども出力するようになりました。 詳しくは、「サウンドアーカイブマニュアル」をご覧下さい。
サウンドアーカイブ定義ファイル、バンク定義ファイル及びテキストシーケンスファイルにおいて、パラメータの数値表記に、2進数表記とビット表記を使えるように拡張しました。
2進数表記では、0b001001のように先頭に"0b"を付けます。
ビット表記は、ビットフラグのように、あるビットが0か1かが意味を持つ数値を記述するのに有効で、{ 1,3,6-8 }のように記述します。これで、下位1,3ビットおよび6から8ビットが1である数値、すなわち0b111001010を表します。最下位ビットが、0ビットとなることに注意してください。
詳しくは、「サウンドアーカイブマニュアル」「バンクデータマニュアル」「シーケンスデータマニュアル」をご覧下さい。(それぞれの内容は同一です。)
バンク定義ファイルで、NULLタイプのインストが定義できるようになりました。 NULLタイプのインストは、発音しないタイプのインストです。例えば、キースプリットと組み合わせて、あるスプリットのみ発音しないようなインストを作成することができます。 詳しくは、「バンクデータマニュアル」をご覧下さい。
プレイヤー毎にボリューム値を設定できる関数NNS_SndPlayerSetPlayerVolumeを追加しました。 詳しくは、リファレンスマニュアルをご覧下さい。
トラックパンレンジを設定する関数NNS_SndPlayerSetTrackPanRangeを追加しました。 トラックパンレンジとは、シーケンスデータ中で設定されたトラックパンの変化幅を指定するパラメータです。トラックパンレンジを変更することで、シーケンスデータ中で設定されたトラックパンの変化幅を小さくすることができます。
ストリームデータ全体の時間長を取得できる関数NNS_SndArcStrmGetTimeLengthを追加しました。 詳しくは、リファレンスマニュアルをご覧下さい。
サウンドドライバの情報を取得するための関数を追加しました。追加した関数は以下の通りです、
また、これらの関数を使って、サウンドドライバの情報を画面上に表示するdriverInfoデモを追加しました。
SND_FlushCommand関数の引数フラグに、SND_COMMAND_IMMEDIATEを追加で指定することができるようになりました。SND_COMMAND_IMMEDIATEを指定すると、発行したコマンドが、次のサウンドフレームを待たずに処理されるようになります。
SND_ReadInstData関数などで使用するSNDInstData構造体のtypeメンバが取りうる値に、SND_INST_NULLが追加されました。なお、SND_INST_NULLが設定されているインストデータは、発音されません。
シーケンスデータ中で、ポルタメントコマンドporta、porta_on、porta_offを実行すると、該当トラックで発音中のチャンネルが全てリリースされてしまうバグがありましたが、修正されました。 このバグに伴って、タイモード中にポルタメントコマンドを実行すると、正常に発音されない症状なども発生していましたが、これも修正されました。
SoundPlayerの手動ロードモードにおいて、データロードのメニュー項目へカーソルを移動できないために、データのロードが行えないバグがありましたが、修正されました。
SMFファイルをコンバートしてできる*.smftファイルで、各トラックの最後に不要なwaitコマンドが入ることがあるバグがありましたが、修正されました。
SMFファイル中に、同じタイミングで拍子イベントが複数存在する場合、不正なwait時間が出力されることがあるバグがありましたが、修正されました。
バンク定義ファイル中で、インストラベルとインデックス番号を両方指定していると、間違ってエラーが発生してしまうバグがありましたが、エラーとならないように修正されました。
波形アーカイブ中の波形データを個別にロードできる機能を追加しました。 複数のバンクで共通の波形データを使っている場合に、波形データのグループ管理の機能を使わなくても、簡単に消費メモリを効率化できます。 詳しくは、「サウンドアーカイブマニュアル」をご覧下さい。
シーケンスが使用できるチャンネルを、プレイヤー毎に制限できる機能を追加しました。 サウンドアーカイブ定義ファイル中の@PLAYERセクションにて、確保できるチャンネルのビットフラグを指定できるようになりました。(省略可能) 詳しくは、「サウンドアーカイブマニュアル」をご覧下さい。
@PATHおよび#includeにおいて、"//server-1/path/dir"のようなUNC形式のパス表記を使えるように修正しました。
テキストデータファイルにおいて、#include"ファイル名"と同様の機能をもった#include<ファイル名>形式の構文を追加しました。#include<ファイル名>形式の構文を使うと、現在のファイルからの相対パスではなく、サウンドアーカイブ定義ファイル(*.sarc)からの相対パスとなります。 詳しくは、「サウンドツールマニュアル」をご覧下さい。
シーケンス変数の値をデバッグ出力するためのシーケンスコマンドprintvarを追加しました。 NITRO-Playerもしくは、SoundPlayerでシーケンスを再生したとき、シーケンス変数の値をMCSサーバもしくは、IS-NITRO-DEBUGGERの出力ウィンドウに表示することができます。 詳しくは、「シーケンスデータマニュアル」をご覧下さい。
cn4形式のキー表記において、大文字小文字関係なく記述できるように変更しました。例えば、"Cn4"や"CN4"の様な記述ができるようになっています。
SoundPlayerで上画面に表示していたチャンネルメーターを下画面に表示するように変更し、より詳しい情報を表示するようにしました。
出力エフェクトの後処理として呼びだされるコールバック関数を登録するNNS_SndCaptureSetPostOutputEffectCallbackを追加しました。
シーケンスが使用できるチャンネルを制限できる機能を追加しました。 プレイヤー毎に設定する場合は、NNS_SndPlayerSetAllocatableChannel関数を使います。 シーケンス再生毎に設定する場合は、NNS_SndPlayerSetTrackAllocatableChannel関数を使います。この関数では、トラック単位の指定もできます。 詳しくは、「サウンドシステムマニュアル」及び「関数リファレンス」をご覧下さい。
低レベルストリームライブラリNNS_SndStrmを使って、マイク入力をリアルタイムに再生するmicThroughデモを追加しました。
1小節に大量のMIDIイベントが存在した場合、異常なwaitコマンドが出力されることがある問題がありましたが、修正しました。
NNS_SndArcStrmAllocChannel関数でチャンネルを確保後、NNS_SndArcStrmStopAll関数または、NNS_SndStopSoundAll関数を呼びだすと、確保済みチャンネルが解放されてしまう問題がありましたが、修正されました。
モノラルストリームデータをステレオプレイヤーで再生したとき、2チャンネル使って、より大きな音量で再生できるようにするオプション機能を追加しました。 サウンドアーカイブ定義ファイルのストリームデータ登録時に、オプションを指定すると、上記の機能が使えます。詳しくは、「サウンドアーカイブマニュアル」をご覧下さい。
NNS_SndArcStrmStartEx2関数及び、NNS_SndArcStrmPrepareEx2を追加しました。これらの関数では、従来のストリーム再生関数の機能に加えて、2つのコールバック関数を登録できるようになっています。 登録できるコールバック関数のうちの1つでは、複数のストリームデータをリアルタイムにつなげて再生することができます。このデモが、$NitroSystem/build/demos/snd/stream-2にあります。 もう一つのコールバック関数では、特定のストリーム再生に対して、エフェクトをかけたりすることができます。このデモが、$NitroSystem/build/demos/snd/stream-3にあります。 詳しくは、関数リファレンスをご覧下さい。
サウンドドライバ(SND)関数を全て、スレッドセーフにしました。
再生中のストリームプレイヤーに対して、NNS_SndArcStrmAllocChannel関数を呼びだすと、関数が失敗するように変更しました。
「サウンドシステムマニュアル」に出力エフェクトに関する注意書きを追加しました。
シーケンスデータで、ノートコマンド、tieon、ノートコマンドの順でコマンドが記述されていると、2つ目のノートが発音されないバグがありました。このバグは修正されました。
サウンドドライバ(SND)の関数を直接使う場合、NITRO-Systemライブラリと衝突しないように、リソースを管理する関数を追加しました。追加した関数は、以下の通りです。
関数について詳しくは、リファレンスマニュアルをご覧ください。
ループ無しストリームデータを再生時、最後の数百サンプルが再生されずに停止していましたが、最後のサンプルまで再生されるように修正しました。
ストリーム再生中に、NNS_SndArcSetCurrent関数でカレントサウンドアーカイブを切り替えると、ストリームが正しく再生されないバグがありましたが、修正しました。
NNS_SndArcStrmSetChannelVolume関数でのボリューム設定が正しく反映されないバグがありましたが、修正しました。
シーケンスデータで、cn4_r_ifの様に、ノートコマンドに対して、ランダム及び条件指定をつけると、コンバート時にエラーとなってしまうバグがありましたが、修正しました。
IS-NITRO-UIC MIDIの代わりに、IS-AGB-MIDIを使って、リアルタイムMIDI再生ができるようになりました。 リアルタイムMIDI再生について詳しくは、「サウンドデザイナーガイド」をご覧ください。
NNS_SndCaptureStartOutputEffect関数で音声出力全体に対して、サラウンドモード処理、ヘッドフォンモード処理、モノラルモード処理をかけられるようになりました。 サラウンドモードは、DSスピーカーから出力させたときに、スピーカー位置より広がって音を感じられるようにするモードです。ヘッドフォンモードは、ヘッドフォン使用時の耳の負担を軽減するモードです。 $NitroSystem/build/demos/snd/outputEffectにサンプルデモを追加しています。 関数について詳しくは、リファレンスマニュアルをご覧ください。
スリープの前後で呼びだす必要があった関数NNS_SndBeginSleep,NNS_SndEndSleep及びNNS_SndStrmBeginSleep,NNS_SndStrmEndSleepを呼びだす必要が無くなりました。これらの処理は、ライブラリ内で自動的に行われます。
ストリームプレイヤー番号をプログラムから指定できる関数NNS_SndArcStrmStartEx及び、NNS_SndArcStrmPrepareExを追加しました。
チャンネル毎のパン設定を無視して、全て中央の定位で発音するようにする関数NNS_SndSetMonoFlagを追加しました。また、この機能の実装のために、サウンドドライバに、SND_SetMasterPan関数及び、SND_ResetMasterPan関数を追加しました。
サウンドアーカイブ定義ファイルにて、@PLAYERセクションを@SEQセクションの前で定義した場合に限り、@PLAYERセクションで定義したプレイヤーラベルを、@SEQセクションで指定するプレイヤー番号の代わりに使用できるようになりました。 また、@STRM_PLAYERセクションで定義したストリームプレイヤーのラベルも、同じように@STRMセクションで使用できます。 シーケンスアーカイブの@SEQ_TABLEセクションにて、プレイヤーラベルを使用したい場合は、バンクラベルを使用する方法と同じように、サウンドアーカイブラベルファイル(*.sbdl)を#includeで取り込むことで、使用できるようになります。 $NitroSystem/tools/nitro/SoundPlayer/dataサンプルのsound_data.sarc及びmus/se.musでも、これらの仕組みを使うように修正しましたので、参考にしてください。
「サウンドプログラマーガイド」に、スリープモード移行時の注意書きを追加しました。
「サウンドプログラマーガイド」に、ストリーム再生を途切れさせないための説明を追加しました。
「オーバービュー」に出力エフェクトに関する紹介を追加しました。
以下の関数を使ってシーケンスをフェードアウトさせた時に、無限ループに陥ってしまうことがあるバグがありましたが、修正しました。
サウンドアーカイブ定義ファイル及び、バンク定義ファイル中の@PATHコマンドの解釈に間違いがありました。 #includeを使って別ディレクトリのファイルをインクルードしたとき、インクルード先のファイルで@PATHコマンドを使うと、元のディレクトリからの相対パスとして解釈されていました。これを、インクルード先のファイルのあるディレクトリからの相対パスとして解釈するように修正しました。 この修正により、以前コンバートに成功していたサウンドデータが、コンバート時にエラーとなる可能性があります。その場合は、@PATHの指定を、そのファイルがあるディレクトリからの相対パスとなるように修正してください。
シーケンスフェードアウト時、リリース中のチャンネルの音量が減衰していなかったバグがありましたが、修正しました。
バンク定義ファイルなどでファイルを登録するとき、大文字小文字が違うだけのファイル名を複数指定すると、それぞれ別のデータとして登録されていましたが、1つのデータにまとめるように修正しました。
ループスタート位置が後ろすぎて、ハードウェア的にループ再生が不可能な状態の時、コンバート時にエラーを出力するように修正しました。 また、限界値に関する情報を、「サウンドツールマニュアル」に記載しました。
シーケンスコマンドloop_startのループ回数に0を指定できるようにしました。0を指定すると、無限ループになります。
MIDIコントロールチェンジ89と90を使って、トラック単位のループを組めるようになりました。 詳しくは、「シーケンスデータマニュアル」を参照してください。
SMFでの全トラックループ指定は、マーカー"["と"]"でしたが、この代わりに、マーカー"loop_start"と"loop_end"も使えるようにしました。(機能的には全く同じです。)
*.sbdlファイルにバンクラベルのみ定義されていましたが、その他のサウンドアーカイブ定義ファイル(*.sarc)で定義さているラベルも出力されるようにしました。 またそれに伴い、*.sbdlファイルの呼称を、「バンクリストファイル」から「サウンドアーカイブラベルファイル」に変更しました。
*.sadlファイルの呼称が、「サウンドラベルリスト」「サウンドラベルリストファイル」「サウンドラベルファイル」の3種類使われていましたが、「サウンドラベルファイル」に統一しました。
キャプチャースレッドを起動する関数NNS_SndCaptureCreateThreadを追加しました。キャプチャースレッドを起動しておくと、エフェクトコールバック関数などがIRQハンドラではなく、キャプチャースレッドから呼びだされるようになります。
音声出力をサンプリングできる関数NNS_SndCaptureStartSamplingを追加しました。サンプリングしたデータを、コールバック関数を通して取得できるようになります。
シーケンスアーカイブ中のシーケンスの個数を取得する関数NNS_SndArcGetSeqArcSeqCountを追加しました。
NNS_SndPlayerMoveVolume関数の変化フレーム数に0を入れると、ボリュームが0になったり、変化しなかったりするバグがありましたが、修正しました。
極めて稀なタイミングで、再生したシーケンスが制御不能になってしまうバグがありましたが、修正しました。
シーケンスが使用するバンクの指定で、無効なバンクを指定していた場合、再生しようとすると、"Too Large Data"というエラーメッセージが表示されていましたが、"Invalid Bank No"と表示されるように修正しました。
ミュートしていない状態でミュート解除の操作を行うと、発音中の音が止められてしまう問題がありましたが、何も処理をしないように修正しました。
サウンドアーカイバsndarcが出力するバンクリストファイル(*.sbdl)が、サウンドデータを修正していないときでも更新されていましたが、必要が無いときは更新しないように修正しました。
変数コマンドで使う変数番号に32を指定してもエラーになっていなかったのを、エラーになるように修正しました。
IS-NITRO-UIC MIDIを使って、リアルタイムMIDI再生ができるようになりました。MIDI信号を使ってリアルタイムに再生できるので、データをコンバートしなくても、シーケンスデータの確認が可能になります。 詳しくは、「サウンドデザイナーガイド」をご覧ください。
リアルタイムMIDI再生をするためには、「IS-NITRO-UIC MIDI」が必要です。
サウンドアーカイバsndarc実行時に、バンクリストファイル(*.sbdl)を出力するようになりました。 これは、サウンドアーカイブ定義ファイル(*.sarc)中で定義したバンクラベルを#defineを使って出力したものです。シーケンスアーカイブのテキストファイルで#includeを使って、このファイルを取り込むことにより、@SEQ_TABLEにおけるバンク指定をラベルで行えるようになります。 $NitroSystem/tools/nitro/SoundPlayer/dataサンプルのmus/se.musでも、この仕組みを使うように修正しましたので、参考にしてください。
SMFにマーカーとして、テキストコマンドを埋め込むと、コンバート時に埋め込んだテキストコマンドが、*.smftファイルに出力されるようになりました。SMFを使いながら、部分的にテキストコマンドを使用できます。 詳しくは、「シーケンスデータマニュアル」をご覧ください。
異なるシーケンスアーカイブで、同じラベル名が定義されていても、インデックス番号が同じなら、エラーにならないようにしました。
スリープモードに移行するPM_GoSleepMode関数の前後で、NNS_SndBeginSleep関数と、NNS_SndEndSleep関数を呼びだすことで、スリープモード復帰時に、前の状態に戻せるようになりました。
サウンドアーカイブ管理領域やストリームバッファが含まれるサウンドヒープの領域を安全に解放できるようになりました。再度使用できるようにするためには、NNS_SndArcSetup関数やNNS_SndArcStrmSetupPlayer関数など、各種セットアップ関数を呼ぶ必要があります。
一度サウンドアーカイブ管理領域を解放したサウンドアーカイブを再度使用できるようにする関数NNS_SndArcSetupを追加しました。
一度ストリームバッファを解放したストリームプレイヤーを再度使用できるようにする関数NNS_SndArcStrmSetupPlayerを追加しました。
サウンドヒープ中で、プレイヤーヒープが確保されている領域を解放すると、問題が生じるバグがありましたが、修正しました。
複数のトラックで、1つのMIDIチャンネルを使用しているとき、1つ目のトラックのデータしか出力されていなかったバグを修正しました。 また使用していないトラックのデータを出力してしまっていたバグも修正しました。
始めのノートコマンドより前に、ループ開始位置があった場合、ループ開始位置がノートコマンドの位置までずれてしまっていたバグを修正しました。
サウンドアーカイブ定義ファイル*.sarc中で、@WAVEARCのパスを@PATH "."としていると、バンクコンバータでエラーとなってしまうバグを修正しました。
サウンドアーカイブ定義ファイル、バンク定義ファイルなどのテキストデータファイル中で、#defineを使って同じシンボルを2回定義したとき、内容が全く同じであっても2重定義エラーになっていましたが、全く同じ場合は無視するように修正しました。
ストリーム再生が可能となりました。機能的なことについては、「サウンドシステムマニュアル」をご覧ください。
ストリームデータを登録するストリームデータセクションと、ストリームプレイヤーを登録するストリームプレイヤー情報セクションが追加されました。 詳しくは、「サウンドデザイナーガイド」及び「サウンドアーカイブマニュアル」をご覧ください。
SoundPlayerでストリームデータを再生できます。 詳しくは、「サウンドデザイナーガイド」をご覧ください。
ストリームデータを再生するためのサウンドアーカイブストリームライブラリが追加されました。NNS_SndArcStrmで始まる関数群です。 詳しくは、「サウンドプログラマーガイド」及び「リファレンスマニュアル」をご覧ください。
サウンドアーカイブストリームライブラリより低レベルのストリームライブラリが追加されました。NNS_SndStrmで始まる関数群です。 詳しくは「リファレンスマニュアル」をご覧ください。
全てのサウンドを停止する関数NNS_SndStopSoundAllを追加しました。スリープモードへの移行など、サウンド回路の電源を落とす前には、必ずこの関数で全てのサウンドを停止するようにしてください。
サウンドヒープを破棄する関数NNS_SndHeapDestroyを追加しました。
smfconvが出力する*.smftファイル中で使用しているラベル名の始めに、SMFファイルのファイル名をつけるようにしました。 例えば、sample.midファイルをコンバートしてできるsample.smftファイル中で、Track_0というラベルが出力されていたものが、SMF_sample_Track_0というラベル名で出力されるようになります。
サウンドアーカイブ定義ファイルで、シーケンスデータなどの登録番号を直接指定して、空き番号を作るように設定すると、サウンドアーカイバが、コンバート時に異常終了してしまうバグがありましたが、修正しました。
バンクファイルと波形リストファイルのディレクトリ階層が、ある特定の状態の時、パスの解釈を間違って、バンクコンバート時にエラーになってしまうバグがありましたが、修正しました。
同一ティックで複数のメタイベントが存在した場合、出力順序が不定になる問題がありました。SMFに格納されている順序のまま出力するように修正しました。
サウンドデータのバイナリフォーマットが変更になりましたので、サウンドデータをReMakeSound.batで再コンバートする必要があります。 また、バンクデータのサイズが以前に比べて若干大きくなります。メモリに余裕が無い場合には、データのロードに失敗する可能性があります。
実行ファイル名が、SoundPlayer..binからSoundPlayer.srlに変更になりました。
デフォルトでTEG用実行ファイルが作成されていたのを、TS用の実行ファイルが作成されるように変更されました。TEG用実行ファイルを作成するためには、環境変数NITRO_PLATFORMにTEGを設定する必要があります。
今までは、シーケンスが2個、シーケンスアーカイブが2個までしか同時に再生できませんでしたが、それぞれ、シーケンスを再生するか、シーケンスアーカイブを再生するかを選択できるようになりました。例えば、シーケンスを4個同時に再生できたりします。 シーケンスタイプの選択は、Lボタンを押しながら、十字キーの上下で行います。
関数名NNS_SndWaveOutで始まる波形再生ライブラリを追加しました。マイクのサンプリングデータなど、メモリ上の波形データを直接再生するためのライブラリです。 $NitroSystem/build/demos/snd/waveoutにデモプログラムがあります。
サウンドキャプチャを使ったエフェクト機能を追加しました。コールバック関数でエフェクト処理を行うことで、全ての音に対し、ローパスフィルタなどの効果をかけることができます。 $NitroSystem/build/demos/snd/effectにデモプログラムがあります。
NNS_SndCaptureStartReverb関数の引数formatの型を、SNDCaptureFormatからNNSSndCaptureFormatに変更しました。 詳しくは、リファレンスマニュアルを参照してください。
NNSSndArcBankInfo構造体のwaveArcNoメンバの型がu16からu16[4]に変更になりました。以前の値は、waveArcNo[0]に格納されています。
削除予定だった以下の関数を完全に削除しました。
1つのバンクデータに対し、複数(4個まで)の波形アーカイブを関連づけられるようになりました。詳しくは、「バンクデータマニュアル」または、「サウンドアーカイブマニュアル」をご覧ください。
サウンドアーカイバsndarcでオプション-bを指定すると、出力されるサウンドアーカイブに、シンボルデータが含められなくなります。
サウンドアーカイブ定義ファイル中の、シーケンス最大同時再生数の値に16を指定するとエラーになっていた問題を修正しました。
$NitroSystem/tools/nitro/SoundPlayer/dataディレクトリ内にあるMakeSound.bat及びReMakeSound.batをsound_data.sarcファイルがあるディレクトリにコピーしてください。そして、ReMakeSound.batをダブルクリックして実行します。 sound_data.oが生成されますので、それを以前と同じように、プログラムにリンクします。後は、前と同じように使えます。 ただし、今回からファイルシステムに対応しています。ファイルシステムを使ったサウンドデータ管理を使うことをおすすめします。
サウンドデータをプログラムとリンクする方式ではなく、ROMに格納してロードする方式を使えるようにしました。
sound_data.oをリンクする方式から、sound_data.sdatをROMに格納する方式に変更になりました。サウンドデザイナーは、sound_data.oの代わりに、sound_data.sdatをプログラマーに渡す必要があります。ただし、sound_data.sdatのフォーマットが変更されていますので、新しくコンバートし直したsound_data.sdatを使用してください。
プログラマーは、sound_data.sdatをROMに格納する必要があります。詳しくは、「サウンドプログラマーガイド」を参照してください。
サウンドデータのメモリ管理が必要になります。詳しくは、「サウンドシステムマニュアル」「サウンドデザイナーガイド」「サウンドプログラマーガイド」などを参照してください。
サウンドライブラリの初期化方法が従来と違います。詳しくは、「サウンドプログラマーガイド」を参照してください。
ARM7コンポーネントが、prototypeからferretを使用するように変更されました。詳しくは、「サウンドプログラマーガイド」を参照してください。
今まで、makeコマンドでコンバートを行っていましたが、MakeSound.batを使うように変更になりました。MakeSound.batは、エクスプローラーからのダブルクリックでも実行できます。 また、再コンバートは、make rebuildの代わりに、ReMakeSound.batになりました。
SoundPlayer画面上にシーケンスのラベル名が表示されるようになりました。Xボタンを押すことで、以前のようにパラメータを表示させることもできます。
データサイズの確認などが行える手動ロードモードを追加しました。詳しくは「サウンドプログラマーガイド」を参照してください。
1つのプレイヤーで複数のシーケンスデータを再生できるようになりました。各プレイヤー毎に、同時に再生できるシーケンスの数を設定します。(デフォルトは1)
@PLAYER 3 : 3 ; プレイヤー3は3個まで 4 : 2 ; プレイヤー4は2個まで
プレイヤー数が16個から32個に増えました。ただし、システム全体で同時に再生できるシーケンスは従来通り16個までです。
各プレイヤー毎に設定する、同時に再生できるシーケンスの数は、サウンドアーカイブで指定できます。 指定していない場合は1個となります。 また、NNS_SndPlayerSetPlayableSeqCount関数を使って、プログラム側で設定することもできます。
フェードアウト中は、プレイヤープライオリティが最低の0になるように変更されました。
エンベロープのリリースとディケイを、現状より速く減衰させることができるように微調整しました。リリース値が127の場合、急激な減衰によるノイズが発生する場合がありますので、ご注意ください。 以前の値と新しい値との対応関係は以下の通りです。
以前の値 | 新しい値との対応関係 51 〜 127 | それぞれ、49 〜 125に対応します。 47 〜 50 | それぞれ、1または2を引いた値に対応します。 0 〜 46 | 変更ありません。
サウンドアーカイブ作成時に、サウンドマップファイルが出力されるようになりました。サウンドマップファイルは、サウンドアーカイブ中のデータに関する情報を記載したテキストファイルで、サウンドデータサイズなどの確認のために参照します。 サウンドマップファイルは、サウンドアーカイブ定義ファイルの拡張子を*.smapに変えて、同じディレクトリに出力されます。
サウンドアーカイブで、シーケンスやバンクの番号は上から順番につけられていましたが、直接指定できるようにしました。また、シーケンスアーカイブのシーケンステーブルでも同様に、インデックス番号指定ができるようになりました。書式は次のようになります。
※ ラベルのみ指定(いままでのもの) SEQ_TITLE_BGM : SMF, "title.mid" , ... ※ ラベルと番号両方指定 SEQ_TITLE_BGM = 2 : SMF, "title.mid" , ... ※ 番号のみ指定 2 : SMF, "title.mid" , ...
さらに、バンク定義ファイルで各インストゥルメント毎に番号を振っていましたが、上記の書式でラベルを振ることもできるようになりました。ラベルを振ると、下記で説明するプログラムナンバリストファイルが使用できます。
バンク定義ファイルで、プログラムナンバにラベルを指定すると、プログラムナンバリストファイルが使えるようになります。 これは、プログラムナンバをラベルで置き換えることができるようになるファイルで、例えば次のような内容になっています。
#define PRG_PIANO 0 #define PRG_GUITAR 1 #define PRG_HARP 2
このファイルは、バンク定義ファイルの拡張子を、*.spdlに変えて、同じディレクトリに出力されます。このファイルを、テキストシーケンスアーカイブでインクルードすることにより、プログラムナンバの代わりにラベルが使えるようになります。
#include "../bnk/se.spdl"
test:
prg PRG_PIANO
cn4 64, 48
fin
MIDIコントロールチェンジ11(エクスプレッション)をvolume2コマンドに変換するようにしました。volume2コマンドは、volumeコマンドと全く同じ動作をしますが、独立に効果を発揮します。
MIDIコントロールチェンジ28でsweep_pitchコマンドを使えていましたが、新たにMIDIコントロールチェンジ29を、値を24倍して、sweep_pitchコマンドに変換するようにしました。これを使うことで、±2オクターブの範囲が指定可能となります。
シーケンスコマンドprg及びmod_delayの最大値を65535から32767に変更しました。
幾つかのシーケンスコマンドで、乱数指定できるようになりました。
pitchbend_r -12, 12 pan_r 64 - 32, 64 + 32 最小値と最大値を指定すると、その範囲でランダムな値がセットされます。 どのコマンドで、ランダムコマンドが使用できるかは、「シーケンスデータマニュアル」をご覧ください。
シーケンス中で変数を扱えるようになりました。変数を使うことで、ループする毎に音程が上がっていくようなシーケンスを、簡単に記述できるようになったりします。 詳しくは、「シーケンスデータマニュアル」をご覧ください。
変数を使って、あるシーケンスコマンドを、実行したり実行しなかったり、自由にコントロールできるようになります。 詳しくは、「シーケンスデータマニュアル」をご覧ください。
NNS_SndArcPlayerInit関数を削除します。対応する関数への置き換えについては、関数リファレンスを参照してください。 現状では残してありますが、次回リリース時に完全に削除します。
NNS_SndArcPlayerStartSeqEx関数及び、NNS_SndArcPlayerStartSeqAcrEx関数を追加しました。これにより、NNS_SndArcPlayerStartSeqWithPlayerNo関数及び、NNS_SndArcPlayerStartSeqArcWithPlayerNo関数が置き換え可能なため、後述の2つの関数を削除します。 現状では残してありますが、次回リリース時に完全に削除します。
以下の関数は、関数名が変更になりました。旧来の関数名も残してありますが、次回リリース時に完全に削除します。
削除する関数名 新しい関数名 NNS_SndHandleReleasePlayer NNS_SndHandleReleaseSeq NNS_SndPlayerStopSeqByNumber NNS_SndPlayerStopSeqByPlayerNo NNS_SndPlayerPauseSeqByNumber NNS_SndPlayerPauseSeqByPlayerNo NNS_SndPlayerCountPlayingSeqByNumber NNS_SndPlayerCountPlayingSeqByPlayerNo
NNS_SndPlayerReadVariable()やNNS_SndPlayerWriteVariable()などで、シーケンスデータがセットした変数を読みとったり、シーケンスデータの変数に書き込んだりすることができます。これによって、シーケンス再生中の状態を把握したり、再生中にシーケンス処理の流れを変更できたりするようになります。
NNS_SndPlayerGetTick()関数で、シーケンスが何ティック目を再生しているか取得できるようになりました。
その他、多くの関数が追加されています。詳しくは、関数リファレンスをご覧ください。
サウンドデータにおける、発音プライオリティの設定が正常に反映されていなかった問題がありましたが、修正しました。
panの引数の値が、-64〜63の範囲でアサートが行われていたのを、仕様通り-128〜127の範囲で行うように修正しました。
プログラムからシーケンスを停止させると、リリースを長く設定しているにもかかわらず、急速に減衰していた問題がありましたが、修正しました。