Circuli – A Generative Ambient Sound Instrument

You can play with it freely by clicking here.

Here is an action video (for the iOS version):

  • Circles grow at a constant rate.
  • No two circle can overlap.
  • Bigger circle pushes and shrinks smaller circle when in contact.
  • A circle “pops” and makes a sound when its boundary intersects with the center of another circle.
  • The pitch of the sound is determined by the position of the circle on the background. Bigger the hole, higher the pitch.
  • The envelope of the produced sound is determined by a number of parameters including final circle size and time of interaction between two involved circles.

Have fun!

2 Comments

Marc Weidenbaum of Disquiet Interviewed Me About Otomata and Generative Art

Wanted to save this for a higher traffic time. :)

Here is an interview I gave to Disquiet about Otomata and Generative Art in general:

http://disquiet.com/2011/05/17/batuhan-bozkurt-otomata-earlsap/

Tagged ,
1 Comment

Otomata gets an update, and now has an iOS version

Hi all,

Since its release in this website, Otomata, the generative musical toy has gained significant interest. Millions of people visited the site and played with it. I got so many mails, requests, thanks, and I’ve seen so much cool stuff people did with it and all makes me happy.

Today Otomata got an update. You can play with the new version at the exact same URL (no worries, old pieces still work), go here:
http://batu.in/otomata

New version has an entirely new (and hopefully better) GUI, 40 cool sound scales to play with, settable tempo, and recording support (you can record your pieces as audio files from the online application and get them to your computer).

Oh, and Otomata now has an iOS version so you can play with it in your iPhones, iPods and iPads on the go. You can share your pieces through twitter and facebook with the iOS app for the world to listen!


Click here to get the iOS version from iTunes store!

As usual, here is an action video:

As the developer of Otomata, I should say that it has been a great ride so far. Thanks for all your support, and have fun!

Tagged , , , , , ,
9 Comments

Otomata – Online Generative Music Instrument

A new audio toy is online. Click here to play with it in your browser. Above is an action video.

For the past few months, I’ve been developing a DSP library in HaXe programming language which can target Adobe Flash (ActionScript), C++ and JavaScript code (and others). It has high quality oscillators filters and all sorts of useful UGens within it and I’m planning to open source it sometime in the future. Now that it is in a more or less working state, I’ve decided to build some instruments that use it and Otomata is one of them.

The Idea:

Otomata is a generative sequencer. It employs a cellular automaton type logic I’ve devised to produce sound events.

Each alive cell has 4 states: Up, right, down, left. at each cycle, the cells move themselves in the direction of their internal states. If any cell encounters a wall, it triggers a pitched sound whose frequency is determined by the xy position of collision, and the cell reverses its direction. If a cell encounters another cell on its way, it turns itself clockwise.

This set of rules produces chaotic results in some settings, therefore you can end up with never repeating, gradually evolving sequences. Go add some cells, change their orientation by clicking on them, and press play, experiment, have fun.

If you encounter something you like, just press “Copy Piece Link” and save it somewhere, or better, share it!

Tagged , , ,
25 Comments

My SuperCollider Plug-Ins (UGens)

After the release of FingerNeedle, I’ve received several notices and mails about the availability of my SC3 UGen binaries. So I’ve decided to make the binaries (for Mac OS X, currently) available at my github page.

Grab the binaries from here:

http://github.com/batuhan/SCPlugins/downloads

4 Comments

FingerNeedle (previously known as TouchNet) is released!

Site has been silent for some time… Things are gonna change, hopefully.

I’ve finished the code cleanup and documentation for an instrument which I’ve announced before on sc-users mailing list. It was named as TouchNet, but I’ve decided to separate the “Touch sampler” and “Net” parts so now it’s called “FingerNeedle”. Download link is at the bottom of this post.

A video performance from the TouchNet days (with my FreeSound Quark), watch it in fullscreen please:

FingerNeedle is a gesture based instrument that is operated from a multi-touch enabled surface. In essence, it is a sampler instrument which converts sounds into square images and the performer plays rectangular portions from these images with touch. The images derived from the sounds give visual feedback to the performer about where to touch on the surface and what portion of the sound to use as a source. Unlike the standard waveform visualization, the performer is able to visually estimate the spectral characteristics of a sound and its change over time from the created image. FingerNeedle allows usage of several layers of sounds to be controlled and played back simultaneously and borrows the idea of “gesture recording” that is also present in my deQuencher[1] instrument. The recorded gestures can be post processed to be slowed down and sped up dynamically.

The system is able to load uncompressed 16 bit mono sounds with any sample rate. A single sample in a 16 bit sound file can have 2^16 distinct values. The conversion system codes this range to shades of gray, where the lowest possible value is black and the highest possible value is white (loosely analogous with the grooves on a gramophone record), silence is pure gray, and a full amplitude sine wave is a continuous gradient between the shades of gray. Therefore, every pixel represents a single sample of a sound file. The samples are arranged inside the image in left to right, top to bottom order sequentially. This means that an image window with 800×800 resolution can contain 640000 samples (and pixels), which equals to approximately 14.5 seconds of mono audio at 44.1kHz sampling rate.

This visualization scheme allows one to predict the spectra as well as the dynamic range from the image before hearing it the first time. This visualization scheme aids the performance and also defines the interaction method with the instrument.

When a touch event is sensed, the instrument gets the blob size and multiplies its width and height with dynamically changeable multipliers. After that, a transparent rectangle becomes visible on the sound-image. The instrument loops/plays the highlighted portion of the sound from the preloaded buffer.

To play a rectangular region from a buffer, I’ve developed a unit generator called “NeedleRect” that gets x/y, width and height input and its output is used as an index for another unit reading from a preloaded buffer.

[1]: http://www.earslap.com/projectslab/dequencher

FingerNeedle currently requires:

  • A MacBook / MacBook Pro with a multitouch trackpad.
  • A recent copy of BatUGens from sc-plugins project which includes the NeedleRect UGen. (The current binaries listed on the sc-plugins site do not include this UGen. You’ll need to compile it from source.)
  • BatLib Quark
  • MultiTouchPad Quark

And recommended for fun: FreeSound Quark.

Download FingerNeedle from my github SCThings page:

http://github.com/batuhan/SCThings/downloads

Please let me know if you try it and encounter any problems.

Tagged , ,
3 Comments

NatureToolkit Update: Genetic Algorithms and Parameter Estimation for SuperCollider

I’ve updated my NatureToolkit Quark with two new classes. GAWorkbench and GAPmatch. As usual, full documentation is provided with examples so be sure to check them out.

GAWorkbench:

This is a general purpose and modular genetic algorithm class for SuperCollider. Genetic algorithm is a search technique used for finding approximate solutions to search and optimization problems. They use techniques derived from evolutionary biology like inheritance, mutation, (artificial) selection and crossover.

GAWorkbench is a general purpose class that provides an easy interface to interact with your data to be used with GA’s. It can be used for solving general most probably music related computational search problems and can also be used for exploring sound spaces, finding suitable parameters for synthesis networks etc.

GAPmatch:

GAPmatch is a fast parameter estimation system that intends to work at near-interactive speeds to aid sound design and maybe live performances. To achieve this, it uses a fast search technique called “Genetic Algorithm” which mimics the evolutionary continuum that we observe in nature. It wraps a GAWorkbench instance (described above) for this specific purpose.

In terms of its functionality in the SC environment, parameter estimation means this: You have a SynthDef that is  known to be capable of synthesizing a particular type of sound, but finding the right parameters is a time consuming and in some situations a tedious task. Or you have built a raw SynthDef for a synthesis algorithm which exposes a few dozens of parameters and it’s impossible to conduct them at that state. Or you are trying to tune a physical modelling instrument… Situations can vary. This parameter estimation system basically takes an input sound, an input SynthDef and its parameter ranges, and it tries to find the parameters for this particular synthesizer so that the output of the synth is faithful to the attributes of your input sound. From that stage on, you can alter the parameters by yourself to change the synthesized sound in various ways.

Execution of genetic algorithms demands heavy computing resources, and this class can parallelize the task (the fitness calculation stage) across multiple scservers on your local machine (to utilize multiple CPU cores on your machine) and networked machines.

An article I’ve submitted for peer review that describes the inner workings of the system in depth will be provided when I have the permission to do so. Until then, the documentation and sources should provide necessary info.

(You need to have BatUGens and BatPVUgens installed from sc3-plugins for this to work)

I’ve also gone ahead and recorded a little screencast to introduce GAWorkbench and show GAPmatch it in action:

Let me know what you think of it.

Tagged , , ,
15 Comments

New Music Release: Laconicism

- Laconicism – is a collection of procedural and interactive sound compositions.

The pieces are not finalized onto a static medium.

Instead, the collection is distributed as a computer software so that the works can be experienced in their intended multidimensional forms.

Click here for more info about my motivations, and the underlying mechanism.

Downloads:

Mac OS X: Download from here (4.2MB). Download and run, tested on Leopard and Snow Leopard. Should also work on Tiger (and on older PPC machines, though not tested).

Other platforms: Download SuperCollider source files from here. Unfortunately, Laconicism isn’t available as a standalone application for other platforms. See the ReadMe file inside the source archive for instructions on how to install and run. Some of the pieces do not work as intended on Windows yet, hopefully these will be fixed as SuperCollider matures further on the Windows platform.

It looks and feels like:

This collection of sound entities are presented to you with a simple idea in mind: “Organized Sound”, once realized by its creator for distribution, does not necessarily have to be locked to definite micro or macro event sequences in time domain. This apparent rigidity of distributed sound is in fact, a “transmission loss” between the composer and listener; and is primarily caused by the limitations of our soon to be obsolete old and static sound distribution mediums.

The works presented in this software are compositions and/or designs of “sound processes”, which provide a recipe for computers to generate sounds utilizing various sound synthesis techniques on the fly. These are not designs of “exactness and perfection”, instead, I merely define limits for a sound-event space.

The listener is not only free to experience the process compositions presented by the composer, but can also participate. Each piece has different number of controls (embedded into the synthesis graphs in a “circuit-bending” fashion), whose functions are not really obvious until you start to play with them. The listener is free to observe other dimensions of the event space by altering the values of these controls, relying on listening and intuition (a feedback loop). The aforementioned transformation loss disappears, and another form of communication emerges between the composer, listener and the piece.

(c) Batuhan Bozkurt – 2009
This work (music) is distributed under CC BY-NC-SA 3 license:

http://creativecommons.org/licenses/by-nc-sa/3.0/

Tagged , , ,
10 Comments

MoltenMaster and Distribution of Generative Art

First, the news: I’ve released a SuperCollider Quark (called MoltenMaster) that attempts to simplify the playback organization (synchronization of resource allocation, playback initialization and resource deallocation across multiple pieces compiled in a bundle) of generative (and/or interactive) music/media pieces.

Generativity and interactivity in art is a hot topic and it is only going to get hotter. When such a work is experienced by the audience in a live setting (a concert or an installation), the artist – audience communication is somewhat lossless; the artist composes a process, and the result is not necessarily a static entity on spatial or temporal domains. The output is the result of the composed process and if there is any external and/or stochastic input present in the system, the output is different in every iteration. It is the limits of these differences that creates the composition. It’s not about the single output anymore (it actually never was, we had no other choice).

This situation challenges the standard notions of the society about what an artwork really is. To give a simple example, some people still discuss if computer games can be considered as artworks or not (let me point out here that I’m not a gamer at all). An artist draws a gorgeous chapel on canvas and it is considered as an artwork by default whereas another artist(s) creates a just as gorgeous environment using a computer where you can move around and interact with the surroundings (which arguably creates stronger emotional attachment, and more effective communication) but the value other than entertainment quality instantly becomes questionable.

In my opinion, discussions over “artistic quality” of some creation is a vain endeavor to begin with, but it seems this kind of controversy is needed to force people to think about these issues (and creating these types of controversies are in part, responsibility of artists), and my hope is that this perceptional distortion caused by the dominance of our old and static mediums will get reformed over time. This won’t happen by itself for sure.

Anyway, back to the core of our topic… The dominating mediums for media distribution for the past century was all static mediums… Wax cylinders, vinyl recordings, cassettes, audio CD‘s, video DVD‘s and so on… All the legible interaction these mediums provided for us was skipping back and forth, as the content inside them was static in nature. That means they’ve gone “Gold Master” at some stage in production and all you can do is to experience that static entity in different environments, and your interaction opportunities are rather limited. On the other hand, tools for procedural content generation, creation and effective/intuitive usage of generative and emergent processes in art is becoming a standard part of artists workflow. But when things come to distribution stage, we simply render one iteration of the work on a static file and burn it to a CD or DVD or put it somewhere up for download, whereas the original ideas of the artist can provide different variations of the process in every iteration. This is a very huge transmission loss between the artist and audience. And also there is this interactivity issue; for example in music, the listener can already set the volume, or EQ levels to his or her own hearts content, so why can’t we provide more controls that defines the shape of the generated structures in more fundamental ways? I’m talking about the same controls the artist tweaks to tune his or her own creation. The idea of this type of interaction might not be the preferred choice for everyone for sure, but we can still have it, it makes no harm.

One of the main things that is preventing us from doing so is that our current media players still follow the “static medium” paradigm despite virtually all of them being computers capable of providing interaction on aforementioned levels. MoltenMaster (as opposed to Golden Master) tries to provide a simple back-end to the SuperCollider environment that tries to simplify and encourage creation of computer programs that exhibit the behavior that I’ve been talking about.

Every MoltenMaster instance is a collection of pieces, each piece being an instance of MoltenPiece. Each MoltenPiece has slots for an allocator, player and deallocator that are to be filled by the composer. The MoltenMaster system tries to provide the synchronization of these processes to provide a familiar media player interface. Then there is the MoltenPlayer, a simple GUI application that plays back MoltenMasters which can be used as a base for creating more advanced and interactive playback interfaces.

This system, obviously will only work in our regular computers for now. There is some more ground to be covered before the usage of these systems become painless for composing and distributing works; and some more time is needed for them to find their ways into our pocket computers / media players in somewhat natural ways. We shouldn’t forget though that we are living in exponential times, this is my own stab to the issue.

I’ll be releasing a work in a day or two that uses this system to procedurally create sound content realtime and provide controls for some of my sound creations/pieces.

Tagged ,
2 Comments

New Quark: NatureToolkit

Release frenzy today… But I have my reasons. NatureToolkit is a Quark that will include classes and frameworks that will hopefully make life easier for those, whose artistic media work tends to get inspiration from “natural processes”.

The only included class right now is LSys (but there is more to come! See bottom of this post…) which is a complete “Lindenmayer Systems” implementation for SuperCollider. There are various other “string rewriting” systems available for SC right now, but details of real L-Systems are more complicated. The rewriting system needs to be aware of branching points when context sensitivity comes into play for example, and this class supports them. In short, this class does parallel rewriting, supports context free, context sensitive, stochastic and parametric rulesets. When working with context sensitive rules in a bracketed L-system, this class takes axial node points and segment neighborhood into account (which is not represented in the sequential string representation naturally). Full documentation is included and there is an accompanying LSPlant class that interprets the produced strings using the standard Turtle Graphics method so it helps you visualize the produced data.

I’m more interested in the musical applications of L-Systems. The “self similarity” on various domains of artistic works is often overlooked, but it can be observed in many time scales with detailed inspection (or sometimes it is very obvious and taken for granted; the fugue form / technique is a good starting point).

For an intro on L-Systems, consult here first, then I suggest you grab a copy of Algorithmic Beauty of Plants (Przemyslaw Prusinkiewicz – Aristid Lindenmayer) from here.

For musical applications of L-systems, I suggest you go read the master’s thesis of Stelios Manousakis: Musical L-Systems that discusses applications of L-Systems down from sample scale to macro scales. There also is a body of past research on this area, you may want to search some databases.

Here is some not-so-interesting visualizations (the code for these is also included in the documentation) that I’ve created while I was developing the class to see if things were really working as they should. Click on the images to enlarge.

Context free examples:

Islands and Lakes from Algorithmic Beauty of Plants Fig 1.8:

Quadratic Snowflake from A.B.O.P. Fig 1.7b:

Branching Examples:

Tree from A.B.O.P. Fig 1.24c:

Tree from A.B.O.P. Fig 1.24f:

Stochastic Branches:

Stochastic rules lets you define a single string and stochastic rules which create different yet coherent products each time. The following 3 trees were all generated from the same axiom and rules (A.B.O.P. Fig. 1.27, click on images to enlarge):

Parametric Systems:

Parametric L-Systems allows you to define axioms with parametric arguments and the parallel rewriting system makes them interact. Really complex yet self-similar forms can be crafted with them! The following 5 images are taken from 1 to 5 iterations of the classic “Row of Trees” example. A simple axiom can yield to complex self similar structs:

Context Sensitive L-Systems with Brackets (Branches):

This is where the string rewriting mechanism should take axial nodes and branch neighborhood into account to work properly. Really sophisticated structures are possible by using signal propagation mechanisms of L-Systems.

Examples are Fig 1.31 (a, b, c, d) from A.B.O.P:

Other notes:

As mentioned earlier, the examples here are Turtle Graphics interpretations of generated strings, as L-Systems were first developed for algorithmically generating (and observing growth of) plant structures. Actually this is the direct visual representation of generated strings, but one can use it in many different contexts or visualizations. I’m especially interested on their applications for musical form and structure, the generated strings are really easy to interpret and use on different contexts. I hope others will also find them of use, you can get NatureToolkit from the SC Quarks repository, as usual.

More to Come:

NatureToolkit is far from complete with an L-System implementation of course. I’ve also developed a general purpose fully modular Genetic Algorithm framework for SC as well as an automatic parameter matching system (finding suitable parameters (inferred from an input sound) for a given synthesizer topology) utilizing the framework (the parameter matching system can use multiple processing cores of a computer and can also parallelize the tasks across multiple computers for analysis so it is also suitable for real-time use yay!), but the documentation isn’t complete yet and it is accompanied by a paper I’ve submitted to EvoMUSART 2010 conference (European Event on Evolutionary and Biologically Inspired Music, Sound, Art and Design) and I’m not allowed to publish it publicly yet. You can still have a test drive if you are interested, just get the sources from my github. I’ll be happy to give support for the adventurous spirits out there.

Tagged , ,
2 Comments
  • What

    I am Batuhan Bozkurt.

    Things involving computational (sound) art, and my work swirling around the subject are here.

    Follow my RSS feed if you care.

  • Find me