Building OSX version (AudioUnit under XCode) #12

Open
ghost opened this Issue Dec 9, 2013 · 83 comments

Comments

Projects
None yet
4 participants
@ghost

ghost commented Dec 9, 2013

I did a test build under Xcode 5.0.2, and get the error "cast from pointer to smaller type 'Bitu' loses information" on lines 1443 and 1458 of dbopl.cpp. Also the error "use of undeclared identifier 'fmod' on line 62 of adlib.h. I haven't dug any deeper yet.

@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Dec 9, 2013

Owner

Thanks a lot for trying this out! I'll see if I can figure out these issues by cranking up the warning level on my compiler or something.

Owner

bsutherland commented Dec 9, 2013

Thanks a lot for trying this out! I'll see if I can figure out these issues by cranking up the warning level on my compiler or something.

@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Dec 9, 2013

Owner

When you have a chance, could you please pull the latest code and try again?

This commit will hopefully fix those issues:
cbc57c5

Owner

bsutherland commented Dec 9, 2013

When you have a chance, could you please pull the latest code and try again?

This commit will hopefully fix those issues:
cbc57c5

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Dec 10, 2013

Hi, thanks for making this plug-in! It's exactly what I was thinking of building, but I'm too much of a greenhorn to sift through DOSBox emulator code. :)

I patched the CoreAudio SDK files per this blog: http://feature-space.com/en/post161.html

When I try to compile your new commit, I get two errors:
SbiLoader.h - has a "C:" path hard-coded in the include, I just stripped out the path
EnumFloatParameter.h - "Extra qualification on member 'set ParameterIndex' on this line:
void EnumFloatParameter::setParameterIndex(int);

Thanks for all the help!

  • Nick

ghost commented Dec 10, 2013

Hi, thanks for making this plug-in! It's exactly what I was thinking of building, but I'm too much of a greenhorn to sift through DOSBox emulator code. :)

I patched the CoreAudio SDK files per this blog: http://feature-space.com/en/post161.html

When I try to compile your new commit, I get two errors:
SbiLoader.h - has a "C:" path hard-coded in the include, I just stripped out the path
EnumFloatParameter.h - "Extra qualification on member 'set ParameterIndex' on this line:
void EnumFloatParameter::setParameterIndex(int);

Thanks for all the help!

  • Nick
@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Dec 10, 2013

Owner

Nick,

You're welcome, glad you like it. Thanks for your efforts!

If I understand correctly, you're still not able to build on OSX because of the issue in EnumFloatParameter.h? Or you've built it successfully now?

If you've managed to build it already, could you please do me (and Mac users) a huge favour and:

  1. Send me a link to the binary.
  2. Fork the repo and make a pull request with your source changes, or just comment back here with a diff of the
    changes you made if that's easier.

Cheers.

Owner

bsutherland commented Dec 10, 2013

Nick,

You're welcome, glad you like it. Thanks for your efforts!

If I understand correctly, you're still not able to build on OSX because of the issue in EnumFloatParameter.h? Or you've built it successfully now?

If you've managed to build it already, could you please do me (and Mac users) a huge favour and:

  1. Send me a link to the binary.
  2. Fork the repo and make a pull request with your source changes, or just comment back here with a diff of the
    changes you made if that's easier.

Cheers.

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Dec 10, 2013

I haven't been able to build successfully yet. After applying Xcode's recommended fixes, and switching the C++ compiler strictness to "compiler default" rather than C++11, I get some new errors:

Config.h - doesn't like "__int64" so I replaced it with 'long long'
PluginGui.cpp - lines 71-80 and 96-98, lots of "expected a class or namespace" where 'NotificationType::dontSendNotification' appears in the parameters to slider setValue() calls.

  • Nick

ghost commented Dec 10, 2013

I haven't been able to build successfully yet. After applying Xcode's recommended fixes, and switching the C++ compiler strictness to "compiler default" rather than C++11, I get some new errors:

Config.h - doesn't like "__int64" so I replaced it with 'long long'
PluginGui.cpp - lines 71-80 and 96-98, lots of "expected a class or namespace" where 'NotificationType::dontSendNotification' appears in the parameters to slider setValue() calls.

  • Nick
@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Dec 10, 2013

Owner

Nick,

Please pull the latest code. Hopefully the following commit fixes the issues:

de9f873

If not, please paste the complete console output of Xcode and we'll keep working through any issues.

Thanks.

Owner

bsutherland commented Dec 10, 2013

Nick,

Please pull the latest code. Hopefully the following commit fixes the issues:

de9f873

If not, please paste the complete console output of Xcode and we'll keep working through any issues.

Thanks.

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Dec 11, 2013

I still get the "expected a class or namespace" on those lines. Also, Xcode didn't like the redefinition of __int64 so I replaced them with 'long long' manually.

Oh, and just a heads-up... you may get a spike in downloads. I mentioned your plug-in on Slashdot this morning. :)

ghost commented Dec 11, 2013

I still get the "expected a class or namespace" on those lines. Also, Xcode didn't like the redefinition of __int64 so I replaced them with 'long long' manually.

Oh, and just a heads-up... you may get a spike in downloads. I mentioned your plug-in on Slashdot this morning. :)

@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Dec 12, 2013

Owner

Hi Nick,

Thanks for the info. If you switch back to C++11 now does it solve the issue, or do you get some different errors?

I'm a bit confused about it not being able to resolve the names on those lines, but I'll look into that when I can. As you can probably tell, I don't have a Mac / XCode, so I appreciate you helping me work through solving these issues.

Thanks for the heads up. It's all hosted on github so hopefully it's not a problem :)

Owner

bsutherland commented Dec 12, 2013

Hi Nick,

Thanks for the info. If you switch back to C++11 now does it solve the issue, or do you get some different errors?

I'm a bit confused about it not being able to resolve the names on those lines, but I'll look into that when I can. As you can probably tell, I don't have a Mac / XCode, so I appreciate you helping me work through solving these issues.

Thanks for the heads up. It's all hosted on github so hopefully it's not a problem :)

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Dec 12, 2013

Hi Bruce,

It seems to get farther with C++11 enabled. Everything compiles, but I get a link error at the end - it says it can't find the CoreAudio and CoreAudioKit frameworks (yes, they do exist, I checked!). Clang output is below, thanks!

Ld build/Debug/JuceOPLVSTi.component/Contents/MacOS/JuceOPLVSTi normal x86_64
cd /Users/nick/Downloads/JuceOPLVSTi-master2/Builds/MacOSX
setenv MACOSX_DEPLOYMENT_TARGET 10.7
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -bundle -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -L/Users/nick/Downloads/JuceOPLVSTi-master2/Builds/MacOSX/build/Debug -F/Users/nick/Downloads/JuceOPLVSTi-master2/Builds/MacOSX/build/Debug -filelist /Users/nick/Library/Developer/Xcode/DerivedData/JuceOPLVSTi-cuuknkxgvnyyyedlmrprkyxjunnq/Build/Intermediates/JuceOPLVSTi.build/Debug/JuceOPLVSTi.build/Objects-normal/x86_64/JuceOPLVSTi.LinkFileList -mmacosx-version-min=10.7 -bundle -lAudioUnit, CoreAudio, CoreAudioKit -stdlib=libc++ -framework Accelerate -framework AudioToolbox -framework AudioUnit -framework Carbon -framework Cocoa -framework CoreAudio -framework CoreAudioKit -framework CoreMIDI -framework DiscRecording -framework IOKit -framework OpenGL -framework QTKit -framework QuartzCore -framework QuickTime -framework WebKit -Xlinker -dependency_info -Xlinker /Users/nick/Library/Developer/Xcode/DerivedData/JuceOPLVSTi-cuuknkxgvnyyyedlmrprkyxjunnq/Build/Intermediates/JuceOPLVSTi.build/Debug/JuceOPLVSTi.build/Objects-normal/x86_64/JuceOPLVSTi_dependency_info.dat -o /Users/nick/Downloads/JuceOPLVSTi-master2/Builds/MacOSX/build/Debug/JuceOPLVSTi.component/Contents/MacOS/JuceOPLVSTi

clang: error: no such file or directory: 'CoreAudio,'
clang: error: no such file or directory: 'CoreAudioKit'

ghost commented Dec 12, 2013

Hi Bruce,

It seems to get farther with C++11 enabled. Everything compiles, but I get a link error at the end - it says it can't find the CoreAudio and CoreAudioKit frameworks (yes, they do exist, I checked!). Clang output is below, thanks!

Ld build/Debug/JuceOPLVSTi.component/Contents/MacOS/JuceOPLVSTi normal x86_64
cd /Users/nick/Downloads/JuceOPLVSTi-master2/Builds/MacOSX
setenv MACOSX_DEPLOYMENT_TARGET 10.7
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -bundle -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -L/Users/nick/Downloads/JuceOPLVSTi-master2/Builds/MacOSX/build/Debug -F/Users/nick/Downloads/JuceOPLVSTi-master2/Builds/MacOSX/build/Debug -filelist /Users/nick/Library/Developer/Xcode/DerivedData/JuceOPLVSTi-cuuknkxgvnyyyedlmrprkyxjunnq/Build/Intermediates/JuceOPLVSTi.build/Debug/JuceOPLVSTi.build/Objects-normal/x86_64/JuceOPLVSTi.LinkFileList -mmacosx-version-min=10.7 -bundle -lAudioUnit, CoreAudio, CoreAudioKit -stdlib=libc++ -framework Accelerate -framework AudioToolbox -framework AudioUnit -framework Carbon -framework Cocoa -framework CoreAudio -framework CoreAudioKit -framework CoreMIDI -framework DiscRecording -framework IOKit -framework OpenGL -framework QTKit -framework QuartzCore -framework QuickTime -framework WebKit -Xlinker -dependency_info -Xlinker /Users/nick/Library/Developer/Xcode/DerivedData/JuceOPLVSTi-cuuknkxgvnyyyedlmrprkyxjunnq/Build/Intermediates/JuceOPLVSTi.build/Debug/JuceOPLVSTi.build/Objects-normal/x86_64/JuceOPLVSTi_dependency_info.dat -o /Users/nick/Downloads/JuceOPLVSTi-master2/Builds/MacOSX/build/Debug/JuceOPLVSTi.component/Contents/MacOS/JuceOPLVSTi

clang: error: no such file or directory: 'CoreAudio,'
clang: error: no such file or directory: 'CoreAudioKit'

@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Dec 12, 2013

Owner

Nick,

CoreAudio is a dependency of Juce. Seems like Apple has futzed with it in XCode 5 and Juce has not caught up yet. Please see this thread to see if it helps you fix the issue:

http://www.juce.com/forum/topic/aus-xcode-5

If not, would it be possible to try an older version of XCode?

Owner

bsutherland commented Dec 12, 2013

Nick,

CoreAudio is a dependency of Juce. Seems like Apple has futzed with it in XCode 5 and Juce has not caught up yet. Please see this thread to see if it helps you fix the issue:

http://www.juce.com/forum/topic/aus-xcode-5

If not, would it be possible to try an older version of XCode?

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Dec 12, 2013

Thanks, Bruce, that is a good suggestion. I have an older hard drive with Xcode 3.2.6 on it, but when I tried to build the plug-in, it failed with 1483 errors. I'll try again after work!

ghost commented Dec 12, 2013

Thanks, Bruce, that is a good suggestion. I have an older hard drive with Xcode 3.2.6 on it, but when I tried to build the plug-in, it failed with 1483 errors. I'll try again after work!

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Dec 14, 2013

Well, I finally got a clean build in Xcode 5! I downloaded your latest commit, added the CoreAudio frameworks to Xcode Contents > Developer > Extras (patched per the above blog), and set the build settings in Introjucer to AudioUnit only, base SDK default, compatibility OS X 10.6, and architecture 32-bit universal.

There were a lot of warnings (semantic issue: '__forceinline' attribute ignored; 'setToggleState' is deprecated) but no errors, and I got an AU component for the debug target!

I can't get it to show up in GarageBand, but I was able to load it in Apple's AU Host tool and get sound out of it! Many thanks for the help!

Project files are here: http://www.rezmerski.com/nick/code/

ghost commented Dec 14, 2013

Well, I finally got a clean build in Xcode 5! I downloaded your latest commit, added the CoreAudio frameworks to Xcode Contents > Developer > Extras (patched per the above blog), and set the build settings in Introjucer to AudioUnit only, base SDK default, compatibility OS X 10.6, and architecture 32-bit universal.

There were a lot of warnings (semantic issue: '__forceinline' attribute ignored; 'setToggleState' is deprecated) but no errors, and I got an AU component for the debug target!

I can't get it to show up in GarageBand, but I was able to load it in Apple's AU Host tool and get sound out of it! Many thanks for the help!

Project files are here: http://www.rezmerski.com/nick/code/

@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Dec 15, 2013

Owner

That's really great news Nick! Thank you so much for all your efforts and your detailed notes. I'll add them to the documentation

Could you please put up the final binary too, so I can add it as a release here on github? I've had quite a few requests for an OSX binary but unfortunately I don't have access to any Macs...

Owner

bsutherland commented Dec 15, 2013

That's really great news Nick! Thank you so much for all your efforts and your detailed notes. I'll add them to the documentation

Could you please put up the final binary too, so I can add it as a release here on github? I've had quite a few requests for an OSX binary but unfortunately I don't have access to any Macs...

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Dec 15, 2013

The binary is in JuceOPLVSTi.component.zip!

Incidentally, can this version import .sbi instruments? I haven't found a way to do it, since "Load" doesn't want to read .sbi files.

  • Nick

ghost commented Dec 15, 2013

The binary is in JuceOPLVSTi.component.zip!

Incidentally, can this version import .sbi instruments? I haven't found a way to do it, since "Load" doesn't want to read .sbi files.

  • Nick
@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Dec 15, 2013

Owner

Hi Nick,

Ah! now I see the binary. To install the Mac version, do users just need "Components/MacOS/JuceOPLVSTi" ? Or do they need all the files in the zip? Also, out of curiosity, have you tried building in Release mode?

Yes, this version should be able to import .SBI files if you drag and drop them onto the UI window. Of course I've only tested that under Windows though :)

Owner

bsutherland commented Dec 15, 2013

Hi Nick,

Ah! now I see the binary. To install the Mac version, do users just need "Components/MacOS/JuceOPLVSTi" ? Or do they need all the files in the zip? Also, out of curiosity, have you tried building in Release mode?

Yes, this version should be able to import .SBI files if you drag and drop them onto the UI window. Of course I've only tested that under Windows though :)

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Dec 16, 2013

Hi Bruce,

Yes, you drop the component into /Library/Audio/Plug-ins/Components, and the VST version (which is also a component, just with a .vst extension instead of .component) into the VST folder. They should become available to applications with a relaunch.

However, I can't recommend doing that right now - I'm having a lot of problems with it in GarageBand. When I first insert a track using the plugin, I often get horrible loud grinding noises from the speakers. Stopping the playback doesn't silence it, but closing the project does. It is really annoying... definitely not ready for distribution.

I didn't think of dragging and dropping! Awesome. The plug-in successfully imported .sbi files that way, but as I said, I'm having trouble getting them to play back cleanly! Tracks are often noisy, warbly, or off-pitch.

Have you looked at Robson Cozendey's OPL3 emulator? He wrote it in Java, but the Zdoom project translated it to C++ to integrate it with their other FM engines. I tried compiling it into a JUCE plug-in, but it has a lot of spaghetti header dependencies I need to sort through...

Cheers,

  • Nick

ghost commented Dec 16, 2013

Hi Bruce,

Yes, you drop the component into /Library/Audio/Plug-ins/Components, and the VST version (which is also a component, just with a .vst extension instead of .component) into the VST folder. They should become available to applications with a relaunch.

However, I can't recommend doing that right now - I'm having a lot of problems with it in GarageBand. When I first insert a track using the plugin, I often get horrible loud grinding noises from the speakers. Stopping the playback doesn't silence it, but closing the project does. It is really annoying... definitely not ready for distribution.

I didn't think of dragging and dropping! Awesome. The plug-in successfully imported .sbi files that way, but as I said, I'm having trouble getting them to play back cleanly! Tracks are often noisy, warbly, or off-pitch.

Have you looked at Robson Cozendey's OPL3 emulator? He wrote it in Java, but the Zdoom project translated it to C++ to integrate it with their other FM engines. I tried compiling it into a JUCE plug-in, but it has a lot of spaghetti header dependencies I need to sort through...

Cheers,

  • Nick
@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Dec 16, 2013

Owner

Hi Nick,

Thanks for letting me know about the issue. I might open another issue for that. I suspect I'm not zeroing a buffer, or not implementing one of the Juce audio plugin methods correctly.

Funny you should mention Robson's emulator. I emailed him about a week ago to see if he minds if I have a hack on it. No promises, but when I have some time in a couple of weeks I might experiment with the code from Zdoom.

Owner

bsutherland commented Dec 16, 2013

Hi Nick,

Thanks for letting me know about the issue. I might open another issue for that. I suspect I'm not zeroing a buffer, or not implementing one of the Juce audio plugin methods correctly.

Funny you should mention Robson's emulator. I emailed him about a week ago to see if he minds if I have a hack on it. No promises, but when I have some time in a couple of weeks I might experiment with the code from Zdoom.

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Dec 16, 2013

Oh, one thing to note about the binaries - on the Mac, components are bundles, so they look like folders in other filesystems. On the Mac it appears to be a single file... but it's really a folder in disguise. :)

ghost commented Dec 16, 2013

Oh, one thing to note about the binaries - on the Mac, components are bundles, so they look like folders in other filesystems. On the Mac it appears to be a single file... but it's really a folder in disguise. :)

@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Dec 23, 2013

Owner

Hi Nick, thanks for that.

I took a look at the code, but I'm at a bit of a loss when it comes to figuring out the weird issues you're seeing in GarageBand. If you get time to look at it again:

  • Is there very high CPU usage when the plugin is running?
  • Did you try building in release mode?
  • Is GarageBand configured to run at 44.1 kHz? Unfortunately the plugin is currently hardcoded to work at that sample rate.

Cheers.

Owner

bsutherland commented Dec 23, 2013

Hi Nick, thanks for that.

I took a look at the code, but I'm at a bit of a loss when it comes to figuring out the weird issues you're seeing in GarageBand. If you get time to look at it again:

  • Is there very high CPU usage when the plugin is running?
  • Did you try building in release mode?
  • Is GarageBand configured to run at 44.1 kHz? Unfortunately the plugin is currently hardcoded to work at that sample rate.

Cheers.

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Dec 23, 2013

Hi Bruce,

I haven't tried building it in release mode yet, but I will give it a shot. GarageBand seems to run consistently at 40%-50% of CPU regardless of whether I'm using the plug-in. I didn't notice any spikes with different tracks. As far as I know, GarageBand is fixed at 44.1kHz.

I don't know if this issue is JUCE-related or the DOSBox code, but I can try building some more plug-ins with JUCE and see if they exhibit the same behavior.

Thanks for looking into it! BTW, I told Bobby Prince about your work and he put it on his blog. :)

  • Nick

ghost commented Dec 23, 2013

Hi Bruce,

I haven't tried building it in release mode yet, but I will give it a shot. GarageBand seems to run consistently at 40%-50% of CPU regardless of whether I'm using the plug-in. I didn't notice any spikes with different tracks. As far as I know, GarageBand is fixed at 44.1kHz.

I don't know if this issue is JUCE-related or the DOSBox code, but I can try building some more plug-ins with JUCE and see if they exhibit the same behavior.

Thanks for looking into it! BTW, I told Bobby Prince about your work and he put it on his blog. :)

  • Nick
@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Dec 24, 2013

Owner

Hi Nick,

Your idea to try building some other Juce based plug-ins is a good one. Let me know what you find.

Thanks for spreading the word :) Bobby Prince, nice one!

Bruce

Owner

bsutherland commented Dec 24, 2013

Hi Nick,

Your idea to try building some other Juce based plug-ins is a good one. Let me know what you find.

