Version 1.40


#1

New stuff for you, folks!

* Audio Plugins: added an initial release of an RTAS wrapper!
* new classes: IIRFilter and IIRFilterAudioSource
* changed the Synthesiser to use reference counting for SynthesiserSound objects, so that sounds can be allowed to play on after being removed.
* added some colour options to the GroupComponent and Toolbar classes
* added a mouse-sensitivity setting to sliders
* Linux: added support for XShm, which uses shared memory to improve rendering speed
* Added a new method File::getSpecialLocation(), which lets you find out various system paths, e.g. home folders, documents folders, etc. This replaces a bunch of existing static method calls in SystemStats.
* Added a TableListBoxModel::getDragSourceDescription() method to allow easier dragging of table rows
* Added an option to PropertiesFile for creating files that are common to all users. Also tweaked a couple of methods in this class.
* Mac: added a PlatformUtilities method to convert unicode strings to their precomposed form, and used this in lots of file handling routines to avoid mix-ups between encodings of extended characters.
* Altered the directory search code to optimise fetching of file attributes - this should help when browsing directories on slower network drives
* couple of small fixes for TableHeaderComponent in stretch-to-fit mode
* added a new virtual method to OpenGLComponent to provide a callback for setting-up a new GL context
* some improvements to the AudioDeviceManager to make it do a better job of saving and restoring its state
* Jucer: some fixes for embedded jucer components
* changed the PNG loading code to correctly handle interlaced PNG formats
* added methods to convert a Path into a simple string of co-ordinates that can be reloaded.
* added a multi-select option flag to treeviews
* fixed DirectSound handling of unicode driver names

#2

The vst wrapper file halts at this:

#undef MemoryBlock;

:smiley: Losing your edge? :smiley:


#3

In porting from previous JAPs: FilterInfo went away into the the new characteristics file, and the new calltype macro goes on all the remaining filter methods… Anything else?


#4

Damn. Sorry, will patch that - it was a last-minute hack, and clearly doesn’t need the semi-colon… (Bizarrely it builds ok with VC8 though, just giving a warning, which is my excuse for why I missed it…)

The audio plugin re-organisation is because RTAS needed to know more about the plugin’s properties at compile-time. Basically most of the info that used to go into the FilterInfo now goes in your JucePluginCharacteristics.h file. This makes it all compile a bit more efficiently, too. Don’t think there are any other major changes.


#5

Is the demo updated on the web site yet ?
I don’t see this button you’re talking about.

Thanks, like always for all these improvements.


#6

[quote=“X-Ryl669”]Is the demo updated on the web site yet ?
I don’t see this button you’re talking about.

Thanks, like always for all these improvements.[/quote]

Ah, I changed my mind and took that button off - it was a bit confusing. I should have updated the change list, sorry.


#7

[size=150]Ju, we love you!!! :D[/size]
Ain’t that a fuel? :lol:


#8

[quote=“Ptomaine”][size=150]Ju, we love you!!! :D[/size]
Ain’t that a fuel? :lol:[/quote]

Thanks, (though I’m not sure I understand the fuel thing…?!)


#9

greeeeat !
been waiting for a long time !

anyway…
in juce_IIRFilterAudioSource.h @ line 37
gcc complains about

that should be

the rest is history :wink:

ah. another thing, not a real compiling problem, but since all the files normally have no warnings in gcc (actually 4.1.1 on my new edge 2.6.18 rt-kernel gentoo), i report these the same:

platform_specific_code/juce_linux_Windowing.cpp: In static member function 'static juce::LinuxComponentPeer* juce::LinuxComponentPeer::getPeerFor(Window)': platform_specific_code/juce_linux_Windowing.cpp:580: warning: dereferencing type-punned pointer will break strict-aliasing rules platform_specific_code/juce_linux_Windowing.cpp: In member function 'virtual bool juce::LinuxComponentPeer::isMinimised() const': platform_specific_code/juce_linux_Windowing.cpp:717: warning: dereferencing type-punned pointer will break strict-aliasing rules platform_specific_code/juce_linux_Windowing.cpp: In member function 'virtual bool juce::LinuxComponentPeer::isFocused() const': platform_specific_code/juce_linux_Windowing.cpp:920: warning: dereferencing type-punned pointer will break strict-aliasing rules platform_specific_code/juce_linux_Windowing.cpp: In member function 'void juce::LinuxComponentPeer::updateBorderSize()': platform_specific_code/juce_linux_Windowing.cpp:1843: warning: dereferencing type-punned pointer will break strict-aliasing rules platform_specific_code/juce_linux_Windowing.cpp: In function 'void juce::juce_updateMultiMonitorInfo(juce::Array<juce::Rectangle, juce::DummyCriticalSection>&, bool)': platform_specific_code/juce_linux_Windowing.cpp:1972: warning: dereferencing type-punned pointer will break strict-aliasing rules platform_specific_code/juce_linux_Windowing.cpp: In static member function 'static const juce::String juce::SystemClipboard::getTextFromClipboard()': platform_specific_code/juce_linux_Windowing.cpp:2411: warning: dereferencing type-punned pointer will break strict-aliasing rules

the “punned pointer” remembers me of the “punic wars” :wink:


#10

How do I initialize JucePlugin_PreferredChannelConfigurations? I moved everything else to JucePluginCharacteristics.h, but I’m not sure what to do with this one - what format it is etc.

I do want to be able to handle different channel configurations - I'm messing around with stereo and surround imaging, making instruments sound 'bigger.'

I haven't been screaming for help on this forum as much because I AM getting the hang of it.  My learning curve is a square wave, and maybe the stubble helps.  *(:

me.setWasUpAllNigtCoding(true);

#11

“* added a mouse-sensitivity setting to sliders”

Cool, thanks! Now, all I can wish for is faster redrawing on slower PowerPCs… :wink:

-A


#12

Thanks for the warnings, kraken - I wonder why I didn’t get any of those myself…?

the channel configurations list is just a list of { in, out } pairs, one for each arrangement of ins and outs that you want your plugin to be able to handle. So if you wanted to do mono, stereo, or 5.1, you could say {1, 1}, {2, 2}, {6, 6}… Sorry, I can’t think of a better way of explaining this than the comments that are already there!


#13

Thank you!

Any chance you,ll add the ‘kiosk view’ in a near future release?
http://www.rawmaterialsoftware.com/juceforum/viewtopic.php?t=893&highlight=kiosk

… and native menus? and an automatic dishwasher? :wink:


#14

[quote]Any chance you,ll add the ‘kiosk view’ in a near future release?
http://www.rawmaterialsoftware.com/juceforum/viewtopic.php?t=893&highlight=kiosk

… and native menus? and an automatic dishwasher? Wink[/quote]

So many things to do, so little time…


#15

Judging by your quick reply, you do not seem to have too much on your hands :mrgreen:


#16

The file attributes fix seems to be working so far. I only had a few minutes to test it today, but performance with the new build of juce seemed to be as snappy as I would expect.

I’ll test more tomorrow to make sure it wasn;t a fluke, but I’m pretty confident that’s sorted it.

Cheers, Jules!


#17

yes, that should all be fine now. On windows it gets all the file info while it’s searching for files without doing any extra calls, so it’s as fast as it could possibly be.


#18

Just wondering why there isn’t a peaking filter type in the IIR.


#19

Isn’t that the same as a bandpass?


#20

I thought it was like low shelf vs low pass - bandpass passes only the band, the peaking keeps the frequencies outside the band at 0dB.

It’s what I had been using, but with a FIR filter that sounds just a bit terrible under close scrutiny.