Skip to content

achorripsis

A simple description of the algorithm for Achorripsis by Iannis Xenakis, as described by Orestis Plakias in class. Furthermore some incremental notes towards coding this in SuperCollider.


 
/*
420 seconds
divided in sections of 15 seconds
Each section contains one event.
There are 5 kinds of events:
  - Silence
  - Simple Event
  - 2 events (compound event 2)
  - 3 events (compound event 3)
  - 4 events (compound event 4)
The compound events 2, 3, and 4 are composed of 2, 3, and 4 events respectively, where each one of the component events  can start at any time independent of the other within the time span of the composed event
*/
 
-------------------------
~proto = Event.make({
  ~chrono = { "hello".postln; };
  ~dtime = 15;
});
~proto;
~proto.chrono;
~proto.dtime;
-------------------------
~proto = Event.make({
  ~num_repeats = 28;
  ~dtime = 15;
  ~chrono = Routine({
    "starting".postln;
    ~num_repeats do: { | index |
      index.postln;
      (~dtime / 10).wait;
    };
  });
});
 
~proto
~proto.chrono.play;
-------------------------
-------------------------
~proto = Event.make({
  ~num_repeats = 28;
  ~dtime = 15;
  ~chrono = Routine({
    "starting".postln;
    ~num_repeats do: { | index |
      index.postln;
      (~dtime / 10).wait;
    };
  });
  ~play = { ~chrono.play };
  ~stop = {
      ~chrono.stop;
      "stopped".postln;
  };
});
 
~proto
~proto.play;
-------------------------
(
~proto = Event.make({
  ~num_repeats = 28;
  ~dtime = 15;
  ~scale = 0.1;
  ~scaled_dtime = { ~dtime * ~scale };
  ~play_single_event = {
    // compute start dtime
    ~start_time = 0 rrandom: (~scaled_dtime * 0.5);
    // compute playback parameters
    // select a buffer at random
    // play that buffer
  };
  ~play_event = { | num_component_events = 1 |
    num_component_events do: {
      ~play_single_event.value;
    }
  }
  ~action = { ~play_event.value(5.random); };
  ~chrono = Routine({
    "starting".postln;
    ~num_repeats do: { | index |
      index.postln;
      ~scaled_dtime.value.wait;
    };
  });
  ~play = {
    if ((~chrono.state == 0) or: (~chrono.state == 6)) {
      ~chrono.reset;
      ~chrono.play;
    }{
      "already running".postln;
    }
  };
  ~stop = {
      ~chrono.stop;
  };
});
)
 
~proto.play;
~proto.stop;
~proto.chrono.state
 
-------------------------
/*
~chrono = Event.make({
  chrono: Routine({
    loop {  
      ~
      15.wait;
    }
  });
})
*/

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*