Thanks for spreading the word :) Bobby Prince, nice one!

Bruce

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Aug 31, 2014

Hi Bruce, I finally got around to updating my Xcode environment in Mavericks to support Core Audio (Audio Units) and after much fiddling, I was able to get a clean build! Now to see how it works.

Adjustments I made include:

  • Set Introjucer project module paths for “XCode (MacOSX)” to “~/Desktop/JUCE-master”
  • Set Introjucer Xcode target “VST folder” to “~/SDKs/vstsdk2.4”
  • Installed CoreAudio files from Audio Tools Feb. 2012
  • Made edits to CoreAudio SDK files per: http://teragonaudio.com/article/Building-AudioUnits-with-modern-Mac-OSX.html
  • Copied AUResources.r to JuceLibraryCode/modules/juce_audio_plugin_client/AU/
  • Changed __int64 in config.h to “long long”
  • Fixed #define DebugMessage(msg) error in Core Audio/PublicUtility/CADebugMacros.h
  • Fixed implicit cast in audioaffect.cpp line 512
  • Added vstsdk2.4 to header search path
    • Nick

Update: still get odd buzzing noises when I add the instrument into GarageBand. It comes and goes depending on which tracks I have muted. Not sure if this is a Core Audio thing, a Juce thing, or a DOSbox emulator thing.

ghost commented Aug 31, 2014

Hi Bruce, I finally got around to updating my Xcode environment in Mavericks to support Core Audio (Audio Units) and after much fiddling, I was able to get a clean build! Now to see how it works.

Adjustments I made include:

  • Set Introjucer project module paths for “XCode (MacOSX)” to “~/Desktop/JUCE-master”
  • Set Introjucer Xcode target “VST folder” to “~/SDKs/vstsdk2.4”
  • Installed CoreAudio files from Audio Tools Feb. 2012
  • Made edits to CoreAudio SDK files per: http://teragonaudio.com/article/Building-AudioUnits-with-modern-Mac-OSX.html
  • Copied AUResources.r to JuceLibraryCode/modules/juce_audio_plugin_client/AU/
  • Changed __int64 in config.h to “long long”
  • Fixed #define DebugMessage(msg) error in Core Audio/PublicUtility/CADebugMacros.h
  • Fixed implicit cast in audioaffect.cpp line 512
  • Added vstsdk2.4 to header search path
    • Nick

Update: still get odd buzzing noises when I add the instrument into GarageBand. It comes and goes depending on which tracks I have muted. Not sure if this is a Core Audio thing, a Juce thing, or a DOSbox emulator thing.

@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Sep 1, 2014

Owner

Great! Hope it goes better this time. I updated to the latest version of
juce for the windows build. Might be worth a try for the osx build too if
you haven't already.

If possible, please send a binary and push up a merge request when you're
done!
On 1 Sep 2014 03:07, "nrezmerski" notifications@github.com wrote:

Hi Bruce, I finally got around to updating my Xcode environment in
Mavericks to support Core Audio (Audio Units) and after much fiddling, I
was able to get a clean build! Now to see how it works.

Adjustments I made include:

  • Set Introjucer project module paths for “XCode (MacOSX)” to
    “~/Desktop/JUCE-master”

  • Set Introjucer Xcode target “VST folder” to “~/SDKs/vstsdk2.4”

  • Installed CoreAudio files from Audio Tools Feb. 2012

  • Made edits to CoreAudio SDK files per:
    http://teragonaudio.com/article/Building-AudioUnits-with-modern-Mac-OSX.html

  • Copied AUResources.r to
    JuceLibraryCode/modules/juce_audio_plugin_client/AU/

  • Changed __int64 in config.h to “long long”

  • Fixed #define DebugMessage(msg) error in Core
    Audio/PublicUtility/CADebugMacros.h

  • Fixed implicit cast in audioaffect.cpp line 512

    Added vstsdk2.4 to header search path

    • Nick


Reply to this email directly or view it on GitHub
#12 (comment)
.

Owner

bsutherland commented Sep 1, 2014

Great! Hope it goes better this time. I updated to the latest version of
juce for the windows build. Might be worth a try for the osx build too if
you haven't already.

If possible, please send a binary and push up a merge request when you're
done!
On 1 Sep 2014 03:07, "nrezmerski" notifications@github.com wrote:

Hi Bruce, I finally got around to updating my Xcode environment in
Mavericks to support Core Audio (Audio Units) and after much fiddling, I
was able to get a clean build! Now to see how it works.

Adjustments I made include:

  • Set Introjucer project module paths for “XCode (MacOSX)” to
    “~/Desktop/JUCE-master”

  • Set Introjucer Xcode target “VST folder” to “~/SDKs/vstsdk2.4”

  • Installed CoreAudio files from Audio Tools Feb. 2012

  • Made edits to CoreAudio SDK files per:
    http://teragonaudio.com/article/Building-AudioUnits-with-modern-Mac-OSX.html

  • Copied AUResources.r to
    JuceLibraryCode/modules/juce_audio_plugin_client/AU/

  • Changed __int64 in config.h to “long long”

  • Fixed #define DebugMessage(msg) error in Core
    Audio/PublicUtility/CADebugMacros.h

  • Fixed implicit cast in audioaffect.cpp line 512

    Added vstsdk2.4 to header search path

    • Nick


Reply to this email directly or view it on GitHub
#12 (comment)
.

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Sep 1, 2014

I'd like to resolve the noise issues if possible before posting a binary. Also, I haven't yet figured out how to compile it for older versions of OS X (>= 10.6) or make it Universal 32/64-bit, which would be useful to more people. Is it possible to modify the synthesis module to just output a simple sine wave or something for testing?

ghost commented Sep 1, 2014

I'd like to resolve the noise issues if possible before posting a binary. Also, I haven't yet figured out how to compile it for older versions of OS X (>= 10.6) or make it Universal 32/64-bit, which would be useful to more people. Is it possible to modify the synthesis module to just output a simple sine wave or something for testing?

@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Sep 2, 2014

Owner

