Here is an example patch maybe illustrating the previous remarks a bit (click on it to get a larger version). It uses three games of life, two running at audio rates for drone like sounds and the other one changing stuff and making a bit of percussion (one percussion thing being a modulation of the reverb time of a reverb circuit set to a small room size, the other uses noise burst driven trough a third-filter).
Edit: added a five minute audio recording from it.
Edit : added "click on it ..."
life_example_01.mp3
Description:
blue hell - Life example patch audio recording
Filesize:
4.58 MB
Viewed:
2086 Time(s)
life_example_01.png
Description:
Game of lif patch example
Filesize:
143.54 KB
Viewed:
643 Time(s)
This image has been reduced to fit the page. Click on it to enlarge.
Joined: Jan 14, 2010 Posts: 6058 Location: Moon Base
Audio files: 728
Posted: Fri Apr 12, 2019 11:51 am Post subject:
I am doing some more tests with it
The first thing I did was adding a midi keyboard as input. This presented a problem as there are 128 midi keys but I only have an 8x8 grid
(64 keys). I could limit the amount of octaves and I might do that later but visually it makes more sense to have 1 octave represented as
1 row on the LED matrix. The bottom row being the lowest octave and the top row the highest octave. This still limits it to 8 octaves but
that's already a very wide range. Musically it's probably better to limit it to a smaller range.
With 8 columns that means I can only use 8 notes per octave which is not so bad because it sound better anyway than using all the notes.
I limited the notes to a scale and also did this for the midi input (prevents me from pressing the 'wrong' keys ). So each cell is a note which
I can turn on with a midi keyboard and with my current code it will stay on as long as the key is pressed and if you release the key it will
stay on untill the next life generation, in which case it might stay on or turn off (live/die).
The next thing is how to 'play' the cells. You can't play all of them at once,. well I guess you could but that's like smashing a lot of keys at once
and doesn't sound very musical. At the moment it just steps through them in order and every 8 steps there is a 50% chance that it changes
direction. A new generation gets created after 64 steps. You can set this much lower (and I want to make it adjustable) but this means it will also
die out much quicker without any new input. The result is that at the moment it will often repeat the keys you played but in order (up/down)
which is not unlike a standard arpeggiator. I do want to add a random option of course
I noticed a slight 'problem' with the way the keys are mapped though which I already expected. If you only play keys in one octave than unless
it has 3 sequential notes it'll die out in the next generation. So you have to play across a couple of octaves in a short time for anything interesting
to happen. The keyboard I am currently using only has 2 octaves, at least physical keys it has buttons to change octaves, so that makes it a bit
inconvenient. It might not be a bad idea to limit the amount of octaves and link them to multiple rows maybe in a different (reversed ?) order.
One thing I'd really like to add is scale detection. I don't know how hard that is going to be but the idea is to remember the last couple of keys that
are pressed (I think 4 might be enough) and determine a scale from that. so instead of having a fixed scale as I have now it will adjust to whatever
you play. At the moment both the midi keyboard and game of life circuit control the same sound engine (Proteus 2000) but I did a quick test and it
gets a lot more interesting if you use the midi output of another synth (in my case the KORG DW6000).
Joined: Jan 14, 2010 Posts: 6058 Location: Moon Base
Audio files: 728
Posted: Fri Apr 12, 2019 12:26 pm Post subject:
..,a couple minutes later.
Here's a demo. I added a bass note that plays every 4 steps with a length of 2 steps. The generated notes all have a length of 1 step.
I didn't add any velocity variations but it does use the velocity of the midi input for non-generated notes. I started with playing single
notes which you can hear it repeat and then added more notes in a shorter timespan. After the 3:50 mark I just let it run doing its
own thing.
Use sorting .. yes .. it is what an arpeggiator set into "low to high" mode (and variations thereof) would have to do .. and that is a nice thing to have yup
o .. after seeing the video and hearing it .. sorting as a sound generator .. hmm .. need to think about that
Wow, I had forgotten about those videos! Really cool. Musically, the bogosort is my favorite. Lo and behold, it's also one of the most inefficient algorithms.
Therefore, music is inefficient?
Many years ago, part of my job every month was to use the radix sort physically on a few thousand punch cards. Well, there was a machine that read one of the digits and divided them into 10 slots, then one had to take each pile and sort those, etc.
Joined: Jan 14, 2010 Posts: 6058 Location: Moon Base
Audio files: 728
Posted: Sat Apr 27, 2019 4:08 pm Post subject:
Auto scaler
I've been working a bit on the auto scaler function and I now have something that is working. What it does is create a scale based on the notes
it receives on the MIDI input. This scale is then used to create MIDI notes generated by the Game of Life. It also uses the MIDI input to turn cells
on/off. The initial idea was to look at the last played notes and compare them with stored scales to see what fits but I realized it would be easier to
use the notes themselves. I made it a bit more complex though.
I am using an 8x8 LED matrix which is also the size of the grid for the cells. Visually it makes sense to use a row per octave so that limits the
maximum amount of notes to 8. I could just look at the MIDI input and use the last 8 received notes but if you repeat the same note a couple
of times that would limit the scale. So if you repeat the same note 8 or more times the scale would end up being just that 1 note. To get around
this I had to look at the last played notes that are different from eachother. Furthermore, keys that are held down should have priority over keys
that have been released. This way you could hold down a chord and play a melody and the notes from the chord will always be used in the scale.
Currently it stores the last 16 received notes which I think should be enough as I only have 10 fingers. Ok I could use my feet or something else
but I doubt I will ever have more than 16 keys pressed at the same time. Also, the octave of a note doesn't matter for creating the scale as that
will only span 1 octave. For example when C5 has been pressed before and C2 gets pressed it will either delete C5 if it had already been released
or move it down the list of stored notes if it is still being held down.
Then there is the LED display. For displaying cells generated by the Game of Life it doesn't matter what keys are pressed but I am also displaying
the midi notes on it. If a row would have 12 LEDs it would be easy to just map each note to an LED but I only have 8. When I used a fixed scale
of 8 notes before it was still easy to do but now the scale constantly changes. This also means that the keys no longer have a fixed position on
the display but they have to be mapped according to the created scale.
It all started to get a bit confusing while coding as I had to keep track of a bunch of things so to make it easier I just wrote down some examples
of keys being pressed and released and what results I wanted. From there it got a bit easier to figure out how to get the correct results but it still
made my head hurt. (I attached the example file)
I also added some other simple features (and have ideas for more):
- adjustable scale length. Eventhough notes are played back over several octaves the scale only spans 1 octave and 8 notes is a bit much and
doesn't sound that musical. 7 would make more sense anyway but 4 sounds a lot nicer especially when used to add an extra melody/sequence
on top of something else (which is what I currently want to use it for). When the scale lenght is smaller than 8 it just repeats the notes, so for
example when set to 5 you get notes 1 2 3 4 5 1 2 3 from the scale. I also just added some extra code so I can adjust the scale length with a
CC message so I can make use of the knobs build into my MID keyboard.
- an option to use all the cells or only the live cells. The way it currently generates notes is by scanning the matrix and each cell corresponds to
a note. When all notes are used it will generate pauses between notes, when only live cells are used it will be a constant stream.
- different playback options. count down/count up/random direction/random cell.
- custom octave mapping for playback. One row is still 1 octave but instead of using a range of 8 octaves I can now adjust which octave I want
to use for each row. (could easily make this dynamic aswell)
- easy custom rules set. It was already pretty easy to change it in the code but I now did it with an array which states what rule needs to be
applied according to the number of live neighbouring cells. Besides being dead, alive or don't change I also added an invert option. I would
like to use some hardware to control it but I am not sure yet what would be the best way to do it. The most straight on approach would be
to use 8 (rotary) switches with 4 positions or I could use 16 toggle switches. I've also been thinking about adding an LCD display in which case
I could do it with some sort of menu and just 1 rotary encoder w/ switch.
- MIDI thru on/off. Turning it off is useful when using another synth as MIDI input so it will only play back generated notes and not the notes
it receives. When midi thru is on it will skip generated notes if they are the same as keys that are being held down otherwise it would retrigger
those notes or turn them off.
Didnt read too well yet, and didnt listen either .. but seems like you made it into a listening/improvisation thingie, cool
Will check it out better later on .. been making a 12 x 12 life thingie here and there is still room for change on that one .. but currently working on an yet another sequencer with selectable patterns.
Joined: Jan 14, 2010 Posts: 6058 Location: Moon Base
Audio files: 728
Posted: Sun Apr 28, 2019 10:19 am Post subject:
Blue Hell wrote:
seems like you made it into a listening/improvisation thingie, cool
yep, that's pretty much what I am making at the moment .
The game of Life section is actually more a silly feature with some nice visuals than anything else.
I would probably get similar results with just creating random cell maps. but it's fun!
speaking of fun,. I mapped 3 more knobs to a function and played around with some drum sounds.
Some nice example audio, now reading all your text .. which already resulted in me starting a new 'learning quantizer' module .. so to finish reading may take a while
I could not guess the classical tune being used .. it was pretty whistable tho
The game of Life section is actually more a silly feature with some nice visuals than anything else.
I would probably get similar results with just creating random cell maps. but it's fun!
Not sure .. I'd think it would tend to do "sometheng near" which seems interesting ... still would have to make a "learning life" thingie to test that idea ... but dunno .. eight octaves .. thats a fokking lot ...and also already have four or five or six module ideas from this to be worked out ...
A split module, splitting out an incoming note into its note and octave value .. and the a combiner to do the reverse thing. A queue module which keeps the last N clocked in values and then selects from those with a control input .. maybe with a cross fade option. Then there is the "find nearest" module also clocking in N values from a learn & clock input .. and then it will find the best fit .. which would be an "auto quantizer" without pre-quantization. An inversion module to invert a note within its octave ... and then the auto quantizer I meantioned before and which is now finished it seems.
I always get so creative when I really need to do taxes
(but I did'm today, one day early )
Joined: Jan 14, 2010 Posts: 6058 Location: Moon Base
Audio files: 728
Posted: Thu May 02, 2019 12:45 pm Post subject:
Blue Hell wrote:
Not sure .. I'd think it would tend to do "sometheng near" which seems interesting ...
yeah, I guess you're right, a bit like a 2D shiftregister. Of course it also depends on how you use the data. Initially I was just counting
the amount of live cells and the result of that doesn't have any correlation with the position of the cells themselves. (themcellves ?).
Right now I am reading them in sequence but I can adjust after how many steps the next generation is created. It's one of the functions
I mapped to a knob and it goes down to 0 which halts it completely resulting in a repeating sequence. The smaller the amount of steps
between generations, the more random it becomes.
Great that you are getting something out of it, looks like you are taking a similar approach with those modules as I did but,. modular.
Actually, I guess I am doing it modular too but without a fancy gui (and far less modules).
Now that I have the autoscale part working I want to go back to using random maps instead of the MIDI input to turn on cells. It does work
(and I will keep it as an option) but it's a bit tricky to get it started with a 2 octave keyboard. I like how it works with midi files though and
if I'd make another one I could link them together through MIDI. _________________ "My perf, it's full of holes!" SoundCloudBandCampMixCloudTwitchYouTube The Golden Shrimp Guild
Trying 12 x 6 .. to see how that works out .. with an input that will set cells according to note number based on a a twelve tone octave .. the step input will move over the cells outputting notes based on the x/y coordinate the step is on.
Joined: Jan 14, 2010 Posts: 6058 Location: Moon Base
Audio files: 728
Posted: Fri May 03, 2019 4:39 pm Post subject:
sounds like that's working
Quote:
The low notes can go three times as fast as the high sequenced notes (red ChebGen module does the rate multiplication).
I have a feature with multiplications of 2 (1x,2x,4x,8x,16x,..) or actually they are divisions. The multiplication factor is picked
at random and the range can be adjusted with a knob. So depending on the setting of the knob it will pick from [1x] (fully CCW),
[1x, 2x], [1x, 2x, 4x] etc..
ChebGen made me think of Chebyshev which made me think that multiplication could be made frequency dependend.
here's how my version currently looks :
MIDI GoL - 20190503.jpg
Description:
Filesize:
217.37 KB
Viewed:
382 Time(s)
This image has been reduced to fit the page. Click on it to enlarge.
so .. multiplying a sine by itself and then doing some scaling results in in a cosinus, or a 'sine like' wave, at double the frequency. The chebyshev polynomials extend that idea to get tripple, quadruple etc. frequencies. There are two sorts of Chebyshev polynomials .. I always forget if I need the first or the second kind ... but it's one of 'm
This can be done for saw waves and for triangluar waves too with some similar trickery, but .. NOT .. for squares
The ChebGen module does rate multipliplication using these ideas, so yes Chebyshev.
BTW .. That pic was an experiment with an old camera that i removed the infra red filter from .. erm .. filing and grinding .. pretty roughly ... .. and then did some image processing to see if I could trace movement . .the output of that gave some colored blocks to show where warm things moved .. now that could be a nice input for a life thing
Joined: Jan 14, 2010 Posts: 6058 Location: Moon Base
Audio files: 728
Posted: Fri May 03, 2019 5:44 pm Post subject:
oh I found it on your website (don't see it anymore) and yeah those blocks made me think of using that as input.
Hadn't thought about infrared, was already wondering how it tracked, neat idea. _________________ "My perf, it's full of holes!" SoundCloudBandCampMixCloudTwitchYouTube The Golden Shrimp Guild
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum