From b85f8bc7af3fda0f31af1c79a9f25145b8004705 Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Tue, 3 Aug 2004 09:56:19 +0000 Subject: works of one morning svn path=/trunk/externals/tb/; revision=1906 --- sc4pd/source/DelayUnit.cpp | 77 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 sc4pd/source/DelayUnit.cpp (limited to 'sc4pd/source/DelayUnit.cpp') diff --git a/sc4pd/source/DelayUnit.cpp b/sc4pd/source/DelayUnit.cpp new file mode 100644 index 0000000..7f96677 --- /dev/null +++ b/sc4pd/source/DelayUnit.cpp @@ -0,0 +1,77 @@ +/* sc4pd + public class for several delay objects + + Copyright (c) 2004 Tim Blechmann. + + This code is derived from: + SuperCollider real time audio synthesis system + Copyright (c) 2002 James McCartney. All rights reserved. + http://www.audiosynth.com + + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + Based on: + PureData by Miller Puckette and others. + http://www.crca.ucsd.edu/~msp/software.html + FLEXT by Thomas Grill + http://www.parasitaere-kapazitaeten.net/ext + SuperCollider by James McCartney + http://www.audiosynth.com + + Coded while listening to: + + +*/ + +#include "sc4pd.hpp" +#include "DelayUnit.hpp" + +void DelayUnit_ar::DelayUnit_AllocDelayLine() +{ + long delaybufsize = (long)ceil(m_maxdelaytime * Samplerate() + 1.f); + delaybufsize = delaybufsize + Blocksize(); + delaybufsize = NEXTPOWEROFTWO(delaybufsize); // round up to next power of two + m_fdelaylen = m_idelaylen = delaybufsize; + + delete m_dlybuf; + m_dlybuf = new float[delaybufsize] ; + m_mask = delaybufsize - 1; +} + +void DelayUnit_ar::DelayUnit_Dtor() +{ + delete m_dlybuf; +} + +float DelayUnit_ar::CalcDelay(float delaytime) +{ + float next_dsamp = delaytime * Samplerate(); + return sc_clip(next_dsamp, 1.f, m_fdelaylen); +} + +void DelayUnit_ar::DelayUnit_Reset(float f, float g) +{ + m_maxdelaytime = f; + m_delaytime = g; + m_dlybuf = 0; + + DelayUnit_AllocDelayLine(); + + m_dsamp = CalcDelay(m_delaytime); + + m_numoutput = 0; + m_iwrphase = 0; +} -- cgit v1.2.1 From f91b27f71b88c45202afe0baf9776e30c4177e19 Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Tue, 3 Aug 2004 17:51:51 +0000 Subject: small changes svn path=/trunk/externals/tb/; revision=1907 --- sc4pd/source/DelayUnit.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'sc4pd/source/DelayUnit.cpp') diff --git a/sc4pd/source/DelayUnit.cpp b/sc4pd/source/DelayUnit.cpp index 7f96677..5b11f96 100644 --- a/sc4pd/source/DelayUnit.cpp +++ b/sc4pd/source/DelayUnit.cpp @@ -46,26 +46,24 @@ void DelayUnit_ar::DelayUnit_AllocDelayLine() delaybufsize = NEXTPOWEROFTWO(delaybufsize); // round up to next power of two m_fdelaylen = m_idelaylen = delaybufsize; - delete m_dlybuf; + delete[] m_dlybuf; m_dlybuf = new float[delaybufsize] ; m_mask = delaybufsize - 1; } void DelayUnit_ar::DelayUnit_Dtor() { - delete m_dlybuf; + delete[] m_dlybuf; } float DelayUnit_ar::CalcDelay(float delaytime) { - float next_dsamp = delaytime * Samplerate(); - return sc_clip(next_dsamp, 1.f, m_fdelaylen); + float next_dsamp = delaytime * Samplerate(); + return sc_clip(next_dsamp, 1.f, m_fdelaylen); } -void DelayUnit_ar::DelayUnit_Reset(float f, float g) +void DelayUnit_ar::DelayUnit_Reset() { - m_maxdelaytime = f; - m_delaytime = g; m_dlybuf = 0; DelayUnit_AllocDelayLine(); @@ -75,3 +73,10 @@ void DelayUnit_ar::DelayUnit_Reset(float f, float g) m_numoutput = 0; m_iwrphase = 0; } + +void FeedbackDelay_ar::FeedbackDelay_Reset() +{ + DelayUnit_Reset(); + + m_feedbk = CalcFeedback(m_delaytime, m_decaytime); +} -- cgit v1.2.1 From dfed9bb41f3da99644213f11edbef530b2df1ee2 Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Wed, 4 Aug 2004 16:46:55 +0000 Subject: *** empty log message *** svn path=/trunk/externals/tb/; revision=1908 --- sc4pd/source/DelayUnit.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'sc4pd/source/DelayUnit.cpp') diff --git a/sc4pd/source/DelayUnit.cpp b/sc4pd/source/DelayUnit.cpp index 5b11f96..45b05d5 100644 --- a/sc4pd/source/DelayUnit.cpp +++ b/sc4pd/source/DelayUnit.cpp @@ -30,8 +30,7 @@ http://www.parasitaere-kapazitaeten.net/ext SuperCollider by James McCartney http://www.audiosynth.com - - Coded while listening to: + Coded while listening to: */ -- cgit v1.2.1 From 89f570e5ebeab979202acf679974bafd05072692 Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Sat, 7 Aug 2004 14:01:31 +0000 Subject: sc4pd_dsp class and other changes svn path=/trunk/externals/tb/; revision=1912 --- sc4pd/source/DelayUnit.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'sc4pd/source/DelayUnit.cpp') diff --git a/sc4pd/source/DelayUnit.cpp b/sc4pd/source/DelayUnit.cpp index 45b05d5..bbd5a2d 100644 --- a/sc4pd/source/DelayUnit.cpp +++ b/sc4pd/source/DelayUnit.cpp @@ -30,12 +30,12 @@ http://www.parasitaere-kapazitaeten.net/ext SuperCollider by James McCartney http://www.audiosynth.com - Coded while listening to: + Coded while listening to: */ -#include "sc4pd.hpp" +// #include "sc4pd.hpp" #include "DelayUnit.hpp" void DelayUnit_ar::DelayUnit_AllocDelayLine() -- cgit v1.2.1 From ea10413727c241467ab729cee102dd68534f4db9 Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Sat, 7 Aug 2004 22:57:36 +0000 Subject: *** empty log message *** svn path=/trunk/externals/tb/; revision=1915 --- sc4pd/source/DelayUnit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'sc4pd/source/DelayUnit.cpp') diff --git a/sc4pd/source/DelayUnit.cpp b/sc4pd/source/DelayUnit.cpp index bbd5a2d..bd57f7d 100644 --- a/sc4pd/source/DelayUnit.cpp +++ b/sc4pd/source/DelayUnit.cpp @@ -35,7 +35,7 @@ */ -// #include "sc4pd.hpp" +#include "sc4pd.hpp" #include "DelayUnit.hpp" void DelayUnit_ar::DelayUnit_AllocDelayLine() -- cgit v1.2.1