What does everyone use to create bass sounds in Tidal?

Hi all,

I’m curious about what people use to create bass sounds in Tidal. I create hip-hop music, so it’s pretty vital for the stuff I make. Tbh, I have some difficulty creating bass in a typical music production setting (DAW). It’s even harder for me to do in Tidal, especially when dealing with bass samples. My bass is usually out of tune or too muddy or not present enough in the mix.

It probably doesn't make sense out of context, but this is an example of an approach I’ve taken:

d2
 $ swingBy ("q") 8
 $ fast 0.5 
 $ n "<[[~ 0 0] ~ [~ 0] ~]>"
 # sound "dinma-808:3"
 # gain "1.1"
 # pan "0.5"
 # shape "0.45"
 # resonance "0.46"
 # coarse 1
 # lpf "60"
 # attack 0.05
 # release 1.2

I would love to see what bass setups y’all use when dealing with — synths, samples, effects, functions, etc. Even general bass tips are welcome. Thanks.

2 Likes

great topic! i'm struggling with getting a punchy bass in my final mix as well. when i'm making sketches, my go-to bass synth is superchip and when i port my code over to my softsynth setup in Ableton, i've got an instrument rack layered with a few sounds that i have a little more control over. for me, i think it's going to come down to nailing the EQ so that i'm not conflicting with other sounds swirling around, especially my boomy kick (< which i might end up changing because of this very issue...)

3 Likes

Appreciate the response. Sidenote - I recognize your name. I came across one of your live coding sessions in a thread (can’t remember which) and thought your stuff was :fire::fire::fire:. It’s right up my alley. I’ve been meaning to throw you a soundcloud follow (just did so).

I think I’ll have to do the same as you, and incorporate a DAW (Logic) in my workflow to better shape my bass sound. I’ll mess with superchip as well.

1 Like

nice, thank you! followed back :slight_smile:

1 Like

Following with interest!

I've struggled with this too - I had some success with the pluck sample for a plucked upright sound - although the sample set is all over the place/somewhat incomplete in terms of octaves, which I (tried to) tame with the toScale function:

-- C major (-ish, the octaves are not accurate) 
d1 $ slow 2 $ n (toScale [5,6,10,12,15,2,4] (run 7)) # s "pluck"

After that, I've just been looking into other software synths -

  • I used yoshimi for a couple of sounds in the new moon set, and they were ok - I've got a lot still to explore there
  • I'm dabbling with VCV Rack to get more finegrained control with the sound generation but that is very early days
  • Pilot (the companion to ORCA) has some sounds I like, but it seems non-trivial to get it communicating with tidal so I've shelved that one for now

On my list to look at (eventually):

  • freq function in tidal - seems to be undocumented but 17.2M used is extensively in their new moon set
  • BespokeSynth which just recently got published on github
  • find a workable looping setup for live bass (I play bass) - @mrreason did some great live looping stuff in his new moon set which I haven't had time/opportunity to wrap my head around
  • sunvox synth

Keen to hear what you find :slight_smile:

... And now superchip is at the top of my todo list -thanks @kit-christopher for the tip :+1:

2 Likes

Anyone know if analog patterns sped up to audio rate can be realised as sound? Could be interesting.

Also I’d be interested to know whether anyone knows of a quick/easy way to trigger pure (pitched) sine waves from superdirt via tidal.

Unfortunately I don't understand your first question, but I can easily answer the second one.

All you need to do is create a SynthDef that generates a simple sine wave signal. It works like this:

(
SynthDef(\sin, {|out, freq = 440.0|  
    Out.ar(out, SinOsc.ar(freq));
}).add
)

Copy the code into SuperCollider and execute it with Shift+Enter.

After that you should be able to use it in TidalCycles, for example:

d1 $ n "c e g" # s "sin"
2 Likes

Thanks! This will see a lot of use!

1 Like

I would like to tell what I know about this topic so far and what I personally have made good experiences with.
First, I should mention that I mainly make sample-based music and try to combine that with instruments.

The first is that the samples used must be in tune. When I create samples, I correct the pitch in my Ableton DAW if necessary.
Ideally, the sample should be in c to have the correct note mapping when changing the speed with up. Or you have a sample pack where the samples are sorted in the correct pitch. Ideally, this should even be considered for rhythm elements such as a tom, so that the pitch of the samples does not conflict. If I need a bass sound quickly, I use my chromatic sampled bass I created (I uploaded this on my Github page maybe someone find it useful)

Otherwise it has already been mentioned that the separation of overlapping frequencies with an EQ is very important. This could be achieved live by using a mixer/DAW for this. The danger is of course that you then always have to send the bass to a fixed channel.

What I also find important is that you should be very careful with effects like reverb or delay (or leave them out for BD/bass). If signals overlap, then this will immediately produce a muddy result.

