* Swapped MidiSource to LibSMF
authorHans Baier <hansfbaier@googlemail.com>
Thu, 12 Feb 2009 23:28:32 +0000 (23:28 +0000)
committerHans Baier <hansfbaier@googlemail.com>
Thu, 12 Feb 2009 23:28:32 +0000 (23:28 +0000)
* integrated libsmf into scons

git-svn-id: svn://localhost/ardour2/branches/3.0@4539 d708f5d6-7413-0410-9779-e7cbd77b26cf

SConstruct
gtk2_ardour/SConscript
gtk2_ardour/ardev_common.sh.in
libs/ardour/SConscript
libs/ardour/ardour/smf_source.h
libs/ardour/smf_source.cc
libs/evoral/SConscript
libs/evoral/src/libsmf/SConscript [new file with mode: 0644]

index 6d41bb0e4ce797880692119490a02134c54f3579..e2536c60ad187cbc969c8eaabbc85b0a61a50dd2 100644 (file)
@@ -650,10 +650,11 @@ libraries['ardour_cp'] = LibraryInfo (LIBS='ardour_cp', LIBPATH='#libs/surfaces/
 
 # The Ardour backend/engine
 
-libraries['ardour'] = LibraryInfo (LIBS='ardour', LIBPATH='#libs/ardour', CPPPATH='#libs/ardour')
-libraries['midi++2'] = LibraryInfo (LIBS='midi++', LIBPATH='#libs/midi++2', CPPPATH='#libs/midi++2')
-libraries['evoral'] = LibraryInfo (LIBS='evoral', LIBPATH='#libs/evoral', CPPPATH='#libs/evoral')
-libraries['pbd']    = LibraryInfo (LIBS='pbd', LIBPATH='#libs/pbd', CPPPATH='#libs/pbd')
+libraries['ardour']    = LibraryInfo (LIBS='ardour', LIBPATH='#libs/ardour', CPPPATH='#libs/ardour')
+libraries['midi++2']   = LibraryInfo (LIBS='midi++', LIBPATH='#libs/midi++2', CPPPATH='#libs/midi++2')
+libraries['smf']       = LibraryInfo (LIBS='smf', LIBPATH='#libs/evoral/src/libsmf', CPPPATH='#libs/evoral/src/libsmf/')
+libraries['evoral']    = LibraryInfo (LIBS='evoral', LIBPATH='#libs/evoral', CPPPATH='#libs/evoral')
+libraries['pbd']       = LibraryInfo (LIBS='pbd', LIBPATH='#libs/pbd', CPPPATH='#libs/pbd')
 libraries['gtkmm2ext'] = LibraryInfo (LIBS='gtkmm2ext', LIBPATH='#libs/gtkmm2ext', CPPPATH='#libs/gtkmm2ext')
 
 
@@ -1156,6 +1157,7 @@ if env['SYSLIBS']:
     subdirs = [
         'libs/pbd',
         'libs/midi++2',
+        'libs/evoral/src/libsmf',
         'libs/evoral',
         'libs/ardour',
         'libs/vamp-sdk',
@@ -1236,6 +1238,7 @@ else:
         'libs/taglib',
         'libs/pbd',
         'libs/midi++2',
+        'libs/evoral/src/libsmf',
         'libs/evoral',
         'libs/ardour',
         'libs/vamp-sdk',
index 0f79d59d7c91a0800d7a3b6f308bbf84ef9373d6..8b60460f4138dd2beae7655cd97bd0a7213ebfe2 100644 (file)
@@ -47,6 +47,7 @@ gtkardour.Merge ([
     libraries['libgnomecanvasmm'],
     libraries['lrdf'],
     libraries['midi++2'],
+    libraries['smf'],
     libraries['evoral'],
     libraries['pangomm'],
     libraries['pbd'],
index 1af6c77062260d743729b99e5b3e5734c33f2b81..b1281354baf8cddc20ecd70c3379c944f6d8cdd3 100644 (file)
@@ -14,7 +14,7 @@ else
 fi
 export VAMP_PATH=libs/vamp-plugins:$VAMP_PATH
 
-export LD_LIBRARY_PATH=libs/vamp-sdk:libs/surfaces/control_protocol:libs/ardour:libs/midi++2:libs/pbd:libs/rubberband:libs/soundtouch:libs/gtkmm2ext:libs/sigc++2:libs/glibmm2:libs/gtkmm2/atk:libs/gtkmm2/pango:libs/gtkmm2/gdk:libs/gtkmm2/gtk:libs/libgnomecanvasmm:libs/libsndfile:libs/appleutility:libs/cairomm:libs/taglib:libs/evoral:$LD_LIBRARY_PATH
+export LD_LIBRARY_PATH=libs/vamp-sdk:libs/surfaces/control_protocol:libs/ardour:libs/midi++2:libs/pbd:libs/rubberband:libs/soundtouch:libs/gtkmm2ext:libs/sigc++2:libs/glibmm2:libs/gtkmm2/atk:libs/gtkmm2/pango:libs/gtkmm2/gdk:libs/gtkmm2/gtk:libs/libgnomecanvasmm:libs/libsndfile:libs/appleutility:libs/cairomm:libs/taglib:libs/evoral:libs/evoral/src/libsmf:$LD_LIBRARY_PATH
 
 # DYLD_LIBRARY_PATH is for darwin.
 export DYLD_FALLBACK_LIBRARY_PATH=$LD_LIBRARY_PATH
index f34dd9b078fdfb285d45b0eefde7879c1e8956eb..11a5b36566320837d13221655874bcadf8c8f539 100644 (file)
@@ -332,6 +332,7 @@ ardour.Merge ([
             libraries['lrdf'],
             libraries['midi++2'],
             libraries['evoral'],
+            libraries['smf'],
             libraries['pbd'],
             libraries['raptor'],
             libraries['samplerate'],
index e92ae59c3fbe7f61e531dca2953fd910dab1437b..4fc868fd35f697ce550215548cc72b6159e4a12b 100644 (file)
@@ -25,7 +25,7 @@
 #include <time.h>
 
 #include <ardour/midi_source.h>
-#include <evoral/SMF.hpp>
+#include <evoral/LibSMF.hpp>
 
 namespace Evoral { template<typename T> class Event; }
 
@@ -34,7 +34,7 @@ namespace ARDOUR {
 template<typename T> class MidiRingBuffer;
 
 /** Standard Midi File (Type 0) Source */
-class SMFSource : public MidiSource, public Evoral::SMF<double> {
+class SMFSource : public MidiSource, public Evoral::LibSMF<double> {
   public:
        enum Flag {
                Writable = 0x1,
index 92ef0b89aabc68b412cb85033d679bea185e1692..50bfa22f4775ac2da0634d6bbdc57b344334e615 100644 (file)
@@ -55,7 +55,7 @@ uint64_t                              SMFSource::header_position_offset;
 
 SMFSource::SMFSource (Session& s, std::string path, Flag flags)
        : MidiSource (s, region_name_from_path(path, false))
-       , Evoral::SMF<double> ()
+       , Evoral::LibSMF<double> ()
        , _flags (Flag(flags | Writable)) // FIXME: this needs to be writable for now
        , _allow_remove_if_empty(true)
 {
@@ -146,7 +146,7 @@ SMFSource::read_unlocked (MidiRingBuffer<double>& dst, nframes_t start, nframes_
        size_t scratch_size = 0; // keep track of scratch to minimize reallocs
 
        // FIXME: don't seek to start and search every read (brutal!)
-       Evoral::SMF<double>::seek_to_start();
+       Evoral::LibSMF<double>::seek_to_start();
        
        // FIXME: assumes tempo never changes after start
        const double frames_per_beat = _session.tempo_map().tempo_at(_timeline_position).frames_per_beat(
@@ -155,7 +155,7 @@ SMFSource::read_unlocked (MidiRingBuffer<double>& dst, nframes_t start, nframes_
        
        const uint64_t start_ticks = (uint64_t)((start / frames_per_beat) * ppqn());
 
-       while (!Evoral::SMF<double>::eof()) {
+       while (!Evoral::LibSMF<double>::eof()) {
                int ret = read_event(&ev_delta_t, &ev_size, &ev_buffer);
                if (ret == -1) { // EOF
                        //cerr << "SMF - EOF\n";
@@ -251,7 +251,7 @@ SMFSource::write_unlocked (MidiRingBuffer<double>& src, nframes_t cnt)
                make_sure_controls_have_the_right_interpolation();
        }
 
-       Evoral::SMF<double>::flush();
+       Evoral::LibSMF<double>::flush();
        free(buf);
 
        const nframes_t oldlen = _length;
@@ -271,12 +271,12 @@ SMFSource::append_event_unlocked(EventTimeUnit unit, const Evoral::Event<double>
                return;
        }
 
-       /*printf("SMFSource: %s - append_event_unlocked time = %lf, size = %u, data = ",
+       printf("SMFSource: %s - append_event_unlocked time = %lf, size = %u, data = ",
                        name().c_str(), ev.time(), ev.size()); 
        for (size_t i=0; i < ev.size(); ++i) {
                printf("%X ", ev.buffer()[i]);
        }
-       printf("\n");*/
+       printf("\n");
        
        assert(ev.time() >= 0);
        
@@ -299,7 +299,7 @@ SMFSource::append_event_unlocked(EventTimeUnit unit, const Evoral::Event<double>
                delta_time = (uint32_t)((ev.time() - last_event_time()) * ppqn());
        }
 
-       Evoral::SMF<double>::append_event_delta(delta_time, ev);
+       Evoral::LibSMF<double>::append_event_delta(delta_time, ev);
 
        _write_data_count += ev.size();
 }
@@ -354,7 +354,7 @@ void
 SMFSource::mark_streaming_midi_write_started (NoteMode mode, nframes_t start_frame)
 {
        MidiSource::mark_streaming_midi_write_started (mode, start_frame);
-       Evoral::SMF<double>::begin_write ();
+       Evoral::LibSMF<double>::begin_write ();
 }
 
 void
@@ -367,7 +367,7 @@ SMFSource::mark_streaming_write_completed ()
        }
        
        _model->set_edited(false);
-       Evoral::SMF<double>::end_write ();
+       Evoral::LibSMF<double>::end_write ();
 }
 
 void
@@ -632,7 +632,7 @@ SMFSource::load_model(bool lock, bool force_reload)
        }
 
        _model->start_write();
-       Evoral::SMF<double>::seek_to_start();
+       Evoral::LibSMF<double>::seek_to_start();
 
        uint64_t time = 0; /* in SMF ticks */
        Evoral::Event<double> ev;
@@ -704,6 +704,6 @@ SMFSource::destroy_model()
 void
 SMFSource::flush_midi()
 {
-       Evoral::SMF<double>::end_write();
+       Evoral::LibSMF<double>::end_write();
 }
 
index 3f901e8fd9189dad5badc797c20499107c94cb1f..bf3f54c1dbd2884a3a11aaa3aac34c336b11487f 100644 (file)
@@ -13,7 +13,8 @@ evoral.Merge([
        libraries['glibmm2'],
        libraries['xml'], 
        libraries['pbd'],
-       libraries['boost']      
+       libraries['boost'],
+       libraries['smf']
        ])
 
 if evoral['IS_OSX']:
@@ -33,6 +34,7 @@ src/Event.cpp
 src/MIDIEvent.cpp
 src/Note.cpp
 src/SMF.cpp
+src/LibSMF.cpp
 src/SMFReader.cpp
 src/Sequence.cpp
 """)
diff --git a/libs/evoral/src/libsmf/SConscript b/libs/evoral/src/libsmf/SConscript
new file mode 100644 (file)
index 0000000..54b4cce
--- /dev/null
@@ -0,0 +1,37 @@
+# -*- python -*-
+
+import os
+import os.path
+import glob
+
+Import('env libraries install_prefix')
+
+subdirs = ['src/libsmf']
+
+smf = env.Clone()
+smf.Merge([
+               libraries['glib2']
+        ])
+
+if smf['IS_OSX']:
+       smf.Append (LINKFLAGS="-Xlinker -headerpad -Xlinker 2048")
+
+domain = 'smf'
+
+smf.Append(DOMAIN=domain, MAJOR=1, MINOR=2, MICRO=0)
+
+sources = Split("""
+smf.c
+smf_decode.c
+smf_load.c
+smf_save.c
+smf_tempo.c
+""")
+
+smf.Append(CFLAGS = '-DSMF_VERSION=\\\"1.2\\\"')
+
+libsmf = smf.SharedLibrary('smf', [ sources ])
+
+Default(libsmf)
+
+env.Alias('install', env.Install(os.path.join(install_prefix, env['LIBDIR'], 'ardour3'), libsmf))