TRS MIDI

TRS MIDIと呼ばれる規格が最近よく利用されるようになりました。従来のMIDI端子(DIN)は大きいため小型デバイスなどでは、実装できませんでした。ミニプラグでこれを実装したものがTRS-MIDIになります。
ところが、この規格が統一されていなかったため、市場で混乱が起きています。フットペダル等でも極性が逆でメーカが違うと接続できないものがありますが、MIDIケーブルという簡単なものであるため、Amazonなどで楽器で使えないものまで出回り、私も間違えて購入してしまいました。(純正ケーブルは1本2000円超えと高価なため、みんな非純正を欲しがります。)
Type A と Bがあるらしいのですが、メーカがどちらか明記しない場合もあります。
私の持っている機材では、KORG NTS-1は Type-A、Arturia MicrofreakがType-Bのようでした。
MMAが定めた規格はType-Aのようです。
上記間違えて購入してもどちらだからいいや、と思っていましたが、A,Bどちらも使えないものが出回っているので注意が必要です。(楽器用としていてかなり悪質だと思います。)
純正をこのような高価で販売するメーカにも、憤りを感じます。
そこで、これに抵抗する気持ちもあり、自宅にある部品でTRS MIDIを作ってみました。(安価なものを手にいれるまでの仮使用目的。)

https://www.midi.org/midi-articles/trs-specification-adopted-and-released

MicrofreakはType-Bですが、MIDI IN/OUT用でケーブル2本が製品に同梱されています。とても良心的です!これなら規格がなんであろうと問題ありません。今回作ったのは、Type-Aです。これでKORG,BOSS製品の動作確認できました。

VCV Rack

VCVRackというアナログ音源モジュールをシミュレーションするツールに、論理回路をわかりやすく制御するモジュールを見つけたので試してみました。
(完全に私の備忘録です)

https://vcvrack.com/manual/FAQ

There is no official meaning of the name “VCV”, but some users have suggested “Virtual Control Voltage” or “Voltage Controlled Virtualization”. These are good guesses, but “VCV” was chosen simply because it is easy to remember and type. VCV Rack is the full name of our flagship software product.

アナログシンセサイザは当然ながらアナログ回路の電圧でコントロールされますが、音楽を表現するため発音のタイミングなどをクロックパルスで表現されます。この部分は考え方はデジタルのため論理演算が使われることがあります。SubmarineというブランドのDO-105というモジュールがAND,OR,XOR,NOTだけでなくフリップフロップにも対応しているため、とても興味深いです。(ただハードウェアモジュールでここまでのものはないと思われます)

フリップフロップについて

https://ja.wikipedia.org/wiki/%E3%83%95%E3%83%AA%E3%83%83%E3%83%97%E3%83%95%E3%83%AD%E3%83%83%E3%83%97

ここではD-FlipFlop(上),RS-FlipFlop(下)について、試してみました。回路図や言葉で説明するのがわかりにくいので動画を作ってみました。(音声はなし)

上下オシロスコープとも、一番上は基本クロックです。また一番下は、ボタンになります。下のオシロスコープは二つのボタンを表示しています。
コンピュータのしくみを改めて学ぶ気持ちになりました。

Kastle Drum

Bastl Instrument という会社のKastle Drumという製品をテストしてみました。
なせ急にこのような製品をもちだしたかというと、前回作ったDA Converterがとても役にたったからです。
この製品、とてもユニークな製品で、このような小型でありながら、モジュラーシンセでありバリエーション(倍音)豊かな音を発します。
ところが目的の音、目的のリズムを作り出すことがかなり難しく、その挙動を少しでも理解すべく外部から電圧を提供して一つ一つ機能を確認していきました。偶然性を楽しむものでもあるので、厳格に使えなくてもいいのですが、正常なのか異常なのかも際どい部分(バグっていてもわからない)を感じるので、その用途にこのGPIO5V出力ができるArduinoがベストでした。(アナログノイズによる不安定というのもあると思いますが・・)
まだわからないことばかりですが、電子工作でつくるノイズアート的な製品の一つとしてこういうのも面白いかもしれません。(オープンソースになっている)

DA Converter

電子工作のマイブームがまたやってきました。そのため久しぶりの更新です。
最近購入したKORG社のVolca Modularがきっかけです。
ブレッドボードにジャンプワイアで回路を作るようなフィーリングで、モジュラーシンセの音を作っていくものです。なかなか画期的だと思います。

Volca Modular + M5 Stack

こちらの記事でも書いたのですが、M5StackのDACで外部から操作しています。
もっとモジュレーションソースが欲しいのですが、そのたびにM5Stackを購入していては高いので、Arduino NanoとDAコンバータチップを使ってブレッドボード上に作ってみました。

http://zattouka.net/GarageHouse/micon/circuit/D_A.htm
http://www.pwv.co.jp/~take/TakeWiki/index.php?arduino%2FDAC%E3%82%92%E8%A9%A6%E3%81%99

SPIインターフェイスをもつMCP4922を使った事例がわかりやすく書かれていた、上記の記事を参考にさせていただきました。

アナログ出力部分にLEDを接続しました。

だんだん明るくなり、最大の明るさになったら消灯、を繰り返します。
PWMでないことを確認するためにオシロスコープでも確かめました。

もともと、モジュラーシンセにPWMで電圧が変化させたものを入れて、おかしな音がなってから、ArduinoのDACについて詳しく調べるようになりました。

PWMについてはこちらでテスト。

Pulse Width Modulation

次は、チャンネル数を増やしたいと思っています。

Jetson Nano

最近はRaspberryPiばかりでしたが、ひさしぶりに新しいハードを購入しました。
NVIDIAのJetson Nanoです。(B01)
NVIDIAということでGPUがクローズアップされた構成になっており、AI、3Dグラフィックどちらも来い、といった内容になっています。
開発環境、サンプルも充実していて、ネットにも情報が多くあり、開発がしやすい環境になっています。
RaspberryPiで使っていた、カメラ、電源、モニタなどそのまま繋ぎかえるだけで使えることもありがたいです。
実際には電源はACにも対応しているので、安定動作のためこちらを使っています。冷却ファンは必要になる時だけ別売のものを上ののせる形で使っています。

大きさはRaspi(右)の二倍弱くらいです。
まずは下記サイトにある物体認識をやってみました。
https://github.com/dusty-nv/jetson-inference/tree/master/examples/detectnet-camera

認識が非常に速いことに驚きました。また表示されるまでの遅延もあまり感じません。
GPUの威力は見せつけられた感じです。

しばらくはこれにのめり込みそうです。

Servo Test

久しぶりの投稿になってしまいました。
ちょっとやりたいことがあったので、今回サーボのテストをしてみました。

ESP8266 WiFi


この投稿以来ほったらかしにしていた、ESP8266を使うことと、サーボを二つ使うこと、そして圧電スピーカで音階を鳴らすことを目的としています。

参考 : 圧電スピーカでメロディを鳴らす
http://www.geocities.jp/zattouka/GarageHouse/micon/Arduino/Melody/Melody2.htm

参考 : NodeMCUのPIN配置
https://www.pinterest.jp/pin/263460646929874640/

サーボは5V必要のようですが、このボードには5Vがないので3.3Vに接続しています。(ご注意ください)
接続はサーボの赤が電源、黄がPIN、茶がGNDになります。(つなぎ変えているので色はかわっています。白はPIN)

ドレミと音を鳴らした後、サーボ1,2が交互に45度、90度の位置に回転します。

やっぱりサーボは面白いです。

あと、書き込み時に以下のエラーがよくでます。
espcomm_upload_mem failed

ESP8266, ESP-WROOM-02, ESPr Developer トラブルシューティングまとめ


