[Csnd] Cellular Automata Streams

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

[Csnd] Cellular Automata Streams

Steven Yi
Hi All,

I'd like to share a project exploring one-dimensional celullar automata:

http://kunstmusik.com/2018/09/11/cellular-automata-streams/

The example does CA processing using standard Wolfram classifications,
interpreting the rule number as an 8-bit value.  Unlike typical
implementations, rather than have an array represent a step in a CA
process iteration, the ca_stream opcode treats it as a pre-filled ring
buffer/delay-line and processes the CA as values in a streaming
fashion.  New values are emitted as well as used as input into the
delay line.

I haven't seen 1D CA implemented as a delay line before, though I also
haven't spent too much time in this area of research. I think it might
be interesting to allow input into the CA so that users might
interactively "play" the CA (the feedback value could be as simple as
bitwise-or of user input plus generated CA value).  The inspiration
there being similar to how 2D CA systems often allow user painting of
cells to interact with the system. I plan to create a web application
to explore this.

Cheers!
steven

Csound mailing list
[hidden email]
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here
Reply | Threaded
Open this post in threaded view
|

Re: [Csnd] Cellular Automata Streams

Victor Lazzarini-2
I think Eduardo Miranda's PhD thesis from the 90s was based on CA work. There may be papers from the time as well that you
can check out.

Victor Lazzarini
Dean of Arts, Celtic Studies, and Philosophy
Maynooth University
Ireland

> On 11 Sep 2018, at 20:35, Steven Yi <[hidden email]> wrote:
>
> Hi All,
>
> I'd like to share a project exploring one-dimensional celullar automata:
>
> http://kunstmusik.com/2018/09/11/cellular-automata-streams/
>
> The example does CA processing using standard Wolfram classifications,
> interpreting the rule number as an 8-bit value.  Unlike typical
> implementations, rather than have an array represent a step in a CA
> process iteration, the ca_stream opcode treats it as a pre-filled ring
> buffer/delay-line and processes the CA as values in a streaming
> fashion.  New values are emitted as well as used as input into the
> delay line.
>
> I haven't seen 1D CA implemented as a delay line before, though I also
> haven't spent too much time in this area of research. I think it might
> be interesting to allow input into the CA so that users might
> interactively "play" the CA (the feedback value could be as simple as
> bitwise-or of user input plus generated CA value).  The inspiration
> there being similar to how 2D CA systems often allow user painting of
> cells to interact with the system. I plan to create a web application
> to explore this.
>
> Cheers!
> steven
>
> Csound mailing list
> [hidden email]
> https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
> Send bugs reports to
>        https://github.com/csound/csound/issues
> Discussions of bugs and features can be posted here

Csound mailing list
[hidden email]
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here
Reply | Threaded
Open this post in threaded view
|

Re: [Csnd] Cellular Automata Streams

rorywalsh
One of his books also features quite a lot on CA. Can't recall which one. The composing with computers one maybe? It's probably the same content as his dissertation. 

On Tue 11 Sep 2018, 20:48 Victor Lazzarini, <[hidden email]> wrote:
I think Eduardo Miranda's PhD thesis from the 90s was based on CA work. There may be papers from the time as well that you
can check out.

Victor Lazzarini
Dean of Arts, Celtic Studies, and Philosophy
Maynooth University
Ireland

> On 11 Sep 2018, at 20:35, Steven Yi <[hidden email]> wrote:
>
> Hi All,
>
> I'd like to share a project exploring one-dimensional celullar automata:
>
> http://kunstmusik.com/2018/09/11/cellular-automata-streams/
>
> The example does CA processing using standard Wolfram classifications,
> interpreting the rule number as an 8-bit value.  Unlike typical
> implementations, rather than have an array represent a step in a CA
> process iteration, the ca_stream opcode treats it as a pre-filled ring
> buffer/delay-line and processes the CA as values in a streaming
> fashion.  New values are emitted as well as used as input into the
> delay line.
>
> I haven't seen 1D CA implemented as a delay line before, though I also
> haven't spent too much time in this area of research. I think it might
> be interesting to allow input into the CA so that users might
> interactively "play" the CA (the feedback value could be as simple as
> bitwise-or of user input plus generated CA value).  The inspiration
> there being similar to how 2D CA systems often allow user painting of
> cells to interact with the system. I plan to create a web application
> to explore this.
>
> Cheers!
> steven
>
> Csound mailing list
> [hidden email]
> https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
> Send bugs reports to
>        https://github.com/csound/csound/issues
> Discussions of bugs and features can be posted here

Csound mailing list
[hidden email]
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here
Csound mailing list [hidden email] https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Reply | Threaded
Open this post in threaded view
|

Re: [Csnd] Cellular Automata Streams

Steven Yi
Thanks Rory and Victor! I'll plan to look into those as soon as I have a chance.

On Tue, Sep 11, 2018, 16:24 Rory Walsh <[hidden email]> wrote:
One of his books also features quite a lot on CA. Can't recall which one. The composing with computers one maybe? It's probably the same content as his dissertation. 

On Tue 11 Sep 2018, 20:48 Victor Lazzarini, <[hidden email]> wrote:
I think Eduardo Miranda's PhD thesis from the 90s was based on CA work. There may be papers from the time as well that you
can check out.

Victor Lazzarini
Dean of Arts, Celtic Studies, and Philosophy
Maynooth University
Ireland

> On 11 Sep 2018, at 20:35, Steven Yi <[hidden email]> wrote:
>
> Hi All,
>
> I'd like to share a project exploring one-dimensional celullar automata:
>
> http://kunstmusik.com/2018/09/11/cellular-automata-streams/
>
> The example does CA processing using standard Wolfram classifications,
> interpreting the rule number as an 8-bit value.  Unlike typical
> implementations, rather than have an array represent a step in a CA
> process iteration, the ca_stream opcode treats it as a pre-filled ring
> buffer/delay-line and processes the CA as values in a streaming
> fashion.  New values are emitted as well as used as input into the
> delay line.
>
> I haven't seen 1D CA implemented as a delay line before, though I also
> haven't spent too much time in this area of research. I think it might
> be interesting to allow input into the CA so that users might
> interactively "play" the CA (the feedback value could be as simple as
> bitwise-or of user input plus generated CA value).  The inspiration
> there being similar to how 2D CA systems often allow user painting of
> cells to interact with the system. I plan to create a web application
> to explore this.
>
> Cheers!
> steven
>
> Csound mailing list
> [hidden email]
> https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
> Send bugs reports to
>        https://github.com/csound/csound/issues
> Discussions of bugs and features can be posted here

Csound mailing list
[hidden email]
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here
Csound mailing list [hidden email] https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list [hidden email] https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Reply | Threaded
Open this post in threaded view
|

Re: [Csnd] Cellular Automata Streams

Oeyvind Brandtsegg-2
In reply to this post by Steven Yi
Oh, sounds nice. I wonder how implementing it as a delay line would be different than, say, as an array played back sequentially? Does the delay time vary dynamically, or is it statically equal the size of one generation? 

Den tir. 11. sep. 2018, 9.35 p.m. skrev Steven Yi <[hidden email]>:
Hi All,

I'd like to share a project exploring one-dimensional celullar automata:

http://kunstmusik.com/2018/09/11/cellular-automata-streams/

The example does CA processing using standard Wolfram classifications,
interpreting the rule number as an 8-bit value.  Unlike typical
implementations, rather than have an array represent a step in a CA
process iteration, the ca_stream opcode treats it as a pre-filled ring
buffer/delay-line and processes the CA as values in a streaming
fashion.  New values are emitted as well as used as input into the
delay line.

I haven't seen 1D CA implemented as a delay line before, though I also
haven't spent too much time in this area of research. I think it might
be interesting to allow input into the CA so that users might
interactively "play" the CA (the feedback value could be as simple as
bitwise-or of user input plus generated CA value).  The inspiration
there being similar to how 2D CA systems often allow user painting of
cells to interact with the system. I plan to create a web application
to explore this.

Cheers!
steven

Csound mailing list
[hidden email]
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here
Csound mailing list [hidden email] https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Reply | Threaded
Open this post in threaded view
|

Re: [Csnd] Cellular Automata Streams

Steven Yi
With the delay line there isn't the same boundary handling as one gets
with computing the first and last cells with the array with
generations. It should result in a slightly different sequence than
with the array played back sequentially, then triggering another
generation at end. The delay line here is fixed; I suppose it wouldn't
be too much trouble to make that vary dynamically.

