Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What are the problem?

posted at

updated at

3rd party JUCEモジュールの紹介 -Gin-

本記事はJUCE Advent Calendar 2020 の12月16日向けに投稿した記事です。

JUCEって何?

JUCE (Jules' Utility Class Extensions)は、C++言語によるマルチメディア系アプリケーションの開発を支援するフレームワークです。クロスプラットフォーム設計のライブラリと、付属されているプロジェクトジェネレータ『Projucer』から各種IDE(VisualStudio, Xcode, Makefile)向けにプロジェクトファイルを出力することで、ワンソースからWindows, macOS, Linux, iOS, Android で動作するアプリケーションを作成することができます。
公式サイト

JUCEライブラリ と Projucer

JUCEフレームワークは、各種機能を提供する『JUCEライブラリ』と、各種プラットフォーム向けのプロジェクトを出力するジェネレータ『Projucer』によって構成されます。
『JUCEライブラリ』には機能別に『モジュール』という単位で構成が分かれており、『Projucer』はプロジェクトに必要なモジュールを取り込んで、IDE用のプロジェクトファイルやビルドスクリプトに紐付ける作業を担当します。

JUCE_Projucer.png

JUCEライブラリは、機能別に分離されたモジュール群から成り立っています。
オーディオデバイスとの接続を処理するモジュールや、オーディオプラグインフォーマットの定義を持つモジュール、オーディオファイルを読み込む機能を持つモジュール、OSC(Open Sound Control)の機能を抽象化したモジュールなど、モダンなオーディオアプリケーションを実装するのに十分な程の機能を提供します。

モジュール名 提供する機能
juce_analytics ユーザーの利用情報を収集して送信するクラス
juce_audio_basics オーディオバッファの操作、MIDIメッセージ処理、シンセサイザーなどのクラス
juce_audio_devices オーディオインターフェースおよびMIDIインターフェースの制御や、再生と録音をするクラス
juce_audio_formats さまざまなオーディオファイル形式を読み込み・書き込みするクラス
juce_audio_plugin_client VST、VST3、AudioUnit、AAX、RTASプラグインを構築するためのクラス
juce_audio_processors VST、AU、または内部で生成されたオーディオプロセッサのロードおよび再生をするクラス
juce_audio_utils オーディオ関連のGUIおよびその他のタスク(MIDI over BLE含む)を処理するクラス
juce_blocks_basics ROLI BLOCKSデバイスを低レベルで制御するためのJUCEラッパー
juce_box2d Box2D物理エンジンといくつかのユーティリティクラス
juce_core 他のJUCEモジュールが必要とする基本的な必須セット、コアモジュール
juce_cryptography RSA、Blowfish、MD5、SHAなどのさまざまな基本暗号化機能を持つクラス
juce_data_structures アンドゥ/リドゥなどを管理する、スマートなデータ構造を操作するクラス
juce_dsp オーディオバッファ操作、デジタルオーディオ処理、フィルタリング、オーバーサンプリング、数学関数などを高速に実行するクラス
juce_events アプリケーションのメインイベントループを実行し、メッセージ、タイマーなどを送受信するためのクラス
juce_graphics 2Dベクトルグラフィックス、画像読み込み/保存、フォント処理などをするためのクラス
juce_gui_basics 基本的なユーザーインターフェイスを作成するコンポーネントおよび関連するクラス
juce_gui_extra 特別なタスクを処理するためのGUIクラス拡張
juce_opengl JUCEウィンドウでOpenGLをレンダリングするためのクラス
juce_osc OSC(Open Sound Control)を実装したクラス
juce_product_unlocking オンライン製品認証を実装するクラス
juce_video ビデオ再生と、カメラ入力をキャプチャするためのクラス

カスタムJUCEモジュール

JUCEライブラリを構成するモジュールは、必要があれば自作することもできます。
参考:JUCEモジュールを作って外部ライブラリを参照する

本記事では、公式以外で提供されているJUCEモジュール(3rd party JUCEモジュール)の1つである、『Gin』について紹介していきます。

Gin

URL: https://github.com/FigBug/Gin
Author: FigBug
License: BSD 3-Clause
Feature: Image Processing, Networking, File System, Utility, Debugging, etc...

特徴

JUCEをベースとしつつ開発者フレンドリーな機能を追加実装している拡張モジュールです。
Ginでは機能別に5つのJUCEモジュールを提供しています。

モジュール名 提供する機能
gin Ginの基本クラス群。画像処理、ダウンローダ、ValueTreeユーティリティなどの機能を提供する。
gin_dsp DSP(信号処理)やMIDIを扱うのに特化した機能を提供する。
gin_metadata EXIFやIPTCなどの画像ファイルフォーマットのメタデータの処理に特化した機能を提供する。
gin_websocket OAuthやWebSocketなどのネットワーク通信に特化した機能を提供する。
gin_plugin ADSRのGUIやModulation Matrixなど、オーディオプラグインを開発するのに便利な機能を提供する。

Example

GinリポジトリのGin/examples/Demoディレクトリ内にあるDemo.jucerをProjucerで開くことでDemoプロジェクトの実行ファイルをビルドすることができます。

Demo

■ Solid Brending
image.png

■ Graident Map
image.png

■ Message Pack
image.png

■ Shared Memory
image.png

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
3
Help us understand the problem. What are the problem?