Uploaded June 2026 | Updated September 2026, 2 weeks ago
Custom knobs are one of the most-asked-about parts of building a plugin, and the secret is that you don't draw them at all. In Part 5 we build real custom knobs from an image filmstrip and a JUCE LookAndFeel, then wire them to the Decay and Reverb parameters of our sampler.
β° Timestamps:
00:00 - Introduction: why pro knobs aren't "drawn"
01:41 - Prerequisites & the GitHub branch
01:55 - Adding the PNG strip (assets + CMake)
03:05 - Getting the knob from binary data
03:50 - How JUCE LookAndFeel works
04:35 - Building the KnobLookAndFeel class
07:02 - Moving the implementation into a .cpp
08:32 - Finding & overriding drawRotarySlider
11:26 - The frame-index math (value β frame)
15:10 - Drawing the frame (and the retina trick)
17:31 - Suppressing warnings with [[maybe_unused]]
18:06 - Why we build a reusable Knob component
19:14 - Creating the Knob class
23:00 - Implementing the constructor & styling
28:08 - Layout with resized()
29:01 - Wiring the Decay knob in the editor
31:44 - Adding the Reverb knob (the payoff)
32:55 - Recap & what's next
Project code: github.com/TheAudioProgrammer/JuceSamplerAudioPlugin
====
π Learn Audio Programming
theaudioprogrammer.com/books
π€ Join our Community
theaudioprogrammer.com/community
πΌ Hire Audio Programmers & Music Tech Professionals
theaudioprogrammer.com/recruitment
π Create Your Own Audio Plug-in with Our Experienced Team
theaudioprogrammer.com/development
Stay connected with us
Instagram: instagram.com/theaudioprogrammer
Facebook: facebook.com/theaudioprogrammer
Twitter: twitter.com/audioprogrammer
Custom knobs are one of the most-asked-about parts of building a plugin, and the secret is that you don't draw them at all. In Part 5 we build real custom knobs from an image filmstrip and a JUCE LookAndFeel, then wire them to the Decay and Reverb parameters of our sampler.
β° Timestamps:
00:00 - Introduction: why pro knobs aren't "drawn"
01:41 - Prerequisites & the GitHub branch
01:55 - Adding the PNG strip (assets + CMake)
03:05 - Getting the knob from binary data
03:50 - How JUCE LookAndFeel works
04:35 - Building the KnobLookAndFeel class
07:02 - Moving the implementation into a .cpp
08:32 - Finding & overriding drawRotarySlider
11:26 - The frame-index math (value β frame)
15:10 - Drawing the frame (and the retina trick)
17:31 - Suppressing warnings with [[maybe_unused]]
18:06 - Why we build a reusable Knob component
19:14 - Creating the Knob class
23:00 - Implementing the constructor & styling
28:08 - Layout with resized()
29:01 - Wiring the Decay knob in the editor
31:44 - Adding the Reverb knob (the payoff)
32:55 - Recap & what's next
Project code: github.com/TheAudioProgrammer/JuceSamplerAudioPlugin
====
π Learn Audio Programming
theaudioprogrammer.com/books
π€ Join our Community
theaudioprogrammer.com/community
πΌ Hire Audio Programmers & Music Tech Professionals
theaudioprogrammer.com/recruitment
π Create Your Own Audio Plug-in with Our Experienced Team
theaudioprogrammer.com/development
Stay connected with us
Instagram: instagram.com/theaudioprogrammer
Facebook: facebook.com/theaudioprogrammer
Twitter: twitter.com/audioprogrammer










