create every day - 福野泰介の一日一創

ぬいぐるみとNFCとMIDIでFM音源BGM自動生成、高専インターンOB/OGハッカソン「クリエイティビティーを刺激せよ」エキシビジョン

2017/08/26 23:55:00
#sabae #IchigoJam #music #intern #midi 

鯖江、めがね会館で開催、高専インターンOB/OGハッカソン「クリエイティビティーを刺激せよ!」
10時からネタ出しチーム分け、昼食後、13時から開発開始、17時発表までの4時間で勝負!

それぞれで楽しいチーム開発が進みます。

現役インターン生とインターンOB/OGの混合チーム。

小学生でも優しく作れる、だれでもSPARQL、SPRACH。

創造活動を応援してくれる、ちあがーるふれんど(仮

各チーム毎に自分以外に1票いれて選ぶ、優勝チームは「Waku2Pad」

他の作品も楽しかった!
- おやつアート - オープンデータなお菓子画像で創造&爆発
- いらすと屋2.0 - 気軽なイラスト共有プラットフォーム
- このゆびとまれ - 創造活動チームを組成支援

各チームのちょっとだけ手伝いしつつ、終盤は一人チームでつくった、クリエイティビティーを高めるBGM。
ぬいぐるみにNFCをつけ、気分に合わせたBGMが聞いて、気分をアゲようという提案!

IchigoJamのプログラムは過去作品の組み合わせ!
RFIDで読み取ったIDを乱数の種に、MIDIで音階を自動生成するプログラムに連携します

10 LET[0],36,38,43,50,42,46,39,75,67,49 20 BPS 31250:UART1 30 SRND S 40 FOR I=0 TO 7 45 T=[RND(10)] 50 ?CHR$(#90,T,80); 60 WAIT 10 65 ?CHR$(#80,T,0); 66 IF BTN() BPS0:LRUN0 70 NEXT 90 GOTO 30

KORG plugKEYを使うと、iPhone/iPad/iPod touchがIchigoJamから使える高音質MIDI楽器に早変わり!
動画の楽器アプリはYAMAHAのFM音源アプリ「FM Essentia」MIDIコントロール可能!

KORGの音源アプリも、MIDIで接続できる!

IchigoJamのかわくだりゲームを改造して遊ぶ高専生達。

また来年!

YMF825で楽器づくり「FM音源キーボード」マシン語で高速SPI、IchigoJamでまなぶ ARMマシン語入門その9

2017/08/15 23:55:00
#IchigoJam #music #asm 

FM音源チップ、YMF825、IchigoJam BASICで鳴ったので、次は楽器づくり!
問題は、BASICでは遅いこと。音を鳴らすための2byteのSPI送信5回に、0.73秒もかかっているので、ゆっくりチャイムを鳴らすくらいしか使えません。
* SPIとは、クロックに合わせて信号を送受信するシンプルな通信方式 (SPI on Wikipedia)


FM音源キーボード on IchigoJam デモ動画

おや!?小気味よく鳴ってますね!これがマシン語パワーです!
復習を兼ねて、OUTポートをマシン語で使う実験をしてみます。(参考、マシン語でLEDを光らせよう

LEDが接続されている端子は、PIO1_5、アドレスとしてはPIO1のベースアドレス#50010000に、2進数の`10000000(= 1&<&<(5+2))を加えた場所に書き込めばOK!

@LED1 R3=#50 ' R3=#50010000 R3=R3<<8 R3=R3+1 R3=R3<<16 R2=`10000000 R3=R3+R2 R2=R2>>2 [R3]L=R2 ' GPIO1_5 <- 1 RET

asm15アセンブラを使うか、ハンドアセンブルして、できたマシン語コードを動かしてマシン語でLED1!

POKE#700,80,35,27,2,91,28,27,4,128,34,155,24,146,8,26,96,112,71 ?USR(#700,0)

次はBASICでつくったSPI送信をマシン語化します。

@SPIW:OUT4,0:FORI=0TO15:OUT2,0:OUT3,N>>(15-I)&1:OUT2,1:NEXT:OUT4,1:RTN

まずは分解!

OUT4,0 FORI=0TO15 F=N>>(15-I)&1 OUT2,0:OUT3,F OUT2,1 NEXT OUT4,1 RTN

ひとつずつマシン語化すれば、できあがり!

@SPIW R3=#50 ' R3=#50010000 R3=R3<<8 R3=R3+1 R3=R3<<16 R2=0 [R3+`1000]L=R2 ' OUT4,0 R1=1 R1=R1<<15 @LOOP R2=0 R0&R1 'F=N>>(15-I)&1 IF 0 goto @SKIP R2+=4 @SKIP [R3+`110]L=R2 ' OUT2,0:OUT3,F R2+=2 [R3+`110]L=R2 ' OUT2,1 R1=R1>>1 IF !0 goto @LOOP @END R2=8 [R3+`1000]L=R2 ' OUT4,1 RET

アセンブラasm15を使って2byte送信SPIマシン語バイナリができました!
送信したい16bitの数値を、USRコマンドの第二パラメータにいれるだけ!(マシン語にはレジスタR0として渡される)

POKE#700,80,35,27,2,91,28,27,4,0,34,26,98,1,33,201,3,0,34,8,66,0,208,4,50,154,97,2,50,154,97,73,8,246,209,8,34,26,98,112,71

準備ができたので、早速楽器づくり、まずはIchigoJamのボタンを使った単音楽器で実験!
前回のYMF825の初期化プログラムを動かし、音がなる状態にしてからNEW、次のプログラムを入力。
*マシン語化した初期化プログラム、後述します

1 'FM BTN 10 A=#700:POKEA,80,35,27,2,91,28,27,4,0,34,26,98,1,33,201,3,0,34,8,66,0,208,4,50,154,97,2,50,154,97,73,8,246,209,8,34,26,98,112,71 20 T=#1465 30 IF !BTN() CONT 40 U=USR(A,#0B00):U=USR(A,#0C54):U=USR(A,#0D00+T>>8):U=USR(A,#0E00+T&#FF):U=USR(A,#0F40) 50 IF BTN() CONT 60 U=USR(A,#0F00) 70 GOTO 30

ボタンを押したら鳴り始め、離したたらキーオフ!
反応速度もいい感じ!いろんなボタンをつなげて遊べそうですね!
*時間を測ってみると、1回の送信でTICKで1、約1/60秒、100倍速い!

次は、キーボードで楽器キーボードをつくってみます。
キーボードのZXCがドレミ、SDなどで半音にも対応します。

1 'FM KEYBOARD 10 A=#700:POKEA,80,35,27,2,91,28,27,4,0,34,26,98,1,33,201,3,0,34,8,66,0,208,4,50,154,97,2,50,154,97,73,8,246,209,8,34,26,98,112,71 100 FORI=0TO15:U=USR(A,#0B00+I):U=USR(A,#0F30):U=USR(A,#1071):U=USR(A,#1101):U=USR(A,#1208):U=USR(A,#1300):U=USR(A,#0C54):NEXT 200 LET[0],357,378,401,425,450,477,505,535,567,601,637,674 210 M="ZSXDCVGBHNJM,L." 220 K=INKEY():IF!KCONT 230 N=0 240 IF PEEK(M+N)=K GOTO300 250 N=N+1:IF N=15 GOTO 220 260 GOTO240 300 ?N:T=[N%12]:B=4+N/12:T=T&#7F+T>>7<<11+B<<8 310 U=USR(A,#0B00+N):U=USR(A,#0F00): 320 U=USR(A,#0D00+T>>8):U=USR(A,#0E00+T&#FF):U=USR(A,#0F40) 330 GOTO 220

キーは離されたタイミングが取得できないので、キーが押された時に、キーオフ(310行)してから、キーオン(320行)するようにしています。

ついでに、初期化コードもマシン語で高速化!

1 'FM INIT 10 OUT1,0:WAIT1:OUT4,1:OUT1,1 13 A=#700:POKEA,80,35,27,2,91,28,27,4,0,34,26,98,1,33,201,3,0,34,8,66,0,208,4,50,154,97,2,50,154,97,73,8,246,209,8,34,26,98,112,71 14 S=#728:POKES,80,35,27,2,91,28,27,4,128,33,0,34,8,66,0,208,4,50,154,97,2,50,154,97,73,8,246,209,112,71 15 'INIT 20 LET[0],#1D01,#020E,-1,#0001,#0100,#1AA3,-1,#1A00,-30,#0204,-1,#0204,-1,#0200,#197C,#1B3F,#1400,#0301,#08F6,-21,#0800,#09FB,#0A00,#01740,#1800,0 22 FORJ=0TO99:N=[J]:IF!N J=99:GOTO26 24 IF N<0 WAIT -N ELSE U=USR(A,N) 26 NEXT 30 'SETCH 31 LET[0],#0F30,#1071,#1101,#1208,#1300 32 FORJ=0TO4:U=USR(A,[J]):NEXT 40 'SETTONE 41 U=USR(A,#08F6):WAIT1:U=USR(A,#0800) 42 LET[0],7,#81,1,#43,0,#E7,#FF,#9D,0,#10,#40,#20,#33,#E2,#73,0,#50,#40,#10,#41,#D3,#5B,0,#10,#41,#20,#63,#D4,2,1,#10,#40,#80,3,#81,#80 43 M=36 50 @SPIAW:OUT4,0:FORK=0TOM-1:U=USR(S,[K]):NEXT:OUT4,1

配列をSPIで送信する @SPIAW の内部、8bitのSPI送信もマシン語化しました(アドレス#728=S)

@SPI1W R3=#50 ' R3=#50010000 R3=R3<<8 R3=R3+1 R3=R3<16 R1=#80 @LOOP R2=0 R0&R1 'F=N>>(7-I)&1 IF 0 goto @SKIP R2+=4 @SKIP [R3+`110]L=R2 ' OUT2,0:OUT3,F R2+=2 [R3+`110]L=R2 ' OUT2,1 R1=R1>>1 IF !0 goto @LOOP @END RET

FM音源音色エディタもマシン語化!

1 'FM EDITOR 5 CLS 10 ?" 1 BO 3:";[40] 20 ?" 2 LFO 3:";[41] 30 ?" 3 ALG 7:";[42] 40 LET[80],"SR 15","XOF 1","KSR 1","RR 15","DR 15","AR 15","SL 15","TL 63","KSL 3","EAM 1","DAM 3","EVB 1","DVB 3","MUL15","DT 7","WS 31","FB 7" 50 FORJ=0TO1:FORI=0TO16:LCJ*15,3+I:?DEC$(4+I+J*17,2);" ";STR$([80+I]);":";[43+I+J*17]:NEXT:NEXT 60 INPUT"ID :",I 70 INPUT"VAL:",V:[39+I]=V 75 GSB@TESTTONE 80 GOTO 5 100 @TESTTONE 110 LET[0],7,#81,[40],[41]<<6+[42] 120 FORJ=0TO1:P=43+J*17 130 LET[4+J*7],[P]<<4+[P+1]<<3+[P+2],[P+3]<<4+[P+4],[P+5]<<4+[P+6],[P+7]<<2+[P+8],[P+9]<<4+[P+10]<<5+[P+11]+[P+12]<<1,[P+13]<<4+[P+14],[P+15]<<3+[P+16] 132 NEXT 141 U=USR(A,#08F6):WAIT1:U=USR(A,#0800) 143 M=36:GSB@SPIAW 150 T=#1465 160 U=USR(A,#0F00):U=USR(A,#0B00):U=USR(A,#0C54):U=USR(A,#0D00+T>>8):U=USR(A,#0E00+T&#FF):U=USR(A,#0F40) 180 RTN 1010 @SPIAW:OUT4,0:FORK=0TOM-1:U=USR(S,[K]):NEXT:OUT4,1:RTN

YMF825初期化コード実行後に動かし、いい音色ができたら、ボタン楽器や、キーボード楽器で演奏しよう!

Enjoy to create original musical instruments with FM!
オリジナル楽器作りを楽しもう!

links
- YMF825 x IchigoJamで鳴らすFM音源チャイム、BASICでつくるYMF825Board用FM音源エディタ (ハードウェア準備、接続方法)
- YMF825Board GitHubPage へようこそ!
- ヤマハ製YMF825使用FM音源LSIモジュール: 組立キット 秋月電子通商 電子部品 ネット通販
- ヤマハFM音源LSI YMF825搭載モジュール YMF825Board - SWITCH-SCIENCE

- 連載、IchigoJamではじめる、ARMマシン語入門
1. はじめてのマシン語
2. ハンドアセンブルで超速計算!
3. マシン語メモリアクセスで画面超速表示!
4. マシン語でLEDを光らせよう!
5. 楽しさ広がるマルチバイトメモリアクセスとスタック
6. マシン語使いこなしTIPS
7. カジュアルに使うインラインマシン語
8. アセンブラを使って楽しよう
9. マシン語で高速SPI
10. マシン語を制するもの時間を制す
11. 画面をイチゴで埋め尽くす12の方法

YMF825 x IchigoJamで鳴らすFM音源チャイム、BASICでつくるYMF825Board用FM音源エディタ

2017/08/14 23:55:00
#IchigoJam #music 

三島で見た謎FM音源MFTで入手したYAMAHAYMF825Board、IchigoJam BASICで鳴らすことに成功! 標準装備のPSG音源、シリアル2本ケーブルで制御するMIDI音源に加え、FM音源もOK!FM音源といえば、MSX2+を買ってもらって音楽の教科書からいろいろ打ち込んで遊んでました。PLAY#2!


FM音源で鳴らす、学校のチャイム風!

YMF825Boardの使い方
※3.3Vで使うために基板にちょっと工作が必要です(YMF825Board Rev.Aを見て、8/15追記)

小さな抵抗 R0 を外し、S1にあるパッド3つをはんだでつなぐ(はんだブリッジ)ことで、SPIの信号が3.3Vで使えるようになります。


R0 は、はんだ吸い取り線を重ねて上から熱しながらピンセットで取りました。


難関だったS1のはんだブリッジ、3つのパッドが全部つながるようにはんだが乗ればOK!
今回はなかなかうまくつかないので諦めて、回路図からICの8ピンVDDと9ピンIO/VDDに3.3VがつながればOKとわかったのでLEDなどの線の切れ端を使ってS1の大きいパッドからIC8ピン9ピンの間とをはんだづけ。
(パッド間がもっと近いと楽になりそう)


SPIで制御するYMF825Boardとの接続はジャンパーワイヤー7本。
電源で3本、5V/3.3V/GND
RST_N (リセット) - OUT1
SCK (クロック) - OUT2
MOSI (データ送信) - OUT3
SSN (チップセレクト) - OUT4
ステレオジャックに、イヤホンかスピーカーに接続すればOK!

こちらドレミファソと鳴るテストプログラム

10 OUT1,0:WAIT1:OUT4,1:OUT1,1 15 'INIT 20 LET[0],#1D01,#020E,-1,#0001,#0100,#1AA3,-1,#1A00,-30,#0204,-1,#0204,-1,#0200,#197C,#1B3F,#1400,#0301,#08F6,-21,#0800,#09FB,#0A00,#01740,#1800,0 22 FORJ=0TO99:N=[J]:IF!N J=99:GOTO26 24 IF N<0 WAIT -N ELSE GSB@SPIW 26 NEXT 30 'SETCH 31 LET[0],#0F30,#1071,#1100,#1208,#1300 32 FORJ=0TO4:N=[J]:GSB@SPIW:NEXT 40 'SETTONE 41 N=#08F6:GSB@SPIW:WAIT1:N=#0800:GSB@SPIW 42 LET[0],7,#81,1,#43,0,#E7,#FF,#9D,0,#10,#40,#20,#33,#E2,#73,0,#50,#40,#10,#41,#D3,#5B,0,#10,#41,#20,#63,#D4,2,1,#10,#40,#80,3,#81,#80 43 M=36:GSB@SPIAW 60 'KEYON 65 LET[50],#1465,#1C11,#1C42,#1C5D,#2417 70 FORM=0TO4:N=[50+M] 75 ?N 80 LET[0],#0B00,#0C54,#0D00+N>>8,#0E00+N&#FF,#0F40 90 FORJ=0TO4:N=[J]:GSB@SPIW:NEXT 100 WAIT30 110 N=#0F00:GSB@SPIW 125 NEXT 130 GOTO70 1000 @SPIW:OUT4,0:FORI=0TO15:OUT2,0:OUT3,N>>(15-I)&1:OUT2,1:NEXT:OUT4,1:RTN 1010 @SPIAW:OUT4,0:FORK=0TOM-1:N=[K]:FORI=0TO7:OUT2,0:OUT3,N>>(7-I)&1:OUT2,1:NEXT:NEXT:OUT4,1:RTN

ArduinoのサンプルをIchigoJam BASICに移植)

YMF825にはプリセット音源はないため、音色パラメータを最初に書き込んであげる必要があります(42行)。
FM音源攻略のため、2オペレータのパラメータを編集できるFM音源エディタをつくってみました。

YMF825 FM音源エディタ on IchigoJam

まずはYMF825の初期化コード

1 'FM INIT 10 OUT1,0:WAIT1:OUT4,1:OUT1,1 15 'INIT 20 LET[0],#1D01,#020E,-1,#0001,#0100,#1AA3,-1,#1A00,-30,#0204,-1,#0204,-1,#0200,#197C,#1B3F,#1400,#0301,#08F6,-21,#0800,#09FB,#0A00,#01740,#1800,0 22 FORJ=0TO99:N=[J]:IF!N J=99:GOTO26 24 IF N<0 WAIT -N ELSE GSB@SPIW 26 NEXT 30 'SETCH 31 LET[0],#0F30,#1071,#1100,#1208,#1300 32 FORJ=0TO4:N=[J]:GSB@SPIW:NEXT 33 FORI=0TO37:[I+40]=0:NEXT 35 LRUN2 1000 @SPIW:OUT4,0:FORI=0TO15:OUT2,0:OUT3,N>>(15-I)&1:OUT2,1:NEXT:OUT4,1:RTN SAVE0

2番ファイルに保存するメインのエディタプログラム(初期化プログラムの35行で呼び出し)
最初のINPUTで番号を指定して、次のINPUTで値を設定(各パラメータに書いてある最大値を超えないように注意)

1 'FM EDITOR 5 CLS 10 ?" 1 BO 3:";[40] 20 ?" 2 LFO 3:";[41] 30 ?" 3 ALG 7:";[42] 40 LET[80],"SR 15","XOF 1","KSR 1","RR 15","DR 15","AR 15","SL 15","TL 63","KSL 3","EAM 1","DAM 3","EVB 1","DVB 3","MUL15","DT 7","WS 31","FB 7" 50 FORJ=0TO1:FORI=0TO16:LCJ*15,3+I:?DEC$(4+I+J*17,2);" ";STR$([80+I]);":";[43+I+J*17]:NEXT:NEXT 60 INPUT"ID :",I:IF I=0 LRUN3 70 INPUT"VAL:",V:[39+I]=V 80 GOTO 5 SAVE2

何も入力せずエンター(または0入力)で、テストで鳴らす音プログラム3番に

1 'FM TEST TONE 10 LET[0],7,#81,[40],[41]<<6+[42] 20 FORJ=0TO1:A=43+J*17 30 LET[4+J*7],[A]<<4+[A+1]<<3+[A+2],[A+3]<<4+[A+4],[A+5]<<4+[A+6],[A+7]<<2+[A+8],[A+9]<<4+[A+10]<<5+[A+11]+[A+12]<<1,[A+13]<<4+[A+14],[A+15]<<3+[A+16] 32 NEXT 41 N=#08F6:GSB@SPIW:WAIT1:N=#0800:GSB@SPIW 43 M=36:GSB@SPIAW 60 'TEST TONE 66 W=30:B=4 70 A=357:GSB@KON:WAITW:GSB@KOFF 130 LRUN2 300 @KON:N=A&#7F+A>>7<<11+B<<8:LET[0],#0B00,#0C54,#0D00+N>>8,#0E00+N&#FF,#0F40 310 FORJ=0TO4:N=[J]:GSB@SPIW:NEXT:RTN 400 @KOFF:N=#0F00:GSB@SPIW:RTN 1000 @SPIW:OUT4,0:FORI=0TO15:OUT2,0:OUT3,N>>(15-I)&1:OUT2,1:NEXT:OUT4,1:RTN 1010 @SPIAW:OUT4,0:FORK=0TOM-1:N=[K]:FORI=0TO7:OUT2,0:OUT3,N>>(7-I)&1:OUT2,1:NEXT:NEXT:OUT4,1:RTN SAVE3


パラメータを設定して、エンターでテストトーン!

YMF825のFM音源の音色づくりの基本

4つの発振器(オペレータ)のつながりを選ぶ、アルゴリズム。第一オペレータを鳴らすアルゴリズム1を選択(ALG:1)

(ymf825board manual / Tone Parameterより)

かつて(MSX時代)は正弦波だけだった発振器、YMF825では29種類から選べます!
音が大きて確認しやすい、ファミコンで有名、三角波を選んでみます(Wave Shape, WS:16)

(ymf825board manual / Tone Parameterより)

次にエンベロープをADSR(アタックAR、ディケイDR、サステインSR/SL、リリースRR)をそれぞれ0-15の値で指定します。
AR: アタックレート、立ち上がりの速さ 15で最速、0で立ち上がらない(鳴らない)
DR: ディケイレート、立ち上がり後の減衰の速さ 15で最速、0で減衰しない
SL: サステインレベル、ディケイ後の音量 15で消える、0で減衰しない
SR: サステインレート、ディケイ後の減衰の速さ 15で最速、0で減衰しない
RR: リリースレート、キーオフ後の減衰の速さ 15で最速、0で減衰しない(鳴り続ける)

まずARを15、RRを15にして鳴らしてみましょう。
ポーっとファミコンっぽい音が鳴ります。

アタックとリリース
ARを5にすると、ふわっと音が鳴り始めます。
RRを5にすると、ふわっと音が消えるようになります。
いろいろ変えてみましょう。

ディケイ
AR、RRを15に戻して、SLを7、DRを10にしてみましょう。
最初音が大きくて、その後小さい音が続きます。
後半の小さな音の音量をSLで調整(0で変化なし、15で消える)し、その音量になるまでの速さをDR(15で即変わる)で指定します。

サステイン
SRを7とすると、後半の小さな音が徐々に減衰するようになります。
キーオフした後の減衰はリリースRRで調整します。

アルゴリズム1は、2番目のオペレータを使って変調(モジュレート)できます。
右側(第二オペレータ)のARとRRを15にして、みると音が変化します。
モジュレーターの効き具合は、TLで調整します(0で最大、63で無効化)。

このように発振器をいろいろつなぎ合わせて音を創る、それがFM音源!
2つのオペレータで慣れたら、4オペレータをフルに使った音作りに挑戦です!

冒頭の動画は、ファイル3の鳴らす部分をこのようにチャイムに書き換えました!
オクターブ(B)が4、音階(A)で指定する数値は、YMF825のマニュアル内のExcelファイルに一覧もあります。

60 'CHIME 66 W=30:B=4 70 A=674:GSB@KON:WAITW:GSB@KOFF 71 A=535:GSB@KON:WAITW:GSB@KOFF 72 A=601:GSB@KON:WAITW:GSB@KOFF 73 A=401:GSB@KON:WAITW*2:GSB@KOFF 80 A=401:GSB@KON:WAITW:GSB@KOFF 81 A=601:GSB@KON:WAITW:GSB@KOFF 82 A=674:GSB@KON:WAITW:GSB@KOFF 83 A=535:GSB@KON:WAITW*2:GSB@KOFF

BASICによるソフトウェアSPIだと遅くてリアルタイムな演奏には向かないので、次は一部マシン語化した楽器プログラムに挑戦してみたいと思います。(参考、マシン語入門
→ マシン語編「YMF825で楽器づくり「FM音源キーボード」マシン語で高速SPI、IchigoJamでまなぶ ARMマシン語入門その9

links
- YMF825Board紹介 - Yamaha (公式サイト、マニュアル、サンプルプログラムあり)
- YMF825 SD-1 universal Sound Designer 1 - YAMAHA
- YMF825Board Rev.A (YMF825Board 製造元のウダデンシさんサイト)
- YMF825 FM音源モジュールを使ってみた - きょうのかんぱぱ (Arduinoで音色変更例)
- YMF825(SD-1)ざっくりまとめ(スペック編) - Lost Technology
- アナログシンセとはまったく違う、“誰でもわかるFM音源”講座 : 藤本健の“DTMステーション” (かつて240万円したFM音源シンセサイザー)
- ボードで復活!! 生方剛考のFM音源講座
- 今夜わかるFM音源 - aikeの日記
- FM音源の音作りをアナログな感覚で覚えよう① : SynthSonic
- YAMAHAのFM音源チップ、YMF825がMAKE市場向けに登場。Maker Faireで先行発売が決定だ! : 藤本健の“DTMステーション”

KATOKU by REKISHI / How to use the Rekishi Music Box Chip

2017/04/29 23:55:00
#maker #music #sabae #english 

Rekishi's *new* single CD "KATOKU" released! (KATOKU by レキシ@ja)

Ike-chan as Rekishi born in Sabae city! *Rekishi(レキシ@ja) means also "history" in Japanese
(レキシ池田貴史が福井県鯖江市「サングラス大使」第1号に就任 - 音楽ナタリー)

I've got the special music box card and disassembled. (オルゴール分解@ja)

It's a very simple electronic circuit. It's easy to desolder to get the chip.


from right upper
1. speaker out 1
2. VCC 3-5V?
3. speaker out 2
4. GND
* need some capacitors (VCC-GND 1uF?)


I added a volume controller.


Let's embed the Rekishi Music on your life!


Try it now!

links
- レキシ セカンドシングル 「KATOKU」発売! (official site)
- KATOKU(初回限定盤) Single, Limited Edition, Maxi (on Amazon)

Binary Room with Music - Let's PLAY PSG on WebMML!

2017/03/20 23:55:00
#music #IchigoJam #english 

Binary Room, I made a game puzzle added music!
IchigoJam can play PSG by MML (Music Macro Language).
I updated the simulator WebMML also. Try to input "T240BBBAGGABB.G8GR".

1 'BINARY ROOM 10 S=1:CLT 15 CLS:LC4,0:?"STAGE:";S 20 FOR I=0 TO 15 30 LC8+I,2:?"#":LC8+I,17:?"#" 50 LC8,2+I:?"#":LC23,2+I:?"#" 70 NEXT 80 SRNDS:FOR I=1 TO S*3 90 X=RND(12)+10:Y=RND(12)+4:IF SCR(X,Y) CONT 100 LCX,Y:IF I%3 ?"#" ELSE ?I/3 110 NEXT 120 X=15:Y=16:V=16:W=16:C=1 121 PLAY"T140EGD2.A2EG1$EG<D2.C2E>B2.A2.B2.A2EB1DEG1DEA1DEG2F2G2E2.DEG<D2.C2E>B2.A2.B2.A2GA2.DFGAB<CDEFGEC>A<CE>G2FED2C1" 125 K=INKEY() 130 A=-(K=28)+(K=29):B=-(K=30)+(K=31) 140 IF SCR(X+A,Y+B)=0 LCX,Y:?CHR$(0):X=X+A:Y=Y+B 150 IF SCR(V-A,W+B)=0 LCV,W:?CHR$(0):V=V-A:W=W+B 160 LCX,Y:?"A":LCV,W:?"B" 165 LC(X+V)/2,(Y+W)/2:IF SCR()-48=C IF Y=W AND ABS(X-V)=2 OR X=V AND ABS(Y-W)=2 ?CHR$(0);:C=C+1:IF C=S+1 LC4,20:?"CLEAR!":PLAY"T240BB<CDDC>BAGGABA.G8GR":WAIT300:IF S=9 END ELSE S=S+1:GOTO 15 170 LC16,0:?"TIME:";TICK()/60:WAIT3:GOTO 125

BINARY ROOM on IchigoJam - get all numbers by characters A and B - 10 stage

Let's PLAY and CREATE!

Play Music with Computer / IchigoJam print in English

2017/03/08 23:55:00
#IchigoJam #music #english 

What's next steps after finishing to start IchigoJam programming with Cutlery Cards?
I've started to make the simple self-learning text "IchigoJam print" in English.
The first theme is sound and music!

Let's compose your rhythm with LED!


"Compose Music / PLAY"


"Make Sounds / BEEP"

There are on GitHub so anyone can rewrite and add.
"IchigoJam/print: IchigoJam print - GitHub"
Join us!

What's the Sound? Happy Hina-Festival Song in Japan

2017/03/03 23:55:00
#IchigoJam #music #english 

Today is Happy Hina-Festival(ひなまつり@ja) day!

This program plays a Japanese song of this festival.

PLAY"T84L8 $GGGFGGA-GGA-A-G4.R E-E-E-DE-E-GE-DDE-DC4.R A-16G16E-E-GGA-G4.R E-4DCDE-GA-GE-DC4.R"

Why do you hear the sound?

The sound is the wave of the air pressure. The wave waves your eardrum of ears.
The wave has a frequency.
The unit of frequescy is Helz(Hz). 1Hz means 1 wave per 1 second.
Mankind named 440 Hz is tone A(ラ@ja). If the frequency become doubles to 880 Hz, you will hear the higher tone A.

Reconnect the sounder to GND-OUT3, and type this command.

PWM 3,227/2,227

PWM (Pulse Width Modulation) is a IchigoJam command to output continuously pulses.
This setting is 2.27 milliseconds period (1/0.00227 = 440.529Hz).
You can select 2 base periods (OUT2-5 is group A, OUT6 is group B)

Try play 3 tones harmony on IchigoJam!

MIDI Random Rhythm Machine with KORG volca beats x IchigoJam

2017/01/19 23:55:00
#IchigoJam #MIDI #music #english 

IchigoJam can control any MIDI instrument easily!

volca beats x IchigoJam


How to connect MIDI and IchigoJam
1. Flip back the MIDI socket(¥60).
2. Solder the red jumper to 2nd from the left.
3. Solder the green jumper to 4th from the left.
4. Connect the red jumper to VCC of IchigoJam.
5. Connect the green jumper to TXD of IchigoJam.

MIDI is the UART serial communication with 31,250bps.

BPS 31250:?CHR$(#90,60,100);

This is the random rhythm machine program. It's very simple!

10 LET[0],36,38,43,50,42,46,39,75,67,49 20 BPS 31250:S=0 30 SRND S 40 FOR I=0 TO 7 50 ?CHR$(#99,[RND(10)],1); 60 WAIT 10 70 NEXT 80 K=INKEY():IF K S=K 90 GOTO 30

#99 means the tone of rhythm 10ch. The numbers of line 10 are volca beats's 10 sounds. (UART0 is a command to ignore sending via UART)

Try computer music with IchigoJam!

電池ケースと組み込みIchigoJamでつくるイチゴトーン、こどもプロコン2016の冬!

2016/12/25 23:55:00
#IchigoJam #music #maker 

レッツ組み込み開発!
IchigoJamでつくった1ボタン楽器、イチゴトーンを、電池ケースに組み込んでおもちゃにしてみます。


材料は、単3x4本のスイッチ付き電池ケース、IchigoJamのCPU「LPC1114FN28」、ボタン(タクトスイッチ)、スピーカー、抵抗と線材少々。


BTN端子をVCCにつなぐ1MΩの抵抗(プルアップ抵抗)と、左右のVCCをつないでおきます。クリスタルは無くても平気。 プログラムを後で書き換えるなら、ピンソケットなどを付けておくと便利です。


電池ケースの半分のスペースを使います。ハンドドリルでボタンとスピーカー用の穴を開けて、中でCPUや電源を配線。


なかなかすっきりした見た目。おもちゃとしてはちょっと飾りっ気がないかも。


大きめボタンは子供にもわかりやすい!

CPUをLPC1114FDH28を使ったり、電源にボタン電池を使うともっと小さくできます。
逆に、大きなおもちゃなら、電源をコンセントから取ってIchigoJamをそのまま使って、ジャンパー線で配線すれば、はんだづけなしの簡単な工作でつくれるので、子供でも簡単にチャレンジできます!

こちら、こどもプロコン2016夏の受賞作品、じゃんけんゲームマシンIchigoJam Advent Calendar 2016より)

PCNこどもプロコン2016夏より)

欲しいおもちゃは作っちゃおう!
楽しいものができたら「PCNこどもプロコン2016冬」へ送ってくださいー

イチゴトーンでかんたん演奏ジングルベル!オタマトーンメロディ風をIchigoJam BASICでつくろう

2016/12/24 23:55:00
#IchigoJam #music 

メリークリスマス!
イチゴサンタからのプレゼントは、ジングルベル音楽プログラムと「イチゴトーン」!

PLAY"T180O5EEE2EEE2EGC.D8E2.R8 FFF.F8FEEEEDDCD2G2 EEE2EEE2EGC.D8E2.R8 FFF.F8FEEEGGFDC2.R"

T180でテンポ180(1分間に4分音符180コのペース)、O5でオクターブを高めに設定。
音楽をかなでるPLAYコマンドの使い方は、IchigoJamプリントリファレンスを見てチェック!

ジングルベル on #IchigoJam

明和電機の楽しい楽器「オタマトーン」シリーズの1ボタン押すだけでメロディを奏でてくれる「オタマトーンメロディ」っぽく、IchigoJamのボタンでジングルベルを演奏できる「イチゴトーン」(IchigoJam 1.2以上)

10 S="EEEEEEEGCDEFFFFFEEEEDDCDGEEEEEEEGCDEFFFFFEEEGGFDC" 20 FOR I=0 TO LEN(S)-1 30 IF BTN()=0 CONT 40 P="T1O5C":POKE P+4,PEEK(S+I):PLAY P:LED1 50 IF BTN() CONT 60 PLAY:LED0 70 NEXT 80 GOTO 20

10行でジングルベルMMLの音階だけの文字列を設定、ボタンを押している間鳴らしながらLEDをON!
いろんな弾き方を試してみよう!季節に合わせていろんな曲を打ち込もう!

クリスマスまでの25日間、IchigoJam Advent Calendar にも楽しいプログラムがたくさん集まりました!
IchigoJam Advent Calendar 2016 - Qiita

冬休み、楽しいプログラムができたら「PCNこどもプロコン2016冬」へチャレンジ!
小中学生対象、PCNこどもプロコン2016冬、待ってます!

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image