Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

asap silence / hush #454

Closed
jarmitage opened this issue Jan 10, 2019 · 18 comments
Closed

asap silence / hush #454

jarmitage opened this issue Jan 10, 2019 · 18 comments

Comments

@jarmitage
Copy link

silence / hush do not not terminate samples from playing immediately, instead the last triggered sample will play out until completely finished.

While this is charming in it's own right, it does interfere with some performance goals. This is especially so since silence / hush will stop sending parameters applied to the sample, so you hear the raw sample which might be far from what the performer intended.

Would it be possible to borrow the asap idea and have something like asap hush? Or, should hush do "what it says on the tin" and immediately stop all playback?

@yaxu
Copy link
Member

yaxu commented Jan 11, 2019

So something like a 'panic' button? I think foxdot has 'ctrldot' or something like that, after the supercollider key combination.

I don't understand the bit about about 'parameters applied to the sample'?

@jarmitage
Copy link
Author

jarmitage commented Jan 11, 2019

For example:

p “longsample” $ s “bev*4” # speed 0.5

If you hush the above, not only will it not technically hush until the sample has finished, but sometimes the speed parameter (or other params, maybe this isn’t best example) will not be applied and so what you hear is different to the intended pattern. I am guessing this is because the parameters are immediately hushed, sometimes before the last sample has been triggered? This can make the pattern sound drastically different if a lot of functions/effects were applied, and not at all what the author wanted to be heard.

To me this has always been a bug; hush and silence do not produce silence, they do something else that results in silence at an unpredictable future time, with unpredictable sound happening in the meanwhile. So semantically panic doesn’t make sense to me - in fact hush actually makes me panic sometimes! If you did want to keep hush as is though, I was suggesting you could have an asap hush.

@yaxu
Copy link
Member

yaxu commented Jan 11, 2019

Parameters are always only applied at trigger time, so unless there's a bug somewhere, nothing you do in tidal should change already running sounds, with some exceptions - I can only think of changing global effects, or the use of cut.

For me, hush is fine for stopping patterns, I generally want sound to tail off then. It'd be good to have

  • a word for stopping synth playback
  • a word for stopping playback and stopping patterns

It's a shame that you can't add exclamations in haskell keywords like hush!

@jarmitage
Copy link
Author

Ok, maybe it is cut that I’m thinking about. I’ll see if I can find an example.

If that’s what you really mean by hush then shouldn’t it be named something more like tailoff or playout?

What about stop? Or reimplement silence

@yaxu
Copy link
Member

yaxu commented Jan 11, 2019

hush makes tidal quiet

I still like panic, the last time I used midi sequencers the way to silence running synths was called that, but maybe it's fallen out of use in the last two decades..

@yaxu
Copy link
Member

yaxu commented Jan 11, 2019

cut is originally for hi hats, it doesn't work well for long samples for this reason. legato is good for that although the behaviour is a bit different.

@jarmitage
Copy link
Author

Panic does have that legacy, and it is still used in some places. I find it quite passive aggressive as a word for an interface action. People aren't actually panicking when they use it.

Yeah, I forgot that about cut! Maybe this is more to do with cut and terminating patterns with long samples than generic hush then. Am I right in thinking people making drone/ambient music in Tidal use cut as their go to as well?

@yaxu
Copy link
Member

yaxu commented Jan 11, 2019 via email

@yaxu
Copy link
Member

yaxu commented Jan 11, 2019

The other option is to chop long samples

@jarmitage
Copy link
Author

"If you didn't want to hear this whole bev sample you should have told me!"

Yeah ok. Is there anything that could be done to cut to deal with this edge case?

A panic button would probably call s.freeAll, and kill all sound, including reverb, is that what you want? There might be a click, though..

I'd be interested to try that, might be a good general addition. I'll just create my own alias dontpanic...

@bgold-cosmos
Copy link
Contributor

Also, I know some people take advantage of the way cut and hush interact to make transitions smoother or do other ideas. But it would be nice to send SC's ctrl-. from tidal, maybe with an optional "and then" pattern? As in:

-- hushes all streams, sends ctrl-. to SC, and then plays the new pattern
interruptWith "d1" $ s "bd sn:2"

interrupt = interruptWith "d1" silence

@kindohm
Copy link

kindohm commented Jan 11, 2019

Wanted to add my $0.02 about cut:

I use abuse cut liberally to prevent samples from bleeding into each other. Sometimes they aren't even long samples. Sometimes it is even fun and unpredictable to pattern cut: # cut "1 3 2/2". I view cut as a completely different feature from "stop all sound right now", which I think is what this topic is about.

To me, cut is a feature to affect playing sound patterns, and not a very good tool for ending the performance or ending sound completely.

@jarmitage
Copy link
Author

Yeah I wouldn’t want to change cut in a way that would affect what you’re describing.

I’m just wondering if there’s anything to be done about the case of ‘what should a pattern using cut do once hush/silence have been sent?’ Where currently I find it unsatisfying that the whole sample will play out

@jarmitage
Copy link
Author

And perhaps if there was a ‘panic’ that might be the easiest way to cover this case?

@OscarSouth
Copy link

In the case of long samples continuing to play out, I just kill the sound using an external mixer (which could be MIDI controlled with an asap to kill all or specific sound from inside tidal). I can see how this is an unsatisfactory solution overall though. A 'panic word' sounds useful here.

@yaxu
Copy link
Member

yaxu commented Mar 7, 2019

ref musikinformatik/SuperDirt#107

This works, in sc:

~dirt.soundLibrary.addSynth(\superpanic, (play: { ~dirt.orbits.do(_.freeSynths) }));

in tidal:

let panic = do hush
               once $ s "superpanic"

Then you have the panic function. Or if you prefer, let dontworry = panic

@rseymour
Copy link

rseymour commented Aug 2, 2019

After playing out with TidalCycles a couple times one thing I’d be interested in helping implement would be a per orbit mute. Muting the orbit but completely but not the reverb tails, effects, etc. allowing a complete cut out like hitting the mute channel on a mixer. I may mess around with implementing the SC/tidal piece for it based on this panic implementation.

@gilfuser
Copy link

gilfuser commented Aug 3, 2019 via email

yaxu added a commit to musikinformatik/SuperDirt that referenced this issue May 4, 2020
yaxu added a commit that referenced this issue Jun 2, 2020
telephon pushed a commit to musikinformatik/SuperDirt that referenced this issue Jun 3, 2020
@yaxu yaxu closed this as completed Jun 3, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants