Forum rss-feed

Forum

Workbench: Workbench crashed

Most Recent

written by: john

This comes back to a fairly common misconception about Belcanto, that it's some kind of programming language. It's certainly not that, (it's not even Turing complete, deliberately so) and was never intended to be. It's original design intention is as a musician friendly real time control and command language, designed to be spoken by playing notes at your system while playing the instrument to allow one to reconfigure things on the fly while performing. This is the reason for the 'verb at the end' sentence structure - if you are attempting to do something where timing is important you either need a sentence terminator (like the return key on a computer keyboard) or you need to have the action at the end so that you can kick it off at the right moment. We chose 'verb at the end' because it is one less key press. I'm not sure that was a wise decision as it stands (at the time we were concerned about using Belcanto on small keygroups with restricted playing range), but that is where we are now. The reason that the tokens are composed of separate words is also to make it easy to use in that manner - this was never designed to be typed or even really seen written down.

The confusion set in when Belcanto got used very heavily (much more so than originally intended really) in the original system - Jim invented Talkers and it kind of took off from there. This lead to some quite strange language additions (which we have nearly eliminated now) and also lead to many people using it for things (due to us dropping the original Workbench tool as too crude and way too confusing) that it is rather counter intuitive for. We also encountered a whole lot more tweakers and twiddlers (many of whom were actual programmers) when we launched that I had anticipated. This was stupid of me - I assumed that people would mostly be interested in just playing the instruments and not so much in modifying them. I have had occasion to regret this lack of foresight.

I am very hopeful that we may now be getting to a point where we have appropriate tools for almost everything in Eigenland. Workbench is a much better tool for maintaining and configuring a connection graph, and Belcanto represents an orthogonal layer to that that brings huge additional flexibility, way beyond what would be possible in a purely GUI driven environment. And John Nolan's fantastic speech->Belcanto Agent demo holds great promise for real live performance use when people don't want to learn the note mappings, which does take a lot of work to do. It's quite possible that, finally, interactive voice interfaces are going to have their day (witness Siri), and Belcanto is well placed to exploit this if it's true.

John

written by: dhjdhj

Thu, 29 Mar 2012 15:06:11 +0100 BST

Trying to find my way around workbench --- no clue as to what's going on! Loaded the Alpha Modular setup....couldn't get any audio out of it....tried reloading it and workbench crashed....see stack trace below.

---------------------




Path: /Applications/Eigenlabs/*/Workbench.app/Contents/MacOS/Workbench
Identifier: Workbench.app
Version: ??? (2.0.39-experimental)
Code Type: X86 (Native)
Parent Process: launchd [159]

Date/Time: 2012-03-29 10:01:03.391 -0400
OS Version: Mac OS X 10.7.3 (11D50b)
Report Version: 9

Interval Since Last Report: 1687606 sec
Crashes Since Last Report: 17
Per-App Interval Since Last Report: 1428 sec
Per-App Crashes Since Last Report: 1
Anonymous UUID: 211A3418-0AAC-4FAE-A16E-0590E3756FB6

Crashed Thread: 0 Dispatch queue: com.apple.main-thread

Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000054485250

VM Regions Near 0x54485250:
CG backing stores 0000000009e00000-000000000a800000 [ 10.0M] rw-/rw- SM=SHM
-->
__TEXT 000000008fed3000-000000008ff06000 [ 204K] r-x/rwx SM=COW /usr/lib/dyld

Application Specific Information:
objc[2436]: garbage collection is OFF

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 Workbench.app 0x0018f02c juce::XmlElement::hasTagName(juce::String const&) const + 12
1 Workbench.app 0x000b3542 Workspace::readState(juce::String) + 818
2 Workbench.app 0x000b457d Workspace::stateChanged(char const*) + 445
3 workbench_native.so 0x05c8bccd (anonymous namespace)::p2c_wrapper_::stateChanged_method_((anonymous namespace)::p2c_object_*, _object*) + 125
4 org.python.python 0x0077e8be PyEval_EvalFrameEx + 24563 (ceval.c:3564)
5 org.python.python 0x0077e96c PyEval_EvalFrameEx + 24737 (ceval.c:3650)
6 org.python.python 0x0070a770 gen_send_ex + 139 (genobject.c:82)
7 org.python.python 0x0077e881 PyEval_EvalFrameEx + 24502 (ceval.c:3552)
8 org.python.python 0x0077f170 PyEval_EvalCodeEx + 1819 (ceval.c:2831)
9 org.python.python 0x0077ca45 PyEval_EvalFrameEx + 16762 (ceval.c:3660)
10 org.python.python 0x0077f170 PyEval_EvalCodeEx + 1819 (ceval.c:2831)
11 org.python.python 0x007149cb function_call + 320 (funcobject.c:517)
12 org.python.python 0x006f370c PyObject_Call + 45 (abstract.c:1860)
13 org.python.python 0x006fb379 instancemethod_call + 401 (classobject.c:2497)
14 org.python.python 0x006f370c PyObject_Call + 45 (abstract.c:1860)
15 org.python.python 0x00777a46 PyEval_CallObjectWithKeywords + 112 (ceval.c:3433)
16 org.python.python 0x006fd85a PyInstance_New + 114 (classobject.c:560)
17 org.python.python 0x006f370c PyObject_Call + 45 (abstract.c:1860)
18 org.python.python 0x0077ace5 PyEval_EvalFrameEx + 9242 (ceval.c:3775)
19 org.python.python 0x0077f170 PyEval_EvalCodeEx + 1819 (ceval.c:2831)
20 org.python.python 0x0077ca45 PyEval_EvalFrameEx + 16762 (ceval.c:3660)
21 org.python.python 0x0070a770 gen_send_ex + 139 (genobject.c:82)
22 org.python.python 0x0077e881 PyEval_EvalFrameEx + 24502 (ceval.c:3552)
23 org.python.python 0x0077f170 PyEval_EvalCodeEx + 1819 (ceval.c:2831)
24 org.python.python 0x0077ca45 PyEval_EvalFrameEx + 16762 (ceval.c:3660)
25 org.python.python 0x0077f170 PyEval_EvalCodeEx + 1819 (ceval.c:2831)
26 org.python.python 0x007149cb function_call + 320 (funcobject.c:517)
27 org.python.python 0x006f370c PyObject_Call + 45 (abstract.c:1860)
28 org.python.python 0x006fb379 instancemethod_call + 401 (classobject.c:2497)
29 org.python.python 0x006f370c PyObject_Call + 45 (abstract.c:1860)
30 org.python.python 0x00777a46 PyEval_CallObjectWithKeywords + 112 (ceval.c:3433)
31 org.python.python 0x006fd85a PyInstance_New + 114 (classobject.c:560)
32 org.python.python 0x006f370c PyObject_Call + 45 (abstract.c:1860)
33 org.python.python 0x0077ace5 PyEval_EvalFrameEx + 9242 (ceval.c:3775)
34 org.python.python 0x0077f170 PyEval_EvalCodeEx + 1819 (ceval.c:2831)
35 org.python.python 0x0077ca45 PyEval_EvalFrameEx + 16762 (ceval.c:3660)
36 org.python.python 0x0077f170 PyEval_EvalCodeEx + 1819 (ceval.c:2831)
37 org.python.python 0x007149cb function_call + 320 (funcobject.c:517)
38 org.python.python 0x006f370c PyObject_Call + 45 (abstract.c:1860)
39 org.python.python 0x006fb379 instancemethod_call + 401 (classobject.c:2497)
40 org.python.python 0x006f3f33 call_function_tail + 82 (abstract.c:1860)
41 org.python.python 0x006f76a1 PyObject_CallFunction + 53 (abstract.c:1916)
42 piw_native.so 0x05d636a2 (anonymous namespace)::rpcserver_wrapper_::rpcserver_invoke(piw::rpctoken_t const&, piw::data_t const&, piw::data_t const&, piw::data_t const&) + 178
43 libpiw.dylib 0x00d52e76 piw::rpcserver_t::rpcserver_invoke_thunk(bct_rpcserver_s*, bct_entity_ops_s**, void*, bct_data_s*, bct_data_s*, bct_data_s*) + 310
44 libpia.dylib 0x00c2f429 (anonymous namespace)::snode_t::invoke__(void*, pia_data_t const&) + 841
45 libpia.dylib 0x00bd40dd (anonymous namespace)::idle_t::run() + 93
46 libpia.dylib 0x00bd7ba8 pia_eventq_impl_t::run(unsigned long long) + 776
47 libpia.dylib 0x00bd5775 pia_eventq_t::run(unsigned long long) + 37
48 libpia.dylib 0x00bfbfb0 pia::manager_t::impl_t::process_ctx(int, unsigned long long, bool*) + 432
49 libpia.dylib 0x00be3989 pia::scaffold_gui_t::process_ctx() + 57
50 Workbench.app 0x001a1546 juce::MessageManager::deliverMessage(juce::Message*) + 118
51 Workbench.app 0x003b45da juce::MessageQueue::runLoopSourceCallback(void*) + 314
52 com.apple.CoreFoundation 0x964e83df __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
53 com.apple.CoreFoundation 0x964e7d96 __CFRunLoopDoSources0 + 246
54 com.apple.CoreFoundation 0x96511c68 __CFRunLoopRun + 1112
55 com.apple.CoreFoundation 0x9651147c CFRunLoopRunSpecific + 332
56 com.apple.CoreFoundation 0x96511328 CFRunLoopRunInMode + 120
57 com.apple.HIToolbox 0x980e017f RunCurrentEventLoopInMode + 318
58 com.apple.HIToolbox 0x980e74e7 ReceiveNextEventCommon + 381
59 com.apple.HIToolbox 0x980e7356 BlockUntilNextEventMatchingListInMode + 88
60 com.apple.AppKit 0x94c6ea9c _DPSNextEvent + 678
61 com.apple.AppKit 0x94c6e306 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 113
62 com.apple.AppKit 0x94c6a675 -[NSApplication run] + 911
63 Workbench.app 0x001a11ba juce::MessageManager::runDispatchLoop() + 714
64 Workbench.app 0x0031218d juce::JUCEApplication::main(juce::String const&) + 109
65 Workbench.app 0x00312384 juce::JUCEApplication::main(int, char const**) + 196
66 Workbench.app 0x00008f09 start + 53


written by: geert

Thu, 29 Mar 2012 15:39:47 +0100 BST

Hi David,

That workbench crash is part of the bugs we're fixing now.

You should hear a sound when you select the appropriate audio device either through the Edit properties of the Audio agent in Workbench, or through Windows -> Audio settings in EigenD.

Best regards,

Geert


written by: dhjdhj

Thu, 29 Mar 2012 18:35:33 +0100 BST

I can't get any sound out of it....but that's ok....

From a few experiments, I am understanding (a little) how agents are working.

I thought I would try the instructions that I had for creating a basic setup for OSC just using EigenCommander and then looking at Workbench to see what it looks like.

These are the commands I have

osc output create
alpha manager create
alpha keyboard 1 hey ("This is just to make sure Alpha is connected")
alpha keyboard 1 to osc output 1
connect

The first two commands work fine but the command

alpha keyboard 1 hey

fails so I'm stuck.

Anyone know what to do? I'm using 2.0.39-experimental.


(By the way, regarding the Workbench, I'm mumbling a little about the non-context sensitive right menu but I have to say that I like very much that "TRUNK" concept. That's a very sweet idea for managing a large number of connections)


written by: NothanUmber

Thu, 29 Mar 2012 23:57:58 +0100 BST

First make sure that you have connected the Eigenharp - otherwise keyboard agents won't be visible. Then the "alpha keyboard 1" agent should be there as soon as you add the "alpha manager" agent.
The best way to get going is probably to follow some of the initial tutorials in the wiki and to dissect the preliminary standard setups (and some "this might work" experimentation at least in the current stage.)

P.S.: "alpha keyboard 1 hey" alone doesn't do anything, don't expect a reaction from this. but "alpha keyboard 1 to osc output 1 connect" (without the "alpha keyboard 1 hey" which might just confuse the interpreter) should work. (Reason: alpha keyboard can't connect anything, so it doesn't understand "connect". The reason why "alpha keyboard 1 to osc output 1 connect" works is because the plumber is implicitly listening for commands as a convenience feature. So if you want to write a "hey" phrase it would be "plumber hey alpha keyboard 1 to osc output 1 connect")


written by: dhjdhj

Fri, 30 Mar 2012 01:13:01 +0100 BST

OK -- first of all, I have to fall on my sword! I was ready to say that "of course the eigenharp is connected" but then I took another look and realized that the USB cable from the computer to the base station was NOT connected.

I really think I'm getting too old for this stuff.

So I plugged it in, executed those commands (modified by comments from NothanUmber) and indeed I am receiving OSC data in Max, not only from the keyboard, but the strips work too! Very exciting. I'm not sure how to get the LEDs to work under program controller as second line below doesn't work.

midi input create
alpha midi light controller create




Now, much more importantly, I have figured out WHY I have been completely confused by Belcanto, agents and so forth from the very beginning and hence decided to avoid it and push for use with Max.

I had Workbench running when I opened the eigencommander to type in the commands. After typing in

alpha keyboard 1 to osc output 1 connect

and seeing what happened, I realized that I have been trying to parse the language completely wrong.

I did not understand that alpha keyboard 1 (for example) is actually a single name. I thought those tokens represented THREE separate things and I couldn't figure out how to interpret the meaning (I thought that it was sending the message 'keyboard' with a parameter of '1' to an object called 'alpha' and then I tried to parse everything else like that and never could!

When I first looked at Belcanto, had I seen something like

"alpha keyboard 1" to "osc output 1" connect
or

alpha_keyboard_1 to osc_output_1 connect
or even

alpha_keyboard(1) to osc_output(1) connect
or (and this would have made the most sense to me)

connect alpha_keyboard(1) to osc_output(1)

it would have been instantly apparent to me what was going on and I would have been all over this thing at the beginning rather than ranting about it. Sorry, John!!!

Now that I understand it, I am curious as to why the choice was made to name these things with spaces and why the verbs are at the end. If the word 'to' wasn't there, then the whole thing looks like it's designed for an RPN or Forth style stack machine.


written by: john

Fri, 30 Mar 2012 09:23:44 +0100 BST

This comes back to a fairly common misconception about Belcanto, that it's some kind of programming language. It's certainly not that, (it's not even Turing complete, deliberately so) and was never intended to be. It's original design intention is as a musician friendly real time control and command language, designed to be spoken by playing notes at your system while playing the instrument to allow one to reconfigure things on the fly while performing. This is the reason for the 'verb at the end' sentence structure - if you are attempting to do something where timing is important you either need a sentence terminator (like the return key on a computer keyboard) or you need to have the action at the end so that you can kick it off at the right moment. We chose 'verb at the end' because it is one less key press. I'm not sure that was a wise decision as it stands (at the time we were concerned about using Belcanto on small keygroups with restricted playing range), but that is where we are now. The reason that the tokens are composed of separate words is also to make it easy to use in that manner - this was never designed to be typed or even really seen written down.

The confusion set in when Belcanto got used very heavily (much more so than originally intended really) in the original system - Jim invented Talkers and it kind of took off from there. This lead to some quite strange language additions (which we have nearly eliminated now) and also lead to many people using it for things (due to us dropping the original Workbench tool as too crude and way too confusing) that it is rather counter intuitive for. We also encountered a whole lot more tweakers and twiddlers (many of whom were actual programmers) when we launched that I had anticipated. This was stupid of me - I assumed that people would mostly be interested in just playing the instruments and not so much in modifying them. I have had occasion to regret this lack of foresight.

I am very hopeful that we may now be getting to a point where we have appropriate tools for almost everything in Eigenland. Workbench is a much better tool for maintaining and configuring a connection graph, and Belcanto represents an orthogonal layer to that that brings huge additional flexibility, way beyond what would be possible in a purely GUI driven environment. And John Nolan's fantastic speech->Belcanto Agent demo holds great promise for real live performance use when people don't want to learn the note mappings, which does take a lot of work to do. It's quite possible that, finally, interactive voice interfaces are going to have their day (witness Siri), and Belcanto is well placed to exploit this if it's true.

John



Please log in to join the discussions