∆
Hi
Congratulations, and nice work. It's great to put the theory into practice - although MP's work is very much practice-driven - working out the numbers and symbols into usable sounds and processes is strangely rewarding.
"you ever notice that when people try to explain their max patches, it sounds like they’re talking to themselves and it’s a bit like describing music whereby the words just make no effing sense whatsoever and you wish the person would just shut up and show you the art already"
very LOL!
Brendan
Sounds like a very interesting concept. I tested out the second patch, unfortunately I found that both modes were rather clicky. Does it rely on certain Audio settings?
That sounds gangbusters!
I also love that it's just on the audio side, so no additional logic is required for using it.
I was doing something to declick my jumps, but it required all this support around the playback object so things would work right.
@karaokaze
I believe you seek for too much philosophy in this method. It's simple and with limited efficiency. The trigger have to be perfectly in sync with the second EG (and click~ driven from scheduler can be late). My approach below, comments appreciated.
PS. methinks there are only two kinds of people/posts on this forum: those who ask questions and those indulging... ;-)
Hey,
can you avoid saturation efficiently with this method ? I mean, by adding an offset to an attack signal, it could very well go over 1...
avoid saturation? I don't think so. This is technique for canceling discontinuities, and I wouldn't expect anything more. This method is meant rather for sounds with sharp/bright attack ("any artifacts arising from this technique are more likely to be hidden by the new sound’s onset." - Puckette, p.90), so my example with lo-freq sine generator is just for emphasizing the difference.
@karaokaze
it's nice you found "edit" button ;-)
TBH at first I thought "wtf ys al dis ekstra bulszit for", then I thought you somehow enhanced Puckette's method, but after closer look I came back to my first suspicion (for some sample configuration it adds half-sine distortion). If you want to ensure the signal won't overdrive put limiter after gen~. There always will be some "saturation" – the waveform is already distorted (by slicing).
How did you connect your "vibes-a1"? esp. trigger signal? button->click~? i'm sure this part is responsible for "occasional click".
@karaokaze
"and i’m saying that you aren’t dreaming big or trying hard enough :) we can scale the wave after offset for just a short time to account for this, we just haven’t thought of how yet(you nor i… i understand what you say about half-sine distortion but there must be a way to perfectly compress the offset until it ramps back down to normal). your limiter and the whole adsr~ defeats the point and makes it inefficient. i’m saying there’s a way to get this without amp-envelope and without distortion. Miller just didn’t write about it, so you don’t bother thinking beyond it :p
"
I must admit you know me very well...
"“it’s nice you found “edit” button ;-)” ya, totally, after all, i don’t want to sound as condescending and dismissive as you do ;-)
"
Excuse me for sounding patronizing. It wasn't intended. Just my clumsy linguistic skills. "Philosophy" maybe wasn't the best word, but the beauty of MP method is its simplicity. You try to find some coefficient/function ("offset") which would produce perfectly smooth wave transition. But to achieve this you have to know future samples, not available at the point of transition.You can guess them, you can try to predict them, but I don't believe there is a general solution to this problem. Maybe I'm wrong. Prove it, and I would be grateful, as I could learn something.
No offence, but I hoped you are able to get some value from a critical view.
Thank you for pointing interesting topic, and opportunity to get back to Puckette's book.
@karaokaze
(i think also, in the my second example, instead of the additional-beginning sine envelope, i could use the same 1->0 ramp i had originally(which you also used) to ramp the scaling as well as the offset back to normal, but in that case, just need to add another offset for the start of the scaled portion… i’ll try it out, otherwise, i like your tries and my tanh, s’all good)
this sounds like you want just simple EG (short attack with dur equal to ramp) before S&R.
@everybody_else esp. @c74
this thread is a living proof of how much private messaging is needed
@karaokaze (privately)
It is simply that time of the month for me, when a man starts to bleed out of the vagina in his heart. Please excuse me :D
[...]
just to explain where my problem with wording occured, yes, it was the word “philosophy” but also the word “indulge”, you see, this thread is not a frivolous use of time or an indulgence. this is something i badly need to figure out.
when I wrote about asking/indulging distinction I was referring to myself, as I didn't ask any question, moreover I answered unasked. Just to help others and/or show off. Hence that magic semicolon-minus-parenthesis.
Besides some gore details of your physiology (you shared with us above :D), I know nothing about you, so that was nothing personal. Take it easy, my friend. Let's assume this issue is sorted out.
BTW this thread is not a frivolous use of time, as it wasn't eg. preparing test case for your vs my approach.
Perhaps the next step in this is to add some sort of transient detection to it, for dealing with signals where there isn't a known discontinuity. It seems like a pretty handy utility to have in the Max ecosystem.
"Thank You For Your Patience"
we're here because we want, thanks be to you !
ah, found your audio settings - huh, that works really nicely! :)
You might want to cross-post this over to the guys and girls at the monome forum; un-clicking MLR would be very handy.
Sounded interesting so I took a shot. I used an exponential ramp (I like them that way), but a linear ramp version is included. Neither is perfect, for two reasons: 1) the output can end up outside the -1,1 range if the signal wavelength is longer than the ramp duration (likely), and 2) a discontinuity of phase typically also implies a discontinuity of slope, so there is still some low frequency pop. I find the clipping is less likely and the pop more wide-band (less focused) with an exponential envelope.
And how can i tell by that code(whether in the sidebar or in your expr), which gen~ “in”(let) they are taking history from? (or why wouldn’t i assume that ‘env’ is just as well taking history from ‘in2′?)
I'm not entirely sure I understand the question... but maybe a bit of explanation will help? History doesn't take input from any [in], unless you tell it to. In GenExpr, you simply assign to the history name to update it. So whatever code assigns to "env", is what updates the "History env". You can even assign to it in several different places (e.g. in different if/else blocks), or not assign to it at all (in which case it behaves just like a Param). GenExpr is closer to the underlying C++ code in that sense: a History is just a member variable of 64-bit float type, accessible to get/set (read/write) anywhere in the code.
Is this patch not working for anyone?
When I first came across it I could hear the difference, but at the moment, everything is clicking. I've not used it since 6.1.3 (I think).
That's what it is, it works in audio interrupt.
That's problematic as the rest of my patch doesn't play too nice with that box ticked, much more for sharing the patch, it becomes more inconsistent.
Is it because of the [t b f] above groove/click?
That one works a-ok. Thanks for that.
It's exactly that. My patch gets all grungy with interrupt on, though overdrive is needed for all the monome stuff.
Nice! Yeah that works perfectly, though checking it again (not exhaustively) the previous one worked for me too.
Very very useful tool this is.
Hi Karaokaze,
This is awesome! Thanks!
Joe
oops... i meant to say... You're most welcome :)