Skip to content

Profile: GEIKHA

Tidal CyclistGEIKHA
LocationBuenos Aires City
Years with Tidal4 years
Other LiveCoding envHydra, SuperCollider, Estuary
Music available onlineLive sets on YouTube, Snippets on Instagram
Code onlineGitHub
Other music/audio swFL Studio, iZotope RX, Reaper

About me

I was born in Buenos Aires, Argentina. Coming from an artistic family, I grew up learning about music production and image manipulation. And as an internet child (I was born in this millennium), I grew up chronically attached to the computer. I’ve developed most of my musical knowledge as a Hip-Hop producer and as a musical omnivore. However, nowadays, I’ve grown away from Hip-Hop to dive into UK Garage and Chicago Footwork specifically.

I went to a secondary school specialized on computer sciences, where I learned the basics of programming and software development. What I was taught was super-useful! But it was also very business-oriented, narrowly focused on making me a compliant worker. At some point, maybe when I was 15 I discovered SuperCollider and tried making sounds with it. It was hard for me at the time, and I wouldn’t get much done, to be honest. 2 years later I discovered TidalCycles and FoxDot and was immediately interested in working with them. For that I have to thank Iris Saladino and some other now-friends who I went to see talk and perform at the University of Exact and Natural Sciences here in Buenos Aires.

My young age allowed to put lots of time into livecoding and the community. Since then, in just 4 years, it’s been a pleasure to join the organizational side of things with the TidalCycles and Hydra communities.

Music

I call what I do a hybrid of Footwork & RKT (Argentinian Reggaeton). I’ve livecoded many styles throughout the years but I feel I’ve finally found a style unique to myself which I want to develop more and more. I’m inspired by:

What projects are you currently working on or planning? What’s next?

Performances, performances and performances! That’s my goal right now. Since I use samples of both local and international Reggaetón, I feel my music has a lot of potential on the local dance floors. I post snippets as Reels on my Instagram. However I’m considering doing a mixtape with some of the “songs” I’ve been coding these last 2 years! Ain’t no footwork if I don’t share those trax.

Links to recorded livecoding sessions:

What samples or instruments do you like to work with?

I practically only use samples. No synths here! I love to use samples from pre-existing songs. These samples might be looped vocals or instruments, vocal phrases or slices of the whole song. I enjoy coding new effects in SuperCollider to play with samples in unique ways.

I have a very personal set of samples: currently, I don’t use a single sound from Dirt-Samples, although I’m planning to add some I remember fondly to my setup! I also use a specific sample-naming system that fits my needs.

Livecoding

What do you like about livecoding in Tidal? What inspires you?

Technical note:

I always say that I see Tidal as the most powerful sampler-sequencer in the world. The key to that is definitely its modularity. The purely functional aspect of Haskell and how Tidal has been built over it makes it so easy to create modular structures that link any Tidal functionality to any other one. I know nowadays we have ports such as Strudel, but the magic and simplicity of Haskell-like code is unbeatable for this purpose IMO.

The improvisation spectrum:

However, moving away from the technical aspects and going into the experience of livecoding, Tidal is also the fastest tool for me to go from complex musical ideas into sound. This may be confusing to some people, as it’s infuriatingly slow to write a pre-thought melody on Tidal. Naturally, a guitar (for example) is infinitely fast on its thought to sound production. That is, in spite of only being able to play as much as 6 notes at once, and using practically the same sounds. I call this trade-off the improvisation spectrum.

On one side -the most common one-, we have fast-reaction, infinitely detailed, monophonic instruments. Livecoding is the complete opposite: it’s low-reaction, discretely defined, and as polyphonic as you want it to be. But it’s not only polyphonic as in “you can play more than one note at a time”, it’s also “you can play as many of any sound as you want, however you want”.

For someone such as myself, a music producer, livecoding is the perfect instrument. I was never highly invested in any single instrument, I always cared and thought about music as a whole, as the intertwining of elements. And these are the ideas that I’m able to express with Tidal fast and on the spot. I’m live-producing.

The superhuman:

For some years I’ve noticed a pattern in the music I like (and in popular music too): The superhuman. That is, musical elements and expressions which cannot be reproduced by any single human. For example, autotuned perfectly pitched vocals, the accelerated r&b vocal runs in UK Garage, the pitched up vocals of a hyper-pop song, the slowed-down voice of a vaporwave song, the impredictable rhythms in glitch music. Well, there’s definitely a superhuman aspect to Tidal-made music. The algorithmically complex rhythms that no human would be able to follow, the indeterministic randomness, the multiplexity of canons. That definitely inspires me!

How do you approach your livecoding sessions?

My approach lately has been quite structured. I’ve been doing “production” sessions where I simply explore ideas, add new samples, and basically “write songs” in a way. As for performance, I like to select a list of “songs” (pre-made code snippets) which I’ll use as starting points throughout the performance. I start with something and do some changes to it and try to find an improvisational flow, if I can’t find it, or if the flow gets cut, I simply transition to the following song. The transitions might be seamless or abrupt, depending on what I’m going for. I don’t like to use Tidal’s transition functions, so I also play a lot with evaluating code at the exact time: risky, but fun.

What functions and coding approaches do you like to use?

I’m a “do-block-er”, I prefer to have all my Tidal code on the same block that I constantly re-evaluate, instead of writing each pattern separate from each other. Here’s an example that resembles most of my code snippets:

do
hush
setbpm 150
let trans = note (2)
let note' n = note (scale "minor" n-3) |+ trans
let kb = slow 1 $ (rotR (0/8)) $ "1*2 1(3,8)"
d1 $ stack [ silence
,kb # "bd"
,"1*16" # "808hh"
]
d2 $ kb # note' "<0 -2>" # "bass"
d4 $ chop 8 "somemelodicsample" |+ trans

Using hush at the beginning of the do-block means I can simply comment out a pattern to silence it. However, this also means that if I have a runtime error in the middle of my do-block, everything after it will be silenced. Again: risky, but fun.

setbpm is a custom function that let’s me set the BPM, as long as a 4/4 signature is being used:

setbpm bpm = setcps (bpm/60/4)

I want my code to be as short as possible. So I make use of some default Tidal behaviour, such as String patterns automatically being assigned to sound. I don’t use struct unless needed, I simply write a pattern of 1 and Tidal takes it as the rhythm. I also use lots of abbreviated aliases for Tidal functions!

You can find more about the custom functions I use on the Tidal Club, where I always try to share my ideas:

Tidal Contributions