Mach3を起動すると Windows 7 が落ちてしまう問題

昨日はこの問題に引っかかって終了しましたが解決しました。

こちらのリンクにある対応策を実施したらあっさり直りました。

https://support.machmotion.com/books/knowledge-base/page/mach3-shutting-down-pc-on-launch

原因は、なんだかややこしい、マイクロソフトサポートのもと記事を確認しましたが専門的過ぎて理解できませんでした。まあ解決すればそれで先には進めるのであまり追求せず次行きます。ライセンスファイルを登録して、Mach3 のインストールはとりあえずできました。

jmm-tool はライセンスファイルは見つかったものの、ソフトの供給が終わってしまったらしくソフトウェアのダウンロードができず、手詰まったかと思いましたが、あちこち探し回って半ば引退しかかっている10年選手のラップトップにインストールされているのを発見、インストーラは見つからなかったもののインストールイメージをコピーして何とか動き出しました。ただし、日本製のソフトによくあるんですが英語版の Windows では文字化けしてまともに動かず、別に VM 上で動いている作業用日本語 Windows 10 にインストールしてなんとか動き出しました。もう供給もないし日本語環境でないと動かないというのも何かと困るので、別のツールパス生成ソフトも探し始めています。PyCam というソフトが使えそうな気がしますが、試用はまだしていません。

と、今日はこの辺までです。さらに NCVC というソフトがあると便利ということを思い出したので、おいおいインストールします。でもそろそろ CNC 機につないでみたいです。

それにしてもなんでこんな考古学みたいなことをやっているのだろう。新しい CNC の機械はどんなつくりになっているのでしょうね。あるいはもはや 3D プリンタ全盛?目的の違う別の道具なようなきもしますけれども。

CNC 用 PC の再設定

恐ろしく長く間が空いてしまいましたが、いいかげん製作を再開したいと思いつつあっという間に数年が経ち、うかうかしていると永久に始められないなと思い、また少しずつ時間を見つけて作業を再開します。

もう何もかも動かなくなってしまっていますが、まずは CNC を動かせるようにしたいです。以前所有していた CNC 制御用 PC は何年か前に米国を離れようかと考えていた時に手放してしまい、その後結局居続けることにして、再度 PC を購入、のままさらに数年放置していました。情けない。

CNC を動かすにはまずこの PC を動かすところから始まります。PC は Dell Optiplex 330 というとても古い機種で、リファブリケートされていた製品を購入しました。なぜこんな古い機種を使うかというと、CNC を動かすのにパラレルポートが必要だからです。3月下旬ぐらいから設定開始していたのですが、作業中に突然 PC が停止、故障ランプがついて起動しなくなり、いろいろ調べたところどうもマザーボードが壊れたらしい、怪しい中古のマザーボードを購入して交換したところまた動き出したのでやっと作業再開です。OS は Windows 7 32bit、何かのソフトが 32bit でないと動かないからだったはずなのですが、空白が長すぎてどのソフトだったかどうしても思い出せません。思い出せなくてもまあ困らないのですが。ちなみに Windows 7 の一通りのアップデートが済んだところで、マイクロソフトから「Windows 7 は2020年 1 月で更新が終わるしサポートもしないからね」との通知が。とはいえ OS のアップグレードする気などないですが、アップデートが切れたらやっぱり何かと不便にはなりそうです。古い機種を使い続けるのは頭が痛い。

CNC はオリジナルマインドの Black 1510。とんでもなく古い機種ですが、まだ動くことを祈っています。なんのソフトが必要かもすっかり忘れていましたが、四苦八苦してマニュアルを奥から見つけてきて、どうやら、

  • JMM
  • Mach3

の二つのソフトウェアが必要なことがわかりました。まずは Mach 3 のインストールから。

Mach 3 は、ライセンスファイルが奇跡的にみつかたものの、インストールバイナリは見つからず、でも Mach3 ソフトウェアはまだ販売されているようです。https://www.machsupport.com/software/mach3/

このページに、「Mach3 は 32bit Windows (2000/XP/Vista/7) じゃないと動かないよ」と明記してあります。これでしたか。

Mach3 をダウンロード、無事インストールして、起動、したところでシステムクラッシュしました。何度やっても同じです。今日のところは手詰まりで時間切れ。これは先が長そうです。まいった。前のPCほんとに手放すべきじゃありませんでした

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

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 の書籍サポートページから公開しています。
https://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