このサイトを参考に解決しましたが、リセットの方法がよくわからなかったので、FLASHとRSTの同時押しをしています。しかしうまくいくときといかないときがあります。プログラムが動いているとだめみたいですが、音はデバッグでも役に立ちますね。

IR Remote

赤外線通信の解析をするために、Arduino Nanoで回路を作ってみました。
(デバッグ用にボタンとLEDも追加)

参考: http://decode.red/ed/archives/315

単純な赤外線のオン・オフの時間を計測するプログラムです。
シリアルモニタに出力します。

結果はマイクロ秒で表示されます。

これをもとに解析をすすめたいと思います。

FPGA MAX10 (3)

前回に引き続いて、MAX10のテストをしました。
今回は、以下ボード回路図を参考にI/Oのテストをしてみました。

https://service.macnica.co.jp/library/121809
https://service.macnica.co.jp/article_files/121809/max10_board_revb1p04__1.pdf

PB0とPB1を押すことで、違うLED(0-7)のパターンを点灯します。
PBもLEDも0と1が逆になっており、ちょっと戸惑いました。

コンパイルまでの操作は、(1)のときと同じです。
[Tools]->[Programmer]を起動して、[Edit]->[Add File]でsofファイルを選択します。
その後、(2)のときと同様、ハードウェア設定して、USBブラスターで転送します。

Pin Plannerでは、PB(PushButton)を2つ、LEDを8つを登録します。(今回はClockは使っていませんが、一応登録)


PB0を押したとき

PB1を押したとき

これを基本にまた次に進みたいと思います。
しかしLEDが明るすぎて目がいたいです (^^;

FPGA MAX10 (2)

このブログの初めに扱って以来、久しぶりとなってしまったMAX10をテストしました。
久しぶりとなってしまったのは、やはりUSB-Blasterなしでは転送が手間だったことが大きかったです。そして今回これを手に入れたので、使ってみました。

参考サイト : http://i8087.hatenablog.com/entry/20160427/1461756898

このサイトにある、LEDの点滅を実際に試してみました。
環境は前回と同じで、手順もUSB-Blasterに書き込むところ以外は同じです。HDLは、Verilogではなく、VHDLをそのまま使わせていただきました。

新しいプロジェクト作成

デバイス設定

VHDL選択

ソース作成

Pin Planner

Start Compilation

ハードウェア設定 – USB-Blaster選択(ドライバーは、Quartusインストールディレクトリにあり)

Startで転送

転送後すぐにLEDが高速で点滅

やはりUSB-Blasterは便利ですね。
今回は動作確認だけですが、次はVerilogで何か作りたいと思います。

ORANGE pico I/O

先日購入したORANGE picoとRaspberry Pi2 との間でGPIO通信をした記録です。
ピコのPORT 1,2とラズパイのGPIO 23,24でon/off(1/0)の送受信のテストをしてみました。

ラズパイ側

echo 23 > /sys/class/gpio/export
echo 24 > /sys/class/gpio/export

echo in > /sys/class/gpio/gpio23/direction
echo out > /sys/class/gpio/gpio24/direction

cat /sys/class/gpio/gpio23/value (受信)

echo 0 > /sys/class/gpio/gpio24/value (送信)
echo 1 > /sys/class/gpio/gpio24/value (送信)

参考:
https://tool-lab.com/make/raspberrypi-startup-24/
https://developer.microsoft.com/en-us/windows/iot/docs/pinmappingsrpi

ピコ側

out 1,0 (送信)
out 1,1 (送信)

ioctrl 2,2
print in(2) (受信)

参考:
http://www.picosoft.co.jp/orange/download/ORANGEpinmap.pdf
https://github.com/fu-sen/ORANGE-BASIC/blob/master/in.txt

データ送受信前には、それぞれその前にポートの設定が必要です。(ピコ側は受信のときのみ)