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 第2回 - センサーでMozziをコントロール
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Atsushi Tadokoro
April 19, 2014
Technology
1.9k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SSAW14 第2回 - センサーでMozziをコントロール
Atsushi Tadokoro
April 19, 2014
More Decks by Atsushi Tadokoro
See All by Atsushi Tadokoro
デザイン言語総合講座 - クリエイティブ・コーディング
tado
0
2.8k
Tumblrを使う4 - Webサイトを構成する、固定ページとタグ
tado
0
1.8k
Tumblrを使う3- カスタムHTMLテーマの作成
tado
0
460
Processing.jsによるデータの可視化と生成的表現
tado
1
1.9k
Tumblrを使う2 - テーマをカスタマイズする
tado
0
380
Touchéの仕組みを理解 - ProcessingとArduinoの連携
tado
0
2.4k
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
「速く作る」から「正しく作る」へ ─ 生成AI時代の開発フロー改革の ロードマップと実行 ─
starfish719
0
7.9k
正解のないAIプロダクトをどう導くか?dodaが挑む、ユーザーの『本音』を構造化する評価設計と検証のリアル
techtekt
PRO
0
180
BigQuery の Cross-cloud Lakehouse への歩み
phaya72
2
560
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.8k
EventBridge Connection
_kensh
4
570
ブロックチェーン / Blockchain
ks91
PRO
0
110
Claude code Orchestra
ozakiomumkj
3
980
もりもり新機能を一挙紹介! AgentCoreに入門して、AWS上にAIエージェントを構築しよう
minorun365
PRO
6
820
新規事業を牽引する技術選定 〜フルスタックTypeScript開発の実践事例〜
nullnull
3
350
Sony_KMP_Journey_KotlinConf2026
sony
2
210
[モダンアプリ勉強会]今更聞けないGit/GitHub入門
tsukuboshi
0
270
「気づいたら仕事が終わっている」バクラクAIエージェント本番運用の裏側 / layerx-bakuraku-aie2026
yuya4
18
10k
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
350
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
190
Utilizing Notion as your number one productivity tool
mfonobong
4
310
Navigating Weather and Climate Data
rabernat
0
210
For a Future-Friendly Web
brad_frost
183
10k
How GitHub (no longer) Works
holman
316
150k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
190
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Into the Great Unknown - MozCon
thekraken
41
2.5k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.5k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
Transcript
44"8 ୈճηϯαʔͰ.P[[JΛίϯτϩʔϧ ݄ ଟຎඒज़େֶใσβΠϯֶՊϝσΟΞܳज़ίʔε ాॴ३
ࠓͷ༰ ‣ Ҿ͖ଓ͖.P[[J ‣ ֎෦ͷηϯαʔίϯτϩʔϥʔ͔Β.P[[JͷϓϩάϥϜΛ ίϯτϩʔϧͰ͖ΔΑ͏ʹ ‣ ࣗ࡞ָثͷୈҰา
ઌिͷ෮श
.P[[Jʹ͍ͭͯ ‣ .P[[Jˠ"SEVJOPͷͨΊͷԻڹ߹ϥΠϒϥϦ ‣ "SEVJOP୯ମͰɺߴͳԻڹ߹Λ࣮ݱ ‣ IUUQTFOTPSJVNHJUIVCJP.P[[J
εςϨΦϛχδϟοΫͷͱΓ͚ͭ ‣ "SEVJOP͔ΒԻΛग़ྗ͢ΔʹɺΦʔσΟΦग़ྗͷͨΊͷ ύʔπΛࣗ࡞ͯ͠ଓ͠ͳͯ͘ͳΒͳ͍ ‣ ࠓճɺळ݄ͷʮNNεςϨΦϛχδϟοΫ%*1ԽΩο τʯΛ༻ ‣ IUUQBLJ[VLJEFOTIJDPNDBUBMPHHH,
εςϨΦϛχδϟοΫͷͱΓ͚ͭ ‣ ࣍ʹϒϨουϘʔυଆͷઢ ‣ ҎԼͷΑ͏ʹઢ͢Δ
εςϨΦϛχδϟοΫͷͱΓ͚ͭ ‣ Ճͨ͠εςϨΦϛχδϟοΫΛஔ
εςϨΦϛχδϟοΫͷͱΓ͚ͭ ‣ "SEVJOPͱଓ ‣ (/%ͱɺ%JHJUBM0VUΛҎԼͷਤͷͱ͓Γଓ
εςϨΦϛχδϟοΫͷͱΓ͚ͭ ‣ ४උྃ
.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ϓϩάϥϛϯά෮श
.P[[JϓϩάϥϜߏ ‣ ϓϩάϥϜͷߏҰൠతͳ"SEVJOPϓϩάϥϜ TFUVQ MPPQ ॳظઃఆ ϧʔϓ
.P[[JϓϩάϥϜߏ ‣ ϓϩάϥϜͷߏ.P[[JϓϩάϥϜ TFUVQ MPPQ VQEBUF$POUSPM VQEBUF"VEJP
ॳظઃఆ ϧʔϓ ίϯτϩʔϧߋ৽ ΦʔσΟΦߋ৽
#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ϓϩάϥϛϯά ɺ͡ΊͷҰา ‣ αϯϓϧ4JOΛੜ͢ΔϓϩάϥϜ
#include <MozziGuts.h> #include <Oscil.h> #include <tables/cos2048_int8.h> ! Oscil<COS2048_NUM_CELLS, AUDIO_RATE> aCos(COS2048_DATA);
Oscil<COS2048_NUM_CELLS, AUDIO_RATE> aVibrato(COS2048_DATA); ! const long intensity = 300; ! void setup(){ startMozzi(CONTROL_RATE); aCos.setFreq(220); aVibrato.setFreq(15.f); } ! void loop(){ audioHook(); } ! void updateControl(){ } ! int updateAudio(){ long vibrato = intensity * aVibrato.next(); return aCos.phMod(vibrato); } .P[[Jϓϩάϥϛϯά ɺ͡ΊͷҰา ‣ αϯϓϧ4JO Ϗϒϥʔτ
.P[[JΛίϯτϩʔϥͰૢ࡞͢Δ
.P[[JΛίϯτϩʔϥͰૢ࡞͢Δ ‣ .P[[JͷϓϩάϥϜΛɺ֎෦ͷίϯτϩʔϥʔ͔Βૢ࡞ ‣ ࠷ॳՄม߅Ͱ ‣ Γํ͕Θ͔ͬͨΒɺผͷηϯαʔͰ
#include <MozziGuts.h> #include <Oscil.h> #include <tables/cos2048_int8.h> ! Oscil<COS2048_NUM_CELLS, AUDIO_RATE> aCos(COS2048_DATA);
Oscil<COS2048_NUM_CELLS, AUDIO_RATE> aVibrato(COS2048_DATA); ! float intensity = 300.0; ! void setup(){ startMozzi(CONTROL_RATE); aCos.setFreq(220); aVibrato.setFreq(15.f); } ! void loop(){ audioHook(); } ! void updateControl(){ } ! int updateAudio(){ long vibrato = intensity * aVibrato.next(); return aCos.phMod(vibrato); } .P[[Jϓϩάϥϛϯά ɺ͡ΊͷҰา ‣ ઌ΄ͲͷϏϒϥʔτͷαϯϓϧ͔Βελʔτ
.P[[JΛίϯτϩʔϥͰૢ࡞͢Δ ‣ Իྔ͕େ͖͗ͯ͢ΠϠϗϯͰௌ͘ͷ͕ͭΒ͍ͷͰɺ·ͣԻ ྔΛίϯτϩʔϧͰ͖ΔΑ͏ʹ ! ‣ .P[[JͷϓϩάϥϜʹɺΞφϩά*/ͷΛө͢Δʹ ‣ NP[[J"OBMPH3FBEΛ༻͢Δ
‣ VQEBUF$POUSPM ͷதͰ༻ void updateControl(){ int hoge = mozziAnalogRead(INPUT_PIN); ... }
.P[[JΛίϯτϩʔϥͰૢ࡞͢Δ ‣ ԻྔΛมԽͤ͞Δʹɺ࠷ऴग़ྗͷʹ͔͚ࢉ͢Εྑ͍ Y
#include <MozziGuts.h> #include <Oscil.h> #include <tables/cos2048_int8.h> ! Oscil<COS2048_NUM_CELLS, AUDIO_RATE> aCos(COS2048_DATA);
Oscil<COS2048_NUM_CELLS, AUDIO_RATE> aVibrato(COS2048_DATA); ! float intensity = 300.0; ! int amp = 127; ! void setup(){ startMozzi(CONTROL_RATE); aCos.setFreq(220); aVibrato.setFreq(15.f); } ! void loop(){ audioHook(); } .P[[Jϓϩάϥϛϯά ɺ͡ΊͷҰา ‣ ઌ΄ͲͷϏϒϥʔτͷαϯϓϧ͔Βελʔτ Ճ
void updateControl(){ } ! int updateAudio(){ float vibrato = intensity
* aVibrato.next(); return int(aCos.phMod(vibrato) * amp) >> 8; } .P[[Jϓϩάϥϛϯά ɺ͡ΊͷҰา ‣ ઌ΄ͲͷϏϒϥʔτͷαϯϓϧ͔Βελʔτ Ճ
.P[[JΛίϯτϩʔϥͰૢ࡞͢Δ ‣ Իྔ͕ʹͳͬͨͣ ! ‣ Ͱ࣍ʹɺՄม߅ͰϘϦϡʔϜΛมߋͰ͖ΔΑ͏ʹ ‣ ·ͣϒϨουϘʔυͷઢ͔Β
.P[[JΛίϯτϩʔϥͰૢ࡞͢Δ ‣ ઢ ϔουϗϯδϟοΫ Մม߅
void updateControl(){ int volume = mozziAnalogRead(0); amp = map(volume, 0,
1024, 0, 255); } ! int updateAudio(){ float vibrato = intensity * aVibrato.next(); return int(aCos.phMod(vibrato) * amp) >> 8; } .P[[Jϓϩάϥϛϯά ɺ͡ΊͷҰา ‣ VQEBUF$POUSPM ʹՃ Ճ
.P[[JΛίϯτϩʔϥͰૢ࡞͢Δ ‣ ࣍ʹϏϒϥʔτͷਂ͞มߋͰ͖ΔΑ͏ʹ
.P[[JΛίϯτϩʔϥͰૢ࡞͢Δ ‣ Մม߅Ճ
.P[[JΛίϯτϩʔϥͰૢ࡞͢Δ ‣ ͞ΒʹɺϏϒϥʔτͷपՄมʹ
.P[[JΛίϯτϩʔϥͰૢ࡞͢Δ ‣ Մม߅Λ͞ΒʹՃ
#include <MozziGuts.h> #include <Oscil.h> #include <tables/cos2048_int8.h> ! Oscil<COS2048_NUM_CELLS, AUDIO_RATE> aCos(COS2048_DATA);
Oscil<COS2048_NUM_CELLS, AUDIO_RATE> aVibrato(COS2048_DATA); ! float intensity = 300.f; float vib = 15.f; int amp = 127; ! void setup(){ startMozzi(CONTROL_RATE); aCos.setFreq(80); aVibrato.setFreq(15.f); } ! void loop(){ audioHook(); } .P[[Jϓϩάϥϛϯά ɺ͡ΊͷҰา ‣ ͞ΒʹɺϏϒϥʔτͷपՄมʹ
void updateControl(){ int volume1 = mozziAnalogRead(0); amp = map(volume1, 0,
1024, 0, 255); int volume2 = mozziAnalogRead(1); intensity = map(volume2, 0, 1024, 0, 20000); int volume3 = mozziAnalogRead(2); vib = map(volume3, 0, 1024, 0, 100); aVibrato.setFreq(vib); } ! int updateAudio(){ float vibrato = intensity * aVibrato.next(); return int(aCos.phMod(vibrato) * amp) >> 8; } .P[[Jϓϩάϥϛϯά ɺ͡ΊͷҰา ‣ ͞ΒʹɺϏϒϥʔτͷपՄมʹ
࣮श ‣ લճվͨ͠αϯϓϧΛίϯτϩʔϥʔͰૢ࡞Ͱ͖ΔΑ͏ʹ ͞Βʹվͯ͠ΈΔ ‣ վͨ͠ʮָثʯͰύϑΥʔϚϯε ‣ ͍Ζ͍Ζͳʮ๏ʯΛ։ൃ͠ɺ࿅श͢Δ ‣ ୯७ͳϓϩάϥϜΛɺԋʹΑͬͯັྗతʹϓϨθϯςʔ
γϣϯ͢Δ ! ‣ ༻͢ΔηϯαʔɺՄม߅Ҏ֎ͷͷΛ༻͍ͯՄ