![Page 1: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/1.jpg)
Creative Music Coding オーディオ・ビジュアル作品のための オープンソースなソフトウエア・フレームワークの現状と展望
2014年2月22日 第19回 JSSA研究会 田所 淳 (http://yoppa.org)
![Page 2: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/2.jpg)
発表内容‣ クリエイティブ・コーディング + コンピュータ音楽 !
‣ 「クリエイティブ・コーディング」と総称されている開発フレームワークをコンピュータ音楽作品、オーディオビジュアル作品の創作に用いる手法の現状を紹介 !
‣ 将来への展望 !
‣ 簡単なデモ
![Page 3: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/3.jpg)
クリエイティブ?
![Page 4: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/4.jpg)
「クリエイティブ・コーディング」とは?‣ コーディング(プログラミング) ‣ それ自体がクリエイティブな活動 !
‣ では「クリエイティブ・コーディング」とは何か?
![Page 5: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/5.jpg)
「クリエイティブ・コーディング」とは?‣ 正式な定義はないのが現状 !
‣ ここでは、以下のように考えたい ‣ 「表現」(2D/3Dグラフィック、映像、サウンド) に関する機能に特化した、開発フレームワーク
![Page 6: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/6.jpg)
「クリエイティブ・コーディング」とは?‣ Pure Data、SuperCollider、Cmix、ChucK などの音響合成のための開発環境は、クリエイティブ・コーディング?
‣ → おそらくYES !
‣ ただし、今回はより汎用的な開発フレームワークについて言及していきたい
![Page 7: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/7.jpg)
「クリエイティブ・コーディング」とは?‣ 例えば、openFrameworksでは、様々な機能を繋ぎあわせる「糊」と表現している
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.
![Page 8: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/8.jpg)
「クリエイティブ・コーディング」とは?‣ 例えば、openFrameworksでは、様々な機能を繋ぎあわせる「糊」と表現している
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.
!プログラム開発のための
糊 (Glue)
![Page 9: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/9.jpg)
主要な開発フレームワーク
![Page 10: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/10.jpg)
主要な開発フレームワーク‣ どのような開発フレームワークが主流なのか? ‣ 正式な統計資料があるわけではない ‣ 話題になったアートプロジェクトなどから類推
![Page 11: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/11.jpg)
主要な開発フレームワーク‣ Creative Applications 紹介 ‣ コードを用いた様々なプロジェクトを紹介 (2008~)
![Page 12: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/12.jpg)
主要な開発フレームワーク‣ Creative Applicationsでは、掲載したプロジェクトを開発フレークワーク毎にタグ付けしている
‣ その数を集計することで、現在の傾向の参考となる ‣ あくまで、一つの指標として…
![Page 13: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/13.jpg)
主要な開発フレームワーク‣ 開発フレームワークごとの掲載件数 (2014年2月)
開発フレームワーク 件数1 openFrameworks 3042 Processing 3003 Flash 884 Javascript 645 Max/MSP 566 Cinder 547 vvvv 498 Java 169 Quartz Composer 10
10 Unity 811 Three.js 6
![Page 14: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/14.jpg)
‣ 今回対象とするのはこのあたり (オープンソースのもの)
開発フレームワーク 件数1 openFrameworks 3042 Processing 3003 Flash 884 Javascript 645 Max/MSP 566 Cinder 547 vvvv 498 Java 169 Quartz Composer 10
10 Unity 811 Three.js 6
主要な開発フレームワーク
![Page 15: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/15.jpg)
クリエイティブコーディング + サウンド‣ Processing、openFrameworks、Cinder、vvvvなどのフレームワークを音響合成に使いたい !
‣ 現状ではフレームワーク単体では、音響合成の機能が貧弱 !
‣ クリエイティブコーディングのフレームワークで、音響作品やオーディオ・ビジュアル作品を制作する手法を概観
![Page 16: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/16.jpg)
3つの型
![Page 17: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/17.jpg)
3つの型‣ おおまかに分類
連携型 拡張型 内包型
![Page 18: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/18.jpg)
1. 連携型‣ アプリケーション間をOSCで連携
Processing
openFrameworks
Cinder
PureData
SuperCollider
ChucK
![Page 19: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/19.jpg)
1. 連携型‣ アプリケーション間をOSCで連携 ‣ … 今回は割愛
![Page 20: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/20.jpg)
2. 拡張型‣ 開発フレームワーク内で、拡張機能として音声合成機能を実現する方法 !
‣ それぞれの開発フレームワークには、機能拡張のための仕組みが用意されている !
‣ Processing → Library ‣ openFramewokrs → Addon ‣ Cinder → CinderBlocks
![Page 21: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/21.jpg)
2. 拡張型‣ 拡張機能を利用して、音響合成機能を強化する !
‣ 例: ‣ Processing + Minim ‣ Processing + Sonia ‣ openFrameworks + ofxUgen ‣ openFrameworks + ofxTonic !
‣ MinimとofxTonicを実際に紹介
![Page 22: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/22.jpg)
2. 拡張型‣ minim : ProcessingのLibrary ‣ 現在は、Processing本体に同梱されている
![Page 23: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/23.jpg)
‣ FM合成 : Processing + Minimimport 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(){ }
2. 拡張型
![Page 24: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/24.jpg)
2. 拡張型‣ ofxTonic : C++で実装された音響合成ライブラリTonicを、openFrameworksのAddonとして実装
![Page 25: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/25.jpg)
‣ FM合成 : openFrameworks + ofxTonic#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(){ }
2. 拡張型
![Page 26: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/26.jpg)
3. 内包型‣ フレームワーク内に他の音響合成エンジンを内包する方法 ‣ 一つのアプリケーションに集約されるので便利 ‣ オープンソースであり、かつ使用するフレームワークと同じ言語で実装されている必要あり !
‣ openFrameworks + ofxPd ‣ openFrameworks + ofxSuperColliderServer
![Page 27: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/27.jpg)
3. 内包型‣ ofxPd : Pure DataをopenFrameworksに内包
![Page 28: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/28.jpg)
3. 内包型‣ ofxPdの場合
openFrameworks + Pdの音響合成エンジン
実行時にデータとして読込
![Page 29: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/29.jpg)
3. 内包型‣ ofxSuperColliderServer : SuperColliderをoFに内包
![Page 30: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/30.jpg)
3. 内包型‣ ofxSuperColliderの場合
openFrameworks + SCの音響合成エンジン
SuperCollider
楽器(Synth)ファイル書出
実行時にデータとして読込
Synthdef
![Page 31: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/31.jpg)
3. 内包型‣ 最終的には一つの実行ファイルに ‣ とりあつかいが楽!!
![Page 32: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/32.jpg)
3. 内包型‣ ofxPdコードサンプル !
‣ Pdパッチ
![Page 33: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/33.jpg)
‣ ofxPdコードサンプル#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); }
3. 内包型
![Page 34: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/34.jpg)
‣ ofxPdコードサンプル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); }
3. 内包型
![Page 35: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/35.jpg)
‣ ofxSuperColliderコードサンプル#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)); } }
3. 内包型
![Page 36: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/36.jpg)
デモ‣ openFrameworks + ofxSuperColliderServer
![Page 37: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/37.jpg)
将来の展望
![Page 38: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/38.jpg)
将来の展望‣ ネットワーク、Webブラウザの活用 ‣ 音響合成のプラットフォームとしてのHTML5 !
‣ サウンド ‣ Web Audio API ‣ Web MIDI API !
‣ グラフィック ‣ Canvas ‣ WebGL
![Page 42: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望](https://reader034.vdocuments.mx/reader034/viewer/2022042607/556f5ef3d8b42a916b8b5174/html5/thumbnails/42.jpg)
将来の展望‣ ライブコーディング ‣ ofxGLSLSandobox