Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Cover image for Harnessing Screams with Tidal Looper
Jessica Garson
Jessica Garson

Posted on

     

Harnessing Screams with Tidal Looper

Since 2017, I have performed asMessica Arson, my live coded noise project. A defining feature of this work is the use of looping screams, which adds a potent rawness to my sound. Over the years, I've used many different technologies, from playing audio files in Audacity to a custom script entitledscream.py that allows me to create vocal samples on the fly quickly. 

Since then, I've been working more and more withTidalCycles. TidalCycles is an open-source live coding framework for creating patterns written inHaskell. TidalCycles usesSuperCollider on the backend, another language I've been using for live coding. Recently, I started usingTidal Looper for live vocal processing. This blog post will walk you through what you need to get started with vocal looping with Tidal Looper. 

The code for this blog post is available in the correspondingGitHub repository. It includes thefile I use to start Tidal Cycles for shows featuring the use of Tidal Looper, as well as acode from my live performance atMurder by Modulation, an event hosted by the New York Modular Society during the fall at Trans Pecos.

What you need to get started 

First, you will need to haveSuperCollider andTidalCycles installed locally. Then, to get started with vocal looping, you will need a microphone and a way to connect to your computer. 

My current setup is as follows:

  • Motu M4

  • Shure SM-58 with a switch - The switch is necessary because I often use feedback in my work, and having control over when I use it can make my performance more dynamic.

Before getting started you will need to make sure your audio input is set to use your audio interface or the method through which your microphone is connected to your computer.

Why Tidal Looper

Tidal Looper allows you to sample live on the fly natively within TidalCycles. You don’t have to switch between different frameworks and programs. Tidal Looper aims to recreate the capabilities of a looping pedal, with recording, a replace mode, and an overdub mode. You also have thefull patterning capabilities of TidalCycles on the loops you record.

Installing Tidal Looper

The steps to installing Tidal Looper are as follows:

  1. Download theTidal Looper repository.

  2. Install Tidal Looper as SuperCollider Quark by selecting where it says "Language," then selecting where it says "Quarks," and finally selecting "Install a folder."

  3. In SuperCollider, create a new file calledstart_looper.scd that contains the following:

~dirt=SuperDirt.start~looper=TidalLooper(~dirt)
Enter fullscreen modeExit fullscreen mode

For sets where I’m using Tidal Looper this is how I load SuperCollider before starting my set.

Many adjust their startup script so that Tidal Looper automatically loads when they open SuperCollider. Directions on how to do this can be found in the README ofTidal Looper. Since I use various live coding frameworks for different sets (sometimes multiple in the same set), this doesn't quite work for me.

Using Tidal Looper

Now, you can start creating sounds with Tidal Looper. For this section, I’ll walk you through a track created and performed live in the fall.

I usually start in my live sets by defining the cycles per second or tempo of the sounds. I'll typically begin by setting thecps to 2, meaning each cycle of the rhythm or pattern you're programming will last half a second. This setting effectively determines the speed at which your musical patterns progress and loop. I often increase thecps to 3 during the peak of my live sets, which means that the tempo of the music or rhythm is defined so that each cycle of the loop takes one-third of a second.

setcps2
Enter fullscreen modeExit fullscreen mode

I often start my sets by screaming. The lineonce $ s "looper" plays the first scream while I’m recording it. I can use this scream throughout my performance.

once$s"looper"
Enter fullscreen modeExit fullscreen mode

I frequently use TidalCycles to create drum beats and synth sounds that are almost danceable. However, to add a unique twist and throw the rhythm off balance, I incorporate recordings of my screams recorded on the fly with Tidal Looper. This technique introduces an unexpected element contrasting with the otherwise rhythmic and melodic flow.

d1 defines a music pattern. This pattern plays a bass drum sample (bd) and then a sequence involving the samplesbubble,loop repeated three times, andcontrol. The# operator is used to apply effects:leslie 0.3 applies a Leslie speaker effect at level 0.3, andenhance 0.5 applies an enhancement effect at level 0.5. The sampleloop is the scream recorded using Tidal Looper in the first line of the code.

d1$"bd drum! [bubble loop*3 control]"#leslie0.3#enhance0.5
Enter fullscreen modeExit fullscreen mode

I’ll often like to make use of the overdub orolooper mode in Tidal Looper. This mode is similar to an overdub in a looping pedal where new sounds can be added on top of existing loops. I use this to create a more full sound.

d2 usesqtrigger 1 to quantize the start of the pattern, ensuring it starts at the beginning of a cycle. Stack layers multiple samples:olooper created from the overdub function of Tidal Looper,loop - the original scream recorded at the beginning of the set,scream andgabba repeated seven times, playing them simultaneously. The samplescream is a sound I've recorded usingscream.py and haveloaded into Tidal Cycles. I'll use this technique to create a loud rhythmic beat mixed in with a chorus of screams.

 

d2$qtrigger1$stack[s"olooper",s"loop",s"scream",s"gabba*7"]
Enter fullscreen modeExit fullscreen mode

I enjoy blending ambient sounds with my screams. This combination produces a harsh yet calming effect. This approach allows me to explore the dynamic interplay between tranquility and turbulence in my soundscapes. The distortion and reverb applied to this pattern allow me to add a level of physicality to my sound.

Ind3, I play theseawolf sample three times, interspersed with a variant of theloopsample recorded at the beginning of the set and two screams. It also includes effects:distort 1.2 significantly distorts the sound, androom 0.5 applies a reverb effect at level 0.5.

d3$s"seawolf*3 {loop! ~ scream:2}"#distort1.2#room0.5
Enter fullscreen modeExit fullscreen mode

Ind4, I use Tidal Cycles patterning capabilities to create a more exciting sound. This code block utilizes the functionevery 3 (fast 2) to double the speed of the pattern every third cycle. It specifies a sequence of note indices withn "0 1 [~ 2] 3" and dictates the samples to be played, which includearpy andscream repeated six times. The samplesfeel andless are layered simultaneously. Additionally,legato 0.3 is employed to smooth the transitions between notes, enhancing the fluidity of the sound.

d4$every3(fast2)$n"0 1 [~ 2] 3"#sound"arpy scream*6 {feel less}"#legato0.3
Enter fullscreen modeExit fullscreen mode

Ind5, I created a pattern with the samplefire played on repeat, a rest (~), and then a group withsid played three times and808 played twice. The effectsquiz 0.5 compresses the sound, anddecay 0.3 shortens the sound's decay time.

d5$"fire! ~ [sid*3 808*2]"#squiz0.5#decay0.3
Enter fullscreen modeExit fullscreen mode

One of my favorite tricks in Tidal Cycles is to chop up and slice my screams.d6 useschop 16 to cut the pattern into 16 pieces. It plays a variation ofscream followed by the original scream loop recorded with Tidal Looperloop and another variant ofscream.detune 0.3 slightly detunes the samples.

d6$chop16$"scream:3 loop*3 scream:4"#detune0.3
Enter fullscreen modeExit fullscreen mode

What does this sound like

You can hear a jam using the code from this blog post:

Conclusion

By using TidalCycles alongside Tidal Looper, it becomes a canvas for sonic experimentation. While this is the setup I use for live vocal processing of my screams in some of my performances, you can use the same process to record instruments or other vocal work. Something I love about the livecoding community is its supportive nature, so if you run into any trouble, you can reach out onTidal Club or Discord.

This blog post was made possible by a TidalCycles microgrant, with thanks to theOpen Collective contributors

Top comments(1)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss
CollapseExpand
 
jess profile image
Jess Lee
Building DEV and Forem with everyone here. Interested in the future.
  • Email
  • Location
    USA / TAIWAN
  • Pronouns
    she/they
  • Work
    Co-Founder & COO at Forem
  • Joined

This is so cool!!

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

Jessica Garson is a Python programmer, educator, and artist. She currently works at Elastic as a Developer Advocate. In her spare time, she is on a never-ending quest for the perfect vegan snack.
  • Location
    Brooklyn, NY
  • Work
    Developer Advocate at Elastic
  • Joined

Trending onDEV CommunityHot

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp