デグレファクトリー

未来の技術で高度なバグを埋め込むソフトウェア製作所

SNES SPC700 Player は、SPC 再生に特化したさまざまな機能を提供しています。 プレイヤー上の [設定] メニューから演奏に関係する設定を細かく行うことができ、SPC 再生・解析のための情報表示機能を備えています。

この資料では SNES SPC700 Player の設定項目と、サウンドインジケータについて、および README.TXT に記述されていない補足項目について説明しています。

音楽の出力に使用するサウンドデバイスを設定します。

  • デフォルトは [システム設定を使用] です。 この項目を選択した場合、オペレーティングシステムが自動的にサウンドデバイスを選択します。

  • 演奏中は設定できません。

  • 出力方法は waveOut API のみ対応しています。 そのため、約 20ms の遅延が発生する場合があります。 DirectSound, ASIO, WASAPI などの低遅延 API には対応していません。

スピーカの出力チャンネル数 (モノラル、ステレオ) を設定します。

1 チャンネル (モノラル)

モノラルで出力します。 左右同じ音が再生されます。

2 チャンネル (ステレオ)

ステレオで出力します。 左右異なる音が再生されます。

  • デフォルトは [2 チャンネル (ステレオ)] です。

  • 演奏中は設定できません。

波形データの強さを示す数値の精度を設定します。

(一部を抜粋)

16 ビット

実機と同じビットで出力します。

24 ビット

ハイレゾ音源の解像度で出力します。

32 ビット (float)

DSP の計算誤差を極力減らし、最高精度で出力します。

  • デフォルトは [16 ビット] です。 実機に最も近い音質にする場合は [16 ビット] を選択してください。

  • 演奏中は設定できません。

  • [24 ビット] 以上を選択する場合は、お使いのサウンドデバイス側の設定で、選択したビット以上を出力するようにしてください。

  • 音量が十分低いにもかかわらず音が歪んで聴こえる場合は、[32 ビット (float)] を選択することで改善されることがあります。

時間あたりの波形データのサンプル数を設定します。

(一部を抜粋)

32,000 Hz

実機と同じサンプリングレートで出力します。

44,100 Hz

CD と同じサンプリングレートで出力します。

48,000 Hz

DVD と同じサンプリングレートで出力します。

96,000 Hz

ハイレゾ音源の解像度で出力します。

  • デフォルトは [32,000 Hz] です。 実機に最も近い音質にする場合は [32,000 Hz] を選択してください。

  • 演奏中は設定できません。

  • [32,000 Hz] 以外のサンプリングレートを選択すると、SNESAPU 側でサンプリングレートの変換 (リサンプリング) を行います。 サンプリングレートコンバータの都合により、曲によっては再現性が極端に低下する場合があります。

  • [32,000 Hz] より高い周波数を選択する場合は、[拡張設定] - [実機エコー/FIR 処理] をオンに設定すると、実機再現性の低下を抑えることができます。 その代わり、音質が若干低下することがあります。 また、[44,100 Hz] [88,200 Hz] 選択時に、ノイズが入ることがあります。

  • [64,000 Hz] 以上を選択する場合は、お使いのサウンドデバイス側の設定で、選択したサンプリングレート以上を出力するようにしてください。

  • 一般的に [48,000 Hz] がメモリ使用量と音質のバランス、サウンド機器の親和性に優れ、視聴目的に適していますが、必ずどこかのサンプリングレートコンバータを通すため、環境によって再現性や音質が変わります。 お使いの環境とお好みに応じて、サンプリングレートを選択してください。

波形データを補間する処理の方法を設定します。

無効

補間処理を行いません。 音質が悪化します。

線形補間

サンプル間を直線で結ぶ補間方法です (2points-liner)。

最も軽い補間処理ですが、実機と比較して音質がやや悪くなります。

三次スプライン補間

三次スプラインテーブルを使用した補間方法です (4points-cubic)。

ガウス分布補間特有の音のこもりを軽減できますが、若干音質が悪くなります。

実機ガウス分布補間

実機の DSP と同じガウス分布テーブルを使用した補間方法です (4points-gauss)。

シンク関数補間

シンク関数の計算式で求めたテーブルを使用した補間方法です (8points-sinc)。

最も重い補間処理ですが、音のこもりもなく高音質です。

ガウス関数補間

ガウス関数の計算式で求めたテーブルを使用した補間方法です (4points-gauss)。

実機より若干精度が高いガウス分布補間で、古い SNESAPU で使用されていた補間方法です。

  • デフォルトは [実機ガウス分布補間] です。 実機に最も近い音質にする場合は [実機ガウス分布補間] を選択してください。

標準の音程を設定します。

標準

実機と同じ音程で出力します。

過去の Sound Blaster 互換

古い Sound Blaster で特殊なサンプリングレートを使用した場合の補正用です。

過去の ZSNES, Snes9x 互換

古い ZSNES や Snes9x で使われていた音程です。 標準より高めの音程になります。

音程キー

音程を半音ずつずらします (-6~+6 まで対応しています)。

演奏速度比と同期

演奏速度の倍率をピッチに適用します。 演奏速度を速くすると音程も上がります。

  • デフォルトは [標準]、[0] (キー) が選択状態、[演奏速度比と同期] がオフです。

左右の出力の拡散度を設定します。

(一部を抜粋)

0 % (混合)

左右出力のバランスを中央 (モノラル風) に設定します。

50 % (標準)

左右出力のバランスを通常に設定します。

100 % (拡散)

左右出力のバランスを端に設定します。

  • デフォルトは [50 % (標準)] です。

  • ヘッドフォンで視聴する際は、[40 %] を選択すると、左右のパン振りが極端な曲でも自然なバランスで視聴できます。

  • メインボリューム・エコーボリュームには効果がありません。

左右のフィードバック (リバーブ) バランスの反転度を設定します。

(一部を抜粋)

0 % (標準)

フィードバック (リバーブ) の左右出力を反転しません。

50 % (混合)

フィードバック (リバーブ) の左右出力のバランスを中央に設定します。

100 % (反転)

フィードバック (リバーブ) の左右出力を反対に設定します。

  • デフォルトは [0 % (標準)] です。

  • ヘッドフォンで視聴する際は、[75 %] を選択すると、強すぎるフィードバックが分散され、極端なエコーバランスが調整されます。

演奏速度を設定します。 数値が低いほど遅く、高いほど速くなります。

  • デフォルトは [100 % (標準)] です。

  • 初期設定の場合、音程 (キー) は演奏速度に同期しません。 音程を演奏速度に同期させるには、[ピッチ] - [演奏速度比と同期] をオンにしてください。

  • 初期設定の場合、エンベロープの増減速度は演奏速度に同期しません。 音の増減速度を演奏速度に同期させるには、[拡張設定] - [エンベロープ速度を同期] をオンにしてください。

音量を設定します。 数値が低いほど小さく、高いほど大きくなります。

  • デフォルトは [100 % (標準)] です。

  • 音量の上げすぎにご注意ください。 音量が一定以上になると、安全のために自動的に無音状態になります ([RESTART] ボタンで復旧します)。 この安全機能を切るためには、SPCPLAY.INI ファイルを編集してください。

同時発音 8 チャンネルのうち、各ミュート (無音設定) のオン、オフを個別に設定します。

すべてオン

全チャンネルのミュート (無音) をオンに設定します。

すべてオフ

全チャンネルのミュート (無音) をオフに設定します。 通常の状態です。

すべて反転

全チャンネルのミュート (無音) のオン・オフを反対に設定します。

  • デフォルトは [チャンネル 1]~[チャンネル 8] すべてがオフ (発音あり) です。

同時発音 8 チャンネルのうち、各強制ノイズ設定のオン、オフを個別に設定します。

すべてオン

全チャンネルの強制ノイズをオンに設定します。

すべてオフ

全チャンネルの強制ノイズをオフに設定します。 通常の状態です。

すべて反転

全チャンネルの強制ノイズのオン・オフを反対に設定します。

  • デフォルトは [チャンネル 1]~[チャンネル 8] すべてがオフ (通常発音) です。

その他の拡張機能を設定します。

実機ローパスフィルタ

実機と同じカットオフ周波数のローパスフィルタをかけます。

実機エコー/FIR 処理

エコーと FIR フィルタの動作を実機に近づけます (詳細は後述)。

BASS BOOST

低音域を強調して重低音で出力します。 強調する強度は固定です。

過去の ADPCM デコーダ

古い Snes9x で使われていた波形復元 (BRR 展開) ロジックを使用します。

逆位相サラウンド強制

左の出力だけ逆位相に設定してサラウンド効果をオンにします。

左右反転

左右の出力を反対に設定します。

エンベロープ速度を同期

エンベロープの増加・減衰速度を演奏速度比と同期します。

サラウンド無効

元々曲自体に設定されている逆位相サラウンド設定を無視します。

メイン無効

※ v2.20.4 以降: メインボリュームをオフに設定し、エコーのみを出力します。

エコー無効

元々曲自体に設定されているエコー設定を無視します。

FIR フィルタ無効

エコーで使用される FIR フィルタ処理を無視します。

ピッチモジュレーション無効

元々曲自体に設定されているピッチモジュレーション設定を無視します。

ピッチベンド無効

発音中の音程変更を無視し、発音開始時の音程で固定します。

ピッチリミット無効

※ v2.20.0 以降: ピッチの最大幅を 14bit から 16bit へ拡張します。

エンベロープ無効

元々曲自体に設定されているエンベロープ設定を無視して、75 %出力に固定します。

ノイズ発音指定無効

元々曲自体に設定されているノイズ設定を無視します。

  • デフォルトは [実機ローパスフィルタ] と [実機エコー/FIR 処理] がオン、それ以外がオフです。

  • [逆位相サラウンド強制] と [サラウンド無効] を両方オンにすると、元々曲自体に設定されている逆位相サラウンド設定が無効になった上で SNESAPU 独自の逆位相サラウンドが有効になります。

  • [FIR フィルタ無効] をオンにすると、フィードバック (リバーブ) 強度が 100 %の曲では、ハウリング状態になる場合がありますのでご注意ください。

  • [ピッチリミット無効] をオンにしても、グラフィックインジケータでは 14bit を基準としてゲージが表示されます。

[実機エコー/FIR 処理] 設定のオン/オフによる動作の違いは、下記のとおりです。

