NewsWorksSoftwareTextBioContact
background image

Blog

Juce: ValueTreeState and MVC with child component

March 17, 2024

 

Juce MVC demo and study from Trond Lossius on Vimeo.

A further test/study of how to use ValueTreeState with child components in Juce, ensuring proper model-view-controller (MVC) separation. Figuring this out is a prerequisite to be able to build plugins of any degree of conplexity.

Juce: TreeValue and MVC

February 28, 2024

 

Juce TreeValue test from Trond Lossius on Vimeo.

A small test of using TreeValue in Juce when programming a VST3 plugin. This seems to enable MVC (model-view-controller) separation. In this example two sliders in the editor are associated with, and listens to, the same paramter. It seems to work well when changing the value using one or the other slider, as well as when the parameter value is changed by the host.

Making IEM plugins rescalable

February 25, 2024

A bonus of getting to know the source code for the IEM ambisonic plugins is that I can mod them so they can be resized in Reaper.

Two dots moving

January 22, 2024

 

Two Dots Moving from Trond Lossius on Vimeo.

After three days of intensive coding, two dots are moving…

Please listen using headphones.

AntiRSI recompiled

December 30, 2023

AntiRSI is a handy little macOS app that encourages shorter and longer breaks while at the computer to avoid muscle strain and tension. I first downloaded it over a decade ago and have always copied it when migrating to new laptops. With the latest migration to a computer running Sonoma on an M2 processor, it stopped working.

It appears that the original developer no longer maintains it, but I found a more recent fork on GitHub. I checked out and compiled it, and it instantly works. Nice!

Multchannel Reverb

December 28, 2023

After several days of tweeking, I have managed to make a fully functional multichannel reverb VST plugin. The plugin is developed in Juce and make use of frameworks from the IEM Ambisonic plugin suite. The reverb algorithm itself is the open-source freeverb implemented using Faust on a per-channel basis, with no reverb diffusing or leaking between channels.

More than anything else, this is a working proof-of-concept of how Faust can be used to develop VST plugins processing multichannel and ambisonic signals.

Reverbs in Faust

December 18, 2023

Over the past few days I have been looking into Faust, a functional programming language for sound synthesis and audio processing created at the GRAME-CNCM Research Department.

Specifically, I am checking out the various built-in reverb modules. They are straight forward to compile as JSFX plugins for Reaper, allowing rapid prototyping. It also seems doable to compile into VST plugins using JUCE.

Looking at the source code for the reverb modules, they appear themselves to be programmed in Faust. As such they should be quite hackable.

Multichannel DeGrader VST plugin

August 4, 2023

DeGrader Demo from Trond Lossius on Vimeo.

 

The DeGrader VST plug-in is now fully functional, with similar behaviour to the C’74 Max object degrade~ Based on code base for the IEM Ambisonics Plug-in Suite, it can process from two to sixty-four audio channels. The DSP signal processing algorithm is a port from Jamoma DSP code, and hence proof of concept for porting and implementing further DSP algorithms from Jamoma to VST.

In the process, I gradually learn more about C++ development, the IEM code base and the Juce framework.

Restoring video and audio documentation

August 1, 2023

When I ported this web site to Nanoc last year, video and audio documentation of past works, hosted at Vimeo and SoundCloud, got lost in the transition. Today I finally got around to restore them.

There is a series of works done in recent years that remains to be properly documented and added, one of them being this collaboraiton with Ingeborg Annie Lindahl at Surnalad billag in 2021:

Trond Lossius ยท The Transience of Time (soundtrack, 2021)

Compiling IEM plugins usinc Cmake

July 31, 2023

A note to myself after a way too long hiatus here at the blog:

Here is how to compile the IEM Ambisonics plugins using Cmake:

// Clone and set up repository with the JUCE submodule
git clone https://git.iem.at/audioplugins/IEMPluginSuite.git
cd IEMPluginSuite
git submodule init
git submodule update

// Set up build folder
mkdir build
cd build

// Set up Xcode project to build VST plugins only
cmake .. -GXcode -DIEM_BUILD_VST2=ON \
-DIEM_BUILD_STANDALONE=OFF \
-DIEM_STANDALONE_JACK_SUPPORT=OFF \
-DVST2SDKPATH=“/Users/lossius/dev/VST/vstsdk2.4”

The Xcode project can be found in the build folder. Choose the ALL_BUILD scheme, and build. The VST plugins built will install to the ~/Library/Audio/Plugins/VST/IEM folder.

I have updated the code for a GainAdjust plugin I made a while back to boost signals from Zylia recordings, and I am currently working on some multi-channel DSP processors. Tye altered GUI works and compiles, but it remains to implement the DSP processing.

For older blog posts, please refer to the monthly archives.