Cabbage Logo
Back to Cabbage Site

Cabbage3 alpha release

looks like that :wink:

Another new version there now, while I have you on the line :slight_smile:

You don’t seem to be seeing any debug messages showing JSON content when you try to compile? These message should appear in the vscabbage output window. But I don’t think you’re seeing any. Wait a second, you don’t have any non-ascii chars in your path?

[update] I see now, those messages are returning a null, that’s not right, but gives me somewhere to look for the solution.

Ok. Here are outputs from version 1.0.17.

This errors came directly on staring up:

Following logs are after compiling the instrument:

In text:

console.ts:137 [Extension Host] Cabbage: Cabbage: Creating new webview panel
EYi @ console.ts:137
$logExtensionHostMessage @ mainThreadConsole.ts:39
S @ rpcProtocol.ts:458
Q @ rpcProtocol.ts:443
M @ rpcProtocol.ts:373
L @ rpcProtocol.ts:299
(anonymous) @ rpcProtocol.ts:161
B @ event.ts:1243
fire @ event.ts:1274
fire @ ipc.net.ts:652
l.onmessage @ localProcessExtensionHost.ts:378
console.ts:137 [Extension Host] Cabbage: Setting vscode instance
EYi @ console.ts:137
$logExtensionHostMessage @ mainThreadConsole.ts:39
S @ rpcProtocol.ts:458
Q @ rpcProtocol.ts:443
M @ rpcProtocol.ts:373
L @ rpcProtocol.ts:299
(anonymous) @ rpcProtocol.ts:161
B @ event.ts:1243
fire @ event.ts:1274
fire @ ipc.net.ts:652
l.onmessage @ localProcessExtensionHost.ts:378
console.ts:137 [Extension Host] Cabbage: Local resource roots: {$mid: 1, path: '/c:/Users/lovre/.vscode/extensions/cabbageaudio.vscabbage-1.0.17-alpha/media', scheme: 'https', authority: 'file+.vscode-resource.vscode-cdn.net'}$mid: 1authority: "file+.vscode-resource.vscode-cdn.net"path: "/c:/Users/lovre/.vscode/extensions/cabbageaudio.vscabbage-1.0.17-alpha/media"scheme: "https"[[Prototype]]: Object
EYi @ console.ts:137
$logExtensionHostMessage @ mainThreadConsole.ts:39
S @ rpcProtocol.ts:458
Q @ rpcProtocol.ts:443
M @ rpcProtocol.ts:373
L @ rpcProtocol.ts:299
(anonymous) @ rpcProtocol.ts:161
B @ event.ts:1243
fire @ event.ts:1274
fire @ ipc.net.ts:652
l.onmessage @ localProcessExtensionHost.ts:378
console.ts:137 [Extension Host] Cabbage: Local resource roots: {$mid: 1, path: '/c:/Users/lovre/.vscode/extensions/cabbageaudio.vscabbage-1.0.17-alpha/src', scheme: 'https', authority: 'file+.vscode-resource.vscode-cdn.net'}$mid: 1authority: "file+.vscode-resource.vscode-cdn.net"path: "/c:/Users/lovre/.vscode/extensions/cabbageaudio.vscabbage-1.0.17-alpha/src"scheme: "https"[[Prototype]]: Object
EYi @ console.ts:137
$logExtensionHostMessage @ mainThreadConsole.ts:39
S @ rpcProtocol.ts:458
Q @ rpcProtocol.ts:443
M @ rpcProtocol.ts:373
L @ rpcProtocol.ts:299
(anonymous) @ rpcProtocol.ts:161
B @ event.ts:1243
fire @ event.ts:1274
fire @ ipc.net.ts:652
l.onmessage @ localProcessExtensionHost.ts:378
console.ts:137 [Extension Host] Cabbage: Found a find free port: 9991
console.ts:137 [Extension Host] Cabbage: onDidSave c:\Projects\csound_stuff\cabbage3\simple_tests\button_example.csd
console.ts:137 [Extension Host] Cabbage: WebSocket server successfully started on port 9991
cabbage.js:5 Cabbage: loading cabbage.js
widgetTypes.js:5 Cabbage: loading widgetTypes.js...
eventHandlers.js:6 Cabbage: loading eventHandlers.js
eventHandlers.js:49 Cabbage: vscode is null, not loading PropertyPanel
widgetManager.js:5 Cabbage: Loading widgetManager.js...
sharedState.js:13 Cabbage: Setting vscode instance
setVSCode @ sharedState.js:13
(anonymous) @ main.js:34
main.js:55 Cabbage: Loading modules in main.js
main.js:62 Cabbage: Modules loaded in main.js: {propertyPanelModule: Module, widgetWrapperModule: Module}
widgetWrapper.js:13 Cabbage: Initializing interact https://file%2B.vscode-resource.vscode-cdn.net/c%3A/Users/lovre/.vscode/extensions/cabbageaudio.vscabbage-1.0.17-alpha/src/interact.min.js
cabbage.js:30 Cabbage: sending custom command from UI {command: 'cabbageIsReadyToLoad', text: '{}'}
console.ts:137 [Extension Host] Cabbage: Client connected
EYi @ console.ts:137
$logExtensionHostMessage @ mainThreadConsole.ts:39
S @ rpcProtocol.ts:458
Q @ rpcProtocol.ts:443
M @ rpcProtocol.ts:373
L @ rpcProtocol.ts:299
(anonymous) @ rpcProtocol.ts:161
B @ event.ts:1243
fire @ event.ts:1274
fire @ ipc.net.ts:652
l.onmessage @ localProcessExtensionHost.ts:378
console.ts:137 [Extension Host] Cabbage: WebSocket server started on port 9991

