@@ -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); | ||||
} | } | ||||
@@ -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 |
@@ -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; | |||||
} |
@@ -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 |
@@ -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."; | |||||
} |
@@ -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 |
@@ -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+ ", | |||||
" ", | |||||
" ", | |||||
" "}; |
@@ -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()); | ||||
@@ -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;} | ||||
@@ -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 | ||||
) | ) | ||||