¿Algoritmos? Algo ¡Ritmos!

Algorithms? Algo Rhythms!

Esteban Betancur Gutiérrez

Instituto Tecnológico Metropolitano (Colombia)

<http://dx.doi.org/10.12801/1947-5403.2018.10.01.16>

A sunny day in 2014, an 11-year-old boy from a Latin American country, in a neighborhood with a history of violence and state abandonment, writes a few lines in something that looks like English in a simple text editor for an audience that looks at him in astonishment. Some kind of electronic dance music resonates through space but no one in the public seems to understand the relationship between what he writes and what sounds. He finishes his presentation and then his 9-year old brother takes his place. The same ritual starts: some texts on a screen in something that seems English, he types something wrong, erases and corrects, and after a minute and a half, a bass accompanied by a drum, quite heavy by the way, start to sound through the speakers arranged in the Parque Explora of the city of Medellin ... and the public, without realizing it, is moving their feet, applauding, shouts. Two people raise their hands with their eyes closed as if they were at a rave.

Algo∼Ritmos: First Live Coding Performance Made by Young Programmers

Algoraves were already happening in other places, and the work in live coding and education was already taking place in Europe. By this time algorave is around its second birthday, same as Sonic PI (Aaron, Orchard and Blackwell 2014), but EDM, algorave, live coding, all these concepts were far from us, and we only knew about them through the internet, but there was something that we had in mind. It had to be possible to teach music and programming using the dance floor as an excuse to make the process fun.

The question was how to achieve it? Could we make a workshop for children, inexperienced programmers and musicians that produces danceable results? Was it possible to go further still, to the point of “finding our own voice”, not only with the results, but with the way to produce them? That is, what if we developed our own way of doing EDM through the new syntaxes for the creation and manipulation of musical algorithms?

Of course, all this was possible. There were Sonic PI (Aaron 2016), Tidal (McLean 2014) and ixi lang (Magnusson 2011) to prove it. These examples were powerful and transparent enough to show us that writing code does not have to be black magic. And why not eliminate the installation problem too, because we saw during our workshops that installation is an obstacle for the inexperienced (Tidal could be the best example of this). If we can use Extramuros (Ogborn 2015) we can do it collaborative (sharing text buffers, syncing audio) and networked.

Workshops kept coming, so it was evident we needed to find different ways to answer our questions, and for that reason an initial library was written using the possibility to expand ChucK (Wang, Cook and Salazar 2015), which is a domain-specific language developed in North America. ChucK can be easily extended, so the library implemented the same cyclic approach of Tidal. This approach allowed users to manipulate audio loops in repetitive cycles. In addition, it is possible to change the native words of the language and replace them with those that the performer prefers, facilitating the translation of keywords into a native language. This makes the maintenance of the individual libraries more difficult, but allows for a more expressive use of the code text. For example, the standard ChucK expression:

SndBuf hh => dac;
me.dir () + bassDrum.wav => bd.read ;
me.dir () + hitHat.wav => hh.read ;
60 /120.0 => oat tempo;
while (true ){
0 => bd.pos ;
(tempo/2 )::second => now;
0 => hh.pos ;
(tempo/2 )::second => now;
}

can be written with our new library as:

drum(120, 8, [1,0], [0,1]);

or

tempo(120); bateria.bombo([1,0]); bateria.hh([0,1]); toca => now;

These two examples represent the same rhythm and show some of the particular syntaxes made.

Through exploring syntax modification, we discovered that code style and developing syntaxes to express rhythm was as important for performers as developing their own musical style. For this reason, through the workshops we developed multiple ways to write rhythmic patterns using libraries to expand chucK such as CHmUsiCK (Betancur 2017), or mini languages inspired by Tidal and ixi lang that use both Chuck and SuperCollider or the old Dirt (Mclean 2014) for audio generation. From these experiments it is important to highlight CMKlang (Betancur 2016a) that serves as a bridge between Extramuros and some of these particular syntaxes. Also CQenze (Betancur 2016b) that raises an alternative syntax for the manipulation of Tidal patterns, including also the transformation functions of these patterns as letters.

|- - |bd | -|hh

bd+- hh-+

ox hx

These three examples represent the same rhythm, using particular syntaxes.

Through this process, we developed technical solutions which are all housed in public repositories. Also, thanks to the effort, constant work and availability of accessible tools, a community of musicians and artists was built. They are using algorithms for the generation of both music and visuals in their works.

We don’t know if the audience understand what we do, even with simpler syntaxes, but now we are sure that code can make them dance.

Coda

2017—December, Morelia, Mex.

Spencer Salazar (ChucK development and maintenance team) during an ICLC’17 mid-week party is dancing to a very well produced techno track and suddenly he realizes it is a live coding set, after that, he looks at the screen and notice the coder is using miniAudicle (his development), then, he turns at me and asks, “He is from Colombia, am I right”? I’m very excited to answer clearly but, after a few seconds I said, “Yes, he is one of the guys I already told you.”

I cannot stop thinking in that first time we dance to the beat of the code.

Author Biography

Musician from Medellin, Colombia, where he has worked in many collaborations, album recordings and live sessions; also he has worked as software developer for Chmusick toolkit, a library to make chuck language an algorave language. He is the author of CQenze, a DSL designed to be a first experience language for non-coders. Also, he developed CineVivo, a graphics render engine for rendering live coding languages. He has been musical director in Pequeño Teatro, one of the most important theaters in Medellin where he is one of the founders and coders of Algo0ritmos, the only live coding artistic collective in Medellin. Software developer in CICLUX and CineVivo.

Web: <https://essteban.github.io/>

Email: <essteb@gmail.com>

References

Aaron, Samuel, Dominic Orchard and Alan F. Blackwell. 2014. “Temporal Semantics For a Live Coding Language”. In Proceedings of the 2nd ACM SIGPLAN International Workshop on Functional Art, Music, Modeling & Design - FARM ’14, 37–47. New York: ACM Press. <https://doi.org/10.1145/2633638.2633648>.

Aaron, Samuel. 2016. “Sonic Pi—Performance in Education, Technology and Art”. International Journal of Performance Arts and Digital Media 12(2): 171–8. <https://doi.org/10.1080/14794713.2016.1227593>.

Betancur, Esteban. 2016a. GitHub—essteban/CMKlang: Bridge between CHmUsiCK and extramuros. <https://github.com/essteban/CMKlang> (accessed 10 July 2018).

Betancur, Esteban. 2016b. “Diseño e implementación de un DSL: CQenze, como lenguaje de primera experiencia para el cñdigo en vivo”. In Proceedings Festival Internacional de La Imagen 2015, 1–6.Manizales, Colombia. <http://festivaldelaimagen.com/wp-content/uploads/2017/07/Esteban_Betancur.pdf> (accessed 10 July 2018).

Betancur, Esteban. 2017. “CHmUsiCK, A Library to Make chucK an Algorave Like Language”. In Proceedings of International Conference on Live Coding, 1–7. Morelia: ICLC. <http://iclc.livecodenetwork.org/2017/cameraReady/betancur_iclc2017.pdf> (accessed 10 July 2018).

Magnusson, T. 2011. “ixi lang: A Supercollider Parasite for Live Coding”. In Proceedings of International Computer Music Conference 2011 (ICMC ’11), 503–6. Huddersfield: International Computer Music Association.

Mclean, Alex. 2014. “Making Programming Languages to Dance to: Live Coding with Tidal”. In Proceedings of the 2nd ACM SIGPLAN International Workshop on Functional Art, Music, Modeling & DesignFARM ’14, 63–70. New York: ACM Press. <https://doi.org/10.1145/2633638.2633647>.

Ogborn, David, Eldad Tsabary, Ian Jarvis, Alexandra Cárdenas and Alex Mclean. 2015. “Extramuros: Making Music in a Browser-Based, Language-Neutral Collaborative Live Coding Environment”. In Proceedings of International Conference on Live Coding, 163–9. Leeds: ICSRiM, University of Leeds. <https://doi.org/10.5281/ZENODO.19349>.

Wang, Ge. Perry Cook, and Spencer Salazar. 2015. ChucK: A Strongly Timed Computer Music Language. Computer Music Journal, 39(4): 10–29. <https://doi.org/10.1162/COMJ>.

Filmography

“Algo~Ritmos”. Youtube. Uploaded on 26 September 2014. <https://www.youtube.com/watch?v=2j1OcADdqXI> (accessed 10 July 2018).