動作

オン 設定時

オフ 設定時

実機再現性

〇 (再現性重視)

音質

◎ (音質重視)

エコー作業用メモリ

64KB RAM にエコー処理途中の結果を書き込みます※1

書き込みません

FIR フィルタ

16bit エミュレーション※2

17bit エミュレーション※2 (高音質)

オーバーフロー処理

オーバードライブ効果あり

歪み防止処理あり

サンプリングレート変換

※ v2.20.0 以降: 32kHz で生成後にアップサンプリング

波形復元時からアップサンプリング (高音質)

※1 エコーにより 64KB RAM を多く消費する曲では正常に演奏できなくなる場合があります。 この場合、実機でも正常動作しません。

※2 32bit-float の演算で低ビットをエミュレーションします。 オーバーフローしない限り、32bit-float の精度が維持されます。

設定されている演奏時間を有効にしたり、演奏時間経過後の処理を設定します。

無効/エンドレス

演奏時間設定を使用せず、無限ループで演奏します。

ID666 時間設定を優先

ID666 で設定されている演奏時間を使用します。

常に既定時間を使用

ID666 で設定されている演奏時間を無視して常にデフォルト値を使用します。

開始位置を設定

区間リピートの開始位置に現在位置を設定します。

終了位置を設定

区間リピートの終了位置に現在位置を設定します。

位置をリセット

区間リピートの位置情報をリセットします。

  • デフォルトは [ID666 時間設定を優先] です。

  • 区間リピートの開始・終了位置をセットしていない場合、[位置をリセット] は選択できません。

  • [常に既定時間を使用] が選択されている場合のみ、無音検出機能が働きます。 一定時間無音状態が続くと、[演奏順序] の設定に従って動作します。

設定されている演奏時間が経過した後の処理を設定します。

演奏停止

演奏を停止します。

次へ

プレイリストに登録されている次の曲を演奏します。

前へ

プレイリストに登録されている前の曲を演奏します。

ランダム

プレイリストに登録されている曲からランダム (重複あり) で演奏します。

シャッフル

プレイリストに登録されている曲からランダム (重複なし) で演奏します。

リピート

もう一度同じ曲を演奏します。

  • デフォルトは [次へ] です。

  • [ランダム] は単純にプレイリストの中から無作為にファイルを選びます。 同じ曲が再度演奏されることがあります。

  • [シャッフル] もプレイリストの中から無作為にファイルを選びますが、一度演奏された曲はすべての曲を演奏し終えるまで再演奏されません。 2 ループ目以降は 1 ループ目と同じ順序になります。

[REW] [FF] ボタンによる早送り・早戻しの 1 回あたりに移動する時間を設定します。

高速シーク

※ v2.20.0 以降: DSP 処理を省略してシーク処理を高速化します。

演奏速度比と同期

※ v2.20.0 以降: 演奏速度の倍率をシーク時間に適用します。 演奏速度を速くするとシーク時間も長くなります。

  • デフォルトは [5 秒] が選択状態、[高速シーク] と [演奏速度比と同期] がオフです。

  • [高速シーク] をオンにすると、DSP の状態を参照する一部の SPC において、シークが正常に動作しない場合があります。 また、演奏を再開したときの発音状態が、シークしていない状態と異なる場合があります。

グラフィックインジケータ、各種情報表示を設定します。

グラフィックインジケータ

各チャンネルの設定・出力状態をグラフィカルに表示します。

DSP/BPM 情報

メインボリュームなどのミキシング関連の設定情報を表示します。

チャンネル情報 1

各チャンネルのボリュームなど基本情報を表示します。

チャンネル情報 2

各チャンネルのエンベロープ遷移情報 (ADSR/Gain 設定情報) を表示します。

チャンネル情報 3

各チャンネルの DSP フラグ設定情報と BRR フィルタ設定情報を表示します。

チャンネル情報 4

各チャンネルの波形アドレス情報を表示します。

SPC 情報 1

SPC ファイルの ID666 情報のうち、曲の基本情報を表示します。

SPC 情報 2

SPC ファイルの ID666 情報のうち、タグのバージョン情報を表示します。

Script700 デバッグ

Script700 で使われるメモリの状態を表示します。

数値フォント

※ v2.21.0 以降: 数値 (0~9, A~F) のフォントを選択します。

  • アナログ: アナログ風

  • デジタル/7セグメント: デジタル/7セグメント風

無音チャンネル非表示

一定時間出力がなかったチャンネルの情報を非表示にします。

  • デフォルトは [グラフィックインジケータ] が選択状態、[無音チャンネル非表示] がオンです。

  • [無音チャンネル非表示] で非表示の対象になるのは [グラフィックインジケータ] のみです。

SNES SPC700 Player の処理に割り当てる CPU の優先度を設定します。

リアルタイム

OS レベルと同じ優先度を割り当てます。

一般ソフトウェアの範囲で最も優先度を高く割り当てます。

標準以上

一般ソフトウェアの通常設定より少しだけ優先度を高く割り当てます。

標準

一般ソフトウェアの通常設定と同じ優先度を割り当てます。

標準以下

一般ソフトウェアの通常設定より少しだけ優先度を低く割り当てます。