@cleary I am glad to hear that you liked my live looping stuff!
I am now ready to loop the sound I create with TidalCycles. One idea is that you can use it to create samples in TidalCycles. Then you could use the edited (bass) sample as a sample on its own. All the functions to shape the signal (like in the first post) could be removed later. Unfortunately I have not yet implemented the ability to save the loops on your hdd, but I will do so.

2 Likes

All great info, thanks for sharing! I'm definitely going to mess with everything you mentioned. Also, great set by 17.2.

:slight_smile: lots of options...
(I'll show my age with some links)
rockin' "dbass" or any one note sample, that gets pitched to what you want
is kinda like dj Premier's use of the 16 levels feature on a MPC

can't really get better than this, although it helps to have vocals by Rakim

could also hire a great bass player to replay your samples
a la Dr Dre

impeccable/problematic as well :slight_smile:
especially with rhymes by Snoop, and lyrics by DO to the C

also, there's the option of calling Ron Carter (or another fantastic bass player)
to just play great bass lines
like Tribe...

and, and, and :slight_smile: it really helps if you and your friends are dope MC's
speak your truth
Peace!

2 Likes

These are dope tips! Big fan of the artists you linked. I haven't heard of the bass techniques you mentioned. More to study :+1: :pray:

This worked well but I've run into a difficulty that you might have insight into.

I've tried a few methods of adding a small attack and decay envelope slope to the wave in order to avoid clicky-ness. I've tried doing this from functions inside TidalCycles and also as part of the SynthDef itself. This works to varying degrees but it either way, seems to change the duration of the note significantly (ending suddenly, part way through where tidal's pattern specifies). This isn't dependant on the decay length -- it seems to start decaying at the same truncated point regardless.

The simplified version of this: do you have any suggestions for how to remove the attack/decay click on the sine tone without changing any other behaviour.

(also it seems to generate a tone only in the left channel -- I'm sure I can figure that out though)

not sure if this is helpful but i do know that on any sort of waveform, sine or otherwise, the click/pop happens when the sound terminates on a point on the wave that is not the point where the sound began. so if you all are sampling sounds and your waveform starts on a peak and ends in a trough, there will likely be a click. the sound would need to go from peak to peak to ensure a smooth sound.

That's my understanding too. Difficulty I'm having in this case is getting an envelope to correctly smooth the attack/decay without causing any additional unintended effects.

I'm sure it's something obvious, but I've not used this side of SuperCollider before so I'm probably missing things.

I'm just wondering because I thought I saw something like a "supersine" synthdef, but I must have imagined it (correct me if I'm wrong).

Yes I must admit that the sin Synthdef was only a minimal example. This code should do the trick:

(
SynthDef(\sin, {|out, freq = 440.0, decay=0, sustain=1, pan|  
	var env = EnvGen.ar(Env.pairs([[0,0],[0.05,1],[0.2,1-decay],[0.95,1-decay],[1,0]], -3), timeScale:sustain, doneAction:2);
	
	var sound = SinOsc.ar(freq);
	Out.ar(out, DirtPan.ar(sound, ~dirt.numChannels, pan, env));
}).add
)

This sin synthdef contains an envelope and considers your output configuration in your Boot-Script (default 2). So the signal is now stereo and you can use the pan function). With decay and sustain you are able to control the envelope now.

The attack function has a different meaning in TidalCycles but this is another topic. I will open a topic about a question to adsr envelope for samples I raised yesterday at Q+A. So this could be also interesting for adsr control in synths for the long term.

This should work now:

d1 $ jux (rev) $ n (arp "up" "c4'maj7'16") # s "sin" 
   # cutoff (slow 8 $ 3000 * sine) 
   # decay 0.8 # sustain 0.4
3 Likes

That's my sin take, it handles begin, end, speed and accelerate dirt parameters. I can't remember getting a click out of it...

SynthDef(\sin, {|out=0,freq=440,sustain=1,pan=0,begin=0,end=1,speed=1,accelerate=0|
  var envLength = sustain*(end-begin)/speed;
  var line = Line.ar(begin, end, envLength, doneAction: Done.freeSelf);
  var env = Env.asr;
  var volume = IEnvGen.ar(env, line);
  var sig;

  freq = max(0, freq * speed * (1 + (accelerate * line)));
  sig = SinOsc.ar(freq);

  Out.ar(out, DirtPan.ar(sig * volume, ~dirt.numChannels, pan));
}).add;
1 Like

(with some negative accelerate you can get some nice kicks)

Good question about the bass. Depends on the style of music you want, of course. I have an example https://gitlab.imn.htwk-leipzig.de/waldmann/computer-mu/-/blob/master/tidal/code/dub.tidal (audio file in the same directory) where I think "sine is fine" (if bass is deep enough, wave form does not matter). Still, the bass there sure could use some more punch.

4 Likes

Thanks for this! (and also to @ ndr_brt)

I'll have a play with these scripts. Learned a lot about SynthDefs in SuperCollider too -- something I've not really touched any deeper that what I needed to get the engine started!