Browse Source

added the masherplugin, added a redraw when maximising windows, const fix in sample class

master
nebogeo 22 years ago
parent
commit
64790ad63b
10 changed files with 953 additions and 4 deletions
  1. +1
    -0
      GUI/Widgets/Fl_DeviceGUI.C
  2. +169
    -0
      SpiralSound/Plugins/MasherPlugin/Makefile.in
  3. +190
    -0
      SpiralSound/Plugins/MasherPlugin/MasherPlugin.C
  4. +74
    -0
      SpiralSound/Plugins/MasherPlugin/MasherPlugin.h
  5. +125
    -0
      SpiralSound/Plugins/MasherPlugin/MasherPluginGUI.C
  6. +68
    -0
      SpiralSound/Plugins/MasherPlugin/MasherPluginGUI.h
  7. +320
    -0
      SpiralSound/Plugins/MasherPlugin/SpiralIcon.xpm
  8. +1
    -1
      SpiralSound/Sample.C
  9. +1
    -1
      SpiralSound/Sample.h
  10. +4
    -2
      configure.in

+ 1
- 0
GUI/Widgets/Fl_DeviceGUI.C View File

@@ -159,6 +159,7 @@ void Fl_DeviceGUI::Maximise()
m_PluginWindow->show(); m_PluginWindow->show();
m_IconButton->hide(); m_IconButton->hide();
parent()->redraw();
((Fl_Canvas*)parent())->ToTop(this); ((Fl_Canvas*)parent())->ToTop(this);
} }




+ 169
- 0
SpiralSound/Plugins/MasherPlugin/Makefile.in View File

@@ -0,0 +1,169 @@
#############################################################################
# Makefile for building MasherPlugin.so
# Generated by tmake at 22:13, 2001/09/17
# Project: MasherPlugin
# Template: app
#############################################################################

####### Compiler, tools and options

CC = gcc
CXX = g++
CFLAGS = @CFLAGS@
CXXFLAGS= @CXXFLAGS@
INCPATH = -I/usr/X11R6/include
LINK = g++ -shared
LFLAGS =
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -ldl
MOC = moc
UIC =

TAR = tar -cf
GZIP = gzip -9f

INSTALL = @INSTALL@

###### Autoconf variables

prefix = @prefix@
exec_prefix = @exec_prefix@

bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@

####### Files

HEADERS = ../SpiralPlugin.h \
../SpiralPluginGUI.h \
../../ChannelHandler.h \
../Widgets/Fl_Knob.H \
../Widgets/Fl_DragBar.H \
../../Sample.h \
MasherPlugin.h \
MasherPluginGUI.h
SOURCES = ../SpiralPlugin.C \
../SpiralPluginGUI.C \
../../ChannelHandler.C \
../Widgets/Fl_Knob.cxx \
../Widgets/Fl_DragBar.cxx \
../../Sample.C \
MasherPlugin.C \
MasherPluginGUI.C
OBJECTS = ../SpiralPlugin.o \
../SpiralPluginGUI.o \
../../ChannelHandler.o \
../Widgets/Fl_Knob.o \
../Widgets/Fl_DragBar.o \
../../Sample.o \
MasherPlugin.o \
MasherPluginGUI.o
INTERFACES =
UICDECLS =
UICIMPLS =
SRCMOC =
OBJMOC =
DIST =
TARGET = MasherPlugin.so

####### Implicit rules

.SUFFIXES: .cpp .cxx .cc .C .c

.cpp.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cxx.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cc.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.C.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.c.o:
$(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<

####### Build rules


all: $(TARGET)

$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS)

moc: $(SRCMOC)

tmake:
tmake MasherPlugin.pro

dist:
$(TAR) MasherPlugin.tar MasherPlugin.pro $(SOURCES) $(HEADERS) $(INTERFACES) $(DIST)
$(GZIP) MasherPlugin.tar

clean:
-rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(UICIMPLS) $(UICDECLS) $(TARGET)
-rm -f *~ core
install:
$(INSTALL) $(TARGET) $(libdir)/SpiralPlugins

####### Sub-libraries


###### Combined headers


####### Compile

../SpiralPlugin.o: ../SpiralPlugin.C \
../SpiralPlugin.h \
../../Sample.h

../SpiralPluginGUI.o: ../SpiralPluginGUI.C \
../SpiralPluginGUI.h \
../Widgets/Fl_DragBar.H \
../SpiralPlugin.h \
../../Sample.h