Console output:

Cabbage DEBUG: null
D:\a\vscabbage\vscabbage\cabbage3\src\CabbageParser.cpp (100) cabbage::Parser::parseContent:  [Thread ID: 26548]

Cabbage DEBUG: null
D:\a\vscabbage\vscabbage\cabbage3\src\CabbageParser.cpp (100) cabbage::Parser::parseContent:  [Thread ID: 26548]

Cabbage DEBUG: null
D:\a\vscabbage\vscabbage\cabbage3\src\CabbageParser.cpp (100) cabbage::Parser::parseContent:  [Thread ID: 26548]

Cabbage DEBUG: null
D:\a\vscabbage\vscabbage\cabbage3\src\CabbageParser.cpp (100) cabbage::Parser::parseContent:  [Thread ID: 26548]

2
2
Cabbage DEBUG: Resetting csound ...
csound = 0x0000024063464830
D:\a\vscabbage\vscabbage\cabbage3\src\Cabbage.cpp (107) cabbage::Engine::setupCsound:  [Thread ID: 26548]

Cabbage DEBUG: null
D:\a\vscabbage\vscabbage\cabbage3\src\CabbageParser.cpp (100) cabbage::Parser::parseContent:  [Thread ID: 26548]

Cabbage DEBUG: null
D:\a\vscabbage\vscabbage\cabbage3\src\CabbageParser.cpp (100) cabbage::Parser::parseContent:  [Thread ID: 26548]

Cabbage DEBUG: null
D:\a\vscabbage\vscabbage\cabbage3\src\CabbageParser.cpp (100) cabbage::Parser::parseContent:  [Thread ID: 26548]

Cabbage DEBUG: null
D:\a\vscabbage\vscabbage\cabbage3\src\CabbageParser.cpp (100) cabbage::Parser::parseContent:  [Thread ID: 26548]

Cabbage DEBUG: IPlugAPPHost::IPlugAPPHost
D:\a\vscabbage\vscabbage\cabbage3\src\app\CabbageAPP_host.cpp (42) iplug::IPlugAPPHost::IPlugAPPHost:  [Thread ID: 26548]

Cabbage DEBUG: 
RtAudio Version 6.0.1
D:\a\vscabbage\vscabbage\cabbage3\src\app\CabbageAPP_host.cpp (659) iplug::IPlugAPPHost::ProbeAudioIO:  [Thread ID: 26548]

Cabbage DEBUG: Assigning called host callback function.
D:\a\vscabbage\vscabbage\cabbage3\src\app\CabbageAPP_host.cpp (136) iplug::IPlugAPPHost::InitProcessor:  [Thread ID: 26548]

Cabbage DEBUG: Connection established
D:\a\vscabbage\vscabbage\cabbage3\src\app\CabbageAPP_host.cpp (302) iplug::IPlugAPPHost::InitWebSocket::<lambda_a340d025fdb4d03c07480b576bb87f67>::operator ():  [Thread ID: 24692]

Cabbage DEBUG: Interface has loaded.
D:\a\vscabbage\vscabbage\cabbage3\src\CabbageProcessor.cpp (156) CabbageProcessor::interfaceHasLoaded:  [Thread ID: 24692]

Cabbage DEBUG: couldn't find previous audio device, reseting to default

D:\a\vscabbage\vscabbage\cabbage3\src\app\CabbageAPP_host.cpp (841) iplug::IPlugAPPHost::TryToChangeAudio:  [Thread ID: 26548]

Cabbage DEBUG: Attempting to start audio with the following settings:
SR: 44100
Buffer Size: 512
Input device: Primary Sound Capture Driver
Number of channels: 2
Output device: Primary Sound Driver
Number of channels: 2
D:\a\vscabbage\vscabbage\cabbage3\src\app\CabbageAPP_host.cpp (1005) iplug::IPlugAPPHost::InitAudio:  [Thread ID: 26548]

WARNING: 
could not open library 'C:\Program Files\Csound7\plugins64\\osc.dll' (-1)

UnifiedCSD:  c:\Projects\csound_stuff\cabbage3\simple_tests\button_example.csd
rtaudio: PortAudio module enabled ...
using callback interface
--Csound version 7.0 (double samples) Jan  8 2025[commit: 054f3b50878e6456165a3f338761dfe4a9aae6d1]
libsndfile-1.2.2
sr = 48000.0,
 kr = 1500.000,
 ksmps = 32
0dBFS level = 1.0,
 A4 tuning = 440.0
audio buffered in 4096 sample-frame blocks
SECTION 1:

No need to worry about them, they are vscode things and have no effect on Cabbage. It’s failing because it’s not able to verify the widget types, which would seem to indicate that Cabbage can’t find the widget descriptors inside the vscode extension. So you don’t have any non-ascii chars in the path to the vscode extension dir? The .vscode folder is usually stored in C:/Users/UserName/.vscode/extensions

In the meantime there is another another build underway with yet more debug logging. I’m focusing for now on the Cabbage output console, I think the JS stuff is Ok.

I just did some tests here and I can cause a fail too if I try using paths that contain non ascii chars. Whether this is the problem or not on your end, it’s an issue I need to sort out regardless. :+1:

Been gone a couple days, but I tested the newest version now, and the export (both synth and effect) ran successfully for me. When compiling the instrument, I get this error in the Cabbage output. Still the white screen with the Cabbage logo :thinking:

Cabbage DEBUG: Couldn't find type for:[

    {"type":"form","caption":"Button Example","size":{"width":380,"height":300},"pluginId":"def1"},

    {"type":"button","bounds":{"left":16,"top":12,"width":117,"height":30},"channel":"trigger","text":{"off":"Start Synth","on":"Stop Synth"},"corners":2},

    {"type":"button","bounds":{"left":146,"top":12,"width":80,"height":30},"channel":"mute","text":{"off":"Unmute","on":"Mute"},"corners":2},

    {"type":"button","channel":"toggleFreq","bounds":{"left":240,"top":12,"width":121,"height":30},"text":{"off":"Toggle Freq","on":"Toggle Freq"},"colour":{"off":{"fill":"#ff0000","stroke":"#000000"},"on":{"fill":"#0295cf","stroke":"#000000"}}}

]

D:\a\vscabbage\vscabbage\cabbage3\src\CabbageParser.cpp (105) cabbage::Parser::parseContent:  [Thread ID: 9204]

Cabbage DEBUG: Couldn't find type for:[

    {"type":"form","caption":"Button Example","size":{"width":380,"height":300},"pluginId":"def1"},

    {"type":"button","bounds":{"left":16,"top":12,"width":117,"height":30},"channel":"trigger","text":{"off":"Start Synth","on":"Stop Synth"},"corners":2},

    {"type":"button","bounds":{"left":146,"top":12,"width":80,"height":30},"channel":"mute","text":{"off":"Unmute","on":"Mute"},"corners":2},

    {"type":"button","channel":"toggleFreq","bounds":{"left":240,"top":12,"width":121,"height":30},"text":{"off":"Toggle Freq","on":"Toggle Freq"},"colour":{"off":{"fill":"#ff0000","stroke":"#000000"},"on":{"fill":"#0295cf","stroke":"#000000"}}}

]

D:\a\vscabbage\vscabbage\cabbage3\src\CabbageParser.cpp (105) cabbage::Parser::parseContent:  [Thread ID: 9204]

Cabbage DEBUG: Couldn't find type for:[

    {"type":"form","caption":"Button Example","size":{"width":380,"height":300},"pluginId":"def1"},

    {"type":"button","bounds":{"left":16,"top":12,"width":117,"height":30},"channel":"trigger","text":{"off":"Start Synth","on":"Stop Synth"},"corners":2},

    {"type":"button","bounds":{"left":146,"top":12,"width":80,"height":30},"channel":"mute","text":{"off":"Unmute","on":"Mute"},"corners":2},

    {"type":"button","channel":"toggleFreq","bounds":{"left":240,"top":12,"width":121,"height":30},"text":{"off":"Toggle Freq","on":"Toggle Freq"},"colour":{"off":{"fill":"#ff0000","stroke":"#000000"},"on":{"fill":"#0295cf","stroke":"#000000"}}}

]

D:\a\vscabbage\vscabbage\cabbage3\src\CabbageParser.cpp (105) cabbage::Parser::parseContent:  [Thread ID: 9204]

Cabbage DEBUG: Couldn't find type for:[

    {"type":"form","caption":"Button Example","size":{"width":380,"height":300},"pluginId":"def1"},

    {"type":"button","bounds":{"left":16,"top":12,"width":117,"height":30},"channel":"trigger","text":{"off":"Start Synth","on":"Stop Synth"},"corners":2},

    {"type":"button","bounds":{"left":146,"top":12,"width":80,"height":30},"channel":"mute","text":{"off":"Unmute","on":"Mute"},"corners":2},

    {"type":"button","channel":"toggleFreq","bounds":{"left":240,"top":12,"width":121,"height":30},"text":{"off":"Toggle Freq","on":"Toggle Freq"},"colour":{"off":{"fill":"#ff0000","stroke":"#000000"},"on":{"fill":"#0295cf","stroke":"#000000"}}}

]

D:\a\vscabbage\vscabbage\cabbage3\src\CabbageParser.cpp (105) cabbage::Parser::parseContent:  [Thread ID: 9204]

2

2

Cabbage DEBUG: Resetting csound ...

csound = 0x000001F9E3F717C0

D:\a\vscabbage\vscabbage\cabbage3\src\Cabbage.cpp (107) cabbage::Engine::setupCsound:  [Thread ID: 9204]

Cabbage DEBUG: Couldn't find type for:[

    {"type":"form","caption":"Button Example","size":{"width":380,"height":300},"pluginId":"def1"},

    {"type":"button","bounds":{"left":16,"top":12,"width":117,"height":30},"channel":"trigger","text":{"off":"Start Synth","on":"Stop Synth"},"corners":2},

    {"type":"button","bounds":{"left":146,"top":12,"width":80,"height":30},"channel":"mute","text":{"off":"Unmute","on":"Mute"},"corners":2},

    {"type":"button","channel":"toggleFreq","bounds":{"left":240,"top":12,"width":121,"height":30},"text":{"off":"Toggle Freq","on":"Toggle Freq"},"colour":{"off":{"fill":"#ff0000","stroke":"#000000"},"on":{"fill":"#0295cf","stroke":"#000000"}}}

]

