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
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
TinyGoでオブザーバビリティ?OpenTelemetryはTinyGoで使えるのか / Is OpenTelemetry available in TinyGo environment?
ymotongpoo
2
130
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.5k
DGX Spark でどこまでハッキングができるのか?
kash1064
0
590
AI時代のPRレビューにどう向き合うか?
kairim0
1
170
DWH の限界突破! AI エージェント向け爆速リアルタイムデータ基盤 ClickHouse
jozono
1
390
LLM機能を自作して分かるSnowflake Cortex AIの強み
nayuts
0
360
freeeらしさをAIとともに作る / Creating the freee Experience with AI
ymrl
0
220
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
610
OR学会2026年秋期大会_機械学習と数理最適化の融合による、配合レシピ最適化システム開発事例
brainpadpr
0
130
【Data Engineering Summit2026_登壇資料】医療ビッグデータ×AIエージェントを支えるデータ基盤とハーネスエンジニアリング
jmdc_presentation
0
120
V8のArray.prototype.flatを最大約20倍速くするまでと、巨大OSSへの大規模コミットの道のり
riyaamemiya
0
260
遠藤な_めぐろLT #38 「社内のAI活用推進」@麻布台_20261009
endonanana
0
110
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
730
WCS-LA-2024
lcolladotor
0
870
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
エンジニアに許された特別な時間の終わり
watany
109
250k
KATA
mclloyd
PRO
35
16k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
300
Rails Girls Zürich Keynote
gr2m
96
14k
The Curse of the Amulet
leimatthew05
3
15k
Chasing Engaging Ingredients in Design
codingconduct
0
350
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ϓϩάϥϛϯά ɺ͡ΊͷҰา ‣ ͞ΒʹɺϏϒϥʔτͷपՄมʹ
࣮श ‣ લճվͨ͠αϯϓϧΛίϯτϩʔϥʔͰૢ࡞Ͱ͖ΔΑ͏ʹ ͞Βʹվͯ͠ΈΔ ‣ վͨ͠ʮָثʯͰύϑΥʔϚϯε ‣ ͍Ζ͍Ζͳʮ๏ʯΛ։ൃ͠ɺ࿅श͢Δ ‣ ୯७ͳϓϩάϥϜΛɺԋʹΑͬͯັྗతʹϓϨθϯςʔ
γϣϯ͢Δ ! ‣ ༻͢ΔηϯαʔɺՄม߅Ҏ֎ͷͷΛ༻͍ͯՄ