一般ソフトウェアの範囲で最も優先度を低く割り当てます。

  • デフォルトは [標準] です。

  • [標準以下] [低] を選択した場合、急激な CPU 負荷がかかったときに他のソフトウェアの処理を優先します。 そのため、音飛びが発生することがあります。

  • [高] [リアルタイム] を選択した場合、CPU パワーが少ないとシステムの動作が不安定になる場合があります。 その代わり、急激な CPU 負荷がかかっても音飛びを防止できます。

※ v2.20.3 以降: その他の設定を行います。

常に手前に表示

どのウィンドウよりも、手前に表示します。

演奏中に画面オフを抑制

※ v2.20.3 以降: 演奏中はスリープに移行せず、画面を点灯しつづけます。

  • デフォルトはいずれもオフです。

各チャンネルの設定・出力状態をグラフィカルに表示します。

スクリーンショット

MIXER

(1) 緑

メインボリューム (左、右)

(2) オレンジ

エコーボリューム (左、右)

(3) 水色

ディレイ (遅延時間)

(4) 赤

フィードバック (リバーブ) 強度

(5) 青

出力レベル (左、右)

各チャンネル

(6) 緑

チャンネルボリューム (左、右)

(7) オレンジ

ピッチ (音程)

(8) 赤

エンベロープ (音の強さ)

(9) 青

出力レベル (左、右)

チャンネルエフェクト

E

エコーオン

P

ピッチモジュレーションオン

N

ノイズ出力オン

メインボリュームなどのミキシング関連の設定情報を表示します。

MainLv

メインボリューム (左、右) です。 80~FF は逆位相です。

※ v2.20.3 以前: 表記は「MasterLv」です。

EchoLv

エコーボリューム (左、右) です。 80~FF は逆位相です。

Delay

エコーディレイ (遅延時間) です。

Feedback

エコーフィードバック (リバーブ) 強度です。 80~FF は逆位相です。

SrcAddr

64KB RAM 内に波形データの場所 (ポインタ) が保存されているアドレス領域です。

EchoAddr

エコー計算時に 64KB RAM 内のメモリを書き換えるアドレス領域です。

DSPFlags

R : DSP がリセット設定状態です。

M : DSP がミュート設定 (無音出力) 状態です。

E : エコー処理が無効化されている状態です。

NoiseClk

ノイズ発生器のクロック周波数です。

FIR

フィードバック (リバーブ) にかける FIR フィルタの係数 (8 次) です。 80~FF は逆位相です。

BPM

※ v2.20.1 以降: 曲の BPM (推測値) です。 60~200 の間で推測します。

BPMWork

※ v2.20.2 以降: 曲の BPM を推測する材料となる各種の値 (デバッグ用) です。

KOn : 発音回数、R : 主解析範囲、E : 解析式コード

  • SrcAddr: 波形データの開始アドレス (2 バイト) + ループポイントアドレス (2 バイト) の組み合わせが最大 256 個並びます。 使用されていない波形番号のデータは参照されないため、アドレス領域内に他のデータが格納されている場合があります。

  • EchoAddr: [拡張設定] - [実機エコー/FIR 処理] をオンにすると、この領域がエコーバッファとして使用され、エコー使用時に書き換わります。 Delay × 2,048 バイト分 (ただし Delay が 0 の場合は 4 バイト分) のメモリ領域を消費します。 通常、終了アドレスが FFFF を超えることはありません。

  • BPM: 正確な BPM が表示されないことがあります (下記参照)。 あくまでも参考値としてください。

  • F12 または Pause/Break キーで一部の値を 10 進数で表示し、BPMWork を表示します。 現時点では、逆位相はマイナス表記をしません。

  • 演奏中の発音状態・タイミングなどを考慮してリアルタイムで推測しますので、BPM が表示されるまで 2~6 秒程度かかります。 発音数が極端に少ない場合は、さらに時間がかかることがあります。 また、途中でテンポが変わった場合も、反映されるまで同程度の遅延が発生します。

  • 曲の冒頭・シーク直後から 15 秒程度は BPM の表示値が頻繁に変わることがありますが、学習により徐々に安定します。 ただし、状況により学習がリセットされるため、一時的に BPM が表示されなくなったり、数値が多少増減したりすることがあります。 特に 60~70、180~200 の間は表示値の揺れが大きくなります。

  • 曲によって正確な BPM が表示されないことがあります。 特に三拍子・三連符を多用した曲、発音数が少ない曲、音色とチャンネルが一致しない曲、元々テンポが常に大きく揺れる曲は顕著にズレが発生します。

  • 主旋律がゆっくりな曲でも、リズム (打楽器など) の発音回数が多い場合、実際の BPM より 2 倍で表示されることがあります。 実際の BPM が 190 以上の場合、1/2 倍で表示されることがあります。

各チャンネルのボリュームなど基本情報を表示します。

Src

波形番号です。

VL, VR

チャンネルボリューム (左、右) です。 80~FF は逆位相になります。

Pitch

ピッチ (音程) です。

EX

エンベロープ (音の強さ) です。

OX

エンベロープ乗算後の値です。 ピッチモジュレーションで使用します。

  • F12 または Pause/Break キーで一部の値を 10 進数で表示し、OX 値を表示します。 現時点では、逆位相はマイナスを表記しません。

