JUCEプログラミング

目次

JUCEを始める際に知っておきたいと感じたこと

JUCEアプリケーション開発を学び始める際に知っておきたいなと感じたこと1

JUCEアプリケーション開発を学び始める際に知っておきたいなと感じたこと2

デバッグ等

プラグイン開発のデバッグ、メッセージ出力

Plug-In Hostアプリの利用法(DAWを利用しないプラグインの稼働検証)

Getting Started

Projucerを使って一番最初のアプリ

MIDI入出力を備えた初歩のプラグイン作成

プラグインコーディング1、プログラム構成など

プラグインコーディング2、GUIコントロール

プラグインコーディング3、GUIスライダーの値を取得する

プラグインコーディング4、MIDIデータの加工と動作検証

Audio

Build an audio player

Audioチュートリアルことはじめ

AudioPlayerを作成する1、作成するアプリの概要とクラスの調査

AudioPlayerを作成する2、MainComponent.hの作成

AudioPlayerを作成する3、MainComponent.cppの作成1

AudioPlayerを作成する4、音声処理の部分

AudioPlayerを作成する5、ボタンのコールバック関数

AudioPlayerを作成する6、音声関連の関数の動作検証

AudioPlayerを作成する7、ポーズ機能を追加する

AudioPlayerを作成する8、ポーズ機能の処理の流れを追う

AudioPlayerを作成する9、音声ファイルの再生時間を取得表示

AudioPlayerを作成する10、音声ファイルのループ

Processing audio input

ホワイトノイズ変調アプリを動作させる

ホワイトノイズ変調の音声処理

ホワイトノイズ変調の音声処理の続き

Looping audio using the AudioSampleBuffer class

チュートリアル概要

アプリの実装

プログラムの詳細

ゲインを追加

Looping audio using the AudioSampleBuffer class (advanced)

Looping audio using the AudioSampleBuffer class Advance1

Looping audio using the AudioSampleBuffer class Advance2

Looping audio using the AudioSampleBuffer class Advance3

Draw audio waveforms

デモアプリの実装1

デモアプリの実装2

再生位置の表示

描画の子コンポーネント化1

描画の子コンポーネント化2

クリックで再生位置の変更

The AudioDeviceManager class

デモアプリの実装1

デモアプリの実装2

デモアプリの実装3

デモアプリの実装4

Synth

Build a white noise generator

チュートリアルの導入部分

アプリの実装

音声処理部分を調査

音量を調整する

演算の工夫

LとR別々に音量変更

Control audio levels using decibels

チュートリアル概要と、デモアプリの実装1

デモアプリの実装2

デモアプリの実装3

Build a sine wave synthesiser

チュートリアル概要と導入

基本的なデモアプリの実装

デシベルのボリューム

周波数変化のスムーズ化1

周波数変化のスムーズ化2

Build a MIDI synthesiser

基本的なデモアプリの実装1

基本的なデモアプリの実装2

シンセ発音のクラス

音声処理関数の詳細

音声処理関数の流れの考察

外部MIDI入力に対応する

Wavetable synthesis

チュートリアル概要~オシレータクラス実装

ウェーブテーブルのオシレータクラス実装

ウェーブテーブルのオシレータ実装続き

ウェーブテーブルのオシレータの考察

オシレータの改良

サイン波に倍音を付加

MIDI

Create MIDI data

デモアプリの実装1

デモアプリの実装2

MidiBufferクラスでノートオフ

MidiBufferクラスでノートオフ2

Handling MIDI events

GUIのMIDIキーボードのMIDI入力を扱う

MIDI入力デバイスの切り替え

外部MIDI入力とGUIのMIDI入力の取り扱い

MIDI出力処理のスレッドの工夫

Plugins

Adding plug-in parameters

音声のゲインを変更する

プラグインパラメータの保持とゲインの滑らかな変化

XML形式でプラグイン状態を保持

位相反転を行う機能を追加する

Saving and loading your plug-in state

AudioProcessorValueTreeStateを使ったリファクタリング

AudioProcessorValueTreeStateを使ったリファクタリング2

AudioProcessorValueTreeStateを使ったリファクタリング3

Configuring the right bus layouts for your plugins

プラグインのバスレイアウトについて1

プラグインのバスレイアウトについて2

Cascading plug-in effects

