Torsion-Audio / Scyclone

Real-time Neural Timbre Transfer
Other
395 stars 12 forks source link

Syclone Validation Failed in Logic Pro (ARM64 m1) #5

Open Tr33Bug opened 1 year ago

Tr33Bug commented 1 year ago

Hey there,

The standalone version works fine. But sadly, the ".component" file gets a Failed Validation at the Logic Pro startup.

I'm on a m1 MacBook Pro (so arm64), Firmware Version: 13.3.1 (a) and Logic Pro version 10.7.8.

Any workaround here?

Tr33Bug commented 1 year ago

Hey there,

The standalone version works fine. But sadly, the ".component" file gets a Failed Validation at the Logic Pro startup.

I'm on a m1 MacBook Pro (so arm64), Firmware Version: 13.3.1 (a) and Logic Pro version 10.7.8.

Any workaround here?

For the Record: I tried the Scyclone-v.0.0.3-osx-arm64.dmg Release.

faressc commented 1 year ago

Hi,

thank you for reporting the error! I have just updated the Scyclone-v.0.0.3-osx-arm64.dmg and -x64.dmg release and hopefully the validation at Logic Pro startup works now. It would be great, if you report back whether the AU work now with Logic...

For now the plugin only runs in stereo. Mono compatibility should come with the next major update. So keep your Scyclone tracks stereo for now :)

Cheers

Tr33Bug commented 1 year ago

Thanks! I try and will report back to you:)

Tr33Bug commented 1 year ago

New version from 2 Hours ago. Still a failed Validation.

faressc commented 1 year ago

Ok, thanks for trying out. Could you run auval -v aufx SCYC TORA in the terminal and send me the output. This would help me to find the problem.

Tr33Bug commented 1 year ago

It says Validation succeeded. But opening Logic, the plugin-manager still is unable to use the Plugin and says Validation Failed.

Here is the Output from the auval:

➜  ~ auval -v aufx SCYC TORA

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

--------------------------------------------------
VALIDATING AUDIO UNIT: 'aufx' - 'SCYC' - 'TORA'
--------------------------------------------------
Manufacturer String: Torsion Audio
AudioUnit Name: Scyclone
Component Version: 0.0.3 (0x3)

* * PASS
--------------------------------------------------
TESTING OPEN TIMES:
COLD:
Time to open AudioUnit:         567.013 ms
WARM:
Time to open AudioUnit:         20.504  ms
This AudioUnit is a version 2 implementation.
FIRST TIME:
Time for initialization:        16.762 ms

* * PASS
--------------------------------------------------
VERIFYING DEFAULT SCOPE FORMATS:
Input Scope Bus Configuration:
 Default Bus Count:1
    Bus Name: Input
    Default Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, Float32, deinterleaved
    Has Channel Layouts: 0x650002 0x660002 0x670002 0x6A0002 
    Default Layout:
    Tag=0x650002, Num Chan Descs=0

Output Scope Bus Configuration:
 Default Bus Count:1
    Bus Name: Output
    Default Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, Float32, deinterleaved
    Has Channel Layouts: 0x650002 0x660002 0x670002 0x6A0002 
    Default Layout:
    Tag=0x650002, Num Chan Descs=0

* * PASS
--------------------------------------------------
VERIFYING REQUIRED PROPERTIES:

* * PASS
--------------------------------------------------
VERIFYING RECOMMENDED PROPERTIES:
  VERIFYING PROPERTY: Latency
    PASS
  VERIFYING PROPERTY: Tail Time
    PASS
  VERIFYING PROPERTY: Bypass Effect
    PASS

* * PASS
--------------------------------------------------
VERIFYING OPTIONAL PROPERTIES:

* * PASS
--------------------------------------------------
VERIFYING SPECIAL PROPERTIES:

VERIFYING CUSTOM UI
Cocoa Views Available: 1
  JUCE_AUCocoaViewClass_c3b446cd46a49788
    PASS

HAS FACTORY PRESETS
    ID:   0    Name: Untitled

VERIFYING CLASS INFO
    PASS

TESTING HOST CALLBACKS
    PASS

* * PASS
--------------------------------------------------
PUBLISHED PARAMETER INFO:

# # # 28 Global Scope Parameters:
Parameter ID:35450317
Name: Comp Ratio
Parameter Type: Generic
Values: Minimum = 1.0, Default = 4.0, Maximum = 10.0
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:176180678
Name: Input Gain
Parameter Type: Generic
Values: Minimum = - 12.0, Default =  0.0, Maximum = + 12.0
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:316763979
Name: Output Gain
Parameter Type: Generic
Values: Minimum = - 12.0, Default =  0.0, Maximum = + 12.0
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:336971933
Name: Grain Pitch Network 1
Parameter Type: Generic
Values: Minimum = -12.0, Default = 0.0, Maximum = 12.0
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:336971934
Name: Grain Pitch Network 2
Parameter Type: Generic
Values: Minimum = -12.0, Default = 0.0, Maximum = 12.0
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:371848121
Name: Grain Mix Network 1
Parameter Type: Generic
Values: Minimum = 0, Default = 25, Maximum = 100
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:371848122
Name: Grain Mix Network 2
Parameter Type: Generic
Values: Minimum = 0, Default = 25, Maximum = 100
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:452773614
Name: Fade
Parameter Type: Generic
Values: Minimum = 0 / 100, Default = 100 / 0, Maximum = 100 / 0
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:473991741
Name: Transient Shaper Network 1
Parameter Type: Generic
Values: Minimum = -1.000, Default = 0.300, Maximum = 1.000
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:473991742
Name: Transient Shaper Network 2
Parameter Type: Generic
Values: Minimum = -1.000, Default = 0.700, Maximum = 1.000
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:899170338
Name: Grain Interval Network 1
Parameter Type: Generic
Values: Minimum = 0.0 ms, Default = 0.5 ms, Maximum = 2.0 ms
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:899170339
Name: Grain Interval Network 2
Parameter Type: Generic
Values: Minimum = 0.0 ms, Default = 0.5 ms, Maximum = 2.0 ms
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:955542407
Name: Comp Makeup
Parameter Type: Generic
Values: Minimum = Auto, Default = Auto, Maximum = 12.0 dB
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:983683373
Name: Comp Threshold
Parameter Type: Generic
Values: Minimum = -60.0, Default = -20.0, Maximum = 0.0
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:1003864998
Name: Select Network 1
Parameter Type: Boolean
Values: Minimum = Off, Default = Off, Maximum = On
Flags: Values Have Strings, High Resolution, Readable, Writable 
  -parameter PASS

Parameter ID:1003864999
Name: Select Network 2
Parameter Type: Boolean
Values: Minimum = Off, Default = Off, Maximum = On
Flags: Values Have Strings, High Resolution, Readable, Writable 
  -parameter PASS

Parameter ID:1302741645
Name: Dynamic
Parameter Type: Generic
Values: Minimum = 0, Default = 100, Maximum = 100
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:1478966003
Name: On Off Network 1
Parameter Type: Boolean
Values: Minimum = Off, Default = On, Maximum = On
Flags: Values Have Strings, High Resolution, Readable, Writable 
  -parameter PASS

Parameter ID:1478966004
Name: On Off Network 2
Parameter Type: Boolean
Values: Minimum = Off, Default = Off, Maximum = On
Flags: Values Have Strings, High Resolution, Readable, Writable 
  -parameter PASS

Parameter ID:1741142186
Name: Filter Network 1
Parameter Type: Generic
Values: Minimum = -100, Default = 70, Maximum = 100
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:1741142187
Name: Filter Network 2
Parameter Type: Generic
Values: Minimum = -100, Default = 30, Maximum = 100
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:1933765620
Name: Transient Attack Time Network 1
Parameter Type: Generic
Values: Minimum = 50 ms, Default = 500 ms, Maximum = 2.0 sec
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:1933765621
Name: Transient Attack Time Network 2
Parameter Type: Generic
Values: Minimum = 50 ms, Default = 500 ms, Maximum = 2.0 sec
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:1954275242
Name: Global Mix
Parameter Type: Generic
Values: Minimum = 0, Default = 70, Maximum = 100
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:2068249391
Name: Grain On Off Network 1
Parameter Type: Boolean
Values: Minimum = Off, Default = Off, Maximum = On
Flags: Values Have Strings, High Resolution, Readable, Writable 
  -parameter PASS

Parameter ID:2068249392
Name: Grain On Off Network 2
Parameter Type: Boolean
Values: Minimum = Off, Default = Off, Maximum = On
Flags: Values Have Strings, High Resolution, Readable, Writable 
  -parameter PASS

Parameter ID:2118665054
Name: Grain Size Network 1
Parameter Type: Generic
Values: Minimum = 10.0 ms, Default = 60.0 ms, Maximum = 100 ms
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Parameter ID:2118665055
Name: Grain Size Network 2
Parameter Type: Generic
Values: Minimum = 10.0 ms, Default = 60.0 ms, Maximum = 100 ms
Flags: Values Have Strings, High Resolution, Can Ramp, Readable, Writable 
  -parameter PASS

Testing that parameters retain value across reset and initialization
  PASS

* * PASS
--------------------------------------------------
FORMAT TESTS:

Reported Channel Capabilities (explicit):
      [2, 2]  

Input/Output Channel Handling:
1-1   1-2   1-4   1-5   1-6   1-7   1-8   2-2   2-4   2-5   2-6   2-7   2-8   4-4   4-5   5-5   6-6   7-7   8-8
                                          X                                                                       

# # AudioChannelLayouts (4), Input Scope:
ChannelLayout is Writable: T
The Unit publishes the following Channel Layouts:
  0x650002, 0x660002, 0x670002, 0x6A0002, 

Is Audio Channel Layout Available:
Mono    Stereo  Binau.  AU_4    Ambi.   AU_5    AU_5_0  AU_6    AU_6_0  AU_7_0  AU_7_0F AU_8    AU_5_1  AU_6_1  AU_7_1  AU_7_1F 
        X       X                                                                                                               

Current Format:AudioStreamBasicDescription:  2 ch,  44100 Hz, Float32, deinterleaved
Current Format Tag = 0x650002, New Format Tag = 0x650002, Successsful

Current Format:AudioStreamBasicDescription:  2 ch,  44100 Hz, Float32, deinterleaved
Current Format Tag = 0x650002, New Format Tag = 0x6A0002, Successsful

# # AudioChannelLayouts (4), Output Scope:
ChannelLayout is Writable: T
The Unit publishes the following Channel Layouts:
  0x650002, 0x660002, 0x670002, 0x6A0002, 

Is Audio Channel Layout Available:
Mono    Stereo  Binau.  AU_4    Ambi.   AU_5    AU_5_0  AU_6    AU_6_0  AU_7_0  AU_7_0F AU_8    AU_5_1  AU_6_1  AU_7_1  AU_7_1F 
        X       X                                                                                                               

Current Format:AudioStreamBasicDescription:  2 ch,  44100 Hz, Float32, deinterleaved
Current Format Tag = 0x650002, New Format Tag = 0x650002, Successsful

Current Format:AudioStreamBasicDescription:  2 ch,  44100 Hz, Float32, deinterleaved
Current Format Tag = 0x650002, New Format Tag = 0x6A0002, Successsful

* * PASS
--------------------------------------------------
RENDER TESTS:

Input Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, Float32, deinterleaved
Output Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, Float32, 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

Checking connection semantics:
Connection format:
AudioStreamBasicDescription:  2 ch,  44100 Hz, Float32, deinterleaved
  PASS

Bad Max Frames - Render should fail
  PASS

Checking parameter setting
Using AudioUnitSetParameter
Using AudioUnitScheduleParameter
  PASS

Checking ramped parameter scheduling
  PASS

Test MIDI
  PASS

* * PASS
--------------------------------------------------
AU VALIDATION SUCCEEDED.
--------------------------------------------------
➜  ~ 
Tr33Bug commented 1 year ago

Also a reboot didn't help. Also strange, in Logic there is only the Mono variant of the au plugin. You said, that only stereo works, probably missing from the AU-Component?

grafik
faressc commented 1 year ago

Mmh... As you can also see from the auval log our plugin should only support stereo. This is what I have changed when uploading the new release. Since auval takes a look at the library folder, the new version seems to be in the right place. Maybe you need to clear the plugins cache in Logic, since Logic still seems to have the old version with mono compatibility in cache. Could you try this?

Tr33Bug commented 1 year ago

Done. I've deleted the '...audiounit.cache' file from ‘Library/Caches...‘.

I restarted Logic. No warnings from the start. Validation Success. The plugin is there. But only in Mono.

grafik

Try to use the Mono but as expected, the Plugin did not load.

grafik

(I re-downloaded the plugin to make shure, it is the newest version from Github.)

faressc commented 1 year ago

Looks like the track you placed the plug-in is a mono track. The track in Logic itself should be stereo so that you can put a stereo effect on it. If your track is mono, only mono plugins are supported. I believe you can change this be clicking on the circle so it becomes two circle like the second track in the last image you sent.

Tr33Bug commented 1 year ago

True, my bad. But sadly still not loading:

grafik

(Dual Mono, as expected, also not working.)

As a side note: The standalone app is working. So it has to be in the Packaging/Au-Format.

faressc commented 1 year ago

Ok. Thank you for your help so far! The AU has been tested in other DAWs and worked there. Also the new AU build worked on an Intel machine with Logic. I'll try to get hands on an M1 with Logic and I'll report back. Until then you could try to build the plug-in yourself. It would be great if you could then report back. Maybe even start the AU in debug mode with Logic...

faressc commented 1 year ago

Hey I have just tested the AU under M1 on Logic Pro. The plugin worked fine if you start Logic Pro normally. But if you start Logic in Rosetta mode they will not show up. Maybe you start Logic Pro in Rosetta mode and that's why the plugin does not work?

