TLDR: https://github.com/joe-mccann-dev/3DVerb I made a reverb plugin based on the JUCE Reverb implementation that utilizes the JUCE WebView UI to integrate a 3D WebGL animation to explore the potential for more diverse visualization possibilities, explore their applications, and to learn the JUCE framework/audio programming. What is it:3DVerb is a reverb plugin with a real-time, reactive, and relaxing three dimensional visualization built with JUCE, JUCE WebView, and ThreeJS. I used Projucer...| JUCE - Latest posts
I used to mess with this file a lot for this type of stuff, but found it to be bad practice. One way to change stuff is to just create completely new elements once you detect you are in standalone mode, and use this file as a guide . Line 832 is what I think you are looking for .| JUCE - Latest posts
Hi everyone, I’m currently exploring the Tracktion Engine framework (built on JUCE) and I’m already familiar with Waveform as the flagship example. However, I’d like to know if there are other mature applications based on Tracktion Engine that I could study as references. More specifically, I’m interested in: Maturity & Stability Are there applications that are already in practical use and considered stable? Any long-term maintained community or independent projects? Open Source vs. C...| JUCE - Latest posts
Using the AudioPluginHost off the tip of develop, if you trigger a scan for LV2 plugins, you get a mem leak at shutdown: Detected memory leaks! Dumping objects -> {8110} normal block at 0x0000024970AE5EC0, 39 bytes long. Data: <%APPDATA%\LV2;%C> 25 41 50 50 44 41 54 41 25 5C 4C 56 32 3B 25 43 Object dump complete. The program '[24484] AudioPluginHost.exe' has exited with code 0 (0x0). FWIW, I have no LV2 plugins installed - was just curious about it!| JUCE - Latest posts
I’ve been building a delay with freeze, and so far everything is working well, but whenever I freeze the delay whatever’s stored in the buffer doesn’t get printed to audio whenever I bounce down/freeze and flatten the track. The same thing happens with my parameters if I don’t set and load them during set/getStateInformation. What can I do to store the buffer in a semi-permanent way so it doesn’t get cleared whenever prepareToPlay(?) gets called?| JUCE - Latest posts
I’m running into a strange issue with Logic Pro and AudioPlayHead’s position info. When I put the play cursor at the start of the very first bar in the project, my plug-in gets the following positions for the playhead: getTimeInSamples 540544 getTimeInSamples 540608 getTimeInSamples 540672 getTimeInSamples 540736 getTimeInSamples -383 getTimeInSamples -319 getTimeInSamples -255 getTimeInSamples -191 getTimeInSamples -127 getTimeInSamples -63 getTimeInSamples 0 getTimeInSamples 64 getTimeI...| JUCE - Latest posts
Hello, I work for Basic Wavez, originally a sample company, and over time we’ve grown into more. Recently, we launched a music production learning platform as well as Demmo, a demo-sharing tool for music producers. We are looking to branch into plugin development and have ideas ready to go. If you’re interested in a freelance opportunity working closely with our team on the technical side of things, we’d love to hear from you! Please feel free to send your CV via email! imdatskie@gmail....| JUCE - Latest posts
Meta comment on using macOS version nicknames: It’s getting difficult to discern which of the many geographic locations and wild animals correspond to new or old OS versions. It’s probably useful to specify the version number in addition to the name.| JUCE - Latest posts
A workaround, which doesn’t solve the original problem but may result in an equivalent user experience: hide the component on mouseDown, then delete it on mouseUp| JUCE - Latest posts
A bit of an update on this issue, I have abandoned the drawing part for a while, and now I am looking at it again. I have dug deeper into this issue, now I can confirm that OpenGL is used when painting, but this did not speed up my drawing unfortunately. I am even using the renderOpenGL function instead of paint, but that’s not helping either. The problem is that the Path class still uses CPU when rasterising paths, and the larger the screen area the slower rasterising becomes. I have no cl...| JUCE - Latest posts
Not an expert in CPP and/or JUCE, but I’m trying to implement a long (>511) FIR filter with the convolution class. Everything seems to run and build from a simple example, but I notice that the filter is not doing anything while bypassing on/ff with the plugin host. There are 10dB dfference in low freq resp, so when you listen to it is very easy to notice that is working. (When testing it offline without JUCE of course) When debugging with CMAKE I continuously see: AudioPluginHost[10831:283...| JUCE - Latest posts
About the project Building a modern MIDI controller on the RP2040 (Raspberry Pi Pico), Fatar TP/9S (dual-contact velocity), SSD1306 OLED, encoder, pitch/mod wheels, velocity curves/switching, presets (00–99), panic (All Notes off). Features added during milestones. Role (Per Milestone): Embedded/MIDI Firmware Engineer You will Implement TP/9S dual-contact scan (via MCP23017) → BR→MK Δt → velocity (0–127) USB-MIDI class compliant out; clean routing; Panic; wheels (Pitch bend, CC1) O...| JUCE - Latest posts
Yes, it now successfully builds with clang-cl on both x86-64 and ARM64 Windows. Thanks a lot. I hope that it will get merged into the develop as soon as possible.| JUCE - Latest posts
I’ve seen this posted a few times around the forum but none of the tricks seem to work. I am using juce 8.0.8 and have an issue related to windows scaling on windows 11. I have two opengl windows that seem to not be able to respect scaling as what is being drawn in them will only occupy 1/4 when at greater than 100% scaling. I noticed a similar behavior with a juce window that uses a juce viewport. The window size is scaled down incredibly small, to the minimal size it can be in windows (yo...| JUCE - Latest posts
I’ve just been doing some more poking around and it seems that the ‘Master Bypass’ parameter is not subject to the same problem, and is registered with the ‘Packet Dispatcher’, as in the AAX SDK example plugin. What difference does the packet dispatcher make versus the UpdateParameterNormalizedValue? I’d appreciate any clues - I’d be keen to work on this problem.| JUCE - Latest posts
This is great! Bump to get this merged into JUCE. The entire font system has been updated and I still have to go in and manually add this into my fork.| JUCE - Latest posts
Hi there, I’m currently using the 8.0.8 release on Android, and I found a bug in juce_Oboe_android.cpp that causes audio input to break when plugging or unplugging wired earbuds while the app is running. Steps to reproduce: Create a blank GUI project for Android using Projucer. Create a juce::AudioIODeviceCallback to be used with juce::AudioDeviceManager Initialize juce::AudioDeviceManager with 1 input channel and 2 output channels audioDeviceManager.initialiseWithDefaultDevices(1, 2); Run ...| JUCE - Latest posts
Logged in just to upvote this.| JUCE - Latest posts
I’m working with Tracktion Engine plugins and noticed that PluginRenderContext::bufferStartSample exists as a parameter, but in all the engine’s code I can find, it’s always set to 0: PluginNode::getPluginRenderContext() passes 0 ModifierNode::getPluginRenderContext() sets rc.bufferStartSample = 0 Renderer passes 0 There’s even an assertion: jassert (fc.bufferStartSample == 0); // This assumes bufferStartSample is always 0 The parameter seems designed for writing to sub-sections of la...| JUCE
To display 3 decimals in a label I’ve figured out following code: float cDT1 = 0.f; label_Delay1->setText(juce::String::toDecimalStringWithSignificantFigures(cDT1, (int)setDecimals(cDT1) + 3), juce::NotificationType(0)); float RootComponent::setDecimals(float Deci) { int tInt = (int)Deci; std::string sDec = std::to_string(tInt); int sLen = sDec.length(); return sLen; } It works fine except when Deci = 10, 100, 1000 etc. Only then 4 decimals are displayed. I can’t figure out why. Kare...| JUCE
This looks so obvious I feel like I’m missing something… Toying around with clang20’s rtsan, I noticed that AudioProcessorPlayer::audioDeviceIOCallbackWithContextacquires a (real, blocking) lock. Obviously it is intended to be called on the audio thread. Is this really justified? Same thing goes for AudioProcessor::callbackLock btw. Sounds like a SpinLock job to me… what am I missing?| JUCE
Trying to build juce extras with cmake cmake --build build/juce/AudioPluginHost (after confiuring of course cmake -S submodules/juce -B build/juce/AudioPluginHost -DCMAKE_BUILD_TYPE=Release -DJUCE_BUILD_EXTRAS=ON -DJUCE_BUILD_EXAMPLES=OFF). My build directory was completely empty prior to these steps. I get this build error that I just can’t really understand: In file included from ./submodules/juce/extras/NetworkGraphicsDemo/Source/Main.cpp:52: ./submodules/juce/extras/NetworkGraphicsDemo/...| JUCE
If I log the transport’s position, it moves by 0.001 second every second… It works fine on a real device (not a simulator)| JUCE
Hi! Another one on accessible menu items. We make pretty heavy use of ‘isTicked’ in surge on our menus. Here’s our play mode Unfortunately, the ‘isTicked’ parameter doesn’t seem to show up anywhere. Since its a popup menu there’s no value, the title is unchanged, etc… basically the ticked status of the menu seems invisible to screen readers, at least on macOS. From perusing the code, it seems isTicked is only used to draw the checkmark icon. So is there an easy way to show ‘...| JUCE
Hi, Cakewalk seems to behave differently from other hosts and I wonder if it is an “acceptable” behaviour or not. My plugin has a main stereo bus, and a number of output aux buses. In other hosts (reaper, studio one,…), when the aux buses are enabled, the bus enablements are performed by the host before prepareToPlay is called. So, when I’m in prepareToPlay, getTotalNumOutputChannels returns the correct value, the number of channels that I will actually receive in processBlock. In the...| JUCE
And the next day, someone falls into the trap 😅| JUCE
In a tutorial I am following, I need to enable live build engine in the side panel. But I can’t find it in the Projucer. In my projucer there is only one tab in the window (see screenshot) I am using the latest development branch. How can I show the tab in Projucer? Thanks in advance! my projucer:| JUCE
Hi there, It seems there’s some cache/optimization policy that will resort to outputting opengl rendering at half alpha/brightness when a component’s visibility is enabled under moderate CPU stress. Anyone experienced with juce/opengl have any similar experiences with some advice for fixes or workaround? Is this an issue related to a (older) plugin host’s opengl handling? Thanks for your help. Details Workaround Attempts Enabling setMouseRepaintsOnActivity successfully undims the dimmed...| JUCE
Has anyone else ran into characters painting jankily in the TextEditor when using custom typefaces? I haven’t checked outside of MacOS on latest JUCE. This is happening almost every letter, first paint call has a fragment: Second paint call “finishes” the letter or group of letters: Typing text feels a bit delayed / lofi / rough / bouncy as a result… (I also hear an audio glitch on my very first keystroke after the app starts, which makes me wonder if Something Bad is happening with a...| JUCE
I setup a BubbleComponent that moves along with a slider thumb and saw some glitchyness in the painting of the bubble. I then rolled my own tooltip and I’m seeing the same issue, at least on MacOS: The component is split in half, horizontally, right where two other components underneath it meet. The top half and the bottom half of the tooltip are painted separately, out of sync. A lot of glitchiness goes away if I reduce other painting happening at the same time, so I’m assuming this is a...| JUCE