Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
Interactive Music II ProcessingとSuperColliderの連携 -2
Report
Atsushi Tadokoro
Follow
neet at Freelance
Jan. 15, 2014
•
0 likes
3 likes
×
Be the first to like this
Show More
•
4,456 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Check these out next
Home Automation with Android Things and the Google Assistant
Nilhcem
第二回 冬のスイッチ大勉強会 - FullColorLED & MPU-6050編 -
Wataru Kani
One definition rule - что это такое, и как с этим жить
Platonov Sergey
第一回 冬のスイッチ大勉強会 - XBee編 -
Wataru Kani
ExperiencesSharingOnEmbeddedSystemDevelopment_20160321
Teddy Hsiung
Java Time Puzzlers
Eric Jain
C++ game development with oxygine
corehard_by
start_printf: dev/ic/com.c comstart()
Kiwamu Okabe
1
of
27
Top clipped slide
Interactive Music II ProcessingとSuperColliderの連携 -2
Jan. 15, 2014
•
0 likes
3 likes
×
Be the first to like this
Show More
•
4,456 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Business
Atsushi Tadokoro
Follow
neet at Freelance
Advertisement
Advertisement
Advertisement
Recommended
openFrameworks、サウンド機能・音響合成、ofxMaxim, ofxOsc, ofxPd, ofxSuperCollider
Atsushi Tadokoro
11.2K views
•
81 slides
Lock? We don't need no stinkin' locks!
Michael Barker
23.1K views
•
26 slides
C++ AMP 실천 및 적용 전략
명신 김
108 views
•
46 slides
5 1. character processing
웅식 전
507 views
•
8 slides
The Big Three
Roman Okolovich
1.5K views
•
6 slides
ESCMAScript 6: Get Ready For The Future. Now
Krzysztof Szafranek
3.1K views
•
66 slides
More Related Content
Slideshows for you
(20)
Home Automation with Android Things and the Google Assistant
Nilhcem
•
1.4K views
第二回 冬のスイッチ大勉強会 - FullColorLED & MPU-6050編 -
Wataru Kani
•
1.5K views
One definition rule - что это такое, и как с этим жить
Platonov Sergey
•
1.2K views
第一回 冬のスイッチ大勉強会 - XBee編 -
Wataru Kani
•
1.5K views
ExperiencesSharingOnEmbeddedSystemDevelopment_20160321
Teddy Hsiung
•
139 views
Java Time Puzzlers
Eric Jain
•
541 views
C++ game development with oxygine
corehard_by
•
1.9K views
start_printf: dev/ic/com.c comstart()
Kiwamu Okabe
•
1K views
Drones, Flying robots and Javascript
Laurent Eschenauer
•
5.6K views
Senior design project code for PPG
FrankDin1
•
43 views
node.js and the AR.Drone: building a real-time dashboard using socket.io
Steven Beeckman
•
15.8K views
Advanced programming with #nodecopter
Laurent Eschenauer
•
19.8K views
Ee
Syeda Muskaan
•
130 views
What they don't tell you about JavaScript
Raphael Cruzeiro
•
358 views
PHP in 2018 - Q1 - AFUP Limoges
✅ William Pinaud
•
53 views
AA-sort with SSE4.1
MITSUNARI Shigeo
•
3.3K views
Using zone.js
Standa Opichal
•
823 views
Loop
Hani Aljanabi
•
188 views
OpenCVの基礎
領一 和泉田
•
128K views
Est 8 2 nd
Akshay Sharma
•
710 views
Viewers also liked
(10)
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
Atsushi Tadokoro
•
14.1K views
coma Creators session vol.2
Atsushi Tadokoro
•
4.6K views
プログラム初級講座 - メディア芸術をはじめよう
Atsushi Tadokoro
•
9K views
Interactive Music II ProcessingとSuperColliderの連携1
Atsushi Tadokoro
•
4.7K views
Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)
Atsushi Tadokoro
•
5K views
Interactive Music II Processing基本
Atsushi Tadokoro
•
3.7K views
Media Art II openFrameworks アプリ間の通信とタンジブルなインターフェイス
Atsushi Tadokoro
•
9.1K views
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
Atsushi Tadokoro
•
4.4K views
Interactive Music II Processingによるアニメーション
Atsushi Tadokoro
•
4.8K views
メディア・アート II 第1回: ガイダンス openFrameworks入門
Atsushi Tadokoro
•
24.4K views
Advertisement
Similar to Interactive Music II ProcessingとSuperColliderの連携 -2
(20)
Locks? We Don't Need No Stinkin' Locks - Michael Barker
JAX London
•
957 views
COMPUTER GRAPHICS LAB MANUAL
Vivek Kumar Sinha
•
18.8K views
Sbaw090623
Atsushi Tadokoro
•
868 views
Hypercritical C++ Code Review
Andrey Karpov
•
22 views
Fullstack Conference - Proxies before proxies: The hidden gems of Javascript...
Tim Chaplin
•
946 views
How to add an optimization for C# to RyuJIT
Egor Bogatov
•
2.7K views
Playing With Fire - An Introduction to Node.js
Mike Hagedorn
•
1K views
Ssaw08 0624
Atsushi Tadokoro
•
543 views
A new execution model for Nashorn in Java 9
Marcus Lagergren
•
6K views
Openframworks x Mobile
Janet Huang
•
1.4K views
openFrameworks – パーティクルを動かす、静的配列と動的配列 - 多摩美メディアアートII
Atsushi Tadokoro
•
10.1K views
Presto anatomy
Dongmin Yu
•
5K views
Verifikation - Metoder og Libraries
InfinIT - Innovationsnetværket for it
•
155 views
Functional Reactive Programming / Compositional Event Systems
Leonardo Borges
•
18K views
Beyond Breakpoints: A Tour of Dynamic Analysis
C4Media
•
773 views
Codemania101: The Present, Past and Future of Asynchronous Programming in Python
Yothin Muangsommuk
•
268 views
CODING IN ARDUINO
S Ayub
•
424 views
Diving into HHVM Extensions (PHPNW Conference 2015)
James Titcumb
•
1K views
Diving into HHVM Extensions (Brno PHP Conference 2015)
James Titcumb
•
680 views
Enhancing UI/UX using Java animations
Naman Dwivedi
•
337 views
More from Atsushi Tadokoro
(20)
iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描く
Atsushi Tadokoro
•
3.2K views
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ
Atsushi Tadokoro
•
2.9K views
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使う
Atsushi Tadokoro
•
2K views
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Atsushi Tadokoro
•
2.7K views
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得
Atsushi Tadokoro
•
2.3K views
Tamabi media131118
Atsushi Tadokoro
•
1.2K views
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
Atsushi Tadokoro
•
8.2K views
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1
Atsushi Tadokoro
•
3.1K views
iTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画する
Atsushi Tadokoro
•
1.7K views
Media Art II openFrameworks 複数のシーンの管理・切替え
Atsushi Tadokoro
•
8.2K views
Interactive Music II SuperCollider実習 オリジナルの楽器を作ろう!
Atsushi Tadokoro
•
2.7K views
Geidai music131107
Atsushi Tadokoro
•
803 views
Interactive Music II SuperCollider入門 5 時間構造をつくる
Atsushi Tadokoro
•
3.8K views
iTamabi 13 第7回:ARTSAT API 実践 2 衛星の情報で表現する
Atsushi Tadokoro
•
1.9K views
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Atsushi Tadokoro
•
41.6K views
メディア芸術基礎 II Canvas + Javascriptで図形を描く
Atsushi Tadokoro
•
3.8K views
Interactive Music II SuperCollider入門 4 - 楽器を定義、変調合成(RM, AM, FM)
Atsushi Tadokoro
•
4.6K views
iTamabi 13 第6回:ARTSAT API 実践 1 Web APIから情報を取得する
Atsushi Tadokoro
•
4.7K views
Media Art II 2013 第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
Atsushi Tadokoro
•
24.4K views
Interactive Music II SuperCollider入門 3 - 音を混ぜる(Mix)、楽器を定義(SynthDef)
Atsushi Tadokoro
•
5.2K views
Advertisement
Recently uploaded
(20)
CP HL MEN.pptx
DaffaDamasYoridho
•
0 views
Factors to Consider While Choosing Bulk Storage Silos.pdf
SodiMate
•
0 views
NewBase 29 May-2024 Energy News issue - 1624 by Khaled Al Awadi_compressed.pdf
Khaled Al Awadi
•
0 views
China and Egypt international trade
ahshmandi201510
•
0 views
How to Communicate with Your Dog Energetically.pptx
Essence to Heal
•
0 views
Consumer Trends Report-creative.pptx
Mohit Chawla
•
0 views
smart port hamburg.pdf
dedeakmal
•
0 views
Microcars Market.pdf
Vrushali913094
•
0 views
Discover the Best Outdoor Living and Home Automation Solutions in Melbourne
MVSMelbourne
•
0 views
2022-10-sri-wefox-mobility-platforms one page
Matteo Carbone
•
0 views
T1, W2 (Intro to bus)final 4.pptx
YousraEtman
•
0 views
THE ULTIMATE YOUTUBE GUIDE
BUSINESS GRIB
•
0 views
Sukh Chai Tea franchise businessp roposal.
Franchise Batao
•
0 views
OS-SOSU-M1369-CMMS_Intro.pptx
AZLANAiyub
•
0 views
The Art of War.pdf
arifnajieb1
•
0 views
Bioeast Company Profile.pdf
Danang Setiawan
•
0 views
The influence of perceived social media marketing activities.pptx
Noakhali science and technology university
•
0 views
Budgeting.pptx
Sujata Walode
•
0 views
Chlor-Alkali Market .pdf
pujarathod4
•
0 views
Ferrari_Sierra_DigitalMarketing_PB1_2023-May.pptx
SIERRAFERRARI1
•
0 views
Interactive Music II ProcessingとSuperColliderの連携 -2
Interactive Music II ProcessingとSuperColliderの連携2 東京藝術大学芸術情報センター
(AMC) 2014年1月16日 田所 淳
最終課題 ‣ 課題 : ‣
SuperCollider、またはSuperColliderとProcessingを連携して 表現する ‣ 音、または音と連動した映像 ‣ テーマは自由 ‣ 時間: 30分以内であれば、自由 ! ‣ 次週(1月23日)の授業で発表してください
先週の復習
SuperCollider client for
Processing ‣ ProcessingとSuperColliderの連携には、SuperCollider client for Processingが便利 ‣ OSCp5よりも簡単に、SuperColliderとProcessingの連携が可 能となる
SuperCollider client for
Processing ‣ SuperCollider側: 「test_inst」を定義 SynthDef("test_inst",{ arg freq=440, length=1.0, amp=0.5; var env, out; env = Env.perc(0.01, length); out = SinOsc.ar([freq,freq*1.001]) * EnvGen.kr(env, doneAction:2) * amp; Out.ar(0, out); }).store;
SuperCollider client for
Processing ‣ Processing側: クリックで音が鳴るように import supercollider.*; import oscP5.*; ! Synth synth; ! void setup () { size(600, 400); } ! void draw() { background(0); } ! //マウスクリックに反応 void mouseReleased() { //新規に楽器を定義(まだ生成はされず) synth = new Synth("test_inst"); //引数を設定 synth.set("amp", 0.5); synth.set("freq", map(mouseY, height, 0, 20, 8000)); //楽器を生成 synth.create(); }
SuperCollider client for
Processing ‣ たとえば、ここに円が拡がるアニメーションをつけてみる
SuperCollider client for
Processing ‣ Processing側: import supercollider.*; import oscP5.*; ! Synth synth; int NUM = 100; float[] radius = new float[NUM]; PVector[] pos = new PVector[NUM]; int counter = 0; ! void setup () { size(800, 600); frameRate(60); noFill(); stroke(31, 127, 255); strokeWeight(3); for (int i = 0; i < NUM; i++) { radius[i] = 0; pos[i] = new PVector(width*2, width*2); } }
SuperCollider client for
Processing ‣ Processing側: void draw() { background(0); for (int i = 0; i < NUM; i++) { ellipse(pos[i].x, pos[i].y, radius[i], radius[i]); radius[i] += 1; if(radius[i] > width*1.5){ radius[i] = 0; pos[i].x = width*2; pos[i].y = width*2; } } } ! void mouseReleased() { synth = new Synth("test_inst"); synth.set("amp", 0.5); synth.set("freq", map(mouseY, height, 0, 20, 8000)); synth.create(); int n = counter % NUM; radius[n] = 0; pos[n].x = mouseX; pos[n].y = mouseY; counter++; }
SuperCollider client for
Processing ‣ 完成!!
SuperCollider client for
Processing ‣ SuperColliderの楽器はそのままで、さらに別の例
SuperCollider client for
Processing ‣ Processing側: import supercollider.*; import oscP5.*; ! int NUM = 400; //配列の数 //位置のベクトルの配列 PVector[] location = new PVector[NUM]; //速度のベクトルの配列 PVector[] velocity = new PVector[NUM]; //塗りの色の配列 color[] col = new color[NUM]; //円の大きさ(直径)の配列 float[] diameter = new float[NUM]; ! void setup() { size(640, 480); //640x480pixelの画面を生成 frameRate(60); //フレームレート noStroke(); for (int i = 0; i < NUM; i++) { //配列の数だけ繰り返し //位置のベクトルの初期設定 location[i] = new PVector(random(width), random(height)); //速度のベクトルの初期設定 velocity[i] = new PVector(random(-4, 4), random(-4, 4)); //色の初期設定 col[i] = color(random(255), random(255), random(255), 127); //大きさの初期設定 } } diameter[i] = random(3, 40);
SuperCollider client for
Processing ‣ Processing側: void draw() { background(15); //背景を描画 //配列の数だけ繰り返し for (int i = 0; i < NUM; i++) { fill(col[i]); //色を指定 //指定した位置に円を描画 ellipse(location[i].x, location[i].y, diameter[i], diameter[i]); //位置のベクトルに速度のベクトルを加算、次の位置になる location[i].add(velocity[i]); //もし画面の左端、または右端に到達したら if ((location[i].x > width) || (location[i].x < 0)) { velocity[i].x *= -1; //X方向のスピドを反転 playSynth(location[i].x, location[i].y); } //もし画面の下端、または上端に到達したら if ((location[i].y > height) || (location[i].y < 0)) { velocity[i].y *= -1; //Y方向のスピードを反転 } } } playSynth(location[i].x, location[i].y); ! void playSynth(float x, float y) { //新規に楽器を定義(まだ生成はされず) Synth synth = new Synth("test_inst"); //引数を設定 synth.set("amp", 0.1); synth.set("freq", map(x, height, 0, 20, 8000)); //楽器を生成
SuperCollider client for
Processing ‣ Processing側: ! void playSynth(float x, float y) { //新規に楽器を定義(まだ生成はされず) Synth synth = new Synth("test_inst"); //引数を設定 synth.set("amp", 0.1); synth.set("freq", map(x, height, 0, 20, 8000)); //楽器を生成 } synth.create();
SuperCollider client for
Processing ‣ ボールのバウンドに反応
SuperCollider client for
Processing ‣ Processing側: import supercollider.*; import oscP5.*; ! Synth synth; int NUM = 100; float[] radius = new float[NUM]; PVector[] pos = new PVector[NUM]; int counter = 0; ! void setup () { size(800, 600); frameRate(60); noFill(); stroke(31, 127, 255); strokeWeight(3); for (int i = 0; i < NUM; i++) { radius[i] = 0; pos[i] = new PVector(width*2, width*2); } }
いろいろサンプル
SuperCollider client for
Processing ‣ 拡がる四角形と、FM
SuperCollider client for
Processing ‣ 拡がる四角形と、FM - Processing側: import supercollider.*; import oscP5.*; ! int NUM = 100; int count = 0; ! PVector pos[] = new PVector[NUM]; float size[] = new float[NUM]; Synth fm[] = new Synth[NUM]; ! void setup() { size(640, 480); frameRate(60); for (int i = 0; i < NUM; i++) { pos[i] = new PVector(width*2, height*2); size[i] = 0; } rectMode(CENTER); }
SuperCollider client for
Processing ‣ 拡がる四角形と、FM - Processing側: void draw() { background(0); stroke(255, 127); noFill(); strokeWeight(3); for (int i = 0; i < NUM; i++) { rect(pos[i].x, pos[i].y, size[i], size[i]); if (size[i] > 0) { size[i] += 1; fm[i].set("index", size[i]); } if (size[i] > width/4) { size[i] = 1; } } }
SuperCollider client for
Processing ‣ 拡がる四角形と、FM - Processing側: void mouseReleased() { int n = count % NUM; pos[n].x = mouseX; pos[n].y = mouseY; size[n] = 1; count++; fm[n] = new Synth("fm1"); fm[n].set("amp", 0.2); fm[n].set("freq", map(mouseY, height, 0, 40, 800)); fm[n].set("pan", map(mouseX, 0, width, -1.0, 1.0)); fm[n].set("modPartial", map(mouseY, 0, height, 1.0, 20.0)); fm[n].set("index", 0.0); fm[n].create(); }
SuperCollider client for
Processing ‣ 拡がる四角形と、FM - SuperCollider側: //FM SynthDef("fm1", { arg freq = 440, detune = 2, carPartial = 1, modPartial = 1, index = 3, mul = 0.2, pan=0.0, amp=0.5; var mod, car; mod = SinOsc.ar( [freq, freq+detune] * modPartial, 0, freq * index * LFNoise1.kr(10.reciprocal).abs ); car = Pan2.ar(SinOsc.ar((freq * carPartial) + mod, 0, mul), pan, amp); Out.ar(0, car); }).add;
SuperCollider client for
Processing ‣ 左右に動く帯と、持続音
SuperCollider client for
Processing ‣ 左右に動く帯と、持続音 - Processing側: import supercollider.*; import oscP5.*; ! int BAR_NUM = 100; int count = 0; ! float[] float[] float[] color[] ! x = new float[BAR_NUM]; xSpeed = new float[BAR_NUM]; bWidth = new float[BAR_NUM]; bColor = new color[BAR_NUM]; void setup() { size(640, 480); frameRate(30); colorMode(HSB, 360, 100, 100, 100); noStroke(); for (int i=0; i<BAR_NUM; i++) { x[i] = width * 2; xSpeed[i] = random(-4, 4); bWidth[i] = 0; bColor[i] = color(random(360), random(90, 100), random(50, 100), 20); } //FX Synth synth = new Synth("fx"); synth.create(); }
SuperCollider client for
Processing ‣ 左右に動く帯と、持続音 - Processing側: void draw() { background(0); for (int i=0; i<BAR_NUM; i++) { fill(bColor[i]); rect(x[i], 0, bWidth[i], height); x[i] += xSpeed[i]; if (x[i] > width || x[i] < -bWidth[i]) { xSpeed[i] *= -1; } } } ! void mouseReleased() { int n = int(random(1, 12)); x[count] = mouseX; bWidth[count] = n * 40; count++; Synth synth = new Synth("mySaw"); synth.set("n", n); synth.set("gate", 1); synth.create(); }
SuperCollider client for
Processing ‣ 左右に動く帯と、持続音 - SuperCollider側: ! SynthDef("mySaw", { arg fadeTime = 10, n = 0, rq = 0.3, detune = 0.001, base = 20, ratio = 1.5, harm = 1.5, amp = 0.2, gate=0; var lfo, env, out; env = EnvGen.kr(Env.new([0,1], [fadeTime], 'sine')); lfo = SinOsc.ar(rrand(0.03, 0.05), 0, 100, 600); out = Saw.ar([base+detune.rand, base+detune.rand] * (ratio ** n)) * amp + Saw.ar([base*harm+detune.rand, base*harm+detune.rand] * (ratio ** n)) * amp; out = out * env; out = RLPF.ar(out, lfo * (1.5 ** n), rq).clip2 * 0.5; out = out * EnvGen.kr(Env.adsr(releaseTime:20), gate, doneAction: 2); Out.ar(0, out); }).store; ! //エフェクト SynthDef("fx", { arg lpf=440, rq=0.5, amp=0.8; var in, out; in = In.ar(0, 2); 12.do({ in = AllpassL.ar(in, 0.1, LFNoise2.kr([rrand(0.0, 0.1),rrand(0.0, 0.1)], 0.01,0.06), 4.0) }); out = CompanderD.ar(in) * amp; ReplaceOut.ar(0, out); }).store;
SuperCollider client for
Processing ‣ 課題の方向性 ‣ シンプルなアニメーションと、簡単な楽器 ‣ 組合せて、足しあわせることで、面白い結果を ! ‣ 残り時間は、質問受付にします!
Advertisement