Tr33Bug commented 1 year ago

Unfortunately, that is not the Problem. I did not run Logic in Rosetta… And I deleted the cache one more time, redownloaded everything, and tried it again, and it did not start. Validation Successfully and I can load the Stereo mode on a Stereo Audio Bus, but the GUI and the Plugin simply won't load.

I have not yet found the time to build it myself. And when it works on your setup, it should work... I dont now what to do. 😢

faressc commented 1 year ago

Hi there,

any news here? I would advise, that you try out the x64 version once, just to make sure there is no strange Rosetta thing going on... Have a look at the last issue, this was a problem with an old(er) Ableton version. Or maybe you could update to the latest Logic version and this could solve the problem?

Cheers

Tr33Bug commented 1 year ago

I've retried installing both versions. The x64 and the arm64 versions. Before each installation, I deleted the cache files. The x64 version did not work, and I didn't find any way of using Rosetta for the AU. The arm64 version still works, still gets validated, and shows up in the Plugin Manager as working. But if I try to use it, the Plugin won't start up. Logic runs native, so no Rosetta in use there, and I am running Logic Version 10.07.08 (The most recent, to my knowledge…).

I am currently downloading Ableton Test Version to see if it works there. But to this day I am still not able to use the Plugin(AU). The Standalone Application works fine. But for better workflow, the plugin is urgently needed…

Any ideas left?

Cheers

Tr33Bug commented 1 year ago

So in Ableton the Plugin (Audiounit) works. So it has to do with Logic Pro. Any Ideas?

faressc commented 1 year ago

As far as I know the major difference on Logic Pro compared to other DAWs is the plugin validation. But we have checked this and the plugin got validated successfully.. You can open Logic in Rosetta mode by right clicking on the application symbol and then in get info use the open in rosetta option. You can only open Logic in Rosetta not the AU itself. But this way only x64 plugins will be accepted... Would be great if you could give it a try :)

vackva commented 1 year ago

@Tr33Bug can you give us feedback if you have tried it? Otherwise we will have to close this issue due to inactivity as the problem cannot be reproduced

Tr33Bug commented 1 year ago

I still have the problem that I cant use the Plugin in Logic Pro. I tried rosetta mode and stuff. But the Bug is still open.

Do you have any new ideas? It works in Ableton but not in Logic. Why?

kcoul commented 8 months ago

This could be the reason @vackva:

lipo -create onnxruntime-osx-arm64.a \
             onnxruntime-osx-x64.a \
     -output "onnxruntime.a"
fatal error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: onnxruntime-osx-arm64.a and onnxruntime-osx-x64.a have the same architectures (x86_64) and can't be in the same fat output file

Under the hood it appears the -osx-arm64.a version of onnx is really an x86_64 elf format and so Logic Pro is unwilling to deal with it using Rosetta, and it fails. I will try to fix this and submit a PR if I can get it working.

It looks like this problem also exists elsewhere, when using fresh libs from https://github.com/csukuangfj/onnxruntime-libs/releases I get similar warnings in another context.

faressc commented 8 months ago

Hi there, We really appreciate your effort @kcoul. This is pretty strange with the x86_64 libs, because I am quite sure that I have build the lib on a native arm64 system... I will have a check soon.

faressc commented 7 months ago

Sorry for the delay. I looked at both libs (arm64 and x86_64) and they seem to be universal libs already. lipo -archs onnxruntime-osx-x64.a and lipo -archs onnxruntime-osx-arm64.a both return x86_64 arm64. This makes sense since I used the ort builder repo to build the static libs and the build-mac.sh script builds for both architectures and then combine them:

build_arch "$ONNX_CONFIG" x86_64
build_arch "$ONNX_CONFIG" arm64

mkdir -p libs/macos-arm64_x86_64
lipo -create onnxruntime-macos_x86_64-static-combined.a \
             onnxruntime-macos_arm64-static-combined.a \
     -output "libs/macos-arm64_x86_64/libonnxruntime.a"
rm onnxruntime-macos_x86_64-static-combined.a
rm onnxruntime-macos_arm64-static-combined.a

So in fact in the Scyclone repo onnxruntime-osx-x64.a and onnxruntime-osx-arm64.a are both the same library...

So I think the problem should be something else... @kcoul Have you had the same issues with Logic Pro as @Tr33Bug?

kcoul commented 7 months ago

@faressc I just checked again and I can't repro, the plugin successfully validates and opens for me. The only thing I noticed on this test is that the GUI will display on a Stereo track, but for a Mono track there is no GUI. But I think this is expected behaviour.

I can also see now why I couldn't use lipo to combine architectures, if both static libs were already FAT binaries.