diff options
-rw-r--r-- | SConstruct | 11 | ||||
-rw-r--r-- | gtk2_ardour/SConscript | 1 | ||||
-rw-r--r-- | gtk2_ardour/ardev_common.sh.in | 2 | ||||
-rw-r--r-- | libs/ardour/SConscript | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/smf_source.h | 4 | ||||
-rw-r--r-- | libs/ardour/smf_source.cc | 22 | ||||
-rw-r--r-- | libs/evoral/SConscript | 4 | ||||
-rw-r--r-- | libs/evoral/src/libsmf/SConscript | 37 |
8 files changed, 63 insertions, 19 deletions
diff --git a/SConstruct b/SConstruct index 6d41bb0e4c..e2536c60ad 100644 --- a/SConstruct +++ b/SConstruct @@ -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', diff --git a/gtk2_ardour/SConscript b/gtk2_ardour/SConscript index 0f79d59d7c..8b60460f41 100644 --- a/gtk2_ardour/SConscript +++ b/gtk2_ardour/SConscript @@ -47,6 +47,7 @@ gtkardour.Merge ([ libraries['libgnomecanvasmm'], libraries['lrdf'], libraries['midi++2'], + libraries['smf'], libraries['evoral'], libraries['pangomm'], libraries['pbd'], diff --git a/gtk2_ardour/ardev_common.sh.in b/gtk2_ardour/ardev_common.sh.in index 1af6c77062..b1281354ba 100644 --- a/gtk2_ardour/ardev_common.sh.in +++ b/gtk2_ardour/ardev_common.sh.in @@ -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 diff --git a/libs/ardour/SConscript b/libs/ardour/SConscript index f34dd9b078..11a5b36566 100644 --- a/libs/ardour/SConscript +++ b/libs/ardour/SConscript @@ -332,6 +332,7 @@ ardour.Merge ([ libraries['lrdf'], libraries['midi++2'], libraries['evoral'], + libraries['smf'], libraries['pbd'], libraries['raptor'], libraries['samplerate'], diff --git a/libs/ardour/ardour/smf_source.h b/libs/ardour/ardour/smf_source.h index e92ae59c3f..4fc868fd35 100644 --- a/libs/ardour/ardour/smf_source.h +++ b/libs/ardour/ardour/smf_source.h @@ -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, diff --git a/libs/ardour/smf_source.cc b/libs/ardour/smf_source.cc index 92ef0b89aa..50bfa22f47 100644 --- a/libs/ardour/smf_source.cc +++ b/libs/ardour/smf_source.cc @@ -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(); } diff --git a/libs/evoral/SConscript b/libs/evoral/SConscript index 3f901e8fd9..bf3f54c1db 100644 --- a/libs/evoral/SConscript +++ b/libs/evoral/SConscript @@ -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 index 0000000000..54b4ccee70 --- /dev/null +++ b/libs/evoral/src/libsmf/SConscript @@ -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)) |