curious4dev

色々ダメなandroidアプリを開発したい会社員 高橋が綴る、androidアプリ開発やArduinoについて

*

LPC810をSCC/PSGにする

 

お疲れ様です。高橋です。

出会い

ImpactDrillさんのサイトの「LPC810とArduino UNOでSCC互換音源を鳴らす(1)」という記事。

今まで1個500円もするPSG音源、YMZ294を何個か買って使ってるんですが、革命的に安価になります。しかもSCC音源にもなるという。

LPCに焼き込むPSG音源とSCC音源のhexファイルは、Qiitaで「I2Cで制御できる80円のPSG互換チップで遊ぼう」という記事を書いたtoyoshimさんという方が作られました。

toyoshimさんがhexを書き、それを操作しやすいようImpactDrillさんがArduino用ライブラリを書き。二人の神に支えられたら、あとはもう、使うしかありません。

とりあえず、鳴るところまで検証します。

焼き込み

生のLPC810がある状態から、音が鳴るまでの手順は下記の通り。

  1. LPC810を調達する(マルツで75円。秋月で300円!)
  2. USB-TTL変換機を調達する(aitendoとかで安い)
  3. FlashMagicをDLしとく
  4. ImpactDrillさんのサイト通りに書き込み用に配線する
  5. hexファイルを焼き込む
  6. ImpactDrillさんのサイト通りに演奏用に配線する

・・・ImpactDrillさんのサイト通りに試せばうまくいきます。

私の電子工作箱には、マルツで買い占めたLPC810が全部で6個あります。

img_9798

まずは1個試しに作ります。

img_9797

問題なくうまく行きましたので、一気に量産します。

img_9796

焼き込んだあとのLPC810。言うまでもなく見た目は変化がありません。

演奏

ImpactDrillさんが公開してくれているSCC810.zipを使って、LPC810の4番とGNDでSOUND OUTすることが出来ました。

exampleコードは和音に対応していませんが、sccオブジェクトを直接操作すれば和音も鳴ります。

こんな感じです。

YMZの時に、チャネルに与える周波数を0にしても無音にならずノイズになった経験があるので、いずれきちんとしたドライバを書く予定。(mute時はmixerから外す、音量を0にする等)

課題1. SMFをArduinoコードに変換

MIDIシーケンサで作った楽曲を効率よくLPC810で鳴らすために考えました。

Arduino&YMZ294の頃は、

  1. kalshagarさんが作ったSMF→Arduino&YMZ用変換ツールでコード生成
  2. Arduinoにコード書き込み
  3. ArduinoからYMZに演奏させる

という流れで演奏してたのですが、時の流れは無情なもので、kalshagarさんのサイト自体が消失してしまっております。代替となる、SMFをシンプルなコードに変換するツールが必要です。

SMFを直接シリアル経由でArduinoに送り、そのまま演奏させるというのも手ですが、PCを介すと後の運用に悪影響を及ぼすので、やはりコード変換ツールが必要。

解決策: PSGの3和音 & SCCの5和音に対応したツールを作ろうと思います。

課題2. 配線が面倒

音を鳴らすときは、こんな感じに配線する必要があります。

img_9799

そんなに線は多くありませんが、地味に大変です。

解決策: Speaker OUT付きのArduinoシールドを作ろうと思います。

 

 

以上、よろしくお願い致します。

 - 電子工作

  関連記事

Arduino電源ON/OFF機

お疲れ様です。高橋です。 Arduinoを使っている時、特に2個とか複数同時に使 …

音階LED実装 #3 – 秋葉原で買い物

お疲れ様です。高橋です。 先日、お小遣いがチャージされまして、音階LED実装に必 …

YMZ294のMIDI音源化と、YMZのピン数圧縮

お疲れ様です。高橋です。 YMZで使うピン数を11本から6本に減らす事によって、 …

YMZシールドの基板設計 #2

お疲れ様です。高橋です。 先日行ったYMZシールドの基板設計の設計図を元に、部品 …

上司離着席検知システムの開発

お疲れ様です。高橋です。 下記、フィクションでイメージです。 背景 何かしらの相 …

音階LED仮組み

お疲れ様です。高橋です。 先日設計し直した音階LEDを、B型基板上に部品を載せて …

LEDドライバなる物の存在

お疲れ様です。高橋です。 本日、同僚とLED周りについて雑談していると、「LED …

Arduino Pro MiniでLチカしてみた

お疲れ様です。高橋です。 最近ずっと忙しく、平日はもちろん、土日も疲労のため何も …

PCとArduino間でのシリアル通信を介したEEPROM書き込み(難航)

お疲れ様です。高橋です。 Arduino Pro MiniでI2C EEPROM …

ArduinoIDE1.6.4+ATTiny13Aで赤外線リモコン(難航)

お疲れ様です。高橋です。 先日から引き続いて、ATTiny13Aで赤外線リモコン …