I'm doing a bit of reading and saw CA being related to Linear Feedback
Shift Registers (LFSR)[1] in Wolfram's history of CA in New Kind of
Science.  I suppose this delay-line implementation is just that where
the linear function are the CA rules being applied.  (I don't know
much about LFSR's though!)

[1] - https://en.wikipedia.org/wiki/Linear-feedback_shift_register
On Tue, Sep 11, 2018 at 5:09 PM Oeyvind Brandtsegg <[hidden email]> wrote:

>
> Oh, sounds nice. I wonder how implementing it as a delay line would be different than, say, as an array played back sequentially? Does the delay time vary dynamically, or is it statically equal the size of one generation?
>
> Den tir. 11. sep. 2018, 9.35 p.m. skrev Steven Yi <[hidden email]>:
>>
>> Hi All,
>>
>> I'd like to share a project exploring one-dimensional celullar automata:
>>
>> http://kunstmusik.com/2018/09/11/cellular-automata-streams/
>>
>> The example does CA processing using standard Wolfram classifications,
>> interpreting the rule number as an 8-bit value.  Unlike typical
>> implementations, rather than have an array represent a step in a CA
>> process iteration, the ca_stream opcode treats it as a pre-filled ring
>> buffer/delay-line and processes the CA as values in a streaming
>> fashion.  New values are emitted as well as used as input into the
>> delay line.
>>
>> I haven't seen 1D CA implemented as a delay line before, though I also
>> haven't spent too much time in this area of research. I think it might
>> be interesting to allow input into the CA so that users might
>> interactively "play" the CA (the feedback value could be as simple as
>> bitwise-or of user input plus generated CA value).  The inspiration
>> there being similar to how 2D CA systems often allow user painting of
>> cells to interact with the system. I plan to create a web application
>> to explore this.
>>
>> Cheers!
>> steven
>>
>> Csound mailing list
>> [hidden email]
>> https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
>> Send bugs reports to
>>         https://github.com/csound/csound/issues
>> Discussions of bugs and features can be posted here
>
> Csound mailing list [hidden email] https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

Csound mailing list
[hidden email]
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here
Reply | Threaded
Open this post in threaded view
|

Re: [Csnd] Cellular Automata Streams

Oeyvind Brandtsegg-3
That sounds interesting indeed. Perhaps it could even be extended to work as a general filter/generator on an audio stream then? Audio input could be added with a gain control at some point in the delay line. And the amount of feedback controlling the randomness of the output. Perhaps the input could then be used inversely (to the feedback), to guide the tendency of the system towards a desired state? Maybe one would need a floating point value for each cell instead of the binary represenation, and that would certainly add to the processing cost. I recall that E.Miranda did some work with CA having cells of different colours, so the value of each cell would not necessarily even have to be one dimensional.

Den ons. 12. sep. 2018 kl. 00:07 skrev Steven Yi <[hidden email]>:
With the delay line there isn't the same boundary handling as one gets
with computing the first and last cells with the array with
generations. It should result in a slightly different sequence than
with the array played back sequentially, then triggering another
generation at end. The delay line here is fixed; I suppose it wouldn't
be too much trouble to make that vary dynamically.

I'm doing a bit of reading and saw CA being related to Linear Feedback
Shift Registers (LFSR)[1] in Wolfram's history of CA in New Kind of
Science.  I suppose this delay-line implementation is just that where
the linear function are the CA rules being applied.  (I don't know
much about LFSR's though!)

[1] - https://en.wikipedia.org/wiki/Linear-feedback_shift_register
On Tue, Sep 11, 2018 at 5:09 PM Oeyvind Brandtsegg <[hidden email]> wrote:
>
> Oh, sounds nice. I wonder how implementing it as a delay line would be different than, say, as an array played back sequentially? Does the delay time vary dynamically, or is it statically equal the size of one generation?
>
> Den tir. 11. sep. 2018, 9.35 p.m. skrev Steven Yi <[hidden email]>:
>>
>> Hi All,
>>
>> I'd like to share a project exploring one-dimensional celullar automata:
>>
>> http://kunstmusik.com/2018/09/11/cellular-automata-streams/
>>
>> The example does CA processing using standard Wolfram classifications,
>> interpreting the rule number as an 8-bit value.  Unlike typical
>> implementations, rather than have an array represent a step in a CA
>> process iteration, the ca_stream opcode treats it as a pre-filled ring
>> buffer/delay-line and processes the CA as values in a streaming
>> fashion.  New values are emitted as well as used as input into the
>> delay line.
>>
>> I haven't seen 1D CA implemented as a delay line before, though I also
>> haven't spent too much time in this area of research. I think it might
>> be interesting to allow input into the CA so that users might
>> interactively "play" the CA (the feedback value could be as simple as
>> bitwise-or of user input plus generated CA value).  The inspiration
>> there being similar to how 2D CA systems often allow user painting of
>> cells to interact with the system. I plan to create a web application
>> to explore this.
>>
>> Cheers!
>> steven
>>
>> Csound mailing list
>> [hidden email]
>> https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
>> Send bugs reports to
>>         https://github.com/csound/csound/issues
>> Discussions of bugs and features can be posted here
>
> Csound mailing list [hidden email] https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

Csound mailing list
[hidden email]
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here


--
Csound mailing list [hidden email] https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Reply | Threaded
Open this post in threaded view
|

Re: [Csnd] Cellular Automata Streams

Michael Gogins-2
In reply to this post by Steven Yi
Very clever!

Regards, 
Mike

On Tue, Sep 11, 2018, 15:35 Steven Yi <[hidden email]> wrote:
Hi All,

I'd like to share a project exploring one-dimensional celullar automata:

http://kunstmusik.com/2018/09/11/cellular-automata-streams/

The example does CA processing using standard Wolfram classifications,
interpreting the rule number as an 8-bit value.  Unlike typical
implementations, rather than have an array represent a step in a CA
process iteration, the ca_stream opcode treats it as a pre-filled ring
buffer/delay-line and processes the CA as values in a streaming
fashion.  New values are emitted as well as used as input into the
delay line.

I haven't seen 1D CA implemented as a delay line before, though I also
haven't spent too much time in this area of research. I think it might
be interesting to allow input into the CA so that users might
interactively "play" the CA (the feedback value could be as simple as
bitwise-or of user input plus generated CA value).  The inspiration
there being similar to how 2D CA systems often allow user painting of
cells to interact with the system. I plan to create a web application
to explore this.

Cheers!
steven

Csound mailing list
[hidden email]
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here
Csound mailing list [hidden email] https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Reply | Threaded
Open this post in threaded view
|

Re: [Csnd] Cellular Automata Streams

Doctor B
Steven,

Interesting and cool.  Thanks for sharing.

I look forward very much to the web app explorer you mention designing.

Best

-dB

PS.  How did your first week or two of classes go?  Great I am sure.  Best wishes.

_____________________________________________
Dr. Richard Boulanger
Professor of Electronic Production and Design
Professional Writing and Music Technology Division
Berklee College of Music
______________________________________________
President of Boulanger Labs - http://boulangerlabs.com
Author & Editor of The Csound Book - http://mitpress.mit.edu/books/csound-book
Author & Editor of The Audio Programming Book - http://mitpress.mit.edu/books/audio-programming-book
______________________________________________
about: 
http://www.boulangerlabs.com/#about
about: http://www.csounds.com/community/developers/dr-richard-boulanger/
music: http://www.csounds.com/community/developers/dr-richard-boulanger/dr-richard-boulanger-music/

______________________________________________
email: [hidden email]
facebook: https://www.facebook.com/richard.boulanger.58

On Wed, Sep 12, 2018 at 7:24 AM, Michael Gogins <[hidden email]> wrote:
Very clever!

Regards, 
Mike

On Tue, Sep 11, 2018, 15:35 Steven Yi <[hidden email]> wrote:
Hi All,

I'd like to share a project exploring one-dimensional celullar automata:

http://kunstmusik.com/2018/09/11/cellular-automata-streams/

The example does CA processing using standard Wolfram classifications,
interpreting the rule number as an 8-bit value.  Unlike typical
implementations, rather than have an array represent a step in a CA
process iteration, the ca_stream opcode treats it as a pre-filled ring
buffer/delay-line and processes the CA as values in a streaming
fashion.  New values are emitted as well as used as input into the
delay line.

I haven't seen 1D CA implemented as a delay line before, though I also
haven't spent too much time in this area of research. I think it might
be interesting to allow input into the CA so that users might
interactively "play" the CA (the feedback value could be as simple as
bitwise-or of user input plus generated CA value).  The inspiration
there being similar to how 2D CA systems often allow user painting of
cells to interact with the system. I plan to create a web application
to explore this.

Cheers!
steven

Csound mailing list
[hidden email]
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here
Csound mailing list [hidden email] https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

Csound mailing list [hidden email] https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here