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Ω(手持ちの部品から)
  • ユニバーサル基板(なにかの切れ端)
製作例を公開してくださった皆様に感謝します。この作例では、念のためテスターからの信号をフォトカプラで絶縁しましたが、それでも、このように改造をしたテスターを高電圧回路の測定に用いるのは、避けたほうが賢明でしょう。

2016年9月6日火曜日

Web Music Hackathon #5 @Tokyo に参加してきました

Web Music Hackathon #5 @Tokyo に参加してきました


少し前の話になりますが、2016/7/30 に Google の東京オフィスで開催された、Web Music ハッカソン #5 に参加してきました。Web のオーディオ関連技術(Web Audio API/Web MIDI API)を使って、面白いものを作ってみようというイベントで、今回で 5 回目になります。私は、このイベントの存在は知っていたのですが、参加するのははじめてでした。

今回のハッカソンでは、「DJ が活用できるツール」というテーマが設けられており、各チーム/個人がそのテーマのもと、一日中ハックを行いました。このイベントの前に、アイデアソン/チームビルディングイベントがあり、すでにチームを構成している参加者は、すぐにチーム開発を開始していました。私はチームビルディングイベントには参加せず、ハッカソンのみの参加でした。

ハッカソンで何を作ったか

このハッカソンイベントで、私は、Trend Sampler(トレンドサンプラー)という、ループサンプラーのようなものを作りました。Trend Sampler は、Google トレンドのキーワードを音声化し、それをステップシーケンサーでループ再生できるというものです。サンプラーといえば、一般的には、録音した(サンプリングした)サウンドを再生するツールですが、Trend Sampler は「インターネット上の話題をサンプリングする」というコンセプトで作ったサンプラーです。

インターネットの面白さは、毎日流れてくる情報が変化していること、また、ある時はその発信者にもなれるところです。Trend Sampler は、楽器の一種でありながら、毎日使える音源が変わり、そしてそれを自分ではコントロールできないところに、インターネットらしさを演出しています。演奏当日に何が出てくるかわからない臨場感を、DJ 側、観客側も味わえるのではないか、と期待しています。

ソースコードは GitHub で公開中ライブデモはこちらです。Mac の Node.js 上で動く Web サーバを起動すると、Google トレンドから最新のトレンドワードを取得し、say コマンドを使ってサウンド化します。Web ブラウザからサーバへアクセスすると、生成された音声データをダウンロードし、ステップシーケンサで設定したタイミングに合わせてサウンドを再生します。

いちおう、このイベントの趣旨でもあるシリアスな DJ プレイに使えるようにと、次のような工夫をしています。
  • Web MIDI API 経由で受信したリアルタイムメッセージ(スタート、ストップ、タイミングクロック)をもとに、再生を外部シーケンサと同期する。
  • クロック同期できない(できるけどめんどくさい)状況に備えてタップテンポで BPM 推定
  • 再生速度設定、再生開始サンプル位置設定で、音声の音素がビートにのるように調整可能(手動)
  • テンポディレイ(お約束)

結果

審査員のみなさまの審査により、発表した15チーム中、3位をいただきました。たぶん、Web Music Developers JP の河合さんがアメリカで買ってきてくれた、Google ロゴの入ったボトルをいただきました、ありがとうございます。プレゼンは機材トラブルであまり上手くいかずちと無念。やはり、音や映像を使ったプレゼンは、リハーサルが重要ですね。

他のチームの様子は、河合さんのレポートが詳しいです。上位入賞が個人ばかりになってしまったのは、今回のような短時間のハッカソンイベントだと仕方ないのかな、と思います。それでもチームで挑み、見事ハックを完成させた参加者のみなさんは、本当に凄いと思います。お疲れ様でした。

雑感

このようなイベントを通じて、Web Audio API / Web MIDI API の認知度があがり、たくさんのハッカーがアイデアを具現化するようになることで、より面白い世界になっていくことでしょう。W3C 標準化を目指している Web Audio API / Web MIDI API は、そんな世界で、音・音楽との重要な足がかりとして役目を果たすことになるだろうと考えています。




2016年8月21日日曜日

Maker Faire Tokyo 2016 出展しました

Maker Faire Tokyo 2016 へ出展しました


昨年に引き続き、奇楽堂さんとご一緒に、Maker Faire Tokyo 2016 へ出展してきました。奇楽堂&Company ブースでは、
  • 昨年に引き続き「Magic Flute」
  • 六角形のタッチインターフェイスを使った新作「ハニカムベル」
  • ハニカムベル専用の音色を搭載した FM 音源モジュール「Raspberry Op.4」
  • タッチセンサを使った MIDI 出力モジュール「Touch MIDI」
  • パンチカードを光学センサで読み取って曲を奏でる「手回し MIDI シーケンサ」
を展示しました。昨年は、Magic Flute と Magic Flute 用物理モデリング音源モジュールのみでしたので、ずいぶんと作品の数が増えました。奇楽堂さんは、今回、「Touch MIDI」のイベント頒布にも挑戦されていました。


反応は?

手回しMIDIシーケンサ
「手回し MIDI シーケンサ」は見た目のわかりやすさもあって、多くの方が立ち止まって見てくださいました。光る、音が出る、は、目を引くための常套手段ではありますが、そこに大げさな手(体)の動きが加わると、さらに面白がって見てもらえるようです。ただ、二日間のデモの間ずっとハンドルを回し続けていたため、イベントの終わった翌日はひどい筋肉痛となりました。もう少し展示品の配線の取り回しを改良して、自由に触ってもらう形の展示にすればよかったかな、と後悔しています。

手回し MIDI シーケンサは、そもそも、学研の『大人の科学』の付録「手回し鳥オルガン」を改造したものなのですが、この号が刊行された当時の同誌編集長が、偶然ブースに来られ、ご挨拶できたことも良い思い出となりました。来場者の方からは、「私も作ってみたい」という声が聞かれましたが、残念ながらこの号はもう絶版で筐体を手に入れることができず、同じものを再製作することはできません。この時期の大人の科学はどれも傑作なので、何かの形で再販されるといいですね。


Raspberry Op.4



もう一つ製作を担当したハニカムベル用音源モジュール「Raspberry Op.4」は、拙作の iOS アプリ「DXi FM synthesizer」の音源部分をそのまま移植して利用しています。ハニカムベル専用音色ということで、FM の抜けの良い綺麗なベル音色を基本とし、複数の音が重なっても倍音がぶつからないようにチューニングを施しました。4 オペレータ12ポリの音源で、内部 32bit 演算、2 倍オーバサンプリング (88.2kHz) でエイリアシングを抑制しています。手持ちの Raspberry Pi 2 ではこれくらいが限界というところでした。また、まだ音色エディタがないため、iOS アプリ上で音色を作った後、データを JSON 形式で出力して Raspberry Pi へ送っています。今は音色を選択するためのボタンがあるだけですが、いつか専用パネルを作って、本体だけでエディットできるようにしたいな、と思っています。

その他の写真

ご一緒した奇楽堂さんが TouchMIDI イベント頒布を行いました。
スイッチサイエンスでも販売中とのことです。
ハニカムベル


ハニカムベルと Raspberry Op.4

リンク



2015年11月15日日曜日

DxO Optics Pro 10 Image Development Test

DxO Optics Pro 10 Image Development Test

DxO Optics Pro 10 Image Development Test with using PRIME noise reduction function.  Here is a comparison between Canon Digital Photo Professional and DxO Optics Pro 10. 

Canon EOS M + Sigma 10-20mm f/4-5.6

Canon Digital Photo Professional 4

DxO Optics Pro 10(PRIME)

Canon Digital Photo Professional 4

DxO Optics Pro 10(PRIME)