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

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.batuhanbozkurt.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.

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.

- 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/

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.

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.

FreeSound Quark Update

In: News

22 Nov 2009

I’ve added a GUI front-end for my FreeSound Quark which makes things a lot easier in interactive coding / performing situations. So you may want to update… This front-end uses the FreeSound class to download files from the freesound.org network based on the criteria you provide and they are available to you on the fly while performing or composing… Just obtain / update the FreeSound Quark in your SC environment to get it.

fss

Music Releases…

In: Links| News| Personal

22 Nov 2009

I’m trying to release some of my old and new music I’ve been keeping for myself for no apparent reason. Still a work in progress… 2 new releases for now, check them out here: http://www.batuhanbozkurt.com/music

Not much info is available at this time, I’ll try to add some and even release my tools as I go…

Our sc140 album is featured in New Scientist and The Wire. Check out the articles:

http://thewire.co.uk/articles/3177/

http://www.newscientist.com/article/dn18173-best-of-twitter-tunes-album-released.html

And there is some new music, on the way… Stay (de)tuned.

I’ve added a new Quark to SuperCollider Quarks repository that allows you to access the multitouch data from supported MacBook (and MacBook Pro) touchpads. It needs the tongsengmod application I’ve forked from the tongseng project, but once tongsengmod is installed, integration is seamless. The details can be found in the help file. Here is a rudimentary example (the example code for this can also be found in the help file):

I’ve only tested this under Leopard 10.5.8 with a (late 2008) unibody MacBook Pro. Your mileage may vary under Snow Leopard and older MacBooks (I’m pretty sure that the latest MacBooks before the unibody models are also capable of using this), so please let me know if you encounter any problems, or get it to run on other systems.

About this site:

Hello there, I'm Batuhan Bozkurt, a sound artist, computer programmer and performer from Istanbul - Turkey. This is my personal hub site where I regularly try to blog and share my projects and interesting things I stumble upon. For more info about me please click here.