asb2m10 / dexed

DX7 FM multi plaform/multi format plugin
GNU General Public License v3.0
2.8k stars 242 forks source link

Anyone tried compiling dexed for AudioUnits? #22

Closed BeFiveINFO closed 9 years ago

BeFiveINFO commented 9 years ago

I tried compiling dexed (AudioUnits only) for 64bit binary with XCode 6.1 running on Yosemite.

I modified the following lines in JuceLibraryCode/AppConfig.h to

define JucePlugin_Build_VST 0

define JucePlugin_Build_AU 1

But I get Parse Issue Unknown type name 'Point' in Finder.h as well as in Quickdraw.h. I also tried with the latest juce library (I also had to install AudioUnits header) and I could go only up to where I got loads of "Undefined symbols for architecture x86_64".

Is there anyone that got the same problem?

asb2m10 commented 9 years ago

I think you need to use IntroJucer (included in JUCE) and regenerate the XCode project by selecting AU in IntroJucer. See the Dexed.jucer file.

I think that the #define is only used for the code... no the linkage options.

BeFiveINFO commented 9 years ago

Thank you very much for a reply.

I cloned the JUCE repo, built the IntroJucer, then regenerated the XCode project. I could build the AU plugin component however the dexed AU plugin fails the Logic Pro X validation.

PUBLISHED PARAMETER INFO:

# # # 148 Global Scope Parameters:
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set
... followed by about hundreds (144?) of repeated lines of the message above ...
ERROR: Parameter did not retain set value when Initialized

* * FAIL
--------------------------------------------------
AU VALIDATION FAILED: CORRECT THE ERRORS ABOVE.
--------------------------------------------------

The Dexed plugin can be made to be loaded in the Logic Pro X but it does not generate any sound.

Though I am afraid that you might be busy but thank you for your time as well as advices or help in advance.

[Update] Here is an output from the AU Validation Tool: https://gist.github.com/BeFiveINFO/99ecdba4a130d7a94f7f

asb2m10 commented 9 years ago

You are getting further than I was on early versions. :D

I will do a refactoring of host messages in 0.8.1 so that might fix it. If it doesn't, I'm looking forward to make the necessaries change so AU work.

I'm keeping this issue open until AU really work.

PS: my only real AU host is Reaper.

BeFiveINFO commented 9 years ago

Thank you very much! I tried to look into it by myself but I gave up. It is too far beyond my skill!

devil-tamachan commented 9 years ago

Audio Unit Version worked in Garageband. That's failed in 'auval -v', so Logic may not work. (I don't have Logic)

Note: getNumInputChannels() return always 0 in AudioUnit.

Source/PluginProcessor.cpp@239
-    for (int channel = 1; channel < getNumInputChannels(); ++channel) {
-        buffer.copyFrom(channel, 0, channelData, numSamples, 1);
-    }
-    
-    // In case we have more outputs than inputs, we'll clear any output
-    // channels that didn't contain input data, (because these aren't
-    // guaranteed to be empty - they may contain garbage).
-    for (int i = getNumInputChannels() ; i < getNumOutputChannels(); ++i) {
-        buffer.clear (i, 0, buffer.getNumSamples());
-    }
+    for (int channel = 1; channel < getNumOutputChannels(); ++channel) {
+        buffer.copyFrom(channel, 0, channelData, numSamples, 1);
+    }
+    
+    // In case we have more outputs than inputs, we'll clear any output
+    // channels that didn't contain input data, (because these aren't
+    // guaranteed to be empty - they may contain garbage).
+    //for (int i = getNumInputChannels() ; i < getNumOutputChannels(); ++i) {
+    //    buffer.clear (i, 0, buffer.getNumSamples());
+    //}

2: Change to Universal(32/64bit) binary. (for old 32bit Garageband)

Compiled Binary: https://drive.google.com/file/d/0B7h5NcRw8uVCbUJvZzlXOVNpOEU/view?usp=sharing

BeFiveINFO commented 9 years ago

Thank you!

I tested and it plays sound very well on Logic Pro X (10.0.7) running on OSX Yosemite 10.10.1!

Loading a dozen of SYX works, modifying parameter settings works, those settings are retained and copy & paste of settings to other tracks with dexed work. Saved the file and started up again, the settings are still kept. And needless to say dexed plays the familiar sounds beautifully!

Nevertheless It still causes errors during the Logic Pro validation process at startup. I can just ignore the error and tick the checkbox for dexed in the Audio Units Manager to force dexed to work on Logic Pro X. (The dexed plugin can be found under "Au Instruments / [Incompatible] / Digital Suburban / Dexed" in the track plugin pull down menu.)

There is not apparently any problem found so far in using dexed except for the Logic Pro X AU validation error warning at start up which can be ignored.

AU validation tool error output can be found at: https://gist.github.com/BeFiveINFO/fa179a02b3afc0cc4dd6

BeFiveINFO commented 9 years ago

Just one problem to update on the test build testing.

Once any ComboBox element in the UI of dexed is clicked and the combobox is drawn, you will not be able to click on the combobox. So you will be able to make just one change to each setting using ComboBox until you close the dexed window and open again.

This is confirmed with Logic Pro X as well as Garageband version 6.0.5.

The problem does not exist with a build from the original code (0.8).

UPDATE: to change the value of unresponsive combobox, click on the UI element first (which seems to let you change the current focus), then use left / right arrow keys to change the value.

Borrachon commented 9 years ago

Hello, I am new here and not nearly anywhere close the level of technical knowledge that you guys have here, my question is very simple.Is Dexed supposed to work with Logic X? If yes, how do I install? Thanx. Simon

anr-ableton commented 9 years ago

did you put the vst in

library/audio/plugins/vst

?

On 30/12/2014 19:18, Borrachon wrote:

Hello, I am new here and not nearly anywhere close the level of technical knowledge that you guys have here, my question is very simple.Is Dexed supposed to work with Logic X? If yes, how do I install? Thanx. Simon

— Reply to this email directly or view it on GitHub https://github.com/asb2m10/dexed/issues/22#issuecomment-68387498.

asb2m10 commented 9 years ago

Thanks devil-tamachan for the fix, I will add this to the 0.8.1 branch. As soon as the parameter refactoring is done and AU validation tool passes I'll update this issue so people can test it.

asb2m10 commented 9 years ago

AU support is now committed in the 0.8.1 branch. Everything should be fixed for AU stuff (the au validation tool pass).

BeFiveINFO commented 9 years ago

Thank you very much!

Build was successful but it got errors and is without any sound output. Here is the validation tool output gist:

DEXED Validation error output from Logic PRo X (AU Validation Tool) Source - work-0.8.1 0d38241 https://gist.github.com/BeFiveINFO/128787fd83abf198c144

asb2m10 commented 9 years ago

Hmmm, can you test my build to see if you have the same errors?

http://le-son666.com/software/dexed/dexed-0.8.1-au_test.zip

BeFiveINFO commented 9 years ago

Thank you again!

It now works!

DEXED plays sound, the bug above fixed (combobox), the plugin appears in the Logic Pro UI under the Digital Suburban hierarchy.

There is no failed test during the au validation. There are just warnings.

https://gist.github.com/BeFiveINFO/38316e45b2c251249156

BeFiveINFO commented 9 years ago

Dear asb2m10,

As I have enjoyed the AU version of DEXED on logic pro X too much, I ended up with buying a real DX7 (mark I)... Now I find it quite useful to be able to work on both! Thank you!

asb2m10 commented 9 years ago

Have fun with the DX7 :D AU is now officially supported with Dexed 0.9.0.

BeFiveINFO commented 9 years ago

Thank you!!! :)