<<
 
>>
 
 
justin = {main feed = { recent comments, search } , music , code , askjf , pubkey };
 
Music
November 22, 2015
cory - 1 -- [8:47]
cory - 2 -- [6:01]
cory - 3 -- [3:31]
cory - 4 -- [6:32]
cory - 5 -- [9:13]
cory - 6 -- [10:12]
cory - 7 -- [12:45]
cory - 8 -- [24:54]
cory - 9 -- [6:41]
cory - 10 -- [9:32]
cory - 11 -- [14:50]
cory - 12 -- [3:53]
cory - 13 -- [5:01]
ah, 10 years
November 20, 2015
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

drink 'n draw
November 19, 2015



Recordings:

in the bucket

Comment...

Music
November 18, 2015
a level revelation
getting through the winter
gouache cock
November 17, 2015



Comment...

watercolor whaaat
November 15, 2015



Comment...

Music
November 14, 2015
cory - 1 -- [3:11]
cory - 2 -- [3:25]
cory - 3 -- [5:15]
cory - 4 -- [12:31]
cory - 5 -- [2:50]
cory - 6 -- [7:55]
cory - 7 -- [7:23]
cory - 8 -- [5:55]
cory - 9 -- [6:24]
cory - 10 -- [16:32]
cory - 11 -- [5:06]
cory - 12 -- [4:26]
cory - 13 -- [3:28]
cory - 14 -- [10:11]
cory - 15 -- [5:35]
cory - 16 -- [6:27]
gouache gouache gouache
November 13, 2015



Recordings:

monster with your name on it
the day is long
unfortunate first

Comment...

gouache gouache gouache
November 13, 2015



Comment...

monotype prints
November 11, 2015



Recordings:

the messy return of an old friend
the plan for recording

Comment...

monotype prints
November 11, 2015



Comment...

gouache 'n stuff
November 11, 2015



Comment...

gouache 'n stuff
November 11, 2015



Comment...

gouache 'n stuff
November 11, 2015



Comment...



Comment...

quantity.

retroactively posted Nov 2015

1 Comment

Music
October 29, 2015
make it rain
neglect of the human condition
Music
October 27, 2015
various northern influence
Music
October 26, 2015
bloop
moon fucker
the sound of ones voice
Music
October 23, 2015
urfect
drink 'n monotype print
October 22, 2015

retroactively posted Nov 2015

1 Comment

drink 'n monotype print
October 22, 2015

retroactively posted Nov 2015

Comment...

search : rss : recent comments : Copyright © 2025 Justin Frankel