Cabbage Logo
Back to Cabbage Site

Slugs on Ver. 2.0.27a on OSX [resolved]

A few things I have spotted in the latest OSX beta.

  1. checkbox bounds( 10, 0, 60, 20), channel(“but1”), colour(250,250,105), value(0)
    checkbox bounds( 70, 0, 60, 20), channel(“but2”), colour(250,250,105), value(0), text("")

A checkbox without a text() identifier (first line) will be drawn as a square (regardless of given dimensions) with a label “Check”. The workaround is to provide the identifier with an empty string (second line), but this wasn’t necessary before.

Cabbage2 seems not to respond to the guirefresh() setting.

Have a look at the following two definitions for xypads - the only difference is that the first one has an initial value specified for for the y-channel. Moving the ball around - either normal dragging or throwing it - causes flickering and jumping of its position. It seems that it is repeatedly jumping back to its initial position.

xypad bounds(5, 0, 250, 210), channel("1", "2"), rangex(0, 1.00), rangey(5, 11, 8)
xypad bounds(250, 0, 250, 210), channel("3", "4"), rangex(0, 1.00), rangey(5, 11)

Cabbage2 seems to be printing a load of stuff to the terminal in Windmills:
e.g.

 i   1 time     0.00073:     0.00000
 i   1 time     0.00073:     0.00000
 i   1 time     0.00073:     0.00000
 i   1 time     0.00073:     0.00000
 i   1 time     0.50068:     0.27231
 i   1 time     0.50068:     0.27231
 i   1 time     0.50068:     0.27231
 i   1 time     0.50068:     0.27231
 i   1 time     1.00063:     0.32012

Not sure what this is related to. Can’t find any print statements that might be responsible.

Resaving something with a combobox the second time causes an immediate crash. Same thing when you try to close the GUI window when it’s running.

Pop-ups seem to be broken. They are ‘popped-up’ when a csd that uses them is first opened, but if the pop-up window is closed, it can’t be opened again from its button on the main GUI panel.

The display of GEN02 tables as a row of checkbox-like buttons using gentable is not what it used to be. Compare instruments/miscellaneous/CellularAutomata.csd in Cabbage 1 and 2.

That’s all for now!

Thanks Iain. I’ll take a look at these. I’m pretty sure those print messages are from Csound though? There must be a rogue print statement somewhere?

I beg your pardon on that Windmills/print query. I was testing the built-in example but looking at the code of a newer version I have. Incidentally, can you update the examples? I’ve made a lot of fixes over the ones that you are using.
http://iainmccurdy.org/CsoundRealtimeExamples/Cabbage/AllCabbageExamples.zip

Will do. I should get a chance to look over those other bugs later today. I’ll get back to you.

Great! I’m keen to install a solid version of Cabbage 2 on all our machines in the computer lab.

Fixed. I can vaguely recall changing the combobox behaviour for some reason. But I’m happy to revert back to the old behvaiour.

I’m not observing any issues when I try here on Linux. I won’t be able to test on OSX till Monday. I will try on Windows a little later.

I have observed this behaviour in debug mode due to some changes in the JUCE code base, but it shouldn’t be present in the Release builds. I will need to test on OSX.

First off, you don’t seem to have updated to using visible() instead of show(). I recall mentioning it to you some time back. But anyhow, apart from that, I’m not sure what’s the best way to deal with popup. At present the following will open and close a popup when the button is buttonchan4 button is pressed.

kShouldShow = chnget:k("buttonchan4")
if changed:k(kShouldShow) == 1 then
    SShowIdentifier sprintfk "visible(%d)", kShouldShow
    chnset SShowIdentifier, "popupPlant"
endif

But if you close the plant window manually instead of pushing the button for a second time, you will need to push said button twice to bring the plant back up again. One could do this:

kShouldShow = chnget:k("buttonchan4")
if changed:k(kShouldShow) == 1 then
    chnset "visible(1)", "popup"
endif

This removes the need for double pressing, but will display the popup window when the instrument runs through its init pass. To cleanest workable solution is someting like this:

instr 1
    kShouldShow = chnget:k("buttonchan4")
    if changed:k(kShouldShow) == 1 then
        event "i", 2, 0, 0
    endif
endin

instr 2
    chnset "visible(1)", "popup"
endin

I realise this is different behavior than before, but the underlying code is now much leaner and better than before. I really don’t want to revert back to Cabbage1 popup plant code. It was an awful mess.

