2017年8月12日土曜日

Raspberry Pi 用 I2S Audio I/O (PIAiF / Dm9 Records) を Fs=96kHz で使う

PIAiF by Dm9 Records を Fs=96kHz で使う

Dm9 Records さんが設計・公開している Raspberry Pi 用 Audio I/F PIAiF で色々実験をしています。PIAiF は、Raspberry Pi 内蔵の CODEC よりも断然音がよく、また、Raspberry Pi の子基板として載せてもサイズがぴったりで邪魔になりません。さらに、延長ピンヘッダが実装されているので、ピンヘッダが占有されず、LCD など他のデバイスを併用することができます。


この PIAiF に搭載されている CODEC チップの WM8731 は、最大 24bit/96kHz で動作する CODEC なのですが、当初はうまく動作しませんでした。Fs=96kHz に設定した自作シンセでは、音が鳴るのですが再生音がおかしくなってしまいました(ピッチが高くなる)。96kHz の WAV ファイルを aplay コマンドで再生した場合も、同様にピッチがおかしくなりました。この時、私の Raspberry Pi の環境は、
  • Raspberry Pi 3
  • Raspbian GNU/Linux 8 (jessie)
  • Kernel version 4.4.50-v7+
でした。

色々調べてみると、どうやら、CODEC ドライバのカーネルモジュールの rpi-proto に問題があるようで、Fs=48kHz 以外の、32kHz や 96kHz に設定する際に、BCLK ratio の設定値が適切に設定されていないようです。こちらの記事に、この問題に関しての言及があります。そこで、記事にある通り、こんな感じのパッチを当て、Fs を変更した時に、適切に BCLK ratio が設定されるように修正した上でカーネルモジュールをリビルドし、標準のカーネルモジュールと差し替えたところ、96kHz 出力でも正しいピッチで音が鳴るようになりました。

ただし、Fs 変更直後に音が出ない(または再生ピッチがおかしくなる)という問題がまだ起きています。この場合は、再度(Fs 変更せずに)再生を開始すると正常に音が鳴るようになります。この原因がどこにあるのかはまだ掴めていません。しかし私の用途では、Fs=96kHz でシンセを動作させられれば大満足なので、これ以上の調査は進めていません。

この PIAiF、Line out & Headphone out だけでなく、Line in も用意されていますので、エフェクタを作りたい向きにもちょうどいいのではないでしょうか。なお、Fs=48kHz で使うのであれば、上記のような細工をする必要はなく、PIAiF を Raspberry Pi にマウントし、/boot/config.txt へ "dtoverlay=rpi-proto" の一行を追記するだけで使えます。このような、便利な DAC/ADC が Raspberry Pi で使えるのは、シンセビルダ/エフェクタビルダにとってはとてもありがたいことですね。

2017年8月7日月曜日

Maker Faire Tokyo 2017 に出展してきました

Maker Faire Tokyo 2017 に出展してきました

先日の 告知通り、Maker Faire 2017 に出展してきました。今年は、東京ビックサイトの東7-8ホールという、正門から一番遠い場所にある会場でした。


Raspberry Pi を使って、電子楽器用のシンセサイザ音源を作り続けて 3 年目。去年までは、音源に音色変更用のボタンをつけただけのものでしたが、今年は音色エディット用のパネルの製作に挑みました。

パネルにノブを並べるだけではありきたりなので、長年あたためていたアイデアである、ノブと EG セグメントの対応が直感的にわかる UI、という仕掛け組み合わせて、初めてシンセを触る人でも簡単に音作りのコツが掴めるシンセサイザの実現を目指しました。またもう一つ、こちらも長年やりたいと思っていた、ヤマハ DX1 のアルゴリズム表示部を再現するという試みも行いました。

EGの遷移に合わせて光るノブ

FM音源では、オペレータごとに用意されている多数の EG(エンベロープジェネレータ)を簡便にエディットできるようにすることが簡単に音作りできるようにするためのポイントなので、まずはこれをノブで操作できるようにしました。また、今回開発したシンセサイザでは、発音させると、EG の遷移に合わせて、対応するノブが点灯するようになっており、どのノブがどの位置のエンベロープを変化させるのかが容易にわかるようになっています。EG のパラメータは、必要最小限に絞ることにより、少ないノブで必要十分な表現ができるよう工夫してあります。


7セグメントLEDを使ったアルゴリズム表示部

もう一つのチャレンジが、ヤマハの FM シンセサイザー DX1 の、アルゴリズム表示部を復刻する試みです。アルゴリズム表示部が 7 セグメント LED をマトリックス状に並べて、レイアウトに合わせて必要な部分が点灯するという、贅沢な仕様でした。以前に NAMM Show に出展されていた現存の 1 台を見たことがありますが、見た目は(現代のシンセに比べれば)地味ながらも個人的には大興奮した一品です。これを自作で復刻したというわけです。


また、この 7 セグメント LED は、タッチセンサとして機能するようにもなっており、タッチしたオペレータのパラメータを LCD 上に呼び出すことができます。こちらの動画でその動作の様子を見ることができます。仕組みは、タッチセンサの周りに銅箔テープを貼り、それを電極として静電容量を検出しスイッチとして作動させるというものです。原理試作ができるまではうまくいくか心配でしたが、意外にもすんなり動作しました。こんな簡単な方法でもスイッチを作れるので、今まで見たこともない部品との組み合わせで操作子を作れるかもしれませんね。

これから

まだまだ荒削りですが、徐々にシンセの中身が揃ってきましたので、次は、筐体を作ってみたいと思っています。基板むき出しなのが今ひとつなので、アクリルで上面だけでも仕上げたいと考えています。また、今回はユニバーサル基板とポリウレタン線を使った工作でしたが、そろそろ配線作業に限界を感じ始めたので、安価になって手を出しやすくなったプリント基板製作にもチャレンジするつもりです。

