Closed jamshark70 closed 7 years ago
Post the code that caused it and the error stack. You know the routine - user posts "it doesn't work" and then runs away.
I think you mentioned on the list that it's actually 3.8-dev that it failed on.
First, yes, the initial bug report is mistaken. JITLibExtensions is fine against 3.7, but broken against 3.8. I'm updating the issue title.
Code snippet:
p = ProxySpace.new.push;
~synth = { |freq = 440| SinOsc.ar(freq, 0, 0.1) };
~synth.gui;
Stack trace:
ERROR: Message 'widgets' not understood.
RECEIVER:
Instance of NdefParamGui { (0x54a56b8, gc=BC, fmt=00, flg=00, set=05)
instance variables [27]
object : instance of NodeProxy (0x64b4b78, size=16, set=4)
numItems : Integer 8
parent : instance of CompositeView (0x5c67848, size=34, set=6)
bounds : instance of Rect (0x4d70ec8, size=4, set=2)
zone : instance of CompositeView (0x629e8d8, size=34, set=6)
minSize : instance of Point (0x4d6f358, size=2, set=2)
defPos : instance of Point (0x4d6f568, size=2, set=2)
skin : instance of Event (0x573b708, size=5, set=3)
font : instance of Font (0x5738c38, size=5, set=3)
nameView : nil
csView : nil
prevState : instance of Event (0x56f0e08, size=5, set=3)
skipjack : instance of SkipJack (0x2052d98, size=7, set=3)
scroller : instance of EZScroller (0x1dd0848, size=6, set=3)
config : nil
hasWindow : false
paramViews : instance of Array (0x58a13e8, size=8, set=3)
labelWidth : Float 57.000000 00000000 404C8000
keysRotation : Integer 0
specs : instance of Event (0x5722f78, size=5, set=3)
protoBut : nil
parentBut : nil
knowBut : nil
docBut : nil
replaceKeys : instance of Event (0x56f8918, size=5, set=3)
useRanger : true
drags : instance of Array (0x56ea4f8, size=8, set=3)
}
ARGS:
PATH: /home/dlm/share/SC/scd/tests/voicer-gui-fix.scd
CALL STACK:
DoesNotUnderstandError:reportError 0x2194348
arg this = <instance of DoesNotUnderstandError>
Nil:handleError 0x21927e8
arg this = nil
arg error = <instance of DoesNotUnderstandError>
Thread:handleError 0x1d4dc48
arg this = <instance of Thread>
arg error = <instance of DoesNotUnderstandError>
Object:throw 0x20d69a8
arg this = <instance of DoesNotUnderstandError>
Object:doesNotUnderstand 0x214e6e8
arg this = <instance of NdefParamGui>
arg selector = 'widgets'
arg args = [*0]
< FunctionDef in Method NdefParamGui:updateSliderSpecs > 0x5676c88
arg key = 'freq'
arg i = 0
var currValue = 440
var newSpec = <instance of ControlSpec>
var widge = nil
ArrayedCollection:do 0x2086ea8
arg this = [*1]
arg function = <instance of Function>
var i = 0
NdefParamGui:updateSliderSpecs 0x1fc2eb8
arg this = <instance of NdefParamGui>
arg editKeys = [*1]
var currState = [*1]
NdefParamGui:checkUpdate 0x1e51328
arg this = <instance of NdefParamGui>
var newState = <instance of Event>
EnvirGui:object_ 0x1e0c638
arg this = <instance of NdefParamGui>
arg obj = <instance of NodeProxy>
NdefGui:makeViews 0x6363658
arg this = <instance of NdefGui>
arg options = [*12]
var lineBreakIndex = 8
var hasName = nil
var hasMonitor = nil
var resizer = nil
var butLines = [*2]
JITGui:init 0x5733138
arg this = <instance of NdefGui>
arg makeSkip = true
arg options = [*12]
Interpreter:interpretPrintCmdLine 0x636df38
arg this = <instance of Interpreter>
var res = nil
var func = <instance of Function>
var code = "~synth.gui;"
var doc = nil
var ideClass = <instance of Meta_ScIDE>
Process:interpretPrintCmdLine 0x56f1178
arg this = <instance of Main>
^^ The preceding error dump is for ERROR: Message 'widgets' not understood.
RECEIVER: a NdefParamGui
ERROR: Message 'widgets' not understood.
RECEIVER:
Instance of NdefParamGui { (0x54a56b8, gc=BC, fmt=00, flg=00, set=05)
instance variables [27]
object : instance of NodeProxy (0x64b4b78, size=16, set=4)
numItems : Integer 8
parent : instance of CompositeView (0x5c67848, size=34, set=6)
bounds : instance of Rect (0x4d70ec8, size=4, set=2)
zone : instance of CompositeView (0x629e8d8, size=34, set=6)
minSize : instance of Point (0x4d6f358, size=2, set=2)
defPos : instance of Point (0x4d6f568, size=2, set=2)
skin : instance of Event (0x573b708, size=5, set=3)
font : instance of Font (0x5738c38, size=5, set=3)
nameView : nil
csView : nil
prevState : instance of Event (0x56f0e08, size=5, set=3)
skipjack : instance of SkipJack (0x2052d98, size=7, set=3)
scroller : instance of EZScroller (0x1dd0848, size=6, set=3)
config : nil
hasWindow : false
paramViews : instance of Array (0x58a13e8, size=8, set=3)
labelWidth : Float 57.000000 00000000 404C8000
keysRotation : Integer 0
specs : instance of Event (0x5722f78, size=5, set=3)
protoBut : nil
parentBut : nil
knowBut : nil
docBut : nil
replaceKeys : instance of Event (0x56f8918, size=5, set=3)
useRanger : true
drags : instance of Array (0x56ea4f8, size=8, set=3)
}
ARGS:
PATH: /home/dlm/share/SC/scd/tests/voicer-gui-fix.scd
PROTECTED CALL STACK:
Meta_MethodError:new 0x27bdec0
arg this = DoesNotUnderstandError
arg what = nil
arg receiver = a NdefParamGui
Meta_DoesNotUnderstandError:new 0x27bfe80
arg this = DoesNotUnderstandError
arg receiver = a NdefParamGui
arg selector = widgets
arg args = [ ]
Object:doesNotUnderstand 0x1d63d40
arg this = a NdefParamGui
arg selector = widgets
arg args = nil
a FunctionDef 0x4a513c0
sourceCode = "<an open Function>"
arg key = freq
arg i = 0
var currValue = 440
var newSpec = a ControlSpec(20, 20000, 'exp', 0, 440, " Hz")
var widge = nil
ArrayedCollection:do 0x3a597c0
arg this = [ freq ]
arg function = a Function
var i = 0
NdefParamGui:updateSliderSpecs 0x4a51000
arg this = a NdefParamGui
arg editKeys = [ freq ]
var currState = [ [ freq, 440 ] ]
NdefParamGui:checkUpdate 0x26e20c0
arg this = a NdefParamGui
var newState = ( 'editKeys': [ freq ], 'keysRotation': 0, 'specs': [ a ControlSpec(20, 20000, 'exp', 0, 440, " Hz") ], 'object': NodeProxy.audio(localhost, 1),
'overflow': 0, 'settings': [ [ freq, 440 ] ] )
a FunctionDef 0x32cbe00
sourceCode = "<an open Function>"
Routine:prStart 0x3277480
arg this = a Routine
arg inval = 30.986891024
CALL STACK:
DoesNotUnderstandError:reportError 0x1d47058
arg this = <instance of DoesNotUnderstandError>
< closed FunctionDef > 0x1cfa428
arg error = <instance of DoesNotUnderstandError>
Integer:forBy 0x54ede48
arg this = 0
arg endval = 0
arg stepval = 2
arg function = <instance of Function>
var i = 0
var j = 0
SequenceableCollection:pairsDo 0x21d5488
arg this = [*2]
arg function = <instance of Function>
Scheduler:seconds_ 0x21cc8c8
arg this = <instance of Scheduler>
arg newSeconds = 31.091893318
Meta_AppClock:tick 0x21cbfd8
arg this = <instance of Meta_AppClock>
var saveClock = <instance of Meta_SystemClock>
Process:tick 0x2217e88
arg this = <instance of Main>
^^ The preceding error dump is for ERROR: Message 'widgets' not understood.
RECEIVER: a NdefParamGui
You know the routine - user posts "it doesn't work" and then runs away.
In this case, it's an error I had already discussed with Alberto some months ago.
moved from https://github.com/supercollider/supercollider/issues/2371
There is no instance variable widgets
anywhere, but it is called by two methods:
EnvirGui.updateSliderSpecs
NdefParamGui.updateSliderSpecs
e.g.:
updateSliderSpecs { |editKeys|
var currState;
if (object.isNil) { specs.clear; ^this };
currState = object.getKeysValues;
editKeys.do { |key, i|
var currValue = currState.detect { |pair| pair[0] == key }[1];
var newSpec = this.getSpec(key, currValue);
var widge = this.widgets[i];
if (newSpec != specs[key]) {
specs.put(key, newSpec);
if (widge.isKindOf(EZSlider) or:
{ widge.isKindOf(EZRanger) }) {
widge.controlSpec = newSpec;
widge.value_(currValue);
};
};
}
}
It throws the error:
ERROR: Message 'widgets' not understood.
RECEIVER:
Instance of NdefParamGui { (0x11d09aaf8, gc=CC, fmt=00, flg=00, set=05)
Dear all, fixed this so my tests work - see https://github.com/supercollider-quarks/JITLibExtensions/blob/master/JitGui_tests.scd
Please test with your setups, both in 3.7.2 and 3.8, and let me know if you still see any problems.
sorry for the long wait!
Works fine now (3.8) – thank you!
I realize this is a known issue, but I just tried to use ProxyMixer against a more recent SC and it broke because of JITLibExtensions. So I think it's worth logging to ensure the issue doesn't get lost: it's rather below an ideal situation if a quark is incompatible with the current stable release.
User impact: I just had to downgrade SC to my pre-3.7 sandbox branch to use specs with JITLib.