68 lines
1.6 KiB
Racket
68 lines
1.6 KiB
Racket
#lang scribble/manual
|
|
@(require (for-label racket))
|
|
|
|
@title{Archive}
|
|
storing objects to file@section{categories}
|
|
Collections, Files
|
|
@section{related}
|
|
Classes/Library, Classes/Object, Classes/LibraryBase
|
|
|
|
@section{description}
|
|
|
|
Archives can write any object to disk and read from file again. Complex structures of objects can thus be restored. Writing an object to file as a strong::compile string:: is usually more readable, but does not account for the internal structure of the object.
|
|
|
|
There is only one global instance: Archive.global, which is initialized automatically.
|
|
|
|
@section{CLASSMETHODS}
|
|
|
|
|
|
@section{private}
|
|
initClass
|
|
|
|
@section{method}
|
|
global
|
|
set or get the global archive instance
|
|
|
|
@section{method}
|
|
archiveDir
|
|
set or get the directory that the archive is written to.
|
|
Default: link::Classes/Platform::.userAppSupportDir.
|
|
|
|
@section{method}
|
|
write
|
|
write the global archive now. This is called automatically when SuperCollider quits.
|
|
The default filename is "/archive.sctxar"
|
|
|
|
@section{method}
|
|
read
|
|
read the global archive now. This is called automatically when SuperCollider recompiles or starts.
|
|
The default filename is "/archive.sctxar"
|
|
|
|
@section{EXAMPLES}
|
|
|
|
|
|
|
|
@racketblock[
|
|
// make a storage place for various objects:
|
|
q = (); // Event
|
|
|
|
q[\a_long_array] = Array.rand(128, 0.0, 1.0);
|
|
q[\pi_squared] = pi * pi;
|
|
q[\favourite_sound] = { { SinOsc.ar([300, 330]).sum * LFPulse.kr(2 + [0, 0.01]) * 0.1 }.play };
|
|
q[\same_long_array] = q[\a_long_array]; // same objects may appear several times
|
|
|
|
Archive.global.put(\myData, q);
|
|
|
|
|
|
Archive.global.at(\myData).postcs;
|
|
|
|
// after a recompile:
|
|
s.boot;
|
|
|
|
q = Archive.global.at(\myData);
|
|
q.postcs;
|
|
q[\favourite_sound].value;
|
|
::
|
|
]
|
|
|
|
|