Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

NoMaps2017 Future Sound InterfaceにてJUCEセミナーをさせていただきました。
https://no-maps.jp/event/future_sound_interface

これからJUCEをはじめる方に向けての資料になります。
JUCE: https://www.juce.com/

Tatsuya Shiozawa

October 14, 2017
Tweet

More Decks by Tatsuya Shiozawa

Other Decks in Programming

Transcript

  1. 自己紹介 塩澤達矢 / JUCE JAPAN 編集部代表 JUCEとの出会いは2015年末。 VSTプラグインを自作する中で、  その強力な開発環境に衝撃を受ける。 素晴らしいフレームワークなのに、

     日本語ドキュメントが皆無…。 日本ユーザーを増やすべく、  非公式ガイド「JUCE JAPAN」を刊行する。 ※「JUCE JAPAN vol.1/vol.2」電子版はAmazon Kindleにて販売中
  2. 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
  3. コードスニペット 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; } } }
  4. END