So the noise is still there? Bummer :(

You should be able to get a straight sine by setting carrier to sine and
setting modulator attenuation down as low as possible (-47.25 dB).

I don't know much about OSX or AudioUnit, but are VSTs supported at all
under OSX?

Bruce
On 2 Sep 2014 08:44, "nrezmerski" notifications@github.com wrote:

I'd like to resolve the noise issues if possible before posting a binary.
Also, I haven't yet figured out how to compile it for older versions of OS
X (>= 10.6) or make it Universal 32/64-bit, which would be useful to more
people. Is it possible to modify the synthesis module to just output a
simple sine wave or something for testing?


Reply to this email directly or view it on GitHub
#12 (comment)
.

Owner

bsutherland commented Sep 2, 2014

So the noise is still there? Bummer :(

You should be able to get a straight sine by setting carrier to sine and
setting modulator attenuation down as low as possible (-47.25 dB).

I don't know much about OSX or AudioUnit, but are VSTs supported at all
under OSX?

Bruce
On 2 Sep 2014 08:44, "nrezmerski" notifications@github.com wrote:

I'd like to resolve the noise issues if possible before posting a binary.
Also, I haven't yet figured out how to compile it for older versions of OS
X (>= 10.6) or make it Universal 32/64-bit, which would be useful to more
people. Is it possible to modify the synthesis module to just output a
simple sine wave or something for testing?


Reply to this email directly or view it on GitHub
#12 (comment)
.

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Sep 3, 2014

Yes, OS X can use VSTs, just not ones compiled for Windows. Apple doesn't really support them, though, hence GarageBand used AudioUnits instead.

I was thinking instead to bypass the synth engine in the plugin, to see if the noise is mitigated when the DOSbox code isn't used, rather than setting it up to output a sine wave.

In the meantime, do you think any of the tweaks I made might have affected its functionality? I'm wary of that __int64 > long long substitution, for example.

ghost commented Sep 3, 2014

Yes, OS X can use VSTs, just not ones compiled for Windows. Apple doesn't really support them, though, hence GarageBand used AudioUnits instead.

I was thinking instead to bypass the synth engine in the plugin, to see if the noise is mitigated when the DOSbox code isn't used, rather than setting it up to output a sine wave.

In the meantime, do you think any of the tweaks I made might have affected its functionality? I'm wary of that __int64 > long long substitution, for example.

@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Sep 3, 2014

Owner

Nick,

Might be time to hit it with the debug stick.

If you open up PluginProcessor.cpp and go to void
JuceOplvstiAudioProcessor::processBlock .. at the end where it calls
Opl->Generate(). That's where data gets copied into the audio buffer
provided by the host.

So, you could just hack HiOpl::Generate to put out a pure sine wave if you
wanted. For VST, Juce expects normalized floating point values. I don't
know about AudioUnit.

Notice I put a comment about how I should use Juce's in-built format
conversion, but I couldn't get it working.

Happy hacking, and let me know if you have any questions.

Bruce

On Wed, Sep 3, 2014 at 1:14 PM, nrezmerski notifications@github.com wrote:

Yes, OS X can use VSTs, just not ones compiled for Windows. Apple doesn't
really support them, though, hence GarageBand used AudioUnits instead.

I was thinking instead to bypass the synth engine in the plugin, to see if
the noise is mitigated when the DOSbox code isn't used, rather than setting
it up to output a sine wave.

In the meantime, do you think any of the tweaks I made might have affected
its functionality? I'm wary of that __int64 > long long substitution, for
example.


Reply to this email directly or view it on GitHub
#12 (comment)
.

Owner

bsutherland commented Sep 3, 2014

Nick,

Might be time to hit it with the debug stick.

If you open up PluginProcessor.cpp and go to void
JuceOplvstiAudioProcessor::processBlock .. at the end where it calls
Opl->Generate(). That's where data gets copied into the audio buffer
provided by the host.

So, you could just hack HiOpl::Generate to put out a pure sine wave if you
wanted. For VST, Juce expects normalized floating point values. I don't
know about AudioUnit.

Notice I put a comment about how I should use Juce's in-built format
conversion, but I couldn't get it working.

Happy hacking, and let me know if you have any questions.

Bruce

On Wed, Sep 3, 2014 at 1:14 PM, nrezmerski notifications@github.com wrote:

Yes, OS X can use VSTs, just not ones compiled for Windows. Apple doesn't
really support them, though, hence GarageBand used AudioUnits instead.

I was thinking instead to bypass the synth engine in the plugin, to see if
the noise is mitigated when the DOSbox code isn't used, rather than setting
it up to output a sine wave.

In the meantime, do you think any of the tweaks I made might have affected
its functionality? I'm wary of that __int64 > long long substitution, for
example.


Reply to this email directly or view it on GitHub
#12 (comment)
.

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Sep 4, 2014

Bruce, I tried a simple trick by setting all the samples to 0.0f in Generate(), and the plugin makes no noise - so that rules out issues with Juce and AudioUnits if I'm correct.

Next, I tried a simple sine and sawtooth pattern using a second float variable j to set the samples. The plugin makes a monotone noise in each case. The interesting thing is, it doesn't stop making noise when I stop playback - the track is not playing, but the noise keeps coming. Not sure why that would happen. I'll keep digging.

  • Nick

ghost commented Sep 4, 2014

Bruce, I tried a simple trick by setting all the samples to 0.0f in Generate(), and the plugin makes no noise - so that rules out issues with Juce and AudioUnits if I'm correct.

Next, I tried a simple sine and sawtooth pattern using a second float variable j to set the samples. The plugin makes a monotone noise in each case. The interesting thing is, it doesn't stop making noise when I stop playback - the track is not playing, but the noise keeps coming. Not sure why that would happen. I'll keep digging.

  • Nick
@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Sep 4, 2014

Owner

Sounds like you're on the right road. Might be nice to visualize the data
coming out of the plugin - maybe using an oscilloscope in your host
software. That might give you some idea what's going on.

The reason the sound doesn't stop is that you're ignoring all inputs from
the host and just spamming it continuously with your output.

You could try generating a pure sine in the integer sample format used by
the DOSBox code (I think it's 16-bit signed, but stored in a 32-bit
buffer), and push it through my crufty conversion. Maybe the issue is there?

On Thu, Sep 4, 2014 at 10:56 AM, nrezmerski notifications@github.com
wrote:

Bruce, I tried a simple trick by setting all the samples to 0.0f in
Generate(), and the plugin makes no noise - so that rules out issues with
Juce and AudioUnits if I'm correct.

Next, I tried a simple sine and sawtooth pattern using a second float
variable j to set the samples. The plugin makes a monotone noise in each
case. The interesting thing is, it doesn't stop making noise when I stop
playback - the track is not playing, but the noise keeps coming. Not sure
why that would happen. I'll keep digging.

  • Nick


Reply to this email directly or view it on GitHub
#12 (comment)
.

Owner

bsutherland commented Sep 4, 2014

Sounds like you're on the right road. Might be nice to visualize the data
coming out of the plugin - maybe using an oscilloscope in your host
software. That might give you some idea what's going on.

The reason the sound doesn't stop is that you're ignoring all inputs from
the host and just spamming it continuously with your output.

You could try generating a pure sine in the integer sample format used by
the DOSBox code (I think it's 16-bit signed, but stored in a 32-bit
buffer), and push it through my crufty conversion. Maybe the issue is there?

On Thu, Sep 4, 2014 at 10:56 AM, nrezmerski notifications@github.com
wrote:

Bruce, I tried a simple trick by setting all the samples to 0.0f in
Generate(), and the plugin makes no noise - so that rules out issues with
Juce and AudioUnits if I'm correct.

Next, I tried a simple sine and sawtooth pattern using a second float
variable j to set the samples. The plugin makes a monotone noise in each
case. The interesting thing is, it doesn't stop making noise when I stop
playback - the track is not playing, but the noise keeps coming. Not sure
why that would happen. I'll keep digging.

  • Nick


Reply to this email directly or view it on GitHub
#12 (comment)
.

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Sep 5, 2014

I haven't figured out the source of the noise, but the plugin seems to work with a single instance and has trouble when I add a second track. I'm not sure how JUCE audio plugins handle multiple voices, but as I mentioned, I need to bite the bullet and dig into the code!

I don't think sample conversion is the problem, because it sounds pretty good with only a single track playing using an instance of the plugin.

I did check my data sizes since I'm compiling on a 64-bit system:
Size of int: 4
Size of short: 2
Size of long: 8
Size of float: 4
Size of double: 8
Size of long double: 16
Size of long long: 8

ghost commented Sep 5, 2014

I haven't figured out the source of the noise, but the plugin seems to work with a single instance and has trouble when I add a second track. I'm not sure how JUCE audio plugins handle multiple voices, but as I mentioned, I need to bite the bullet and dig into the code!

I don't think sample conversion is the problem, because it sounds pretty good with only a single track playing using an instance of the plugin.

I did check my data sizes since I'm compiling on a 64-bit system:
Size of int: 4
Size of short: 2
Size of long: 8
Size of float: 4
Size of double: 8
Size of long double: 16
Size of long long: 8

@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Sep 6, 2014

Owner

Hi Nick,

The OPL, and also the DOSBox emulator, have 9 2-operator FM channels. The
plugin handles polyphony by cycling through the channels for each new note.
See the LED indicators which trylle added in the latest version.

So, the mixing occurs inside the DOSBox emulator code. If you're having
trouble with multiple voices in a single instance of the plugin, the
problem may be there. See GenerateBlock in dbopl.cpp.

If you mean multiple instances of the plugin, I'd say that sounds like a
problem with the host application...

Bruce

On Fri, Sep 5, 2014 at 10:40 AM, nrezmerski notifications@github.com
wrote:

I haven't figured out the source of the noise, but the plugin seems to
work with a single voice and has trouble when I add a second track. I'm not
sure how JUCE audio plugins handle multiple voices, but as I mentioned, I
need to bite the bullet and dig into the code!

I did check my data sizes since I'm compiling on a 64-bit system:
Size of int: 4
Size of short: 2
Size of long: 8
Size of float: 4
Size of double: 8
Size of long double: 16
Size of long long: 8


Reply to this email directly or view it on GitHub
#12 (comment)
.

Owner

bsutherland commented Sep 6, 2014

Hi Nick,

The OPL, and also the DOSBox emulator, have 9 2-operator FM channels. The
plugin handles polyphony by cycling through the channels for each new note.
See the LED indicators which trylle added in the latest version.

So, the mixing occurs inside the DOSBox emulator code. If you're having
trouble with multiple voices in a single instance of the plugin, the
problem may be there. See GenerateBlock in dbopl.cpp.

If you mean multiple instances of the plugin, I'd say that sounds like a
problem with the host application...

Bruce

On Fri, Sep 5, 2014 at 10:40 AM, nrezmerski notifications@github.com
wrote:

I haven't figured out the source of the noise, but the plugin seems to
work with a single voice and has trouble when I add a second track. I'm not
sure how JUCE audio plugins handle multiple voices, but as I mentioned, I
need to bite the bullet and dig into the code!

I did check my data sizes since I'm compiling on a 64-bit system:
Size of int: 4
Size of short: 2
Size of long: 8
Size of float: 4
Size of double: 8
Size of long double: 16
Size of long long: 8


Reply to this email directly or view it on GitHub
#12 (comment)
.

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Sep 7, 2014

Thanks for the help. I am thinking of adding an AudioFormatWriter to capture the output to a file so I can compare before/after while testing.

ghost commented Sep 7, 2014

Thanks for the help. I am thinking of adding an AudioFormatWriter to capture the output to a file so I can compare before/after while testing.

@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Sep 9, 2014

Owner

Sounds like a good starting point.

On Mon, Sep 8, 2014 at 2:24 AM, nrezmerski notifications@github.com wrote:

Thanks for the help. I am thinking of adding an AudioFormatWriter to
capture the output to a file so I can compare before/after while testing.


Reply to this email directly or view it on GitHub
#12 (comment)
.

Owner

bsutherland commented Sep 9, 2014

Sounds like a good starting point.

On Mon, Sep 8, 2014 at 2:24 AM, nrezmerski notifications@github.com wrote:

Thanks for the help. I am thinking of adding an AudioFormatWriter to
capture the output to a file so I can compare before/after while testing.


Reply to this email directly or view it on GitHub
#12 (comment)
.

@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Sep 28, 2014

Owner

Hi Nick,

Just wanted to let you know I've made a few changes, and it might be interesting to build again and see how it goes.

In particular, I've added ZDoom support, and changed the way buffers are allocated for the DOSBox output. If you have some time, please try building the AudioUnit now and see if it makes a difference.

Cheers!

Owner

bsutherland commented Sep 28, 2014

Hi Nick,

Just wanted to let you know I've made a few changes, and it might be interesting to build again and see how it goes.

In particular, I've added ZDoom support, and changed the way buffers are allocated for the DOSBox output. If you have some time, please try building the AudioUnit now and see if it makes a difference.

Cheers!

@bsutherland bsutherland changed the title from Cast issue building in Xcode to Building OSX version (AudioUnit under XCode) Sep 28, 2014

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Sep 28, 2014

Hi Bruce, thanks for letting me know about this update. I was able to compile 10.1 under XCode and tested it in GarageBand again. I still get noise and distortion when more than one instance of the plugin is used (i.e. as an instrument on multiple tracks). I tried switching between DOSBox and ZDoom emulation but that didn't seem to make any difference.

I noted that the output level on each track stayed way up in the red until I moved the volume slider down to about 10%. Also noted that the emulator switch always reverted to DOSBox when I closed and re-opened the plugin GUI. It would not stay on ZDoom.

ghost commented Sep 28, 2014

Hi Bruce, thanks for letting me know about this update. I was able to compile 10.1 under XCode and tested it in GarageBand again. I still get noise and distortion when more than one instance of the plugin is used (i.e. as an instrument on multiple tracks). I tried switching between DOSBox and ZDoom emulation but that didn't seem to make any difference.

I noted that the output level on each track stayed way up in the red until I moved the volume slider down to about 10%. Also noted that the emulator switch always reverted to DOSBox when I closed and re-opened the plugin GUI. It would not stay on ZDoom.

@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Sep 29, 2014

Owner

Thanks for testing Nick. About the volume - I increased the DOSBox volume to match ZDoom. I think it was a bit too quiet before.

Interesting that the noise it only happens with multiple instances. Before it was just multiple notes on the same instance right? So is this a bit different?

Someone else had noise issues on Windows which he fixed by switching to ASIO drivers. Don't think that applies to OSX though right?

Owner

bsutherland commented Sep 29, 2014

Thanks for testing Nick. About the volume - I increased the DOSBox volume to match ZDoom. I think it was a bit too quiet before.

Interesting that the noise it only happens with multiple instances. Before it was just multiple notes on the same instance right? So is this a bit different?

Someone else had noise issues on Windows which he fixed by switching to ASIO drivers. Don't think that applies to OSX though right?

@Jeff-Russ

This comment has been minimized.

Show comment
Hide comment
@Jeff-Russ

Jeff-Russ Feb 11, 2015

Contributor

I there anywhere I can download the source for the Mac build? There is a lot of platform specific stuff in the original JuceOPLVSTi that prevent it from building and/or result in incorrect number of bits in Xcode. The right solution would be modify the source so that it builds on any platform without tinkering (that's what Juce is for!). I started to modify the original with this goal... not knowing someone else already made a binary for Mac.

Contributor

Jeff-Russ commented Feb 11, 2015

I there anywhere I can download the source for the Mac build? There is a lot of platform specific stuff in the original JuceOPLVSTi that prevent it from building and/or result in incorrect number of bits in Xcode. The right solution would be modify the source so that it builds on any platform without tinkering (that's what Juce is for!). I started to modify the original with this goal... not knowing someone else already made a binary for Mac.

@Jeff-Russ

This comment has been minimized.

Show comment
Hide comment
@Jeff-Russ

Jeff-Russ Feb 21, 2015

Contributor

Congrats! All politics aside, OS X is an excellent environment for musician-programmers. The Core Audio API is basically given kernel-level priority and, in spite of what people think, it's a pretty open system... maybe not as much as Linux but more than Windows.

If you ever need some OS X help I'd be down; working on this OPLVSTi project has helped me a lot.

Next I'd like to work on making JuceOPL work with Linux under Bitwig and possibly make and iOS app if that sounds alright to you. The "VSTi" part of the name will hardly make sense at that point.

I'm also thinking of expanding it into emulations of other YM chips, but that's thinking way ahead.

Contributor

Jeff-Russ commented Feb 21, 2015

Congrats! All politics aside, OS X is an excellent environment for musician-programmers. The Core Audio API is basically given kernel-level priority and, in spite of what people think, it's a pretty open system... maybe not as much as Linux but more than Windows.

If you ever need some OS X help I'd be down; working on this OPLVSTi project has helped me a lot.

Next I'd like to work on making JuceOPL work with Linux under Bitwig and possibly make and iOS app if that sounds alright to you. The "VSTi" part of the name will hardly make sense at that point.

I'm also thinking of expanding it into emulations of other YM chips, but that's thinking way ahead.

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Feb 21, 2015

Just a word of warning on the iOS app - the App Store terms of use conflict with the GPL license, which covers most of the JUCE modules. Of course, you can buy a commercial JUCE license if you want to sell the app.

The DOSBox and ZDoom code are LGPL. See: https://www.fsf.org/news/2010-05-app-store-compliance and http://stackoverflow.com/questions/459833/which-open-source-licenses-are-compatible-with-the-apples-iphone-and-its-offici

ghost commented Feb 21, 2015

Just a word of warning on the iOS app - the App Store terms of use conflict with the GPL license, which covers most of the JUCE modules. Of course, you can buy a commercial JUCE license if you want to sell the app.

The DOSBox and ZDoom code are LGPL. See: https://www.fsf.org/news/2010-05-app-store-compliance and http://stackoverflow.com/questions/459833/which-open-source-licenses-are-compatible-with-the-apples-iphone-and-its-offici

@Jeff-Russ

This comment has been minimized.

Show comment
Hide comment
@Jeff-Russ

Jeff-Russ Feb 21, 2015

Contributor

I'm aware. It would be an app for jailbroken iOS.

Contributor

Jeff-Russ commented Feb 21, 2015

I'm aware. It would be an app for jailbroken iOS.

@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Feb 21, 2015

Owner

Jeffrey, thanks for the offer of future help on OS X! There was a request
for a Linux version, so I'm sure your work would be appreciated:
#21

I'm a bit busy at the moment with the new job but will merge your code and
rebuild on Windows soon. Looking forward to receiving the binary, but no
rush.

I have no objections to an iOS app. If you could link back the original
project that would be great. Would you be porting it to Objective C, or is
there another way? Are there C++ compilers for jailbroken iOS devices?
About the name.. I've been considering renaming it for a while now :) It's
a real mouthful. So far the only idea I've come up with is "Ad Lib
Platinum". Any suggestions?

I actually really like OS X as an operating system for development so far.
Only thing I don't like is that hardware choice is limited if you want to
run it legally.

Nick: The DOSBox code is GPL'd too, so nobody can sell this plugin or a
derivative even if they purchase a JUCE license.

On Sat, Feb 21, 2015 at 12:57 PM, Jeffrey Russ notifications@github.com
wrote:

I'm aware. It would be an app for jailbroken iOS.


Reply to this email directly or view it on GitHub
#12 (comment)
.

Owner

bsutherland commented Feb 21, 2015

Jeffrey, thanks for the offer of future help on OS X! There was a request
for a Linux version, so I'm sure your work would be appreciated:
#21

I'm a bit busy at the moment with the new job but will merge your code and
rebuild on Windows soon. Looking forward to receiving the binary, but no
rush.

I have no objections to an iOS app. If you could link back the original
project that would be great. Would you be porting it to Objective C, or is
there another way? Are there C++ compilers for jailbroken iOS devices?
About the name.. I've been considering renaming it for a while now :) It's
a real mouthful. So far the only idea I've come up with is "Ad Lib
Platinum". Any suggestions?

I actually really like OS X as an operating system for development so far.
Only thing I don't like is that hardware choice is limited if you want to
run it legally.

Nick: The DOSBox code is GPL'd too, so nobody can sell this plugin or a
derivative even if they purchase a JUCE license.

On Sat, Feb 21, 2015 at 12:57 PM, Jeffrey Russ notifications@github.com
wrote:

I'm aware. It would be an app for jailbroken iOS.


Reply to this email directly or view it on GitHub
#12 (comment)
.

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Feb 21, 2015

Actually, you CAN sell it under GPL... you just can't add additional terms to the license. :)

I just looked at opl.h and opl.cpp, which said LGPL, but I see they have GPL on other files.

I know JUCE can target iOS, but I have no idea how much work would be necessary to port the code!

ghost commented Feb 21, 2015

Actually, you CAN sell it under GPL... you just can't add additional terms to the license. :)

I just looked at opl.h and opl.cpp, which said LGPL, but I see they have GPL on other files.

I know JUCE can target iOS, but I have no idea how much work would be necessary to port the code!

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Feb 22, 2015

Jeff, I think you can check out the tree, commit your changes, and create a release in the project if Bruce has added you as a collaborator.

I know Apple can't put GPL'd stuff on the app store, but you could certainly sell the VST or AU plugin as long as you abide by the license terms. I haven't been able to find any OPL stuff under BSD license yet. :(

"AdLib Blaster" is a good straightforward name, but might have trademark issues. I can't think of anything better off the top of my head. JuceFM?

  • Nick

ghost commented Feb 22, 2015

Jeff, I think you can check out the tree, commit your changes, and create a release in the project if Bruce has added you as a collaborator.

I know Apple can't put GPL'd stuff on the app store, but you could certainly sell the VST or AU plugin as long as you abide by the license terms. I haven't been able to find any OPL stuff under BSD license yet. :(

"AdLib Blaster" is a good straightforward name, but might have trademark issues. I can't think of anything better off the top of my head. JuceFM?

  • Nick
@Jeff-Russ

This comment has been minimized.

Show comment
Hide comment
@Jeff-Russ

Jeff-Russ Feb 22, 2015

Contributor

Right. I just mean that for iOS, you pretty much have to go through the app store unless you want to dev for jailbroken iOS.

I don't think i'm a collaborator but I'll try messing around. I still have no idea how to upload a binary without it being linked to the Xcode project file, which causes problems.

Contributor

Jeff-Russ commented Feb 22, 2015

Right. I just mean that for iOS, you pretty much have to go through the app store unless you want to dev for jailbroken iOS.

I don't think i'm a collaborator but I'll try messing around. I still have no idea how to upload a binary without it being linked to the Xcode project file, which causes problems.

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Feb 23, 2015

Thanks, Jeff! I haven't tried the VST version but I can't get the AU to load in GarageBand 4 or 10. GB doesn't do VST, but I'll try another host for those.

ghost commented Feb 23, 2015

Thanks, Jeff! I haven't tried the VST version but I can't get the AU to load in GarageBand 4 or 10. GB doesn't do VST, but I'll try another host for those.

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Feb 23, 2015

I don't know if this will be any help, but Console logged an error trying to load the Audio Unit, saying "Symbol not found: OBJC_CLASS$_NSHTTPURLResponse" expected in: /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork

ghost commented Feb 23, 2015

I don't know if this will be any help, but Console logged an error trying to load the Audio Unit, saying "Symbol not found: OBJC_CLASS$_NSHTTPURLResponse" expected in: /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork

@Jeff-Russ

This comment has been minimized.

Show comment
Hide comment
@Jeff-Russ

Jeff-Russ Feb 23, 2015

Contributor

What OS X are you on? Are you running GB in 64-bit? Did you use my build or try rebuilding from source? Does any of this relate? http://www.juce.com/forum/topic/wont-run-osx

Contributor

Jeff-Russ commented Feb 23, 2015

What OS X are you on? Are you running GB in 64-bit? Did you use my build or try rebuilding from source? Does any of this relate? http://www.juce.com/forum/topic/wont-run-osx

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Feb 23, 2015

Mavericks 10.9.5, on an early 2008 2.5Ghz Core Duo MacBook Pro with 4GB of RAM. I also have a Snow Leopard partition, if you compiled for 10.6 compatibility I can try that. I haven't tried compiling from your source yet.

ghost commented Feb 23, 2015

Mavericks 10.9.5, on an early 2008 2.5Ghz Core Duo MacBook Pro with 4GB of RAM. I also have a Snow Leopard partition, if you compiled for 10.6 compatibility I can try that. I haven't tried compiling from your source yet.

@Jeff-Russ

This comment has been minimized.

Show comment
Hide comment
Contributor

Jeff-Russ commented Feb 23, 2015

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Feb 23, 2015

No dice, I still don't see it in either version of GB. I tried downloading Apple's AU Lab as well, and it didn't show up there. I did see the Juce Demo Plugin I compiled a couple days ago.

ghost commented Feb 23, 2015

No dice, I still don't see it in either version of GB. I tried downloading Apple's AU Lab as well, and it didn't show up there. I did see the Juce Demo Plugin I compiled a couple days ago.

@Jeff-Russ

This comment has been minimized.

Show comment
Hide comment
@Jeff-Russ

Jeff-Russ Feb 23, 2015

Contributor

Weird. I tested it in Ableton Live, Reaper and Logic Pro and it worked fine in all of them. I have no idea...

Contributor

Jeff-Russ commented Feb 23, 2015

Weird. I tested it in Ableton Live, Reaper and Logic Pro and it worked fine in all of them. I have no idea...

@Jeff-Russ

This comment has been minimized.

Show comment
Hide comment
@Jeff-Russ

Jeff-Russ Feb 23, 2015

Contributor

Yeah I get "plugin failed to load" on my older mac. It's definitely an Apple framework issue too. I'm gonna unpublish the page until I work it out. Thanks for testing!!!

Contributor

Jeff-Russ commented Feb 23, 2015

Yeah I get "plugin failed to load" on my older mac. It's definitely an Apple framework issue too. I'm gonna unpublish the page until I work it out. Thanks for testing!!!

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Feb 23, 2015

I managed to build the Juce plugin host demo, which gave me trouble before. I had a lot of errors in the VST3 files, so I just disabled the VST3 features and it compiled. When I ran it, I was able to see your binary plugin, and load it - and it made noise! Multiple instances with no problems. :)

ghost commented Feb 23, 2015

I managed to build the Juce plugin host demo, which gave me trouble before. I had a lot of errors in the VST3 files, so I just disabled the VST3 features and it compiled. When I ran it, I was able to see your binary plugin, and load it - and it made noise! Multiple instances with no problems. :)

@Jeff-Russ

This comment has been minimized.

Show comment
Hide comment
@Jeff-Russ

Jeff-Russ Feb 23, 2015

Contributor

It made noise as in good noise or bad noise? lol Is this the VST or the AU?

Contributor

Jeff-Russ commented Feb 23, 2015

It made noise as in good noise or bad noise? lol Is this the VST or the AU?

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Feb 23, 2015

It sounded good, is what I mean. Not white noise, music. I should have been clear. :)

This is the AU binary you most recently uploaded.

ghost commented Feb 23, 2015

It sounded good, is what I mean. Not white noise, music. I should have been clear. :)

