I have spent about 27% of my life programming REAPER! That's not entirely true -- I've done other things in the last 10 years, like eating and occasionally sleeping, but you get the idea. It is, by a huge margin, the longest I've worked on anything, ever*. Happy days.
Here is a commit from today's date, around this time, in 2005. Most of the changes did not survive the decade, but the files still exist at least.
commit 64bd59b56fb4edac13d264a516d194aa9715a09d
Author: Justin <justin@localhost>
Date: Sun Nov 20 18:51:40 2005 +0000
diff --git a/jmde/mediaitem.h b/jmde/mediaitem.h
index 8fbc575..c272d1d 100644
--- a/jmde/mediaitem.h
+++ b/jmde/mediaitem.h
@@ -4,23 +4,47 @@
#include "pcmsrc.h"
#include "../WDL/string.h"
+#define SOURCE_TYPE_MEDIAITEM 0x1000
#define WM_USER_RESIZECHILD (WM_USER+1020)
-class MediaItem
+class MediaItem : public PCM_source
{
public:
MediaItem();
- ~MediaItem() { delete m_src; }
+ virtual ~MediaItem() { delete m_src; }
- int GetNumChannels() { return m_src?m_src->GetNumChannels():0; }
- int PropertiesWindow(HWND hwndParent) { return -1; } // todo: properties window
+ virtual PCM_source *Duplicate()
+ {
+ MediaItem *ni=new MediaItem;
+
+ ni->m_position=m_position;
+ ni->m_length=m_length;
+ ni->m_startoffs=m_startoffs;
+ ni->m_loop=m_loop;
+ ni->m_fade_in_len = m_fade_in_len;
+ ni->m_fade_out_len = m_fade_out_len;
+ ni->m_fade_in_shape = m_fade_in_shape;
+ ni->m_fade_out_shape = m_fade_out_shape;
+ ni->m_name.Set(m_name.Get());
+ ni->m_src = m_src ? m_src->Duplicate() : 0;
+ ni->m_volume=m_volume;
+ ni->m_pan=m_pan;
+ ni->m_ui_sel = m_ui_sel;
+
+ return ni;
+ }
+
+ virtual int GetNumChannels() { return m_src?m_src->GetNumChannels():0; }
+ virtual int PropertiesWindow(HWND hwndParent) { return -1; } // todo: properties window
// times passed to these should be global time, i.e. area not relative to m_position
// should handle out-of-bounds, too, and just return silence for those regions
- void GetSamples(PCM_source_transfer_t *block);
- void GetPeakInfo(PCM_source_peaktransfer_t *block);
+ virtual void GetSamples(PCM_source_transfer_t *block);
+ virtual void GetPeakInfo(PCM_source_peaktransfer_t *block);
+ virtual double GetLength() { return m_length; }
+ virtual int GetType() { return SOURCE_TYPE_MEDIAITEM; }
double m_position;
double m_length;
@@ -30,8 +54,6 @@ public:
double m_fade_in_len, m_fade_out_len;
int m_fade_in_shape, m_fade_out_shape; // shape 0 = linear, ...
- double m_volume, m_pan;
-
WDL_String m_name;
PCM_source *m_src;
diff --git a/jmde/pcmsrc.h b/jmde/pcmsrc.h
index 5a904ac..abe3a3e 100644
--- a/jmde/pcmsrc.h
+++ b/jmde/pcmsrc.h
@@ -81,6 +81,8 @@ class PCM_section_source : public PCM_source
virtual PCM_source *Duplicate()
{
PCM_section_source *ns=new PCM_section_source;
+ ns->m_volume=m_volume;
+ ns->m_pan=m_pan;
ns->SetSource(m_src?m_src->Duplicate():0,m_startpos,m_length,m_edgeoverlap_time);
return ns;
}
@@ -131,6 +133,8 @@ class PCM_mixing_source : public PCM_source
virtual PCM_source *Duplicate()
{
PCM_mixing_source *ns=new PCM_mixing_source;
+ ns->m_volume=m_volume;
+ ns->m_pan=m_pan;
int x;
for (x = 0; x < m_channels.GetSize(); x ++)
@@ -174,6 +178,8 @@ class PCM_source_wavefile : public PCM_source
virtual PCM_source *Duplicate()
{
PCM_source_wavefile *ns=new PCM_source_wavefile;
+ ns->m_volume=m_volume;
+ ns->m_pan=m_pan;
ns->Open(m_filename.Get());
return ns;
}
* Most of my projects have a lifespan measured in minutes, sometimes exceeding an hour.
5 Comments