D:\a\vscabbage\vscabbage\cabbage3\src\CabbageParser.cpp (105) cabbage::Parser::parseContent:  [Thread ID: 9204]

Cabbage DEBUG: Couldn't find type for:[

    {"type":"form","caption":"Button Example","size":{"width":380,"height":300},"pluginId":"def1"},

    {"type":"button","bounds":{"left":16,"top":12,"width":117,"height":30},"channel":"trigger","text":{"off":"Start Synth","on":"Stop Synth"},"corners":2},

    {"type":"button","bounds":{"left":146,"top":12,"width":80,"height":30},"channel":"mute","text":{"off":"Unmute","on":"Mute"},"corners":2},

    {"type":"button","channel":"toggleFreq","bounds":{"left":240,"top":12,"width":121,"height":30},"text":{"off":"Toggle Freq","on":"Toggle Freq"},"colour":{"off":{"fill":"#ff0000","stroke":"#000000"},"on":{"fill":"#0295cf","stroke":"#000000"}}}

]

D:\a\vscabbage\vscabbage\cabbage3\src\CabbageParser.cpp (105) cabbage::Parser::parseContent:  [Thread ID: 9204]

Cabbage DEBUG: Couldn't find type for:[

    {"type":"form","caption":"Button Example","size":{"width":380,"height":300},"pluginId":"def1"},

    {"type":"button","bounds":{"left":16,"top":12,"width":117,"height":30},"channel":"trigger","text":{"off":"Start Synth","on":"Stop Synth"},"corners":2},

    {"type":"button","bounds":{"left":146,"top":12,"width":80,"height":30},"channel":"mute","text":{"off":"Unmute","on":"Mute"},"corners":2},

    {"type":"button","channel":"toggleFreq","bounds":{"left":240,"top":12,"width":121,"height":30},"text":{"off":"Toggle Freq","on":"Toggle Freq"},"colour":{"off":{"fill":"#ff0000","stroke":"#000000"},"on":{"fill":"#0295cf","stroke":"#000000"}}}

]

D:\a\vscabbage\vscabbage\cabbage3\src\CabbageParser.cpp (105) cabbage::Parser::parseContent:  [Thread ID: 9204]

Cabbage DEBUG: Couldn't find type for:[

    {"type":"form","caption":"Button Example","size":{"width":380,"height":300},"pluginId":"def1"},

    {"type":"button","bounds":{"left":16,"top":12,"width":117,"height":30},"channel":"trigger","text":{"off":"Start Synth","on":"Stop Synth"},"corners":2},

    {"type":"button","bounds":{"left":146,"top":12,"width":80,"height":30},"channel":"mute","text":{"off":"Unmute","on":"Mute"},"corners":2},

    {"type":"button","channel":"toggleFreq","bounds":{"left":240,"top":12,"width":121,"height":30},"text":{"off":"Toggle Freq","on":"Toggle Freq"},"colour":{"off":{"fill":"#ff0000","stroke":"#000000"},"on":{"fill":"#0295cf","stroke":"#000000"}}}

]

D:\a\vscabbage\vscabbage\cabbage3\src\CabbageParser.cpp (105) cabbage::Parser::parseContent:  [Thread ID: 9204]

Cabbage DEBUG: IPlugAPPHost::IPlugAPPHost

D:\a\vscabbage\vscabbage\cabbage3\src\app\CabbageAPP_host.cpp (42) iplug::IPlugAPPHost::IPlugAPPHost:  [Thread ID: 9204]

Cabbage DEBUG:

RtAudio Version 6.0.1

D:\a\vscabbage\vscabbage\cabbage3\src\app\CabbageAPP_host.cpp (659) iplug::IPlugAPPHost::ProbeAudioIO:  [Thread ID: 9204]

Cabbage DEBUG: Assigning called host callback function.

D:\a\vscabbage\vscabbage\cabbage3\src\app\CabbageAPP_host.cpp (136) iplug::IPlugAPPHost::InitProcessor:  [Thread ID: 9204]

Cabbage DEBUG: Connection established

D:\a\vscabbage\vscabbage\cabbage3\src\app\CabbageAPP_host.cpp (302) iplug::IPlugAPPHost::InitWebSocket::<lambda_a340d025fdb4d03c07480b576bb87f67>::operator ():  [Thread ID: 14048]

Cabbage DEBUG: Interface has loaded.

D:\a\vscabbage\vscabbage\cabbage3\src\CabbageProcessor.cpp (156) CabbageProcessor::interfaceHasLoaded:  [Thread ID: 14048]

Cabbage DEBUG: couldn't find previous audio device, reseting to default

D:\a\vscabbage\vscabbage\cabbage3\src\app\CabbageAPP_host.cpp (841) iplug::IPlugAPPHost::TryToChangeAudio:  [Thread ID: 9204]

Cabbage DEBUG: Attempting to start audio with the following settings:

SR: 44100

Buffer Size: 512

Input device: Primary Sound Capture Driver

Number of channels: 2

Output device: Primary Sound Driver

Number of channels: 2

D:\a\vscabbage\vscabbage\cabbage3\src\app\CabbageAPP_host.cpp (1005) iplug::IPlugAPPHost::InitAudio:  [Thread ID: 9204]

WARNING:

could not open library 'C:\Program Files\Csound7\plugins64\\osc.dll' (-1)

UnifiedCSD:  c:\Users\Dale\Documents\Work\Cabbage 3\button.csd

rtaudio: PortAudio module enabled ...

using callback interface

--Csound version 7.0 (double samples) Jan  8 2025[commit: 054f3b50878e6456165a3f338761dfe4a9aae6d1]

libsndfile-1.2.2

sr = 48000.0,

 kr = 1500.000,

 ksmps = 32

0dBFS level = 1.0,

 A4 tuning = 440.0

audio buffered in 4096 sample-frame blocks

SECTION 1:

What’s happening is the Cabbage service app can’t find the widget source files. Can you open:
C:\Users\<USER_NAME>\AppData\Local\Cabbage\settings.json
and take a look at the jsSourceDir property? If I set a path that has non ascii chars, Cabbage doesn’t read it correctly, and if Cabbage can’t find the widget files it can’t verify the widget types, hence the
Cabbage DEBUG: Couldn't find type for: messages. So either there are non-ascii chars, or the path is simply empty. If the path is empty, you can use the command palette in vscode to browse for the source path. Select the ‘src’ path within the Cabbage vscode extension folder. Then try again. If the path is not empty we need to figure out why it’s not reading it.

[edit] When I set my jsSourceDir to a path with the following string in it Münsterländer Cabbage reads it as Münsterländer. There’s clearly an encoding issue. I just want to confirm this is also the problem you guys might be having.

I triggered a new build just now that will print the value of the jsDirSource property in the Cabbage output console if the path can’t be read. If my suspicions are correct, you should see it print a path that is not valid.

Here’s the settings.json file.

{
    "currentConfig": {
        "audio": {
            "buffer": 512,
            "driver": 0,
            "in1": 1,
            "in2": 2,
            "inputDevice": "Default Device",
            "out1": 1,
            "out2": 2,
            "outputDevice": "Default Device",
            "sr": 44100
        },
        "jsSourceDir": "",
        "midi": {
            "inChan": 0,
            "inputDevice": "off",
            "outChan": 0,
            "outputDevice": "off"
        }
    },
    "systemAudioMidiIOListing": {
        "audioDrivers": [
            "DirectSound",
            "ASIO"
        ],
        "audioInputDevices": {
            "Microphone Array (Realtek(R) Audio)": {
                "deviceId": 132,
                "numChannels": 2
            },
            "Primary Sound Capture Driver": {
                "deviceId": 131,
                "numChannels": 2
            }
        },
        "audioOutputDevices": {
            "Default Device": {
                "numChannels": 2,
                "sampleRates": [
                    4000,
                    5512,
                    8000,
                    9600,
                    11025,
                    16000,
                    22050,
                    32000,
                    44100,
                    48000,
                    88200,
                    96000,
                    176400,
                    192000
                ]
            },
            "Primary Sound Driver": {
                "deviceId": 129,
                "numChannels": 2,
                "sampleRates": [
                    4000,
                    5512,
                    8000,
                    9600,
                    11025,
                    16000,
                    22050,
                    32000,
                    44100,
                    48000,
                    88200,
                    96000,
                    176400,
                    192000
                ]
            },
            "Speaker (Realtek(R) Audio)": {
                "deviceId": 130,
                "numChannels": 2,
                "sampleRates": [
                    4000,
                    5512,
                    8000,
                    9600,
                    11025,
                    16000,
                    22050,
                    32000,
                    44100,
                    48000,
                    88200,
                    96000,
                    176400,
                    192000
                ]
            }
        },
        "midiOutputDevices": {
            "Microsoft GS Wavetable Synth 0": {
                "deviceId": 0
            }
        }
    }
}