各チャンネルのエンベロープ遷移情報 (ADSR/Gain 設定情報) を表示します。

Src

波形番号です。

ADSR/Gain

ADSR または Gain の状態を表示します。

EX

エンベロープ (音の強さ) です。

Tune

かんきちくんドライバの基準音程設定の値です。

  • Tune: 解析中は音符マークが表示され、解析失敗時は -- -- が表示されます。 先読みせずに現在の演奏状態をもとに解析を行うため、表示されるまで時間がかかることがあります。 また、短い曲では表示されないことがあります。

  • F12 または Pause/Break キーで Tune 値を表示します。 ここでは Src は 16 進数固定です。

ADSR (AD)

1 ケタ

AR : エンベロープが最大になるまで (Attack) の時間設定 (0~F) です。
Attack 中は A が表示されます。

1 ケタ

DR : エンベロープが最大になった後、SL の設定値になるまで (Decay) の時間設定 (0~7) です。
Decay 中は D が表示されます。

1 ケタ

SL : 最大値を 8 分割 (0~7) したうちの値です。
Sustain 中は S が表示されます。

2 ケタ

SR : エンベロープが DR になった後、0 になるまで (Sustain) の時間設定 (00~1F) です。

Gain (GA)、自動遷移モード (A)

1 ケタ

A : 自動遷移モードです。

1 ケタ

0 : エンベロープを徐々に低く設定します。 遷移中は が表示されます。

1 : エンベロープを徐々に高く設定します。 遷移中は が表示されます。

1 ケタ

0 : エンベロープを直線方向で遷移します。 遷移中は L が表示されます。

1 : エンベロープを折れ線的に遷移します (上昇時)。 遷移中は B が表示されます。

1 : エンベロープを指数関数的に遷移します (下降時)。 遷移中は E が表示されます。

2 ケタ

エンベロープの遷移時間設定です。

Gain (GA)、直接指定モード (D)

1 ケタ

D : 直接指定モードです。

1 ケタ

- : 表示値なし。

1 ケタ

- : 表示値なし。 値を指定しての発音中は D が表示されます。

2 ケタ

エンベロープの設定値です。 この値が直接エンベロープとして使用されます。

各チャンネルの DSP フラグ設定情報と BRR フィルタ設定情報を表示します。

Src

波形番号です。

On

発音中は音符マークが表示されます。

Flags

E : エコーオン

P : ピッチモジュレーションオン

N : ノイズ出力オン

K : キーオン

K : キーオフ

X : BRR ループ

F

BRR 復元時のフィルタ番号です。

R

BRR 復元時のレンジ番号です。

  • F12 または Pause/Break キーで Src 値を 10 進数で表示します。

各チャンネルの波形アドレス情報を表示します。

Src

波形番号です。

Addr

64KB RAM 内に格納されている波形データの開始アドレスです。

Loop

64KB RAM 内に格納されている波形データのループポイントアドレスです。

Read

波形データを読み取り中のアドレスです。

  • F12 または Pause/Break キーで Src 値を 10 進数で表示します。

SPC ファイルの ID666 情報のうち、曲の基本情報を表示します。

Artist

作曲者の情報です。

Dumper

SPC ファイル作成者の情報です。

Date

SPC ファイル作成日の情報です。

Comment

SPC ファイル作成者のコメントです。

PlayTime

設定されている演奏時間です。

FadeTime

設定されているフェードアウト時間です。

SPC ファイルの ID666 情報のうち、タグのバージョン情報を表示します。

Header

SPC ファイルのヘッダバージョン情報です。

Version

SPC ファイルの規格バージョン番号です。

TagType

SPC ファイルに格納されているタグ情報 (ID666 など) の情報です。

Emulator

SPC ファイル作成時に使用されたエミュレータの種類です。

Register

SPC700 レジスタ情報です。

  • F12 または Pause/Break キーで Register 値 (PC を除く) を 10 進数で表示します。

Script700 で使われるメモリの状態を表示します。

Port

SPC700 のポートに入力した値 (In)、出力された値 (Out) です。

Work

ユーザワークメモリの値です。

CmpParam

Script700 の c コマンドで設定されたパラメータ値です。

Wait

次の命令が実行されるまでの待機カウント値です。

UsedSize

Script700 バイナリメモリの使用量です。

Ptr

プログラムを読み取り中のバイナリメモリの場所です。

Data

Script700 バイナリメモリ内でデータ領域が始まる場所です。

SP

ジャンプ命令 (bra など) で移動されたスタックポインタの場所と使用許可フラグです。

  • F12 または Pause/Break キーで Port 値を 10 進数で表示します。

エラー番号

原因

101

SNESAPU.DLL が DLL として認識できません。

102

SNESAPU.DLL に必要な機能が実装されていません。

103

SNESAPU.DLL と SPCPLAY.EXE のバージョンが一致しません。

104

SNESAPU.DLL の起動時動作チェックで異常を検知しました。 破損している可能性があります。

対策

エラー番号

原因

111

SPCPLAY.EXE が正常に読み取れないか、破損しています。

112~119

SPCPLAY.EXE の起動時動作チェックで異常を検知しました。 破損している可能性があります。

121

SNESAPU.DLL が SPCPLAY.EXE と同じ場所に存在しません。

