summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Jonsson <spamatica@gmail.com>2010-07-06 22:27:09 +0000
committerRobert Jonsson <spamatica@gmail.com>2010-07-06 22:27:09 +0000
commita20708aa3691ba4bcb2e8ebcfe14bc0ad99df4da (patch)
tree5897ebaa5e2e730ebff398a7ea944b93330f526b
parent0a2c59fd910adf81d3c8e4d6549add28c42e2c04 (diff)
see changelog
-rw-r--r--muse/ChangeLog4
-rw-r--r--muse/muse/arranger/arranger.cpp11
-rw-r--r--muse/muse/arranger/arranger.h2
-rw-r--r--muse/muse/arranger/pcanvas.cpp135
-rw-r--r--muse/muse/arranger/pcanvas.h5
-rw-r--r--muse/muse/arranger/tlist.cpp30
-rw-r--r--muse/muse/arranger/tlist.h2
-rw-r--r--muse/muse/arranger/trackautomationview.cpp51
-rw-r--r--muse/muse/arranger/trackautomationview.h19
-rw-r--r--muse/muse/audiotrack.cpp8
-rw-r--r--muse/muse/conf.cpp6
-rw-r--r--muse/muse/ctrl.cpp26
-rw-r--r--muse/muse/ctrl.h5
-rw-r--r--muse/muse/seqmsg.cpp9
-rw-r--r--muse/muse/wave.cpp34
-rw-r--r--muse/muse/wave.h2
-rw-r--r--muse/muse/waveedit/waveview.cpp2
-rw-r--r--muse/muse_svn.config1
-rw-r--r--muse/muse_svn.creator1
-rw-r--r--muse/muse_svn.files663
-rw-r--r--muse/muse_svn.includes29
21 files changed, 997 insertions, 48 deletions
diff --git a/muse/ChangeLog b/muse/ChangeLog
index eafb17d4..6f72163a 100644
--- a/muse/ChangeLog
+++ b/muse/ChangeLog
@@ -1,6 +1,10 @@
06.07.2010
* Added: Button in transport to enable/disable jack transport. (rj)
* Fixed: Dropdown Snap and Type in arranger toolbar no longer steal focus, annoyed the helloutame (rj)
+ * Fixed: Making edits to larger chunks in wave files no longer cause a crash, heap is used for allocation (rj)
+ * Improved: Part selection when navigating with keyboard, previously there was sometimes a need to use the mouse
+ to get a part selected, now one should be arbitrarily selected (rj)
+ * Added: some automation (very)wip stuff, not enabled, just to get it off my harddrive (rj)
22.06.2010
* Fixed: Crashes loading a song while another is loaded. Or worse, it loads but saving corrupts the file! (T356)
- Song::clear(): Clear all midi port devices. Delete Jack midi devices, and remove all ALSA midi device routes.
diff --git a/muse/muse/arranger/arranger.cpp b/muse/muse/arranger/arranger.cpp
index ba26a167..a0c322d4 100644
--- a/muse/muse/arranger/arranger.cpp
+++ b/muse/muse/arranger/arranger.cpp
@@ -123,6 +123,7 @@ Arranger::Arranger(QMainWindow* parent, const char* name)
raster->insertItem(tr(rastval[i]), i);
raster->setCurrentItem(1);
connect(raster, SIGNAL(activated(int)), SLOT(_setRaster(int)));
+ raster->setFocusPolicy(QWidget::NoFocus);
// Song len
label = new QLabel(tr("Len"), toolbar, "Len");
@@ -147,6 +148,7 @@ Arranger::Arranger(QMainWindow* parent, const char* name)
connect(typeBox, SIGNAL(activated(int)), SLOT(modeChange(int)));
QToolTip::add(typeBox, tr("midi song type"));
QWhatsThis::add(typeBox, tr("midi song type"));
+ typeBox->setFocusPolicy(QWidget::NoFocus);
label = new QLabel(tr("Pitch"), toolbar, "Pitch");
label->setAlignment(AlignRight|AlignVCenter);
@@ -235,12 +237,16 @@ Arranger::Arranger(QMainWindow* parent, const char* name)
header->addLabel(tr("Port"), 60);
header->addLabel(tr("Ch"), 30);
header->addLabel(tr("T"), fm1.width('T')+fw);
+ //header->addLabel(tr("Automation"),30);
header->setResizeEnabled(false, COL_RECORD);
header->setResizeEnabled(false, COL_MUTE);
header->setResizeEnabled(false, COL_SOLO);
header->setResizeEnabled(false, COL_CLASS);
header->setResizeEnabled(false, COL_OCHANNEL);
header->setResizeEnabled(false, COL_TIMELOCK);
+ //header->setResizeEnabled(true, COL_AUTOMATION);
+ header->setResizeEnabled(true, COL_NAME);
+ header->setResizeEnabled(true, COL_OPORT);
header->setTracking(true);
@@ -945,3 +951,8 @@ void Arranger::wheelEvent(QWheelEvent* ev)
{
emit redirectWheelEvent(ev);
}
+
+void Arranger::controllerChanged(Track *t)
+{
+ canvas->controllerChanged(t);
+}
diff --git a/muse/muse/arranger/arranger.h b/muse/muse/arranger/arranger.h
index 5621a7ca..7a9fae00 100644
--- a/muse/muse/arranger/arranger.h
+++ b/muse/muse/arranger/arranger.h
@@ -17,6 +17,7 @@
#include "midieditor.h"
#include "pcanvas.h"
#include "mtrackinfobase.h"
+#include "trackautomationview.h"
class QMainWindow;
class QToolButton;
@@ -193,6 +194,7 @@ class Arranger : public QWidget {
void setTool(int);
void updateTrackInfo(int flags);
void configChanged();
+ void controllerChanged(Track *t);
public:
enum { CMD_CUT_PART, CMD_COPY_PART, CMD_PASTE_PART, CMD_PASTE_CLONE_PART, CMD_PASTE_PART_TO_TRACK, CMD_PASTE_CLONE_PART_TO_TRACK };
diff --git a/muse/muse/arranger/pcanvas.cpp b/muse/muse/arranger/pcanvas.cpp
index 2c02adac..f64c1966 100644
--- a/muse/muse/arranger/pcanvas.cpp
+++ b/muse/muse/arranger/pcanvas.cpp
@@ -561,7 +561,7 @@ void PartCanvas::updateSelection()
for (iCItem i = items.begin(); i != items.end(); ++i) {
NPart* part = (NPart*)(i->second);
part->part()->setSelected(i->second->isSelected());
- }
+ }
emit selectionChanged();
redraw();
}
@@ -1098,10 +1098,17 @@ void PartCanvas::keyPress(QKeyEvent* event)
//
// Shortcuts that require selected parts from here
//
- if (!curItem) { //TODO: Fix a curItem from selected parts if song is loaded and has selected parts.
- event->ignore();
- return;
- }
+ if (!curItem) {
+ for (iCItem i = items.begin(); i != items.end(); ++i) {
+ NPart* part = (NPart*)(i->second);
+ if (part->isSelected()) {
+ curItem=part;
+ break;
+ }
+ }
+ if (!curItem)
+ curItem = (NPart*)items.begin()->second; // just grab the first part
+ }
CItem* newItem = 0;
bool singleSelection = isSingleSelection();
@@ -1186,6 +1193,7 @@ void PartCanvas::keyPress(QKeyEvent* event)
newItem = i->second;
}
}
+
// Select nearest part on track above
else if (key == shortcuts[SHRT_SEL_ABOVE].key || key == shortcuts[SHRT_SEL_ABOVE_ADD].key) {
if (key == shortcuts[SHRT_SEL_ABOVE_ADD].key)
@@ -1196,9 +1204,10 @@ void PartCanvas::keyPress(QKeyEvent* event)
track = y2Track(track->y() - 1);
//If we're at topmost, leave
- if (!track)
+ if (!track) {
+ printf("no track above!\n");
return;
-
+ }
int middle = curItem->x() + curItem->part()->lenTick()/2;
CItem *aboveL = 0, *aboveR = 0;
//Upper limit: song end, lower limit: song start
@@ -1355,6 +1364,7 @@ void PartCanvas::drawItem(QPainter& p, const CItem* item, const QRect& rect)
int from = rect.x();
int to = from + rect.width();
+ //printf("from %d to %d\n", from,to);
Part* part = ((NPart*)item)->part();
int pTick = part->tick();
from -= pTick;
@@ -1368,6 +1378,8 @@ void PartCanvas::drawItem(QPainter& p, const CItem* item, const QRect& rect)
//QRect r = item->bbox().intersect(rect);
int i = part->colorIndex();
+ //printf("part start tick %d part start pixel %d\n", part->tick(), r.x());
+
// Added by Tim. p3.3.6
//printf("PartCanvas::drawItem %s evRefs:%d pTick:%d pLen:%d bb.x:%d bb.w:%d rect.x:%d rect.w:%d r.x:%d r.w:%d\n", part->name().latin1(), part->events()->arefCount(), pTick, part->lenTick(), item->bbox().x(), item->bbox().width(), rect.x(), rect.width(), r.x(), r.width());
@@ -2538,7 +2550,7 @@ void PartCanvas::viewDropEvent(QDropEvent* event)
//---------------------------------------------------------
void PartCanvas::drawCanvas(QPainter& p, const QRect& rect)
- {
+{
int x = rect.x();
int y = rect.y();
int w = rect.width();
@@ -2614,19 +2626,116 @@ void PartCanvas::drawCanvas(QPainter& p, const QRect& rect)
QRect r = rect & QRect(x, yy, w, track->height());
drawAudioTrack(p, r, (AudioTrack*)track);
p.setPen(baseColor);
- }
+ }
+ if (!track->isMidiTrack()) { // draw automation
+ QRect r = rect & QRect(x, yy, w, track->height());
+ drawAutomation(p, r, (AudioTrack*)track);
+ p.setPen(baseColor);
+
+ }
yy += track->height();
}
- }
+}
//---------------------------------------------------------
// drawAudioTrack
//---------------------------------------------------------
-void PartCanvas::drawAudioTrack(QPainter& p, const QRect& r, AudioTrack*)
- {
+void PartCanvas::drawAudioTrack(QPainter& p, const QRect& r, AudioTrack *t)
+{
p.setPen(QPen(black, 2, SolidLine));
p.setBrush(gray);
p.drawRect(r);
- }
+}
+
+//---------------------------------------------------------
+// drawAutomation
+//---------------------------------------------------------
+void PartCanvas::drawAutomation(QPainter& p, const QRect& r, AudioTrack *t)
+{
+// printf("drawAudioTrack %d x %d y %d w %d h %d\n",t, r.x(), r.y(), r.width(), r.height());
+ //int v2=r.x()+r.width();
+ //printf("v2=%d mapx=%d rmapx=%d mapxdev=%d rmapxdev=%d\n",v2, mapx(v2),rmapx(v2),mapxDev(v2),rmapxDev(v2));
+ return;
+
+ p.setPen(QPen(black, 2, SolidLine));
+ int height=r.bottom()-r.top()-4; // limit height
+
+ CtrlListList* cll = t->controller();
+ QColor cols[10];
+ cols[0]=white;
+ cols[1]=red;
+ cols[2]=yellow;
+ cols[3]=black;
+ cols[4]=blue;
+ int colIndex=0;
+ bool firstRun=true;
+ for(CtrlListList::iterator icll =cll->begin();icll!=cll->end();++icll)
+ {
+ //iCtrlList *icl = icll->second;
+ CtrlList *cl = icll->second;
+ double prevVal;
+ iCtrl ic=cl->begin();
+ p.setPen(QPen(cols[colIndex++],1,SolidLine));
+
+ if (ic!=cl->end()) { // if there are no automation values we don't draw at all
+ CtrlVal cvFirst = ic->second;
+ ic++;
+ int prevPos=cvFirst.frame;
+ prevVal = cvFirst.val;
+ if (cl->id() == AC_VOLUME ) { // use db scale for volume
+ prevVal = (20.0*log10(cvFirst.val)+60) / 70.0; // represent volume between 0 and 1
+ if (prevVal < 0) prevVal = 0.0;
+ }
+ else {
+ // we need to set curVal between 0 and 1
+ double min, max;
+ cl->range(&min,&max);
+ prevVal = (prevVal- min)/(max-min);
+ }
+ for (; ic !=cl->end(); ++ic)
+ {
+ CtrlVal cv = ic->second;
+ double nextVal = cv.val; // was curVal
+ if (cl->id() == AC_VOLUME ) { // use db scale for volume
+ nextVal = (20.0*log10(cv.val)+60) / 70.0; // represent volume between 0 and 1
+ if (nextVal < 0) nextVal = 0.0;
+ }
+ else {
+ // we need to set curVal between 0 and 1
+ double min, max;
+ cl->range(&min,&max);
+ nextVal = (nextVal- min)/(max-min);
+ }
+ //printf("volume automation event %d %f %f %d\n",cv.frame,cv.val, tempomap.frame2tick(cv.frame));
+ //p.drawLine(r.x(),(r.bottom()-2)-lastVal*height,r.x()+r.width(),(r.bottom()-2)-curVal*height); // debuggingtest
+ int leftX=tempomap.frame2tick(prevPos);
+ if (firstRun && leftX>r.x()) {
+ printf("first run\n");
+ leftX=r.x();
+ }
+
+ printf("inner draw\n");
+ p.drawLine(leftX,(r.bottom()-2)-prevVal*height,tempomap.frame2tick(cv.frame),(r.bottom()-2)-prevVal*height);
+ firstRun=false;
+ //printf("draw line: %d %f %d %f\n",tempomap.frame2tick(lastPos),r.bottom()-lastVal*height,tempomap.frame2tick(cv.frame),r.bottom()-curVal*height);
+ prevPos=cv.frame;
+ prevVal=nextVal;
+ }
+ printf("outer draw %f\n", cvFirst.val);
+ p.drawLine(tempomap.frame2tick(prevPos),(r.bottom()-2)-prevVal*height,tempomap.frame2tick(prevPos)+r.width(),(r.bottom()-2)-prevVal*height);
+ //printf("draw last line: %d %f %d %f\n",tempomap.frame2tick(lastPos),r.bottom()-lastVal*height,150000,r.bottom()-lastVal*height);
+ }
+// if (height >100) {
+// p.drawText(tempomap.frame2tick(0)+1000,40,"FOOO");
+// printf("drawText %s\n", cl->name().latin1());
+// }
+ }
+}
+
+
+void PartCanvas::controllerChanged(Track *t)
+{
+ redraw();
+}
diff --git a/muse/muse/arranger/pcanvas.h b/muse/muse/arranger/pcanvas.h
index 8e21e1d0..72d4563f 100644
--- a/muse/muse/arranger/pcanvas.h
+++ b/muse/muse/arranger/pcanvas.h
@@ -10,6 +10,7 @@
#include "song.h"
#include "canvas.h"
+#include "trackautomationview.h"
#define beats 4
//---------------------------------------------------------
@@ -46,6 +47,7 @@ class PartCanvas : public Canvas {
int curColorIndex;
bool editMode;
+ std::vector<TrackAutomationView*> automationViews;
Q_OBJECT
virtual void keyPress(QKeyEvent*);
virtual void mousePress(QMouseEvent*);
@@ -90,6 +92,8 @@ class PartCanvas : public Canvas {
void drawWavePart(QPainter&, const QRect&, WavePart*, const QRect&);
Track* y2Track(int) const;
void drawAudioTrack(QPainter& p, const QRect& r, AudioTrack* track);
+ void drawAutomation(QPainter& p, const QRect& r, AudioTrack* track);
+
protected:
virtual void drawCanvas(QPainter&, const QRect&);
@@ -117,6 +121,7 @@ class PartCanvas : public Canvas {
PartCanvas(int* raster, QWidget* parent, int, int);
void partsChanged();
void cmd(int);
+ void controllerChanged(Track *t);
public slots:
void redirKeypress(QKeyEvent* e) { keyPress(e); }
};
diff --git a/muse/muse/arranger/tlist.cpp b/muse/muse/arranger/tlist.cpp
index a0379e1b..e76232fa 100644
--- a/muse/muse/arranger/tlist.cpp
+++ b/muse/muse/arranger/tlist.cpp
@@ -71,7 +71,7 @@ void THeaderTip::maybeTip(const QPoint &pos)
//case COL_OPORT: p = QHeader::tr("Output Port"); break;
case COL_OPORT: p = QHeader::tr("Midi output port or synth midi port"); break;
case COL_TIMELOCK: p = QHeader::tr("Time Lock"); break;
- case COL_AUTOMATION: p = QHeader::tr("Automation parameter selection"); break;
+// case COL_AUTOMATION: p = QHeader::tr("Automation parameter selection"); break;
default: return;
}
tip(r, p);
@@ -351,19 +351,19 @@ void TList::paint(const QRect& r)
p.drawText(r, Qt::AlignVCenter|Qt::AlignLeft, s);
}
break;
- case COL_AUTOMATION:
- {
- QString s="-";
-
- if (!track->isMidiTrack()) {
- int count = ((AudioTrack*)track)->controller()->size();
- s.sprintf("%d", count);
- }
-
-
- p.drawText(r, Qt::AlignVCenter|Qt::AlignLeft, s);
- }
- break;
+// case COL_AUTOMATION:
+// {
+// QString s="-";
+//
+// if (!track->isMidiTrack()) {
+// int count = ((AudioTrack*)track)->controller()->size();
+// s.sprintf("%d", count);
+// }
+//
+//
+// p.drawText(r, Qt::AlignVCenter|Qt::AlignLeft, s);
+// }
+// break;
default:
break;
}
@@ -1237,7 +1237,7 @@ void TList::wheelEvent(QWheelEvent* ev)
case COL_NONE:
case COL_CLASS:
case COL_NAME:
- case COL_AUTOMATION:
+ //case COL_AUTOMATION:
break;
case COL_MUTE:
// p3.3.29
diff --git a/muse/muse/arranger/tlist.h b/muse/muse/arranger/tlist.h
index d6ae810a..ec3ba1af 100644
--- a/muse/muse/arranger/tlist.h
+++ b/muse/muse/arranger/tlist.h
@@ -30,9 +30,9 @@ enum TrackColumn {
COL_OPORT,
COL_OCHANNEL,
COL_TIMELOCK,
- COL_AUTOMATION,
COL_NONE = -1
};
+// COL_AUTOMATION, -- not enabled
//----------------------------------------------------------
// THeaderTip
diff --git a/muse/muse/arranger/trackautomationview.cpp b/muse/muse/arranger/trackautomationview.cpp
new file mode 100644
index 00000000..8447ad9a
--- /dev/null
+++ b/muse/muse/arranger/trackautomationview.cpp
@@ -0,0 +1,51 @@
+#include "trackautomationview.h"
+#include "math.h"
+#include <qpainter.h>
+#include <qbitmap.h>
+#include <qimage.h>
+#include "track.h"
+
+TrackAutomationView::TrackAutomationView(QWidget *parent, Track *t) : QWidget(parent)
+{
+ printf("created trackautomationview\n");
+ _t = t;
+ //show();
+}
+
+void TrackAutomationView::paintEvent(QPaintEvent* e)
+{
+ QPainter p(this);
+ const QRect &r = e->rect();
+
+ // temporary solution, audio track drawing moved here.
+ // best would be to get transparency to work correctly
+ p.setPen(QPen(black, 2, SolidLine));
+ p.setBrush(gray);
+ p.drawRect(r);
+
+ int height=r.bottom()-r.top();
+ if( _t->type()>1) { // audio type
+ double volume = ((AudioTrack*)_t)->volume();
+ double dbvolume = (20.0*log10(volume)+60) /70.0; // represent volume between 0 and 1
+ if (dbvolume < 0) dbvolume =0.0;
+ printf("height=%d volume=%f dbvolume=%f\n", height, volume, dbvolume);
+ p.setPen(QPen(yellow,1,SolidLine));
+ p.drawLine(r.left(),r.bottom()-dbvolume*height,r.right(),r.bottom()-dbvolume*height);
+
+ }
+
+
+
+ printf("paintEvent\n");
+}
+
+void TrackAutomationView::collectAutomationData()
+{
+ // here we should collect all automation data that is currently selected for viewing and
+ // prepare an event list that is easy to draw in paintEvent
+ // the main reason being that the event list in it's entirety likely contains too much data to
+ // be processed in the paintEvent. Better to preprocess.
+
+// CtrlListList cll =((AudioTrack*)_t)->controller();
+// cll.count()
+}
diff --git a/muse/muse/arranger/trackautomationview.h b/muse/muse/arranger/trackautomationview.h
new file mode 100644
index 00000000..597d8c6e
--- /dev/null
+++ b/muse/muse/arranger/trackautomationview.h
@@ -0,0 +1,19 @@
+#ifndef TRACKAUTOMATIONVIEW_H
+#define TRACKAUTOMATIONVIEW_H
+
+#include <qwidget.h>
+
+#include "track.h"
+
+class TrackAutomationView : public QWidget
+{
+ Track *_t;
+ void paintEvent(QPaintEvent *e);
+ std::map<int,int> automationList;
+public:
+ TrackAutomationView(QWidget *parent, Track *t);
+ Track *track() { return _t; }
+ void collectAutomationData();
+};
+
+#endif // TRACKAUTOMATIONVIEW_H
diff --git a/muse/muse/audiotrack.cpp b/muse/muse/audiotrack.cpp
index ffc37ab8..189e39d1 100644
--- a/muse/muse/audiotrack.cpp
+++ b/muse/muse/audiotrack.cpp
@@ -74,12 +74,12 @@ AudioTrack::AudioTrack(TrackType t)
_efxPipe = new Pipeline();
_recFile = 0;
_channels = 0;
- _automationType = AUTO_READ;
+ _automationType = AUTO_OFF;
//setChannels(1);
setChannels(2);
- addController(new CtrlList(AC_VOLUME));
- addController(new CtrlList(AC_PAN));
- addController(new CtrlList(AC_MUTE));
+ addController(new CtrlList(AC_VOLUME,"Volume",0.0,1.0));
+ addController(new CtrlList(AC_PAN, "Pan", -1.0, 1.0));
+ addController(new CtrlList(AC_MUTE,"Mute",0.0,1.0));
// Changed by Tim. p3.3.15
//outBuffers = new float*[MAX_CHANNELS];
diff --git a/muse/muse/conf.cpp b/muse/muse/conf.cpp
index daf74126..983c58f7 100644
--- a/muse/muse/conf.cpp
+++ b/muse/muse/conf.cpp
@@ -685,7 +685,9 @@ void readConfiguration(Xml& xml, bool readOnlySequencer)
else if (tag == "extSync")
extSyncFlag.setValue(xml.parseInt());
else if (tag == "useJackTransport")
- useJackTransport = xml.parseInt();
+ {
+ useJackTransport.setValue(xml.parseInt());
+ }
else if (tag == "jackTransportMaster")
{
jackTransportMaster = xml.parseInt();
@@ -1238,7 +1240,7 @@ void MusE::writeConfiguration(int level, Xml& xml) const
mtcOffset.h(), mtcOffset.m(), mtcOffset.s(),
mtcOffset.f(), mtcOffset.sf());
xml.uintTag(level, "sendClockDelay", syncSendFirstClockDelay);
- xml.intTag(level, "useJackTransport", useJackTransport);
+ xml.intTag(level, "useJackTransport", useJackTransport.value());
xml.intTag(level, "jackTransportMaster", jackTransportMaster);
extSyncFlag.save(level, xml);
diff --git a/muse/muse/ctrl.cpp b/muse/muse/ctrl.cpp
index 3a00bed5..fa7e5bd7 100644
--- a/muse/muse/ctrl.cpp
+++ b/muse/muse/ctrl.cpp
@@ -27,7 +27,19 @@ CtrlList::CtrlList(int id)
_curVal = 0.0;
_mode = INTERPOLATE;
}
-
+//---------------------------------------------------------
+// CtrlList
+//---------------------------------------------------------
+CtrlList::CtrlList(int id, QString name, double min, double max)
+{
+ _id = id;
+ _default = 0.0;
+ _curVal = 0.0;
+ _mode = INTERPOLATE;
+ _name = name;
+ _min = min;
+ _max = max;
+}
//---------------------------------------------------------
// CtrlList
//---------------------------------------------------------
@@ -92,6 +104,18 @@ double CtrlList::value(int frame)
return _curVal;
}
+
+//---------------------------------------------------------
+// setCurVal
+//---------------------------------------------------------
+void CtrlList::setCurVal(double val)
+{
+ _curVal = val;
+ if (size() < 2) {
+ add(0,val);
+ }
+}
+
//---------------------------------------------------------
// add
//---------------------------------------------------------
diff --git a/muse/muse/ctrl.h b/muse/muse/ctrl.h
index 69f48c63..99767b55 100644
--- a/muse/muse/ctrl.h
+++ b/muse/muse/ctrl.h
@@ -91,13 +91,14 @@ class CtrlList : public std::map<int, CtrlVal, std::less<int> > {
public:
CtrlList();
CtrlList(int id);
-
+ CtrlList(int id, QString name, double min, double max);
+
Mode mode() const { return _mode; }
void setMode(Mode m) { _mode = m; }
double getDefault() const { return _default; }
void setDefault(double val) { _default = val; }
double curVal() const { return _curVal; }
- void setCurVal(double val) { _curVal = val; }
+ void setCurVal(double val); // { _curVal = val; }
int id() const { return _id; }
QString name() const { return _name; }
void setName(const QString& s) { _name = s; }
diff --git a/muse/muse/seqmsg.cpp b/muse/muse/seqmsg.cpp
index c9c3b3a5..58944552 100644
--- a/muse/muse/seqmsg.cpp
+++ b/muse/muse/seqmsg.cpp
@@ -21,6 +21,7 @@
#include "alsamidi.h"
#include "audio.h"
#include "arranger.h"
+#include "plugin.h"
#include "driver/jackmidi.h"
//---------------------------------------------------------
@@ -251,6 +252,7 @@ void Audio::msgSetVolume(AudioTrack* src, double val)
msg.snode = src;
msg.dval = val;
sendMsg(&msg);
+ //muse->arranger->controllerChanged(src);
}
//---------------------------------------------------------
@@ -264,6 +266,7 @@ void Audio::msgSetPan(AudioTrack* node, double val)
msg.snode = node;
msg.dval = val;
sendMsg(&msg);
+ //muse->arranger->controllerChanged(node);
}
//---------------------------------------------------------
@@ -424,6 +427,7 @@ void Audio::msgSetPluginCtrlVal(AudioTrack* track, int param, double val)
//msg.plugin = plugin;
msg.snode = track;
sendMsg(&msg);
+ //muse->arranger->controllerChanged(track);
}
//---------------------------------------------------------
@@ -439,6 +443,7 @@ void Audio::msgSwapControllerIDX(AudioTrack* node, int idx1, int idx2)
msg.a = idx1;
msg.b = idx2;
sendMsg(&msg);
+ //muse->arranger->controllerChanged(node);
}
//---------------------------------------------------------
@@ -453,6 +458,7 @@ void Audio::msgClearControllerEvents(AudioTrack* node, int acid)
msg.snode = node;
msg.ival = acid;
sendMsg(&msg);
+ //muse->arranger->controllerChanged(node);
}
//---------------------------------------------------------
@@ -496,6 +502,7 @@ void Audio::msgEraseACEvent(AudioTrack* node, int acid, int frame)
msg.ival = acid;
msg.a = frame;
sendMsg(&msg);
+ //muse->arranger->controllerChanged(node);
}
//---------------------------------------------------------
@@ -512,6 +519,7 @@ void Audio::msgEraseRangeACEvents(AudioTrack* node, int acid, int frame1, int fr
msg.a = frame1;
msg.b = frame2;
sendMsg(&msg);
+ //muse->arranger->controllerChanged(node);
}
//---------------------------------------------------------
@@ -528,6 +536,7 @@ void Audio::msgAddACEvent(AudioTrack* node, int acid, int frame, double val)
msg.a = frame;
msg.dval = val;
sendMsg(&msg);
+ //muse->arranger->controllerChanged(node);
}
//---------------------------------------------------------
diff --git a/muse/muse/wave.cpp b/muse/muse/wave.cpp
index fab1a9cd..52c65b8d 100644
--- a/muse/muse/wave.cpp
+++ b/muse/muse/wave.cpp
@@ -443,16 +443,31 @@ void SndFile::setFormat(int fmt, int ch, int rate)
}
//---------------------------------------------------------
-// read
+// readWithHeap
+// not as realtime friendly but can retrieve bigger data
//---------------------------------------------------------
+size_t SndFile::readWithHeap(int srcChannels, float** dst, size_t n, bool overwrite)
+ {
+ float *buffer = new float[n * sfinfo.channels];
+ int rn = readInternal(srcChannels,dst,n,overwrite, buffer);
+ delete buffer;
+ return rn;
+ }
+//---------------------------------------------------------
+// read
+//---------------------------------------------------------
size_t SndFile::read(int srcChannels, float** dst, size_t n, bool overwrite)
{
- // Changed by Tim. p3.3.17
- //float *buffer = new float[n * sfinfo.channels];
float buffer[n * sfinfo.channels];
+ int rn = readInternal(srcChannels,dst,n,overwrite, buffer);
+ return rn;
+ }
+
+size_t SndFile::readInternal(int srcChannels, float** dst, size_t n, bool overwrite, float *buffer)
+{
size_t rn = sf_readf_float(sf, buffer, n);
-
+
float* src = buffer;
int dstChannels = sfinfo.channels;
if (srcChannels == dstChannels) {
@@ -472,7 +487,7 @@ size_t SndFile::read(int srcChannels, float** dst, size_t n, bool overwrite)
if(overwrite)
for (size_t i = 0; i < rn; ++i)
*(dst[0] + i) = src[i + i] + src[i + i + 1];
- else
+ else
for (size_t i = 0; i < rn; ++i)
*(dst[0] + i) += src[i + i] + src[i + i + 1];
}
@@ -484,7 +499,7 @@ size_t SndFile::read(int srcChannels, float** dst, size_t n, bool overwrite)
*(dst[0]+i) = data;
*(dst[1]+i) = data;
}
- else
+ else
for (size_t i = 0; i < rn; ++i) {
float data = *src++;
*(dst[0]+i) += data;
@@ -495,10 +510,11 @@ size_t SndFile::read(int srcChannels, float** dst, size_t n, bool overwrite)
printf("SndFile:read channel mismatch %d -> %d\n",
srcChannels, dstChannels);
}
-
- //delete buffer;
+
return rn;
- }
+
+}
+
//---------------------------------------------------------
// write
diff --git a/muse/muse/wave.h b/muse/muse/wave.h
index 5a7997fe..4094b753 100644
--- a/muse/muse/wave.h
+++ b/muse/muse/wave.h
@@ -56,6 +56,7 @@ class SndFile {
bool openFlag;
bool writeFlag;
+ size_t readInternal(int srcChannels, float** dst, size_t n, bool overwrite, float *buffer);
protected:
int refCount;
@@ -92,6 +93,7 @@ class SndFile {
void setFormat(int fmt, int ch, int rate);
size_t read(int channel, float**, size_t, bool overwrite = true);
+ size_t readWithHeap(int channel, float**, size_t, bool overwrite = true);
size_t readDirect(float* buf, size_t n) { return sf_readf_float(sf, buf, n); }
size_t write(int channel, float**, size_t);
diff --git a/muse/muse/waveedit/waveview.cpp b/muse/muse/waveedit/waveview.cpp
index 91e052d4..3dd76837 100644
--- a/muse/muse/waveedit/waveview.cpp
+++ b/muse/muse/waveedit/waveview.cpp
@@ -865,7 +865,7 @@ void WaveView::editExternal(unsigned file_format, unsigned file_samplerate, unsi
else {
// Re-read file again
exttmpFile.seek(0, 0);
- size_t sz = exttmpFile.read(file_channels, tmpdata, tmpdatalen);
+ size_t sz = exttmpFile.readWithHeap(file_channels, tmpdata, tmpdatalen);
if (sz != tmpdatalen) {
// File must have been shrunken - not good. Alert user.
QMessageBox::critical(this, tr("MusE - file size changed"),
diff --git a/muse/muse_svn.config b/muse/muse_svn.config
new file mode 100644
index 00000000..8cec188b
--- /dev/null
+++ b/muse/muse_svn.config
@@ -0,0 +1 @@
+// ADD PREDEFINED MACROS HERE!
diff --git a/muse/muse_svn.creator b/muse/muse_svn.creator
new file mode 100644
index 00000000..e94cbbd3
--- /dev/null
+++ b/muse/muse_svn.creator
@@ -0,0 +1 @@
+[General]
diff --git a/muse/muse_svn.files b/muse/muse_svn.files
new file mode 100644
index 00000000..f343d48b
--- /dev/null
+++ b/muse/muse_svn.files
@@ -0,0 +1,663 @@
+al/al.cpp
+al/al.h
+al/dsp.cpp
+al/dsp.h
+al/dspSSE.cpp
+al/dspXMM.cpp
+all-pic.h
+all.h
+atest/atest.cpp
+atest/atest.h
+atest/atest.pro
+atest/qtc-gdbmacros/gdbmacros.cpp
+atest/qtc-gdbmacros/gdbmacros.pro
+config.h
+debian/muse/usr/share/doc/muse/html/toc_.txt
+debian/muse/usr/share/muse/locale/muse_de.ts
+debian/muse/usr/share/muse/locale/muse_es.ts
+debian/muse/usr/share/muse/locale/muse_fr.ts
+debian/muse/usr/share/muse/locale/muse_pl.ts
+debian/muse/usr/share/muse/locale/muse_ru.ts
+debian/muse/usr/share/muse/locale/muse_sv_SE.ts
+debian/muse/usr/share/muse/plugins/1050.ui
+debian/muse/usr/share/muse/plugins/2142.ui
+grepmidi/grepmidi.cpp
+muse/app.cpp
+muse/app.h
+muse/appearance.cpp
+muse/appearance.h
+muse/arranger/alayout.cpp
+muse/arranger/alayout.h
+muse/arranger/arranger.cpp
+muse/arranger/arranger.h
+muse/arranger/moc_alayout.cpp
+muse/arranger/moc_arranger.cpp
+muse/arranger/moc_pcanvas.cpp
+muse/arranger/moc_tlist.cpp
+muse/arranger/pcanvas.cpp
+muse/arranger/pcanvas.h
+muse/arranger/tlist.cpp
+muse/arranger/tlist.h
+muse/arranger/trackinfo.cpp
+muse/audio.cpp
+muse/audio.h
+muse/audioconvert.cpp
+muse/audioconvert.h
+muse/audioprefetch.cpp
+muse/audioprefetch.h
+muse/audiotrack.cpp
+muse/cliplist/cliplist.cpp
+muse/cliplist/cliplist.h
+muse/cliplist/moc_cliplist.cpp
+muse/cobject.cpp
+muse/cobject.h
+muse/conf.cpp
+muse/conf.h
+muse/confmport.cpp
+muse/confmport.h
+muse/ctrl/ctrlcanvas.cpp
+muse/ctrl/ctrlcanvas.h
+muse/ctrl/ctrledit.cpp
+muse/ctrl/ctrledit.h
+muse/ctrl/ctrlpanel.cpp
+muse/ctrl/ctrlpanel.h
+muse/ctrl/moc_ctrlcanvas.cpp
+muse/ctrl/moc_ctrledit.cpp
+muse/ctrl/moc_ctrlpanel.cpp
+muse/ctrl.cpp
+muse/ctrl.h
+muse/debug.h
+muse/default_click.h
+muse/device.h
+muse/driver/alsamidi.cpp
+muse/driver/alsamidi.h
+muse/driver/alsatimer.cpp
+muse/driver/alsatimer.h
+muse/driver/audiodev.h
+muse/driver/dummyaudio.cpp
+muse/driver/jack.cpp
+muse/driver/jackaudio.h
+muse/driver/rtctimer.cpp
+muse/driver/rtctimer.h
+muse/driver/timerdev.h
+muse/dssihost.cpp
+muse/dssihost.h
+muse/evdata.h
+muse/event.cpp
+muse/event.h
+muse/eventbase.h
+muse/eventlist.cpp
+muse/exportmidi.cpp
+muse/fastlog.h
+muse/gconfig.cpp
+muse/gconfig.h
+muse/givertcap.c
+muse/globaldefs.h
+muse/globals.cpp
+muse/globals.h
+muse/help.cpp
+muse/helper.cpp
+muse/helper.h
+muse/icons.cpp
+muse/icons.h
+muse/importmidi.cpp
+muse/instruments/ccontrolbase.h
+muse/instruments/ccontrolbase.ui
+muse/instruments/editinstrument.cpp
+muse/instruments/editinstrument.h
+muse/instruments/editinstrumentbase.h
+muse/instruments/editinstrumentbase.ui
+muse/instruments/midictrledit.cpp
+muse/instruments/midictrledit.h
+muse/instruments/minstrument.cpp
+muse/instruments/minstrument.h
+muse/instruments/moc_editinstrument.cpp
+muse/key.cpp
+muse/key.h
+muse/ladspa.h
+muse/liste/editctrlbase.h
+muse/liste/editctrlbase.ui
+muse/liste/editevent.cpp
+muse/liste/editevent.h
+muse/liste/listedit.cpp
+muse/liste/listedit.h
+muse/liste/moc_editevent.cpp
+muse/liste/moc_listedit.cpp
+muse/marker/marker.cpp
+muse/marker/marker.h
+muse/marker/markerview.cpp
+muse/marker/markerview.h
+muse/marker/moc_markerview.cpp
+muse/master/lmaster.cpp
+muse/master/lmaster.h
+muse/master/master.cpp
+muse/master/master.h
+muse/master/masteredit.cpp
+muse/master/masteredit.h
+muse/master/moc_lmaster.cpp
+muse/master/moc_master.cpp
+muse/master/moc_masteredit.cpp
+muse/master/moc_tscale.cpp
+muse/master/tscale.cpp
+muse/master/tscale.h
+muse/memory.cpp
+muse/memory.h
+muse/midi.cpp
+muse/midi.h
+muse/midictrl.cpp
+muse/midictrl.h
+muse/mididev.cpp
+muse/mididev.h
+muse/midiedit/cmd.h
+muse/midiedit/dcanvas.cpp
+muse/midiedit/dcanvas.h
+muse/midiedit/dlist.cpp
+muse/midiedit/dlist.h
+muse/midiedit/drumedit.cpp
+muse/midiedit/drumedit.h
+muse/midiedit/drummap.cpp
+muse/midiedit/drummap.h
+muse/midiedit/ecanvas.cpp
+muse/midiedit/ecanvas.h
+muse/midiedit/moc_dcanvas.cpp
+muse/midiedit/moc_dlist.cpp
+muse/midiedit/moc_drumedit.cpp
+muse/midiedit/moc_ecanvas.cpp
+muse/midiedit/moc_piano.cpp
+muse/midiedit/moc_pianoroll.cpp
+muse/midiedit/moc_prcanvas.cpp
+muse/midiedit/moc_quantconfig.cpp
+muse/midiedit/piano.cpp
+muse/midiedit/piano.h
+muse/midiedit/pianoroll.cpp
+muse/midiedit/pianoroll.h
+muse/midiedit/prcanvas.cpp
+muse/midiedit/prcanvas.h
+muse/midiedit/quantconfig.cpp
+muse/midiedit/quantconfig.h
+muse/midieditor.cpp
+muse/midieditor.h
+muse/midievent.cpp
+muse/midievent.h
+muse/midifile.cpp
+muse/midifile.h
+muse/midiport.cpp
+muse/midiport.h
+muse/midiseq.cpp
+muse/midiseq.h
+muse/miditransform.cpp
+muse/miditransform.h
+muse/mixer/amixer.cpp
+muse/mixer/amixer.h
+muse/mixer/astrip.cpp
+muse/mixer/astrip.h
+muse/mixer/auxknob.cpp
+muse/mixer/auxknob.h
+muse/mixer/meter.cpp
+muse/mixer/meter.h
+muse/mixer/midiportroutebase.h
+muse/mixer/midiportroutebase.ui
+muse/mixer/moc_amixer.cpp
+muse/mixer/moc_astrip.cpp
+muse/mixer/moc_auxknob.cpp
+muse/mixer/moc_meter.cpp
+muse/mixer/moc_mstrip.cpp
+muse/mixer/moc_panknob.cpp
+muse/mixer/moc_rack.cpp
+muse/mixer/moc_routedialog.cpp
+muse/mixer/moc_strip.cpp
+muse/mixer/mstrip.cpp
+muse/mixer/mstrip.h
+muse/mixer/panknob.cpp
+muse/mixer/panknob.h
+muse/mixer/rack.cpp
+muse/mixer/rack.h
+muse/mixer/routedialog.cpp
+muse/mixer/routedialog.h
+muse/mixer/routedialogbase.h
+muse/mixer/routedialogbase.ui
+muse/mixer/strip.cpp
+muse/mixer/strip.h
+muse/moc_app.cpp
+muse/moc_appearance.cpp
+muse/moc_cobject.cpp
+muse/moc_conf.cpp
+muse/moc_confmport.cpp
+muse/moc_midieditor.cpp
+muse/moc_miditransform.cpp
+muse/moc_plugin.cpp
+muse/moc_song.cpp
+muse/moc_transport.cpp
+muse/moc_transpose.cpp
+muse/moc_value.cpp
+muse/mpevent.cpp
+muse/mpevent.h
+muse/mplugins/midifilter.h
+muse/mplugins/midifilter.ui
+muse/mplugins/midifilterimpl.cpp
+muse/mplugins/midifilterimpl.h
+muse/mplugins/midiitransform.cpp
+muse/mplugins/midiitransform.h
+muse/mplugins/mitplugin.cpp
+muse/mplugins/mitplugin.h
+muse/mplugins/mittranspose.cpp
+muse/mplugins/mittranspose.h
+muse/mplugins/moc_midifilterimpl.cpp
+muse/mplugins/moc_midiitransform.cpp
+muse/mplugins/moc_mittranspose.cpp
+muse/mplugins/moc_mrconfig.cpp
+muse/mplugins/moc_rhythm.cpp
+muse/mplugins/mrconfig.cpp
+muse/mplugins/mrconfig.h
+muse/mplugins/mrconfigbase.h
+muse/mplugins/mrconfigbase.ui
+muse/mplugins/random.cpp
+muse/mplugins/random.h
+muse/mplugins/rhythm.cpp
+muse/mplugins/rhythm.h
+muse/mplugins/rhythmbase.h
+muse/mplugins/rhythmbase.ui
+muse/mtc.cpp
+muse/mtc.h
+muse/muse.pro
+muse/node.cpp
+muse/node.h
+muse/part.cpp
+muse/part.h
+muse/patchbay/patchbay.cpp
+muse/patchbay/patchbay.h
+muse/patchbay/patchbaybase.ui
+muse/plugin.cpp
+muse/plugin.h
+muse/pos.cpp
+muse/pos.h
+muse/remote/pyapi.cpp
+muse/remote/pyapi.h
+muse/route.cpp
+muse/route.h
+muse/seqmsg.cpp
+muse/shortcuts.cpp
+muse/shortcuts.h
+muse/sig.cpp
+muse/sig.h
+muse/song.cpp
+muse/song.h
+muse/songfile.cpp
+muse/sync.cpp
+muse/sync.h
+muse/synth.cpp
+muse/synth.h
+muse/tempo.cpp
+muse/tempo.h
+muse/thread.cpp
+muse/thread.h
+muse/ticksynth.cpp
+muse/ticksynth.h
+muse/track.cpp
+muse/track.h
+muse/transport.cpp
+muse/transport.h
+muse/transpose.cpp
+muse/transpose.h
+muse/undo.cpp
+muse/undo.h
+muse/value.cpp
+muse/value.h
+muse/vst.cpp
+muse/vst.h
+muse/wave.cpp
+muse/wave.h
+muse/waveedit/editgain.cpp
+muse/waveedit/editgain.h
+muse/waveedit/editgainbase.h
+muse/waveedit/editgainbase.ui
+muse/waveedit/moc_editgain.cpp
+muse/waveedit/moc_waveedit.cpp
+muse/waveedit/moc_waveview.cpp
+muse/waveedit/waveedit.cpp
+muse/waveedit/waveedit.h
+muse/waveedit/waveview.cpp
+muse/waveedit/waveview.h
+muse/waveevent.cpp
+muse/waveevent.h
+muse/wavetrack.cpp
+muse/widgets/aboutbox.h
+muse/widgets/aboutbox.ui
+muse/widgets/action.h
+muse/widgets/appearancebase.h
+muse/widgets/appearancebase.ui
+muse/widgets/bigtime.cpp
+muse/widgets/bigtime.h
+muse/widgets/canvas.cpp
+muse/widgets/canvas.h
+muse/widgets/checkbox.cpp
+muse/widgets/checkbox.h
+muse/widgets/citem.cpp
+muse/widgets/citem.h
+muse/widgets/cliplisteditorbase.h
+muse/widgets/cliplisteditorbase.ui
+muse/widgets/combobox.cpp
+muse/widgets/combobox.h
+muse/widgets/comboQuant.cpp
+muse/widgets/comboQuant.h
+muse/widgets/comment.cpp
+muse/widgets/comment.h
+muse/widgets/commentbase.h
+muse/widgets/commentbase.ui
+muse/widgets/configmidifilebase.h
+muse/widgets/configmidifilebase.ui
+muse/widgets/ctrlcombo.cpp
+muse/widgets/ctrlcombo.h
+muse/widgets/dentry.cpp
+muse/widgets/dentry.h
+muse/widgets/didyouknow.h
+muse/widgets/didyouknow.ui
+muse/widgets/dimap.cpp
+muse/widgets/dimap.h
+muse/widgets/doublelabel.cpp
+muse/widgets/doublelabel.h
+muse/widgets/drange.cpp
+muse/widgets/drange.h
+muse/widgets/editctrl7dialogbase.h
+muse/widgets/editctrl7dialogbase.ui
+muse/widgets/editmetadialogbase.h
+muse/widgets/editmetadialogbase.ui
+muse/widgets/editnotedialogbase.h
+muse/widgets/editnotedialogbase.ui
+muse/widgets/editsysexdialogbase.h
+muse/widgets/editsysexdialogbase.ui
+muse/widgets/fdialogbuttons.h
+muse/widgets/fdialogbuttons.ui
+muse/widgets/filedialog.cpp
+muse/widgets/filedialog.h
+muse/widgets/fontsel.cpp
+muse/widgets/fontsel.h
+muse/widgets/gatetime.cpp
+muse/widgets/gatetime.h
+muse/widgets/gatetimebase.h
+muse/widgets/gatetimebase.ui
+muse/widgets/genset.cpp
+muse/widgets/genset.h
+muse/widgets/gensetbase.h
+muse/widgets/gensetbase.ui
+muse/widgets/header.cpp
+muse/widgets/header.h
+muse/widgets/hitscale.cpp
+muse/widgets/hitscale.h
+muse/widgets/intlabel.cpp
+muse/widgets/intlabel.h
+muse/widgets/itransformbase.h
+muse/widgets/itransformbase.ui
+muse/widgets/knob.cpp
+muse/widgets/knob.h
+muse/widgets/lcombo.cpp
+muse/widgets/lcombo.h
+muse/widgets/listitem.h
+muse/widgets/menutitleitem.h
+muse/widgets/metronome.cpp
+muse/widgets/metronome.h
+muse/widgets/metronomebase.h
+muse/widgets/metronomebase.ui
+muse/widgets/midisync.h
+muse/widgets/midisync.ui
+muse/widgets/midisyncimpl.cpp
+muse/widgets/midisyncimpl.h
+muse/widgets/mittransposebase.h
+muse/widgets/mittransposebase.ui
+muse/widgets/mixdowndialog.cpp
+muse/widgets/mixdowndialog.h
+muse/widgets/mixdowndialogbase.h
+muse/widgets/mixdowndialogbase.ui
+muse/widgets/mlabel.cpp
+muse/widgets/mlabel.h
+muse/widgets/mmath.cpp
+muse/widgets/mmath.h
+muse/widgets/moc_aboutbox.cpp
+muse/widgets/moc_action.cpp
+muse/widgets/moc_bigtime.cpp
+muse/widgets/moc_canvas.cpp
+muse/widgets/moc_checkbox.cpp
+muse/widgets/moc_combobox.cpp
+muse/widgets/moc_comboQuant.cpp
+muse/widgets/moc_comment.cpp
+muse/widgets/moc_ctrlcombo.cpp
+muse/widgets/moc_dentry.cpp
+muse/widgets/moc_didyouknow.cpp
+muse/widgets/moc_doublelabel.cpp
+muse/widgets/moc_filedialog.cpp
+muse/widgets/moc_fontsel.cpp
+muse/widgets/moc_gatetime.cpp
+muse/widgets/moc_genset.cpp
+muse/widgets/moc_header.cpp
+muse/widgets/moc_hitscale.cpp
+muse/widgets/moc_intlabel.cpp
+muse/widgets/moc_knob.cpp
+muse/widgets/moc_lcombo.cpp
+muse/widgets/moc_metronome.cpp
+muse/widgets/moc_midisyncimpl.cpp
+muse/widgets/moc_mixdowndialog.cpp
+muse/widgets/moc_mlabel.cpp
+muse/widgets/moc_mtscale.cpp
+muse/widgets/moc_nentry.cpp
+muse/widgets/moc_noteinfo.cpp
+muse/widgets/moc_pitchedit.cpp
+muse/widgets/moc_pitchlabel.cpp
+muse/widgets/moc_posedit.cpp
+muse/widgets/moc_poslabel.cpp
+muse/widgets/moc_scrollscale.cpp
+muse/widgets/moc_shortcutcapturedialog.cpp
+muse/widgets/moc_shortcutconfig.cpp
+muse/widgets/moc_sigedit.cpp
+muse/widgets/moc_siglabel.cpp
+muse/widgets/moc_sigscale.cpp
+muse/widgets/moc_slider.cpp
+muse/widgets/moc_sliderbase.cpp
+muse/widgets/moc_songinfo.cpp
+muse/widgets/moc_spinbox.cpp
+muse/widgets/moc_spinboxFP.cpp
+muse/widgets/moc_splitter.cpp
+muse/widgets/moc_swidget.cpp
+muse/widgets/moc_tb1.cpp
+muse/widgets/moc_tempolabel.cpp
+muse/widgets/moc_tools.cpp
+muse/widgets/moc_ttoolbar.cpp
+muse/widgets/moc_ttoolbutton.cpp
+muse/widgets/moc_velocity.cpp
+muse/widgets/moc_view.cpp
+muse/widgets/moc_vscale.cpp
+muse/widgets/mtrackinfobase.h
+muse/widgets/mtrackinfobase.ui
+muse/widgets/mtscale.cpp
+muse/widgets/mtscale.h
+muse/widgets/musewidgetsplug.cpp
+muse/widgets/nentry.cpp
+muse/widgets/nentry.h
+muse/widgets/noteinfo.cpp
+muse/widgets/noteinfo.h
+muse/widgets/pitchedit.cpp
+muse/widgets/pitchedit.h
+muse/widgets/pitchlabel.cpp
+muse/widgets/pitchlabel.h
+muse/widgets/posedit.cpp
+muse/widgets/posedit.h
+muse/widgets/poslabel.cpp
+muse/widgets/poslabel.h
+muse/widgets/scldiv.cpp
+muse/widgets/scldiv.h
+muse/widgets/scldraw.cpp
+muse/widgets/scldraw.h
+muse/widgets/sclif.cpp
+muse/widgets/sclif.h
+muse/widgets/scrollscale.cpp
+muse/widgets/scrollscale.h
+muse/widgets/section.h
+muse/widgets/shortcutcapturedialog.cpp
+muse/widgets/shortcutcapturedialog.h
+muse/widgets/shortcutcapturedialogbase.h
+muse/widgets/shortcutcapturedialogbase.ui
+muse/widgets/shortcutconfig.cpp
+muse/widgets/shortcutconfig.h
+muse/widgets/shortcutconfigbase.h
+muse/widgets/shortcutconfigbase.ui
+muse/widgets/sigedit.cpp
+muse/widgets/sigedit.h
+muse/widgets/siglabel.cpp
+muse/widgets/siglabel.h
+muse/widgets/sigscale.cpp
+muse/widgets/sigscale.h
+muse/widgets/slider.cpp
+muse/widgets/slider.h
+muse/widgets/sliderbase.cpp
+muse/widgets/sliderbase.h
+muse/widgets/songinfo.h
+muse/widgets/songinfo.ui
+muse/widgets/spinbox.cpp
+muse/widgets/spinbox.h
+muse/widgets/spinboxFP.cpp
+muse/widgets/spinboxFP.h
+muse/widgets/splitter.cpp
+muse/widgets/splitter.h
+muse/widgets/swidget.cpp
+muse/widgets/swidget.h
+muse/widgets/synthconfigbase.h
+muse/widgets/synthconfigbase.ui
+muse/widgets/synthwizardbase.h
+muse/widgets/tb1.cpp
+muse/widgets/tb1.h
+muse/widgets/tempolabel.cpp
+muse/widgets/tempolabel.h
+muse/widgets/tools.cpp
+muse/widgets/tools.h
+muse/widgets/transformbase.h
+muse/widgets/transformbase.ui
+muse/widgets/transposebase.h
+muse/widgets/transposebase.ui
+muse/widgets/ttoolbar.cpp
+muse/widgets/ttoolbar.h
+muse/widgets/ttoolbutton.cpp
+muse/widgets/ttoolbutton.h
+muse/widgets/utils.cpp
+muse/widgets/utils.h
+muse/widgets/velocity.cpp
+muse/widgets/velocity.h
+muse/widgets/velocitybase.h
+muse/widgets/velocitybase.ui
+muse/widgets/view.cpp
+muse/widgets/view.h
+muse/widgets/vscale.cpp
+muse/widgets/vscale.h
+muse/widgets/wtrackinfobase.h
+muse/widgets/wtrackinfobase.ui
+muse/widgets/wtscale.cpp
+muse/widgets/wtscale.h
+muse/xml.cpp
+muse/xml.h
+plugins/doublechorus/doublechorus.cpp
+plugins/doublechorus/doublechorusmodel.cpp
+plugins/doublechorus/doublechorusmodel.h
+plugins/doublechorus/simplechorusmodel.cpp
+plugins/doublechorus/simplechorusmodel.h
+plugins/freeverb/allpass.h
+plugins/freeverb/comb.h
+plugins/freeverb/denormals.h
+plugins/freeverb/freeverb.cpp
+plugins/freeverb/readme.txt
+plugins/freeverb/revmodel.cpp
+plugins/freeverb/revmodel.h
+plugins/freeverb/tuning.h
+plugins/pandelay/ladspapandelay.cpp
+plugins/pandelay/ladspapandelay.h
+plugins/pandelay/pandelay.cpp
+plugins/pandelay/pandelaymodel.cpp
+plugins/pandelay/pandelaymodel.h
+share/html/toc_.txt
+share/locale/muse_de.ts
+share/locale/muse_es.ts
+share/locale/muse_fr.ts
+share/locale/muse_pl.ts
+share/locale/muse_ru.ts
+share/locale/muse_sv_SE.ts
+share/plugins/1050.ui
+share/plugins/2142.ui
+share/scripts/README.txt
+synti/deicsonze/deicsonze.cpp
+synti/deicsonze/deicsonze.h
+synti/deicsonze/deicsonzegui.cpp
+synti/deicsonze/deicsonzegui.h
+synti/deicsonze/deicsonzeguibase.h
+synti/deicsonze/deicsonzeguibase.ui
+synti/deicsonze/moc_deicsonzegui.cpp
+synti/deicsonze/newpreset.h
+synti/deicsonze/newpreset.ui
+synti/deicsonze2/CMakeLists.txt
+synti/deicsonze2/deicsonze.cpp
+synti/deicsonze2/deicsonze.h
+synti/deicsonze2/deicsonzefilter.cpp
+synti/deicsonze2/deicsonzefilter.h
+synti/deicsonze2/deicsonzegui.cpp
+synti/deicsonze2/deicsonzegui.h
+synti/deicsonze2/deicsonzegui.ui
+synti/deicsonze2/deicsonzeguibase.h
+synti/deicsonze2/deicsonzeplugin.cpp
+synti/deicsonze2/deicsonzeplugin.h
+synti/deicsonze2/deicsonzepreset.cpp
+synti/deicsonze2/deicsonzepreset.h
+synti/fluid/fluid.cpp
+synti/fluid/fluid.h
+synti/fluid/fluidgui.cpp
+synti/fluid/fluidgui.h
+synti/fluid/fluidguibase.h
+synti/fluid/fluidguibase.ui
+synti/fluid/moc_fluidgui.cpp
+synti/fluidsynth/fluidsynthgui.cpp
+synti/fluidsynth/fluidsynthgui.h
+synti/fluidsynth/fluidsynthguibase.h
+synti/fluidsynth/fluidsynthguibase.ui
+synti/fluidsynth/fluidsynti.cpp
+synti/fluidsynth/fluidsynti.h
+synti/fluidsynth/moc_fluidsynthgui.cpp
+synti/fluidsynth/README.txt
+synti/libsynti/evdata.h
+synti/libsynti/gui.cpp
+synti/libsynti/gui.h
+synti/libsynti/mess.cpp
+synti/libsynti/mess.h
+synti/libsynti/mono.cpp
+synti/libsynti/mono.h
+synti/libsynti/mpevent.cpp
+synti/libsynti/mpevent.h
+synti/libsynti/poly.cpp
+synti/libsynti/poly.h
+synti/organ/fdialogbuttons.h
+synti/organ/fdialogbuttons.ui
+synti/organ/moc_organgui.cpp
+synti/organ/organ.cpp
+synti/organ/organ.h
+synti/organ/organgui.cpp
+synti/organ/organgui.h
+synti/organ/organguibase.h
+synti/organ/organguibase.ui
+synti/s1/s1.cpp
+synti/simpledrums/common.h
+synti/simpledrums/moc_simpledrumsgui.cpp
+synti/simpledrums/moc_ssplugingui.cpp
+synti/simpledrums/ReleaseNotes.txt
+synti/simpledrums/simpledrums.cpp
+synti/simpledrums/simpledrums.h
+synti/simpledrums/simpledrumsgui.cpp
+synti/simpledrums/simpledrumsgui.h
+synti/simpledrums/simpledrumsguibase.h
+synti/simpledrums/simpledrumsguibase.ui
+synti/simpledrums/ssplugin.cpp
+synti/simpledrums/ssplugin.h
+synti/simpledrums/sspluginchooserbase.h
+synti/simpledrums/sspluginchooserbase.ui
+synti/simpledrums/ssplugingui.cpp
+synti/simpledrums/ssplugingui.h
+synti/vam/moc_vamgui.cpp
+synti/vam/vam.cpp
+synti/vam/vam.h
+synti/vam/vamgui.cpp
+synti/vam/vamgui.h
+synti/vam/vamguibase.h
+synti/vam/vamguibase.ui \ No newline at end of file
diff --git a/muse/muse_svn.includes b/muse/muse_svn.includes
new file mode 100644
index 00000000..d4d624b1
--- /dev/null
+++ b/muse/muse_svn.includes
@@ -0,0 +1,29 @@
+al
+atest
+muse/arranger
+muse/cliplist
+muse/ctrl
+muse/driver
+muse/instruments
+muse/liste
+muse/marker
+muse/master
+muse/midiedit
+muse/mixer
+muse/mplugins
+muse/patchbay
+muse/remote
+muse/waveedit
+muse/widgets
+muse
+plugins/doublechorus
+plugins/freeverb
+plugins/pandelay
+synti/deicsonze
+synti/deicsonze2
+synti/fluid
+synti/fluidsynth
+synti/libsynti
+synti/organ
+synti/simpledrums
+synti/vam \ No newline at end of file