<< >>
justin = { main feed , music , code , askjf , social , pubkey };
[ <<< last (older) article | view in index | next (newer) article >>> ]

Nov 20, 2015
ah, 10 years

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:
Posted by William Fields on Sat 21 Nov 2015 at 02:13 from 71.175.0.x
I thank you deeply for it! I wouldn't be able to make the art that I do without it.


Posted by Tale on Sat 21 Nov 2015 at 09:36 from 77.170.68.x
Congratulations! So I guess WDL is even older than 10 years, right? Anyway, here's to the next 10 years!


Posted by argee on Sun 22 Nov 2015 at 23:48 from 207.6.166.x
Glad to see that you are still happy to work on it and congratulations on exceeding an hour and then some!


Posted by Gio on Fri 18 Dec 2015 at 20:03 from 94.70.27.x
Keep up the good work mate. Your Win32 craftsmanship is extrordinary.
Hope for more happy years to come.


Posted by Jamesd256 on Sat 27 Feb 2016 at 16:50 from 79.77.82.x
20 years ago I had a dream. I strove to find a way of working where the software would get out of the way and let me pour out the music.

Of course, REAPER manages that uniquely. But it's the spirit behind the software that has me captivated. That's the most remarkable thing.

Ironically, the year I dropped music making was the same year REAPER was born - I didn't know it existed until 3 months ago.

All I can say is I salute you sir.

Love the art by the way.


Add comment:
Name:
Human?: (no or yes, patented anti crap stuff here)
Comment:
search : rss : recent comments : Copyright © 2017 Justin Frankel