Version 1.46 (finally!)

Sorry about the ridiculous delay since 1.45, but I’ve finally done a new release!

There won’t be any surprises here for most of you, as most people have probably been using the tip for months now, but it’s nice to label a stable point.

Why so long since the last one? Well there are now so many little projects and platforms to test, that it takes me about 2 days just to go through all the checking and drudgery involved in doing a release, and it’s been hard to find enough time to do it. I’ll try not to leave it so long in future though!

Here’s a copy of the change list, although some of these features are already quite old!

  • new class: AudioProcessorGraph: This allows AudioProcessors to be efficiently wired together and run as a graph. I’ve converted the plugin host demo to now use this instead of its own graph rendering code.
  • new class: AudioProcessorPlayer: This allows an audio i/o device to stream through an AudioProcessor (or an AudioProcessorGraph).
  • new class QuickTimeAudioFormat, which uses QuickTime to implement an AudioFormat that can read .mov files and other formats that QT supports (e.g. mp3, aac, etc)
  • new class: WebBrowserComponent, for embedding a web browser in your app
  • AudioProcessor now has a few more pure virtual methods that you’ll need to implement: acceptsMidi(), producesMidi() and getName()
  • moved all the audio plugin hosting classes into the main juce tree
  • Mac: the project now requires at least XCode V2.5
  • new class: ScopedTryLock
  • added AudioUnit support to the audio hosting code
  • any top-level components will now have their parentSizeChanged() method called when the screen res is changed (not on linux yet though…)
  • jucer: added support for ImageButtons
  • audio devices - a few tweaks to the various audio drivers to try to make the best possible guess at the input and output latencies that they introduce
  • updated to include the latest version of Flac (1.2.1)
  • added a parameter to DragAndDropTarget::isInterestedInDragSource(). This ma
  • changed the parameters to AudioIODeviceCallback::audioDeviceAboutToStart(), so that it now just supplies a pointer to the device. If you need to, you can still find out the sample rate and block size by asking the device for them.
  • changes to the URL class to allow file uploading
  • new method: PlatformUtilities::launchEmailWithAttachments
  • new classes: AudioThumbnail and AudioThumbnailCache, which allow easy rendering of low-res waveform previews
  • new classes: InputSource and FileInputSource. These encapsulate some kind of resource, and also replace the XmlInputSource class.
  • moved some of the posix code that was the same in the mac and linux builds into a single, shared file
  • fixed InterprocessLock on mac/linux so that it can’t get stuck when an app quits unexpectedly
  • added an option to splash screens to close themselves when the mouse is clicked
  • change to ProgressBar to allow custom text and bars that are just spinning without a known progress position. This also meant a change to the params for LookAndFeel::drawProgressBar
  • ditched win98 non-unicode support (presumably nobody will miss that!)
  • change to the way that channel data is passed to an AudioIODeviceCallback. Previously, some of the channels could be null, but now is uses a packed array of all the active channels

Awesome! Now to get this integrated!

we are not worthy oh fearless leader

i forgot to mention this earlier cause i fixed it myslef, but vc6 complains about re-definitions

c:\devel\juce\src\juce_appframework\audio\processors\juce_audioprocessorgraph.cpp(1112) : error C2374: 'i' : redefinition; multiple initialization
        c:\devel\juce\src\juce_appframework\audio\processors\juce_audioprocessorgraph.cpp(1104) : see declaration of 'i'

>>and<<

c:\devel\juce\src\juce_appframework\audio\audio_sources\juce_audiosourceplayer.cpp(165) : error C2086: 'i' : redefinition

two “for” loops with the same i var

Oh blimey, I could have sworn that I tested VC6… Oh well, ta for that, I’ll fix it at the tip.

I’ve been having an issue with using libpng from within my own code, I get the error: PNG unsigned integer out of range.

I changed libpng from #including the .c files, instead I added the .c files to the project like it was in the previous versions of juce and the error went away.

1.46 doesn’t solve the OS X Timer issue that causes so many weird behaviours in Plugins and Logic, …

[quote=“G-Mon”]I’ve been having an issue with using libpng from within my own code, I get the error: PNG unsigned integer out of range.

I changed libpng from #including the .c files, instead I added the .c files to the project like it was in the previous versions of juce and the error went away.[/quote]

I’ve been loading pngs with no probs. Maybe send me a file that causes the error? It might just be a particular format that triggers it.

Yes, I know. I’m going to look at that as part of porting the mac code to Cocoa, which will be my next big task. No point changing it now and then re-writing it again.

ah, it’s typical - whenever I do a build, there’s always some kind of glitch that gets in there… I messed up the DSound file slightly, so best to grab that from the tip.

Hi, I’m not able to compile some examples:

  • “audio plugin host” compile and run
  • “jucedemo”, “the jucer” and others do not compile;
    the error is always the same:

‘z_Byte’ does not name a type

In the “jucedemo” the exact error output is:


/Developer/usr/bin/gcc-4.0 -x objective-c++ -arch i386 -fmessage-length=0 -pipe -Wno-trigraphs -fpascal-strings -fasm-blocks -Os -mdynamic-no-pic -D_DEBUG=1 -DDEBUG=1 -isysroot /Developer/SDKs/MacOSX10.5.sdk -fvisibility=hidden -fvisibility-inlines-hidden -mmacosx-version-min=10.4 -gdwarf-2 -I/Users/kio/dev/zBuild/jucedemo.build/Debug/jucedemo.build/jucedemo.hmap -F/Users/kio/dev/zBuild/Debug -I/Users/kio/dev/zBuild/Debug/include -I/Developer/SDKs/MacOSX10.5.sdk/Developer/Headers/FlatCarbon -I/Users/kio/dev/zBuild/jucedemo.build/Debug/jucedemo.build/DerivedSources -c “/Users/kio/dev/zLibs/juce_1.46/extras/juce demo/build/macosx/…/…/src/juce_LibrarySource.mm” -o /Users/kio/dev/zBuild/jucedemo.build/Debug/jucedemo.build/Objects-normal/i386/juce_LibrarySource.o
In file included from /Users/kio/dev/zLibs/juce_1.46/extras/juce demo/build/macosx/…/…/src/…/…/…/juce_amalgamated.cpp:203889,
from /Users/kio/dev/zLibs/juce_1.46/extras/juce demo/build/macosx/…/…/src/…/…/…/juce_amalgamated.mm:10,
from /Users/kio/dev/zLibs/juce_1.46/extras/juce demo/build/macosx/…/…/src/juce_LibrarySource.mm:12:
/Developer/SDKs/MacOSX10.5.sdk/Developer/Headers/FlatCarbon/strings.h:1:2: warning: #warning Strings.h is not available on Mac OS X
/Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIServices.h:371: error: ‘z_Byte’ does not name a type

My configuration is:

MacBook Pro, 4GB RAM, XCode 3.1

Any suggestions ?

Thanks

…well, after recompiling a Windows audio application (using juce_amalgamated), an application crashes each time it reaches the AudioDeviceManager::initialize(…) member function call in my code. I couldn’t debug it - it stucks.

At my PC audio demo crash too. It`s only on windows. http://www.rawmaterialsoftware.com/juceforum/viewtopic.php?t=3026

Yes, like I said above, I messed up the version of DSound that went into the build - grab the tip of juce_win32_DirectSound.cpp and it’ll be fine. SourceForge seems to be having problems right now but I’ll replace the 1.46 zip file with a fixed one as soon as they’re back on line.

[quote=“jules”][quote=“G-Mon”]I’ve been having an issue with using libpng from within my own code, I get the error: PNG unsigned integer out of range.

I changed libpng from #including the .c files, instead I added the .c files to the project like it was in the previous versions of juce and the error went away.[/quote]

I’ve been loading pngs with no probs. Maybe send me a file that causes the error? It might just be a particular format that triggers it.
[/quote]

What I meant was, your code for loading PNGs (juce_loadPNGImageFromStream) works fine.

But, when I try and call the pnglib functions from my code, then I have issues. It might have something to do with the using ::malloc and using ::free. What is the purpose of that?

What juce needs is a way to get the size of an image without loading it, and then I wouldn’t need to use pnglib directly at all.

Oh, sorry - I see what you mean now. Yes, a quick image info function would be a nice feature.

…the resent JUCE SVN version doesn’t work properly. Audio files are played OK until I call the AudioDeviceManager::setAudioDevice(…) member function. In that case, an AudioDeviceManager instance becomes corrupted. It plays no sounds but still keeps decoding files with increased speed (play time increases much faster). Also, it crashes when an application is being closed, but sometimes it crashes when selecting another device to play to.

My Mac application wouldn’t link after upgrading because of a missing reference to NSApplicationLoad, which is referenced from juce::systemStats.

Adding the Cocoa.framework to my project fixed the error, but I wanted to give a heads up to others that might encounter the problem.

My Mac release build is failing due to references to vsnprintf(). What’s the solution to this error? It seems to be new with the upgrade to 1.46

Undefined symbols:
"_vsnprintf$LDBLStub", referenced from:
juce::CharacterFunctions::vprintf(char*, int, char const*, char*&)in libjuce.a(juce_CharacterFunctions.o)
"_sscanf$LDBLStub", referenced from:
_jinit_memory_mgr in libjuce.a(juce_JPEGLoader.o)
ld: symbol(s) not found

I’ve been doing that kind of thing without problems. Are you maybe using an old version of the amalgamated file?

OK, I’ll double check it again.

[quote=“igor”]My Mac release build is failing due to references to vsnprintf(). What’s the solution to this error? It seems to be new with the upgrade to 1.46

Undefined symbols:
"_vsnprintf$LDBLStub", referenced from:
juce::CharacterFunctions::vprintf(char*, int, char const*, char*&)in libjuce.a(juce_CharacterFunctions.o)
"_sscanf$LDBLStub", referenced from:
_jinit_memory_mgr in libjuce.a(juce_JPEGLoader.o)
ld: symbol(s) not found[/quote]

Builds ok here. Are you using an old SDK? XCode 3 and SDK 10.5 is probably the best to go for now.