ムライボックス

ムライボックス (23)

PIC16F18313 用のムライボックス・プログラムのパッケージを公開しました。(→こちら) 上記リンクをクリックすると Yahoo! ボックスが開きます。

ムライボックス (22)

PIC16F18325 用のムライボックス・プログラムのパッケージを公開しました。(→こちら) 上記リンクをクリックすると Yahoo! ボックスが開きます。

ムライボックス (21) --- ハードウェア (1)

PSoC4 の内蔵 UDB (Universal Digital Block) を使った "OR" ゲート回路に EXOR を追加して、ハード的に MIDI ポート出力信号の極性を反転できるようにしました。 回路図を下に示します。

ムライボックス (20) --- ソフトウェア (11)

今回は STM32F4xx シリーズのチップを搭載した Nucleo-64 ボードでの話題です。 ハードウェアとしては Arduino 用の「ムライシールド(仮)」(→こちらとこちら) を使用し、ソフトウェアとしては CubeF4 HAL ライブラリを使用しています。 デフォルトでは、Ardu…

ムライボックス (19) --- ムライシールド (3)

2017 年 12 月 08 日付けの記事 (→こちら) では、「ムライシールド(仮)」の回路図を示しました。 これは、Arduino 本体の基板の面積と同程度の基板上に作成するという制約、および「SparkFun」製の「MIDI シールド」と同様な機能を持たせるという制約のため…

ムライボックス (18) --- ソフトウェア (10)

8 ピン・パッケージである PIC16F18313 には CLC (Configurable Logic Cell) が 2 個しか搭載されていないので、単体では 2 ポートしか実現できません。 外部に "OR" ゲートを設けることにより、8 ピンの制限内であと 2 ポート追加することが可能です。 つま…

ムライボックス (17) --- ソフトウェア (9)

XG Display Bitmap Data システム・エクスクルーシブ・メッセージにより、リマップ/ビットマスク・テーブルを MIDI シーケンス・データを使って書き換える手段を得ることができましたが、そのメッセージデータを作成する (ホスト PC 上で実行する) ユーティ…

ムライボックス (16) --- ソフトウェア (8)

前回の記事では省略した、システム・エクスクルーシブ・メッセージ処理部のプログラム・リストを下に示します。 「0xf8u」のようにわざわざ「unsigned」を指定していたり、(uint8_t) などのキャストをしているのは、8 ビット PIC 用の XC8 コンパイラで warn…

ムライボックス (15) --- ソフトウェア (7)

PIC 版のソフトウェアでは 8 ビット幅に削減していますが、本来のビットマスク・テーブルは 1 エントリあたり 16 ビット幅のデータを 16 エントリ持つ配列として構成されています。 このデータ量 (32 バイト) を一度に転送できるシステム・エクスクルーシブ…

ムライボックス (14) --- ソフトウェア (6)

今回は PIC16F18325 を使用した場合の話です。 ハードウェア回路としては 2017 年 12 月 12 日付けの記事 (→こちら ) に掲載してあります。 MPLAB X IDE に付属の MCC (MPLAB Code Configurator) を利用して作成しています。 プログラム・サイズは 820 ワー…

ムライボックス (13) --- ソフトウェア (5)

ストップ・ビットの中央付近で「送信完了」のフラグが立つタイプの UART では、残りの 1/2 ビット・タイム (約 16 μs) 期間の、まだストップ・ビットの中にいる状態で次のキャラクタ・データの書き込みを終えることができれば余分なアイドル状態が挿入される…

ムライボックス (12) --- ソフトウェア (4)

ソフトウェアの話の続きです。 MIDI IN から入力される MIDI ストリームを UART RX から 1 バイト読む MIDI チャネル番号書き換え、ビットマスク・パターン読み出しなどの処理 マスク・パターンの出力、および MIDI バイトを UART TX に出力 という処理の流…

ムライボックス (11) --- CLC

Microchip 社の 8 ビット PIC の最近の品種 (PIC16F1… で始まる 4 桁あるいは 5 桁型番) には、CLC (Configurable Logic Cell) と呼ばれる小規模な PLD (Programmable Logic Device) が含まれているものがあります。 代表的な品種としては、「全部入り」(ful…

ムライボックス (10) --- ムライシールド (2)

STMicroelectronics Nucleo シリーズ (より正確には Nucleo64 シリーズ) では、ST 独自の「Morpho」コネクタのほかに Arduino Uno R3 互換の Arduino コネクタを持ち、Arduino 用シールドが利用できます。 しかし、デフォルトではコネクタのピン D0、D1 には…

ムライボックス (9) --- ムライシールド (1)

ソフトウェアの話とは一旦離れて、今回は Arduino および Nucleo 用の「ムライシールド (仮称、未公認)」の話です。 「SparkFun」製の「MIDI シールド」と機能的にコンパチブルなモードと、ムライボックス・モードとを、ジャンパ・ポスト上のショート・プラ…

ムライボックス (8) --- ソフトウェア (3)

C 言語で記述したプログラムの断片を示しながら、もう少し具体的な処理の説明をします。 まず、処理で使う変数です。 uint16_t r_mask; // "running" bit mask uint8_t c; // MIDI byte from MIDI-IN uint8_t midi_ch; // MIDI ch / sys msg type uint16_t b…

ムライボックス (7) --- ソフトウェア (2)

ステータス・バイトの値が 0xF0 〜 0xFF の範囲の MIDI メッセージはまとめて「システム・メッセージ」と呼ばれ、「システム・リアルタイム・メッセージ」、「システム・コモン・メッセージ」、および「システム・エクスクルーシブ・メッセージ」と呼ばれる …

ムライボックス (6) --- ソフトウェア (1)

今回からソフトウェアの話に入ります。 「ムライボックス」の特徴である「MIDI チャネル番号の書き換え」という点で、MIDI メッセージの、 チャネル・ボイス・メッセージおよびチャネル・モード・メッセージ(0x80 〜 0xEF) システム・コモン・メッセージおよ…

ムライボックス (5) --- エコノミー版 (3)

前回述べた、「時間窓」に必要とされるゲート信号のタイミングを得る方法として、 送信 UART の送信シフトレジスタ・エンプティ/送信完了フラグをポーリング、あるいは割り込みを利用 別の受信 UART を接続して受信完了割り込みを利用 ピン変化外部割込みお…

ムライボックス (4) --- エコノミー版 (2)

今回は、送信 UART によってシリアル化された信号を切り取る時間窓としてのゲート信号に要求されるタイミングについて説明します。 まず、シリアル信号とゲート信号との関係を表すタイミング・チャートを下に示します。

ムライボックス (3) --- エコノミー版 (1)

「富豪版」つまり出力ポートの数だけ UART を用意するハードウェア構成の上で、ソフトウェアも「富豪版」にする場合のブロック・ダイアグラムを下に示します。

ムライボックス (2) --- PSoC5LP 富豪版

1 本の MIDI ケーブル上を流れる MIDI 16 チャネルを 1 チャネルずつそれぞれ別のポートに分配する場合を考えると、出力ポートは 16 チャネル分が必要となり、これが実用上の必要十分なポート数の上限となります。 ムライボックスの実現方法には大きく分けて…

ムライボックス (1)

「ムライボックス」とは、ゲームミュージック作家として知られる「村井聖夜」さんが 2012 年 5 月ごろに発案した「MIDI チャネルごとに分離し、別々のポートに出力するデバイスで、その際にチャネル番号を強制的に 1 ch に書き換えるもの」のことです。 機能…