音声処理のカスケード1

音声処理のカスケード2 基本となるデモアプリ

音声処理のカスケード3 DSPモジュール有効化とベースクラス作成

音声処理のカスケード4 OscillatorProcessor

音声処理のカスケード5 GainProcessor

音声処理のカスケード6 FilterProcessor

音声処理のカスケード7 ノード間の接続~動作検証

音声処理のカスケード8 updateGraph関数1

音声処理のカスケード9 updateGraph関数2

音声処理のカスケード10 updateGraph関数3

音声処理のカスケード11 updateGraph関数4

オリジナルの改良

フィルターのカットオフ周波数をUIで変更する

フィルターのQを追加する

カスケードプラグインにGUIを自作したい(考察と失敗)

カスケードプラグインにGUIを自作したい、ComboboxのGUI

Comboboxクラスについて、主に見た目の設定の調査

カスケードプラグインにGUIを自作したい、ToggleButtonのGUI

カスケードプラグインのGUIを自力で実装する1

カスケードプラグインのGUIを自力で実装する2

DSP

Introduction to DSP

デモアプリ作成のための準備

デジタル信号処理の概要とDSPモジュールについて調査

オシレータの作成、CustomOscillatorクラスの実装

オシレータにいろいろな波形を設定、ルックアップテーブルによる波形の生成

ホワイトノイズの発生と、複数のオシレータを設置

ラダーフィルタについて調査、ラダーフィルタを実装する

Introduction to DSP、LFOでモジュレーションを実装

リバーブモジュールで残響を追加する

Add distortion through waveshaping and convolution

ウェーブシェーピングについて調査

インパルスレスポンス、コンボリューションについて知る

デモアプリの実装の準備

歪みを加える処理を実装する(ハードクリッピング)

ソフトクリッピングで歪みを加える

フィルターによる音質の調整

畳み込みでキャビネットシミュレータの実装

Create a string model with delay lines

物理モデリングについて調査

デモアプリ実装のための準備

ディレイライン、リングバッファの実装

ディレイエフェクトの実装①、パラメータ編

ディレイエフェクトの実装②、音声処理編

遅延信号のフィルタリング

弦の物理モデリングの実装

ウェーブガイドシンセの処理内容の考察

The fast Fourier transform

最低限のフーリエ変換の知識を調査

スペクトログラムのデモアプリを実装

スペクトログラム描画処理の詳細

Visualise the frequencies of a signal in real time

窓関数について調査

周波数表示のデモアプリ作成1

周波数表示のデモアプリ作成2

Graphics

The application window

ウィンドウの生成と破棄

ウィンドウのカスタマイズについて

The main component

メインコンポーネントクラスの実装について1

メインコンポーネントクラスの実装について2

The Graphics class

paint関数、テキスト描画など

直線描画、矩形描画

複雑な描画など

Animating geometry

基本的な円のアニメーション

少し複雑なアニメーション

Interface Design

Parent and child components

親と子のコンポーネント

親と子のコンポーネント2

親と子のコンポーネント3

Customise the look and feel of your app

デモアプリの準備と内容

lookAndFeelオブジェクトで色の変更

自作lookAndFeelクラスのカスタマイズ

コンポーネント外観の描画処理

ボタンの描画カスタマイズ

Colours in JUCE

デモアプリ実装と内容

juce::Coloursでの色名指定について

The Point, Line, and Rectangle classes

色々な矩形の描画方法

矩形内の点の判定

直線の交差判定など

直線の交差の改良

ランダムな色の矩形描画

Advanced GUI layout techniques

GUIレイアウトのテクニック

GUIの配置・矩形の細分化

Listeners and Broadcasters

リスナー関数の定義の仕方

The Slider class

デモアプリの実装と処理内容

スライダーのカスタマイズ

The Label class

ラベルクラスの特徴とデモアプリ

ラベルクラスのカスタマイズ

The ComboBox class

コンボボックスの使い方

コンボボックスカスタマイズ、enumと見出し

色のカラーコード入力と項目の無効化

Radio buttons and checkboxes

ラジオボタンとチェックボックス

TextButtonをトグル化する

The TableListBox class

デモアプリの実装と不具合の調査

TableListBoxクラスに必須の関数

XMLデータの読み込み

表の描画

セルを入力可能にする

