SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
JUCEではじめる
VST/AUプラグイン開発
JUCE JAPAN 編集部代表
塩澤 達矢
Tatsuya Shiozawa
2017/10/14
自己紹介
塩澤達矢 / JUCE JAPAN 編集部代表
JUCEとの出会いは2015年末。
VSTプラグインを自作する中で、
 その強力な開発環境に衝撃を受ける。
素晴らしいフレームワークなのに、
 日本語ドキュメントが皆無…。
日本ユーザーを増やすべく、
 非公式ガイド「JUCE JAPAN」を刊行する。
※「JUCE JAPAN vol.1/vol.2」電子版はAmazon Kindleにて販売中
サクッとビルド:Hello VST Plugin
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
Projucer = IDE用プロジェクトジェネレータ
GitHubリポジトリ: https://github.com/WeAreROLI/JUCE.git
ライセンス: https://www.juce.com/get-juce
JUCEで作りました
JUCEで作りました
VST/Audio Unitsプラグイン
 ・フィルターエフェクト
 
 ・クリッピングエフェクト
GitHub: https://github.com/COx2/JUCE_JAPAN_DEMO.git
JUCEで作りました
VST/Audio Unitsプラグイン
GLSL Editor
GitHub: https://github.com/COx2/glslEditor_AudioPlugin.git
JUCEで作りました
JUCE × Live2Dで作るバーチャルシンガーVST
JUCEで作りました
スタンドアロン・オーディオアプリケーション
作例:アンプ + イコライザー
- オーディオインターフェースの入出力を扱える
- ASIO SDKを追加することで、
ASIOドライバ対応アプリを作れます。
- オーディオドライバのコンパネは
JUCEライブラリにて実装済み。
JUCEで作りました
Raspberry Pi (Raspbian)でJUCEライブラリをビルドしてみました
ブログ: http://www.oufac.com/wp/2017/10/04/juce-build-on-raspberry-pi-stretch/
ラズパイをVSTシンセサイザー・エフェクターにしちゃおう
JUCEをはじめよう
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
1. 公式サイトからDL
URL: https://www.juce.com/get-juce
 ・プラットフォームごとにDLリンクが用意されています
1. 公式サイトからDL
URL: https://www.juce.com/get-juce
 ・プラットフォーム用にビルド済みのProjucerが同梱されています
1. 公式サイトからDL
URL: https://www.juce.com/get-juce
 ・Projucerを起動したら、ROLIアカウントでサインイン
 ・ROLIアカウントが未登録なら、アカウント作成
1. 公式サイトからDL
URL: https://www.juce.com/get-juce
 ・サインインできると、Projucerが使えるようになります
2. GitHubリポジトリをクローン
$ git clone https://github.com/WeAreROLI/JUCE.git
2. GitHubリポジトリをクローン
$ git clone https://github.com/WeAreROLI/JUCE.git
 ・Projucerを自分の環境でビルドしてください
  ディレクトリ: JUCE/extras/Projucer
補足. GPLで使うには
Projucerプロジェクトの AppConfig.h にあるGPLモードフラグを有効にする
補足. GPL版はここが違う
・Projucer を使用する際、ROLIアカウントのサインインが不要
・Personal ライセンスではスプラッシュスクリーンが必須だが、GPLでは免除
デモ:Hello, Sine !
コードスニペット 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;
}
}
}
JUCEのことをもっと知りたい
・JUCE Demoをビルドしてみよう
ディレクトリ: JUCE/examples/Demo
JUCEのことをもっと知りたい
・チュートリアル
https://www.juce.com/tutorials
・APIモジュール
https://www.juce.com/doc/modules
・APIクラスリファレンス
https://www.juce.com/doc/classes
このプロジェクトもチェックしよう : synister
全部入りなオープンソース・VAシンセサイザ
-オシレータ×3
-エンベロープ×3
-LFO×3
-フィルタ×2
-エフェクタ×4
(ディレイ、コーラス/フランジャ、
ローファイ、クリッパー)
-ステップシーケンサ
GitHubリポジトリ:http://github.com/the-synister/the-source
このプロジェクトもチェックしよう : dexed
DX7/TX7をエミュレートしたFMシンセサイザ
DX7/TX7のSysExメッセージにも対応
GitHubリポジトリ:http://github.com/asb2m10/dexed
END

Más contenido relacionado

La actualidad más candente

オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
 

La actualidad más candente (20)

Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
技術ブログを書こう
技術ブログを書こう技術ブログを書こう
技術ブログを書こう
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
 
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
 
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
Gstreamer Basics
Gstreamer BasicsGstreamer Basics
Gstreamer Basics
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
 
第二回CTF勉強会資料
第二回CTF勉強会資料第二回CTF勉強会資料
第二回CTF勉強会資料
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 

Similar a JUCEではじめるVST/AUプラグイン開発@NoMaps2017

Windows 8 cp 速攻レビュー
Windows 8 cp 速攻レビューWindows 8 cp 速攻レビュー
Windows 8 cp 速攻レビュー
Makoto Nishimura
 
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」
Satoshi Noda
 
20101127 Android Usability Seminar
20101127 Android Usability Seminar20101127 Android Usability Seminar
20101127 Android Usability Seminar
Visso株式会社
 

Similar a JUCEではじめるVST/AUプラグイン開発@NoMaps2017 (8)

JUCEではじめるBLOCKS開発_TOKYO BLOCKS HACKATHON 2018
JUCEではじめるBLOCKS開発_TOKYO BLOCKS HACKATHON 2018JUCEではじめるBLOCKS開発_TOKYO BLOCKS HACKATHON 2018
JUCEではじめるBLOCKS開発_TOKYO BLOCKS HACKATHON 2018
 
Swift愛好会_ライブラリを使わずにゴリゴリと
Swift愛好会_ライブラリを使わずにゴリゴリとSwift愛好会_ライブラリを使わずにゴリゴリと
Swift愛好会_ライブラリを使わずにゴリゴリと
 
20120907 osc-lt-docja
20120907 osc-lt-docja20120907 osc-lt-docja
20120907 osc-lt-docja
 
Windows 8 cp 速攻レビュー
Windows 8 cp 速攻レビューWindows 8 cp 速攻レビュー
Windows 8 cp 速攻レビュー
 
tvOS tips
tvOS tipstvOS tips
tvOS tips
 
JUCEハンズオン@Ableton and Max Community Japan #009
JUCEハンズオン@Ableton and Max Community Japan #009JUCEハンズオン@Ableton and Max Community Japan #009
JUCEハンズオン@Ableton and Max Community Japan #009
 
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」
 
20101127 Android Usability Seminar
20101127 Android Usability Seminar20101127 Android Usability Seminar
20101127 Android Usability Seminar
 

JUCEではじめるVST/AUプラグイン開発@NoMaps2017