Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
SSAW14 第2回 - センサーでMozziをコントロール
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Atsushi Tadokoro
April 19, 2014
Technology
2k
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
470
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.7k
TumblrでWebサイトを作成
tado
0
730
bmaw14 第2回: Touchéセンサーを使う1 Touchéセンサーを作成する
tado
0
2.3k
Other Decks in Technology
See All in Technology
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
610
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
AIエージェントの一手は 誰も見ていない - Falco拡張OSS「Prempti」とeBPFで サーバーレス実行基盤を二層防御する
keitah
0
460
The Knowledge Spine: A Machine-Executable Ontology for Governed Marketing Activation
vananth22
0
120
絵ではじめるKubernetesセキュリティ
aoi1
4
690
EventBridge に「合流」はない ― サーバーレスのワークフローを育てるということ / No Join in EventBridge
yusukeshimizu
2
440
データ_AIの事業の勝敗をわけるもの
nek0128
1
470
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
4
690
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
1
950
Von-Neumann Machines, Dreams & The Futures of IT
ufried
0
120
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
370
技術的負債から考える、AI時代のエンジニアリング投資 — ビズリーチの技術的負債と向き合った経験から、変更し続けられるソフトウェアを考える/ technical-debt-con2026
visional_engineering_and_design
4
3.5k
Featured
See All Featured
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
530
Music & Morning Musume
bryan
48
7.4k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
WENDY [Excerpt]
tessaabrams
14
39k
YesSQL, Process and Tooling at Scale
rocio
174
15k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
500
Google's AI Overviews - The New Search
badams
0
1.6k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Designing for humans not robots
tammielis
254
26k
Practical Orchestrator
shlominoach
192
12k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
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ϓϩάϥϛϯά ɺ͡ΊͷҰา ‣ ͞ΒʹɺϏϒϥʔτͷपՄมʹ
࣮श ‣ લճվͨ͠αϯϓϧΛίϯτϩʔϥʔͰૢ࡞Ͱ͖ΔΑ͏ʹ ͞Βʹվͯ͠ΈΔ ‣ վͨ͠ʮָثʯͰύϑΥʔϚϯε ‣ ͍Ζ͍Ζͳʮ๏ʯΛ։ൃ͠ɺ࿅श͢Δ ‣ ୯७ͳϓϩάϥϜΛɺԋʹΑͬͯັྗతʹϓϨθϯςʔ
γϣϯ͢Δ ! ‣ ༻͢ΔηϯαʔɺՄม߅Ҏ֎ͷͷΛ༻͍ͯՄ