122~119

SNESAPU.DLL の起動時動作チェックで異常を検知しました。 破損している可能性があります。

対策

エラー番号

原因

201

SPC ファイルが存在しないか、ストレージから読み取れません。

202

SPC ファイルが破損しているため、ストレージから読み取れません。

203

SPC ファイルが対応していないフォーマットか、SPC 以外のファイルです。

対策

エラー番号

原因

251

252

指定した場所に書き込む権限がないため、ファイルを保存できません。

対策

エラー番号

原因

302

サウンドデバイスが見つからないか、起動中にコンピュータから取り外されました。

304

サウンドデバイスが他のソフトウェアで使用されています。

306

サウンドデバイスのドライバの状態が異常か、正常にインストールされていません。

307

サウンドデバイスを操作するためのメモリを確保できないか、メモリが異常です。

310

ACM ドライバを介さない直接転送モードが使用できません。

332

設定されているチャンネル、ビット、サンプリングレートに対応していません。

335

サウンドドライバが同期ドライバです。 非同期ドライバを使用してください。

対策

SPC の演奏を音声データ (無圧縮 WAVE ファイル) として記録するおまけ機能があります。

演奏時間は ID666 が使用されますが、最初の無音部分は 0.5 秒 (デフォルト設定時)、最後の無音部分は 1 秒間 (固定) だけを残してすべて自動で取り除かれますので、後で無音部分を調整する編集作業がほとんどいりません。

  • 120 秒の演奏時間が設定されていても最後に無音部分が 10 秒間ある場合は、無音分が取り除かれた 110 秒分 + SNES SPC700 Player が追加する無音分 (デフォルト設定時 1.5 秒) の合計 111.5 秒のファイルが作成されます。

  • チャンネル、ビット、サンプリングレートの設定は、すべて [設定] メニューで設定されている項目が使用されます。

  • チャンネルミュートが 1 つでも設定されている場合は、最初の無音部分は調整されません。

手順

  1. WAVE 出力を行いたい SPC の演奏を開始して、すぐに停止した状態にします。

  2. [SAVE] ボタンをクリックして、"名前を付けて保存" ウィンドウを開きます。

  3. ウィンドウの下にある "ファイルの種類" から "WAVE サウンド (*.wav)" を選択します。

  4. 保存するファイル名を "ファイル名" に入力して、[保存] ボタンをクリックします。

  5. 確認ダイアログが表示されますので、[はい] ボタンをクリックします。

  • 確認ダイアログで表示されるファイルサイズは、一切無音を取り除かなかった場合の概算ですので、実際は同じかそれ以下となります。 ただし、表示されるファイルサイズ分を一時的にストレージ上に作成しますので、空き容量が必要です。

  • 作成が完了すると、実際に作成されたファイルサイズが表示されます。

  • ※ v2.21.0 以降: ファイル作成中は、情報表示エリアを右ボタンでダブルクリックすることで、処理を中止できます。

※ v2.21.0 以降:

コマンドラインで WAVE ファイルを出力する方法もあります。 コマンドラインの場合、スイッチで出力対象のチャンネル指定ができます。

コマンドプロンプトを開き、コマンドを実行してください。 SPCPLAY.EXE が保存されている場所をエクスプローラで開き、アドレスバーに cmd と入力してコマンドプロンプトを開くことができます。

  • このコマンドは起動中の SNES SPC700 Player を操作するものですので、事前に SNES SPC700 Player を起動した状態にしてください。

  • すでに同名の WAVE ファイル名が存在する場合、何も行われません。 強制的に上書き保存する場合は、-f オプションを追加してください。

  • SNES SPC700 Player はコンソールアプリケーションではないため、コマンド実行後は処理完了を待たずに制御が返されます。 処理完了を待機する場合は、start /wait をコマンドの冒頭に付与してください。

  • SNESAPU はシングルスレッド設計のため、演奏と WAVE ファイル出力の同時処理はできません。

構文

# WAVE ファイルを作成する
spcplay.exe -wav [-o <WAVE ファイルパス>] [[-s <チャンネル番号: 1~8>]/[-m <チャンネル番号: 1~8>]] [-v <音量 [%]>] [-f] <SPC ファイルパス>

コマンド例

# sample.spc の演奏出力を sample.wav に記録する場合
start /wait spcplay.exe -wav sample.spc

# sample.spc の演奏出力を test.wav に記録する場合
start /wait spcplay.exe -wav -o test.wav sample.spc

# sample.spc のチャンネル 1 のみの演奏出力を sample.wav に記録する場合
start /wait spcplay.exe -wav -s 1 sample.spc

# sample.spc のチャンネル 1, 4 のみの演奏出力を sample.wav に記録する場合
start /wait spcplay.exe -wav -s 14 sample.spc

# sample.spc のチャンネル 1 を除いた演奏出力を sample.wav に記録する場合
start /wait spcplay.exe -wav -m 1 sample.spc

# sample.spc のチャンネル 1, 4 を除いた演奏出力を sample.wav に記録する場合
start /wait spcplay.exe -wav -m 14 sample.spc

# sample.spc の音量 150% での演奏出力を sample.wav に記録する場合
start /wait spcplay.exe -wav -v 150 sample.spc

高度な使い方

例えば FOR を組み合わせると、チャンネル 1~8 に分割した WAVE ファイルを一括で作成できます。 以下のバッチを実行すると、各チャンネルごとに sample-1.wav ~ sample-8.wav が作成されます。

start spcplay.exe
timeout 1
FOR %%I IN (1 2 3 4 5 6 7 8) DO start /wait spcplay.exe -wav -s %%I -o sample-%%I.wav sample.spc

SPC の演奏途中の状態を、新しい SPC ファイルとして記録するおまけ機能があります。

ID666 の内容 (拡張 ID666 を除く) はそのまま引き継がれます。


手順

  1. WAVE 出力を行いたい SPC の演奏を開始して、スナップショットを保存したい箇所で一時停止した状態にします。

  2. [SAVE] ボタンをクリックして、"名前を付けて保存" ウィンドウを開きます。

  3. ウィンドウの下にある "ファイルの種類" から "スナップショット (*.spc)" を選択します。

  4. 保存するファイル名を "ファイル名" に入力して、[保存] ボタンをクリックします。

指定した時間帯のみを演奏したり、リピートしたりする区間リピート機能があります。

曲全体ではなく、一部分のみをリピートする機能です。 特定の小節のみ演奏させるようなことができます。

開始位置を設定した場合、[PLAY] ボタンや [RESTART] ボタンをクリックすると、登録した位置から演奏が始まります。


手順

  1. [設定] - [演奏順序] を開き、[演奏停止] または [リピート] を選択します。

    [演奏停止] を選択すると、終了位置に到達した場合に自動的に演奏を停止します。 [PLAY] ボタンで開始位置から再開できます。

    [リピート] を選択すると、終了位置に到達した場合に自動的に開始位置から再開します。

  2. 開始位置を設定したい場所まで演奏するかシークを行い、[PAUSE] ボタンで一時停止を行った後、[演奏時間] の [開始位置を設定] を選択します。

    タイムゲージの上に表示されている赤い▼マークが指定位置まで移動します。

    Ctrl キーを押しながらカンマキーを押しても登録できます。 また、Shift キーを押しながらタイムゲージを左クリックすることでも登録できます。

  3. 終了位置を設定したい場所まで演奏するかシークを行い、[PAUSE] ボタンで一時停止を行った後、[演奏時間] の [終了位置を設定] を選択します。

    タイムゲージの下に表示されている青い▲マークが指定位置まで移動します。

    Ctrl キーを押しながらドットキーを押しても登録できます。 また、Shift キーを押しながらタイムゲージを右クリックすることでも登録できます。

  4. [RESTART] ボタンをクリックすると、登録した期間内で演奏が開始されます。

    位置をリセットする場合は、[演奏時間] の [位置をリセット] を選択するか、Ctrl キーを押しながらスラッシュキーを押してください。

    [演奏時間] の [無効/エンドレス] または [常に既定時間を使用] を選択する、プレイリストからファイルを選択する、新しい SPC ファイルをドロップすると、自動的に位置がリセットされます。

    ※ v2.20.0 以降: タイムゲージ上でマウスのホイール (中央) ボタンをクリックしても、位置をリセットできます。

SNES SPC700 Player の設定によって、ある程度音質を保ちつつ実機の再現性重視を取るか、再現性を多少犠牲にして高音質重視を取るか選択することができます。

以下は設定例です。 これらを基本として、お好みで設定を調整してみてください。


実機再現性を重視する場合 (デフォルト設定)


高音質・聞き取りやすさを重視する場合 (再現性は劣ります)

※ v2.21.0 以降:

SPC700 のオペコード処理を、特定の位置で一時的に停止するブレイクポイント機能があります。 ブレイクポイントを設定することで、特定の命令の実行直前に動作を一時停止することができ、SPC のデバッグに役立ちます。

コマンドラインでブレイクポイントを設定・解除します。 コマンドプロンプトを開き、コマンドを実行してください。 SPCPLAY.EXE が保存されている場所をエクスプローラで開き、アドレスバーに cmd と入力してコマンドプロンプトを開くことができます。

  • このコマンドは起動中の SNES SPC700 Player を操作するものですので、事前に SNES SPC700 Player を起動した状態にしてください。

  • この機能は実験中・デバッグ用途向けのため、構文エラー等の理由でコマンドの実行に失敗しても、エラーメッセージは特に表示されません。

構文

# ブレイクポイントを設定し、指定したアドレスで処理を一時停止する
spcplay.exe -bp [-s] <アドレス番号: $0000~$FFFF> [soft/mixed/hard] ...

# ブレイクポイントを解除する
spcplay.exe -bp -u <アドレス番号: $0000~$FFFF> ...

# 次のオペコードに進み、処理を一時停止する
spcplay.exe -bp -n [soft/mixed/hard]

# 次のブレイクポイントまで処理を進める
spcplay.exe -bp -r

# ブレイクポイントをすべて解除する
spcplay.exe -bp -c

コマンド例

# アドレス 0x0F8C にブレイクポイントを設定する
spcplay.exe -bp $0F8C

# アドレス 0x0F8C と 0x27AA にブレイクポイントを設定する
spcplay.exe -bp -s $0F8C $27AA

