2017-01-01から1年間の記事一覧

ムライボックス (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 に書き換えるもの」のことです。 機能…

PCM5102A (3)

PCM5102A DAC のインパルス応答を観測してみました。 まず、PCM5102A のデータシートに掲載されている 8 倍オーバーサンプリング・フィルタ (直線位相特性) のインパルス応答の図 (Figure 16.) を下に示します。

PCM5102A (2)

PCM5102A DAC の出力スペクトラムを観測してみました。 とはいっても、手許にはスペクトルを観測できる機材は、PC のサウンド入力 + WaveSpectra しかないので、48 kHz とか 96 kHz とかの実使用のサンプリング周波数ではなく、最低の 8 kHz まで DAC のサン…

PCM5102A (1)

PCM5102A は TI/バーブラウン製のオーバーサンプリング・ステレオ・オーディオ DAC で、主要な特徴を挙げると次のようになります。 サポートするサンプリング周波数は 8 kHz 〜 384 kHz 16 / 24 / 32 ビット・データを受け付ける (SNR/ダイナミック・レンジ…

PIC18F14K50 (22) / PIC16F145x (4) --- USB-MIDI コンバータ (4)

PIC18F14K50 / PIC16F1455 /PIC16F1459 を使って USB-MIDI コンバータとして動作させるためのファームウェア・パッケージを公開しました。(→こちら) 上記リンクをクリックすると Dropbox が開きます。 Dropbox にアカウントを持っている必要はありません。 (…

PIC16F145x (3) --- USB-MIDI コンバータ (3)

「最小構成」版の USB-MIDI コンパータを、秋月・片面ユニバーサル基板 D タイプ (47 × 36 mm) (通販コード P-08241) 上に組んでみました。 写真を下に示します。

PIC18F14K50 (21) / PIC16F145x (2) --- USB-MIDI コンバータ (2)

USB - MIDI コンバータのプログラムが大体できあがりました。 元ネタにしたのは Microchip アプリケーション用ライブラリ MLA (Microchip Libraries for Applications) に含まれる USB オーディオクラス・MIDI ストリーミング・サブクラスに関するデモ・プロ…

PIC18F14K50 (20) --- USB-MIDI コンバータ (1)

Microchip アプリケーション用ライブラリ MLA (Microchip Libraries for Applications) には、USB オーディオクラス・MIDI ストリーム・サブクラスに関するサンプルプログラムが含まれています。 それに手を入れて、USB-MIDI コンバータとして機能するプログ…

HX711 (2) --- DAC 測定

(ノン・オーバーサンプリングでマルチ・ビットの) オーディオ DAC の「BU9480F」と「PT8211-S」、および 16 ビット PWM DAC の測定をしてみました。 HX711 回りの回路図を下に示します。 (HX711 内蔵のレギュレータは使用せず、外付けの 3.3 V LDO を使用し…

1.8 インチ TFT LCD シールド (3)

STmicroelectronics の STM32Cube では、MCU のファミリ別に HAL ライブラリが構成されています。 その中で F0 / F1 / F3 / F4 シリーズのライブラリしかダウンロードしていないのですが、いずれのライブラリにも Adafruit 1.8 インチ TFT LCD シールド用の …

1.8 インチ TFT LCD シールド (2)

Arduino 用の S6D0151 ライブラリは、Adafruit 製の「Adafruit_ST7735」を元に手を加えて、比較的簡単に実現でき、「tft_S6D0151」と名づけました。 Yahoo! ボックス上 (→こちら) に公開しました。 (2017 年 5 月 27 日追記: 画面の回転角が 90°および 270°…

1.8 インチ TFT LCD シールド (1)

STmicroelectronics 社製の STM32 マイコンの評価ボード「Nucleo」シリーズは、秋月価格で 1500 円 〜 1800 円と安価 (Nucleo-32、Nucleo-64 の場合) で提供されています。 しかし、「プログラマ/デバッガ」である ST-LINK/V2-1 にターゲット MPU の「ブレー…