This is the AU binary you most recently uploaded.

@Jeff-Russ

This comment has been minimized.

Show comment
Hide comment
@Jeff-Russ

Jeff-Russ Feb 23, 2015

Contributor

Apparently some DAWs will fail a plugin if it's mono and you try to insert it into a stereo channel. Apparently VSTi does not have this issue. This would explain why AU validation does not fail but loading does fail. I am 99.999% sure this is the answer. I will try to find and answer to this.

Contributor

Jeff-Russ commented Feb 23, 2015

Apparently some DAWs will fail a plugin if it's mono and you try to insert it into a stereo channel. Apparently VSTi does not have this issue. This would explain why AU validation does not fail but loading does fail. I am 99.999% sure this is the answer. I will try to find and answer to this.

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Feb 23, 2015

That's correct-- Garage Band v.10 and '08 (v.4) don't see it. Here's the auval output:

AU Validation Tool
Version: 1.6.1a1 
Copyright 2003-2013, Apple Inc. All Rights Reserved.
Specify -h (-help) for command options

VALIDATING AUDIO UNIT: 'aumu' - 'PwAB' - 'Pwve'

2015-02-23 14:21:45.926 auvaltool[28563:d07] 14:21:45.898 WARNING: [0x7fff75e53310] >compload> AudioComponentPluginLoader.cpp:662: RegisterComponentsFromArray:
Manufacturer String: Plainweave Software
AudioUnit Name: AdlibBlaster
Component Version: 0.11.1 (0xB01)
Component's Bundle Version: 0.0.0

* * PASS

TESTING OPEN TIMES:
COLD:
JUCE v3.1.1

=== Starting debug console.....
Time to open AudioUnit: 2048.391 ms
WARM:

=== Starting debug console.....
Time to open AudioUnit: 147.424 ms
FIRST TIME:
Time for initialization: 0.012 ms

=== Exited debug console ===

* * PASS

VERIFYING DEFAULT SCOPE FORMATS:
Input Scope Bus Configuration:
Default Bus Count:0

Output Scope Bus Configuration:
Default Bus Count:1
Default Format: AudioStreamBasicDescription: 1 ch, 44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved

* * PASS

VERIFYING REQUIRED PROPERTIES:

* * PASS

VERIFYING RECOMMENDED PROPERTIES:
VERIFYING PROPERTY: Latency
ca_require: inScope == kAudioUnitScope_Global InvalidScope /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:402
ca_require: inScope == kAudioUnitScope_Global InvalidScope /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:402
ca_require: inScope == kAudioUnitScope_Global InvalidScope /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:402
ca_require: inScope == kAudioUnitScope_Global InvalidScope /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:402
ca_require: inScope == kAudioUnitScope_Global InvalidScope /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:402
ca_require: inScope == kAudioUnitScope_Global InvalidScope /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:402
PASS

* * PASS

VERIFYING OPTIONAL PROPERTIES:
VERIFYING PROPERTY Tail Time
ca_require: inScope == kAudioUnitScope_Global InvalidScope /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:408
ca_debug_string: AudioUnitGetProperty: *ioDataSize == 0 on entry /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUDispatch.cpp:178
ca_require: inScope == kAudioUnitScope_Global InvalidScope /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:408
ca_debug_string: AudioUnitGetProperty: *ioDataSize == 0 on entry /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUDispatch.cpp:178
ca_require: inScope == kAudioUnitScope_Global InvalidScope /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:408
ca_debug_string: AudioUnitGetProperty: *ioDataSize == 0 on entry /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUDispatch.cpp:178
PASS
ca_debug_string: AudioUnitGetProperty: *ioDataSize == 0 on entry /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUDispatch.cpp:178
ca_debug_string: AudioUnitGetProperty: *ioDataSize == 0 on entry /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUDispatch.cpp:178
ca_debug_string: AudioUnitGetProperty: *ioDataSize == 0 on entry /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUDispatch.cpp:178
ca_debug_string: AudioUnitGetProperty: *ioDataSize == 0 on entry /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUDispatch.cpp:178

* * PASS

VERIFYING SPECIAL PROPERTIES:

VERIFYING CUSTOM UI
Cocoa Views Available: 1
JUCE_AUCocoaViewClass_6f7c1de6d12b6298
PASS

HAS FACTORY PRESETS
ID: 0 Name: Buzcut Bass
ID: 1 Name: Dark Future Sweep
ID: 2 Name: Death Toll Bell
ID: 3 Name: Desert Pipe
ID: 4 Name: Emperor Chord
ID: 5 Name: Harpsi
ID: 6 Name: Mercenary Bass
ID: 7 Name: Patrol Bass
ID: 8 Name: Sinister Bass
ID: 9 Name: Subdue Bass
ID: 10 Name: Tromba
ID: 11 Name: Westwood Chime
ID: 12 Name: Y2180 Strings
ID: 13 Name: bassdrum

VERIFYING CLASS INFO
PASS

TESTING HOST CALLBACKS
PASS

* * PASS

PUBLISHED PARAMETER INFO:

# # 32 Global Scope Parameters:

Parameter ID:0
Name: Carrier Wave
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:1
Name: Modulator Wave
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:2
Name: Carrier Frequency Multiplier
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:3
Name: Modulator Frequency Multiplier
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:4
Name: Carrier Attenuation
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:5
Name: Modulator Attenuation
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:6
Name: Tremolo Depth
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:7
Name: Vibrato Depth
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:8
Name: Carrier Tremolo
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:9
Name: Carrier Vibrato
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:10
Name: Carrier Sustain
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:11
Name: Carrier Keyscale Rate
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:12
Name: Modulator Tremolo
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:13
Name: Modulator Vibrato
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:14
Name: Modulator Sustain
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:15
Name: Modulator Keyscale Rate
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:16
Name: Carrier Keyscale Level
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:17
Name: Modulator Keyscale Level
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:18
Name: Algorithm
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:19
Name: Modulator Feedback
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:20
Name: Carrier Attack
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:21
Name: Carrier Decay
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:22
Name: Carrier Sustain Level
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:23
Name: Carrier Release
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:24
Name: Modulator Attack
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:25
Name: Modulator Decay
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:26
Name: Modulator Sustain Level
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:27
Name: Modulator Release
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:28
Name: Carrier Velocity Sensitivity
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:29
Name: Modulator Velocity Sensitivity
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:30
Name: Emulator
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:31
Name: Percussion Mode
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Testing that parameters retain value across reset and initialization
PASS

* * PASS

FORMAT TESTS:

Reported Channel Capabilities (explicit):
[0, 1]

No Input, Output Chans:
0-1 0-2 0-4 0-5 0-6 0-7 0-8
X

* * PASS

RENDER TESTS:

Output Format: AudioStreamBasicDescription: 1 ch, 44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved
Render Test at 512 frames
Slicing Render Test at 64 frames
PASS

Render Test at 64 frames, sample rate: 22050 Hz
Render Test at 137 frames, sample rate: 96000 Hz
Render Test at 4096 frames, sample rate: 48000 Hz
Render Test at 4096 frames, sample rate: 192000 Hz
Render Test at 4096 frames, sample rate: 11025 Hz
Render Test at 512 frames, sample rate: 44100 Hz
PASS

1 Channel Test:
Render Test at 512 frames
PASS

Bad Max Frames - Render should fail
/Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:1439 inFramesToProcess=8192, mMaxFramesPerSlice=512; TooManyFrames
from AU (0x810001): 'aumu' 'PwAB' 'Pwve', render err: -10874
PASS

Checking parameter setting
Using AudioUnitSetParameter
Using AudioUnitScheduleParameter
PASS

Test MIDI
PASS

* * PASS

=== Exited debug console ===

AU VALIDATION SUCCEEDED.

ghost commented Feb 23, 2015

That's correct-- Garage Band v.10 and '08 (v.4) don't see it. Here's the auval output:

AU Validation Tool
Version: 1.6.1a1 
Copyright 2003-2013, Apple Inc. All Rights Reserved.
Specify -h (-help) for command options

VALIDATING AUDIO UNIT: 'aumu' - 'PwAB' - 'Pwve'

2015-02-23 14:21:45.926 auvaltool[28563:d07] 14:21:45.898 WARNING: [0x7fff75e53310] >compload> AudioComponentPluginLoader.cpp:662: RegisterComponentsFromArray:
Manufacturer String: Plainweave Software
AudioUnit Name: AdlibBlaster
Component Version: 0.11.1 (0xB01)
Component's Bundle Version: 0.0.0

* * PASS

TESTING OPEN TIMES:
COLD:
JUCE v3.1.1

=== Starting debug console.....
Time to open AudioUnit: 2048.391 ms
WARM:

=== Starting debug console.....
Time to open AudioUnit: 147.424 ms
FIRST TIME:
Time for initialization: 0.012 ms

=== Exited debug console ===

* * PASS

VERIFYING DEFAULT SCOPE FORMATS:
Input Scope Bus Configuration:
Default Bus Count:0

Output Scope Bus Configuration:
Default Bus Count:1
Default Format: AudioStreamBasicDescription: 1 ch, 44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved

* * PASS

VERIFYING REQUIRED PROPERTIES:

* * PASS

VERIFYING RECOMMENDED PROPERTIES:
VERIFYING PROPERTY: Latency
ca_require: inScope == kAudioUnitScope_Global InvalidScope /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:402
ca_require: inScope == kAudioUnitScope_Global InvalidScope /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:402
ca_require: inScope == kAudioUnitScope_Global InvalidScope /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:402
ca_require: inScope == kAudioUnitScope_Global InvalidScope /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:402
ca_require: inScope == kAudioUnitScope_Global InvalidScope /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:402
ca_require: inScope == kAudioUnitScope_Global InvalidScope /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:402
PASS

* * PASS

VERIFYING OPTIONAL PROPERTIES:
VERIFYING PROPERTY Tail Time
ca_require: inScope == kAudioUnitScope_Global InvalidScope /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:408
ca_debug_string: AudioUnitGetProperty: *ioDataSize == 0 on entry /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUDispatch.cpp:178
ca_require: inScope == kAudioUnitScope_Global InvalidScope /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:408
ca_debug_string: AudioUnitGetProperty: *ioDataSize == 0 on entry /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUDispatch.cpp:178
ca_require: inScope == kAudioUnitScope_Global InvalidScope /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:408
ca_debug_string: AudioUnitGetProperty: *ioDataSize == 0 on entry /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUDispatch.cpp:178
PASS
ca_debug_string: AudioUnitGetProperty: *ioDataSize == 0 on entry /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUDispatch.cpp:178
ca_debug_string: AudioUnitGetProperty: *ioDataSize == 0 on entry /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUDispatch.cpp:178
ca_debug_string: AudioUnitGetProperty: *ioDataSize == 0 on entry /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUDispatch.cpp:178
ca_debug_string: AudioUnitGetProperty: *ioDataSize == 0 on entry /Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUDispatch.cpp:178

* * PASS

VERIFYING SPECIAL PROPERTIES:

VERIFYING CUSTOM UI
Cocoa Views Available: 1
JUCE_AUCocoaViewClass_6f7c1de6d12b6298
PASS

HAS FACTORY PRESETS
ID: 0 Name: Buzcut Bass
ID: 1 Name: Dark Future Sweep
ID: 2 Name: Death Toll Bell
ID: 3 Name: Desert Pipe
ID: 4 Name: Emperor Chord
ID: 5 Name: Harpsi
ID: 6 Name: Mercenary Bass
ID: 7 Name: Patrol Bass
ID: 8 Name: Sinister Bass
ID: 9 Name: Subdue Bass
ID: 10 Name: Tromba
ID: 11 Name: Westwood Chime
ID: 12 Name: Y2180 Strings
ID: 13 Name: bassdrum

VERIFYING CLASS INFO
PASS

TESTING HOST CALLBACKS
PASS

* * PASS

PUBLISHED PARAMETER INFO:

# # 32 Global Scope Parameters:

Parameter ID:0
Name: Carrier Wave
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:1
Name: Modulator Wave
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:2
Name: Carrier Frequency Multiplier
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:3
Name: Modulator Frequency Multiplier
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:4
Name: Carrier Attenuation
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:5
Name: Modulator Attenuation
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:6
Name: Tremolo Depth
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:7
Name: Vibrato Depth
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:8
Name: Carrier Tremolo
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:9
Name: Carrier Vibrato
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:10
Name: Carrier Sustain
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:11
Name: Carrier Keyscale Rate
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:12
Name: Modulator Tremolo
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:13
Name: Modulator Vibrato
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:14
Name: Modulator Sustain
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:15
Name: Modulator Keyscale Rate
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:16
Name: Carrier Keyscale Level
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:17
Name: Modulator Keyscale Level
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:18
Name: Algorithm
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:19
Name: Modulator Feedback
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:20
Name: Carrier Attack
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:21
Name: Carrier Decay
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:22
Name: Carrier Sustain Level
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:23
Name: Carrier Release
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:24
Name: Modulator Attack
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:25
Name: Modulator Decay
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:26
Name: Modulator Sustain Level
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:27
Name: Modulator Release
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:28
Name: Carrier Velocity Sensitivity
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:29
Name: Modulator Velocity Sensitivity
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:30
Name: Emulator
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Parameter ID:31
Name: Percussion Mode
Parameter Type: Generic
Values: Minimum = 0, Default = 0, Maximum = 1
Flags: Values Have Strings, Readable, Writable
-parameter PASS

Testing that parameters retain value across reset and initialization
PASS

* * PASS

FORMAT TESTS:

Reported Channel Capabilities (explicit):
[0, 1]

No Input, Output Chans:
0-1 0-2 0-4 0-5 0-6 0-7 0-8
X

* * PASS

RENDER TESTS:

Output Format: AudioStreamBasicDescription: 1 ch, 44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved
Render Test at 512 frames
Slicing Render Test at 64 frames
PASS

Render Test at 64 frames, sample rate: 22050 Hz
Render Test at 137 frames, sample rate: 96000 Hz
Render Test at 4096 frames, sample rate: 48000 Hz
Render Test at 4096 frames, sample rate: 192000 Hz
Render Test at 4096 frames, sample rate: 11025 Hz
Render Test at 512 frames, sample rate: 44100 Hz
PASS

1 Channel Test:
Render Test at 512 frames
PASS

Bad Max Frames - Render should fail
/Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp:1439 inFramesToProcess=8192, mMaxFramesPerSlice=512; TooManyFrames
from AU (0x810001): 'aumu' 'PwAB' 'Pwve', render err: -10874
PASS

Checking parameter setting
Using AudioUnitSetParameter
Using AudioUnitScheduleParameter
PASS

Test MIDI
PASS

* * PASS

=== Exited debug console ===

AU VALIDATION SUCCEEDED.

@Jeff-Russ

This comment has been minimized.

Show comment
Hide comment
@Jeff-Russ

Jeff-Russ Feb 23, 2015

Contributor

If my theory is correct, the following will work in Garage Band, putting out audio only in the left channel...

http://bit.ly/1FPNA4h

This is also a possible explanation for the garbage noise when first loading the AU in Logic. It's taking audio from a buffer that doesn't exist for the right channel. What it finds is garbage.

Contributor

Jeff-Russ commented Feb 23, 2015

If my theory is correct, the following will work in Garage Band, putting out audio only in the left channel...

http://bit.ly/1FPNA4h

This is also a possible explanation for the garbage noise when first loading the AU in Logic. It's taking audio from a buffer that doesn't exist for the right channel. What it finds is garbage.

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Feb 23, 2015

No luck... it doesn't load in GB and auval shows this:


VALIDATING AUDIO UNIT: 'aumu' - 'PwAB' - 'Pwve'

2015-02-23 15:02:22.971 auvaltool[30261:d07] 15:02:22.970 WARNING: [0x7fff75e53310] >compload> AudioComponentPluginLoader.cpp:662: RegisterComponentsFromArray:
Manufacturer String: Plainweave Software
AudioUnit Name: AdlibBlaster
Component Version: 0.11.1 (0xB01)
Component's Bundle Version: 0.0.0

* * PASS

TESTING OPEN TIMES:
COLD:
2015-02-23 15:02:23.068 auvaltool[30261:d07] Error loading /Library/Audio/Plug-Ins/Components/AdlibBlaster.component/Contents/MacOS/AdlibBlaster: dlopen(/Library/Audio/Plug-Ins/Components/AdlibBlaster.component/Contents/MacOS/AdlibBlaster, 262): Symbol not found: OBJC_CLASS$_NSHTTPURLResponse
Referenced from: /Library/Audio/Plug-Ins/Components/AdlibBlaster.component/Contents/MacOS/AdlibBlaster
Expected in: /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
in /Library/Audio/Plug-Ins/Components/AdlibBlaster.component/Contents/MacOS/AdlibBlaster
FATAL ERROR: OpenAComponent: result: -50,0xFFFFFFCE

ghost commented Feb 23, 2015

No luck... it doesn't load in GB and auval shows this:


VALIDATING AUDIO UNIT: 'aumu' - 'PwAB' - 'Pwve'

2015-02-23 15:02:22.971 auvaltool[30261:d07] 15:02:22.970 WARNING: [0x7fff75e53310] >compload> AudioComponentPluginLoader.cpp:662: RegisterComponentsFromArray:
Manufacturer String: Plainweave Software
AudioUnit Name: AdlibBlaster
Component Version: 0.11.1 (0xB01)
Component's Bundle Version: 0.0.0

* * PASS

TESTING OPEN TIMES:
COLD:
2015-02-23 15:02:23.068 auvaltool[30261:d07] Error loading /Library/Audio/Plug-Ins/Components/AdlibBlaster.component/Contents/MacOS/AdlibBlaster: dlopen(/Library/Audio/Plug-Ins/Components/AdlibBlaster.component/Contents/MacOS/AdlibBlaster, 262): Symbol not found: OBJC_CLASS$_NSHTTPURLResponse
Referenced from: /Library/Audio/Plug-Ins/Components/AdlibBlaster.component/Contents/MacOS/AdlibBlaster
Expected in: /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
in /Library/Audio/Plug-Ins/Components/AdlibBlaster.component/Contents/MacOS/AdlibBlaster
FATAL ERROR: OpenAComponent: result: -50,0xFFFFFFCE

@Jeff-Russ

This comment has been minimized.

Show comment
Hide comment
@Jeff-Russ

Jeff-Russ Feb 23, 2015

Contributor

I've pretty much confirmed that the issue is caused by the way different DAW's handle mono AU's. When I made the AU be stereo with nothing in the right channel it worked in every DAW.

I think it's best to just avoid mono AU's and make a right channel that just mirrors the left. I don't think this will impact the windows version but If I does, I have a project snapshot taken now, just before I retool it to be "stereo."

Contributor

Jeff-Russ commented Feb 23, 2015

I've pretty much confirmed that the issue is caused by the way different DAW's handle mono AU's. When I made the AU be stereo with nothing in the right channel it worked in every DAW.

I think it's best to just avoid mono AU's and make a right channel that just mirrors the left. I don't think this will impact the windows version but If I does, I have a project snapshot taken now, just before I retool it to be "stereo."

@Jeff-Russ

This comment has been minimized.

Show comment
Hide comment
@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Feb 25, 2015

Thanks for the update! However, it makes scratching noises in GB 4, and doesn't show up at all in GB 10. Maybe you can get another GB user to try it?

Edit: I had an older version in my user library. New version doesn't show up in either GB. :(

ghost commented Feb 25, 2015

Thanks for the update! However, it makes scratching noises in GB 4, and doesn't show up at all in GB 10. Maybe you can get another GB user to try it?

Edit: I had an older version in my user library. New version doesn't show up in either GB. :(

@Jeff-Russ

This comment has been minimized.

Show comment
Hide comment
@Jeff-Russ

Jeff-Russ Feb 25, 2015

Contributor

if GB is like Logic, it cashes versions until there is a name change. Look to see if there is a way to reset and reload.

Contributor

Jeff-Russ commented Feb 25, 2015

if GB is like Logic, it cashes versions until there is a name change. Look to see if there is a way to reset and reload.

@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Nov 30, 2015

Owner

Nick,

In case you're still interested, I finally merged Jeff's code into the master branch. Hopefully it builds under OSX now.

Cheers,

Bruce

Owner

bsutherland commented Nov 30, 2015

Nick,

In case you're still interested, I finally merged Jeff's code into the master branch. Hopefully it builds under OSX now.

Cheers,

Bruce

@Jeff-Russ

This comment has been minimized.

Show comment
Hide comment
@Jeff-Russ

Jeff-Russ Dec 3, 2015

Contributor

Great!

Contributor

Jeff-Russ commented Dec 3, 2015

Great!

@rpazyaquian

This comment has been minimized.

Show comment
Hide comment
@rpazyaquian

rpazyaquian Feb 6, 2016

So does this mean this can be built for OSX machines now? Are there instructions for doing so anywhere aside from the comment line here?

So does this mean this can be built for OSX machines now? Are there instructions for doing so anywhere aside from the comment line here?

@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Feb 7, 2016

Owner

Rebecca,

It should build under OSX now, but unfortunately I have no way to confirm.

I'm afraid I also can't help much with build instructions, beyond what's in the comments here. If you are able to do it and can contribute instructions, that would be much appreciated!

For help, you could try the Juce forums, or possibly Jeff (who produced the first Mac build here: https://github.com/Jeff-Russ/AdlibBlaster)

Bruce

Owner

bsutherland commented Feb 7, 2016

Rebecca,

It should build under OSX now, but unfortunately I have no way to confirm.

I'm afraid I also can't help much with build instructions, beyond what's in the comments here. If you are able to do it and can contribute instructions, that would be much appreciated!

For help, you could try the Juce forums, or possibly Jeff (who produced the first Mac build here: https://github.com/Jeff-Russ/AdlibBlaster)

Bruce

@Jeff-Russ

This comment has been minimized.

Show comment
Hide comment
@Jeff-Russ

Jeff-Russ Feb 7, 2016

Contributor

Everybody: I'm consumed in a web development project at the moment but I plan to return and fix the Mac build as soon as I can. Sorry I've been AWOL!!

Contributor

Jeff-Russ commented Feb 7, 2016

Everybody: I'm consumed in a web development project at the moment but I plan to return and fix the Mac build as soon as I can. Sorry I've been AWOL!!

@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Feb 7, 2016

Owner

Jeff, no worries at all! My day job is web development too..

Thanks a lot for your work getting it working under OSX.

Owner

bsutherland commented Feb 7, 2016

Jeff, no worries at all! My day job is web development too..

Thanks a lot for your work getting it working under OSX.

@Jeff-Russ

This comment has been minimized.

Show comment
Hide comment
@Jeff-Russ

Jeff-Russ Feb 8, 2016

Contributor

@rpazyaquian
This is by no stretch a "release" but I had some free time to I fired up Xcode. I just made a few changes and it compiled. It ran with no major issues in OSX 10.10 Logic Pro X and OSX 10.10 Ableton Live 9 as both AUi and VSTi. I didn't test it very much but see if this works for you...

Download AUi
Download VSTi
my fork of JuceOPLVSTi

Contributor

Jeff-Russ commented Feb 8, 2016

@rpazyaquian
This is by no stretch a "release" but I had some free time to I fired up Xcode. I just made a few changes and it compiled. It ran with no major issues in OSX 10.10 Logic Pro X and OSX 10.10 Ableton Live 9 as both AUi and VSTi. I didn't test it very much but see if this works for you...

Download AUi
Download VSTi
my fork of JuceOPLVSTi

@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Feb 8, 2016

Owner

Great, thanks Jeff!

Owner

bsutherland commented Feb 8, 2016

Great, thanks Jeff!

@gdreyband

This comment has been minimized.

Show comment
Hide comment
@gdreyband

gdreyband Jan 30, 2017

Compiled for Mac this afternoon. Thanks for all the hard work! :)

JuceOPLVSTi-0.14.1-Mac.zip

gdreyband commented Jan 30, 2017

Compiled for Mac this afternoon. Thanks for all the hard work! :)

JuceOPLVSTi-0.14.1-Mac.zip

@bsutherland

This comment has been minimized.

Show comment
Hide comment
@bsutherland

bsutherland Jan 30, 2017

Owner

Thanks a lot for building! I'll add it to the release downloads.

Was it hard to build, or did it basically work out of the box?

Owner

bsutherland commented Jan 30, 2017

Thanks a lot for building! I'll add it to the release downloads.

Was it hard to build, or did it basically work out of the box?

@gdreyband

This comment has been minimized.

Show comment
Hide comment
@gdreyband

gdreyband Jan 30, 2017

Pretty much right out of the box in Xcode once I relinked the JUCE plugins correctly.


Visual bugs I noticed (not sure if it's on the PC version):
-Selecting a checkbox creates a really noticeable white border around the entire option.
-Clicking on a DDL makes the green box around it disappear until an unrelated area is clicked.
-Load SBI instrument still opens window behind all other active DAW windows.
-When loading SBI files, the channel window doesn't reflect in-use channels (likely a deeper issue).


Another question, rather than messing with SBI files would you be interested in me creating a number of presets? A lot of VST/AUs provide a whole host of presets built into the plugin. Right now there's 14, but I'd be happy to create a lot more.


Also, if it's not too much hassle for you, I'm going to continue working on the GUI in my spare time to make it better. Right now there are some things bothering me.
-Attentuation slider (might be better placed to the right of the envelope), I see some chunky "step" motion when dragging it, which leads me to believe it could be shorter.
-Desire for custom elements for sliders and knobs to replace most DDLs.

I'm not going to foist any major changes on you, but I'm going to work on a couple of more drastic variations and see how far I can get before I present them to you. Once I figure out how to make good looking functional custom elements in JUCE, I'll provide some of that myself.

gdreyband commented Jan 30, 2017

Pretty much right out of the box in Xcode once I relinked the JUCE plugins correctly.


Visual bugs I noticed (not sure if it's on the PC version):
-Selecting a checkbox creates a really noticeable white border around the entire option.
-Clicking on a DDL makes the green box around it disappear until an unrelated area is clicked.
-Load SBI instrument still opens window behind all other active DAW windows.
-When loading SBI files, the channel window doesn't reflect in-use channels (likely a deeper issue).


Another question, rather than messing with SBI files would you be interested in me creating a number of presets? A lot of VST/AUs provide a whole host of presets built into the plugin. Right now there's 14, but I'd be happy to create a lot more.


Also, if it's not too much hassle for you, I'm going to continue working on the GUI in my spare time to make it better. Right now there are some things bothering me.
-Attentuation slider (might be better placed to the right of the envelope), I see some chunky "step" motion when dragging it, which leads me to believe it could be shorter.
-Desire for custom elements for sliders and knobs to replace most DDLs.

I'm not going to foist any major changes on you, but I'm going to work on a couple of more drastic variations and see how far I can get before I present them to you. Once I figure out how to make good looking functional custom elements in JUCE, I'll provide some of that myself.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment