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

24
2015/09/20 JUCEで作るオーディオアプリケーション @hotwatermorning 1

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

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

2015/09/20

JUCEで作るオーディオアプリケーション@hotwatermorning

1

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

自己紹介

✤ @hotwatermorning ✤ C++オーディオプログラマ ✤趣味: DTM ✤ C++ポケットリファレンス(共著) ✤ Microsoft MVP for Visual C++ 2015

2

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

今日のサンプルコード

https://bitbucket.org/hotwatermorning/jucedj

3

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

JUCEライブラリとは

4

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

JUCEライブラリとは✤ C++で書かれたクロスプラットフォームライブラリ ✤ Win, Mac, Linux, Android, iOS

✤オーディオアプリケーション開発やオーディオプラグイン開発に向いている ✤ もともとTraktionというオーディオ制作用アプリケーション(DAW)の開発用に作られた

✤オープンソース(商用ライセンスあり)5

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

DAW/プラグインとは

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

✤オーディオプラグイン: DAW上で動作する楽器やオーディオエフェクトのアプリケーション

6

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

Made with JUCE

✤さまざまなオーディオアプリケーション開発企業でJUCEが使われている ✤ Arturia / Codex Digital /Crypton Future Media / Image Line / Korg / Presonus / Uberschall / etc.,

7

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

ライセンスについて

✤ GPLと商用ライセンスのデュアルライセンス ✤ Commercial licence for a single product ‒ GBP399

✤ Commercial licence for any number of products ‒ GBP699

8

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

JUCEライブラリの特徴

9

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

JUCEライブラリとは

✤ nullptr, override, noexcept, RAII, スマートポインタなど、モダンなC++のスタイルで書かれている

10

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

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

11

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

Features

✤ JUCEのexampleにあるJuceDemoというプロジェクトで、JUCEの機能をひと通り眺められる

12

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

JUCEライブラリを使うと

✤オーディオアプリケーションが開発できる ✤ オーディオデバイス/MIDIデバイスのオープン ✤ オーディオファイルの読み込み/書き出し ✤ オーディオプラグインのホスト

✤オーディオプラグインが開発できる ✤ VST, Audio Unit, AAX, RTAS

13

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

JUCEが得意ではないこと

✤ゲームエンジンではない ✤ 3Dやアニメーションのクラスもあるが、ゲームに特化してるわけではない

✤信号処理に特化したライブラリではない ✤ 様々なフィルターや信号処理用の関数が揃っているわけではない

✤ IIRフィルター用のクラスは用意されている

14

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

JUCEが得意ではないこと

✤ JUCEはさまざまな機能を提供しているが、それらをJUCEから取り出して特定のモジュールだけを開発に組み込むような使い方は苦手

15

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

JUCEを使用した開発

16

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

JUCEを使用した開発

✤ JUCEを使用したアプリケーションを開発するにはIntrojucerというツールを使用する

17

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

Introjucer

✤ JUCEのプロジェクト管理ツール ✤各プラットフォームのコンパイラ用のプロジェクトを生成する ✤ Xcode, Visual Studio, Code::Blocks, make, Ant

✤ CMakeみたいなもの

18

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

Introjuerの利点

✤さまざまなプラットフォームに向けたプロジェクト設定を一括で管理できる ✤ ソースファイルや、プロジェクトで使うJUCEのモジュールを、それぞれのプラットフォームごとに整備しなくてもいい

19

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

Introjuerの利点

✤さらに、簡易なコードエディタやGUIの設計ツールが付いている

20

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

Introjucerの欠点

✤コードエディターが日本語にうまく対応してない

21

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

プロジェクトのテンプレート✤開発したいアプリケーション向けのテンプレートが用意されている ✤ コンソールアプリケーション ✤ GUIアプリケーション ✤ オーディオアプリケーション ✤ オーディオプラグインなどなど

✤初期化や基本的なコードがすでに生成されているので、書きたい部分のコードから開発できる

22

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

JuceDemo

✤ JUCEのexampleに入っているデモプロジェクト ✤さまざまなJUCEの機能が体験できる

23

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

ありがとうございました

24