2015/09/20
JUCEで作るオーディオアプリケーション
@hotwatermorning
1
自己紹介
✤ @hotwatermorning
✤ C++オーディオプログラマ
✤ 趣味: DTM
✤ C++ポケットリファレンス(共著)
✤ Microsoft MVP for Visual C++ 2015
2
今日のサンプルコード
https://bitbucket.org/hotwatermorning/jucedj
3
JUCEライブラリとは
4
JUCEライブラリとは
✤ C++で書かれた

クロスプラットフォームライブラリ
✤ Win, Mac, Linux, Android, iOS
✤ オーディオアプリケーション開発や

オーディオプラグイン開発に向いている
✤ もともとTraktionという

オーディオ制作用アプリケーション(DAW)の

開発用に作られた
✤ オープンソース(商用ライセンスあり)
5
DAW/プラグインとは
✤ DAW:

オーディオ制作に使う統合制作環境
✤ プログラミングで言うところのIDEみたいなもの
✤ オーディオプラグイン: 

DAW上で動作する楽器やオーディオエフェクトの
アプリケーション
6
Made with JUCE
✤ さまざまなオーディオアプリケーション開発企業
でJUCEが使われている
✤ Arturia / Codex Digital /

Crypton Future Media / Image Line / Korg /
Presonus / Uberschall / etc.,
7
ライセンスについて
✤ GPLと商用ライセンスのデュアルライセンス
✤ Commercial licence for a single product

‒ GBP399
✤ Commercial licence for any number of products

‒ GBP699
8
JUCEライブラリの特徴
9
JUCEライブラリとは
✤ nullptr, override, noexcept, RAII, 

スマートポインタなど、モダンなC++のスタイル
で書かれている
10
Features
✤ オーディオアプリケーション向けのライブラリだ
が、その他にも多くの機能を提供している
✤ オーディオデバイスやオーディオファイル
✤ オーディオプラグイン開発
✤ GUI関連クラス、2D/3D描画
✤ Network
✤ 暗号化
✤ マルチスレッド
✤ XML/JSON

などなど
11
Features
✤ JUCEのexampleにあるJuceDemoという

プロジェクトで、JUCEの機能をひと通り眺めら
れる
12
JUCEライブラリを使うと
✤ オーディオアプリケーションが開発できる
✤ オーディオデバイス/MIDIデバイスのオープン
✤ オーディオファイルの読み込み/書き出し
✤ オーディオプラグインのホスト
✤ オーディオプラグインが開発できる
✤ VST, Audio Unit, AAX, RTAS
13
JUCEが得意ではないこと
✤ ゲームエンジンではない
✤ 3Dやアニメーションのクラスもあるが、ゲームに特化
してるわけではない
✤ 信号処理に特化したライブラリではない
✤ 様々なフィルターや信号処理用の関数が っているわ
けではない
✤ IIRフィルター用のクラスは用意されている
14
JUCEが得意ではないこと
✤ JUCEはさまざまな機能を提供しているが、

それらをJUCEから取り出して特定のモジュール
だけを開発に組み込むような使い方は苦手
15
JUCEを使用した開発
16
JUCEを使用した開発
✤ JUCEを使用したアプリケーションを開発するに
はIntrojucerというツールを使用する
17
Introjucer
✤ JUCEのプロジェクト管理ツール
✤ 各プラットフォームのコンパイラ用のプロジェク
トを生成する
✤ Xcode, Visual Studio, Code::Blocks, make, Ant
✤ CMakeみたいなもの
18
Introjuerの利点
✤ さまざまなプラットフォームに向けた

プロジェクト設定を一括で管理できる
✤ ソースファイルや、プロジェクトで使うJUCEの

モジュールを、それぞれのプラットフォームごとに

整備しなくてもいい
19
Introjuerの利点
✤ さらに、簡易なコードエディタやGUIの設計

ツールが付いている
20
Introjucerの欠点
✤ コードエディターが日本語にうまく対応してない
21
プロジェクトのテンプレート
✤ 開発したいアプリケーション向けのテンプレート
が用意されている
✤ コンソールアプリケーション
✤ GUIアプリケーション
✤ オーディオアプリケーション
✤ オーディオプラグイン

などなど
✤ 初期化や基本的なコードがすでに生成されている
ので、書きたい部分のコードから開発できる
22
JuceDemo
✤ JUCEのexampleに入っているデモプロジェクト
✤ さまざまなJUCEの機能が体験できる
23
ありがとうございました
24

Juceで作るオーディオアプリケーション