../Widgets/Fl_Knob.o: ../Widgets/Fl_Knob.cxx \
../Widgets/Fl_Knob.H

../Widgets/Fl_DragBar.o: ../Widgets/Fl_DragBar.cxx \
../Widgets/Fl_DragBar.H

../../Sample.o: ../../Sample.C \
../../Sample.h \
../../SpiralInfo.h

MasherPlugin.o: MasherPlugin.C \
MasherPlugin.h \
../SpiralPlugin.h \
../../Sample.h \
../../SpiralInfo.h \
../../Sample.h \
MasherPluginGUI.h \
../SpiralPluginGUI.h \
../Widgets/Fl_DragBar.H \
SpiralIcon.xpm

MasherPluginGUI.o: MasherPluginGUI.C \
MasherPluginGUI.h \
MasherPlugin.h \
../SpiralPlugin.h \
../../Sample.h \
../../SpiralInfo.h \
../../Sample.h \
../SpiralPluginGUI.h \
../Widgets/Fl_DragBar.H

../../ChannelHandler.o: ../../ChannelHandler.C \
../../ChannelHandler.h

+ 190
- 0
SpiralSound/Plugins/MasherPlugin/MasherPlugin.C View File

@@ -0,0 +1,190 @@
/* SpiralSound
* Copyleft (C) 2001 David Griffiths <dave@pawfal.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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include <math.h>
#include "MasherPlugin.h"
#include "MasherPluginGUI.h"
#include <FL/Fl_Button.h>
#include "SpiralIcon.xpm"

#define PI 3.141592654

float RandRange(float L, float H)
{
return ((rand()%10000/10000.0f)*(H-L))+L;
}

extern "C" {
SpiralPlugin* CreateInstance()
{
return new MasherPlugin;
}

char** GetIcon()
{
return SpiralIcon_xpm;
}

int GetID()
{
return 54;
}

string GetGroupName()
{
return "SpiralSound";
}
}

///////////////////////////////////////////////////////

MasherPlugin::MasherPlugin() :
m_GrainStoreSize(MAX_GRAINSTORE_SIZE),
m_Density(10),
m_Randomness(0),
m_GrainPitch(1),
m_ReadGrain(0),
m_WriteGrain(0)
{
m_PluginInfo.Name="Masher";
m_PluginInfo.Width=120;
m_PluginInfo.Height=130;
m_PluginInfo.NumInputs=3;
m_PluginInfo.NumOutputs=1;
m_PluginInfo.PortTips.push_back("Input");
m_PluginInfo.PortTips.push_back("GrainPitch");
m_PluginInfo.PortTips.push_back("Density");
m_PluginInfo.PortTips.push_back("Output");
m_AudioCH->Register("GrainPitch",&m_GrainPitch);
m_AudioCH->Register("GrainStoreSize",&m_GrainStoreSize);
m_AudioCH->Register("Density",&m_Density);
m_AudioCH->Register("Randomness",&m_Randomness);
}

MasherPlugin::~MasherPlugin()
{
}

PluginInfo &MasherPlugin::Initialise(const HostInfo *Host)
{
return SpiralPlugin::Initialise(Host);
}

SpiralGUIType *MasherPlugin::CreateGUI()
{
return new MasherPluginGUI(m_PluginInfo.Width,
m_PluginInfo.Height,
this,m_AudioCH,m_HostInfo);
}

void MixPitch(Sample &src, Sample &dst, int Pos, float Pitch)
{
float n=0;
int p=Pos;
while (n<src.GetLength() && p<dst.GetLength())
{
if (p>=0) dst.Set(p,dst[p]+src[n]);
n+=Pitch;
p++;
}
}

void MasherPlugin::Execute()
{
GetOutputBuf(0)->Zero();
if (!InputExists(0)) return;
int n=0;
float s=GetInput(0,0);
int last=0;
bool First=true;
// paste any overlapping grains to the start of the buffer.
for (vector<GrainDesc>::iterator i = m_OverlapVec.begin();
i!=m_OverlapVec.end(); i++)
{
MixPitch(m_GrainStore[i->Grain],*GetOutputBuf(0),i->Pos-m_HostInfo->BUFSIZE,m_GrainPitch);
}
m_OverlapVec.clear();
// chop up the buffer and put the grains in the grainstore
for (int n=0; n<m_HostInfo->BUFSIZE; n++)
{
if ((s<0 && GetInput(0,n)>0) || (s>0 && GetInput(0,n)<0))
{
// chop the bits between zero crossings
if (!First)
{
GetInput(0)->GetRegion(m_GrainStore[m_WriteGrain%m_GrainStoreSize],last,n);
m_WriteGrain++;
}
else First=false;
last=n;
s=GetInput(0,n);
}
}
int NextGrain=0;
for (int n=0; n<m_HostInfo->BUFSIZE; n++)
{
int Density = m_Density;
if (InputExists(2)) Density=(int)(Density*GetInput(2,n));
if(n>=NextGrain || rand()%1000<Density)
{
int GrainNum = m_ReadGrain%m_GrainStoreSize;
float Pitch=m_GrainPitch;
if (InputExists(1)) Pitch*=fabs(GetInput(1,n));
MixPitch(m_GrainStore[GrainNum],*GetOutputBuf(0),n,Pitch);
int GrainLength = (int)(m_GrainStore[GrainNum].GetLength()*Pitch);
NextGrain=n+m_GrainStore[GrainNum].GetLength();
// if this grain overlaps the buffer
if (n+GrainLength>m_HostInfo->BUFSIZE)
{
GrainDesc new_grain;
new_grain.Pos=n;
new_grain.Grain=GrainNum;
m_OverlapVec.push_back(new_grain);
}
if (m_Randomness) m_ReadGrain+=1+rand()%m_Randomness;
else m_ReadGrain++;
}
}
}
void MasherPlugin::Randomise()
{
}
void MasherPlugin::StreamOut(ostream &s)
{
s<<m_Version<<" ";
s<<m_GrainStoreSize<<" "<<m_Density<<" "<<m_Randomness<<" "<<m_GrainPitch<<" ";
}

void MasherPlugin::StreamIn(istream &s)
{
int version;
s>>version;
s>>m_GrainStoreSize>>m_Density>>m_Randomness>>m_GrainPitch;
}

+ 74
- 0
SpiralSound/Plugins/MasherPlugin/MasherPlugin.h View File

@@ -0,0 +1,74 @@
/* SpiralSound
* Copyleft (C) 2001 David Griffiths <dave@pawfal.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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/

#include "../SpiralPlugin.h"
#include <FL/Fl.h>

#ifndef MasherPLUGIN
#define MasherPLUGIN

static const int MAX_GRAINSTORE_SIZE = 1000;

class MasherPlugin : public SpiralPlugin
{
public:
MasherPlugin();
virtual ~MasherPlugin();
virtual PluginInfo &Initialise(const HostInfo *Host);
virtual SpiralGUIType *CreateGUI();
virtual void Execute();
virtual void StreamOut(ostream &s);
virtual void StreamIn(istream &s);
// has to be defined in the plugin
virtual void UpdateGUI() { Fl::check(); }
float GetGrainPitch() { return m_GrainPitch; }
int GetGrainStoreSize() { return m_GrainStoreSize; }
int GetDensity() { return m_Density; }
int GetRandomness() { return m_Randomness; }
void Randomise();

private:
int m_GrainStoreSize;
int m_Density;
int m_Randomness;
float m_GrainPitch;
int m_ReadGrain;
int m_WriteGrain;
Sample m_GrainStore[MAX_GRAINSTORE_SIZE];
struct GrainDesc
{
int Pos;
int Grain;
};
vector<GrainDesc> m_OverlapVec;
friend istream &operator>>(istream &s, MasherPlugin &o);
friend ostream &operator<<(ostream &s, MasherPlugin &o);
};
istream &operator>>(istream &s, MasherPlugin &o);
ostream &operator<<(ostream &s, MasherPlugin &o);

#endif

+ 125
- 0
SpiralSound/Plugins/MasherPlugin/MasherPluginGUI.C View File

@@ -0,0 +1,125 @@
/* SpiralPlugin
* Copyleft (C) 2000 David Griffiths <dave@pawfal.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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "MasherPluginGUI.h"
#include <FL/fl_draw.h>
#include <FL/fl_draw.H>
static const int GUI_COLOUR = 179;
static const int GUIBG_COLOUR = 144;
static const int GUIBG2_COLOUR = 145;
////////////////////////////////////////////
MasherPluginGUI::MasherPluginGUI(int w, int h,MasherPlugin *o,ChannelHandler *ch,const HostInfo *Info) :
SpiralPluginGUI(w,h,o,ch)
{
m_Plugin=o;
m_Pitch = new Fl_Knob(5,15,40,40,"GrainPitch");
m_Pitch->type(Fl_Knob::DOTLIN);
m_Pitch->color(GUI_COLOUR);
m_Pitch->labelsize(10);
m_Pitch->maximum(5);
m_Pitch->step(0.001);
m_Pitch->value(1);
m_Pitch->callback((Fl_Callback*)cb_Pitch);
m_Random = new Fl_Knob(70,15,40,40,"Randomness");
m_Random->type(Fl_Knob::DOTLIN);
m_Random->color(GUI_COLOUR);
m_Random->labelsize(10);
m_Random->maximum(100);
m_Random->step(1);
m_Random->value(1);
m_Random->callback((Fl_Callback*)cb_Random);
m_GrainStoreSize = new Fl_Knob(5,70,40,40,"Num Grains");
m_GrainStoreSize->type(Fl_Knob::DOTLIN);
m_GrainStoreSize->color(GUI_COLOUR);
m_GrainStoreSize->labelsize(10);
m_GrainStoreSize->maximum(MAX_GRAINSTORE_SIZE-2);
m_GrainStoreSize->step(1);
m_GrainStoreSize->value(1);
m_GrainStoreSize->callback((Fl_Callback*)cb_GrainStoreSize);
m_Density = new Fl_Knob(70,70,40,40,"Density");
m_Density->type(Fl_Knob::DOTLIN);
m_Density->color(GUI_COLOUR);
m_Density->labelsize(10);
m_Density->maximum(MAX_GRAINSTORE_SIZE);
m_Density->step(1);
m_Density->value(1);
m_Density->callback((Fl_Callback*)cb_Density);
end();
}
extern "C" int sprintf(char *,const char *,...);
void MasherPluginGUI::UpdateValues(SpiralPlugin *o)
{
MasherPlugin* Plugin = (MasherPlugin*)o;
m_Pitch->value(Plugin->GetGrainPitch());
m_Random->value(Plugin->GetRandomness());
m_GrainStoreSize->value(Plugin->GetGrainStoreSize());
m_Density->value(Plugin->GetDensity());
}
inline void MasherPluginGUI::cb_Random_i(Fl_Knob* o, void* v)
{
m_GUICH->Set("Randomness",(int)o->value());
}
void MasherPluginGUI::cb_Random(Fl_Knob* o, void* v)
{ ((MasherPluginGUI*)(o->parent()))->cb_Random_i(o,v); }
inline void MasherPluginGUI::cb_Pitch_i(Fl_Knob* o, void* v)
{
m_GUICH->Set("GrainPitch",(float)o->value());
}
void MasherPluginGUI::cb_Pitch(Fl_Knob* o, void* v)
{ ((MasherPluginGUI*)(o->parent()))->cb_Pitch_i(o,v); }
inline void MasherPluginGUI::cb_MinGrainSize_i(Fl_Knob* o, void* v)
{
m_GUICH->Set("Period",(int)o->value()+1);
}
void MasherPluginGUI::cb_MinGrainSize(Fl_Knob* o, void* v)
{ ((MasherPluginGUI*)(o->parent()))->cb_MinGrainSize_i(o,v); }
inline void MasherPluginGUI::cb_GrainStoreSize_i(Fl_Knob* o, void* v)
{
m_GUICH->Set("GrainStoreSize",(int)o->value()+1);
}
void MasherPluginGUI::cb_GrainStoreSize(Fl_Knob* o, void* v)
{ ((MasherPluginGUI*)(o->parent()))->cb_GrainStoreSize_i(o,v); }
inline void MasherPluginGUI::cb_Density_i(Fl_Knob* o, void* v)
{
m_GUICH->Set("Density",(int)o->value());
}
void MasherPluginGUI::cb_Density(Fl_Knob* o, void* v)
{ ((MasherPluginGUI*)(o->parent()))->cb_Density_i(o,v); }
const string MasherPluginGUI::GetHelpText(const string &loc){
return string("")
+ "Top secret sample masher plugin. Granulates the incoming stream and\n"
+ "carries out various patented algorithms on the result.\n\n"
+ "Truth is I don't really know how it works, but makes sounds like\n"
+ "tttttthhhIIiissssSSSSSSsssssSsSSsS.";
}

+ 68
- 0
SpiralSound/Plugins/MasherPlugin/MasherPluginGUI.h View File

@@ -0,0 +1,68 @@
/* SpiralPlugin
* Copyleft (C) 2000 David Griffiths <dave@pawfal.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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Group.H>
#include <FL/Fl_Slider.H>
#include <FL/Fl_Output.H>
#include <FL/Fl_Box.H>
#include "../Widgets/Fl_Knob.H"
#include "MasherPlugin.h"
#include "../SpiralPluginGUI.h"
#ifndef AmpGUI
#define AmpGUI
class MasherPluginGUI : public SpiralPluginGUI
{
public:
MasherPluginGUI(int w, int h, MasherPlugin *o,ChannelHandler *ch,const HostInfo *Info);
virtual void UpdateValues(SpiralPlugin *o);
virtual SpiralPlugin* GetPlugin() { return m_Plugin; }
MasherPlugin *m_Plugin;
protected:
const string GetHelpText(const string &loc);
private:
Fl_Knob *m_Random;
Fl_Knob *m_Pitch;
Fl_Knob *m_GrainStoreSize;
Fl_Knob *m_Density;
//// Callbacks ////
inline void cb_Random_i(Fl_Knob* o, void* v);
static void cb_Random(Fl_Knob*, void*);
inline void cb_Pitch_i(Fl_Knob* o, void* v);
static void cb_Pitch(Fl_Knob*, void*);
inline void cb_MinGrainSize_i(Fl_Knob* o, void* v);
static void cb_MinGrainSize(Fl_Knob*, void*);
inline void cb_GrainStoreSize_i(Fl_Knob* o, void* v);
static void cb_GrainStoreSize(Fl_Knob*, void*);
inline void cb_Density_i(Fl_Knob* o, void* v);
static void cb_Density(Fl_Knob*, void*);
};
#endif

+ 320
- 0
SpiralSound/Plugins/MasherPlugin/SpiralIcon.xpm View File

@@ -0,0 +1,320 @@
/* XPM */
static char * SpiralIcon_xpm[] = {
"36 36 281 2",
" c None",
". c #8B889B",
"+ c #9C99AA",
"@ c #ADAAB9",
"# c #837F94",
"$ c #7D7990",
"% c #9995A7",
"& c #67627C",
"* c #CDCBD4",
"= c #FCFCFC",
"- c #D1D0D8",
"; c #FFFFFF",
"> c #F1F1F3",
", c #848095",
"' c #2A2248",
") c #CFCED6",
"! c #68637D",
"~ c #ABA8B6",
"{ c #D5D3DB",
"] c #9490A2",
"^ c #C4C4C4",
"/ c #1D1C1D",
"( c #313134",
"_ c #EEEFEE",
": c #FBFBFB",
"< c #EFEFEF",
"[ c #7B768D",
"} c #464060",
"| c #DEDEE1",
"1 c #CBCACC",
"2 c #EEEEF1",
"3 c #79758C",
"4 c #FBFBFC",
"5 c #A2A2A2",
"6 c #000000",
"7 c #F5F6F5",
"8 c #747474",
"9 c #2A2A2B",
"0 c #403958",
"a c #7D788F",
"b c #C0BEC8",
"c c #BCBAC6",
"d c #BCBAC5",
"e c #625C79",
"f c #2B2932",
"g c #191919",
"h c #CCCCCC",
"i c #807B91",
"j c #3B3556",
"k c #F2F2F4",
"l c #929292",
"m c #0E0E0E",
"n c #BFBFBF",
"o c #111111",
"p c #100E15",
"q c #868689",
"r c #FEFDFE",
"s c #D9D7DE",
"t c #9C98AA",
"u c #FDFCFD",
"v c #DDDDDD",
"w c #575755",
"x c #5E5E5E",
"y c #C4C2CD",
"z c #423C5C",
"A c #F0F0F2",
"B c #939393",
"C c #555555",
"D c #4A4A4A",
"E c #010101",
"F c #282828",
"G c #C2C2C2",
"H c #DBDAE0",
"I c #615C78",
"J c #F6F6F7",
"K c #DADADA",
"L c #545454",
"M c #0F0F0F",
"N c #B8B8B8",
"O c #48445C",
"P c #2B2B2C",
"Q c #181900",
"R c #D3D3D3",
"S c #C1BEC9",
"T c #474060",
"U c #31294D",
"V c #716C85",
"W c #65607A",
"X c #625D78",
"Y c #D5D4DB",
"Z c #F7F7F7",
"` c #8B8B8B",
" . c #161616",
".. c #0C0C0C",
"+. c #161800",
"@. c #1A1B00",
"#. c #060600",
"$. c #191A00",
"%. c #393643",
"&. c #47415F",
"*. c #9692A4",
"=. c #D9D8DE",
"-. c #F7F7F8",
";. c #918DA0",
">. c #B8B5C1",
",. c #D1D1D1",
"'. c #212121",
"). c #111200",
"!. c #0B0C00",
"~. c #0F0F00",
"{. c #FEF100",
"]. c #040400",
"^. c #727175",
"/. c #FEFEFF",
"(. c #9D99AA",
"_. c #DBD9E0",
":. c #E9E9E9",
"<. c #CBCBCB",
"[. c #E0E0E0",
"}. c #6C6C6C",
"|. c #515151",
"1. c #A6A6A7",
"2. c #827E93",
"3. c #615C77",
"4. c #EAEAED",
"5. c #DFDFE1",
"6. c #1E1D24",
"7. c #9894A7",
"8. c #B1AEBB",
"9. c #69686F",
"0. c #000001",
"a. c #060500",
"b. c #615C76",
"c. c #5F5A75",
"d. c #413E4D",
"e. c #020203",
"f. c #1A1A1C",
"g. c #C3C1CB",
"h. c #9D9D9D",
"i. c #202020",
"j. c #383838",
"k. c #4C4C4C",
"l. c #111112",
"m. c #C9C7D0",
"n. c #F1F1F1",
"o. c #F8F8F8",
"p. c #232323",
"q. c #050408",
"r. c #AEACB9",
"s. c #FEFEFE",
"t. c #1D1D1D",
"u. c #B7B5C1",
"v. c #9390A2",
"w. c #BBBBBB",
"x. c #414141",
"y. c #030303",
"z. c #28272A",
"A. c #F4F4F6",
"B. c #605B76",
"C. c #736E86",
"D. c #D8D8D8",
"E. c #727272",
"F. c #101010",
"G. c #848486",
"H. c #CCCBD3",
"I. c #747087",
"J. c #6D6881",
"K. c #1C1C1C",
"L. c #242424",
"M. c #656566",
"N. c #F6F6F6",
"O. c #E8E6EA",
"P. c #706B84",
"Q. c #E3E1E6",
"R. c #474746",
"S. c #151515",
"T. c #C8C8C8",
"U. c #AEAEAE",
"V. c #080808",
"W. c #010100",
"X. c #373639",
"Y. c #FDFCFE",
"Z. c #ABA8B7",
"`. c #F1F0F3",
" + c #6D6980",
".+ c #0A090E",
"++ c #95929E",
"@+ c #0A0810",
"#+ c #0D0D0D",
"$+ c #050505",
"%+ c #5B5A5C",
"&+ c #F7F6F7",
"*+ c #F4F3F5",
"=+ c #908C9F",
"-+ c #C8C6D0",
";+ c #837E96",
">+ c #86868A",
",+ c #070608",
"'+ c #ECEBEE",
")+ c #5B5571",
"!+ c #646078",
"~+ c #AFAFB0",
"{+ c #454545",
"]+ c #363636",
"^+ c #7A7A7A",
"/+ c #C8C8C9",
"(+ c #212025",
"_+ c #060607",
":+ c #969699",
"<+ c #FAFAFA",
"[+ c #F8F8F9",
"}+ c #A29EAF",
"|+ c #F7F6F8",
"1+ c #F0F0F1",
"2+ c #B8B7B9",
"3+ c #E4E4E4",
"4+ c #FDFDFD",
"5+ c #A5A2B2",
"6+ c #3B3456",
"7+ c #A8A5B4",
"8+ c #525252",
"9+ c #848387",
"0+ c #CDCDCD",
"a+ c #8D899C",
"b+ c #494262",
"c+ c #68627C",
"d+ c #40395A",
"e+ c #ECECEC",
"f+ c #020202",
"g+ c #B4B5B5",
"h+ c #0B0B0B",
"i+ c #313232",
"j+ c #E3E3E3",
"k+ c #B1AEBC",
"l+ c #BDBBC6",
"m+ c #3C3556",
"n+ c #898599",
"o+ c #EDEDED",
"p+ c #39393A",
"q+ c #040404",
"r+ c #333333",
"s+ c #F5F5F5",
"t+ c #2B2B2B",
"u+ c #2D2A3D",
"v+ c #B6B4C1",
"w+ c #F5F5F6",
"x+ c #605A76",
"y+ c #DAD8DF",
"z+ c #F5F4F6",
"A+ c #615B76",
"B+ c #524D6A",
"C+ c #E4E3E8",
"D+ c #D5D5D5",
"E+ c #1B1B1B",
"F+ c #303030",
"G+ c #AAABAB",
"H+ c #585464",
"I+ c #B0AEBB",
"J+ c #A29FAF",
"K+ c #E9E8E9",
"L+ c #787779",
"M+ c #0F0E15",
"N+ c #2D2D2E",
"O+ c #595959",
"P+ c #FAFAFB",
"Q+ c #807B92",
"R+ c #B0ADBB",
"S+ c #E8E7EB",
"T+ c #3A3258",
"U+ c #E6E5EA",
"V+ c #DFDEE3",
"W+ c #443E5E",
"X+ c #BAB8C4",
"Y+ c #C1BFCA",
"Z+ c #E0E0E5",
"`+ c #D0CED6",
" @ c #362F52",
".@ c #CECCD5",
"+@ c #413A5B",
"@@ c #6A657F",
"#@ c #9793A6",
" ",
" ",
" ",
" . + @ # $ % ",
" & * = * - ; > , ' ; ; ; ) ! ",
" ~ ; ; { ] ; ^ / ( _ ; : < [ ",
" } | 1 2 3 4 5 6 6 7 : 8 9 0 a b ",
" c : d e f g h i j k l 6 m ; n o 6 p q r s ",
" t u ; v w 6 6 x y z A B 6 C ; D E 6 F G ; H ",
" I J ; ; K L 6 6 M N O P E 6 6 6 Q Q M R S T U V W ",
" X Y ; ; ; ; Z ` .6 ..6 6 6 6 6 +.@.#.$.%.&.*.=.-.;. ",
" >.; ; ; ; ; ; = ,.'.6 ).!.~.{.{.].6 6 6 E ^./.; ; (. ",
" _.; ; :.R h <.[.}.6 6 6 6 6 {.{.6 6 6 6 6 E |.1.4 2. ",
" 3.4.; 5...6 6 6 6 6 6 6 6 6 6 {.{.6 6 6 6 6 6 6 6.7. ",
" V @ 8.9.0.6 6 6 6 6 6 6 6 6 6 {.{.6 a.6 6 6 6 6 ",
" b.c.d.6 e.6 6 6 6 6 6 6 6 6 {.{.6 6 6 6 6 6 6 f. ",
" g.; ; h.i.i.j.k.i.6 6 6 6 6 6 {.{.{.6 6 6 6 6 6 l. ",
" m.; ; n.o.; ; ; p.6 6 6 6 6 {.6 6 6 {.6 6 6 6 6 q. ",
" r.; ; ; ; s.; ; t.6 6 6 6 {.6 6 6 6 {.{.6 6 6 6 6 u., ",
" v.; ; s.; : w.x.y.6 6 6 6 {.6 {.{.{.6 {.6 6 6 6 z.s.A.B. ",
" C.; ; ; D.E.F.6 6 6 6 6 6 {.{.6 {.6 {.{.6 6 6 Q G.; ; H.I. ",
" J.J ; : K.6 6 6 6 L...6 6 {.6 {.6 {.6 6 6 6 6 6 M.N.; ; O.P. ",
" Q.; ; R.6 E 6 S.T.U.V.6 6 {.{.{.6 6 6 W.6 6 6 6 X.Y.; ; > P. ",
" Z.; `. +.+6 6 U.s.; ++@+6 6 6 6 6 6 6 6 #+$+6 6 6 %+&+; ; *+=+ ",
" P.-+! ;+>+,+x ; ; '+)+!+~+l {+6 6 6 ]+^+/+(+6 6 6 _+:+<+; ; [+@ ",
" }+|+1+2+3+4+; 5+6+7+; N.{+6 6 E 8+; ; 9+6 6 E 6 o 0+; ; = a+ ",
" b+> ; ; ; ; ; ; c+d+; ; e+j.6 6 f+D ; ; g+h+6 6 6 i+j+; ; k+ ",
" > ; ; ; ; l+m+n+; ; o+p+6 6 q+r+; ; s+t+6 6 u+v+; w+3 ",
" x+y+= ; z+A+B+C+; ; D+E+6 6 f+F+; ; ; G+8+H+ ",
" I+4 J+ X ; ; ; K+L+F+M+N+O+; ; ; s.P+Q+ ",
" R+; ; ; ; ; S+T+U+; ; ; ; = V+W+ ",
" X+Y+Z+4 ; ; `+ @.@; ; ; s n+T ",
" +@ @@#@n+ ",
" ",
" ",
" "};

+ 1
- 1
SpiralSound/Sample.C View File

@@ -253,7 +253,7 @@ void Sample::Move(int Dist)
m_Length=Length; m_Length=Length;
} }


void Sample::GetRegion(Sample &S, int Start, int End)
void Sample::GetRegion(Sample &S, int Start, int End) const
{ {
// do some checking // do some checking
assert(End<GetLength() && Start<GetLength()); assert(End<GetLength() && Start<GetLength());


+ 1
- 1
SpiralSound/Sample.h View File

@@ -59,7 +59,7 @@ public:
void Remove(int Start, int End); void Remove(int Start, int End);
void Reverse(int Start, int End); void Reverse(int Start, int End);
void Move(int Dist); void Move(int Dist);
void GetRegion(Sample &S, int Start, int End);
void GetRegion(Sample &S, int Start, int End) const;
const float *GetBuffer() const {return m_Data;} const float *GetBuffer() const {return m_Data;}
float *GetNonConstBuffer() {return m_Data;} float *GetNonConstBuffer() {return m_Data;}
int GetLength() const {return m_Length;} int GetLength() const {return m_Length;}


+ 4
- 2
configure.in View File

@@ -47,7 +47,7 @@ if test $ac_arg_jack = "Y" ; then
AnotherFilterPlugin OperatorPlugin CounterPlugin FlipflopPlugin SwitchPlugin \ AnotherFilterPlugin OperatorPlugin CounterPlugin FlipflopPlugin SwitchPlugin \
BeatMatchPlugin NoisePlugin SequencerPlugin LogicPlugin SplitSwitchPlugin \ BeatMatchPlugin NoisePlugin SequencerPlugin LogicPlugin SplitSwitchPlugin \
MixSwitchPlugin MeterPlugin WaveShaperPlugin TrigPlugin SpiralLoopPlugin \ MixSwitchPlugin MeterPlugin WaveShaperPlugin TrigPlugin SpiralLoopPlugin \
JackPlugin"
MasherPlugin JackPlugin"
else else
PLUGINLIST="AmpPlugin ControllerPlugin DelayPlugin EchoPlugin EnvFollowerPlugin \ PLUGINLIST="AmpPlugin ControllerPlugin DelayPlugin EchoPlugin EnvFollowerPlugin \
EnvelopePlugin FilterPlugin MatrixPlugin MidiPlugin MixerPlugin MoogFilterPlugin \ EnvelopePlugin FilterPlugin MatrixPlugin MidiPlugin MixerPlugin MoogFilterPlugin \
@@ -57,7 +57,8 @@ else
DistributorPlugin LFOPlugin KeyboardPlugin DiskWriterPlugin FormantFilterPlugin \ DistributorPlugin LFOPlugin KeyboardPlugin DiskWriterPlugin FormantFilterPlugin \
AnotherFilterPlugin OperatorPlugin CounterPlugin FlipflopPlugin SwitchPlugin \ AnotherFilterPlugin OperatorPlugin CounterPlugin FlipflopPlugin SwitchPlugin \
BeatMatchPlugin NoisePlugin SequencerPlugin LogicPlugin SplitSwitchPlugin \ BeatMatchPlugin NoisePlugin SequencerPlugin LogicPlugin SplitSwitchPlugin \
MixSwitchPlugin MeterPlugin WaveShaperPlugin TrigPlugin SpiralLoopPlugin"
MixSwitchPlugin MeterPlugin WaveShaperPlugin TrigPlugin SpiralLoopPlugin \
MasherPlugin"
fi fi
echo "$PLUGINLIST" > SpiralSound/PluginList.txt echo "$PLUGINLIST" > SpiralSound/PluginList.txt
@@ -173,6 +174,7 @@ SpiralSound/Plugins/SplitSwitchPlugin/Makefile
SpiralSound/Plugins/MixSwitchPlugin/Makefile SpiralSound/Plugins/MixSwitchPlugin/Makefile
SpiralSound/Plugins/TrigPlugin/Makefile SpiralSound/Plugins/TrigPlugin/Makefile
SpiralSound/Plugins/SpiralLoopPlugin/Makefile SpiralSound/Plugins/SpiralLoopPlugin/Makefile
SpiralSound/Plugins/MasherPlugin/Makefile
SpiralSynthPluginLocation.h SpiralSynthPluginLocation.h
Makefile Makefile
) )


Loading…
Cancel
Save