うっかりしていてお知らせが遅れてしまったのですが、

Analog2.0 の本がカラー化して帰ってきました。

達人と作る アナログシンセサイザー自作入門 改訂版2017
https://www.rutles.net/products/detail.php?product_id=785
https://www.amazon.co.jp/exec/obidos/ASIN/4899774699

A5判/フルカラー/328ページ
定価:本体2,894円 (税込み)
2017年9月25日発売

Analog2.0 初版の間違いや分かりにくいところを修正しました。
シンセサイザーの回路も、故障や誤動作を減らすため少し変更してあります。

キャプテンミライさんの素敵なイラストも増えて、内容と装丁が近くなったのではないかと思っています。
よかったらお楽しみいただけるとさいわいです。

書籍で指定しているファイルは、Analog2.0 GitHub リポジトリに移動して、そこから公開しています。
https://github.com/naokiiwakami/analog2.0/wiki

正誤表は引き続き Analog2.0 の書籍サポートページから公開しています。
http://gaje.jp/analog20/book.html

目次
Chapter 1 シンセサイザーの仕組みと作り方
1-1 アナログシンセサイザーの仕組み
1-2 アナログシンセサイザーの作り方
Chapter 2 基本システムの製作(1)
2-1 パネルの製作
2-2 ケースの製作
Chapter 3 基本システムの製作(2)
3-1 電源モジュールの製作
3-2 ライフラインケーブルの製作
3-3 電源の仕組みを理解しよう
Chapter 4 機能モジュールの製作
4-1 システムの構成
4-2 ノイズジェネレータとミキサ
4-3 電圧制御増幅器(VCA)
4-4 電圧制御発振器(VCO)
4-5 エンベロープジェネレータ
4-6 低周波発振器(LFO)
4-7 電圧制御フィルタ(VCF)
Chapter 5 その他のモジュール
5-1 リングモジュレータ
5-2 グラフィックイコライザ
5-3 レゾネータ
5-4 フェーズシフタ
5-5 ゲートディレイ
5-6 アナログシーケンサ
Appendix 付録
A Analog2.0システム配線図
B MInI Board IIの製作
C トランジスタ・マッチングの方法
D モジュール間配線の確認方法
E Analog2.0ウェブサイト

鍋CADが英語モードの Windows 10 で文字化けしてしまう

鍋CADを英語モードの Windows 10 で使うと日本語の表記がすべて文字化けしてしまいます。これを防ぐには、システムのロケールを日本語に変える必要があります。

それには、下のスクリーンショットのように、Control Panel > Clock, Language, and Region を呼び出した後、Region > Change location > Administrative タブ > Change system locale… > Current system locale: Japanese > OK

と操作した後、OSを再起動するとシステムのロケールが日本語に変わります。その後は、鍋CADの日本語表記はきちんと表示されるようになります。

でも、システム全体のロケールを変えるとコマンドプロンプトのバックスラッシュが円マークに変わっていろんなファイルが見づらくなったりと、本当はあまりうれしくありません。ロケールを変えたくないなら、鍋CADの設定を変更して英語表記で使うという手もありますが、正直ちょっとわかりづらくなります。ソフトウェアがインストールされているディレクトリ (デフォルトでは C:\NTCAD) の下に LANG というディレクトリがあってその下にある English.txt を編集して自分好みに変えてしまうという方法もあります。

Analog2.0 LFO 回路の改善

これは Analog2.0 LFO の最新版の回路ですが、この回路が電源に干渉してしまい、LFO の振動に合わせて VCO のピッチが揺れる問題がありました。原因は LFO の振動に合わせて消費電流が大きく変わるからと考えられます。回路図を眺めてみると、矩形波出力の電圧を下げるための R18 と R19 がちょっと気になります。

Continue reading “Analog2.0 LFO 回路の改善”

MIDI OX を使って MIDI メッセージを記録する方法

MIDI メッセージの解析をするのに MIDI-OX は非常に強力なソフトウェアです。MIDI 信号を再現するために、受けた信号を記録することもできるのですが、やり方が少しわかりにくいのでこの記事に書き留めておきます。以下の手順で .mid ファイルを作ることができます。

1. Input Monitor を開く

開かなくても記録はできるんですがモニタを開いておくと受けたメッセージが見られるので作業が楽です。メニューの

View-> Input Monitor…

から開けます。

2. モニタを開始する

Actions -> Start Display

で開始します。ついでに SysEx も受け付けるようにしておくと解析にはよいかもしれません。

Options -> Pass SysEx

3. 試しに MIDI メッセージを入れてみる

以下のような画面になるはずです。右下の REC と SYX というボックスが紺色に反転していることが重要です。

4. 記録を開始する

モニタ画面を右クリックして “Clear Input” を選ぶと画面がクリアされます。クリアしたら記録を開始します。

File -> Log

を選んで、ログファイルダイアログを呼び出し、以下のように内容を変更します。

  • Enable Logging を入れる
  • Log Format を “MIDI to Text” にする
  • Log File の拡張子を .mtx に変える

OK ボタンを押すと記録が開始されます。再度何か入力を入れると、以下のような画面になります。右下の LOG ボックスが紺色に反転していることが重要です。

5. 記録を終了する

画面右下の LOG ボックスをクリックするか、File -> Log… ダイアログで Enable Logging を外して OK ボタンを押すと記録が終了します。記録開始時に指定した .mtx ファイルが生成されます。

6. .mtx ファイルを .mid ファイルに変換する

Mtx2Midi というツールを使います。MIDI-OX のページ

http://www.midiox.com/

に行って、Mtx2Midi-Installer.zip というリンクを探してインストールします。インストール後、生成した .mtx ファイルを右クリックして “Convert to MIDI file” を選ぶと変換した .mid ファイルが同じフォルダに作られます。

PSoC CY8CKIT-049-42xx キットの USB-UART ブリッジを使う

これをプログラムするには miniprog3 が必要です。

1. SCB UART コンポーネントを置く。ボーレートを 9600 に変更する。
uart_config

2. ピンの割り当ては以下の通り

UART RX : P4[0]
UART TX : P4[1]

pin_connection

3. これがソースコード

4. ビルドしてプログラムして CY8CKIT-049-42xx キットを PC につなぎます
terminal_screenshot

はいこれだけ

PSoC 42xx を使って MCP2515 の命令フレームを生成する

PSoC 42xx は SPI コンポーネントが提供されていて、クロックは 4MHz まで設定できます。しかしながら、これを使って可能な限り速く MCP2515 と通信することはそれほど単純ではありません。

問題は、MCP2515 の命令は複数のバイトでできていることです。一つの命令は CS 信号で束ねられていて、命令を送っている最中はずっと L (イネーブル)にしておかないといけません。しかしながら、PSoC の SPI は CS 信号を直接制御できません。コンポーネントとの通信は FIFO を通じて行われており、FIFO がデータを受け取ると、内部で自動的に CS をイネーブルに変え、データの送信が終わって FIFO が空になると自動的に CS をディスエイブルに戻します。自動生成される API 関数はあまり効率が良くなくて、SPI のクロック周波数が高いとスピードに追い付けず、送信の間が空いてしまいます。そのためクロック周波数が高いと API 関数を使って MCP2515 の命令フレームを作ることができません。

datasheet_read_instruction

この問題を解決するために、API 関数を使わずに SPI を制御する関数を書きました。方針は

  • より低レベルのインタフェースを使って SPI とやり取りを行う
  • いったん送信が始まったら可能な限り速く Tx FIFO にデータを送り込み、送信が途絶えないようにする
  • データを送るのと並行して可能な限り早く Rx FIFO からデータを取り出す

いくつか制限事項があります

  • SPI 設定の Rx および Tx バッファサイズは 4 でないといけない。これより大きいと、PSoC Creator がソフトウェアバッファを生成してしまいソースコードの管理が難しくなる
  • 取り出したデータの最初の2バイトはダミーで意味をなさない。実際のデータは3バイト目から始まる。
  • まだ実装していないがたぶんこの関数を実行中は割り込みを停止しておかないといけない

以下がソースコードです。SPI コンポーネント名は SPIM_CAN で種類は SPI マスタ (SCB を使わない) です。

MCP2515 から 16 バイト取り出してみました。4MHz のクロックで想定通りに動いています。

read_instruction

read_instruction2

Emacs のひっくり返った ctrl-M と ctrl-J を元に戻す

Emacs 24 のどこかのバージョンで突然 ctrl-M (改行) と ctrl-J (改行+インデント) の役割が逆転したようです。Emacs 開発のこういう無神経な変更にはイライラさせられますがとにかく何でもカスタマイズできる emacs のことです。以下の一行を .emacs に入れれば元に戻ります。

(when (fboundp 'electric-indent-mode) (electric-indent-mode -1))

以下の投稿に感謝。
http://emacs.stackexchange.com/questions/5939/how-to-disable-auto-indentation-of-new-lines

MIDI 受信くん

schematic

DSC02703

PSoC Creator が突如不安定になってしまいソフトウェアが書けなくなりました。

修復中ですがその間に 「MIDI 受信くん」を作りました。悲しいぐらい手順を忘れていてこんなもんにもえらい時間がかかりました。これで MIDI 受けの開発がちょっと楽になるといいです。

動作確認はまだ。