I had an existing audio application written against Juce 1.54.27 on a PC.
Time to convert from old to new (modularized) juce? 6 hours, mostly because I modified the audio classes and had to port the changes. Then, the same day I ported the source code to a brand new iMac/xcode 4.3 system. Time to convert? 2 hours.
So, one day’s hard labor to update my PC version, AND port it to the macintosh. It doesn’t get any better than that. Oh, I have about 5 hours or so total (recent) experience on a mac so far. The fact that JUCE takes care of all the heavy lifting by creating the mac project files probably saved me a week or two of frustration right there. Not to mention how long it would have taken me to come up to speed on ‘standard mac programs’.
Yes, I added some methods to AudioProcessor and had to implement them in those classes that inherited from it.
For example:
If I want to switch from guitar amp A (clean/verse) to guitar amp B (dirty/lead) then when I execute the switch I want to immediately being hearing guitar amp B (lead), while guitar amp A is allowed to continue processing, letting reverb and delay tailoff’s to sound until it gets quiet enough to bypass it. And when bypassed it doesn’t consume any cpu cycles.
I couldn’t find any way to add that functionality other than deep in the heart of the vst/audiounit plugin instances etc. If you know of a better way I’d appreciate your thoughts Vinn, I was a newbie then (now I’m obsessive) says the forum.
That had nothing to do with juce, A lot of that time was spent in ‘systems management’ and bringing the new mac online with the pc etc. This is the first xcode/visual studio cross-platform thing I’ve done. Lots of learning. Also, I’ve modified the juce audio classes and needed to bring those changes into the audio module(s) of juce.
[quote=“kurt6string”]Yes, I added some methods to AudioProcessor and had to implement them in those classes that inherited from it.
For example:
If I want to switch from guitar amp A (clean/verse) to guitar amp B (dirty/lead) then when I execute the switch I want to immediately being hearing guitar amp B (lead), while guitar amp A is allowed to continue processing, letting reverb and delay tailoff’s to sound until it gets quiet enough to bypass it. And when bypassed it doesn’t consume an cpu cycles.
I couldn’t find any way to add that functionality other than deep in the heart of the vst/audiounit plugin instances etc. If you know of a better way I’d appreciate your thoughts Vinn, I was a newbie then (now I’m obsessive) says the forum.[/quote]
Changing Juce sources is a last resort. I would have made a new abstract interface (“KurtAudioProcessor”) with the added function, then used a dynamic_cast to convert a pointer to AudioProcessor to pointer to KurtAudioProcessor to get the required interface. This way you don’t have to modify Juce to do what you need.
I would also immediately post something in the forum - maybe your feature is revolutionary and deserves to be added to Juce?
Thanks for the thoughts Vinn. I’m hesitant to suggest changes to juce yet as I don’t have enough experience on it, and had no idea at all when I did the mods on the pc if they would work on other platforms. Now that I’ve got the pc and the mac I’m feeling a bit better about the portability of the changes but will have to do some cleanup work and see if I can implement these changes without going directly into the au/vst plugin instance classes - which is where the real work happend. It might be better to implement the capability at the AudioProcessorGraph level. I’ll look into that when I have a chance.
[quote=“TheVinn”]
Changing Juce sources is a last resort. I would have made a new abstract interface (“KurtAudioProcessor”) with the added function, then used a dynamic_cast to convert a pointer to AudioProcessor to pointer to KurtAudioProcessor to get the required interface. This way you don’t have to modify Juce to do what you need.
I would also immediately post something in the forum - maybe your feature is revolutionary and deserves to be added to Juce?[/quote]
As it requires modifying the AU wrapper, and the Introjucer doesn’t give me a choice of which AU wrapper code to use, it seems that I have to modify the juce sources. So I keep a repo of juce and I regularly merge juce tip to it. Any better ideas would be very welcome.