SlideShare a Scribd company logo
1 of 29
Download to read offline
ArduinoでeVY1 Shieldを歌わせてみた

2013/11/16 ta9mar
紹介

自己紹介

name: たくまー (@ta9mar)
・2.5次元提督
・横浜のandroid系 チーム横音所属
・コピペ・ソルジャー(クラス1st) 
・ITニンジャ(下忍)
浅く広くをモットーに生きています
2013
11/16
用語
●

今日でてくる用語

Arduino(アルドゥイーノ)
AVRのマイコンボード。
PICの敵と思って距離をおいていたが、
あまりの簡単さに篭絡されたの巻。

●

eVY1 Shield

今日の主役

スイッチサイエンスさんのSHIELD(arduinoの拡張ボード)。
ヤマハ謹製「NSX-1(YMW820)」音源LSI搭載。
「eVocaloid」音源ボード。「General MIDI」音源も
同時に使用する事ができるため、これ1枚で楽器の演奏にあわせて同時に「歌
う」事も可能。

2013
11/16

画像引用
http://www.switch-science.com/
用語
●

今日でてくる用語

MIDI(Musical Instrument Digital Interface)
30年前からある楽器の通信規格。中身は単純なシリアル通信。31250bps(38400bpsではないので注意)
イベント情報を送って音鳴らしたりする

●

(標準)MIDIファイル(.mid)
SMF(Standard MIDI file)
バイナリの楽譜データ。wavのような「音(波形)データ」は入ってない。あくまで音符等の情報。
音源側で音データ持ってて、鳴らしてくれる(音の良さは再生環境依存)

●

MML(Music Macro Language)
テキストで表現した簡易的な楽譜データ。
”ドレミファソラシド”⇒”CDEFGABC”みたいな。

2013
11/16

詳細は後ほど
用語
●

今日でてこない用語

Android
Google謹製のモバイルOS
最近4.4(kitkat)が出たらしいよ?知らんけど

2013
11/16
初め

eVY1 shieldの遊び方

2通りの遊びかたがあります。
①PCにつなぐ
PCとUSBで繋ぐとMIDI楽器として認識される
WinだとMediaplayerで.midデータ鳴らすと再生される
あとブラウザ上で歌わせたりできるらしいよ
今回これやります

②Arduinoに載せる
シリアル通信でデータ送り込んで演奏する
今回はこっち。

2013
11/16
資料
●

●

公式資料

公式資料やアプリ(YAMAHA)
http://yamaha-webmusic.github.io/nsx1-apps/man
ual/
サンプルスケッチ/midiデータ(スイッチサイエンス)
http://www.switch-science.com/catalog/1490/

2013
11/16
解析

サンプルスケッチを見る
MMLでかえるのうたを歌うサンプルスケッチ
Serial.begin(31250);

arduinoとeVY1シールドは31250bpsのシリアル通信でやりとりしてい
る。MIDIの速度ですね!
●

●

char mml[] ="CDEFEDC EFGAGFE";

MML部分。文字から音程を確定してバイナリで3バイト
0x90,key,0x7f(keyが音程Cの時0x3c)送ってる。
このバイナリデータは・・・MIDIメッセージですね!
つまりシリアルでMIDIメッセージそのものを送ってやれば音がなる

2013
11/16
参考

MIDIの超基本
keyとchannel
1 3

Key 音階(0-0x7f)
一番低いC(ド)が0、+12すると上のC
基準音(440Hz)のA(ラ)は69。
●

channel チャネル(0-15)
1つの楽器に16チャンネル。
ひとつのチャンネルにひとつの楽器を
割り当てられる。途中で楽器変更も可能。
演奏者が16人居ると思えばOK。
ch10(信号上だと9)だけは特別にドラム用。

2013
11/16

0

前頁の「0x90,0x3c,0x7f」を送信の例
      ↑   ↑   ↑強さ127(最強)で
      |    60のC(ド)
      ch:1にNOTE ON 鳴らす指示

2 4

6

5

Ch1
ピアノ

・・・

8 10

7 9 11 12・・・127

Ch2
ギター
Ch10
ドラム

Ch3
弦

・・・

Ch15
エレピ
解析

サンプルスケッチを見る
MMLでかえるのうたを歌うサンプルスケッチ

//かえるのうたがきこえてくるよ
int lylics[]={
   5,3,42,24,2,15,50,6,9,3,18,7,42,39};
歌詞部分。
サンプルでは歌詞はint配列(↑)で
「あ」が1、「い」が2・・・という風に指定
これを「発声文字列」にテーブル(→)で
変換してeVY1に送信!
右が変換テーブル。
MIDI的にはSystemExclusiveで楽器固有メッセージとして送信しているよ。
発音文字列書き方はYAMAHAさんの仕様書内「日本語eVocaloid™Phonetic Alphabet(PA)」
を参照。(この変換テーブル少し仕様書より少ないぞ・・・)

2013
11/16
解析

サンプルスケッチを見る
MMLでかえるのうたを歌うサンプルスケッチ

●

サンプル見て分かったこと
①歌詞をあらかじめ送信しておく
②ch1でNOTE ON(音を鳴らす)するとその音程で歌う
ためしにch2でNOTE ON(0x91)するとピアノの楽器音がなる(歌わない)

●

まとめ
①完全にMIDI。MIDIメッセージをシリアルで送ればOK
②歌わせるには事前にSysExで歌詞(発音文字列)を送っておく
③ch1がeVocaloidに割り当てられてる(普通の楽器には使えない)
④ch2以降は普通のMIDI楽器(eVocaloidには使えない)

2013
11/16
実験

実験1
シンセサイザーのMIDI OUTから入力して見る

●

●

そういえばMIDIインターフェースシールド持ってた
arduinoのシリアル送受信を、MIDIの送受信規格に合わせてくれる。
(物理コネクタ形状だけでなく、回路絶縁・電気的に分離して通信する)
arduinoにeVY1シールド載せて、さらにMIDI-IFシールド載せる3段構成
ゴテゴテ!

MIDI-IF
eVY1
arduino

2013
11/16
長門

実験1
シンセサイザーのMIDI OUTから入力して見る

このゴテゴテしさ・・・

             戦艦 長門級じゃねーか
2013
11/16

出典:wikipedia
http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Japanese_Battleship_Nagato_1944.jpg
実験

実験1
シンセサイザーのMIDI OUTから入力して見る

シリアル通信ピンをMIDIシールドが使っちゃうので、eVY1はソフトウェアシリアル
使うように変更。これでシリアル2つ使える。
(eVY1シールド上のジャンパで、ソフトウェアシリアルにピン変更できるようになっ
てます)
●

●

arduinoから歌詞だけ送って
シンセから出るMIDIメッセージを転送してみる
ハードシリアルから入った31250bpsデータをそのままソフトウェアシリアルに1バイ
トずつ流しだすだけで完成

2013
11/16
●

void loop(){
//シリアル受信処理
while(Serial.available()>0){
swSerial.write((byte)Serial.read());//そのまま転送出力
}
}

メイン部分
これだけ!?
実験

実験1
シンセサイザーのMIDI OUTから入力して見る

●

結果はこちら
http://init0.net/wp/archives/592
是非皆さんもご家庭の
キーボード・オルガン・電子ピアノなど
MIDI-OUT搭載楽器に繋げてお楽しみください!
                - 第1部艦 -

2013
11/16
実験

実験1
シンセサイザーのMIDI OUTから入力して見る

あんまりご家庭にないです?

端末はそんなにたくさん持ってるのに!?

よろしい、ならばやっぱMMLでしょう

2013
11/16
実験
●

実験2
MMLをシリアル受信して演奏させる

いちいち「かえるのうた」サンプルソースに、歌詞・MMLを直書きして
arduionoに書き込みしてたら手軽に楽しめないよ!
歌詞(発音文字列)と、MML文字列を、シリアルで受信して演奏するよ
うにしてみた
⇒arduinoIDEのシリアルコンソールからキーボード入力できるよ
歌詞:
MML:

#k a,e,4 M,n o,M,t a,g a,k' i,k o,e,t e,k M,4 M,j o

先頭#で歌詞指定
にしてみた

CDEFEDC EFGAGFE

詳細はこちらに記録済み http://init0.net/wp/archives/596

2013
11/16
実験

実験3
MMLを良くしてみる

かえるの歌サンプルのMMLは、CDEFGAB鳴らす
だけ
・1オクターブだけ。変えられない
・半音上げたり下げたりできない
・音の長さ500ms固定(tempo:120)
という残念シンプル仕様
本当はMMLもっと色々できるし、結構遊べるよ?
2013
11/16
宣伝

そういえばMMLといえば・・・

昔MMLをMIDIファイルに変換して鳴らすアプリ作った気がした

2013
11/16

                 移植・・・しますか
参考
●
●

●
●

MIDIファイル(SMF)の超基本
構造

ヘッダ情報(MThd)とトラック情報(MTrk)がある
ヘッダ情報にでSMF0/1/2フォーマット指定があって、トラック情
報の構成が変わる。
0:トラック1つしかない簡単構造。おすすめ
1:複数トラック構造。よく使われる。自前で処理するには複雑。
2:見たことない
演奏に必要ない情報も入ってる(タイトル名)
トラック情報は基本的にはMIDIメッセージを並べて格納してる
一番の違いは時間の概念がある(デルタタイムという可変長の残
念フォーマット)
音譜の時間(差分)情報

2013
11/16
実験

実験3
MMLを良くしてみる

MML文字列をより高度に逐次解析して鳴らして見る
【コマンド入力機能】
・先頭に#があると歌詞(発声文字列)入力と認識します
・MMLを入力すると音を鳴らします
・ch切り替えたい(実装予定)
[ソース公開!予定]
eVY1とMMLであそんでみよう!

2013
11/16
実験

2013
11/16

本実験アプリのMMLの書式
■対応MMLコマンド
MMLにも色々方言があります
 大文字小文字区別しません。どちらでも/混在OK。
・音階 C D E F G A B (ド レ ミ ファ ソ ラ シ ド)
・半音 + # - (音階の後につける)
・休符 R
・明示的音長指定 0-128 (音階(半音)、休符の後につける)
なければLコマンドの音長を使用する
 0を指定した場合、和音指定(次の音が重なる)
・付点 . (音階(半音)、休符の後につける)
・デフォルト音長指定 Ln (n=1-128) default:4(4分音符)
・音量 Vn (n=0-15) default:15(最大)
・オクターブ[絶対指定] On (n=0-9) default:4
・オクターブ[相対指定] > (上げ)
・オクターブ[相対指定] < 下げ)
・テンポ Tn (n=1-255) default:100(100bpm)
・楽器変更 @n (n=0-127) MIDI規定の楽器番号-1を指定(default:0 piano) ※eVocaloidで
は無視されるような
実験
●

●
●

2013
11/16

本実験アプリのMMLの書式
やってみよう
ch1:eVocaloid、ch2:普通のMidi音源切り替
えてみる
ch2:楽器を変えてみる
ch10:ドラム鳴らして見る
実験
●

演奏例
どんぐりころころ

歌詞
#d o N,g M,4' i,k o,4 o,k o,4 o,d o N,b M,4' i,k o
,o,i,k e,J i,h a,m a ,t e,s a,t a,i,h e N
,d o,dZ o,o,g a,d e,t e,k' i,t e,k o J,J i,tS i,w a
,b o ,tS a N,i ,S o,J i,a,s o,b' i,m a,S o

●

どんぶりこ・・・?
どんぐりころころどんぶりこ
おいけにはまってさあたいへん
どじょうがでてきてこんにちわ
ぼっちゃんいっしょにあそびましょ

MML
T60L16 G8EEFEDC G8EED8R8 EEGGAA8A >C8<EEG8R8
GGEEFEDC G8EED8R8 G8E8A8GG AABB>C4
・楽譜を見ながらMMLを書くよ

2013
11/16

・歌詞を見ながらPA(発声文字列)を書くよ
 音符1音に複数発声が当てられてる時はカンマ無しでつなげるよ
 (さいしょの「ド(d o)ン(N)」の間にカンマないよ)
 発音上書き直した方がいいところもあるよ
実験
演奏中・・・

2013
11/16

演奏例
どんぐりころころ
実験
●

演奏例
楽曲だけ入れ替えて見る

歌詞(譜面側に合わせて微調整)
#d o N,g M 4' i,k o,4 o,k o,4 o,o,o,d o N,b M,4' i,k o
,o,i,k e,J i,i,h a,m a,a, ,t e,s a,t a,i,h e N
,M,M,M,d o,dZ o,o,g a,d e,t e,k' i,t e,k o,J,J i,tS i,w a
,b o,tS a,N,i,i,S o,J i,a,s o,b' i,m a,S o,
d o N,g M 4' i,k o,4 o,k o,4 o,o,o,d o N,b M,4' i,k o
,o,i,k e,J i,i,h a,m a,a, ,t e,s a,a,a,t a,i,h e N

●

MML(完全入れ替え)
T130L12O4
E2B2A4BRAG4ARB>C2D4<A4B2.ARB>C2D4C4<B4>CR<BA4G4A2E4A4B2.
GAB>C2R6<ba6g F+4G4A4>C4 <B2R6A12G6F+ E2R4EF+G A2R6GF+6E
D+4E4F+4A4 B2.R4
E2B2A4BRAG4ARB>C2D4<A4B2.ARB>C2D4C4<B4>CR<BA4G4 A4B6AG4F+4 E1

2013
11/16
金剛

演奏例
どんぐり砲戦

演奏中・・・
35.6mm甘栗砲
12.7mmどんぐり砲
12.7mmどんぐり砲

2013
11/16
大破

実験4
その他

・Bluetoothでandroidから演奏できるよ
 コンソールはそのままシリアル送受信に繋がってるの
で、BluetoothモジュールつけるだけでSPPで繋がるよ
 
  準備間に合いませんでした(><)
・Bluetooth(SPP)なら、iOSからでも簡単に演奏できるか
も?しらんけど

2013
11/16
轟沈
●

おしまい

力尽きて実装できなかった機能
・複数ch同時演奏機能。ch:1(eVocaloid)とch:2以降
の伴奏を同時演奏する機能
・演奏した歌詞・MMLを不揮発性メモリに記憶して再
演奏できる機能
・それを電源入れたときに演奏、ループ再生する機能
(PCなくても演奏デモできる)
               いつかがんばるかも?

2013
11/16

More Related Content

Featured

Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationErica Santiago
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellSaba Software
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming LanguageSimplilearn
 
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...Palo Alto Software
 

Featured (20)

Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming Language
 
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...
 

arduinoでeVY1 Shieldを歌わせてみた