• 検索結果がありません。

PSoC5LP で USBMIDI 2015/5/23 第 2 回 PSoC まつり (Sat) 於 本サイプレス本社 ( 中野 ) PSoC5LP で USBMIDI ectoyfan ectoyfan アラフィフ ( 電 回路玩具ファン ) Electronic Circui

N/A
N/A
Protected

Academic year: 2021

シェア "PSoC5LP で USBMIDI 2015/5/23 第 2 回 PSoC まつり (Sat) 於 本サイプレス本社 ( 中野 ) PSoC5LP で USBMIDI ectoyfan ectoyfan アラフィフ ( 電 回路玩具ファン ) Electronic Circui"

Copied!
8
0
0

読み込み中.... (全文を見る)

全文

(1)

PSoC5LP

でUSBMIDI

ectoyfan

第2回PSoCまつり 2015‐05‐23(Sat) 於⽇本サイプレス本社(中野)

ectoyfan

(電⼦回路玩具ファン)

Electronic Circuit Toy’s Fan

幼少期 学研の教材→電⼦⼯作→アマチュア無線→マイコン 1984年 某調布にあるヲタ養成⼤学でソフトウェアを学ぶ 1994年 奇跡的に今の職場に雇ってもらう 2002年 Webサイト「電⼦回路玩具で遊ぼう!」開設 http://ectoyfan.xrea.jp 2003年 趣味の(へたれ)電⼦⼯作を再開 2004年 PSoCと出会う 2005年 ブログ「王様の⽿はロバの⽿!」開設 http://blog.goo.ne.jp/ectoyfan 現在 なるべくゆるくゆるく⽣きていきたいと願う⽇々

アラフィフ

お仕事は博物館の中のひと

(2)

PSoC1(CY8C27443)

による簡易アノマロスコープの製作(2005‐05)

USB

つきPSoC1(CY8C24794)を使った「傾きマウス」の製作(2006‐08)

博物館の展⽰にPSoC1を使った話:リレーボード(27443,2007‐10),

中断ボタンボックス(24794,2008‐12)

PSoC3(CY8C3866)

によるAM変調デモ(2010‐7)

CQ

のPSoC5LP基板にカラーグラフィック液晶をつないでemWinを動

かしてみた(2014‐04)

CQ

のPSoC5LP基板でUSBMIDIを⽤いた簡易シーケンサを作ってみた

(2014‐05)

CQ

のPSoC5LP基板でMARY‐VB基板による15fpsの動画取り込み&

MARY‐OB

基板による表⽰に挑戦した(2014‐07〜09)

いろいろなデバイスをつないで遊ぶ ADJDカラーセンサ 加速度

センサ AY‐3‐8910(PSG) SN76489AN(DCSG)

あっという間に

PSoC5LP

がUSBMIDIデバイスになります!

1. PSoC Creator 

で新規プロジェクトを作成する.

2. USBMIDI

モジュールを配置する.

3.

(今回UARTは使わないのでコンパイルエラーが出ない程度

に始末する:PIN接続を消す,⼊⼒にLogic’1’を⼊れる.)

4.

クロックを設定する:ILOを100kHzに,IMOを24MHzに,USB

をEnableにしてIMO×2=48MHzにする.

5. main.c

に数⾏コードを書く(USBMIDIの使⽤開始のみ).

6. Build

する.

7. Program

する.

8. USB

をPCに接続し,認識されることを確かめる.

(実演して紹介)

(3)

#include <project.h> int main() { CyGlobalIntEnable;  // グローバル割込み許可 USBMIDI_1_Start(0, USBMIDI_1_3V_OPERATION);  // USBMIDI 初期化 while (!USBMIDI_1_GetConfiguration());  // USBが準備できるまで待つ USBMIDI_1_MIDI_EP_Init();  // MIDI メッセージ送受信の準備 for (;;) { } }

プログラム0:USBMIDIデバイスとして

有効にするための最⼩プログラム例

void USBMIDI_1_callbackLocalMidiEvent(uint8 cable, uint8 *midiMsg) { // USBMIDI_1_MIDI_OUT_EP_Service() のコールバック関数 // midiMsgに3バイトデータがやってくる // システムエクスクルーシブについては // 先頭バイトが0xf0である3バイトデータから // 0xf7を含む3バイトデータまでがひとまとまり // (0xf7以降は無視) } int main() { … CyGlobalIntEnable;  // グローバル割込み許可 … USBMIDI_1_Start(0, USBMIDI_1_3V_OPERATION);  // USBMIDI 初期化 while (!USBMIDI_1_GetConfiguration());  // USBが準備できるまで待つ USBMIDI_1_MIDI_EP_Init();  // MIDI メッセージ送受信の準備 … for (;;) { … USBMIDI_1_MIDI_IN_Service();  // ホスト(PC)にMIDIメッセージを送信 USBMIDI_1_MIDI_OUT_EP_Service();  // ホストからのMIDIメッセージがあればコールバック関 数を呼ぶ … } …

(4)

} else { If (((midiMsg[0] & 0xf0) == 0x80 || (midiMsg[0] & 0xf0) == 0x90)  && (midiMsg[0] & 0x0f) != 0x09) { // Note on & off でかつドラムチャンネル(10ch)でない if (!Q_isFull()) { Q_EnQ(v_NODE_NOTEONOFF(midiMsg[0] & 0x0f, midiMsg[1], midiMsg[2])); } } if ((midiMsg[0] & 0xf0) == 0xb0) { // コントロールチェンジ If (!Q_isFull()) { Q_EnQ(v_NODE_CONTROLCHANGE(midiMsg[0] & 0x0f, midiMsg[1],  midiMsg[2])); } } if ((midiMsg[0] & 0xf0) == 0xe0) { // ピッチベンド if (!Q_isFull()) { Q_EnQ(v_NODE_PITCHBEND(midiMsg[0] & 0x0f, midiMsg[1], midiMsg[2])); } } if (midiMsg[0] == 0xf0) { skip_flag = 1; } // システムエクスクーシブメッセージ If (skip_flag && (midiMsg[1] == 0xf7 || midiMsg[2] == 0xf7)) { skip_flag = 0; } // 短いシステ ムエクスクルーシブメッセージの処理 } }

プログラム2:コールバック関数の実現

図1:⾳源の実現(first try)

(5)
(6)

図3:ピン配置ならびに配線のようす

(7)

図5:演奏のようす

デモンストレーション

NSX‐39

と組み合わせて演奏させてみます

NSX‐39: 

ボーカル,パーカッション

(8)

おわり

参照

関連したドキュメント

講師の山藤旅聞氏から『PBL(project based learning)デザイン』を行う際の視点や、計画策定 時のポイントを解説していただき、その後 LAB to CLASS の教材を 2

1着馬の父 2着馬の父 3着馬の父 1着馬の母父 2着馬の母父

第7回 第8回 第9回 第10回

第 4 四半期は、2015 年度第 2 回コンペを開催する予定。応募件数が伸び悩んで いるため、2015 年度第

第1回 平成27年6月11日 第2回 平成28年4月26日 第3回 平成28年6月24日 第4回 平成28年8月29日

課題曲「 和~未来へ 」と自由曲「 キリクサン 」を披露 しました。曲名の「 キリクサン

 このフェスティバルを成功させようと、まずは小学校5年生から50 代まで 53

内閣総理大臣賞、総務大臣賞、文部科学大臣賞を 目指して全国 37 都道府県 ( 予選実施 40 支部 479 チー ム 5,045 名、支部推薦 1 チーム ) 及び2地区から選 抜された 54