From d6a71adae7c90224e2a49f0edcd4fd52fa0a1b30 Mon Sep 17 00:00:00 2001 From: Miller Puckette Date: Fri, 19 Aug 2005 23:28:03 +0000 Subject: Version 0.39-0test5. Bug fixes and more care about closing dirty windows and quitting. svn path=/trunk/; revision=3434 --- pd/src/d_misc.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'pd/src/d_misc.c') diff --git a/pd/src/d_misc.c b/pd/src/d_misc.c index ea96c5ac..1056f0cb 100644 --- a/pd/src/d_misc.c +++ b/pd/src/d_misc.c @@ -134,11 +134,24 @@ static t_class *samplerate_tilde_class; typedef struct _samplerate { t_object x_obj; + float x_sr; } t_samplerate; static void samplerate_tilde_bang(t_samplerate *x) { - outlet_float(x->x_obj.ob_outlet, sys_getsr()); + if (!canvas_dspstate) + { + post( + "NB: samplerate~ momentarily started DSP to learn sample rate"); + canvas_resume_dsp(1); + canvas_suspend_dsp(); + } + outlet_float(x->x_obj.ob_outlet, x->x_sr); +} + +static void samplerate_tilde_dsp(t_samplerate *x, t_signal **sp) +{ + x->x_sr = sp[0]->s_sr; } static void *samplerate_tilde_new(t_symbol *s) @@ -153,6 +166,8 @@ static void samplerate_tilde_setup(void) samplerate_tilde_class = class_new(gensym("samplerate~"), (t_newmethod)samplerate_tilde_new, 0, sizeof(t_samplerate), 0, 0); class_addbang(samplerate_tilde_class, samplerate_tilde_bang); + class_addmethod(samplerate_tilde_class, (t_method)samplerate_tilde_dsp, + gensym("dsp"), A_CANT, 0); } /* ------------------------ global setup routine ------------------------- */ -- cgit v1.2.1