@sam - just did a couple of crazy audio-rate tests

Ran 15 minutes of an 8kHz square wave banging a trigger input that sent out TO.TR.P. UI locked up - but restored itself admirably after unplugging the cable. Totally stable.

Rebooted and got evil. Set up triggers 1-4 for reading and writing: CV n TI.PRM n. Plugged four oscillators on square waves into them. Ramped up nicely and found some points where the UI was less responsive, but usable with the updates to the CV values looking butter-smooth. Then I put all 4 oscillators at 8kHz. Expected UI lock. Left it a few minutes, then unplugged. Everything is back to normal.

Massive stability improvement for ridiculous patching!!

BTW: Also confirmed that the TELEX aliases and INIT commands are in and performing nicely. :wink:

wow.

5 Likes

Now if only the changes to fix Teletype didn’t break Ansible…

Could you try some TI or TO ops in the metro script at crazy speeds too?

I’m trying to figure out if the metro crashes are due to Ansible crashing or the metro locking out the UI.

This is amazing!!!

I’m running the following M script at 10ms with 1 x TXo and 1 x TXi on the bus:

L 1 4: TO.TR.P I
L 1 4: TO.CV I V RAND 10
L 1 4: CV I TI.PRM I

Been going for 30 minutes. UI is totally responsive. Param knobs update the CV outputs of the TT responsively and feel butter-smooth. The TXo keeps chugging away with wildly fast triggers (dialed down the pulse time to 1ms) and flickering CV lights.

I have a feeling this could run all day. :slight_smile:

2 Likes

I’d been doing that with some of my testing on the internal outputs. That slightly flickering light was a good feeling.

It just keeps plugging.

Though, at these speeds, I’m starting to get worried about the fabric of the universe.

Might need to turn it off soon… :wink:

5 Likes

Have managed to fix the bug in the Ansilbe firmware.

I can now run this script at M 10, the UI get’s incredible unresponsive. But it is possible by repeatedly mashing on the keys to get to the live prompt and type a sensible value for M in.

edit: finally managed to crash Ansible, but it took an awful lot of abuse.

3 Likes

Just faced what looks like a bug when using the LOOP PRE in order to trigger a SCENE, was there some modification with that PRE’s behavior i might not be aware of?

The patch was working fine in 1.4.1 but seems broken on 2.0 beta 8 and 9 (no crashes though).

No changes that I’m aware of.

Fabulous, that will definitely make it easier for me to help / fix it.


Ansible update:

Ansible i2c is definitely improved, but it is the weak link now.

For whomsoever comes after me… it might be worth considering i2c bus recovery over and above finding each and every bug in Ansible/Trilogy/etc. If the i2c goes down it easily crashes the Teletype.

I managed to isolate the problem:

1 (externally triggered)
SCRIPT 2
SCRIPT 4

2
L 0 5: SCRIPT 3

3
(empty)

4
TR.PULSE 1 (this one is just for visual feedback)

Issue : SCRIPT 4 isn’t triggered.

So i think that LOOP is breaking the chain of action preventing to get back to SCRIPT 1 in order to finish its code (here triggering SCRIPT 4).

@sam Hope this helps.

1 Like

If you change

L 0 5: SCRIPT 3

to:

L 0 4: SCRIPT 3

does script 4 trigger?


edit: checked it myself, and it does work. Basically, you’re running up against the new script loop protection. I can probably make some tweaks to how it works inside a loop… will write up the options tomorrow.

Yep you are right it works with that patch but in the complete one it won’t work until i decrease it to L 0 2 (a lot of thing is going on in that patch, with a lot of SCRIPT triggering, i can’t tell if it is related).

BTW i also tried to replace the LOOP with something like that and reached hit the same wall:

2
SCRIPT 3
SCRIPT 3
SCRIPT 3
SCRIPT 3
SCRIPT 3
SCRIPT 3

It would be awesome if the number of values could be increased to something like 8 or 9 or at least 6 as the number of lines in a script :innocent:

Such a simple change…

Basically the new script loop detection works, not by trying to detect loops (if you try to do that you run into the halting problem), but instead by limiting how many times any script can run from a single trigger (or metro, or delayed command, etc). The reason for doing this is to stop the infinite loop. But because scripts can recurse into each other there is a danger of a stack overflow, thus the limit of only 8ish SCRIPT calls.

(as aside it is possible to remove the danger of the stack overflow by using a ‘trampoline function’, but that would require far more work)

Anyway when I wrote that code I was focusing purely on the danger of the stack overflow which comes about from nesting scripts (e.g. script 1 calls script 2, script 2 calls script 3, etc). But the way the code works is overly simplistic and all it does in effect is count how many times you run any script. So the solution is to decrease the number after the script finishes. That way the limit is on how deep the nesting is, not how many you run.

tl;dr: you can use SCRIPT a lot now, the limit is how deep the nesting goes, not how many scripts you run.

The code will be in the next beta, which may in fact be the first release candidate.

4 Likes

Thank you very much for that readjustment (and the hard work btw).

1 Like

Quoting myself…

Anyone wish to comment?

This is one of the last things to resolve…

how about changing the ansible meadowphysics to ME.PRE etc?

1 Like

Could do. Given that it’s going to be a breaking change…

Would you want to go with the long versions of the names…?

  • ME.PRESET
  • ME.RESET
  • ME.OFFSET

We could add aliases in for those concerned with space.

My 2c, is that AMP is more memorable that ME. It would be nice to bring the two sets of command groups to a common point at some point in the future.

1 Like

New thread started for those that wish to contribute to the documentation efforts…

2 Likes

honestly the shortening was originally due to name collisions with the standalone mp module. i followed over these shortenings to the KR and LV and CY commands.

i feel it’d make sense to have uniformity. i don’t have a particular preference myself. the short versions aren’t too obtuse, but full length is more readable.

also i like shorter (less dense) line commands, so the full-length words to me don’t threaten usability

re: AMP, i don’t like this because amplitude is such a prevalent parameter in modular that it seems confusing.

@sam ansible with new libavr32 running fine so far…

1 Like

Ha. I didn’t even see that. Definitely an important point.

You can see all the Ansible op names in one place here: