New Audio Based Juce Module Available - dRowAudio

on xcode 4.5 I get error expected namespace name in DemoHeader.h using namespace drow;

Hi all, I’ve had a lot of interest in the module recently, especially on Linux. I’m not really a Linux user myself and I didn’t realise the additional set-up required. I’ve now gone through the module and demo app and simplified the way it references other JUCE modules. You should now just be able to:

  • pull the tip (see sig)

  • add a symlink in “juce/modules” to the actual dRowAudio module folder “drowaudio/dRowAudio”
    (nix: ln -s TARGET LOCATION, win Vista+: mklink /d , winXP: fsutil hardlink create or Junction)

  • open the demo project in Introjucer and set the “Local JUCE modules” location, save and go

  • Additionally on Linux, if you don’t have cURL installed in a system-wide include location, disable it in the dRowAudio module settings and remove the linker flag in the exporter. It should all build first time.

Using a symlink means the module and associated demo/plugins can be in a separate location and still updated using git without having to copy the module into the JUCE modules directory. I think this is the way forward for now until the module spec get finalised by Jules.

If you have any problems or suggestions with this process please let me know and again thanks for the interest!

Hi Dave, Is there any chance you could add a listener class to the AudioTransportCursor object to enable passing the various mouse events to other classes? T’would be most useful. Ta!

I think what you need is a juce::MouseListener. As the AudioTransportCursor is a Component you can register to listen for the mouse callbacks.

Does that do the trick?

Amazing, can’t believe I overlooked that! Thanks!

Sorry I forgot to mention I am trying to access the mouse events in the AudioTransportCursor that is a private member of a PositionalWaveDisplay. I cant register the a parent class of a PositionalWaveDisplay as a Listener to the cursor If it is private can I? Is there any workaround?

No because the PositionableWaveDisplay doesn’t intercept mouse clicks, it passes them through the the AudioThumbnailCursor. I could provide an accessor for the AudioTransportCursor member but that really defeats the point of the private composition.

Do you mind me asking what you’re trying to do and what mouse events you need access to? There might be a cleaner way of getting to the solution I can help with.

I am making a parent class of a positionalwavedisplay that can highlight subsections of the display to pass into an AudioSubsectionReader.

I want to be able to return positions clicked on to create marker points if the user shift clicks and delete them if the user alt shift clicks.
I also want to be able to access mouse drags, as each section would not necessarily end at the start of the next one.

Hmm, it sounds like this is a rather specialised case and should really go into its own class in a similar way that the LoopComponent of the dRowAudio Demo app does rather than piggy-backing onto the functionality of another class. This is a created as a sibling to the PositionableWaveDisplay and sits in front of it. The only problem with overriding mouseDown, mouseDrag and mouseUp events is that the PositionableWaveDisplay needs these to correctly reposition the audio transport so you’ll have to forward these if your class doesn’t use them. Something like:

MarkerComponent::mouseDown (const MouseEvent& e) { if (e.mods.isShiftDown()) { // do your custom marker creation here } else { positionableWaveDisplay.mouseDown (e); // pass on the event to the wave display sibling or child } }

I think you should be able to achieve what you need to with this method without bloating the AudioTransportCursor class although you will have to do the pixel to time conversions yourself.
Hope that helps.

Ok yeah I managed to do everything I need in the parent, which is good. Thanks!

Hello, i see i am a little bit 4 years late.
I tried to add dRowAudio as a module in my juce but a get the message
"This isn’s a valid juce module folder"
Anybody have idea why this is happening?

The JUCE module format has changed and the dRowAudio module has not been updated accordingly.

I have a fork that is up to date, I think there are a few others as well. https://github.com/FigBug/drowaudio

Thanks a lot. I 've imported your module but i get several errors of not recognizing classes of dRowAudio.
examples:
-name followed by ‘::’ must be a class or namespace name
-class “juce::AudioBuffer” has no member “getSampleData”
-‘getSampleData’: is not a member of 'juce::AudioBuffer
-“FileFilter” is not a nonstatic data member or base class of class “BasicFileBrowser”

\JuceLibraryCode\modules\dRowAudio\gui\filebrowser\dRowAudio_BasicFileBrowser.cpp Line 38

I also get error for the File identifier:
-“File” is not a type name

\JuceLibraryCode\modules\dRowAudio\gui\filebrowser\dRowAudio_BasicFileBrowser.cpp
Line 36

Which compiler / platform are you using?

visual studio 2017 (is this the right answer?)

I think I’ve tried it with VS2017, but I’ll double check. I mostly work on macOS, but haven’t upgraded to Xcode 9 yet.

1 Like

I just build with VS2017. I’m not seeing any issues. I can’t even find getSampleData() in any of the code. Maybe you are still pointing at an old version of dRowAudio?

Hi, when I add the module in 2021, it looks for an AppConfig.h File which used to exist in earlier versions.
I just copied the file from an old project but thats really not safe to work at all.
Is anyone familiar with a real fix to this problem? Maybe @RolandMR ?

What fork of drowaudio are you using? I think my fork us up to date and works.