チェックボックスを埋め込む

データのソート

Utility Classes

Using an UndoManager with a ValueTree

Using an UndoManager with a ValueTree1

Using an UndoManager with a ValueTree 2

個人的な調査記録など

WindowsでgithubにJUCEプロジェクトを共有

std::functionについて調査

class毎にソースコードを分割してみる

Projuceerのプロジェクトをコピーする

Projucerの「GUI」と「Audio」テンプレートの違い

背景に画像を当てはめる

ウィンドウのリサイズについて

スライダーのカスタマイズ、ダイヤルを画像で作成

AffinTransformの関数について、ダイヤル画像の検証時の失敗

DAWのテンポ情報をJUCEプラグインで取得

C++で処理時間の計測をしてみる

Mac版JUCEでプラグインをビルドする際、プラグイン情報が反映されない件についての格闘

Windows11にアップグレードして、VisualStudioでビルドする際の奮闘

JUCEプラグイン開発

スペクトログラム表示のプラグイン

スペクトログラムを表示するVSTプラグイン

ゲインプラグイン改良

ゲインプラグインをデシベル表記にする

APVTSパラメータに接続したスライダーの変化をskew(対数的にスケーリング)する

リニアスライダーの外観をカスタマイズする準備

リニアスライダーの外観をカスタマイズ

スペクトルアナライザ

音声処理スレッド編

GUI、メッセージスレッド編

ノイズジェネレータ

WhiteNoiseGenerator

MIDIアルペジエイター

MIDIのアルペイジエイタープラグインを作成する

シンプルなハイパスフィルター

基本編

デジタルフィルタの基礎とパラメータついて調査

ミニマムでシンプルなフィルタープラグインを実装

AudioProcessorValueTreeState(APVTS)の設定手順

ミニマムでシンプルなフィルタープラグイン、カットオフ周波数可変の処理

Qパラメータを追加

スロープを急にする(-12db)

カスタマイズ編

細かな改良、スライダーskewとスロープパラメータのスライダー化

スペアナの追加とGUI検討

スライダーのカスタマイズとスペアナの調整

コンボボックスをAPVTSパラメータに追加

シンプルなハイパスフィルターの見た目をカスタマイズ

juce::Sliderの桁数を設定するための奮闘

インプットゲインとアウトプットゲインを追加する

GUIの細かい調整(主にゲインスライダーの見た目)

スペクトルアナライザのスケーリング検証、低周波数にフォーカスをする

スペクトルアナライザの描画を滑らかにする

コンボボックスのAPVTSでのパラメータ保持について

AudioProcessorValueTreeStateでアンドゥ、リドゥ機能を追加する

フィルターのカーブを描画するために奮闘中

フィルターのカーブを描画するために奮闘中2

ハイパスフィルターのスペアナ部分の見た目の調整と、フィルターカーブ描画処理の改善

GUI作成編

金属質のプラグイン本体画像を作成

立体的なダイヤルノブを作成

画像ボタンを作成、オンオフで画像を変更する

ディレイプラグイン

基本的なディレイ処理の実装

シンプルなディレイエフェクトの実装

パラメータを可変にする

ディレイエフェクトの効果をDAWのテンポと同期する

ディレイエフェクトの処理見直し、パラメータの反映をタイマーで行う

macでビルドした際の、タイマー処理での不具合と検証

カスタマイズ

テンポ同期・音符の長さをコンボボックスで指定する

パラメータの保持、アンドゥ・リドゥの追加

テンポディレイ機能をトグルでオンオフする

ディレイエフェクト、GUIを考える、画像の準備

ディレイエフェクト、GUI画像の埋め込み、背景とスライダー画像の描画

ディレイエフェクト、テンポ同期部分、アンドゥ部分のGUIの調整、Macでの不具合修正

ディレイエフェクト、ディレイ音へのハイパスフィルターの周波数を可変にする

テンポシンクを左右で分離する

少しだけプログラムを見やすくするためにリファクタリング

GUIの再検討

ドライレベルを追加する

エフェクト音にローパスフィルターを追加する

トグルボタンのAPVTSパラメータ化を行う

DAWのBPMと拍の関係について考察

8Tなどのテンポシンク機能を追加

完成したディレイプラグインの配布

シンプルなレシピ記事

TextBoxクラスの基本的な使い方

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次