ブースにご来場いただき説明を聞いてくださったみなさま、また、会期中に交流させていただいた出展者のみなさま、楽しい時間をありがとうございました。

関連リンク



2017年8月4日金曜日

Maker Faire Tokyo 2017 に出展します

Maker Faire Tokyo 2017 に出展します

今年 (2017) も、8/5〜8/6 に開催される Maker Faire Tokyo 2017 に、いつもの奇楽堂さんと一緒に作品を展示します。今年の出展物は、Raspberry Pi に 4 オペレータの FM ソフトシンセを仕込んで、音色エディット用のパネルをつけた "Raspberry Op.4" です。

デモムービーをアップロードしましたのでご覧ください。



当日会場に来られる方は、お時間があればブースに遊びに来てください。奇楽堂&Company I-02-02 にいると思います。



2017年1月11日水曜日

METEX P-10(通称:秋月テスター)を PC へ繋げるように改造した

かれこれ 10 年くらい、秋月で買った METEX P-10 を愛用しています。安価ながらオートレンジで、かつコンパクトなのが便利です。残念ながら、今はもう販売していないようです。

METEX P-10

このテスターに内蔵されているチップには、LCD に表示されている値を、シリアル出力する機能がついています。METEX P-10 ではこの機能は使われていませんが、簡単な改造で使えるようになります。指示値を取り出せるようになると、データロガーとして使えます。すでに、このような改造をされた方は多くいて、"METEX P-10 改造" で Google 検索するとたくさん製作例が出てきます。私も、これら先例を参考に、手元の P-10 を改造してみました。

まず、本体を分解します。電池カバーを開けてボタン電池を取り外し、裏側から 4 本のネジを外します。電池カバーを止めるネジと、ケースを止めるネジは、それぞれ違うものが使われていますので混同しないように注意しましょう。分解作業で特に難しいところはありません。

樹脂のツメで基板に固定されている LCD を取り外すと、チップ(FS9711_LP3) が見えます。このチップの、84 番ピン(ENTX) を GND に落とすと、シリアル出力機能が有効になります。シリアル信号は、64 番ピン(TXD) から出力されます。チップのデータシートは、こちらから入手できるようです。

64 番ピンと 84 番ピンをジュンフロン線で引き出します。
64番ピン(TXD)と84番ピン(ENTX)をジュンフロン線で引き出す

さらにテスターの Vdd と GND を引き出します。Vdd は、C2 のプラス側から引きました。テスターのスイッチを入れた時だけ、ここに電源電圧がかかります。GND は、ピエゾの黒から引きました。
airvariable さんの作例だと、ピエゾの赤から引いてるのですが、私の手元にあった P-10 はバージョン違いなのか、ピエゾの黒が GND になっていました。

Vdd と GND を引き出す

信号と電源を基板から引き出したら、ケースに小さな穴を開けて、引き出した 4 本の線を、本体右側にあるプローブを格納するスペースに引き出しました。このスペースは、プローブを収めるにはわずかに高さが足りてなくて、うまくプローブが入りません。そのため、このテスターを購入してから一度もここにプローブをしまったことはありません。今回は、この空間に、PC 通信用の回路を収納します。

ケースを閉じて電源を入れてみます。ENTX と GND をショートすると、LCD に "RS232" の文字が現れます。

"RS232" の表示が LCD に出る

この状態で TXD をオシロで見ると、それらしい信号が出ていました。そこで、秋月の USB シリアル変換モジュール を使って PC に接続し、Ts Digital Multi Meter Viewer で指示値を受信できるか確認しました。Ts Digital Multi Meter Viewer では、テスターの機種設定を "WENS 20T" に設定します。機種を設定後、ツールバーの "CONNECT" ボタンを押すと通信が始まります。

回路の動作確認、指示値を PC で受け取ることができた

ブレッドボード上で動作確認ができたので、ユニバーサル基板に回路を組みます。シリアル出力の有効・無効を切り替えるため、ENTX-GND 間をショートするスイッチをつけました。また、テスター側の回路と、PC 側(USB シリアル変換モジュール)の回路の間は、フォトカプラ (SHARP PC817) で絶縁しました。

随時動作確認しつつ、完成した基板をケースに収めます。テスターの基板から引き出した線が(作業の都合で)長く残ってしまったのですが、どうせこのスペースは他に使い道もないので、マスキングテープで雑に止めて処理します。また、USB ケーブル抜き差しで基板が動かないよう、ホットボンドで固定しました。

USB-シリアル変換回路をケースに収めた

USB 端子が出てくるあたりでケースに穴を開けました。穴が大きすぎました。もっと小さな穴でよかったようです。

ケース側面に穴をあけて、USB 端子にアクセスできるようにした

最後の動作確認を行います。ケースを閉め、ケースにあけた穴から USB ケーブルを差し込み、PC と繋ぎました。Ts Digital Multi Meter Viewer で LCD 指示値を受け取り、指示値の時間変化がグラフで描画されています。ケースのスリットから USB シリアル変換モジュールのパイロットLED(やたら明るい)が覗いています。改造感が漂います。

すべて組みあがったあとに PC に接続して動作確認

この改造に使った部品は以下の通りです。
  • 秋月の 超小型 USB シリアル変換モジュール, 600円
  • フォトカプラ PC817, 50円
  • カーボン抵抗 330Ω, 4.7kΩ(手持ちの部品から)
  • ユニバーサル基板(なにかの切れ端)
製作例を公開してくださった皆様に感謝します。この作例では、念のためテスターからの信号をフォトカプラで絶縁しましたが、それでも、このように改造をしたテスターを高電圧回路の測定に用いるのは、避けたほうが賢明でしょう。