CASIO FZ-1というサンプラーがあります。1987年に発売された日本初の16bitサンプラーです。その前年、1986年に発売されたRoland S-50というサンプラーがあります。こちらは12bitサンプラーです。
いずれも30年くらい前に中古で購入しましたが、当時はS-50を使用しており、FZ-1はあまり使用しませんでした。FZ-1はS-50にはないグラフィック液晶を搭載しており、本体で波形を見ながら操作することができますが、S-50はPC-98シリーズのモニタに繋いで波形を見ながら操作することが可能だったため、S-50の方が圧倒的に使い易かったのです。
いずれもでかくて重い(S-50は13kg、FZ-1に至っては17.5kg)ため外に持ち出したことは無く、家の中でセットアップするのも大変なため、両機とも20年以上は眠ったままです。
そんな思い出があるサンプラーですが、当時貯めていたFZ-1のデータが大量に保存されたCD-Rを帰省時に発見したのでした。
このデータ使いたいな。と、思ったのでコンバータを作った話です。
FZ-1とS-50のハードウェア概要
サンプラーとして気になるハードウェア構成を予め確認しておくと、以下の通りです。
FZ-1
- 量子化ビット数: 16
- サンプリング周波数: 36kHz, 18kHz or 9kHz
- 16bit ADC EMK-MA6208*1を採用
- 16bit 4ch DAC PCM54HPを2つ使用して8パラアウトを実現(MIX OUT及びヘッドフォン出力は8パラを混ぜたもの)
- DCFにMB87186*2を採用
- DCFはLPFのカットオフ周波数と、レゾナンスを動的に変更可能で、DCAも内包している
- FZ-1のAmp/Filter EGはデジタルドメインで処理されるのではなく、D/A変換後にこのチップで適用される
- CPUはNEC V50(uPD70216G)を採用
- 入力音はカットオフ周波数14kHzのLPF(AL305)を経由してからD/A変換
- サンプリング周波数18kHz or 9kHz時は14kHzのLPF通過後に、通常はパラアウト8に適用されるDCFを経由してからD/A変換(この時のDCFのカットオフ周波数は9kHz or 4.5kHz)
蛇足ながらドイツではHOHNER社(Clavinetの開発元*3 )がHS-1という型番でFZ-1の外装を白くしたOEMモデルを販売していたそうです。
S-50
- 量子化ビット数12
- サンプリング周波数: 30kHz or 15kHz
- 16bit DAC EHK-MD6209を採用
- 専用のADCを持たず、DACで生成した基準電圧と逐次比較を行いA/D変換を実現する回路構成
- CPUはintel i8095-90を採用
- 入力音は(サンプリング周波数に依らず)カットオフ周波数12.5kHzのLPF(TFB-3)を経由してからD/A変換
FZ-1はあらゆるサンプリング周波数でナイキスト周波数以下の信号成分を除去するための工夫が施されていますが、S-50にはそのような回路は見当たりません。つまり、サンプリング周波数15kHz時は折り返し雑音が生じてしまうことになります*4。
また、FZ-1, S-50両機ともにサンプリングのためのA/D変換回路のキーデバイスに旧松下製らしき半導体を使用しています。現Panasonicは既に半導体事業から撤退しており、システムLSIなど品種ごとに各社に事業売却されていますが、DACやADCがどこの事業会社に売却されたのかは定かではありません。データシートなども見当たらず、互換品の類もありませんので、MA6208やMD6209が壊れてしまうと修理不可能です。その他、一般に流通していないMB87186などの半導体も壊れると修理は事実上不可能となります。
FZ-1とS-50のストレージ
両機ともに内蔵FDDにデータを記録することができました。
- FZ-1は本体RAMが256KbitのMN41256-08を32個で合計1MB
- 2HDの3.5inch FDを採用
- S-50は本体RAMが256KbitのM5M4256L-12を24個で合計768KB
- 2DDの3.5inch FDを採用
YAMAHA TX16WなどのFDはDOSフォーマットのためPCで読むことも出来た*5ようですが、FZ-1やS-50はそうではありません。特殊フォーマットのため、PCのFDDに突っ込んでも読めません。
では、どうやってPCでデータ管理していたかというと…。
FZ-1とS-50のデータをPCで管理
FZ-1はPCと専用ケーブルで接続し、転送したデータを保存するFZDUMPというユーティリティがあり、そのファイルフォーマットに*.fzf(Full data), *.fzb(Bank data), *.fzv(Voice data)という形式が使用されていました。FZDUMPを使用しなくても、FZ-1のディスクイメージを取得し、FZDUMPの出力フォーマットに変換するユーティリティも存在しました。
S-50はディスクイメージをそのまま保存した*.OUTというファイルでPCで保管することが出来ました。
このようにして、両機ともに一応はPCにデータ保存できるのですが、PCでそのデータを活用することが考えられているわけではありませんでした。
というわけで、*.fz?や*.OUTから波形データそのものと、ループポイントなどのメタデータを抽出してWaveファイル化してしまえば、現代のソフトウェアサンプラーで過去のデータが利用できるという目論見でコンバータを作ることにしたのでした。
FZ-1のデータフォーマット概要
*.fz?形式のデータフォーマットは検索したらそれらしい情報が見つかりました*6。また、波形データ自体のフォーマットはSigned 16bit little-endianで記録されていますので、メタデータの保持方法と、各データの存在するアドレスが判れば難なく変換可能です。検索すると、メタデータの保持方法を含む開発者向けドキュメントが見つかったので、助かりました。
S-50のデータフォーマット概要
*.OUT形式は単なるディスクイメージなのでフォーマット云々というより、FDをどう使っているかを知ることからスタートします。検索してもそれらしい情報は見当たらず完全に自力で調べましたが、結果的にはファイルシステムのような物は存在せず、まるで720KBのRAMを使用するかの如くFDを使用していることが解りました。つまり、先頭にはプログラム本体(OS)が格納され、その後に各メタデータは固定アドレスに存在し、波形データは固有のオフセットアドレス以降に、セグメント単位で配置されています。また、波形データ自体のフォーマットはNth sample上位8bit⇒Nth sample下位4bitとN+1th sample下位4bit⇒N+1th sample上位8bitの順で2つのSigned 12bit/sampleを3byteにして保持していることが解りました。
なお、S-50にはVersion1系とVersion2系のOSが存在しますが、Version2で追加されたSubToneのメタデータはVersion1の未使用領域にうまく配置されるようになっています。SubTone自体は波形データを持たず、OriginalTone(Version1でいうところの単なるTone)の波形に対して異なるメタデータを付与できる機能ですので、波形データ領域の変更もありません(さらにラック版のS-550になるとTVFを搭載しているため、そのメタデータも記録する必要がありますが、これもまたS-50 Version1,2の未使用領域に配置できるように考えられています)。
雑記
鍵盤付きサンプラーはFZ-1とS-50しか使ったことがありませんが、他にもAKAI S2800、Roland SP-808EX、YAMAHA SU-10*7、Zoom ST-224といったサンプラーも使用していました。ZIPドライブを搭載したSP-808には純正ツールでWAVEファイルのインポート/エクスポートが出来た記憶がありますし、スマートメディアを搭載したST-224も非公式ツールでWAVEファイルのインポート/エクスポートができました。S2800は内蔵FDDとSCSI機器が使用できましたが、サードパーティの高価なツールを使わないとWAVEファイルのインポート/エクスポートは出来なかったように記憶しています。ので、Akai用のコンバータも作ります。
以上。
*1:EHK-MA6208表記も混在しておりどちらが正しいのか不明。
*2:FM-1表記のものも同じ物を指していそう。
*3:FZ-1以降もPhaseDistortion音源の最終形態を積んだVZ-1やSpectrum Dynamic音源を積んだHT-3000などカシオ製シンセサイザーをHOHNERにリブランドしたOEMモデルを販売していたようです。
*4:そうは言っても、FZ-1と同じような対応をしようと思っても、そもそもS-50にはTVF無いですからね。
*5:但しファイルフォーマットは独自形式だったようです。
*6:既にコンバータを実装した後の今なら判りますが一部不正確でした
*7:外部ストレージがないため、電源が失われるとデータが消えるSU-10はリボンコントローラで遊ぶ用途くらいにしか活用できませんでした。