[PD] More about PD state-saving
Phil Stone
pkstone at ucdavis.edu
Thu Mar 20 05:18:32 CET 2008
Hi Luke, Frank, and list.
Luke Iannini (pd) wrote:
> Basically the original presentation of RRADical is organized so that
> Polaroid can be used to copy/paste or save/load settings from one
> instance of a module to another. So it is like a big Moog Modular,
> where the settings of one 901 oscillator can be copied to a second 901
> oscillator, or a 911 envelope to second 911 envelope. And then, to
> save the whole rack of modules at once, you use [careGUI].
>
> What I describe is a bit different; what I wanted was more like
> combining 3 oscillators and a filter to get a Minimoog, and then using
> Polaroid to copy the settings of all 4 modules to a second Minimoog,
> or using [careGUI] to save both of them at once.
>
> I haven't gotten to thinking about Memento's preset system yet (I tend
> to just use preset 0 and the filesystem).
That is a clever way to get around the problem (of accessing individual
"presets"), but it's a bit of a shame when you consider that the
underlying storage, [pool], is very well-designed to handle arbitrary
hierarchies, yet you have to use the filesystem (with its inherent
disadvantages...e.g. glitching during disk access) with a "shallow"
[pool] to achieve the desired functionality.
With the current Memento setup, one can have an arbitrary number of
"Minimoog" presets, and switching them is as easy as sending a new
"substate" message via OSC (and it all happens without any filesystem
access). What one *can't* do is individually *access* those presets
(e.g., to save them individually, or to cut/copy/paste them), because
Memento's hierarchy is not organized that way.
There's nothing magical about "substate" in rradical/memento -- it's
just mapped to a "relative directory change" message for [pool]. What
if the current hierarchy were inverted, so that what is now called
"substate" became "superstate" (corresponding to a "preset", in a
modular-synth vocabulary), with [originator]-spawned parameter groupings
(the current system's directory roots) underneath?
Illustrating this desired [pool] directory structure with your Minimoog
analogy:
Preset 1 <-- this is the "superstate"
VCO <-- this is the [originator]-delineated module
freq. 2000 <-- these are key/value pairs (parameters)
wave saw
(etc.)
VCF <-- another [originator]-delineated module
cutoff 5000
q 0.05
(etc.)
ETC. <-- (other modules)
Preset 2 <-- "superstate" 2
VCO <-- [originator]-delineated module
freq. 2000 <-- key/value pairs (parameters)
wave saw
(etc.)
VCF <-- another [originator]-delineated module
cutoff 2000
q 0.10
(etc.)
ETC.
Going one step further, why not an ultimate flexibility for the upper
hierarchy? Right now, the [originator] in each logical module functions
as the main architectural building block of Memento, and sits
accordingly at the top of the hierarchy. What if a (superstate)
hierarchy list were passed as an argument to [originator], which tells
it where to store its underlying data in [pool]?
Imagine this hierarchy (perhaps a bit fanciful, but not inconceivable):
2008
July
Carnegie_Hall
Minimoog
Preset_12
Module (here lies the current top of the Memento
hiearchy, created by [originator])
key-value pairs
If [originator] could accept as an input the list {2008, July,
Carnegie_Hall, Minimoog, Preset_12} -- it could store its data at that
level of a [pool] hierarchy. It would then be possible to save/restore,
cut/copy/paste the tree below *any* node on the hierarchy, and it would
be organized in a way that makes more sense.
Of course, it's easy to theorize about this; perhaps not so easy to
implement! Thoughts?
Phil Stone
www.pkstonemusic.com
More information about the Pd-list
mailing list