ScriptSonic for generative ambient

ScriptSonic is an interesting application for iOS, which did not get the attention it deserved. Perhaps because when it launched it had a very high price (24.99$) but since april 2017 the price is much more reasonable (9.99$).

Basically, it allows to use a flavour of JavaScript to generate midi events which can be received by other midi-enabled applications in the iPad. It can also play samples and perform some simple processing on them, but in my opinion it is the midi side what makes it much more interesting.

The user interface is not familiar, and a bit difficult to use. The first thing you see is the "Projects" screen, from which you can load one of the 17 examples which come with it (and later, your own creations), each one visible as a thumbnail:


Selecting one and clicking "Import", or double tapping in one thumbnail, you arrive to the "Loop" screen, which is where the performance of the music happens.


It looks like a tracker, and indeed it is that, in some way. You can mute/unmute each track separately, play/stop, etc. But each cell in the tracker contains JavaScript code which is triggered when that cell is played. The code can generate midi events (note-on, note-off and CC), and to some special variables which represent the percentage of the time elapsed inside the cell, or in the track.

This view can alternate between the "Play" and "Edit" views. In "Play" view (image above) touching the cells can generate events which can be read from the javascript and used to change parameters, for example. In "Edit" view the javascript code in each cell is partially visible, and touching the cell opens an editor which allows you to change it (even in real time, for live-coding).




In addition, you have four extra "code buffers", not related to the main tracker, in which you can write any JavaScript and run it at any time. The code has the ability to create new cells/tracks in the main interface, and this way you can do meta-programming, i.e: to write javascript whose mission is to create the cells and to write in each one the javascript to be executed when played.



If this sounds confusing it is because it is! The concepts in this app are new, and weird. The interface is not very polished. Even if all revolves around writing code, the integrated editor is very primitive, and in addition it provides its own custom keyboard (visible in the figures above) which is rather unconfortable. You can switch to the standard iOS keyboard, but in iPad Pro it uses the "legacy keyboard" instead of the keyboard with the extra numbers row.

After the initial learning curve, and the possibilities begin to appear. Basically you can write code which can control any of the synthetizers in your iPad.

Examples

I wrote some code (which I can post if anyone is interested) to generate a set of random cells in the "Loop" section, each cell having a different (random) lenght and containing (meta-generated) javascript which either plays a note, or a rest. Each track is played at different speed, and this way, even if each track is looped and repeats from the beginning, the whole song never repeats, because the different speeds. This is the same idea used in "Bay" (see previous posts).


Note that the code only generates midi-on and midi-off events (you can select the channel for each one of them), but ScriptSonic itself do not generate sound. Depending on the synths running in the device, the sound can be very different. Using this same code, I created four different songs:

The first one uses TheraSynth (pads) and  ThumbJamb (flutes) as synts:



The second one uses the same synths, but different presets (piano en ThumbJam), and a longer reverb.


The third one uses also Nave synth to play the notes generated by ScriptSonic, and also ThumbJam percussions driven by Xynthesizr


Finally, I used the same code to send notes to Mersenne synth, but using its arpeggio function, which changes completly the feeling, because instead of long chords, produces short repetitions of the same notes in a rithmic semi-chaotic pattern (the randomness appears because sometimes theere are four notes to arpegiatte, but other times there are only two, or even a single note!). This is the most interesting one in my opinion.

Comments

Popular posts from this blog

Hello SonicPi!

Prologue.