Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SSAW14 第1回 - Mozziを使ってみる
Search
Atsushi Tadokoro
April 12, 2014
Technology
1
5.7k
SSAW14 第1回 - Mozziを使ってみる
Atsushi Tadokoro
April 12, 2014
Tweet
Share
More Decks by Atsushi Tadokoro
See All by Atsushi Tadokoro
デザイン言語総合講座 - クリエイティブ・コーディング
tado
0
2.7k
Tumblrを使う4 - Webサイトを構成する、固定ページとタグ
tado
0
1.8k
Tumblrを使う3- カスタムHTMLテーマの作成
tado
0
450
Processing.jsによるデータの可視化と生成的表現
tado
1
1.8k
Tumblrを使う2 - テーマをカスタマイズする
tado
0
370
Touchéの仕組みを理解 - ProcessingとArduinoの連携
tado
0
2.3k
Github Pagesで作品を公開、Automatic Page Generatorでサイトを生成
tado
0
1.6k
TumblrでWebサイトを作成
tado
0
720
bmaw14 第2回: Touchéセンサーを使う1 Touchéセンサーを作成する
tado
0
2.2k
Other Decks in Technology
See All in Technology
Agile PBL at New Grads Trainings
kawaguti
PRO
1
420
allow_retry と Arel.sql / allow_retry and Arel.sql
euglena1215
1
160
KotlinConf 2025_イベントレポート
sony
1
130
MCPで変わる Amebaデザインシステム「Spindle」の開発
spindle
PRO
3
3.2k
新アイテムをどう使っていくか?みんなであーだこーだ言ってみよう / 20250911-rpi-jam-tokyo
akkiesoft
0
240
EncryptedSharedPreferences が deprecated になっちゃった!どうしよう! / Oh no! EncryptedSharedPreferences has been deprecated! What should I do?
yanzm
0
260
共有と分離 - Compose Multiplatform "本番導入" の設計指針
error96num
2
390
Webアプリケーションにオブザーバビリティを実装するRust入門ガイド
nwiizo
7
800
Snowflake Intelligenceにはこうやって立ち向かう!クラシルが考えるAI Readyなデータ基盤と活用のためのDataOps
gappy50
0
170
Django's GeneratedField by example - DjangoCon US 2025
pauloxnet
0
150
react-callを使ってダイヤログをいろんなとこで再利用しよう!
shinaps
1
240
AWSを利用する上で知っておきたい名前解決のはなし(10分版)
nagisa53
10
3.1k
Featured
See All Featured
Bash Introduction
62gerente
615
210k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
520
4 Signs Your Business is Dying
shpigford
184
22k
Making the Leap to Tech Lead
cromwellryan
135
9.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.5k
Facilitating Awesome Meetings
lara
55
6.5k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
Gamification - CAS2011
davidbonilla
81
5.4k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
The Cost Of JavaScript in 2023
addyosmani
53
8.9k
Transcript
44"8 ୈճ.P[[JΛͬͯΈΔ ݄ ଟຎඒज़େֶใσβΠϯֶՊϝσΟΞܳज़ίʔε ాॴ३
ࠓͷ༰ ‣ 44"8ɺՐ༵ͷ֓ཁ ‣ .P[[Jͷಋೖ ‣ "SEVJOP .P[[JͰԻ͕ग़Δͱ͜Ζ·ͰΛඪʹ
44"8ʹ͍ͭͯ
44"8Ր༵ͷඪ ‣ "SEVJOP .P[[J ޙड़ Ͱαϯυϓϩάϥϛϯά ‣ σόΠε ίʔυͰɺΦϦδφϧʮָثʯΛ࡞Δ
ࢀߟਤॻ ‣ )BOENBEF&MFDUSPOJD.VTJDʕख࡞Γిࢠճ࿏͔Βੜ·Ε ΔԻͱԻָ ‣ /JDPMBT$PMMJOT ஶ ٱอాߊ߂ ༁ ༁
ધా ༁
44"8Ր༵ͷ༰ ‣ ΞϰΝϯΪϟϧυͷ๏ଇ ‣ ʮ)BOENBEF&MFDUSPOJD.VTJDʯQΑΓ ! ‣ ୈɿٯΛΕ ‣ ୈɿࢥ͍Γڹ͔ͤΖ
‣ ୈɿͤ͘͘Α
.P[[Jʹ͍ͭͯ
.P[[Jʹ͍ͭͯ ‣ .P[[Jˠ"SEVJOPͷͨΊͷԻڹ߹ϥΠϒϥϦ ‣ "SEVJOP୯ମͰɺߴͳԻڹ߹Λ࣮ݱ ‣ IUUQTFOTPSJVNHJUIVCJP.P[[J
.P[[Jʹ͍ͭͯ ‣ ιʔείʔυɺ(JUIVCͰެ։͞Ε͍ͯΔ ‣ IUUQTHJUIVCDPNTFOTPSJVN.P[[J
.P[[Jʹ͍ͭͯ ‣ .P[[JͰͲΜͳԻ͕ੜͰ͖Δͷ͔ ‣ αϯϓϧΛฉ͍ͯΈΔ ‣ IUUQTFOTPSJVNHJUIVCJP.P[[J
.P[[Jͷ४උ
.P[[Jͷ४උ ‣ ͦͦ"SEVJOPͷͲ͔͜ΒԻ͕ग़Δͷ͔ ‣ "SEVJOPʹɺεϐʔΧʔΦʔσΟΦδϟοΫແ͍
εςϨΦϛχδϟοΫͷͱΓ͚ͭ ‣ "SEVJOP͔ΒԻΛग़ྗ͢ΔʹɺΦʔσΟΦग़ྗͷͨΊͷ ύʔπΛࣗ࡞ͯ͠ଓ͠ͳͯ͘ͳΒͳ͍ ‣ ࠓճɺळ݄ͷʮNNεςϨΦϛχδϟοΫ%*1ԽΩο τʯΛ༻ ‣ IUUQBLJ[VLJEFOTIJDPNDBUBMPHHH,
εςϨΦϛχδϟοΫͷͱΓ͚ͭ ‣ NNεςϨΦϛχδϟοΫ%*1ԽΩοτΛϒϨουϘʔυ Ͱ༻͢ΔʹɺՃ͕ඞཁ ‣ ·ͣɺύʔπΛ֬ೝ εςϨΦϛχδϟοΫ มج൫ ϐον
εςϨΦϛχδϟοΫͷͱΓ͚ͭ ‣ Ճ͍͢͠Α͏ɺϒϨουϘʔυΛར༻ ‣ ϐονΛຊͣͭΓͯ͠ɺҎԼͷਤͷΑ͏ʹஔ
‣ l"&1)0/&+"$,%1zͱ͍͏จࣈ͕ॻ͍ͯ͋Δ໘Λ্ʹ ͯ͠ج൫ΛϐονͷҐஔʹ͋ΘͤͯࡌͤΔ εςϨΦϛχδϟοΫͷͱΓ͚ͭ
‣ શͯͷϐονΛϋϯμ͚ͮ εςϨΦϛχδϟοΫͷͱΓ͚ͭ
‣ εςϨΦϛχδϟοΫΛͷҐஔʹ͋ΘͤͯࡌͤΔ εςϨΦϛχδϟοΫͷͱΓ͚ͭ
‣ ϒϨουϘʔυ͔ΒऔΓ֎͠ɺཪଆͷΛશͯϋϯμ͚ͮ εςϨΦϛχδϟοΫͷͱΓ͚ͭ
‣ εςϨΦϛχδϟοΫͷͱΓ͚ͭ
εςϨΦϛχδϟοΫͷͱΓ͚ͭ ‣ ࣍ʹϒϨουϘʔυଆͷઢ ‣ ҎԼͷΑ͏ʹઢ͢Δ
εςϨΦϛχδϟοΫͷͱΓ͚ͭ ‣ Ճͨ͠εςϨΦϛχδϟοΫΛஔ
εςϨΦϛχδϟοΫͷͱΓ͚ͭ ‣ "SEVJOPͱଓ ‣ (/%ͱɺ%JHJUBM0VUΛҎԼͷਤͷͱ͓Γଓ
εςϨΦϛχδϟοΫͷͱΓ͚ͭ ‣ ४උྃ
.P[[JͷμϯϩʔυͱΠϯετʔϧ
.P[[JͷμϯϩʔυͱΠϯετʔϧ ‣ .P[[JΛҎԼ͔Βμϯϩʔυ ‣ .P[[J[JQΛอଘ͢Δ ίί
.P[[JͷμϯϩʔυͱΠϯετʔϧ ‣ "SEVJOPΛىಈ ‣ 4LFUDI*NQPSU-JCSBSZ"EE-JCSBSZ ‣ ઌ΄Ͳμϯϩʔυͨ͠ɺ.P[[J[JQΛબ
.P[[JͷμϯϩʔυͱΠϯετʔϧ ‣ *NQPSU-JCSBSZͷཝʹ.P[[J͕ग़͖ͯͨΒΠϯετʔϧྃ
.P[[Jϓϩάϥϛϯά ɺ͡ΊͷҰา
#include <MozziGuts.h> #include <Oscil.h> #include <tables/sin2048_int8.h> ! Oscil <2048, AUDIO_RATE>
aSin(SIN2048_DATA); ! void setup(){ startMozzi(CONTROL_RATE); aSin.setFreq(440); } ! void updateControl(){ } ! int updateAudio(){ return aSin.next(); } ! void loop(){ audioHook(); } .P[[Jϓϩάϥϛϯά ɺ͡ΊͷҰา ‣ ԼهͷϓϩάϥϜΛ"SEVJOPʹهೖ
.P[[Jϓϩάϥϛϯά ɺ͡ΊͷҰา ‣ ϓϩάϥϜΛهೖͰ͖ͨΒɺ"SEVJOPʹVQMPBE ! ! ! ! ‣ ΠϠϗϯΛδϟοΫʹͯ͠ΈΔ
‣ ͲΜͳԻ͕͢Δ͔ ίί
.P[[Jϓϩάϥϛϯά ɺ͡ΊͷҰา ‣ ͜ͷαϯϓϧɺ4JOΛੜ͢ΔϓϩάϥϜ ‣ ͨͩ͠ɺ"SEVJOPͷܭࢉεϐʔυΛߟྀͯ͠ɺ༷ʑͳ͕ ͞Ε͍ͯΔ ‣ ϓϩάϥϜͷৄࡉΛཧղͯ͠ΈΑ͏
.P[[JϓϩάϥϜߏ ‣ ϓϩάϥϜͷߏҰൠతͳ"SEVJOPϓϩάϥϜ TFUVQ MPPQ ॳظઃఆ ϧʔϓ
.P[[JϓϩάϥϜߏ ‣ ϓϩάϥϜͷߏ.P[[JϓϩάϥϜ TFUVQ MPPQ VQEBUF$POUSPM VQEBUF"VEJP
ॳظઃఆ ϧʔϓ ίϯτϩʔϧߋ৽ ΦʔσΟΦߋ৽
ίϯτϩʔϧͱΦʔσΟΦ ‣ ʮίϯτϩʔϧ৴߸ʯͱʮΦʔσΟΦ৴߸ʯͭͷछྨͷ৴ ߸͕ଘࡏ͢Δ ‣ ༻్ʹԠ͍ͯ͡Θ͚Δ ! ‣ ίϯτϩʔϧ৴߸ ‣
Ώͬ͘Γͱͨ͠มԽɺԻྔɺԻఔͷมԽͳͲ ‣ ܭࢉྔ͕গͳ͍ ! ‣ ΦʔσΟΦ৴߸ ‣ ԻΛੜ͢ΔܗͷมԽ ‣ ܭࢉྔ͕ଟ͍
ίϯτϩʔϧͱΦʔσΟΦ ‣ ͦΕͧΕͷ৴߸ͷࡉ͔͞ɺϓϩάϥϜͰఆٛͰ͖Δ ! ‣ ίϯτϩʔϧ৴߸ ‣ $0/530-@3"5& ‣ ॳظ
! ‣ ΦʔσΟΦ৴߸ ‣ "6%*0@3"5& ! ‣ ͨͩ͠ɺͲͪΒͷႈΛࢦఆ͠ͳ͍ͱ͍͚ͳ͍ ‣ ʜ
! ! ! ‣ ඞཁͳ෦ ϔομϑΝΠϧ ΛಡΈࠐΜͰ͍Δ ! ‣ .P[[J(VUTI.P[[JͷίΞػೳ
‣ 0TDJMIΦγϨʔλ ‣ UBCMFTTJO@JOUIαΠϯͷΛςʔϒϧʹอ࣋ #include <MozziGuts.h> #include <Oscil.h> #include <tables/sin2048_int8.h> .P[[Jϓϩάϥϛϯά ɺ͡ΊͷҰา
! ! ‣ αΠϯͷΦγϨʔλΛఆ͍ٛͯ͠Δ ! ‣ ΦγϨʔλͷαϯϓϧ ‣ "6%*0@3"5&ΦʔσΟΦϨΠτ ‣
4*/@%"5"TJO@JOUIͰఆٛ͞ΕͨαΠϯͷ ςʔϒϧͷ Oscil <2048, AUDIO_RATE> aSin(SIN2048_DATA); .P[[Jϓϩάϥϛϯά ɺ͡ΊͷҰา
! ! ! ‣ ॳظઃఆ ! ‣ $0/530-@3"5& Λࢦఆͯ͠ɺ.P[[JΛ։࢝
‣ ΦγϨʔλͷपΛɺ)[ʹ void setup(){ startMozzi(CONTROL_RATE); aSin.setFreq(440); } .P[[Jϓϩάϥϛϯά ɺ͡ΊͷҰา
! ! ! ‣ ίϯτϩʔϧ৴߸ͷߋ৽ ‣ ݱঢ়ɺͳʹࢦఆ͍ͯ͠ͳ͍ void updateControl(){ !
} .P[[Jϓϩάϥϛϯά ɺ͡ΊͷҰา
! ! ! ‣ ΦʔσΟΦ৴߸ͷߋ৽ ‣ αΠϯͷ࣍ͷαϯϓϧͷΛܭࢉͯ͠ग़ྗ int updateAudio(){ return
aSin.next(); } .P[[Jϓϩάϥϛϯά ɺ͡ΊͷҰา
! ! ! ‣ ϧʔϓ ‣ ݱࡏͷ.P[[JͰੜ͞ΕͨԻΛग़ྗ ‣ BVEJP)PPL Λ༻͍Δ
void loop(){ audioHook(); } .P[[Jϓϩάϥϛϯά ɺ͡ΊͷҰา
.P[[JΫΠζ
.P[[JΫΠζ ‣ ݱࡏͷαϯϓϧϓϩάϥϜΛվͯ͠ҎԼͷػೳʹ ! ‣ 2 ॳڃ ‣ ੜ͞ΕΔԻͷपΛมԽͤ͞Δ
‣ )[ )[ )[ʜFUD ! ‣ 2 தڃ ‣ )[͔Β։࢝ͯ͠ɺঃʑʹप͕ߴ͘ͳΔ ! ‣ 2 Ԡ༻ ‣ αΠϯʹɺϏϒϥʔτ ԻఔͷมԽ Λ͚ͭͯΈΔ
.P[[JΫΠζ ‣ ࣍ि·Ͱͷ՝ʹ͠·͢