aboutsummaryrefslogtreecommitdiff
path: root/externals/build
diff options
context:
space:
mode:
authorGeorg Holzmann <grholzi@users.sourceforge.net>2007-01-12 23:53:15 +0000
committerGeorg Holzmann <grholzi@users.sourceforge.net>2007-01-12 23:53:15 +0000
commitdf828adc5de7b218b8aaaefcbeb77b8e263e8564 (patch)
treeb4e5b6f2ae345aa4095082007b711e891a9eb150 /externals/build
parentdf451333de03fdb62e31abcf50d8655a2584ad1d (diff)
ekext now in libdir format
svn path=/trunk/; revision=7325
Diffstat (limited to 'externals/build')
-rw-r--r--externals/build/src/cup.c42
-rw-r--r--externals/build/src/doubledelta.c48
-rw-r--r--externals/build/src/framescore~.c101
-rw-r--r--externals/build/src/framespect~.c111
-rw-r--r--externals/build/src/hssc~.c98
-rw-r--r--externals/build/src/listmoses.c149
-rw-r--r--externals/build/src/lpc~.c203
-rw-r--r--externals/build/src/lpreson~.c131
-rw-r--r--externals/build/src/peakit~.c138
-rw-r--r--externals/build/src/simile.c69
-rw-r--r--externals/build/src/simile~.c84
-rw-r--r--externals/build/src/steady.c80
-rw-r--r--externals/build/src/voicing_detector~.c131
-rw-r--r--externals/build/src/zeroxpos~.c101
14 files changed, 0 insertions, 1486 deletions
diff --git a/externals/build/src/cup.c b/externals/build/src/cup.c
deleted file mode 100644
index 6aca2141..00000000
--- a/externals/build/src/cup.c
+++ /dev/null
@@ -1,42 +0,0 @@
-#include "m_pd.h"
-
-t_class *cup_class;
-
-typedef struct _cup
-{
- t_object x_obj;
- t_int f_count, fa;
- t_outlet *count;
-} t_cup;
-
-void cup_float(t_cup *y, t_floatarg f)
-{
- y->f_count = f;
-}
-
-void cup_bang(t_cup *y)
-{
- outlet_float(y->count, y->f_count);
- y->f_count += 1;
-}
-
-void *cup_new(t_floatarg f)
-{
- t_cup *y = (t_cup *)pd_new(cup_class);
- y->fa = f;
- y->f_count = 0;
- y->count = outlet_new(&y->x_obj, gensym("float"));
- return(void *)y;
-}
-
-void cup_setup(void)
-{
- cup_class = class_new(gensym("cup"),
- (t_newmethod)cup_new,
- 0, sizeof(t_cup),
- 0, A_DEFFLOAT, 0);
- post("cup counts up ^_^");
- class_sethelpsymbol(cup_class, gensym("help-cup"));
- class_addbang(cup_class, cup_bang);
- class_addfloat(cup_class, cup_float);
-}
diff --git a/externals/build/src/doubledelta.c b/externals/build/src/doubledelta.c
deleted file mode 100644
index 9da52b12..00000000
--- a/externals/build/src/doubledelta.c
+++ /dev/null
@@ -1,48 +0,0 @@
-#include "m_pd.h"
-
-t_class *doubledelta_class;
-
-typedef struct _doubledelta
-{
- t_object x_obj;
- t_int f_now, f_prev, f_delta, f_delta_prev, f_doubledelta, fa;
- t_outlet *delta, *doubledelta;
-} t_doubledelta;
-
-void doubledelta_float(t_doubledelta *y, t_floatarg f)
-{
- y->f_delta_prev = y->f_delta;
- y->f_prev = y->f_now;
- y->f_now = f;
- y->f_delta = y->f_now - y->f_prev;
- y->f_doubledelta = y->f_delta - y->f_delta_prev;
- outlet_float(y->doubledelta, y->f_doubledelta);
- outlet_float(y->delta, y->f_delta);
-}
-
-void doubledelta_bang(t_doubledelta *y)
-{
- outlet_float(y->doubledelta, y->f_doubledelta);
- outlet_float(y->delta, y->f_delta);
-}
-
-void *doubledelta_new(t_floatarg f)
-{
- t_doubledelta *y = (t_doubledelta *)pd_new(doubledelta_class);
- y->fa = f;
- y->delta = outlet_new(&y->x_obj, gensym("float"));
- y->doubledelta = outlet_new(&y->x_obj, gensym("float"));
- return(void *)y;
-}
-
-void doubledelta_setup(void)
-{
- doubledelta_class = class_new(gensym("doubledelta"),
- (t_newmethod)doubledelta_new,
- 0, sizeof(t_doubledelta),
- 0, A_DEFFLOAT, 0);
- post("delta & delta-delta values, <morph_2016@yahoo.co.uk>");
- class_sethelpsymbol(doubledelta_class, gensym("help-ddelta"));
- class_addbang(doubledelta_class, doubledelta_bang);
- class_addfloat(doubledelta_class, doubledelta_float);
-}
diff --git a/externals/build/src/framescore~.c b/externals/build/src/framescore~.c
deleted file mode 100644
index 71a6d39b..00000000
--- a/externals/build/src/framescore~.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * framescore~ : Weighted block comparison.
- * Copyright (C) 2005 Edward Kelly <morph_2016@yahoo.co.uk>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "m_pd.h"
-
-static t_class *framescore_tilde_class;
-
-typedef struct _framescore_tilde
-{
- t_object x_obj;
- t_float f;
- t_float f_max, f_win, f_accum;
- t_outlet *f_score;
-} t_framescore_tilde;
-
-t_int *framescore_tilde_perform(t_int *w)
-{
- t_framescore_tilde *x = (t_framescore_tilde *)(w[1]);
- t_sample *in1 = (t_sample *)(w[2]);
- t_sample *in2 = (t_sample *)(w[3]);
- int n = (int)(w[4]);
- float vector1;
- float vector2;
- x->f_accum = 0;
- float block_accum = 0;
- x->f_max = 0;
- float score = 0;
- float avg = 0;
- int block = n;
- x->f_win = x->f_win > 0 ? x->f_win : 0.01;
-
- while (n--)
- {
- vector1 = (*in1++);
- vector2 = (*in2++);
- vector1 = vector1 > 0 ? vector1 : 0 - vector1;
- vector2 = vector2 > 0 ? vector2 : 0 - vector2;
- block_accum += vector2;
- x->f_max = vector2 > x->f_max ? vector2 : x->f_max;
- float diff = vector1 > vector2 ? vector1 - vector2 : vector2 - vector1;
- x->f_accum += (1/((diff/x->f_win)+1)) * vector2;
- }
- score = x->f_accum / x->f_max;
- block_accum /= x->f_max;
- avg = score / block_accum;
- outlet_float(x->f_score, avg);
-
- return(w+5);
-}
-
-void framescore_tilde_dsp(t_framescore_tilde *x, t_signal **sp)
-{
- dsp_add(framescore_tilde_perform, 4, x,
- sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
-}
-
-void *framescore_tilde_new(t_floatarg f)
-{
- t_framescore_tilde *x = (t_framescore_tilde *)pd_new(framescore_tilde_class);
-
- x->f_win = f;
-
- inlet_new (&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal);
- floatinlet_new (&x->x_obj, &x->f_win);
- x->f_score = outlet_new(&x->x_obj, gensym("float"));
-
- return (void *)x;
-}
-
-
-void framescore_tilde_setup(void)
-{
- framescore_tilde_class = class_new(gensym("framescore~"),
- (t_newmethod)framescore_tilde_new,
- 0, sizeof(t_framescore_tilde),
- CLASS_DEFAULT, A_DEFFLOAT, 0);
-
- post("|+++++++++++framescore~+++++++++++++|");
- post("|+++++weighted block comparison+++++|");
- post("|+++edward+++++++kelly+++++++2005+++|");
-
- class_addmethod(framescore_tilde_class, (t_method)framescore_tilde_dsp,
- gensym("dsp"), 0);
- class_sethelpsymbol(framescore_tilde_class, gensym("help-framescore~"));
- CLASS_MAINSIGNALIN(framescore_tilde_class, t_framescore_tilde, f);
-}
diff --git a/externals/build/src/framespect~.c b/externals/build/src/framespect~.c
deleted file mode 100644
index c4618988..00000000
--- a/externals/build/src/framespect~.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * framespect~ : Weighted alpha comparison, block-by-block.
- * Copyright (C) 2005 Edward Kelly <morph_2016@yahoo.co.uk>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "m_pd.h"
-#include <math.h>
-
-static t_class *framespect_tilde_class;
-
-typedef struct _framespect_tilde
-{
- t_object x_obj;
- t_float f;
- t_float f_max, f_win, f_accum;
- t_outlet *f_score;
-} t_framespect_tilde;
-
-t_int *framespect_tilde_perform(t_int *w)
-{
- t_framespect_tilde *x = (t_framespect_tilde *)(w[1]);
- t_sample *real1 = (t_sample *)(w[2]);
- t_sample *imag1 = (t_sample *)(w[3]);
- t_sample *real2 = (t_sample *)(w[4]);
- t_sample *imag2 = (t_sample *)(w[5]);
- int n = (int)(w[6]);
- float r1, i1, r2, i2;
- float vector1;
- float vector2;
- x->f_accum = 0;
- float block_accum = 0;
- x->f_max = 0;
- float score = 0;
- float avg = 0;
- int block = n;
- x->f_win = x->f_win > 0 ? x->f_win : 0.01;
-
- while (n--)
- {
- r1 = (*real1++);
- i1 = (*imag1++);
- r2 = (*real2++);
- i2 = (*imag2++);
- vector1 = sqrt((r1 * r1) + (i1 * i1));
- vector2 = sqrt((r2 * r2) + (i2 * i2));
- vector1 = vector1 > 0 ? vector1 : 0 - vector1;
- vector2 = vector2 > 0 ? vector2 : 0 - vector2;
- block_accum += vector2;
- x->f_max = vector2 > x->f_max ? vector2 : x->f_max;
- float diff = vector1 > vector2 ? vector1 - vector2 : vector2 - vector1;
- x->f_accum += (1/((diff/x->f_win)+1)) * vector2;
- }
- score = x->f_accum / x->f_max;
- block_accum /= x->f_max;
- avg = score / block_accum;
- outlet_float(x->f_score, avg);
-
- return(w+7);
-}
-
-void framespect_tilde_dsp(t_framespect_tilde *x, t_signal **sp)
-{
- dsp_add(framespect_tilde_perform, 6, x,
- sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[0]->s_n);
-}
-
-void *framespect_tilde_new(t_floatarg f)
-{
- t_framespect_tilde *x = (t_framespect_tilde *)pd_new(framespect_tilde_class);
-
- x->f_win = f;
-
- inlet_new (&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal);
- inlet_new (&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal);
- inlet_new (&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal);
- floatinlet_new (&x->x_obj, &x->f_win);
- x->f_score = outlet_new(&x->x_obj, gensym("float"));
-
- return (void *)x;
-}
-
-
-void framespect_tilde_setup(void)
-{
- framespect_tilde_class = class_new(gensym("framespect~"),
- (t_newmethod)framespect_tilde_new,
- 0, sizeof(t_framespect_tilde),
- CLASS_DEFAULT, A_DEFFLOAT, 0);
-
- post("|'''''''''''framespect~'''''''''''''|");
- post("|'''''weighted alpha comparison'''''|");
- post("|'''edward'''''''kelly'''''''2005'''|");
-
- class_addmethod(framespect_tilde_class, (t_method)framespect_tilde_dsp,
- gensym("dsp"), 0);
- class_sethelpsymbol(framespect_tilde_class, gensym("help-framespect~"));
- CLASS_MAINSIGNALIN(framespect_tilde_class, t_framespect_tilde, f);
-}
diff --git a/externals/build/src/hssc~.c b/externals/build/src/hssc~.c
deleted file mode 100644
index f62ad9de..00000000
--- a/externals/build/src/hssc~.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * hssc~ : Highest Significant Spectral Component, according to amplitude ratio to
- * Strongest Significant Spectral Component.
- * Copyright (C) 2005 Edward Kelly <morph_2016@yahoo.co.uk>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "m_pd.h"
-#include <math.h>
-
-static t_class *hssc_tilde_class;
-
-typedef struct _hssc_tilde
-{
- t_object x_obj;
- t_float f;
- t_float f_maxbin, f_minbin, f_ratio;
- t_outlet *f_hssc, *f_sssc;
-} t_hssc_tilde;
-
-t_int *hssc_tilde_perform(t_int *w)
-{
- t_hssc_tilde *x = (t_hssc_tilde *)(w[1]);
- t_sample *real = (t_sample *)(w[2]);
- t_sample *imag = (t_sample *)(w[3]);
- int n = (int)(w[4]);
- int incr = 0;
- double vectorr, vectori;
- double max = 0;
- double alpha;
- x->f_maxbin = x->f_minbin = 0;
- x->f_ratio = x->f_ratio > 0 ? x->f_ratio : 100;
-
- while (n--)
- {
- vectorr = (*real++);
- vectori = (*imag++);
- alpha = sqrt((vectorr * vectorr) + (vectori * vectori));
- x->f_maxbin = alpha > max ? incr : x->f_maxbin;
- max = alpha > max ? alpha : max;
- x->f_minbin = alpha > (max / x->f_ratio) ? incr : x->f_minbin;
- incr++;
- }
- outlet_float(x->f_sssc, x->f_maxbin);
- outlet_float(x->f_hssc, x->f_minbin);
-
- return(w+5);
-}
-
-void hssc_tilde_dsp(t_hssc_tilde *x, t_signal **sp)
-{
- dsp_add(hssc_tilde_perform, 4, x,
- sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
-}
-
-void *hssc_tilde_new(t_floatarg f)
-{
- t_hssc_tilde *x = (t_hssc_tilde *)pd_new(hssc_tilde_class);
-
- x->f_ratio = f;
-
- inlet_new (&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal);
- floatinlet_new (&x->x_obj, &x->f_ratio);
- x->f_hssc = outlet_new(&x->x_obj, gensym("float"));
- x->f_sssc = outlet_new(&x->x_obj, gensym("float"));
-
- return (void *)x;
-}
-
-
-void hssc_tilde_setup(void)
-{
- hssc_tilde_class = class_new(gensym("hssc~"),
- (t_newmethod)hssc_tilde_new,
- 0, sizeof(t_hssc_tilde),
- CLASS_DEFAULT, A_DEFFLOAT, 0);
-
- post("|=================hssc~==================|");
- post("|=highest significant spectral component=|");
- post("|======edward=======kelly=======2005=====|");
-
- class_addmethod(hssc_tilde_class, (t_method)hssc_tilde_dsp,
- gensym("dsp"), 0);
- class_sethelpsymbol(hssc_tilde_class, gensym("help-hssc~"));
- CLASS_MAINSIGNALIN(hssc_tilde_class, t_hssc_tilde, f);
-}
diff --git a/externals/build/src/listmoses.c b/externals/build/src/listmoses.c
deleted file mode 100644
index 864b683b..00000000
--- a/externals/build/src/listmoses.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/* listmoses - separate a list according to its contents' values
- * Copyright (C) 2005 Edward Kelly <morph_2016@yahoo.co.uk>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "m_pd.h"
-
-static t_class *listmoses_class;
-
-typedef struct _listmoses
-{
- t_object x_obj;
- t_atom lowlist[1024];
- t_atom midlist[1024];
- t_atom highlist[1024];
- t_atom lowamps[1024];
- t_atom midamps[1024];
- t_atom highamps[1024];
- t_atom ampslist[1024];
- t_float lowsplit, highsplit;
- t_int low_argc, mid_argc, high_argc;
- t_outlet *low_list, *mid_list, *high_list, *low_buddy, *mid_buddy, *high_buddy;
-} t_listmoses;
-
-void listmoses_list(t_listmoses *x, t_symbol *s, int argc, t_atom *argv)
-{
- float temp;
- if (x->highsplit < x->lowsplit)
- {
- temp = x->highsplit;
- x->highsplit = x->lowsplit;
- x->lowsplit = temp;
- }
- float current, curamps;
- int i;
- x->low_argc = 0;
- x->mid_argc = 0;
- x->high_argc = 0;
- for (i=0; i<argc; i++)
- {
- current = atom_getfloat(argv+i);
- curamps = atom_getfloatarg(i,argc,x->ampslist);
- if (current < x->lowsplit)
- {
- SETFLOAT(&x->lowlist[x->low_argc], current);
- SETFLOAT(&x->lowamps[x->low_argc], curamps);
- x->low_argc++;
- }
- else if (current >= x->lowsplit && current < x->highsplit)
- {
- SETFLOAT(&x->midlist[x->mid_argc], current);
- SETFLOAT(&x->midamps[x->mid_argc], curamps);
- x->mid_argc++;
- }
- else
- {
- SETFLOAT(&x->highlist[x->high_argc], current);
- SETFLOAT(&x->highamps[x->high_argc], curamps);
- x->high_argc++;
- }
- }
- outlet_list(x->high_buddy, gensym("list"), x->high_argc, x->highamps);
- outlet_list(x->mid_buddy, gensym("list"), x->mid_argc, x->midamps);
- outlet_list(x->low_buddy, gensym("list"), x->low_argc, x->lowamps);
- outlet_list(x->high_list, gensym("list"), x->high_argc, x->highlist);
- outlet_list(x->mid_list, gensym("list"), x->mid_argc, x->midlist);
- outlet_list(x->low_list, gensym("list"), x->low_argc, x->lowlist);
-}
-
-void listmoses_amps(t_listmoses *x, t_symbol *s, int argc, t_atom *argv)
-{
- float curamp;
- int i;
- for (i=0; i<argc; i++)
- {
- curamp = atom_getfloat(argv+i);
- SETFLOAT (&x->ampslist[i], curamp);
- }
-}
-
-void listmoses_bang(t_listmoses *x)
-{
- outlet_list(x->high_buddy, gensym("list"), x->high_argc, x->highamps);
- outlet_list(x->mid_buddy, gensym("list"), x->mid_argc, x->midamps);
- outlet_list(x->low_buddy, gensym("list"), x->low_argc, x->lowamps);
- outlet_list(x->high_list, gensym("list"), x->high_argc, x->highlist);
- outlet_list(x->mid_list, gensym("list"), x->mid_argc, x->midlist);
- outlet_list(x->low_list, gensym("list"), x->low_argc, x->lowlist);
-}
-
-void *listmoses_new(t_symbol *s, int argc, t_atom *argv)
-{
- t_listmoses *x = (t_listmoses *)pd_new(listmoses_class);
- x->highsplit = 96;
- x->lowsplit = 36;
-/* switch(argc)
- {
- default:
- case 2:
- x->highsplit = atom_getfloat(argv+1);
- //x->lowsplit = atom_getfloat(argv);
- case 1:
- //x->highsplit = atom_getfloat(argv);
- x->lowsplit = atom_getfloat(argv);
- break;
- case 0:
- } */ // I don't know why it doesn't work with args!
-
- x->low_argc = 0;
- x->mid_argc = 0;
- x->high_argc = 0;
-
- x->low_list = outlet_new(&x->x_obj, gensym("list"));
- x->mid_list = outlet_new(&x->x_obj, gensym("list"));
- x->high_list = outlet_new(&x->x_obj, gensym("list"));
- x->low_buddy = outlet_new(&x->x_obj, gensym("list"));
- x->mid_buddy = outlet_new(&x->x_obj, gensym("list"));
- x->high_buddy = outlet_new(&x->x_obj, gensym("list"));
- inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_list, gensym("amps"));
- floatinlet_new(&x->x_obj, &x->lowsplit);
- floatinlet_new(&x->x_obj, &x->highsplit);
- return (void *)x;
-}
-
-void listmoses_setup(void) {
- listmoses_class = class_new(gensym("listmoses"),
- (t_newmethod)listmoses_new,
- 0, sizeof(t_listmoses),
- 0, A_DEFFLOAT, 0);
- post("|<<<<<<<<<<<<<<<<<<<<<listmoses>>>>>>>>>>>>>>>>>>>>>>|");
- post("|<<split two lists according to values of the first>>|");
- post("|<<<<<<<<<<<<edward-------kelly------2005>>>>>>>>>>>>|");
- class_sethelpsymbol(listmoses_class, gensym("help-listmoses"));
- class_addbang(listmoses_class, listmoses_bang);
- class_addlist(listmoses_class, listmoses_list);
- class_addmethod(listmoses_class, (t_method)listmoses_amps, gensym("amps"), A_GIMME, 0);
-}
diff --git a/externals/build/src/lpc~.c b/externals/build/src/lpc~.c
deleted file mode 100644
index 4c4da416..00000000
--- a/externals/build/src/lpc~.c
+++ /dev/null
@@ -1,203 +0,0 @@
-/* Linear Predictive Coding - PARCOR and residual generation
- * Copyright (C) 2005 Nicolas Chetry <okin@altern.org>
- * and Edward Kelly <morph_2016@yahoo.co.uk>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "m_pd.h"
-#include <math.h>
-#define MAXPOLES 100
-
-t_class *lpc_tilde_class;
-
-typedef struct _lpc_schur
-{
- t_float *c_input, *c_residual;
- /* just so we don't get clicks */
- t_atom x_last_parcors[MAXPOLES];
- t_atom x_parcors[MAXPOLES];
-} t_lpc_schur;
-
-typedef struct _lpc_tilde
-{
- t_object x_obj;
- t_float f_dummy;
- t_float x_order, x_lastorder;
- t_outlet *parcor_list;
- t_lpc_schur x_schur;
-} t_lpc_tilde;
-
-t_int *lpc_tilde_perform(t_int *w)
-{
- t_lpc_tilde *x = (t_lpc_tilde *)(w[1]);
- t_lpc_schur *schur = (t_lpc_schur *)(w[2]);
- int n = (int)(w[3]);
- t_float *in = schur->c_input;
- t_float *res = schur->c_residual;
-// t_float *parcors = schur->PARCORS;
-// t_float *acf = schur->ACF;
-// t_float *k = schur->K;
-// t_float *p = schur->P;
-// t_float *r = schur->r;
- t_int ord = (int)x->x_order;
- t_int l_ord = (int)x->x_lastorder;
-// t_float parcors[ord];
- float acf[ord+1];
- float k[ord+1];
- float p[ord+1];
- float r[ord+1];
- float mem[ord];
- int i, j, bid, y, z;
- int g, h;
- float tmp, temp, sav, di;
- float parcor_1;
- for (i=0; i<ord; i++)
- {
- SETFLOAT (&schur->x_parcors[i],0);
- mem[i] = 0.0;
- }
- for (j=0; j<=ord; j++)
- {
- acf[j] = 0;
- for (i=j; i<n; i++)
- {
- acf[j] += in[i]*in[i-j];
- }
- }
- if (acf[0] == 0)
- {
- for (i=0; i<ord; i++)
- {
- SETFLOAT (&schur->x_parcors[i],0);
- }
- }
- for (i=0; i<=ord; i++)
- {
- p[i]=acf[i];
- if (i > 0 && i < ord)
- {
- k[ord+1-i] = acf[i];
- }
- }
- /* Schurr recursion */
- for (y=1; y<=ord; y++)
- {
- if (p[0] < fabs (p[1]))
- {
- for (i=y; i<=ord; i++)
- {
- r[i] = 0;
- }
- for (bid=1; bid <=ord; bid++)
- {
- SETFLOAT (&schur->x_parcors[bid-1],r[bid]);
- // x->x_parcors[bid-1] = r[bid];
- }
- }
- r[y] = fabs(p[1])/p[0];
-
- if (p[1] >0)
- {
- r[y] = -1.*r[y];
- }
- if (y==ord)
- {
- for (bid=1; bid <=ord; bid++)
- {
- SETFLOAT (&schur->x_parcors[bid-1],r[bid]);
- // x->x_parcors[bid-1] = r[bid];
- }
- }
- p[0] += p[1]*r[y];
-
- for (z=1; z <=ord-y; z++)
- {
- p[z] = p[z+1] + k[ord+1-z]*r[y];
- k[ord+1-z] += p[z+1] * r[y];
- }
- }
- for (bid=1; bid <=ord; bid++)
- {
- SETFLOAT (&schur->x_parcors[bid-1],r[bid]);
- }
- parcor_1 = atom_getfloatarg(0,ord,schur->x_parcors); /* in order to avoid nil coefficients */
- if (parcor_1 > 1e-4 || parcor_1 < -1e-4)
- {
- outlet_list(x->parcor_list,gensym("list"),ord,schur->x_parcors);
-
- /* Analysis FIR lattice filtering */
- for (g=0; g<n; g++)
- {
-
- /* Analysis - Lattice structure */
- sav = di = in[g];
- for (i=0; i<ord; i++)
- {
- t_float parcor = atom_getfloatarg (i,ord,schur->x_parcors);
- SETFLOAT (&schur->x_last_parcors[i],parcor);
- x->x_lastorder = ord;
- temp = mem[i] + parcor*di;
- di += parcor*mem[i];
- mem[i] = sav;
- sav = temp;
- }
- res[g] = di;
-
- } /* next g */
- }
- else
- {
- outlet_list(x->parcor_list,gensym("list"),l_ord,schur->x_last_parcors);
- for (g=0; g<n; g++)
- {
- res[g] = 0;
- }
- }
- return(w+4);
-}
-
-void *lpc_tilde_dsp(t_lpc_tilde *x, t_signal **sp)
-{
- x->x_schur.c_input = sp[0]->s_vec;
- x->x_schur.c_residual = sp[1]->s_vec;
- dsp_add(lpc_tilde_perform, 3, x, &x->x_schur, sp[0]->s_n);
- return (void *)x;
-}
-
-void *lpc_tilde_new(t_floatarg f)
-{
- t_lpc_tilde *x = (t_lpc_tilde *)pd_new(lpc_tilde_class);
- x->x_order = f >= 1 ? (int)f : 5;
-
- floatinlet_new(&x->x_obj,&x->x_order);
- outlet_new(&x->x_obj, &s_signal);
- x->parcor_list = outlet_new(&x->x_obj, &s_list);
- return (void *)x;
-}
-
-void lpc_tilde_setup(void)
-{
- lpc_tilde_class = class_new(gensym("lpc~"), (t_newmethod)lpc_tilde_new, 0, sizeof(t_lpc_tilde), CLASS_DEFAULT, A_DEFFLOAT, 0);
-
- post("\n. . Linear Predictive Coding. . . . . . . .");
- post(". . PARCOR coefficients from input. . . . .");
- post(". . by Nicolas Chetry <okin@altern.org> . .");
- post(". & Edward Kelly <morph_2016@yahoo.co.uk> .");
-
- class_addmethod(lpc_tilde_class, (t_method)lpc_tilde_dsp, gensym("dsp"), 0);
-// class_sethelpsymbol(lpc_tilde_class, gensym("help-lpc~"));
- class_sethelpsymbol(lpc_tilde_class, gensym("lpc_test"));
- CLASS_MAINSIGNALIN(lpc_tilde_class, t_lpc_tilde, f_dummy);
-}
diff --git a/externals/build/src/lpreson~.c b/externals/build/src/lpreson~.c
deleted file mode 100644
index c89a8e56..00000000
--- a/externals/build/src/lpreson~.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/* Lattice IIR filter from PARCOR coefficients
- * Copyright (C) 2005 Nicolas Chetry <okin@altern.org>
- * and Edward Kelly <morph_2016@yahoo.co.uk>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "m_pd.h"
-
-static t_class *lpreson_tilde_class;
-
-typedef struct _lpreson_control
-{
- t_float *c_residual, *c_output;
- t_atom *x_parcors;
- /* t_atom x_parc_interp_one[MAXPOLES];
- t_int x_parc_ord_one;
- t_atom x_parc_interp_two[MAXPOLES];
- t_int x_parc_ord_two; */
-} t_lpreson_control;
-
-typedef struct _lpreson_tilde
-{
- t_object x_obj;
- t_float f_dummy;
- t_int x_order;
- t_lpreson_control x_ctl;
-} t_lpreson_tilde;
-
-t_int *lpreson_tilde_perform(t_int *w)
-{
- t_object x_obj;
- t_lpreson_tilde *x = (t_lpreson_tilde *)(w[1]);
- t_lpreson_control *ctl = (t_lpreson_control *)(w[2]);
- int n = (int)(w[3]);
- t_float *in = ctl->c_residual;
- t_float *out = ctl->c_output;
- t_int ord = x->x_order;
- float mem[ord+1];
-/*
- * Do the inverse filtering
- *
- * 'data_in' : residual signal (length 'len')
- * 'data_out' : output frame (length 'len')
- * 'coeff' : the parcor coefficients (length 'tap')
- * 'lattice_iir' : filter memory - Previously initialised using init_lattice_iir_filter()
- *
- */
- int k, i;
- float sri;
-
- for (i=0;i<=ord;i++)
- {
- // SETFLOAT (&schur->x_parcors[i],0);
- mem[i] = 0.0;
- }
-
- for (k = 0; k < n; k++ )
- {
- /* Synthesis filter - Lattice structure */
- sri = in[k];
- for (i=0; i<ord; i++)
- {
- t_float parcor = atom_getfloatarg ((ord-1-i),ord,ctl->x_parcors);
- sri = sri - parcor * mem[ord-1-i];
- mem[ord-i] = mem[ord-1-i] + parcor*sri;
- }
- out[k] = sri;
- mem[0] = sri;
-
- } /* next k */
- return(w+4);
-}
-
-static void lpreson_tilde_list(t_lpreson_tilde *x, t_symbol *s, int argc, t_atom *argv)
-{
- if (argc)
- {
- // x->x_ctl.parc_interp_two = copybytes(x->x_ctl.parc_interp_one, x->x_ctl.parc_ord_one * sizeof(t_atom));
- // x->x_ctl.parc_ord_two = x->x_ctl.parc_ord_one;
- // x->x_ctl.parc_interp_one = copybytes(x->x_ctl.parcors, x->x_order * sizeof(t_atom));
- // x->x_ctl.parc_ord_one = x->x_order;
- freebytes(x->x_ctl.x_parcors, x->x_order * sizeof(t_atom));
- }
-
- x->x_ctl.x_parcors = copybytes(argv, argc * sizeof(t_atom));
- x->x_order = argc;
-}
-
-void *lpreson_tilde_dsp(t_lpreson_tilde *x, t_signal **sp)
-{
- x->x_ctl.c_residual = sp[0]->s_vec;
- x->x_ctl.c_output = sp[1]->s_vec;
- dsp_add(lpreson_tilde_perform, 3, x, &x->x_ctl, sp[0]->s_n);
- return (void *)x;
-}
-
-void *lpreson_tilde_new(t_floatarg f)
-{
- t_lpreson_tilde *x = (t_lpreson_tilde *)pd_new(lpreson_tilde_class);
- x->x_order = f >= 1 ? (int)f : 5;
-
- outlet_new(&x->x_obj, &s_signal);
- return (void *)x;
-}
-
-void lpreson_tilde_setup(void)
-{
- lpreson_tilde_class = class_new(gensym("lpreson~"), (t_newmethod)lpreson_tilde_new, 0, sizeof(t_lpreson_tilde), CLASS_DEFAULT, A_DEFFLOAT, 0);
-
- post(". . Lattice IIR filter for lpc. . . . . . .");
- post(". . by Nicolas Chetry <okin@altern.org> . .");
- post(". & Edward Kelly <morph_2016@yahoo.co.uk> .");
-
- class_addmethod(lpreson_tilde_class, (t_method)lpreson_tilde_dsp, gensym("dsp"), 0);
-// class_sethelpsymbol(lpreson_tilde_class, gensym("help-lpc~"));
- class_addlist(lpreson_tilde_class, lpreson_tilde_list);
- class_sethelpsymbol(lpreson_tilde_class, gensym("lpc-cross-synthesis.pd"));
- CLASS_MAINSIGNALIN(lpreson_tilde_class, t_lpreson_tilde, f_dummy);
-}
diff --git a/externals/build/src/peakit~.c b/externals/build/src/peakit~.c
deleted file mode 100644
index 09cf7879..00000000
--- a/externals/build/src/peakit~.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/* peakit~ - find frequencies and magnitudes of FFT peaks
- * Copyright (C) 2005 Edward Kelly <morph_2016@yahoo.co.uk>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "m_pd.h"
-#include <math.h>
-#include <string.h>
-
-static t_class *peakit_tilde_class;
-
-typedef struct _bin_store
-{
- t_atom peaks[2048];
- t_atom indices[2048];
- t_atom theta[4096];
- t_atom t_prev[4096];
- t_atom t_delta[4096];
- t_atom peakfreqs[2048];
- t_float *f_real, *f_imag;
-} t_bin_store;
-
-typedef struct _peakit_tilde
-{
- t_object x_obj;
- t_bin_store x_ctl;
- t_outlet *peaks_list, *mags_list;
- t_float f_npeaks, f_minmag, f_dummy;
-} t_peakit_tilde;
-
-t_int *peakit_tilde_perform(t_int *w)
-{
- t_peakit_tilde *x = (t_peakit_tilde *)(w[1]);
- t_bin_store *store = (t_bin_store *)(w[2]);
- t_sample *profile = (t_sample *)(w[3]);
- int n = (int)(w[4]);
- t_float *real = store->f_real;
- t_float *imag = store->f_imag;
- int vector = n;
- float s_rate = sys_getsr();
- float bin = s_rate/n;
- float boff = bin/2;
- float interp;
- float minus_two = 0;
- float minus_one = 0;
- float alpha = 0;
- float peakfreq;
- float theta = 0;
- float t_prev = 0;
- float t_delta;
- float pi=M_PI;
- float twopi=2*pi;
- t_int npeaks = 0;
- int i, ndx;
-
- /* find peaks in fourier series */
- for (i = 0; i < n; i++)
- {
- alpha = sqrt(real[i] * real[i] + imag[i] * imag[i]);
- theta = atan2(real[i], imag[i]);
- t_prev = atom_getfloatarg(i, 16384, store->theta);
- SETFLOAT (&store->t_prev[i], t_prev);
- SETFLOAT (&store->theta[i], theta);
- t_delta = (atom_getfloatarg(i, 16384, store->theta))-(atom_getfloatarg(i, 16384, store->t_prev));
- SETFLOAT (&store->t_delta[i], t_delta);
- if (minus_two<minus_one && alpha<minus_one && minus_one>(x->f_minmag/1000))
- {
- SETFLOAT (&store->peaks[npeaks],minus_one);
- SETFLOAT (&store->indices[npeaks],i-1);
- npeaks++;
- }
- minus_two = minus_one;
- minus_one = alpha;
- }
- for (i = 0; i < npeaks; i++)
- {
- ndx = atom_getfloatarg(i, 8192, store->indices);
- t_delta = atom_getfloatarg(ndx, 16384, store->t_delta);
- theta = atom_getfloatarg(ndx, 8192, store->theta);
- t_prev = atom_getfloatarg(ndx, 8192, store->t_prev);
- t_delta = (t_delta < -pi) ? (theta+twopi)-t_prev : (t_delta > pi) ? theta-(t_prev+twopi) : t_delta;
- // t_delta = (t_delta < -pi) ? (theta+twopi)-t_prev : (t_delta > pi) ? theta-(t_prev+twopi) : t_delta;
- peakfreq = (ndx * bin + (boff * (t_delta/pi)));
- SETFLOAT (&store->peakfreqs[i], peakfreq);
- }
- outlet_list(x->mags_list, gensym("list"), (npeaks - 1), store->peaks);
- outlet_list(x->peaks_list, gensym("list"), (npeaks - 1), store->peakfreqs);
- return(w+5);
-}
-
-void *peakit_tilde_dsp(t_peakit_tilde *x, t_signal **sp)
-{
- x->x_ctl.f_real = sp[0]->s_vec;
- x->x_ctl.f_imag = sp[1]->s_vec;
- dsp_add(peakit_tilde_perform, 4, x, &x->x_ctl, sp[0]->s_vec, sp[0]->s_n);
- return (void *)x;
-}
-
-void *peakit_tilde_new(t_floatarg f)
-{
- t_peakit_tilde *x = (t_peakit_tilde *)pd_new(peakit_tilde_class);
- x->f_minmag = f;
- memset(x->x_ctl.theta, 0, 8192);
- inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal);
- floatinlet_new(&x->x_obj, &x->f_minmag);
- x->peaks_list = outlet_new(&x->x_obj, &s_list);
- x->mags_list = outlet_new(&x->x_obj, &s_list);
- return (void *)x;
-}
-
-void peakit_tilde_setup(void)
-{
- peakit_tilde_class = class_new(gensym("peakit~"),
- (t_newmethod)peakit_tilde_new,
- 0, sizeof(t_peakit_tilde),
- CLASS_DEFAULT, A_DEFFLOAT, 0);
-
- post("|--<>---<>--<peakit~>-<>--<>----<>--|");
- post("|--<FFT peaks list>-<>---<>--<>-----|");
- post("|---<>-<frequencies and magnitudes>-|");
- post("|-<>-<edward>-<kelly>--<>---<2005>--|");
-
- class_sethelpsymbol(peakit_tilde_class, gensym("help-peakit~"));
- class_addmethod(peakit_tilde_class, (t_method)peakit_tilde_dsp, gensym("dsp"), 0);
- CLASS_MAINSIGNALIN(peakit_tilde_class, t_peakit_tilde, f_dummy);
-}
diff --git a/externals/build/src/simile.c b/externals/build/src/simile.c
deleted file mode 100644
index 24f049bf..00000000
--- a/externals/build/src/simile.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * simile : windowed similarity comparison
- * Copyright (C) 2005 edward kelly <morph_2016@yahoo.co.uk>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "m_pd.h"
-
-typedef struct _simile {
- t_object x_obj;
- t_float x_win;
- t_float min;
- t_float sign;
- t_float x_in1;
- t_float x_in2;
- t_float x_result;
- t_outlet *x_sim, *x_sign;
-} t_simile;
-
-void simile_float(t_simile *x, t_floatarg in1) {
- x->x_in1 = in1;
- x->x_win = x->x_win > 0 ? x->x_win : 0.01; /* defaults to 0.01 so that we avoid /0 errors */
- x->min = ( x->x_in1 > x->x_in2 ) ? (x->x_in1 - x->x_in2) : (x->x_in2 - x->x_in1);
- x->sign = ( x->x_in1 >= x->x_in2 ) ? 1 : -1;
- x->x_result = 1 / ((x->min / x->x_win) + 1);
- outlet_float(x->x_sign, x->sign);
- outlet_float(x->x_sim, x->x_result);
-}
-
-void simile_bang(t_simile *x) {
- outlet_float(x->x_sign, x->sign);
- outlet_float(x->x_sim, x->x_result);
-}
-
-t_class *simile_class;
-
-void *simile_new(t_floatarg x_win) {
- t_simile *x = (t_simile *)pd_new(simile_class);
- x->x_sim = outlet_new(&x->x_obj, gensym("float"));
- x->x_sign = outlet_new(&x->x_obj, gensym("float"));
- floatinlet_new(&x->x_obj, &x->x_in2);
- floatinlet_new(&x->x_obj, &x->x_win);
- return (void *)x;
-}
-
-void simile_setup(void) {
- simile_class = class_new(gensym("simile"),
- (t_newmethod)simile_new,
- 0, sizeof(t_simile),
- 0, A_DEFFLOAT, 0);
- post("|------------->simile<--------------|");
- post("|->weighted similarity measurement<-|");
- post("|-->edward<----->kelly<----->2005<--|");
- class_sethelpsymbol(simile_class, gensym("help-simile"));
- class_addbang(simile_class, simile_bang);
- class_addfloat(simile_class, simile_float);
-}
diff --git a/externals/build/src/simile~.c b/externals/build/src/simile~.c
deleted file mode 100644
index a6bc5622..00000000
--- a/externals/build/src/simile~.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * simile~ : windowed similarity comparison for signals
- * Copyright (C) 2005 edward kelly <morph_2016@yahoo.co.uk>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "m_pd.h"
-
-static t_class *simile_tilde_class;
-
-typedef struct _simile_tilde {
- t_object x_obj;
- t_sample f_win;
- t_float x_dummy;
- t_outlet *f_frame;
-} t_simile_tilde;
-
-t_int *simile_tilde_perform(t_int *w) {
- t_simile_tilde *x = (t_simile_tilde *)(w[1]);
- t_sample *in1 = (t_sample *)(w[2]);
- t_sample *in2 = (t_sample *)(w[3]);
- t_sample *out = (t_sample *)(w[4]);
- t_sample *sign = (t_sample *)(w[5]);
- int n = (int)(w[6]);
-
- t_sample f_win = x->f_win > 0 ? x->f_win : 0.01;
- t_float f_accum = 0;
- while (n--) {
- float i1=(*in1++);
- float i2=(*in2++);
- float win = x->f_win > 0 ? x->f_win : 0.001;
- float min = i1 > i2 ? i1 - i2 : i2 - i1;
- f_accum += *out++ = 1/((min/win)+1);
- *sign++ = i1 >= i2 ? 1 : -1;
- }
- outlet_float(x->f_frame, f_accum);
- return (w+7);
-}
-
-void simile_tilde_dsp(t_simile_tilde *x, t_signal **sp) {
- dsp_add(simile_tilde_perform, 6, x,
- sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[0]->s_n);
-}
-
-void *simile_tilde_new(t_floatarg f) {
- t_simile_tilde *x = (t_simile_tilde *)pd_new(simile_tilde_class);
-
- x->f_win = f > 0 ? f : 0.01; /* window defaults to 0.01 if no argument given */
-
- inlet_new (&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal);
- floatinlet_new (&x->x_obj, &x->f_win);
- outlet_new(&x->x_obj, &s_signal);
- outlet_new(&x->x_obj, &s_signal);
- x->f_frame = outlet_new(&x->x_obj, gensym("float"));
- return (void *)x;
-}
-
-void simile_tilde_setup(void) {
- simile_tilde_class = class_new(gensym("simile~"),
- (t_newmethod)simile_tilde_new,
- 0, sizeof(t_simile_tilde),
- CLASS_DEFAULT, A_DEFFLOAT, 0);
-
- post("|~~~~~~~~~~~~&simile~&~~~~~~~~~~~~~~|");
- post("|~&weighted similarity measurement&~|");
- post("|~~&edward&~~~~~&kelly&~~~~~&2005&~~|");
-
- class_sethelpsymbol(simile_tilde_class, gensym("help-simile~"));
- class_addmethod(simile_tilde_class,
- (t_method)simile_tilde_dsp, gensym("dsp"), 0);
- CLASS_MAINSIGNALIN(simile_tilde_class, t_simile_tilde, x_dummy);
-}
diff --git a/externals/build/src/steady.c b/externals/build/src/steady.c
deleted file mode 100644
index c79ac4ef..00000000
--- a/externals/build/src/steady.c
+++ /dev/null
@@ -1,80 +0,0 @@
-#include "m_pd.h"
-#include <math.h>
-
-typedef struct _steady
-{
- t_object x_obj;
- t_float f_min;
- t_float f_max;
- t_float f_prev;
- t_int resetflag;
- t_float f_in, f_maxjump;
- t_outlet *max, *min, *smooth;
-} t_steady;
-
-t_class *steady_class;
-
-void steady_float (t_steady *x, t_floatarg fin)
-{
- if (x->resetflag == 0)
- {
- x->f_max = fin > x->f_max ? fin : x->f_max;
- x->f_min = fin < x->f_min ? fin : x->f_min;
- outlet_float(x->smooth, fin);
- outlet_float(x->min, x->f_min);
- outlet_float(x->max, x->f_max);
- x->f_prev = fin;
- x->resetflag=1;
- }
- else
- {
- float min = fin >= x->f_prev ? x->f_prev : fin;
- float max = fin <= x->f_prev ? x->f_prev : fin;
- fin = (max - min) > x->f_maxjump ? x->f_prev : fin;
- x->f_max = fin > x->f_max ? fin : x->f_max;
- x->f_min = fin < x->f_min ? fin : x->f_min;
- float sm_fin = fabs(fin - x->f_prev) > x->f_maxjump ? x->f_prev : fin;
- outlet_float(x->smooth, sm_fin);
- outlet_float(x->min, x->f_min);
- outlet_float(x->max, x->f_max);
- x->f_prev = fin;
- }
-}
-
-void steady_bang (t_steady *x)
-{
- outlet_float(x->min, x->f_min);
- outlet_float(x->max, x->f_max);
- x->f_min = 1e08;
- x->f_max = -1e08;
- x->resetflag=0;
-}
-
-void *steady_new(t_floatarg f)
-{
- t_steady *x = (t_steady *)pd_new(steady_class);
- x->f_min = 1e08;
- x->f_max = -1e08;
- x->f_maxjump = f;
- x->resetflag = 0;
- x->f_prev = 0;
- floatinlet_new(&x->x_obj, &x->f_maxjump);
- x->max = outlet_new(&x->x_obj, gensym("float"));
- x->min = outlet_new(&x->x_obj, gensym("float"));
- x->smooth = outlet_new(&x->x_obj, gensym("float"));
- return (void *)x;
-}
-
-void steady_setup(void) {
- steady_class = class_new(gensym("steady"),
- (t_newmethod)steady_new,
- 0, sizeof(t_steady),
- 0, A_DEFFLOAT, 0);
- post("|+++++++++++++++++>steady<------------------|");
- post("|+>max, min and through must not jump more<-|");
- post("|+++++++++>than a specified amount<---------|");
- post("|+++>edward<------->kelly<++++++++>2005<----|");
- class_sethelpsymbol(steady_class, gensym("help-steady"));
- class_addbang(steady_class, steady_bang);
- class_addfloat(steady_class, steady_float);
-}
diff --git a/externals/build/src/voicing_detector~.c b/externals/build/src/voicing_detector~.c
deleted file mode 100644
index 5ed5a3d0..00000000
--- a/externals/build/src/voicing_detector~.c
+++ /dev/null
@@ -1,131 +0,0 @@
-#include "m_pd.h"
-#include <math.h>
-
-static t_class *voicing_detector_tilde_class;
-
-typedef struct _voicing_control
-{
- t_float *c_input;
- t_float f_sum_abs;
- t_atom otemp[4096];
- t_int method;
-} t_voicing_control;
-
-typedef struct _voicing_detector_tilde
-{
- t_object x_obj;
- t_float f_dummy, f_thresh, f_low, f_high;
- t_voicing_control x_ctl;
- t_outlet *voiced, *prob;
-} t_voicing_detector_tilde;
-
-static t_int *voicing_detector_tilde_perform(t_int *w)
-{
- t_voicing_detector_tilde *x = (t_voicing_detector_tilde *)(w[1]);
- t_voicing_control *ctl = (t_voicing_control *)(w[2]);
- t_int n = (int)(w[3]);
- t_float *in = ctl->c_input;
- if (x->f_high < x->f_low)
- {
- float tmp = x->f_low;
- x->f_low = x->f_high;
- x->f_high = tmp;
- }
- t_float current, previous, next, temp0, avg, max, peak0;
- current = previous = next = temp0 = avg = max = peak0 = 0;
- t_float min = 1000;
- t_float samplerate = sys_getsr();
- t_float start = samplerate / x->f_high;
- start = start > 1 ? start : 1;
- t_float end = samplerate / x->f_low;
- end = end < (n-1) ? end : n-1;
- t_float result, prob, diff, diff2;
- t_int i = 0;
- int j;
- int l = n;
- int maxp = 0;
- int maxi = 0;
- float temp[n];
- ctl->f_sum_abs = 0.0;
- for (i=0;i<l;i++)
- {
- ctl->f_sum_abs += fabs(in[i]); /* I have to calculate f_sum_abs for the whole block before I can calculate amdf */
- temp[i] = 0.0;
- SETFLOAT(&ctl->otemp[i], 0.0);
- }
- for (i=1;i<l;i++)
- {
- for (j=start;j<=end;j++) /* the Average Magnitude Difference Function */
- {
- temp[j] = i + j < l ? in[i+j] : 0.0;
- temp0 = atom_getfloatarg(i, 4096, ctl->otemp);
- temp0 += i == 0 ? 0.0 : fabs(in[j] - temp[j]);
- }
- temp0 += ((float)i / (float)l) * ctl->f_sum_abs;
- SETFLOAT(&ctl->otemp[i], temp0);
- }
-
- for (i=start+1;i<end;i++)
- {
- previous= atom_getfloatarg(i-1, 2048, ctl->otemp);
- current = atom_getfloatarg(i, 2048, ctl->otemp);
- next = atom_getfloatarg(i+1, 2048, ctl->otemp);
- max = current > max ? current : max;
- min = current < min ? current : min;
- avg += current;
- }
- avg = avg / (end-start);
- diff = avg - min;
- diff2 = max - min;
- result = ctl->method == 0 ? ((avg - min) > (x->f_thresh) ? 1 : 0) : ((max - min) > x->f_thresh ? 1 : 0);
- prob = diff2 / max;
- outlet_float(x->prob, prob);
- outlet_float(x->voiced, result);
- return(w+4);
-}
-
-void voicing_detector_tilde_bound(t_voicing_detector_tilde *x, t_floatarg f1, t_floatarg f2)
-{
- x->f_low = f1;
- x->f_high = f2;
-}
-
-void voicing_detector_tilde_method(t_voicing_detector_tilde *x, t_floatarg f)
-{
- x->x_ctl.method = f > 0 ? 1 : 0;
-}
-
-void *voicing_detector_tilde_dsp(t_voicing_detector_tilde *x, t_signal **sp)
-{
- x->x_ctl.c_input = sp[0]->s_vec;
- dsp_add(voicing_detector_tilde_perform, 3, x, &x->x_ctl, sp[0]->s_n);
- return (void *)x;
-}
-
-void *voicing_detector_tilde_new(t_floatarg f)
-{
- t_voicing_detector_tilde *x = (t_voicing_detector_tilde *)pd_new(voicing_detector_tilde_class);
- x->f_thresh = f < 0 ? f : 25;
- x->f_low = 60;
- x->f_high = 500;
-
- floatinlet_new (&x->x_obj, &x->f_thresh);
- x->voiced = outlet_new(&x->x_obj, gensym("float"));
- x->prob = outlet_new(&x->x_obj, gensym("float"));
- return (void *)x;
-}
-
-void voicing_detector_tilde_setup(void)
-{
- voicing_detector_tilde_class = class_new(gensym("voicing_detector~"), (t_newmethod)voicing_detector_tilde_new, 0, sizeof(t_voicing_detector_tilde), CLASS_DEFAULT, A_DEFFLOAT, 0);
-
- post("\n-->AMDF voicing detector v0.2");
- post("-->by Nicolas Chetry <okin@altern.org>");
- post("-->& Edward Kelly <morph_2016@yahoo.co.uk>");
-
- class_addmethod(voicing_detector_tilde_class, (t_method)voicing_detector_tilde_bound, gensym("bound"), A_DEFFLOAT, A_DEFFLOAT, 0);
- class_addmethod(voicing_detector_tilde_class, (t_method)voicing_detector_tilde_method, gensym("method"), A_DEFFLOAT, 0);
- class_addmethod(voicing_detector_tilde_class, (t_method)voicing_detector_tilde_dsp, gensym("dsp"), 0);
- class_sethelpsymbol(voicing_detector_tilde_class, gensym("help-voicing_detector~"));
- CLASS_MAINSIGNALIN(voicing_detector_tilde_class, t_voicing_detector_tilde, f_dummy);
-}
diff --git a/externals/build/src/zeroxpos~.c b/externals/build/src/zeroxpos~.c
deleted file mode 100644
index 1c436085..00000000
--- a/externals/build/src/zeroxpos~.c
+++ /dev/null
@@ -1,101 +0,0 @@
-#include "m_pd.h"
-
-static t_class *zeroxpos_tilde_class;
-
-typedef struct _zeroxpos_control
-{
- t_float *c_input;
- t_int final_pol;
-} t_zeroxpos_control;
-
-typedef struct _zeroxpos_tilde
-{
- t_object x_obj;
- t_zeroxpos_control x_ctl;
- t_float f_num, f_dummy;
- t_int i_bang, i_pol, i_count, i_ndx;
- t_outlet *f_pos, *f_pol;
-} t_zeroxpos_tilde;
-
-t_int *zeroxpos_tilde_perform(t_int *w)
-{
- t_zeroxpos_tilde *x = (t_zeroxpos_tilde *)(w[1]);
- t_zeroxpos_control *ctl = (t_zeroxpos_control *)(w[2]);
- int n = (int)(w[3]);
- t_float *in = ctl->c_input;
- int number = (int)x->f_num;
- int count = x->i_count;
- int polarity = 1;
- int i = 0;
- x->i_pol = 0;
- x->i_ndx = -1;
- int prev = ctl->final_pol;
-
- for(i=0;i<n;i++)
- {
- polarity = in[i] >= 0 ? 1 : -1;
- if((polarity < prev || polarity > prev) && count == number && x->i_bang == 1)
- {
- x->i_ndx = i;
- x->i_pol = polarity;
- count++;
- x->i_bang = 0;
- }
- if((polarity < prev || polarity > prev) && count < number)
- {
- count++;
- }
- if(i==n-1)
- {
- ctl->final_pol = polarity;
- x->i_count = count;
- }
- prev = polarity;
- }
- outlet_float(x->f_pol, (float)x->i_pol);
- outlet_float(x->f_pos, (float)x->i_ndx);
- return(w+4);
-}
-
-void zeroxpos_tilde_bang(t_zeroxpos_tilde *x)
-{
- x->i_bang = 1;
- x->i_count = 0;
-}
-
-void *zeroxpos_tilde_dsp(t_zeroxpos_tilde *x, t_signal **sp)
-{
- x->x_ctl.c_input = sp[0]->s_vec;
- dsp_add(zeroxpos_tilde_perform, 3, x, &x->x_ctl, sp[0]->s_n);
- return (void *)x;
-}
-
-void *zeroxpos_tilde_new(t_floatarg f)
-{
- t_zeroxpos_tilde *x = (t_zeroxpos_tilde *)pd_new(zeroxpos_tilde_class);
- x->f_num = f > 0 ? f : 1;
- x->x_ctl.final_pol = 1;
- x->i_count = 0;
- floatinlet_new (&x->x_obj, &x->f_num);
- x->f_pos = outlet_new(&x->x_obj, gensym("float"));
- x->f_pol = outlet_new(&x->x_obj, gensym("float"));
- return (void *)x;
-}
-
-void zeroxpos_tilde_setup(void)
-{
- zeroxpos_tilde_class = class_new(gensym("zeroxpos~"),
- (t_newmethod)zeroxpos_tilde_new,
- 0, sizeof(t_zeroxpos_tilde),
- CLASS_DEFAULT, A_DEFFLOAT, 0);
-
- post("|¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬zeroxpos~``````````````````````|");
- post("|find 1st, 2nd or 3rd etc zero crossing point in frame|");
- post("|````edward¬¬¬¬¬¬¬¬¬¬¬¬kelly``````````````````2005¬¬¬¬|");
-
- class_sethelpsymbol(zeroxpos_tilde_class, gensym("help-zeroxpos~"));
- class_addbang(zeroxpos_tilde_class, zeroxpos_tilde_bang);
- class_addmethod(zeroxpos_tilde_class, (t_method)zeroxpos_tilde_dsp, gensym("dsp"), 0);
- CLASS_MAINSIGNALIN(zeroxpos_tilde_class, t_zeroxpos_tilde, f_dummy);
-}
-