I’m pretty sure I fixed this before. I must have inadvertently regressed to the broken state. I’ll take a look a little later.

Also still present (at least under windows) the signaldisplay widget still shows a mirror image of the signal ( compared to what the soundfiler shows)

Thanks for looking into all of these things.

I’ll play around with the various options you suggest for working with pop-ups. I apologise that you’re telling me some of this for the second time. Once I get something into one of these examples I tend to use that as a template in the future.

I’ll check for the xypad flicker bug on Windows also.

There are some other things going on with the GEN02 checkbox array. Size and position seems to shift slightly when buttons are clicked. I also notice that the cellular automata example seems to inexplicably go silent after a bit of playing with it; I wonder if gentable is filling the function table with zeros? Otherwise something might be broken with vcella. I’ll get back to you about this.

I think it is preferable that if the text("") identifier is omitted from checkbox it assumes the user doesn’t want a label.

I just fixed the gentable issue. But as I said before, it will not be till Monday before I get a build for you.

It’s set to use the same drawing method I use for the checkboxes so they should be the same now.

Probably best to try it again on Monday with a version that has better tables. I’ve been running it in the background for the past 5 minutes without any issues.

Can you give a little more information on this one. The signaldisplay opcode simply shows windowed samples of the incoming waveform. It will constantly be updating and changing. I’m not sure how or why you are comparing it to a sound loaded into a soundfiler?

If you load a soundfiler with an asymmetric waveform like a sawtooth, an then play an A key then the wav is not running along the display. Then you see that the image is inverted.

That’s a good way to test it! I’ll try it out.

Here is a beautiful screenshot playing an A

That’s odd, mine is drawing just fine?

You sure you’re selecting a regular sawtooth waveform? imode should be 0, or omitted.

a1 vco2 1, p4

Everything is on the screenshot. The original waveshape is shown in the soundfilers ( it is twice the same ).
The cabbage patcher show how they are connected.
I attach the slightly modified version of the display. csd. I does not seem to me that there is any trouble in it.JMDisplay.csd (2.0 KB)

I got the popups sorted, it was just a matter of switching show() with visible() and my existing mechanism works fine. Thanks for the tip (again).

The xypad flickering doesn’t seem to occur on Windows. I’ll test for it on another Mac tomorrow.

Similarly, the combobox crash doesn’t occur on Windows. I’ll check for this on another Mac machine tomorrow.

I can confirm Karamel’s slug report that signaldisplay waveform view is flipping the wave with respect to how it should appear. In the image you posted it is a ramp waveform (rising sawtooth) instead of a falling sawtooth. Of course multiplying the signal by -1 is a workaround.

I did fix some code yesterday which should help to make sure things are more stable when updating and resaving instruments. [quote=“iainmccurdy, post:16, topic:828”]
Of course multiplying the signal by -1 is a workaround.
[/quote]

That’s what I’ll do then on the Cabbage side.

Hi @iainmccurdy I just built a new OSX version with those changes and while most things are now fine, the xypad pads still show issues. Strange that it only happens on OSX. I’ll try to get that sorted today and upload a new build later on.

[edit] it seems the problem was being caused by a feedback loop of sorts. I’ve resolved it be preventing xypad ball positions from being updated via Csound. It’s not ideal, but I wonder if anyone was actually using Csound to automate the position of the xypad. If they were it would be just as easy to do with an image. I’m inclined to leave it this way for now so that I can get a bug free build for your labs. Let me know if this sounds Ok for now. I will try to find a fix for this in the future.

New version available at http://cabbageaudio.com/beta/. This version ships with the latest updated docs for Cabbage v2. Note it has the same version number as before. Best to refer to the package creation date when reporting bugs.

@iainmccurdy I think I’ve caught all of those bugs you listed. Please check and let me know when you get a chance.
@Oeyvind This latest installer should install the Csound 6.10 framework rather than the installer. CabbageIncludes are now back in the mix, although you may wish to use the new bundle identifier instead as it will let you copy entire folders to dunbles.
@t_grey I finally sorted the CabbageLite command line issue. I’ve tested here and it’s loading fine on the first attempt.

Good news first… launching from sublime as a project build works first time now, awesome! No more launching and reopening to get a file opened. This will be huge in saving time testing as I work.

But now the bad news. It looks like there might have been a regression or two? The main import for color/style definitions isn’t working. And the TABLETEST now fails as well, meaning pretty much anything I have using tables fails. :no_mouth: