Challenge: slicing speech

Right @cycle0, it's definitely time for another challenge! Some really great stuff in the last one, nice one, + for for those joining later/catching up, more submissions always very welcome!

Your challenge this week is to take the beat slicing techniques we looked at in these lessons..

.. and apply them to speech. There are many traditions that connect speech with percussion, from beatboxing to konnakol, and that connect speech with other instruments like scat singing.. Furthermore, as Diana Deutsch discovered (nice radiolab podcast piece on this), if you listen to speech on loop, you'll eventually stop hearing it as speech, and start hearing it as music. So you could take a lot of different approaches to this.. The sound could be actual speech, 'nonsense' speech, random syllables, whatever you like!

You could

  • Record yourself speaking rhythmically (for example using audacity and your laptop mic, or a phone app), and slice that up
  • Record speech synthesis (e.g. click the speaker icon in google translate - try it with meaningless made-up words..)
  • Take an existing recording of speech, or if you prefer someone singing or actually beatboxing.. (here's an m.i.a. sample, and the 'algorave generation, we love repetition' samples in English and Spanish)
  • something else

Once you have your sound source, you'll need to edit it into a coherent loop. You need to somehow edit it so that it starts on a 'down beat' and lasts a certain number of beats (usually a power of 2, e.g. 4, 8, or 16 beats). In audacity you can hold down shift and press space to play a selection on loop, which is a good way of testing if something is looping properly by ear.. I'll do a live stream soon to demonstrate this process.

Alternatively you could manually cut the sounds into short percussive parts for arranging with the n patterns and mininotation, if you prefer - that might be more work.

Then start slicing, splicing, chopping and striating until you come up with something weird/interesting. Try juxtaposing / mixing that with a less messed-up version. You could then either record a few repetitions of a single pattern, or if you fancy it and have some time, try to flesh it out into a whole track. Have fun with it!

Things to think about

  • How speech changes when you start treating it as sound
  • The relationship between speech perception and movement (check out the McGurk effect)
  • How does slicing longer sounds feel compared to sequencing individual sounds?
6 Likes

OK here's my attempt:

It's just a single speech loop taken from the internet (no pre-slicing), no extra samples. It plays the clean version for a couple of cycles then starts building up layers.

(btw I never heard about konnakol before, it's so cool!!)

11 Likes

https://soundcloud.com/k-blamo/es-kjack_capture_08wav

hush

d1 $ every 3 (hurry 2) $ sound "ade" # n "3 2 4" # squiz (range 0.2 3 perlin) # gain 0.6 # room 2

d1 silence

d2 silence

d3 silence

d2 $ every 3 (slow 4) $ slice 3 "0 1 2" $ sound "cliplvox"

d3 $ every 4 (slow 2) $ sound "808cy bin"

cool, process talk:
here's all the code
and also a photo of the machine it's being run on
I'm brand new to tidal cycles, just started with Tidal Club
learning lots, thanks
I set up a system on a secondhand lenovo x230 just for Tidal
I'm learning lots about linux, too
(always helps me to have practice to learn theory)

with a 1979 Unidyne 578 mic that was already set
to hi z (came with a 1/4" plug already soldered on)
and this elementary juno distro, the apogee jam96k was
recognized as an input (it's build for instrument level, so it's not
really enough gain, but...) we've been having fun recording vocals
with sox on the command line ($ rec -c1 filename.wav)
this track has laura saying 'exquisito
with her orange county accent -it sounds like 'es-que-cito
the slicing makes it possible to hear the different parts
of the word, which can change the meaning
plz let me know what you think :slight_smile:

3 Likes

I forgot to mention - please have a read of the guidelines for giving constructive feedback here:

A quick reminder:

  • Observe the code of conduct, contact @heavy.lifting or me if you have concerns
  • Curse of knowledge - be mindful of the different experience levels and backgrounds of the people here, understand that knowing something can make it hard to see things from the perspective of others
  • Quality vs energy - think about other people’s work less in terms of ‘quality’ (e.g. how well written the code is, how hi-fi a recording is, etc) and more about ‘energy’ (e.g. how something makes you feel or what it reminds you of)

Also when you post your own recording, consider asking a question or two about particular aspects you'd like people to feedback on. People might be nervous to comment otherwise. If you're not after feedback and just want to share, that's all good, just let us know.

We'll do an end-of-cycle survey to gather ideas about how we can make this more structured. You can share your thoughts about this in this thread.

Rough stuff this morning - rushing it out the door before I get the family up:

keen for any feedback, particularly on ways to morph it a bit more organically through the life of the song

3 Likes

Hi! Cool things already, I'm quite sensitive to @Dan's piece. The treatment of sounds seems very fluid!

Here's my attempt :

It might have benefited from my digging deeper into functions and effects but I really tried to apply what I understood from the splice and slice and chop and striate. I ran into a couple of issues :
1-long samples, supercollider crashed when striate was high and thus I lost "good" takes
2-i have to dig much deeper into the syntax because I sometimes just couldn't think how to do what I wanted.

I would love to have feedback on what the result sounds like from the outside, it's a text I've been working on for some time so for me playing with it like this was very interesting (/entertaining). On another level, I would be glad to know what anyone thinks of the way it is built, perhaps it's too flat and boring, turns out I assembled recorded elements.

Here is the code, any thoughts on how to optimize it are more than welcome. One thing I would like to ask : can I call several sounds in the same orbit and attribute them different treatments? For instance, sound 1 very slow, sound 2 very fast, sound 3 normal ; i' like to compose more in depth than I did with mini notation and speeds!

once $ sound "voice:3"  # cut 1

d6 $ sound "voice:1" #legato 0.7

d6 $ every 2 (striate 4) $ every 3 (striate 3) $ every 7 (striate 2) $ chop 2 $ sound "voice:3 voice:2 voice:1 voice:0" #legato 0.4 

d5 $ slice 40 "1 4 5 6 " $ sound "voice:3" #legato 0.7



d6 $ chop 2 $ sound "voice:3 voice:2" #legato 0.4 #squiz 9 #gain 1.3

d8 $ slow 8 $  striate 120 $ chop 128  $ sound "voice:1 <voice:2 [voice:0 voice:1] [voice:2 voice:3]> voice:3 voice:0 " #legato 0.8 <|  "2 [4 8]  14"

d7 $ slice 64 " 16 12 18 52 18 34 < [16 12 14 17] {1 2 3 4 5} <1 2 3 4 5 6 6 7 8 9>> 22 " $ sound "voice:1 voice:2 voice:3" #legato 0.8

d1  $ splice 1867 " 16 12 18 52 18 34 < [16 12 14 17] {1 2 3 4 5} <1 2 3 4 5 6 6 7 8 9>> 22 " $ sound "voice:1 voice:2 voice:3 voice:0" #legato 0.8

d1 $ slice 150 "1 2 6 31 25 4 5 <16 [16 12 13 14] 17 18 [19 20 16] >" $ sound "voice:0" #legato 0.3 #gain 0.95

d2 $ jux rev $ fast 2 $ hurry 0.5 $ every 8 (striate 2) $ slice 25 "1 2 6 31 25 4 5 16" $ sound "voice:0" #legato 0.3 #gain 0.8 #squiz 2

d2 $ hurry 0.5 $ every 8 (striate 2) $ slice 25 "1 7 8 2 6 7 8 1 23 34 21 <31 [ 25 24 23] 23> 25 4 5 16" $ sound "voice:0" #legato 0.3 #gain 0.9 #squiz 9 #vowel "e a i o u"

d2  $ hurry 0.5 $ fast 4  $ splice 4 "1 2 3 4" $ sound "voice:0" #legato 0.3 #gain 1

hush

d2 $ jux rev $ every 2 (striate 15) $ slice 35 "<[12 25 25 22][22 [7 8 9 10] 15 12]>" $ sound "voice:0" #legato 0.3 #gain 1 #vowel "e a i o"

d3  $ hurry 0.5 $ slice 35 "12 4 5 3 7 25 [26 27 28 29] <[31 32 33 2 4 2 4 5 1 8] [31 32 33 2 4 ] [31  4 5 1 8]> 25 4 5 16" $ sound "voice:0" #legato 0.3 #gain 1 # pan (irand 20)

d5 $ every 4 (splice 4 "1 2 3 5 6 8 3 4")

d5 $ jux rev $ hurry 0.5 $ fast 16 $ slice 8 "<1*2  [6 3 4 5 2 5 5] 7 3  5 2 3 4>" $ sound "voice:0" # legato 0.5 # gain 0.7 #room 0.4

d5  $ slice 20 "14 2 1 31 21 1 5 14" $ sound "voice:0" #legato 0.7 #gain 0.9

d1 $ every 2 rev $ every 5 (jux rev) $ every 12 (chop 15) $ every 8 (striate 50) $ slice 250 "<8 9 1 4 2 5>  <1 2 3 4 5> <140 130 120 149> <70 71 72 73 74 75> " $ sound "voice:0" #legato 0.9 #gain 1

d3 $ jux rev $  fast 10 $ hurry 0.1 $ chop 16 $ sound "voice:0" #legato 0.1 #vowel " o u a e i o e e a i e a e i a i"  #squiz 5 #pan rand #gain 1.4

d4 $ jux rev $  fast 10 $ hurry 0.05 $ splice 16 " 1 3  11 12 1 3  5 10 4 2 5 2 8 9" $ sound "voice:0" #legato 0.1 #vowel " o u a e i o e e a i e a e i a i"  #squiz 5 #pan rand #gain 1.4

d5 $ every 2 (striate 2)$ jux rev $  fast 40 $ hurry 0.005 $ splice 160 " <[1 3 4 2 5 2 8 9][2 4 2 1 3 2 8 9][2 7 9 1 [5 3 2] 2 8 9][2 [4 5 6 7] 2 12 13 2 9 10]>" $ sound "voice:0" #legato 0.1 #vowel " o u a e i o e e a i e a e i a i"  #squiz 5 #pan (irand 100) #gain 1.4

setcps 0.5

hush
7 Likes

Huh, so that's how you embed. Just paste the link. So easy!

Anyway, here is my little voice manipulation fun times with a bit of breakbeat good times in the second half. This is cut down from a larger thing.

Final code:

d1 $ every 2 (degradeBy rand) $ slice ((irand 8) + 1) "3 ! [1 3] 5 !" $ s "break:3" # gain 0.9
# delay 0.8
# delayfb (rand-0.2)
# delaytime (range 100 500 $ rand)

d2
  $ every (irand 3) (degradeBy (range 0.1 1.0 $ tri))
  $ slow ((irand 2)+1)
  $ loopAt ((irand 64) +1)
  $ striate 32
-- $ splice 8 "0 5 3 1 8 7 6"
  $ s "basket:2*32"
    # room 0.3
    # sz perlin
    # cut 1
    # att rand
    # hold rand
    # rel rand
    # shape perlin
    # pan perlin
    # krush 10
    # delay 0.8
    # delayfb (rand-0.2)
    # delaytime (range 100 500 $ rand)
7 Likes

Love it. This is super spicy.

@abalone1969 @Dan @cleary

Love all your contributions to this thread! It's fascinating to me how different everyone's approaches are.

3 Likes

Ok going live with my attempt at this!

2 Likes

Ok here's my effort:

d1 $ reset 1 $ chew 8 (outside 8 palindrome $ scan 8)
  $ off "e" ((# squiz 4) . (|* speed 2)) $
  chunk 4 (hurry 2) $ n ("0 [~ 4] 2 3 4 [2 5] 3 6") # sound "cpu"
  # delay 0.7
  # delayt (1/6)
  # lock 1
  # delayfb 0.8

d2 $ reset 1 $ jux (# speed "-1") $ splice 8 (outside 8 palindrome $ scan 8)
    $ sound "maybe"

Drop me a DM if you want a copy of the sample I made..

2 Likes

this is fantastic :slight_smile:
it's great to be 'behind the scenes with your process
might be cool to see how you set up a live stream
(obs config, backround code on the screen, foreground your face in the bottom corner, etc)
also maybe how to set up a screenshare with a visuals coder over the web for a show
hardcore
so cool, thank you

3 Likes

Hi all,

This is my attempt. I worked with some samples from a documentary on Luigi Nono and worked on the impulse of wanting to layer the different samples above each other (oftentimes at slower speeds), which resulted in an occasionally droning/relatively static piece with segments of speech being clear to hear. I learned that by layering different sounds at once, the act of slicing speech becomes obscured. Perhaps I do need to redo this with the idea of making a work more rhythmic. I think one of the challenges I faced was that I 'liked' my samples way too much to be more selective (I ended up with 9 different samples, with the shortest one being around 3 seconds long and the longest one being about 1 minute and 40 seconds long). I could have also focused more on creating speed variations among each of the samples to make the work more interesting. At any rate, I'd appreciate any feedback you may have. Thanks!

> setcps 1
> resetCycles
> 
> 
> 
> d1 $ degrade $ stripe 1 $ degrade $ jux rev $ rev $ n "5 <4 3>" # sound "nono"
>   # speed (perlin) # cps 4.9 # gain 0.6
>   -- # sz 0.5
>   -- # room 0.7
> 
> d1 silence
> hush
> 
> once $ sometimes rev $ n "7" # sound "nono"
> -- # speed (rand)
> -- # gain 0.8
> d2 silence
> 
> d3 $ randslice 6 $ sound "nono:6" # gain 0.5
> -- # speed (rand)
> d3 silence
> d4 $ striate 2 $ n " 8 5 1 7" # sound "nono" # cps 0.1
> d4 $ jux rev $ loopAt 2 $ striate 134 $ n "[08|07][05|07]" # sound "nono" # cps 0.1
> 
> d4 silence
> 
> d5 $ every 2 (degradeBy perlin) $ chop 4 $ n "7" # sound "nono"
> d5 silence
> 
> d6 $ hurry "<1 0.9 1.2>" $ splice 7 "0 2"$ sound "nono:1" # legato 0.5 # cps 0.3
> d6 silence 
> d7 $ degrade $ sometimes rev $ striate 2 $ n "1 4" # sound "nono" # gain 0.6 # cps 0.1
> d7 silence
3 Likes

Okay finally got around to this challenge. Pretty satisfying when it started sounding more and more intense. Think I could still work on some additional tricks to stretch out the patterns though.

d1 -- $ jux rev
   -- $ sometimes (#squiz 2)
   $ s "repetition*2"
   # begin "<0.5 0 0.3>"
   -- # end "<0.1 0.3 0.2 0.5>"
   # n (irand 4)
   -- # speed (saw + 0.5)
   # djf 0.65
   # room 0.8
   # size 0.6
   -- # vowel "o"

d2 $ sometimes (jux rev)
   $ slow 2
   $ loopAt 2
   $ striate 16
   $ sound "break:2 break:6 break:3"
   # gain 0

d3 $ chew 4 "0 [4 1] 3*2"
   $ n "0 1 2 3 4 5 6 7"
   # s "bsbass"
   # gain 0.6
   # note "<1 5 1 -5>"
3 Likes

Ok so this is my little approach to this challenge, definitely not as out there as some of your examples but It's what I felt like doing:

Code:

setcps(125/60/4)

d1 $ superimpose ((|* gain 0.95) . (# fshift 150) . (# pan rand) . (|- note (irand 5)))
    $ begin "<0.2 [0.5 0.55]>" # s "lenin" # legato 1
        # room 0.2 # lpf 7000 # tremolodepth 0.5 # tremolorate 8 # gain 1.2

d2 $ s "lenin(9,16,2)" # legato 2 # cut 1 # begin rand # attack 0.01
    |+ note 12 # pan rand # hpf 4000 # rel 0.2 # gain 

d3 $ s "lenin" # legato 1 # begin 0.8 |- note 1 # lpf "[300|400]" # shape 0.2 # octersubsub 0.75
    # fshift "<0 -50>" # crush 2 # gain 1

d3 $ s "lenin" # legato 1 # begin 0.8 |- note 1 # lpf "12000" # shape 0.2 # octersubsub 0.75
    # fshift "<0 -50>" # crush 2 # gain 0.8 # room 0.5

d4 $ stack[
    s "pierrebd*4",
    s "[~ pierrecp]*2" # gain 0
    -- s "traphh*[<8!2 [8 16]> <16 12>]*<1 1 2 3>" # pan rand
]

Note: I am using custom drum samples in my code.

The original speech source:
https://www.marxists.org/romana/audio/speeches/soviet-power.htm
Note 2: I cleaned the noise with an audio editor for this one.

1 Like

@hujairi
whew, thank you so much, i really enjoyed listening to this! the way the droney samples blend in with the choir makes the whole thing feel super organic for me :slight_smile:

1 Like

Love this challenge, it really pushed me to dive into these splitting functions in depth. I also wanted to see if I could create every part that went into it from a single long sample. It took a lot of work in some cases, but I feel like I achieved some success with it.

With the last challenge I wanted to change it to have some movement and progression thru the piece, which I focused on here. This time after listening to the other examples what I would have done differently is exploring speeding up and slowing down the sample slices.

d1 $ every 2 (fast 2) $ slice 16 "6!4" $ sound "enamel:1"
   # djf 0.1
   # distort 0.5
   # shape 0.8
   # gain "1.3"

d2 $ loopAt 2 $ slice 16 "4 5 6 7 8 9 10 14 15" $ sound "enamel:1"
   # speed 0.5
   # vowel "a e i o u"
   # djf "0.2"
   # crush 1
   # shape 0.9

d3 $ loopAt 2 $ slice 16 "4 5 6 7 8 9 10 14 15" $ sound "enamel:1"
   # speed 0.5

d4 $ slice 32 "14!2" $ sound "enamel:1"
   # crush 3
   # gain 0.7

d5 $ slice 64 "<22(3,8)>" $ sound "enamel:1"
   # lpf 180
   # room 0.1 # size 0.1
   # gain 2

d6 $ loopAt 4 $ sound "enamel:1"
1 Like


(made for my 3,5 year old child, maybe a loose fit in this challenge)