注意書き

このページに書かれている内容については一切の保証はありませんし、私を含めて誰もなんにも責任を負いません。その点よろしくです。
master@kani.com / 青木 康雄
Sun Micosystems,Inc.と、そのエンジニアの皆さん、ありがとう。

RICOH DC-1/2 J6S Decoder.

Sun Micosystems,Inc. から public-domain として G.7xx 音声フォーマット相互変換ライブラリの ANSI-C ソースコードがリリースされております。変換可能なフォーマットの中に、G.721 / 32k / 4 bit ADPCM も含まれておりまして、これを利用することにより、RICOH DC-1/2 で採用されている J6S 音声データのデコードが可能です。

ここでは、Sun Micosystems. からリリースされている G.7xx 音声フォーマット相互変換ライブラリを使って、RICOH DC-1/2 の J6S 音声データのデコードを可能にするためのサンプルコードを紹介します。作者は私です。なお、私は Macintosh 上で開発してます。開発環境を参考までに・・・
          PowerMacintosh 8100/100AV
          MW / CW 9 / PPC and 68K / C, C++

サンプルデコーダーの仕様 (以下に紹介するコードで出来た実行コードのこと)

RICOH DC-1/2 で録音された J6S ファイルを標準入力から読み込み、8 bit PCM にデコードして標準出力に書きだす。デコード側の 8 bit PCM は、μ則(デフォルト)、A則、リニアの3つをサポートする。

いるもの

● 開発環境一式
● Sun Micosystems,Inc. G711_G721_G723 変換ライブラリ
  前のページにあるヤツです。
● 私の作ったサンプルCコード「decodej6s.c」
  decodej6s.c.hqx (7,838 byte)
  decodej6s.c (6,026 byte)
これらがそろったら、「G711_G721_G723 変換ライブラリ」の中のソース群のなかの、encode.c と decode.c をハズしまして、その他の以下のファイル
  g711.c
  g721.c
  g723_24.c
  g723_40.c
  g72x.c
  (g72x.h)
と、decodej6s.c をソースファイルとしてコンパイルします。出来た実行コードが J6S 専用のデコーダーです。ほんとは makefile も付ければ親切ってもんですが、私の開発環境に makefile はないし、書き方も忘れたのでごめんです。

現状のソースコードは、Macintosh 用になってます。decodej6s.c の上のほうで、#define がいくつかありますので適当に変えてください。
DSC ヘッダを読むところで、long を使うところがあるのですが、一応リトルエンディアン処理を入れてみましたが動かしてません。Macintosh はビッグエンディアンなので不要なのですが、必要なかたは注意してください。

「G711_G721_G723 変換ライブラリ」気がついた点

Macintosh だけかもしれませんが、違うかもしれません。

68K 用のコードをコンパイルする時、4 byte int でコンパイルしないと音が出ませんでした。2 byte int 処理系では注意が必要です。

参考までに、このコードのデコード時間。私のマシン(601 / 100MHz)ですと、10秒間の J6S のデコードに、2秒ぐらい(アバウトな腕時計測定)。MW / CW 9 で、実行コード最適化してない状態です。フルオプチマイズすれば、1秒切ると思います。

私は Macintosh 上でリアルタイム再生させて遊んでますが、その時は、この関数の中の ReadIn, WriteIn をコールバックにして、WriteIn で 1024 バイトたまったらサウンドマネージャーに非同期で投げる・・・という方法をとってます。ご参考まで。

decodej6s で出来た PCM どーやれば鳴るの?

8 bit (u-law) PCM ってのは極めて汎用的なものなので、各プラットフォームに存在する音声関係のツールでほとんど鳴らすことが可能だと思います。

● Macintosh ですと、SoundMachine, SoundApp などで鳴ります。

● UNIX ですと、BSD/OS についてる sox ってやつで鳴るそうです。
  (Jun-ichiro Itoh <itojun@csl.sony.co.jp> さん実験ありがとう)

● Windows は知りません。

私は個人では、これを AIFF にしてファイル化しております。decodej6s で吐き出されたファイルにヘッダを付けるだけで AIFF になります。これだと Macintosh な人は、QuickTime でそのまま鳴ります(ファイルダブルクリック)。Wave も同じようなもののようです。また、現在、リコーのデジカメを強力にサポートする各種アプリを作ってまして、そのうちリリース予定ですので Macintosh な人はもうちょっとお待ちくだされば、私が作って公開します。シェアウエアかもしれませんけど。

パワー溢れるデベロッパの皆さんは、DC-1/2 をより便利なものにするべく、このコードをパクるなり、自分で考えるなりしてどんどんツールを作りましょう。
RICOH DC-1/2 の画像・音声ファイルについてへ