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
クリエイティブ・ミュージック・コーディング
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Atsushi Tadokoro
February 24, 2014
Technology
980
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
クリエイティブ・ミュージック・コーディング
Atsushi Tadokoro
February 24, 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
大型犬好きによるPugの紹介
yamanoku
1
140
自作バイナリを動かす「入口」8選
puhitaku
2
1.3k
UniFi(ユニファイ)AIカメラの現場活用
ludicmind
1
410
初対面のメンバーがチームを組み、Claude Codeでゼロからサービスをリリース
mkdev10
1
120
おそらく日本で唯一のDevRelインターン生として
husengs7
0
170
TinyGoでオブザーバビリティ?OpenTelemetryはTinyGoで使えるのか / Is OpenTelemetry available in TinyGo environment?
ymotongpoo
2
130
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
2
840
しろおびから始める!ログ活用の第一歩
shumei_ito
0
900
継続的なAIコスト最適化
bgpat
1
280
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
530
More Freedom on the Same Shared GPU Cluster: A Small Team’s Experience with vCluster
nttcom
0
150
自主式軟體工廠
philipz
0
260
Featured
See All Featured
Scaling GitHub
holman
464
140k
Paper Plane (Part 1)
katiecoart
PRO
2
11k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
210
We Are The Robots
honzajavorek
0
390
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
320
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Become a Pro
speakerdeck
PRO
31
6.3k
Transcript
$SFBUJWF.VTJD$PEJOH ΦʔσΟΦɾϏδϡΞϧ࡞ͷͨΊͷ ΦʔϓϯιʔεͳιϑτΤΞɾϑϨʔϜϫʔΫͷݱঢ়ͱల ݄ ୈճ+44"ݚڀձ ాॴ३ IUUQZPQQBPSH
ൃද༰ ‣ ΫϦΤΠςΟϒɾίʔσΟϯά ίϯϐϡʔλԻָ ! ‣ ʮΫϦΤΠςΟϒɾίʔσΟϯάʯͱ૯শ͞Ε͍ͯΔ։ൃ ϑϨʔϜϫʔΫΛίϯϐϡʔλԻָ࡞ɺΦʔσΟΦϏδϡ Ξϧ࡞ͷ࡞ʹ༻͍Δख๏ͷݱঢ়Λհ !
‣ কདྷͷల ! ‣ ؆୯ͳσϞ
ΫϦΤΠςΟϒ
ʮΫϦΤΠςΟϒɾίʔσΟϯάʯͱ ‣ ίʔσΟϯά ϓϩάϥϛϯά ‣ ͦΕࣗମ͕ΫϦΤΠςΟϒͳ׆ಈ ! ‣ ͰʮΫϦΤΠςΟϒɾίʔσΟϯάʯͱԿ͔
ʮΫϦΤΠςΟϒɾίʔσΟϯάʯͱ ‣ ਖ਼ࣜͳఆٛͳ͍ͷ͕ݱঢ় ! ‣ ͜͜ͰɺҎԼͷΑ͏ʹߟ͍͑ͨ ‣ ʮදݱʯ %%άϥϑΟοΫɺө૾ɺαϯυ ʹؔ͢Δ
ػೳʹಛԽͨ͠ɺ։ൃϑϨʔϜϫʔΫ
ʮΫϦΤΠςΟϒɾίʔσΟϯάʯͱ ‣ 1VSF%BUBɺ4VQFS$PMMJEFSɺ$NJYɺ$IVD,ͳͲͷԻڹ߹ ͷͨΊͷ։ൃڥɺΫϦΤΠςΟϒɾίʔσΟϯά ‣ ˠ͓ͦΒ͘:&4 ! ‣ ͨͩ͠ɺࠓճΑΓ൚༻తͳ։ൃϑϨʔϜϫʔΫʹ͍ͭͯ
ݴٴ͍͖͍ͯͨ͠
ʮΫϦΤΠςΟϒɾίʔσΟϯάʯͱ ‣ ྫ͑ɺPQFO'SBNFXPSLTͰɺ༷ʑͳػೳΛܨ͗͋Θͤ Δʮކʯͱදݱ͍ͯ͠Δ OpenGL GLUT FreeImag FreeType fmod RtAudio
QuickTime OpenCV main.cpp testApp.h testApp.cpp ofSimpleApp, ofGraphics, ofImage, ofTrueTypeFont, ofVideoPlayer, ofVideoGrabber, ofTexture, ofSoundPlayer, ofSoundStream, ofSerial, ofMath, ofUtils ...etc.
ʮΫϦΤΠςΟϒɾίʔσΟϯάʯͱ ‣ ྫ͑ɺPQFO'SBNFXPSLTͰɺ༷ʑͳػೳΛܨ͗͋Θͤ Δʮކʯͱදݱ͍ͯ͠Δ OpenGL GLUT FreeImag FreeType fmod RtAudio
QuickTim OpenCV main.cpp testApp.h testApp.cpp ofSimpleApp, ofGraphics, ofImage, ofTrueTypeFont, ofVideoPlayer, ofVideoGrabber, ofTexture, ofSoundPlayer, ofSoundStream, ofSerial, ofMath, ofUtils ...etc. ! ϓϩάϥϜ։ൃͷͨΊͷ ކ (MVF
ओཁͳ։ൃϑϨʔϜϫʔΫ
ओཁͳ։ൃϑϨʔϜϫʔΫ ‣ ͲͷΑ͏ͳ։ൃϑϨʔϜϫʔΫ͕ओྲྀͳͷ͔ ‣ ਖ਼ࣜͳ౷ܭࢿྉ͕͋ΔΘ͚Ͱͳ͍ ‣ ʹͳͬͨΞʔτϓϩδΣΫτͳͲ͔Βྨਪ
ओཁͳ։ൃϑϨʔϜϫʔΫ ‣ $SFBUJWF"QQMJDBUJPOTհ ‣ ίʔυΛ༻͍༷ͨʑͳϓϩδΣΫτΛհ ʙ
ओཁͳ։ൃϑϨʔϜϫʔΫ ‣ $SFBUJWF"QQMJDBUJPOTͰɺܝࡌͨ͠ϓϩδΣΫτΛ։ൃ ϑϨʔΫϫʔΫຖʹλά͚͍ͯ͠Δ ‣ ͦͷΛूܭ͢Δ͜ͱͰɺݱࡏͷͷࢀߟͱͳΔ ‣ ͋͘·ͰɺҰͭͷࢦඪͱͯ͠ʜ
ओཁͳ։ൃϑϨʔϜϫʔΫ ‣ ։ൃϑϨʔϜϫʔΫ͝ͱͷܝࡌ݅ ݄ ։ൃϑϨʔϜϫʔΫ ݅ 1 openFrameworks 304 2
Processing 300 3 Flash 88 4 Javascript 64 5 Max/MSP 56 6 Cinder 54 7 vvvv 49 8 Java 16 9 Quartz Composer 10 10 Unity 8 11 Three.js 6
‣ ࠓճରͱ͢Δͷ͜ͷ͋ͨΓ Φʔϓϯιʔεͷͷ ։ൃϑϨʔϜϫʔΫ ݅ 1 openFrameworks 304 2 Processing
300 3 Flash 88 4 Javascript 64 5 Max/MSP 56 6 Cinder 54 7 vvvv 49 8 Java 16 9 Quartz Composer 10 10 Unity 8 11 Three.js 6 ओཁͳ։ൃϑϨʔϜϫʔΫ
ΫϦΤΠςΟϒίʔσΟϯά αϯυ ‣ 1SPDFTTJOHɺPQFO'SBNFXPSLTɺ$JOEFSɺWWWWͳͲͷϑ ϨʔϜϫʔΫΛԻڹ߹ʹ͍͍ͨ ! ‣ ݱঢ়ͰϑϨʔϜϫʔΫ୯ମͰɺԻڹ߹ͷػೳ͕ශऑ ! ‣
ΫϦΤΠςΟϒίʔσΟϯάͷϑϨʔϜϫʔΫͰɺԻڹ࡞ ΦʔσΟΦɾϏδϡΞϧ࡞Λ੍࡞͢Δख๏Λ֓؍
ͭͷܕ
ͭͷܕ ‣ ͓͓·͔ʹྨ ࿈ܞܕ ֦ுܕ แܕ
࿈ܞܕ ‣ ΞϓϦέʔγϣϯؒΛ04$Ͱ࿈ܞ 1SPDFTTJOH PQFO'SBNFXPSLT $JOEFS 1VSF%BUB 4VQFS$PMMJEFS $IVD,
࿈ܞܕ ‣ ΞϓϦέʔγϣϯؒΛ04$Ͱ࿈ܞ ‣ ʜࠓճׂѪ
֦ுܕ ‣ ։ൃϑϨʔϜϫʔΫͰɺ֦ுػೳͱͯ͠Ի߹ػೳΛ ࣮ݱ͢Δํ๏ ! ‣ ͦΕͧΕͷ։ൃϑϨʔϜϫʔΫʹɺػೳ֦ுͷͨΊͷ Έ͕༻ҙ͞Ε͍ͯΔ ! ‣
1SPDFTTJOHˠ-JCSBSZ ‣ PQFO'SBNFXPLSTˠ"EEPO ‣ $JOEFSˠ$JOEFS#MPDLT
֦ுܕ ‣ ֦ுػೳΛར༻ͯ͠ɺԻڹ߹ػೳΛڧԽ͢Δ ! ‣ ྫɿ ‣ 1SPDFTTJOH .JOJN ‣
1SPDFTTJOH 4POJB ‣ PQFO'SBNFXPSLT PGY6HFO ‣ PQFO'SBNFXPSLT PGY5POJD ! ‣ .JOJNͱPGY5POJDΛ࣮ࡍʹհ
֦ுܕ ‣ NJOJN1SPDFTTJOHͷ-JCSBSZ ‣ ݱࡏɺ1SPDFTTJOHຊମʹಉࠝ͞Ε͍ͯΔ
‣ '.߹1SPDFTTJOH .JOJN import ddf.minim.*; import ddf.minim.ugens.*; Minim minim; AudioOutput
out; Oscil fm; ! void setup(){ size(640, 480, P3D); minim = new Minim( this ); out = minim.getLineOut(); Oscil wave = new Oscil(200, 0.8, Waves.SINE); fm = new Oscil(130, 400, Waves.SINE); fm.patch(wave.frequency); wave.patch(out); } ! void draw(){ } ֦ுܕ
֦ுܕ ‣ PGY5POJD$ Ͱ࣮͞ΕͨԻڹ߹ϥΠϒϥϦ5POJDΛɺ PQFO'SBNFXPSLTͷ"EEPOͱ࣮ͯ͠
‣ '.߹PQFO'SBNFXPSLT PGY5POJD #include "testApp.h" ! void testApp::setup(){ ofSoundStreamSetup(2, 0,
this, 44100, 256, 4); float basePitch = 400; float index = 200; SineWave car = SineWave(); SineWave mod = SineWave(); mod.freq(130); Generator frequency = basePitch + (mod * index); car.freq(frequency); synth.setOutputGen(car); } ! void testApp::update(){ } ! void testApp::draw(){ } ֦ுܕ
แܕ ‣ ϑϨʔϜϫʔΫʹଞͷԻڹ߹ΤϯδϯΛแ͢Δํ๏ ‣ ҰͭͷΞϓϦέʔγϣϯʹू͞ΕΔͷͰศར ‣ ΦʔϓϯιʔεͰ͋Γɺ͔ͭ༻͢ΔϑϨʔϜϫʔΫͱಉ ͡ݴޠͰ࣮͞Ε͍ͯΔඞཁ͋Γ ! ‣
PQFO'SBNFXPSLT PGY1E ‣ PQFO'SBNFXPSLT PGY4VQFS$PMMJEFS4FSWFS
แܕ ‣ PGY1E1VSF%BUBΛPQFO'SBNFXPSLTʹแ
แܕ ‣ PGY1Eͷ߹ PQFO'SBNFXPSLT 1EͷԻڹ߹Τϯδϯ ࣮ߦ࣌ʹσʔλͱͯ͠ಡࠐ
แܕ ‣ PGY4VQFS$PMMJEFS4FSWFS4VQFS$PMMJEFSΛP'ʹแ
แܕ ‣ PGY4VQFS$PMMJEFSͷ߹ PQFO'SBNFXPSLT 4$ͷԻڹ߹Τϯδϯ 4VQFS$PMMJEFS ָث 4ZOUI ϑΝΠϧॻग़
࣮ߦ࣌ʹσʔλͱͯ͠ಡࠐ 4ZOUIEFG
แܕ ‣ ࠷ऴతʹҰͭͷ࣮ߦϑΝΠϧʹ ‣ ͱΓָ͔͍͕͋ͭ
แܕ ‣ PGY1Eίʔυαϯϓϧ ! ‣ 1Eύον
‣ PGY1Eίʔυαϯϓϧ #include "testApp.h" ! void testApp::setup() { ofSetFrameRate(60); ofSoundStreamSetup(2,
1, this, 44100, 2048, 4); pd.init(2, 1, 44100); Patch patch = pd.openPatch("pd/osc.pd"); pd.start(); } void testApp::update() { } void testApp::draw() { } ! void testApp::exit() { pd.stop(); } ! void testApp::mouseMoved(int x, int y) { float freq = ofMap(y, ofGetHeight(), 0, 100, 8000); pd.sendFloat("freq", freq); } แܕ
‣ PGY1Eίʔυαϯϓϧ void testApp::audioReceived (float * in, int buf, int
n) { pd.audioIn(in, buf, n); } ! void testApp::audioRequested (float * out, int buf, int n) { pd.audioOut(out, buf, n); } แܕ
‣ PGY4VQFS$PMMJEFSίʔυαϯϓϧ #include "testApp.h" ! #include "ofxSuperCollider.h" #include "ofxSuperColliderServer.h" !
ofxSCSynth *synth = NULL; ! void testApp::setup(){ ofxSuperColliderServer::init(); synth = new ofxSCSynth("test_inst"); synth->create(); } ! void testApp::update(){ } ! void testApp::draw(){ } ! void testApp::mouseMoved(int x, int y ){ if(synth){ synth->set("freq", ofMap(y, ofGetHeight(), 0, 100, 8000)); } } แܕ
σϞ ‣ PQFO'SBNFXPSLT PGY4VQFS$PMMJEFS4FSWFS
কདྷͷల
কདྷͷల ‣ ωοτϫʔΫɺ8FCϒϥβͷ׆༻ ‣ Իڹ߹ͷϓϥοτϑΥʔϜͱͯ͠ͷ)5.- ! ‣ αϯυ ‣ 8FC"VEJP"1*
‣ 8FC.*%*"1* ! ‣ άϥϑΟοΫ ‣ $BOWBT ‣ 8FC(-
কདྷͷల ‣ (JCCFS IUUQHJCCFSNBUVDTCFEV
কདྷͷల ‣ $P⒎FF$PMMJEFS IUUQNPIBZPOBPHJUIVCJP
কདྷͷల ‣ ϥΠϒίʔσΟϯά ‣ 5PQ-BQ IUUQUPQMBQPSH
কདྷͷల ‣ ϥΠϒίʔσΟϯά ‣ PGY(-4-4BOEPCPY