Programming

Putting the funk into functions

In 2005 I started programming SuperCollider. With some previous experience in scripting and web programming, SuperCollider opened the doors for audio programming and more complex languages that I later learned and used. Being an electronic musician focused on programming music, I am constantly in touch with new languages and environment made for this purpose. I'm always open to try and learn new languages. Some of the tools and languages I've used before are Java (Processing), Lua (Löve2D, LuaAV), C++ (Cinder), Python, Ruby (SonicPi), LISP, Scheme (extempore), FAUST, JavaScript (Node.js), Objective-C and Swift (iOS) and of course some shell scripting and basic linux server functionality. You will find a list of some projects I've made related to programming, as well as some projects I've mentored in my time as research assistant at the IMWI in Karlsruhe. You can see some of my projects in GitHub and my professional profile at LinkedIn.

Projects

  • LuaAV Libraries

  • A set of classes and functions I wrote for using with LuaAV.

  • SuperCollider Extensions

  • I've been using SuperCollider since 2005 and apart from the "Movie Markers" quark and an addition to the "Björklund" quark, I've been very active in the community and also have my set of classes and extensions for private use, but they are also available on GitHub.

  • Audio Apps for iOS

  • As a teacher at the HfM Karlsruhe, I taught audio programming for iOS. We did some basic apps using Objective-C (and Swift in the last course) and the CoreAudio framework for doing sound synthesis. We also used Cinder for the more experienced C++ users and to create audiovisual apps with multitouch input without too much effort.

  • TENS Framework

  • A collaboration between Patrick Borgeat an me, we did a series of extensions for controlling the TENS device via serial port. We emphasized the importance of being able to reexecute the code and reload gestures to it, without restarting the device in order to facilitate rehearsals and also performances. The framework includes the classes as well as a GUI for testing and controlling the device.

  • Live Coding

  • In 2006, inspired by Julian Rohrhuber and Alberto de Campo, I started using SuperCollider not only as a tool for programming sounds, but also as a real-time instrument. I started live coding on a daily basis until I started getting performances, specially with my band Benoît and the Mandelbrots. This innovative way of improvising electronic music even got us an honorary mention at the Ars Electronica. My interest in improvising music was transfered and went to the programming, and I feel very confortable using interpreted languages where I can be creative with the code in real time. The write-execute-analyze feedback loop is much tighter with live coding, allowing faster results in programming, and allows me to make music with programming in real time.

    I also wrote an extension for Renoise (ReSeq), allowing to code live the musical content of the tracks. There is a demo video here. I also stream from time to time my improvisations in Twitch's music channel.

  • Sonification of Ultrasonic Data for 3D Loudspeaker Array

  • A cooperation between the KIT and the IMWI. We took ultrasonic data for 3D-imaging of breast cancer patients, and sonificated if on a 64 loudspeakers array in audible range. The results weren't specifically for medicinal purpose, but more for using this large ammounts of data for artistic means. We did some experiments and publicated the result at the ICAD conference.

  • Inventópolis Multimedia Consulting

  • Since the foundation of Inventopolis, I've been working as a consultant and advisor in technical and software matters. This institution gives workshops for children and teenagers about technology and science. I've worked with them advising on the musical and audio workshops.

Supervision

Projects realized by students under my supervision.

  • Lua for audio synthesis
    Lua, C++, Objective-C

  • Bachelor's thesis on using Lua for scripting synth graphs on mobile devices. The project was succesful and managed to do a small live coding environment with Lua on iOS.

  • Memory
    C++ / Cinder

  • Student's mini game (memory spin-off) about matching music to dresses from different epochs and styles.

  • Dota 2 Real-Time Sonification
    Lua, Node.js

  • Bachelor's thesis on sonification. Involves a custom map for Dota 2 extracting some events and game states to Node.js and then as OSC to SuperCollider.

  • Audio synthesizer
    Objective-C

  • Bachelor's thesis on sound synthesis for iOS. The project was entirely made on Objective-C except the audio callback function. Some filters and generators were implemented also in Objective-C.

  • Audio streamer
    Objective-C

  • Student's project on streaming music from the iTunes library to other iOS devices in the local area network. The intenation was to be able to hear the same music synchronized with friends or other people on the same place (bus, station, classroom, etc).

  • Wii Remote controller for orchestral conducting
    SuperCollider

  • Bachelor's thesis about using the Wii controler as a conductor's baton. It tracks the BMP and metricks of the conductur to change the tempo of a running MIDI file or project in a MIDI capable DAW.

  • Wii Remote controller for live performances
    SuperCollider

  • Student's project about using the Wii to record movements, vibrations and gestures, and use them right away as a wavetable oscillator.

  • Ear training mini game
    SuperCollider

  • Student's project for training interval listening. The program plays intervals simultaneous or sequentially and the user has to answer in order to climb further the ladder. The intervals get more complex from stage to stage and also the sequential speed increases towards the end. Ideal for ear training (interval hearing) without somebody plaing the piano.

  • Drummer Helper App
    Python

  • This project was made by various students based on the input of percussionists at the HfM. The app is flexible to add new features, measures tempo, records playing and matches onsets to a metronome, and some more features which should help percussionists to improve while practicing.

  • Live coding
    SuperCollider, SonicPi, Lua

  • Several projects were live coding related, since that is my speciality. The projects range from simple live coding performances and preparation of sets, to analysis of livecoding and instructional tutorials for beginners.