# アドレス 0x0F8C のブレイクポイントを解除する
spcplay.exe -bp -u $0F8C

高度な使い方

停止オプション [soft/mixed/hard] を使い分けることで、停止方法を選択できます。

# SPC700 のみ停止する
spcplay.exe -bp $0F8C soft

# SPC700 とタイマーを停止する (停止オプション未指定時と同じ)
spcplay.exe -bp $0F8C mixed

# SPC700・タイマー・DSP を停止する
spcplay.exe -bp $0F8C hard

※ v2.21.0 以降:

DSP のレジスタ値を強制的に別の値に変更する DSP レジスタチート機能があります。 DSP レジスタを強制的に変更することで、音の出方の確認などができ、SPC のデバッグに役立ちます。

コマンドラインで DSP レジスタチートを設定・解除します。 コマンドプロンプトを開き、コマンドを実行してください。 SPCPLAY.EXE が保存されている場所をエクスプローラで開き、アドレスバーに cmd と入力してコマンドプロンプトを開くことができます。

  • このコマンドは起動中の SNES SPC700 Player を操作するものですので、事前に SNES SPC700 Player を起動した状態にしてください。

  • この機能は実験中・デバッグ用途向けのため、構文エラー等の理由でコマンドの実行に失敗しても、エラーメッセージは特に表示されません。

構文

# DSP レジスタチートを設定し、指定したレジスタの値を強制する
spcplay.exe -dsp [-s] <アドレス番号: $00~$7F>=<書き換え値: $00~$FF> ...

# DSP レジスタチートを解除する
spcplay.exe -dsp -u <アドレス番号: $00~$7F> ...

# DSP レジスタチートをすべて解除する
spcplay.exe -dsp -c

コマンド例

# チャンネル 1 の左ボリュームを 0x60 に固定する
spcplay.exe -dsp $00=$60

# チャンネル 1 の左ボリュームと右ボリュームを 0x60 に固定する
spcplay.exe -dsp -s $00=$60 $01=$60

# チャンネル 1 の左ボリュームの固定を解除する
spcplay.exe -dsp -u $00

※ v2.21.0 以降:

SPC700 のポート値に特定の値を書き込む SPC700 ポート書き込み機能があります。 音楽演奏中に効果音を鳴らすなど、SPC ドライバの機能を呼び出すことに役立ちます。

コマンドラインで SPC700 ポートに値を書き込みます。 コマンドプロンプトを開き、コマンドを実行してください。 SPCPLAY.EXE が保存されている場所をエクスプローラで開き、アドレスバーに cmd と入力してコマンドプロンプトを開くことができます。

  • このコマンドは起動中の SNES SPC700 Player を操作するものですので、事前に SNES SPC700 Player を起動した状態にしてください。

  • この機能は実験中・デバッグ用途向けのため、構文エラー等の理由でコマンドの実行に失敗しても、エラーメッセージは特に表示されません。

構文

# SPC700 ポートに値を書き込む
spcplay.exe -port [-s] <ポート番号: 0~3>=<書き込み値: $00~$FF> ...

# スリープ
spcplay.exe -port -w <時間 [ms]> ...

# SPC700 ポートに値を書き込み、すぐに元の値へ戻す
spcplay.exe -port -t <ポート番号: 0~3>=<書き込み値: $00~$FF> ...

コマンド例

# ポート 0 に 0x2A を書き込む
spcplay.exe -port 0=$2A

# ポート 0 に 0x2A、ポート 2 に 0x7F を書き込む
spcplay.exe -port -s 0=$2A 2=$7F

# ポート 0 に 0x2A を書き込み、1 秒経過後に 0x00 を書き込む
spcplay.exe -port -s 0=$2A -w 1000 -s 0=$00

# ポート 0 に 0x2A を書き込んだ後、すぐに元に戻す
spcplay.exe -port -t 0=$2A

※ v2.21.0 以降:

コマンドラインで SNES SPC700 Player の基本的な操作を行うことができます。 ショートカット等を用意したり、ランチャー等に登録したりすることで、手軽にプレイヤーを操作することができます。

  • このコマンドは起動中の SNES SPC700 Player を操作するものですので、事前に SNES SPC700 Player を起動した状態にしてください。

  • この機能は実験中・デバッグ用途向けのため、構文エラー等の理由でコマンドの実行に失敗しても、エラーメッセージは特に表示されません。

構文

# 演奏開始・一時停止
spcplay.exe -p

# 最初から演奏
spcplay.exe -r

# 演奏停止
spcplay.exe -s

# アプリケーションを終了
spcplay.exe -q

# 音量を最小化 (5%)
spcplay.exe -l

# プレイリストの次の曲を演奏
spcplay.exe -next

# プレイリストの前の曲を演奏
spcplay.exe -prev

# プレイリストからランダムに演奏
spcplay.exe -rand

他の方々が開発してくださった SNES SPC700 Player 対応外部拡張アプリケーションの紹介です。

対応ソフトウェアを開発してくださっている皆さま、お忙しい中、ありがとうございます。

SPCMEM - SNES SPC700 Player Memory Viewer

gocha 氏が開発してくださった SNES SPC700 Player のメモリ内容を表示・変更できるアプリケーションを使用すると、以下のメモリ情報をリアルタイムで表示・書き換えができます。