Slide 1

Slide 1 text

JUCEではじめる VST/AUプラグイン開発 JUCE JAPAN 編集部代表 塩澤 達矢 Tatsuya Shiozawa 2017/10/14

Slide 2

Slide 2 text

自己紹介 塩澤達矢 / JUCE JAPAN 編集部代表 JUCEとの出会いは2015年末。 VSTプラグインを自作する中で、  その強力な開発環境に衝撃を受ける。 素晴らしいフレームワークなのに、  日本語ドキュメントが皆無…。 日本ユーザーを増やすべく、  非公式ガイド「JUCE JAPAN」を刊行する。 ※「JUCE JAPAN vol.1/vol.2」電子版はAmazon Kindleにて販売中

Slide 3

Slide 3 text

サクッとビルド:Hello VST Plugin

Slide 4

Slide 4 text

JUCE = Jules' Utility Class Extensions 作者:Julian Storer (Head of Software Architecture @ ROLI) C++で書かれたクロスプラットフォームライブラリ   対応プラットフォーム:Windows, macOS, Linux, iOS, Android Projucer = IDE用プロジェクトジェネレータ   各プラットフォームのIDEに対応 VST/Audio Units/RTAS/AAXプラグインが作れる!! GUIコンポーネントが用意されているからがサクッと実装   プラットフォームに依存しないのも魅力!! ライセンスは、有償/無償/OSSから選べる   無償で使える、Personal/Education と GPL 常に改良が行われていて、最新のOS, IDEへの対応も早い!!   GitHub:https://github.com/WeAreROLI/JUCE.git

Slide 5

Slide 5 text

Projucer = IDE用プロジェクトジェネレータ

Slide 6

Slide 6 text

GitHubリポジトリ: https://github.com/WeAreROLI/JUCE.git

Slide 7

Slide 7 text

ライセンス: https://www.juce.com/get-juce

Slide 8

Slide 8 text

JUCEで作りました

Slide 9

Slide 9 text

JUCEで作りました VST/Audio Unitsプラグイン  ・フィルターエフェクト    ・クリッピングエフェクト GitHub: https://github.com/COx2/JUCE_JAPAN_DEMO.git

Slide 10

Slide 10 text

JUCEで作りました VST/Audio Unitsプラグイン GLSL Editor GitHub: https://github.com/COx2/glslEditor_AudioPlugin.git

Slide 11

Slide 11 text

JUCEで作りました JUCE × Live2Dで作るバーチャルシンガーVST

Slide 12

Slide 12 text

JUCEで作りました スタンドアロン・オーディオアプリケーション 作例:アンプ + イコライザー - オーディオインターフェースの入出力を扱える - ASIO SDKを追加することで、 ASIOドライバ対応アプリを作れます。 - オーディオドライバのコンパネは JUCEライブラリにて実装済み。

Slide 13

Slide 13 text

JUCEで作りました Raspberry Pi (Raspbian)でJUCEライブラリをビルドしてみました ブログ: http://www.oufac.com/wp/2017/10/04/juce-build-on-raspberry-pi-stretch/ ラズパイをVSTシンセサイザー・エフェクターにしちゃおう

Slide 14

Slide 14 text

JUCEをはじめよう

Slide 15

Slide 15 text

JUCEをはじめよう 1. 公式サイトからDL URL: https://www.juce.com/get-juce ・プラットフォームごとにDLリンクが用意されています ・プラットフォーム用にビルド済みのProjucerが同梱されています 2. GitHubリポジトリをクローン $ git clone https://github.com/WeAreROLI/JUCE.git ・Projucerを自分の環境でビルドしてください  ディレクトリ: JUCE/extras/Projucer

Slide 16

Slide 16 text

1. 公式サイトからDL URL: https://www.juce.com/get-juce  ・プラットフォームごとにDLリンクが用意されています

Slide 17

Slide 17 text

1. 公式サイトからDL URL: https://www.juce.com/get-juce  ・プラットフォーム用にビルド済みのProjucerが同梱されています

Slide 18

Slide 18 text

1. 公式サイトからDL URL: https://www.juce.com/get-juce  ・Projucerを起動したら、ROLIアカウントでサインイン  ・ROLIアカウントが未登録なら、アカウント作成

Slide 19

Slide 19 text

1. 公式サイトからDL URL: https://www.juce.com/get-juce  ・サインインできると、Projucerが使えるようになります

Slide 20

Slide 20 text

2. GitHubリポジトリをクローン $ git clone https://github.com/WeAreROLI/JUCE.git

Slide 21

Slide 21 text

2. GitHubリポジトリをクローン $ git clone https://github.com/WeAreROLI/JUCE.git  ・Projucerを自分の環境でビルドしてください   ディレクトリ: JUCE/extras/Projucer

Slide 22

Slide 22 text

補足. GPLで使うには Projucerプロジェクトの AppConfig.h にあるGPLモードフラグを有効にする

Slide 23

Slide 23 text

補足. GPL版はここが違う ・Projucer を使用する際、ROLIアカウントのサインインが不要 ・Personal ライセンスではスプラッシュスクリーンが必須だが、GPLでは免除

Slide 24

Slide 24 text

デモ:Hello, Sine !

Slide 25

Slide 25 text

コードスニペット PluginProcessor.cpp void HelloSineAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) { ScopedNoDenormals noDenormals; const int totalNumInputChannels = getTotalNumInputChannels(); const int totalNumOutputChannels = getTotalNumOutputChannels(); for (int i = totalNumInputChannels; i < totalNumOutputChannels; ++i) buffer.clear (i, 0, buffer.getNumSamples()); for (int channel = 0; channel < totalNumInputChannels; ++channel) { float* channelData = buffer.getWritePointer (channel); #define M_PI 3.14159265358979323846 const float level = 1.0f; for (int sample = 0; sample < buffer.getNumSamples(); ++sample) { channelData[sample] = sinf(M_PI * 2 * sample / buffer.getNumSamples() * 2) * level; } } }

Slide 26

Slide 26 text

JUCEのことをもっと知りたい ・JUCE Demoをビルドしてみよう ディレクトリ: JUCE/examples/Demo

Slide 27

Slide 27 text

JUCEのことをもっと知りたい ・チュートリアル https://www.juce.com/tutorials ・APIモジュール https://www.juce.com/doc/modules ・APIクラスリファレンス https://www.juce.com/doc/classes

Slide 28

Slide 28 text

このプロジェクトもチェックしよう : synister 全部入りなオープンソース・VAシンセサイザ -オシレータ×3 -エンベロープ×3 -LFO×3 -フィルタ×2 -エフェクタ×4 (ディレイ、コーラス/フランジャ、 ローファイ、クリッパー) -ステップシーケンサ GitHubリポジトリ:http://github.com/the-synister/the-source

Slide 29

Slide 29 text

このプロジェクトもチェックしよう : dexed DX7/TX7をエミュレートしたFMシンセサイザ DX7/TX7のSysExメッセージにも対応 GitHubリポジトリ:http://github.com/asb2m10/dexed

Slide 30

Slide 30 text

END