summaryrefslogtreecommitdiffstats
path: root/arts/modules/synth/synth_sequence_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'arts/modules/synth/synth_sequence_impl.cc')
-rw-r--r--arts/modules/synth/synth_sequence_impl.cc132
1 files changed, 0 insertions, 132 deletions
diff --git a/arts/modules/synth/synth_sequence_impl.cc b/arts/modules/synth/synth_sequence_impl.cc
deleted file mode 100644
index 981f0bba..00000000
--- a/arts/modules/synth/synth_sequence_impl.cc
+++ /dev/null
@@ -1,132 +0,0 @@
- /*
-
- Copyright (C) 2000 Jeff Tranter
- tranter@pobox.com
-
- (C) 1999 Stefan Westerfeld
- stefan@space.twc.de
-
- (C) 2003 Matthias Kretz
- kretz@kde.org
-
- 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 Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "artsmodulessynth.h"
-#include "stdsynthmodule.h"
-
-using namespace std;
-using namespace Arts;
-
-class Synth_SEQUENCE_impl : virtual public Synth_SEQUENCE_skel,
- virtual public StdSynthModule
-{
-protected:
- float _speed;
- string _seq;
- long posn, delay;
- float *fsequence;
- float *slen;
-
-public:
- Synth_SEQUENCE_impl()
- : _speed( 1 )
- , fsequence( 0 )
- , slen( 0 )
- {
- }
-
- ~Synth_SEQUENCE_impl()
- {
- delete [] fsequence;
- delete [] slen;
- }
-
- float speed() { return _speed; }
- void speed(float newSpeed) { _speed = newSpeed; }
-
- string seq() { return _seq; }
- void seq(const string &newSeq) { _seq = newSeq; }
-
- void streamInit()
- {
- char notea[][4]= {"C-", "C#", "D-", "D#", "E-", "F-", "F#", "G-", "G#", "A-", "A#-", "B-", "\0"};
- char noteb[][3]= {"C-", "Db", "D-", "Eb", "E-", "F-", "Gb", "G-", "Ab", "A-", "Bb", "B-", "\0"};
- float freq[] = {261.7,277.2,293.7,311.2,329.7,349.3,370.0,392.0,415.3,440.0, 466.2, 493.9, 0 };
- float zhoch[] = {1,2,4,8,16,32,64,128,256};
- int s = 0, i, oktave;
- char *nptr;
- float f;
- char buffer[1024];
-
- strncpy(buffer, _seq.c_str(), 1023);
- buffer[ 1023 ] = '\0';
- long bufferlen = strlen(buffer);
- delete[] fsequence;
- delete[] slen;
- fsequence = new float[ bufferlen ];
- slen = new float[ bufferlen ];
- nptr = strtok(buffer, ",;");
- while (nptr)
- {
- if (nptr[3] == ':')
- slen[s] = atof(&nptr[4]);
- else
- slen[s] = 1;
- fprintf(stderr," <%d> %s\n", s, nptr);
- oktave = atol(&nptr[2]);
- nptr[2] = 0;
- f = 0;
- for (i=0; notea[i][0]; i++)
- if (strcmp(nptr,notea[i]) == 0)
- f = freq[i];
- for (i=0; noteb[i][0]; i++)
- if (strcmp(nptr, noteb[i]) == 0)
- f = freq[i];
- f *= zhoch[oktave] / zhoch[4];
- fsequence[s++] = f;
- fprintf(stderr, ">%2.2f\n", f);
- nptr = strtok(NULL,",;");
- }
- fsequence[s] = 0;
- delay = 0;
- posn = 0;
- }
-
- void calculateBlock(unsigned long samples)
- {
- for (unsigned int i=0; i < samples; i++)
- {
- delay++;
- if (delay > _speed * samplingRate * slen[posn])
- {
- posn++;
- if (fsequence[posn] == 0)
- posn = 0;
- delay = 0;
- }
- pos[i] = (int)delay / (_speed * samplingRate * slen[posn]);
- frequency[i] = fsequence[posn];
- }
- }
-
-};
-
-REGISTER_IMPLEMENTATION(Synth_SEQUENCE_impl);
-// vim: sw=4 ts=4 noet