「クリエイティブ・ミュージック・コーディング」-...

42
Creative Music Coding オーディオ・ビジュアル作品のための オープンソースなソフトウエア・フレームワークの現状と展望 2014年2月22日 第19回 JSSA研究会 田所 淳 (http://yoppa.org)

Upload: atsushi-tadokoro

Post on 04-Jun-2015

4.461 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

Creative Music Coding オーディオ・ビジュアル作品のための オープンソースなソフトウエア・フレームワークの現状と展望

2014年2月22日 第19回 JSSA研究会 田所 淳 (http://yoppa.org)

Page 2: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

発表内容‣ クリエイティブ・コーディング + コンピュータ音楽 !

‣ 「クリエイティブ・コーディング」と総称されている開発フレームワークをコンピュータ音楽作品、オーディオビジュアル作品の創作に用いる手法の現状を紹介 !

‣ 将来への展望 !

‣ 簡単なデモ

Page 3: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

クリエイティブ?

Page 4: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

「クリエイティブ・コーディング」とは?‣ コーディング(プログラミング) ‣ それ自体がクリエイティブな活動 !

‣ では「クリエイティブ・コーディング」とは何か?

Page 5: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

「クリエイティブ・コーディング」とは?‣ 正式な定義はないのが現状 !

‣ ここでは、以下のように考えたい ‣ 「表現」(2D/3Dグラフィック、映像、サウンド) に関する機能に特化した、開発フレームワーク

Page 6: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

「クリエイティブ・コーディング」とは?‣ Pure Data、SuperCollider、Cmix、ChucK などの音響合成のための開発環境は、クリエイティブ・コーディング?

‣ → おそらくYES !

‣ ただし、今回はより汎用的な開発フレームワークについて言及していきたい

Page 7: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

「クリエイティブ・コーディング」とは?‣ 例えば、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: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

「クリエイティブ・コーディング」とは?‣ 例えば、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: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

主要な開発フレームワーク

Page 10: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

主要な開発フレームワーク‣ どのような開発フレームワークが主流なのか? ‣ 正式な統計資料があるわけではない ‣ 話題になったアートプロジェクトなどから類推

Page 11: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

主要な開発フレームワーク‣ Creative Applications 紹介 ‣ コードを用いた様々なプロジェクトを紹介 (2008~)

Page 12: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

主要な開発フレームワーク‣ Creative Applicationsでは、掲載したプロジェクトを開発フレークワーク毎にタグ付けしている

‣ その数を集計することで、現在の傾向の参考となる ‣ あくまで、一つの指標として…

Page 13: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

主要な開発フレームワーク‣ 開発フレームワークごとの掲載件数 (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: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

‣ 今回対象とするのはこのあたり (オープンソースのもの)

開発フレームワーク 件数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: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

クリエイティブコーディング + サウンド‣ Processing、openFrameworks、Cinder、vvvvなどのフレームワークを音響合成に使いたい !

‣ 現状ではフレームワーク単体では、音響合成の機能が貧弱 !

‣ クリエイティブコーディングのフレームワークで、音響作品やオーディオ・ビジュアル作品を制作する手法を概観

Page 16: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

3つの型

Page 17: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

3つの型‣ おおまかに分類

連携型 拡張型 内包型

Page 18: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

1. 連携型‣ アプリケーション間をOSCで連携

Processing

openFrameworks

Cinder

PureData

SuperCollider

ChucK

Page 19: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

1. 連携型‣ アプリケーション間をOSCで連携 ‣ … 今回は割愛

Page 20: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

2. 拡張型‣ 開発フレームワーク内で、拡張機能として音声合成機能を実現する方法 !

‣ それぞれの開発フレームワークには、機能拡張のための仕組みが用意されている !

‣ Processing → Library ‣ openFramewokrs → Addon ‣ Cinder → CinderBlocks

Page 21: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

2. 拡張型‣ 拡張機能を利用して、音響合成機能を強化する !

‣ 例: ‣ Processing + Minim ‣ Processing + Sonia ‣ openFrameworks + ofxUgen ‣ openFrameworks + ofxTonic !

‣ MinimとofxTonicを実際に紹介

Page 22: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

2. 拡張型‣ minim : ProcessingのLibrary ‣ 現在は、Processing本体に同梱されている

Page 23: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

‣ 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: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

2. 拡張型‣ ofxTonic : C++で実装された音響合成ライブラリTonicを、openFrameworksのAddonとして実装

Page 25: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

‣ 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: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

3. 内包型‣ フレームワーク内に他の音響合成エンジンを内包する方法 ‣ 一つのアプリケーションに集約されるので便利 ‣ オープンソースであり、かつ使用するフレームワークと同じ言語で実装されている必要あり !

‣ openFrameworks + ofxPd ‣ openFrameworks + ofxSuperColliderServer

Page 27: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

3. 内包型‣ ofxPd : Pure DataをopenFrameworksに内包

Page 28: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

3. 内包型‣ ofxPdの場合

openFrameworks + Pdの音響合成エンジン

実行時にデータとして読込

Page 29: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

3. 内包型‣ ofxSuperColliderServer : SuperColliderをoFに内包

Page 30: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

3. 内包型‣ ofxSuperColliderの場合

openFrameworks + SCの音響合成エンジン

SuperCollider

楽器(Synth)ファイル書出

実行時にデータとして読込

Synthdef

Page 31: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

3. 内包型‣ 最終的には一つの実行ファイルに ‣ とりあつかいが楽!!

Page 32: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

3. 内包型‣ ofxPdコードサンプル !

‣ Pdパッチ

Page 33: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

‣ 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: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

‣ 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: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

‣ 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: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

デモ‣ openFrameworks + ofxSuperColliderServer

Page 37: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

将来の展望

Page 38: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

将来の展望‣ ネットワーク、Webブラウザの活用 ‣ 音響合成のプラットフォームとしてのHTML5 !

‣ サウンド ‣ Web Audio API ‣ Web MIDI API !

‣ グラフィック ‣ Canvas ‣ WebGL

Page 39: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

将来の展望‣ Gibber (http://gibber.mat.ucsb.edu/)

Page 40: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

将来の展望‣ CoffeeCollider (http://mohayonao.github.io/)

Page 41: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

将来の展望‣ ライブコーディング ‣ TopLap (http://toplap.org/)

Page 42: 「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望

将来の展望‣ ライブコーディング ‣ ofxGLSLSandobox