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
“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
…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.
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.
…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.