Ok. Did you try setting the jsSourceDir using the command palette? That should update the jsSourceDir property. @Lovre, is this the same for you?

I managed just to briefly look my settings.json file and similar to @hdale94 my

"jsSourceDir": ""

I will try this evening to sit on my pc and try setting the jsSourceDir using the command palette and then I will let you know

That did it!!! I needed to manually set jsSourceDir; command palette didn’t work (maybe I did something wrong there) but when I manually modified settings.json file "jsSourceDir": "C:/Users/lovre/.vscode/extensions/cabbageaudio.vscabbage-1.0.17-alpha/src" that did the trick. I needed to restart VScode

:beers: :partying_face: :beers:

Great to hear that. Now I have to figure out why it doesn’t work. :grimacing: vscode should be able to find the path of any extensin it’s running. Not sure why it can’t hear. But I will find out :+1:

Whohoo! Congrats!

Congrats!! I really look forward to using Cabbage3 and its webui features!

I installed Csound7 and tried to run an example, do you know where the UI/compiled instrument is supposed so show up? I don’t know if there is a bug or if I’m doing something wrong.

I’m on MacOS Sonoma, on a MBP M3.

2
2
File is empty, using default settings.
UnifiedCSD:  /Users/julienbeisel/Desktop/GitRepos/Cabbage3Projects/test.csd
--Csound version 7.0 (double samples) Jan  7 2025[commit: 6f7dfd8d3434c9c6f8be3d02110be2fcc5613cfb]
libsndfile-1.2.2
sr = 48000.0,
 kr = 1500.000,
 ksmps = 32
0dBFS level = 1.0,
 A4 tuning = 440.0
audio buffered in 1024 sample-frame blocks
SECTION 1:
backtrace() returned 25 addresses
0   CsoundLib64                         0x000000010346bfe4 signal_handler + 52
1   libsystem_pthread.dylib             0x000000018853ac20 pthread_kill + 288
2   libsystem_c.dylib                   0x0000000188447a20 abort + 180
3   libc++abi.dylib                     0x00000001884f1d30 _ZN10__cxxabiv130__aligned_malloc_with_fallbackEm + 0
4   libc++abi.dylib                     0x00000001884e1fcc _ZL28demangling_terminate_handlerv + 320
5   libobjc.A.dylib                     0x00000001881801e0 _ZL15_objc_terminatev + 160
6   libc++abi.dylib                     0x00000001884f10f4 _ZSt11__terminatePFvvE + 16
7   libc++abi.dylib                     0x00000001884f4348 __cxa_get_exception_ptr + 0
8   libc++abi.dylib                     0x00000001884f428c _ZN10__cxxabiv1L22exception_cleanup_funcE19_Unwind_Reason_CodeP17_Unwind_Exception + 0
9   CabbageApp                          0x00000001025e6370 _ZN8nlohmann16json_abi_v3_11_26detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEbxydSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEEEE12dump_escapedERKSC_b + 1032
10  CabbageApp                          0x00000001025e4f5c _ZN8nlohmann16json_abi_v3_11_26detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEbxydSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEEEE4dumpERKSG_bbjj + 256
11  CabbageApp                          0x00000001025e57f0 _ZN8nlohmann16json_abi_v3_11_26detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEbxydSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEEEE4dumpERKSG_bbjj + 2452
12  CabbageApp                          0x00000001025e4f94 _ZN8nlohmann16json_abi_v3_11_26detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEbxydSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEEEE4dumpERKSG_bbjj + 312
13  CabbageApp                          0x00000001025df8f8 _ZNK8nlohmann16json_abi_v3_11_210basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEbxydS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEE4dumpEicbNS0_6detail15error_handler_tE + 504
14  CabbageApp                          0x000000010266e2c0 _ZN5iplug12IPlugAPPHost14UpdateSettingsEv + 3200
15  CabbageApp                          0x000000010266b870 _ZN5iplug12IPlugAPPHost4InitEv + 204
16  CabbageApp                          0x000000010268829c SWELLAppMain + 1176
17  CoreFoundation                      0x000000018860dfe8 -[NSSet makeObjectsPerformSelector:] + 176
18  AppKit                              0x000000018be52bf0 -[NSIBObjectData nibInstantiateWithOwner:options:topLevelObjects:] + 824
19  AppKit                              0x000000018be48594 loadNib + 340
20  AppKit                              0x000000018be47bc4 +[NSBundle(NSNibLoading) _loadNibFile:nameTable:options:withZone:ownerBundle:] + 560
21  AppKit                              0x000000018be478c8 -[NSBundle(NSNibLoading) loadNibNamed:owner:topLevelObjects:] + 180
22  AppKit                              0x000000018be476ec +[NSBundle(NSNibLoading) loadNibNamed:owner:] + 300
23  AppKit                              0x000000018be3adcc NSApplicationMain + 488
24  dyld                                0x00000001881b20e0 start + 2360

Ah, a Mac user at last :rofl: I think ( I hope ) you missed most of the fun regarding teh UI not showing in the previous 60+ messages! Can you open your Cabbage settings file, it’s located at ~/Library/Application Support/Cabbage/settings.json and check that the jsSourceDir property isn’t empty? If it is, go back to vscode and from the command palette select Cabbage: Select path to Cabbage source. Then browse to the extension directory (~/.vscode/extensions…) and select the ‘src’ folder. It should hopefully load then the next time you try to compile. I’m looking into a fix.

Thanks! Actually the settings.json file was empty, so I took the one from a post above, set manually jsSourceDir and it looks like it’s now working.

I’ll continue my tests!

@Lovre / @nymano / @hdale94 would one of you mind checking something for me. Can you close vscode, then rename the settings.json file to something else before you reopening. Then have a look at the Cabbage output. A message should appear saying either

Cabbage: extension path: ...

or

Cabbage: Extension not found

This message only appears if vscode can’t find settings.json, at which point it should create the file. I’m curious what it says in your case. It should show the path to the vscode extension directory.

I renamed settings.json -> settings_.json, reopened vscode, and “Cabbage extension is now active!” was printed in the console.

A new settings.json was automatically created and contains this information:

{
    "currentConfig": {
        "audio": {},
        "jsSourceDir": "/Users/julienbeisel/.vscode/extensions/cabbageaudio.vscabbage-1.0.19-alpha/src",
        "midi": {}
    },
    "systemAudioMidiIOListing": {
        "audioDrivers": "",
        "audioInputDevices": {},
        "audioOutputDevices": {},
        "midiInputDevices": {},
        "midiOutputDevices": {}
    }
}

That’s interesting. I’m not sure why it fails to find it first time around. But once the file is there you’re good to go. Updating the extension does not overwrite it. All the same, I’ve now added a ‘Reset Cabbage settings…’ command for users facing the same problem. Executing this command will nuke the settings file, so that the extension can create a new one. A bit clunky, but better than having to do it manually.

@Oeyvind I can’t wait for up to update this with native web rendering :slight_smile: It was a bit of a CPU hog, but looks amazing. I’m sure it will hardly register with the new web UI.