小ニュース

ALPHA -II Production
SNESAmp Ver3.01 がリリースされています。今のところ最高音質を誇るプレイヤーだと思います。
日本語言語パックもDL可能。
SPCTOOL GUI版については現在MIDI convert実装について検討しているそうです。



SPCToolマニュアル 日本語版

このページは原著者Anti Resonance氏の許可済みです。
2001年11月31日改訂(青文字は私のコメントです。)

SPCTool Ver.0.61

Copyright c2000 アルファ−Uプロダクション


☆このマニュアルをDOS上で読み込まないこと。

SPCToolはカスタムビデオモードを使用し、ウィンドウでは使用できない。
Windows上で起動する際は、フルスクリーンモードを使用する(Alt+Enter)。
SPCToolをGUI無しで使用するときは再生専用モードに関する2−1を参照。

・おことわり
 このプログラムは私自身の目的のために余暇を使って作られた物である。したがってこのプログラムがあなたのシステムにおいて正常に動作するかどうかは、私は一切保証しない。
 私はこのプログラムがSPCを使う人の役に立つかもしれないと思いリリースした。役に立ったならばそれで結構だが、そうでなければ不平を言わないようにしてほしい。



【コンテンツ】


1.はじめに
・1−1 SPCTool制作にいたるまで
・1−2 特徴
・1−3 動作環境
・1−4 SPCのリッピング

2.コマンド
・2−1 コマンドラインオプション
・2−2 主要コマンド

3.メインプログラムとエミュレーター
・3−1 メイン
・3−2 エミュレーション

4.ウェイブフォーム
・4−1 ウェイブテーブル
・4−2 オプション
・4−3 フォーム

5.DSP変換
・5−1 WAV変換
・5−2 MIDI変換

6.デバッグモード
・6−1 デバッグモードについて
・6−2 SPC700内部構造

−−付録−−
・A 欠けている特徴と知られているバグ
・B 更新履歴
・C クレジット(協力者)
・D 作者との連絡について
・E GMプログラムリスト



1.はじめに


1−1:SPCTool制作にいたるまで

 SPCToolは、SPCファイルにおけるすでに知られている機能を一つにまとめた編集プログラムである。
 制作のきっかけは何か?それは、私がある程度簡単で低レベルなエミュレーションコアをつくろうと思い立ったことにある。SPC700は、このアイデアに打ってつけの素材だった。それで、SPC700のエミュレーションコアの作成を始めた。
 作成後、私はこれだけでは満足できなかった。(SPC700のエミュレーターをつくったところで、所詮大したことはなかったのだ。)さらに私はDSPのエミュレーターに手をかけた。それに伴い、他のオプションや機能も加えていった。現在、このソフトは他の人が使えるくらいにまで進歩した。これがSPCToolだ。
 プロのエミュレーター制作者と同様に、私の目標は完全なエミュレーターをつくることにある。SPCToolはおそらくその方面では最も高速で正確なエミュレーターだろう。だが、まだ目標に達したわけではない。
 上のバージョン0.61というのは、このソフトが公式β版であることを意味している。このプログラム内にはバグもあり、完全には機能していない部分もある。そのことも考慮して使用していただきたい。

−制作者 Anti Resonanse



1−2:特徴

<CPUエミュレーション>
・BRKを除くすべてのOPコードのシミュレーション
・統合されたランタイムデバッガ

<DSPエミュレーション>
・非標準の出力サンプルレート
・ADSR/GAIN変更
・ピッチ変化
・ノイズ変化
・ほぼ完全なサンプルファイル出力
・32kHz以外のレートの正確なFIRフィルター
・Liner/CubicSpline波形選択
・WAVファイル変換出力
・MIDIファイル変換出力

<SPCファイル>
・曲とフェードアウトのサポート
・ID666タグの編集テキスト
・ZSTファイルをSPCファイルとして読み込む

<ウェイブフォーム>
・WAVEファイルとしてBRRデータを出力
・ADPCMを利用したBRRへのWAVEファイル取り込み
(変換はアセンブリによって行われTASM v5.2でコンパイルされる。)



1−3:動作環境

<必須条件>
・80486w/480kフリーコンベンショナルメモリ
・VGAビデオカード
・サウンドブラスター(もしくはDSPver.2.00かそれ以上に互換性のあるもの)

<推奨>(自分のマシン環境。私は問題なく動作した。)
・Pentium(MMXサポート)
・100%IBM VGA互換ビデオカード
・サウンドブラスターLive!
・MS−マウスVer.6.0かそれ以上
 
 486でこのプログラムの動作は試みていないが、P100で起動できた。よっておそらく、8kHzで486 100でも動作するだろう。8ビットのサウンドカードを持っていなかったので、バグの解決は難しい。私がテストしたマシンの1つでは、SPCToolはエミュレーションを止めた後に動かなくなった。おそらく、ハイスピードDMAモードにおいて、8ビットのサウンドカードに何らかの問題があるのだろう。解決法は、16kHzモノラルか、それ以下で動作させることだ。



1−4:SPCファイルのリッピング

 SPC(チップ)はSNESのデバイスの一つである。このデバイスは8ビットのCPU(Sony SPC700)と64Kバイトの回路基盤上のRAMから成る。いくつかのピンによりそれはメインボードにつながっており、4つのポートの1つを通じて伝達される。このデバイスは物理的にも論理的にも本体と完全に分離している。
 SPC700は全て2.408MHzで動作し、6つの内部レジスタがあり、256のOPコードを実行する。明らかにこれは、今日のコンピュータほどすごい物ではないが、このこと自体、多くの作業をすることを可能にしているのだ。しかし、これにはどんな入力装置も表示も取り付けられていない。どのような点が良いのだろうか。

 さて、SPC700には16ビットのDSP機能がある。このDSPはWAVEサンプルを利用したサウンドカードのように機能する。そして、ピッチとボリュームの異なる8つの音声出力を同時に処理できる。
 この背景を知っていれば、SNES上の音楽が何をなしているか理解するのは簡単なことだ。(とあるゲーム会社の)音楽制作者がパソコンのシーケンサを使って、満足の行くいくつかの曲をつくる。そして彼はゲームプログラマーのもとにそれを持っていく。彼らは順番にこの曲を配置し、さらにグラフィックのデータやコードをゲームに加える。このコードの一部は、曲を演奏可能にするためのSPC700用にかかれたプログラムからできている。おそらくゲームがアップデートされるとき、このプログラムはSPCのRAMとなる。そして、このプログラムによってゲームの合間に曲が再生されるのだ。

 問題が起こるのはここだ。この曲のフォーマットはスタンダードMIDIファイル(SMF)ではなく、おそらくゲーム会社独自の物だろう。この後、ゲームプログラマーがこの曲が再生可能になるようなプログラムを作るのでこの独自形式は制作過程では何の問題もない。さらに、曲が再生されれば、ゲームプレイヤーにとっても全く問題にならない。しかし、実際にゲーム音楽を、(ゲーム音楽のいくつかの曲が良い物であると感じて)パソコンで聴きたがっている我々にとっては、これは問題となる。なぜなら、我々はこの曲を再生する方法を知らないのだから・・・。

 少し話題を変えよう。あなたのパソコンが今フリーズしてしまったところを想像してほしい。このときあなたのRAMは全てディスクに保存されたとする。コンピュータがクラッシュした後、再起動してあなたはすぐにさっきのデータをロードする。そして、コンピュータは何事もなかったように元通りになる。(このマシンのステイトセーブ機能は、電源が落ちているとき保存する方法としての何らかのラップトップに実際に利用される。が、あなたにとってはおそらくエミュレータを使って、安っぽくゲームを途中でステイトセーブする方が詳しいだろう。)

 さて、話を戻すと、あなたは好きなSNESのゲームをパソコンでやっているわけである。床の上に置いてあるSNESコンソール(スーファミ本体のことです)を見下ろして、去年友達に貸したクロノトリガーのソフトのことをことをその友達はまだ覚えているだろうか、とふと思う。だが、あなたの注意は突然パソコンのディスプレイのほうにもどる。KickAssのテーマが流れ始めたのだ。あなたはこの曲をとっておきたいと思い、ハードディスクにダンプする。そしてこの後、これを何百回もループさせて(少し大げさか?)SNESAmpで聴く。
 なぜこんな事ができるのか。エミュレートされたSPCは、RAMの中に再生に必要な曲と構成プログラムの両方を持っているのだ。曲をセーブするとき、少しの間だけフリーズがかかり、全てのデータがディスクに書き込まれる。この時点ではこの曲が何であるか、どうやってプレイしたらよいか分からないが、現在、あなたはそれを処理できるようなプログラムを持っている。エミュレータによって、この小容量のダンプファイルをロードし、再生し続けることが可能になる。このプログラムはSNES内部でロードされている認識がない。そうでなければそのうち曲は止まってしまうだろう。
 楽器はDSPによって利用されるためにBRRブロックを使って読みとられている。BRR圧縮方法に適合したデータをそれぞれ見ることができれば、読みとられたウェイブフォームを調べることができる。しかし、曲には標準フォーマットがないのでそれは不可能である。これがSPCをROMから直接取り出すことのできない理由だ。

→コンテンツに戻る




2.コマンド


2−1:コマンドラインオプション

【FILE】インプットファイル
 SPCダンプ、ZSNESのステイトセーブ、SNESロムに属する標準(8).(3拡張子)ファイルネームを入力する。

【/V】非標準VGA
 SPCToolは90×60テキストモードで起動し、キャラクターマップをアップデートすることによってカーソルを作成する。もしあなたのビデオカードが標準VGAと互換性がないなら、スクリーンは作成されない。このオプションはカーソルをブロックに変え、より遅いBIOSルーチンをスクリーンのアップデートに使う。

【/J】日本語セット
 ロムが日本製であるならば、言語セットは自動的にJIS-X0201に切り替わる。だが、SPCでカタカナを使いたいときは、デフォルトのUS ASCII言語セットをリロードすればいい。ふつうのマウスでは、「み」から「ゆ」までの文字が/Vオプションを使わない限り見ることができないからだ。

【/X】MMX指令を無効にする
 あなたのマシンがMMXの場合、64ビットの指令が優先して使われる(PentiumUでは条件付き動作で使われる)。何らかの変わった理由で、あなたが速い処理を望まないときは、このオプションによりMMX指令を無効にできる。MMXのCPUではない機種については、このオプションは影響しない。

【/P[#]】再生専用モード
 このオプションはGUIとEscを除く全てのキーを無効にすることによって、SPCToolの全機能を無効にする。WindowsのバックグラウンドとしてSPCを再生させるときにこの機能を使う。/Pの横の値は出力レベルである。値が設定されていないときはデフォルトの30が使われる。範囲:0〜99

【/O】サウンドカード出力を無効にする
 このオプションによりサウンドカードを無効にできる。あなたがなぜそうしたがるかは私には分かりかねるが、そうしたい場合はこれを使えばいい。サウンドカードを無効にすると、全ての音声出力はWAVファイルとしてディスクに保存される。

【/8】強制8ビットサンプル化
【/M】強制モノラルサンプル化
 サウンドカードによって実現可能な最高音質は自動的に検出される仕組みになっている。ミキシングは出力タイプに関わらず32ビットステレオで実行される。よって、モノラル音声が処理速度を速めるわけではない。

【/R#】出力サンプルレート
 1:8000Hz 2:11025Hz 3:16000Hz 4:22050Hz
5:32000Hz 6:44100Hz 7:48000Hz 8:64000Hz
デフォルトの32kHzがSNESと同じレートである。64kHzというのは、将来サウンドカードがサポートできるようになったときのために設定してある。

【I#】デフォルト補間法設定
 1:なし 2:Liner 3:CubicSpline
デフォルトではCubicだが、遅いシステムではLinerに変える必要があるだろう。



2−2:主要コマンド

・メインコマンド
F1    :ヘルプ
F11   :終了
F12   :About

・エミュレーション
F3    :SPCファイルの保存
Alt+F3:DSP変換
F5    :SPC700にエミュレート
シフト+F5:RAMをリロード
F7    :デバッグモード
F8    :エミュレーション一時停止
シフト+F8:SPC700リセット
〜(~)  :最高速エミュレート
+/−   :出力(アンプ)レベル調整
1〜8   :ミュートチャンネル選択

・ウェイブテーブル
シフト+F2:フォームをインポート
シフト+F3:フォームの保存
シフト+F9:直接ソースをリロード
UP/DWN:(前/後の)フォーム選択
PgUP/PgDWN :(ウェイブテーブルの)ページ切り替え
Space :ウェイブフォーム再生

・デバッグモード
F7    :次の命令をエミュレート、エミュレートを止める
シフト+F7:次の行をエミュレート
Alt+F3:ログ逆アセンブル
0,1,2,3   :アウトポート0〜3を表示
Alt+0,1,2 :タイマー0〜2を表示
Ctrl+0,1,2 :カウンター0〜2を表示
4     :コントロールレジスタポートの表示
5     :DSPアドレスポートの表示
6     :DSPデータポートの表示
Esc   :デバッグモード終了


→コンテンツに戻る



3.メインプログラムとエミュレータ


3−1:メイン

チャンネルアウトプット
エミュレーション状態を表示するチャンネルアウトプット
(DOSモードではスクリーンショットがとれないので苦労して自作画像です・・・。)


・ヘルプ(F1
 現在のスクリーンに基本的なヘルプを表示する。

・終了(F11、Quitボタン
 全てのエミュレート変換を止めてSPCToolを終了する。

・About(F12
 プログラムについての規格、現在の環境情報についても一部表示する。

・デバッグモード(F7
 音声出力を止めてデバッグスクリーンに切り替える。

・ID666テキスト変換(ヘッダウィンドウのテキストをクリック
 テキストは256個のアスキーコードで構成されている。

・曲とフェードアウトの変更(出力ウィンドウのTotalTimeをクリック
 曲の長さ:単位は秒。フェードアウト時間は含めない。 範囲:1〜9999
 フェードアウト:単位は1/1000秒。曲長の後に続く 範囲:1〜120000



3−2:エミュレーション

・エミュレートSPC(F5、Playボタン
 Cranks out the tunage man!(訳不能。スミマセン・・・汗)

・エミュレート一時停止(F8、Pauseボタン
 再生中の音楽や再生を止める。

・RAMリロード(シフト+F5、Rewindボタン
 RAMとCPUの現状をリロードし、リセットする。

・最高速エミュレート(〜、Fast−forwardボタン
 次の音のブロックをつくる前に発生するデータ送信を待たないで曲をスピードアップする。スピードはマシンのスペックにのみ依存する。〜キーをおせばON/OFFにできるが、Fast−forwardボタンではまだ不可能。

・SPCファイルの保存(F3、エジェクトボタン
ID666タグのみ保存:テキストと曲の長さを保存
DSPレジスタのみ保存:128バイトのDSPRAMを保存
全SPCデータの保存 :ID666タグ、CPU、SPCRAM、DSPRAMを保存
SPCアンプフォーマットを使う:このチェックボックスをチェックするとテキストの代わりにID666タグの数字はバイナリ形式で保存される。

SPCデータがZSTからロードされた物であれば、設定したオプションに関わらず全データを保存する。これらの設定は一度セーブすると、元に戻すことはできない。

・DSP変換(Alt+F3、Recordボタン
マイクロソフトWAV:かの有名なWAVファイルに出力する。
MIDI:ピッチ、ウェイブフォーム、キーレジスタ、ボリューム変化をMIDIに出力する。おのおののチャンネルのタイムカウンターは0から増加していく。
 
 Okを押すとすぐに変換は開始される。ファイルネームはSPCと同じで、拡張子が異なるファイルをつくる。デフォルトでは、WAVファイルのセッティングは現在のものと同じである。

・出力レベル(+/−
 制作過程によって、SPCは大きく異なる。スクウェアのソフトは一般的に音が小さすぎるし、対してカプコンはうるさすぎる。よって、変換する前に出力レベルを調整する必要がある。出力レベルが大きすぎると、最大音量を超える部分はカットされるだろう。(この部分はMIDI変換のボリュームには影響しないようです)

・ミュートチャンネル(1〜8,チャンネルナンバーをクリック
 そのチャンネルの出力(DSP変換)を無効にする。(MIDI変換には影響しません)

・リセットSPC700(シフト+F8、UP↑ボタン
 全てのRAMを消去して、CPUを起動させる。あまり役に立たない。

→コンテンツに戻る



4.ウェイブフォーム


4−1:ウェイブテーブル

 SPC、もしくはZSTからファイルをロードすると、ウェイブテーブルウィンドウにRAMからロードされたウェイブフォームのリストが表示される。このリストは、ソースディレクトリから引き出されたものである。アルゴリズムを探すときに使われるフィルタは、無効な楽器を削除するために使われるが、完全に正確なわけではない。
 BRRデータからスキャンされたROMを使ったときは、ウィンドウには検索結果も表示される。


ウェイブテーブルは次の5つの欄から成り立っている。

ウェイブテーブル
左に並ぶウェイブテーブル。値は適当に振ってあります。

Number>ソースディレクトリのインデックス。あまり意味はない。
Offset>RAM、ファイルにおけるオフセット。
Length>サンプルのウェイブフォームのサイズ。
Loop>  サンプルのループ開始位置。(ウェイブフォームにはループポイントがある。)
BRR>   ウェイブフォームに用いられるBRR圧縮方法。


・ウェイブフォーム選択(Up/Down、クリック
 編集するウェイブフォームを選択する。

・スクロール(Pgup/Pgdown、スクロールバー(部分的)



4−2:オプション

ウェイブフォーム
右下のオプション等です。

 ウェイブオプションウィンドウは、ウェイブフォームの編集、変換方法のセッティングに使われる。左/右のラベルクリックで増加/減少の値を操作できる。中央C(後述)の場合、値は半音ずつ増減する。

・インターポレーション
 再生するときに使うインターポレーション(補間方法)のタイプを選択する。

<None>:波形はあらゆるアンチアライズの型に関係なく再生のために測定される。アンチアライズがサンプルの再生をソフトにしすぎるなら、これを使うといい。
<Liner>:測定されたウェイブフォームのデルタサンプルは均等な割合で変化していく。この方式では、その角の鋭いものを切り取ることによって音質を大きく改善する。
<CubicSpline>測定されたデルタサンプルは、サンプルの響きに基づくものとなる。この方法では、Linerよりも自然な音質が得られるが、ソースを統合することによってサンプルの音が少しゆがむかもしれない。

・中央Cの再生レート(Mid−C
 フォーム再生のためのデフォルトサンプルレートを指定せねばならない。MIDI変換にも用いる。
値範囲:1〜128000(Hz)
 残りのオプションはMIDI変換だけに使用されるので、5−2で詳しく解説する。

・楽器タイプ(Type
 トーンかドラムセットのどちらかを選択する。

・プログラムナンバー(Prog#
 値範囲:1〜128

・バンクナンバー(Bank#
 値範囲:0〜127

・出力レベル(Amp#
 値範囲:1〜127

・包囲効果(Env
 Ignore、EnvX、ADSRから選択する。



4−3:フォーム

 ウェイブフォームウィンドウは、ウェイブフォームを視覚的に表示したものである。ドメインがそれに沿うように設定されているので、ウェイブフォームはウィンドウにあてはまっている。
 全てのウェイブフォームの機能は、エミュレーション中はセーブ以外無効となる。

・フォーム再生(スペース、Playボタン)
 中央Cで指定された周波数でウェイブフォームを再生する。

・停止(F8、Stopボタン)
 再生中のウェイブフォームを停止する。

・フォームのインポート(シフト+F2、エジェクトボタン)
 BRRデータを、ユーザの供給する8もしくは16ビット・モノラルのWAVファイルに変換する。インポートルーチンを選択するのが最も良い圧縮方法であろう。BRRデータより長いWAVファイルはカットされる。
 ベースラインとなるブロックは、参照しているサンプルをリセットするためにBRRデータが開始された時と同時に自動的にインサートされる。このことを頭に置いておいた方がいい。なぜならこれは、16のサンプルから成るウェイブの最大長を縮めるからだ。
 ROMへのインポートは一方的でもとの戻すことはできない。SPCへのインポートはセーブされ、RAMをリロードすることによって元に戻すことができる。(F5、Rewind)
 インポートが完了したウェイブフォームは緑色で表示される。

・WAVファイル出力(シフト+F3、逆エジェクトボタン)
 ウェイブフォームを分析して、WAVファイルに保存する。出力が完了したウェイブフォームは赤色で表示される。

・ウェイブテーブルのリロード
 ソースディレクトリを検索することによってウェイブテーブルをリロードする。この機能を使えば、すでにセットしたオプションなどを元に戻すことができる。ROMの場合は効果がない。

→コンテンツに戻る




5.DSP変換

 SPCToolには、DSPをハードディスクにマイクロソフトWAVフォーマットとして出力する機能と、DSPレジスタの方式を、MIDIフォーマットとして出力する機能がある。現時点では、変換後のファイル名を指定できない。ファイル名は使っているSPCと同じで、拡張子が異なる。
 変換方式を選択した後、OKを押せばすぐに変換が始まるだろう。変換中はサウンドカードからの出力は不可能である。これには2つの理由がある。まず、変換が再生スピードよりも高速で行われること。次に、ゆっくりとディスクに書き込んだ後に再生するとハングアップする可能性が高いことだ。


5−1:WAV変換

 WAVフォーマットに変換するには、今まで通りに出力して、WAVファイルとして保存すればいい。WAVファイルは異なったサンプルレートで出力される可能性があるが、ウィンドウの下半分の出力レートオプションを変えることによって解決できる。しかし、曲の長さ、出力レベル、特定チャンネルのミュート等はそのまま反映するだろう。


5−2:MIDI変換

ウェイブフォーム
MIDI変換はここが重要です・・・。

 MIDI変換はWAV変換よりもはるかに難しい。なぜなら、おのおのの楽器がオプションをセットされる必要性があるからだ。実際、MIDI変換にはインターポレーション(編集波形)以外の全てのオプションを使用する。
 いろいろなことを全て考慮ししたので、SPCToolは完全なMIDIをつくるように意図されていない。代わりに、テレビゲーム音楽を自分の力でMIDIにしている人は、これによって当てずっぽうに音を打ち込む手間が省けて大いに助かるだろう。

・中央C
 最も重要な値で、中央Cの再生サンプルレートである。出力時のノート(音の高さ)を決めるのに必要である。デフォルトは32KHzとなっているが、この値を使うことは滅多にないだろう。

・トーン/ドラム
 デフォルトでは、楽器はトーンに変換される。だが、MIDIにおいて10チャンネルで再生されるパーカッションノート(ドラムセット)として出力される音もある。パーカッションのピッチは不確定なので、中央Cの値は使用しない。(これでしなければならないことが一つ減る)

・プログラムナンバー
 ウェイブフォームを参考にプログラムナンバーを指定する。(プログラムナンバーのリストは付録Eを参照)

・バンクチェンジ
 あなたのMIDIのデバイスがバンクセレクトによって異なったバンクの楽器を使うことができるならば、この値はバンクセレクトMSBに出力される。ドラムセットに決定してある場合、この値はドラムセットのノートと同じ扱いになる。(付録E参照)

・出力レベル
 普通、ウェイブフォームとMIDIデバイスの楽器によるボリュームは大きく異なっている。変換ボリュームが計算された後、この値はそれを調整するために使う。調整場所はボリューム(amp/8)である。デフォルトの32という値は4倍のボリュームに変換される事を示している。MIDIフォーマットにより、変換後のボリュームは128でカットされるだろう。

・包囲効果変換(ステレオ効果、バンポッド)
 DSPはMIDIデバイスが使っているようなADSR包囲効果修正を使用している。まれに、包囲効果修正がMIDIデバイスに適用されないことがある。このようなときは、包囲効果の値が同じような響きになるようにDSPによって作り替えて使うようにすることができる。
 デフォルトでは、左右のチャンネルのみから変換後の値を決定する「Ignore」である。現在、EnvXとADSRは、両方とも同じで、チャンネルボリュームとスクリーンに表示される包囲効果値の平均から、変換値を決める効果がある。


【例】



 今、MIDI変換をわかりやすくするために例を挙げておこう。ここでは、ファイナルファンタジーVの「プレリュード」を使うことにしよう。これを選んだのはいくつかの理由がある。ほとんどの人々のとって有名であること。楽器数が少ないこと。元々サウンドキャンバスで作曲されているために、MIDIへの変換精度が高いこと、などだ。

☆中央Cを設定する


 まずはじめにしなければならないことは、どのウェイブフォームが楽器として使われているのかを判断することである。曲を再生してみて、どのウェイブフォームが使われているかを見てみよう。この例の場合、はじめの6つのウェイブフォームは使われていないようだ。使われているのは、行番号64,65,66だ。

 ここからが厳しいところだ。ほとんどの曲のフォーマットは、ノートの値(オクターブ2:A#から7:Dまで)のように楽器を再生するためのそれぞれの”ピッチ”を確保している。しかしながら、SPCフォーマットのピッチは、再生レートとして確保されている(MODフォーマットのピッチが時間変化に対して不変であるのと同様に)。
 それで、どの楽器のノートが我々の知りたいベースノートの値として演奏されているのか見抜く必要がある。再生レートとベースレートの間の違いを計算することによって、どのノートが作り直されているかを知ることができる。SPCToolでは、私は中央のC(オクターブ4:C)をベースのノートとして選んだ。なぜなら、うーむ・・・そこに中央のCがあるからだ。

 ここで、それぞれの楽器についてどのようにして中央Cのレートを見抜けばいいのか?いろいろな方法があるが、最も簡単な方法をとろう。しかしまずここで、中央Cのレートが完全に正確でなくても良いことを言っておきたい。変換ルーチンは最寄りのノートの高さを選ぶ。20〜30Hzの誤差ならば、おそらく大丈夫だろう。


方法1:ループの長さを使う

 ウェイブフォームのグラフを見てみよう。もし、それにループポイントがあるならば、点線によって示されているだろう。ここで、ループ部分にいくつのサイクルがあるか数える。次に、全体の長さからループポイントの長さを引いて、ループの長さを出す。そして、中央Cの周波数にループの長さをかけて、その結果をループの数で割る。おわかりいただけただろうか?おそらくだめだろう、FF5のSPCを使って検証してみよう。
 最初の楽器、行番号64はループポイントがない。これは置いておこう。次の楽器はほとんど全体をカバーするくらいのループ長がある。3つ目の楽器は短いループがあり、1回の振動が明確に見て取れる。ここからは簡単だ。ループの長さを求めよう。688−656=32。これに中央Cの振動数261,6255653Hzをかける。答えは32×262=8372。一回のループがほとんど全面をカバーしているので、割る必要はない。よって、8372がこの楽器の再生レート(中央C)だ。


方法2:コンピュータの判断に従う

  AnalogXは、SampleAutoTuneというソフトを作った。これは、ウェイブフォームから周波数を判断するものだ。もしAutoTuneを持っているなら、計算したい楽器音をディスクに保存しよう。AutoTuneを開く。ノートをC4、サンプルレートを選択可能にして、「指定」を選び、モノラル16ビットにする。エクスプローラを開く。セーブしたWAVファイルを見つけて、AutoTuneにドラッグドロップする。
 AutoTuneはそれぞれのWAVファイルをC4に合うように計算するだろう。それぞれのファイルのサンプルレートを調べるために、毎回WAVエディタを起動する必要がある。


方法3:外部のプログラムを使う

 楽器音をディスクにセーブする。そして、お好みのWAVエディタを開く。楽器音を開いて、どこかに注目すると、振幅や振動数の表示は、真ん中辺りではどちらかというと平らになっているだろう。1:1の像が見えてくるまで、ズームアップしてみる。使っているのが高性能なエディタであれば、ウェイブフォームの細部まで見ることができて、それによってサンプルレートをどのくらいにすればよいか判断できるだろう。%nbsp:この周波数を計算する公式も使うと良い。
 再び、簡単な例を挙げよう。1番目の楽器を選ぶ。ウェイブフォームの中央辺りを拡大していく。10回の振動数まで拡大する。あなたは362(±1)のサンプルを見ることになるだろう。ここで、先ほどの式を使う。362×261,3÷10=9471Hz。


方法4:最も早い測定方法

  もしかするとあなたの持っているWAVエディタはWinblows(Windows?)付属のPOSか?もしくはウェイブフォームの計算は複雑すぎるか?もう一つ、あなたの使える方法を教えよう。SPCを再生する。楽器が演奏されているところで、その音を聞き取る。その楽器の中央Cの高さと比較して、楽器音を再生してみる。この音は中央Cに近いか?他の楽器を使ってさらに比較し、中央Cに合うところまで半音ずつ上げ下げしていく。
 FFUの2つ目の楽器のために、この方法をやってみる。再生レートの一つは12023だった。この高さ覚えて楽器音を再生してみる。ああ、この音は高すぎる。それで半音ずつ下げていく。これは中央Cのラベルをクリックすることによって可能である。あなたが手動でより正確に音を合わせられるときに使う。このときの半音階比例定数は12乗根2で、つまり1.05963094である。あなたがこの値をレートにかければ、半音上げることができるだろう。割れば半音下がる。何回も繰り返し、他の楽器と比較して、正しいと思うレートになるまで頑張る。このときは、約9550になるだろう。
  (私の場合は、パソコンのそばにピアノがあったので、そのピアノの真ん中のC(ド)の音に合わせるようにチューニングしていました。適当にやっても、かなり正確になりました。計算は面倒なので、家に何か楽器があれば便利かと思います。)


☆トーン/ドラムを選ぶ

 FFVのプレリュードは全てパーカッションではないので、そのままトーンにしておく。

☆プログラムナンバーを選ぶ

  曲を変換するとき、ここが難しいところである。しかし、この曲については簡単で、行番号64〜66の使用する楽器は、47(ハープ)41(ストリングス)74(フルート)だ。

☆出力ボリューム

 多くのスクウェアのソフトの曲は、ボリュームが小さすぎる。この値でいくと、私のRolandSCC−1ではうまくいったが、他のデバイスについてはよく分からない。(44,55,60) 

☆包囲効果変換(Env.log)

 あなたのMIDIデバイスはこれらの楽器のためにADSRでつくられているはずである。Ignoreのままにしておこう。

【MIDI変換データの例】


FINAL FANTASY V 「プレリュード」
レート Tone/Drum P.ナンバー B.ナンバー Amp Env.log
64 9578 Tone 47 0 45 Ignore
65 9550 Tone 49 0 55 Ignore
66 8372 Tone 74 0 60 Ignore


聖剣伝説2 -SECRET OF MANA- 「未知への飛行」
レート Tone/Drum P.ナンバー B.ナンバー Amp Env.log
32 ** Drum 1 36 18 Ignore
33 ** Drum 1 38 16 Ignore
34 ** Drum 1 42 11 Ignore
35 ** Drum 1 46 11 Ignore
36 14070 Tone 49 0 45 Ignore
37 6297 Tone 2 0 36 Ignore
38 9425 Tone 76 0 38 Ignore
39 100964 Tone 37 0 29 Ignore
40 18750 Tone 69 0 37 Ignore
41 14210 Tone 64 8 44 Ignore
42 37674 Tone 13 0 42 Ignore

→コンテンツに戻る



6.デバッグモード

 私はもっと性能の良いデバッガをつけるべきだったと思うが、もしあなたがSPCが何をしているか知りたい、もしくはそのデータを変更したい時は、このモードを使えばいい。
 デバッグモードでは、音声出力は使用できない。


6−1:デバッグモードについて

・次の命令をエミュレートする/エミュレートを止める(シフト+F7)
 設定後、ブレイクポイントを指定しなさい。

・デバッグモードの終了(Esc

・逆アセンブル(Alt+F3
 変換後、分解された全ての命令はSPCList.txtに書き込まれる。変換はデバッグモードを終了したときにのみ停止する。

・値の変更(左クリック
 アップカウンターとアウトポートを除くスクリーン上の全ての値は変更可能である。値はHEX(16進数)で示される。

・メモリーロケーションの設定(右クリック
 メモリーロケーションを設定すると、ロケーションを変えた値までエミュレータを起動させる。設定はSPC、DSPRAMのどちらの値にも通用する。しかし、1つの時間に設定できるのは1つだけである。

・ブレイクポイントの設定
 ブレイクポイントを設定することにより、パソコンがブレイクポイントを設定した値までエミュレータを起動させる。

・アウトポートの設定(0〜3
 アウトポートの内部で、押したキーに対応する値の時間を設定する。

・タイマー設定(Alt+0〜2
 タイマー【$FA-FC】に対応する時間を設定する。

・カウンター設定(Ctrl+0〜2
 カウンター【$FD-FF】に対応する時間を設定する。

・カウンターレジスタの設定(4
 コントロールレジスタ【$F1】の時間を設定する。

・DSPアドレスの設定(5
 DSPアドレスポート【$F2】の時間を設定する。

・DSPデータの設定(6
 DSPデータポート【$F3】の時間を設定する。



6−2:SPC700の内部構造

 スクリーンは次に述べる7つのウィンドウから構成されている。

<1>逆アセンブルウィンドウ
 このウィンドウは実行されるべき命令の分解値を、以前の命令に習って表示していく。これは、最初の欄にプログラムカウンター、2番目にニーモックとオペランドに従うOPコードを持つ典型的な逆アセンブラである。メモリー参照の命令は、指示する値とポインタを含むコメントに従っている。このウィンドウ内は変更不可能である。

<2>レジスタウィンドウ
 6CPUレジスタとタイマーアップカウンターレジスタがある。CPUレジスタは変更可能である。

<3>ダイレクトページ0&1
 ダイレクトページはRAMの最初の512バイトである。そのうちページ0の240バイト【0-$EF】は、一般に変数として用いられる。最後の16バイト【$F0-$EF】は機能レジスタとして配置されている。

・このウィンドウの解説

【F0】:使用しない。

【F1】:コントロールレジスタ
 タイマーのオン/オフ、インポートのリセット、ROMへのコントロールアクセスに使用される。

【F2】:DSPアドレス
 DSPRAMへの指示

【F3】:DSPデータ
 【F2】で指定したDSPRAMの値。この値を変えることによってDSPエミュレータには直ちに変化が見られるだろう。

【F4-F7】:0〜3までのポート
 ここはデータがコンソールから受け取られる場所である。もちろん、SPCToolにはコンソールエミュレータが取り付けられていないので、この値を変えてはいけない。しかしながら、伝達をシミュレートするためにこの値を変えることはできる。例えば、「キャッスルバニアW」はポート0をサウンドエフェクトの再生の信号用に使っている(驚くべき事に、ポート0のナンバーはゲームのスクリーン上で、それらのオプションと同時に起こる)。

【F8-F9】:使用しない

【FA-FC】:タイマーレジスタ0〜2
 SPC700には3つのタイマーがある。1つめ、2つめは8kHzで、3つめは64kHzで動作する。3つのタイマーは何らかの形で使用されるが、一般的に曲のテンポに使われる。この値を変えれば、曲のスピードを変えることができるだろう。

【FD-FF】:カウンター0〜2
 アップカウンターの値は、タイマーレジスタの値と同様に、増やすとカウンターの値が増える。これらのレジスタはRAMのプログラムによって、はじめから再生するたびにリセットされるので、変更した値を保存することはできない。(テンポを変えた状態でのDSP変換はWAV、MIDIともに可能です。)

 次のページのメモリはスタックに使用され、かつデータも含まれている。現在のSPによって指定されているバイトは、明るく目立つように表示されるだろう。全ての値は変更可能である。

<4>ベクトルテーブル
 このウィンドウのディスプレイは、最後の64バイトのメモリである。ここのメモリは、コンソールからブロックデータを移すときに使われる容量の小さいプログラムと、サブルーチンのためのベクトルテーブルの両方を含んでいる。全ての値は変更可能である。

<5>DSPレジスタウィンドウ
 おのおののチャンネル状態を管理するためのDSPによって、128バイトのメモリが使用される。


チャンネルステータス
レジスタ R/W ステータス
*0 R/W 左ボリューム -128〜127
*1 R/W 右ボリューム -128〜127
*2,*3 R/W 再生レート 1〜16383(4096が32KHz)
*4 R/W ウェイブフォーム 0〜255
*5,*6,*7 R/W 包囲効果変化 *
*8 R 包囲効果の高さ 0〜127(0のときはADSRモードではない)
*9 R ウェイブアウト -128〜127


グローバルステータス
レジスタ R/W チャンネルステータス
0C R/W 左ボリューム -128〜127
1C R/W 右ボリューム -128〜127
5D R/W ウェイブテーブル情報を含むページ 0〜255
6C R/W ノイズ振動数 0〜31
2C R/W エコー左ボリューム -128〜127
3C R/W エコー右ボリューム -128〜127
0D R/W エコーフェードバック -128〜127
6D R/W エコー開始ページ 0〜255
7D R/W エコーディレイ 0〜15(0〜240ミリsec)
0F-7F R/W エコーFIRフィルタチップ -128〜127

スイッチステータス
レジスタ R/W チャンネルステータス
4C R/W キーON 0〜7ビットが1〜8チャンネル
5C R/W キーOFF 0〜7ビットが1〜8チャンネル
7C R エンドブロック (リセットを書き込む)
2D R/W ピッチ変動 on/off
3D R/W ノイズ on/off
4D R/W エコー on/off

 どの設定も直ちにDSPエミュレータに影響するだろう。

<6>分析(アナライズ)ウィンドウ
 これらはデバッグに使用され、SPC700の一部ではない。

<7>アウトポート
 データはコンソールに送られる。
【watch】:メモリのこの位置が変化したとき、エミュレーションを止める。
【break】:PCがこの値に等しくなったらエミュレーションを止める。
 アウトポートの値は変更することはできない。

→コンテンツに戻る



−−付録−−

A:欠けている特徴と現在わかっているバグ

・DSP
(+)エコーボリュームはMIDIに変換されない。(MIDIにおけるリバーブのこと)
(+)変換はカウンター0の時にのみ行われる。
(−)変換はキーON信号の後のピッチ変化を検知できない。(アルペジオ、ポルタメント、レガートの効果は変換されない)
(−)アタック/ディケイ時間がとても短い。もしくは出力サンプルレートが32kHzより小さいときは包囲効果変換は不正確である。
(−)BRR圧縮はまだ完全ではない。

・CPU
(−)スターオーシャンのSPCファイルのソースディレクトリは壊れている。
(−)16ビットでは全ての検知が働かない。
(−)BRK命令は実行されない。
(−)逆アセンブルは一部のOPコードを誤って解読するかもしれないが、エミュレートは正確に行われる。

・メイン
(+)リアルモードでプログラムされていて、多くの送信や無効化区分を行うことができる。
(+)一部の8ビットサウンドカードは、ハイスピードDMAモードに固定される。
(+)フルスピードエミュレーションは時々クラッシュする。
(+)コンフィグはセーブされない。
(+)ファイルはGUIと共にロードされない。
(+)ダンプされた日付とプログラムは変更できない。
(+)日本語のセットは不完全である。
(+)VU計算がベースラインの強い方で行われる。曲がDCオフセットを無効にしているときはバーは間違った情報を表示する。
(+)スクロールバーは終わっていない。
(+)BRR検索は改良できない。
(+)BRR検索モードはプログラム中である。
(+)エラーメッセージは表示されない。何かが働かないときは、それは・・・働かない。
(+)マウスカーソルはスクリーンの一部(外枠のところ他)で消える。(機能はしている)
(−)ビデオカードの一部は表示プログラムに使われる。
(−)Pgup/Pgdownは一部のキーボードでは働かない。
(−)新しいスクリーンルーチンは、リドローの問題を引き起こす可能性がある。

 他は省略する。



B:更新履歴

Ver.0.61【2000/3/25】
(+)SNESAmpとWinampのプラグインを加える。
(−)メイン:ハイスピードDMAモードのクラッシュを改善。
(−)メイン:インポート時における楽器のループヒットの配置をなくした。
(+)DSP:非インテルCPUのためにMMXサポートを加えた。
(−)DSP:WAVヘッダのバグを直す。
(−)DSP:エコーがうるさすぎた。
(−)DSP:エコーの減衰が速すぎた。

Ver0.6【2000/2/29】

(+)メイン:コマンドラインを改善。
(+)メイン:GUIを再生専用モードで使用しなくなる。
(+)メイン:不完全だがJIS−X0201言語セットを加える。(誰か情報/文字マップを持っていたらメールをください。)
(+)メイン:スクリーンを大きくする。(直った問題もあるが、新しい問題も生まれた。)
(+)メイン:使用できないボタンを隠す。
(+)メイン:サウンドカードを一時的に使用不可能にする。
(+)メイン:マウスによりチャンネルミュートを選択可能にする。
(+)メイン:前面のtildeキーを使えるようにする。
(+)メイン:ウェイブオプションにプログラムナンバーに対応するGM楽器を加える。
(+)メイン:ウェイブフォームオプションをマウスで変更可能にする。
(+)メイン:ウェイブフォームオプションを終了時にセーブできるようにする。
(+)メイン:WAV出力がカスタマイズされる。
(−)メイン:ローダがID666タグを正確に読みとる。
(−)メイン:ファイルが他のディレクトリから読み込まれたときの主なバグを直す。
(−)メイン:16ビットDMA変換が駐在している。【1000:FFFF】
(−)メイン:8ビットのサウンドカードのDMAルーチンを書き直す。
(−)メイン:8kHzのミキシングを働かせる。
(−)メイン:ダイアログボックスのOKボタンを押したときの主なバグを直す。
(+)DSP:挿入ルーチンをオプションにつける。
(+)DSP:FIRフィルタをオプションにつける。
(+)DSP:ミキシングルーチンを、再分割をなくしてダイナミックに作り直す。
(+)DSP:ベースラインで終わらない次第に細くなる楽器のサンプル音の挿入ルーチンを改良する。(スターフォックスにも対応)
(+)DSP:ピッチ変化を256倍以上にする。
(−)DSP:使用していないチャンネルボリュームが楽器に影響しない。
(−)DSP:エコーボリュームがマニュアルモードに対応。(SBownerに対応)
(−)DSP:ADSRがさらに正確になる。
(−)DSP:曲がったラインは検知されない。
(−)DSP:ライナーがオーバーフローしない。
(−)DSP:ノイズジェネレータが少しランダムになる。
(−)DSP:BRR圧縮法3がよく稼働する。(ToyStoryでもノイズが少ない)
(−)DSP:ピッチ変換の時のバグを直す。
(−)DSP:CubicSpline使用時のバグを直す。
(−)DSP:エコーがMMXコードで働く。(MMXは現在は使用可能)
(−)DSP:16ビットステレオ以外では、出力はより正確に変換される。
(−)DSP:MIDI変換時につくられる一時的ファイルは削除される。
(+)CPU:カウンター加算を取り除くための機能を付ける。(約25%のオーバーロール過程でスピードアップする。)
(+)CPU:OPコードハンドルとショートカットポジションを並べた段落を加えた。
(+)CPU:デバッガに変換トレースオプションを加えた。
(−)CPU:ランダムにクラッシュし、ヴォーテクスがフリーズする16ビットメモリチェッカーのバグを直す。
(−)CPU:PCALLは右の位置に飛ぶ。(Terranigmaは入っていない)
(−)CPU:STOPとSLEEPは実際CPUを止める。

Ver.0.5【2000/1/26】初β版
Ver.0.1【1999/12/13】初リリース




C:クレジット(協力者) 

 次の協力者に感謝する・・・

SNES9Xチーム:OPコードのハンドリングとDSPのほとんどとバグ発見に協力
Butcha   :ZSTとBRR、ADPCM圧縮法の情報提供
OpenCPチーム:CubicSpline、インターポレーションルーチンの提供
VLA      :アセンブリの情報提供と、モードXとDMAコントローラの提供(大変感謝している)
ZSNESチーム :SPC提供
Zophar's Domein  :SPCテストファイルの提供とこのプログラムの紹介
Datschge :バグ、提案等の提供
 そして、eメールでサポートしてくれた全ての人に感謝する。



D:作者への連絡

 SPCToolについてのコメント(”なぜ私のサウンドカードでは動かないのか”というような質問は含まない)があれば、eメールを送ってほしい。なるべく全て読むようにしているが、フルタイムの仕事と学校が私の自由な時間を削っているので、ご了承を・・・

メール:antires@aol.com
Web:Alpha-II Productions


E:GMプログラムリスト

 下の表はGM(GeneralMIDI)のプログラムリストである。音源によっては他のバンクを使って楽器を加えることができるだろう。それについては、その音源付属の詳しいドキュメントを参照してほしい。
(ドラムテーブルのノートは、その楽器をトーンに置き換えたときのものを示しています。ナンバーは、トーンはプログラムナンバーに、ドラムはバンクナンバーにそれぞれ対応しています。)

トーンテーブル
ピアノ ベース リード(木管) SFX
1
2
3
4
5
6
7
8
ピアノ1
ピアノ2
ピアノ3
ホンキートンク
エレクトリックピアノ1
エレクトリックピアノ2
ハープシコード
クラビコード
33
34
35
36
37
38
39
40
アコースティックベース
フィンガーバス
ピックベース
フレットレスベース
スラップベース1
スラップベース2
シンセベース1
シンセベース2
65
66
67
68
69
70
71
72
ソプラノサックス
アルトサックス
テナーサックス
バリトンサックス
オーボエ
イングリッシュホルン
ファゴット
クラリネット
97
98
99
100
101
102
103
104
アレスレイン
サウンドトラック
クリスタル
アトモスフィア
ブライトネス
ゴブリン
エコードロップ
スターテーマ
音階パーカッション オーケストラ(単) 民族楽器
9
10
11
12
13
14
15
16
チェレスタ
グロッケン(鉄琴)
オルゴール
ビブラフォン
マリンバ
シロフォン(木琴)
チューブラベル
サントゥール
41
42
43
44
45
46
47
48
バイオリン
ビオラ
チェロ
コントラバス
トレモロストリング
ピッチカートストリング
ハープ
ティンパニ
73
74
75
76
77
78
79
80
ピッコロ
フルート
リコーダー
パンフルート
ボトルブロウ
尺八
ホイッスル
オカリナ
105
106
107
108
109
110
111
112
シタール
バンジョー
三味線

カリンバ
バグパイプ
フィドル
シャナイ
オルガン オーケストラ(複) シンセリード パーカッション
17
18
19
20
21
22
23
24
オルガン1
オルガン2
オルガン3
チャーチオルガン
リードオルガン
アコーディオン
ハーモニカ
バンドネオン
49
50
51
52
53
54
55
56
ストリングス
スローストリングス
シンセストリングス1
シンセストリングス2
コーラス"Ah"
ボイス"Oh"
シンセボックス
オーケストラヒット
81
82
83
84
85
86
87
88
スクウェアウェイブ
ソーウェイブ
シンセカリオペ
チファーリード
チャラング
ソロボックス
5度ソーウェイブ
バス・リード
113
114
115
116
117
118
119
120
ティンカーベル
アゴゴベル
スティールドラム
ウッドブロック
太鼓
メロディタム
シンセドラム
リバースシンバル
ギター ブラス(金管) シンセパッド 効果音
25
26
27
28
29
30
31
32
ナイロンギター
スティールギター
ジャズギター
クリーンギター
ミューティッドギター
オーバードライブギター
ディストーションギター
ギターハーモニクス
57
58
59
60
61
62
63
64
トランペット
トロンボーン
テューバ
ミュートトランペット
ホルン
ブラスセッション
シンセブラス1
シンセブラス2
89
90
91
92
93
94
95
96
ファンタジア
ウォームパッド
ポリシンセパッド
スペースボイス
グラスハーモニカ
メタルパッド
ハローパッド
スウィープパッド
121
122
123
124
125
126
127
128
ギターフレットノイズ
ブレスノイズ
波の音
鳥の声
電話
ヘリコプター
拍手
銃声

ドラムテーブル
オクターブ1 オクターブ3 オクターブ5
24
25
26
27
28
29
30
31
32
33
34
35
*
*
*
+33
+32
+31
+30
+29
+28
+27
+26
+25



ハイQ
スラップ
DJスクラッチ(押)
DJスクラッチ(引)
スティック
スクウェアクリック
メトロノームクリック
メトロノームベル
キックドラム(低)
C
C#
D
D#
E
F
F#
G
G#
A
A#
B
48
49
50
51
52
53
54
55
56
57
58
59
+12
+11
+10
+9
+8
+7
+6
+5
+4
+3
+2
+1
トム(高)
クラッシュシンバル(低)
トム(最高)
ライドシンバル(低)
ドラ
ライドベル
タンバリン
スプラッシュシンバル
カウベル
クラッシュシンバル(高)
ビブラスラップ
ライドシンバル(高)
C
C#
D
D#
E
F
F#
G
G#
A
A#
B
72
73
74
75
76
77
78
79
80
81
82
83
-12
-13
-14
-15
-16
-17
-18
-19
-20
-21
-22
-23
ホイッスル(長)
ギロ(短)
ギロ(長)
クラベス
ウッドブロック(高)
ウッドブロック(低)
ミュートクイカ
オープンクイカ
ミュートトライアングル
オープントライアングル
シェイカー
ジングルベル
C
C#
D
D#
E
F
F#
G
G#
A
A#
B
オクターブ2 オクターブ4 オクターブ6
36
37
38
39
40
41
42
43
44
45
46
47
+24
+23
+22
+21
+20
+19
+18
+17
+16
+15
+14
+13
キックドラム(高)
サイドスティック
スネアドラム
ハンドクラップ
スネアドラム(タイト)
トム(最低)
クローズハイハット
トム(低)
ペダルハイハット
トム(中)
オープンハイハット
トム(微高)
C
C#
D
D#
E
F
F#
G
G#
A
A#
B
60
61
62
63
64
65
66
67
68
69
70
71
0
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
ボンゴ(高)
ボンゴ(低)
ミュートコンガ
コンガ(高)
コンガ(低)
タンバール(高)
タンバール(低)
アゴゴベル(高)
アゴゴベル(低)
カバサ
マラカス
ホイッスル(短)
C
C#
D
D#
E
F
F#
G
G#
A
A#
B
84
85
86
87
88
89
90
91
92
93
94
95
-24
-25
-26
-27
*
*
*
*
*
*
*
*
ベルツリー
カスタネット
太鼓(ミュート)
太鼓(オープン)








C
C#
D
D#
E
F
F#
G
G#
A
A#
B
±のついた青数字はトーン出力時の音程比です。詳しいことは別項で解説するつもりです。


→コンテンツに戻る