Well while working on this project there were a lot of extra things I had to do [creating other versions, building failed parts, etc]. This is where I can share what those bits were
Firstly you will notice all the different build types, these come from where and how the code could run. The main one used for this project [internal] this states that the project is run internally from the Arduino. This version requires the use of the 'Max Internal Bridge' which uses Serial to UDP. UDP is needed as I could not use the Serial object directly in my M4L device. This may have a fix in the future which would get rid of the need for the Max patch. The final part is the M4L device which undates the visuals from the Arudinuno code. The only thing the M4L device does that "Completes" Cela is the sound generation (with the use of ADSR and the light sensor). This will need to be configured by the end user.
The second build type is [External] which uses the Max patch to do the grid update function. This version doesn't currently have a M4L device but it would most likely work in the same way as the internal one where we use a UDP bridge to connect from Max to M4L.
The final build type is [MIDI], the current Arduino that I'm using has the ability to send MIDI over both USB-C and Bluetooth however the USB-C function has been disabled internally so I'm only able to send Serial out of the Arduino. This could be changed in the future to work but I would have to look at what inputs are on the new controler. This version has the output in a 'MIDI' style using the byte orders and patterns for MIDI but as Serial. This should allow people to change this code to work for their devices quicker and easier.
I'm looking at creating some "Software" only versions and builds of Cela, which are the Max and M4L parts where they work independently. For a full understanding look at the table to below to see the current plan:
With every good project it's good to reflect on what you did and how it went. The original aims of Cela were:
To allow for a more life like musical instrument by self generation of patterns and notes
To be simple enough for anyone to pick up and play
To not feel static and allow for many sounds and effects from the instrument
Reviewing each of them, the first is semi achieved. The device follows the rules of the Game of Life which has a very unique updating effect. This does create patterns but would it be right to define it as life-like? That is where it becomes more of a stretch. The way to most achieve the life-like is to have a well created MIDI grid that it's updating. As discussed in the design section by creating a MIDI mapping that has a purpose built structure you can turn the semi chaos of the game of life into a well crafted melodic pattern.
For point two, the largest learning curve for people has been using the rules of the Game of Life to create sounds. Users tend to use random patterns or over think the rules. This means that it is not as intuitive to pick up as I would have liked however people were drawn to the device and did want to play around with it like a launchpad which was a big success.
For the final reflection, the device does not feel static in use as you can create a lot of sound types using the ADSR function and the light sensor. The only static part can be from the constant static states or die outs of cells from the rules of the Game of Life.
Overall the build is well built and works as designed with a small body profile. If I was to rebuild this device, I would work on the internal structure of the device to make it even thinner. I would also look at getting a MIDI out capable board to allow for a seamless integration into DAWs and other sound producing software.
I learned alot about better soldering techniques as well as how to use Rotary Encoders in Arduino. This was also my first Arduino project so learned lots about the different types of Arduinos and could have written the code better. This also streached me in my coding use of Max and had me using the array objects more. I had also never used the udp objects.
I have many other loose ends with this project which I have put into the table above so I know there is lots of things I still want to do before I finally call Cela complete.