Organizing LiveSet over the 9 "spaces" and communicating

Hi, maybe a lot of question todayt, sorry for that.
i try to understand and see what can i do with those 9 spaces of the editor, i can play various at the same time, wich is very cool, but can we communicate ?

i mean, intereact between each other ? using a variable from one space into an other one ?
i didnt find anything over this topic (or maybe i missed it) but how to sync those spaces, and how to play and stop independently… is this feature is complete in the 3.3.1 release ?
Thanks for your answer

uriel

Hello @uriel :slightly_smiling_face:

What you are after is the Time-State global memory store, which allows us to communicate between different threads in a safe, deterministic manner. The functions to do this are get and set to send data between threads, and cue and sync to synchronise behaviour between threads. (Which also applies to between buffers in the GUI).
See:
https://sonic-pi.net/tutorial.html#section-10
as well as the corresponding function references in the Help panel, under the ‘Lang’ tab.

Hi Ethan.
so… not sure it is enough clear to me, sorry…
you mean that those 9 “spaces” are threads related ?
:thinking: so there are basically buffers where you can use get/set to share data between them.

Humm hummm… ok… is there a way to save the complete set of threads/buffers/spaces/tabs ?
the very good point here for my personal use is to load 9 tabs of liveset and play with them… i need to work this way i suppose

are we speaking about this ? right
2021-10-29 06_00_51-Sonic Pi

The spaces (buffers) are just windows that can each run Sonic Pi code. (Accessed by the tab buttons that you show, yes).
What I meant about the cue and sync functions etc also applying to the buffers is that those functions work with the Time-State memory store which is independent of the buffers - so variables stored with set or events triggered with a cue in one buffer can just as easily be retrieved or received in a different buffer :slightly_smiling_face:
(Sorry, it might have been a bit confusing mentioning ‘different threads’. Yes, those functions allow us to operate between loops/threads, and this works between different buffers as well because each window/buffer has an implicit ‘top level’ thread that all code you write in the buffer executes within).

Re saving and reloading the complete set of buffers as a group - there is not currently such a thing. It is on our wishlist :slightly_smiling_face:

1 Like

thank you for the link :wink: Nice program
and thanks again for the help here… now i can do all my liveset over the 9 tabs, great ! :slight_smile: