summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-07-22 13:51:16 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-07-22 13:51:16 +0000
commit3b7230552d8aa6c36fd2fbc3ccc1cfb9109fc843 (patch)
tree9d838960d1cad7fca14957b5e5de3215cf938185 /libs/ardour
parent272c1a40db7c965664b256f7f5487dd224bfd413 (diff)
make i18n build work ; add mackie dir back to build ; token work on amp for MIDI; don't try to subgroup route groups with MIDI (for now)
git-svn-id: svn://localhost/ardour2/branches/3.0@5412 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/amp.cc20
-rw-r--r--libs/ardour/ardour/buffer_set.h19
-rw-r--r--libs/ardour/ardour/midi_buffer.h9
-rw-r--r--libs/ardour/delivery.cc2
-rw-r--r--libs/ardour/internal_send.cc2
-rw-r--r--libs/ardour/route.cc7
-rw-r--r--libs/ardour/route_group.cc11
-rw-r--r--libs/ardour/send.cc8
-rw-r--r--libs/ardour/wscript334
9 files changed, 243 insertions, 169 deletions
diff --git a/libs/ardour/amp.cc b/libs/ardour/amp.cc
index c5183eb3db..0efaaa3535 100644
--- a/libs/ardour/amp.cc
+++ b/libs/ardour/amp.cc
@@ -28,6 +28,7 @@
#include "ardour/buffer_set.h"
#include "ardour/configuration.h"
#include "ardour/io.h"
+#include "ardour/midi_buffer.h"
#include "ardour/mute_master.h"
#include "ardour/session.h"
@@ -193,9 +194,26 @@ Amp::apply_gain (BufferSet& bufs, nframes_t nframes, gain_t initial, gain_t targ
delta = target - initial;
}
+ /* MIDI Gain */
+
+ for (BufferSet::midi_iterator i = bufs.midi_begin(); i != bufs.midi_end(); ++i) {
+#if 0
+ MidiBuffer& mb (*i);
+
+ for (MidiBuffer::iterator m = mb.begin(); m != mb.end(); ++m) {
+ Evoral::MIDIEvent<MidiBuffer::TimeType> ev (*m);
+ if (ev.buffer()[0] == MIDI_CMD_NOTE_ON) {
+ ev.buffer()[2] = (uint8_t) rint (ev.buffer()[2] * 1.0);
+ }
+ }
+#endif
+ }
+
+ /* Audio Gain */
+
for (BufferSet::audio_iterator i = bufs.audio_begin(); i != bufs.audio_end(); ++i) {
Sample* const buffer = i->data();
-
+
fractional_pos = 1.0;
for (nframes_t nx = 0; nx < declick; ++nx) {
diff --git a/libs/ardour/ardour/buffer_set.h b/libs/ardour/ardour/buffer_set.h
index 1c77918789..284609a988 100644
--- a/libs/ardour/ardour/buffer_set.h
+++ b/libs/ardour/ardour/buffer_set.h
@@ -126,6 +126,25 @@ public:
audio_iterator audio_begin() { return audio_iterator(*this, 0); }
audio_iterator audio_end() { return audio_iterator(*this, _count.n_audio()); }
+ class midi_iterator {
+ public:
+ MidiBuffer& operator*() { return _set.get_midi(_index); }
+ MidiBuffer* operator->() { return &_set.get_midi(_index); }
+ midi_iterator& operator++() { ++_index; return *this; } // yes, prefix only
+ bool operator==(const midi_iterator& other) { return (_index == other._index); }
+ bool operator!=(const midi_iterator& other) { return (_index != other._index); }
+
+ private:
+ friend class BufferSet;
+
+ midi_iterator(BufferSet& list, size_t index) : _set(list), _index(index) {}
+
+ BufferSet& _set;
+ size_t _index;
+ };
+
+ midi_iterator midi_begin() { return midi_iterator(*this, 0); }
+ midi_iterator midi_end() { return midi_iterator(*this, _count.n_midi()); }
class iterator {
public:
diff --git a/libs/ardour/ardour/midi_buffer.h b/libs/ardour/ardour/midi_buffer.h
index 4e27e33235..d5f15fb621 100644
--- a/libs/ardour/ardour/midi_buffer.h
+++ b/libs/ardour/ardour/midi_buffer.h
@@ -64,6 +64,15 @@ public:
*((TimeType*)(buffer._data + offset)),
event_size, ev_start);
}
+ inline EventType operator*() {
+ uint8_t* ev_start = buffer._data + offset + sizeof(TimeType);
+ int event_size = Evoral::midi_event_size(ev_start);
+ assert(event_size >= 0);
+ return EventType(EventTypeMap::instance().midi_event_type(*ev_start),
+ *((TimeType*)(buffer._data + offset)),
+ event_size, ev_start);
+ }
+
inline iterator_base<BufferType, EventType>& operator++() {
uint8_t* ev_start = buffer._data + offset + sizeof(TimeType);
int event_size = Evoral::midi_event_size(ev_start);
diff --git a/libs/ardour/delivery.cc b/libs/ardour/delivery.cc
index 5a7365df96..01ff226b5e 100644
--- a/libs/ardour/delivery.cc
+++ b/libs/ardour/delivery.cc
@@ -328,8 +328,6 @@ Delivery::run (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame, nfra
Amp::apply_simple_gain (bufs, nframes, tgain);
}
- // Attach output buffers to port buffers
-
if (_panner && _panner->npanners() && !_panner->bypassed()) {
// Use the panner to distribute audio to output port buffers
diff --git a/libs/ardour/internal_send.cc b/libs/ardour/internal_send.cc
index 7c2c384276..f11c6037b3 100644
--- a/libs/ardour/internal_send.cc
+++ b/libs/ardour/internal_send.cc
@@ -117,6 +117,8 @@ InternalSend::run (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame,
_amp->run (sendbufs, start_frame, end_frame, nframes);
+ /* XXX NEED TO PAN */
+
/* consider metering */
if (_metering) {
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index 73323b4aca..56311c975d 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -760,10 +760,6 @@ Route::add_processor_from_xml (const XMLNode& node, ProcessorList::iterator iter
return true;
}
- } else if (prop->value() == "listen" || prop->value() == "deliver") {
-
- /* XXX need to generalize */
-
} else if (prop->value() == "intsend") {
processor.reset (new InternalSend (_session, _mute_master, node));
@@ -795,6 +791,7 @@ Route::add_processor_from_xml (const XMLNode& node, ProcessorList::iterator iter
} else {
error << string_compose(_("unknown Processor type \"%1\"; ignored"), prop->value()) << endmsg;
+ return false;
}
if (iter == _processors.end() && processor->visible() && !_processors.empty()) {
@@ -2649,6 +2646,8 @@ Route::meter ()
{
Glib::RWLock::ReaderLock rm (_processor_lock, Glib::TRY_LOCK);
+ assert (_meter);
+
_meter->meter ();
for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) {
diff --git a/libs/ardour/route_group.cc b/libs/ardour/route_group.cc
index f88df5c86a..26612226a7 100644
--- a/libs/ardour/route_group.cc
+++ b/libs/ardour/route_group.cc
@@ -34,6 +34,8 @@
#include "ardour/configuration.h"
#include "ardour/session.h"
+#include "i18n.h"
+
using namespace ARDOUR;
using namespace sigc;
using namespace std;
@@ -224,6 +226,15 @@ RouteGroup::make_subgroup ()
RouteList rl;
uint32_t nin = 0;
+ /* since we don't do MIDI Busses yet, check quickly ... */
+
+ for (list<Route*>::iterator i = routes.begin(); i != routes.end(); ++i) {
+ if ((*i)->output()->n_ports().n_midi() != 0) {
+ PBD::info << _("You cannot subgroup MIDI tracks at this time") << endmsg;
+ return;
+ }
+ }
+
for (list<Route*>::iterator i = routes.begin(); i != routes.end(); ++i) {
nin = max (nin, (*i)->output()->n_ports().n_audio());
}
diff --git a/libs/ardour/send.cc b/libs/ardour/send.cc
index 1728dc52d9..a90f31c2cf 100644
--- a/libs/ardour/send.cc
+++ b/libs/ardour/send.cc
@@ -190,7 +190,13 @@ Send::configure_io (ChanCount in, ChanCount out)
return false;
}
- return Processor::configure_io (in, out);
+ if (!Processor::configure_io (in, out)) {
+ return false;
+ }
+
+ reset_panner ();
+
+ return true;
}
/** Set up the XML description of a send so that its name is unique.
diff --git a/libs/ardour/wscript b/libs/ardour/wscript
index c58d74384e..58e22cca27 100644
--- a/libs/ardour/wscript
+++ b/libs/ardour/wscript
@@ -3,6 +3,7 @@ import autowaf
import os
import glob
import Options
+from w18n import build_i18n
# Version of this package (even if built as a child)
MAJOR = '3'
@@ -26,6 +27,160 @@ blddir = 'build'
path_prefix = 'libs/ardour/'
+libardour_sources = [
+ 'amp.cc',
+ 'analyser.cc',
+ 'audio_buffer.cc',
+ 'audio_diskstream.cc',
+ 'audio_library.cc',
+ 'audio_playlist.cc',
+ 'audio_playlist_importer.cc',
+ 'audio_port.cc',
+ 'audio_region_importer.cc',
+ 'audio_track.cc',
+ 'audio_track_importer.cc',
+ 'audioanalyser.cc',
+ 'audioengine.cc',
+ 'audiofile_tagger.cc',
+ 'audiofilesource.cc',
+ 'audioregion.cc',
+ 'audiosource.cc',
+ 'auditioner.cc',
+ 'automatable.cc',
+ 'automation.cc',
+ 'automation_control.cc',
+ 'automation_list.cc',
+ 'beats_frames_converter.cc',
+ 'broadcast_info.cc',
+ 'buffer.cc',
+ 'buffer_set.cc',
+ 'bundle.cc',
+ 'chan_count.cc',
+ 'chan_mapping.cc',
+ 'configuration.cc',
+ 'control_protocol_manager.cc',
+ 'control_protocol_search_path.cc',
+ 'crossfade.cc',
+ 'cycle_timer.cc',
+ 'default_click.cc',
+ 'delivery.cc',
+ 'directory_names.cc',
+ 'diskstream.cc',
+ 'element_import_handler.cc',
+ 'element_importer.cc',
+ 'enums.cc',
+ 'event_type_map.cc',
+ 'export_channel.cc',
+ 'export_channel_configuration.cc',
+ 'export_file_io.cc',
+ 'export_filename.cc',
+ 'export_format_base.cc',
+ 'export_format_manager.cc',
+ 'export_format_specification.cc',
+ 'export_formats.cc',
+ 'export_handler.cc',
+ 'export_preset.cc',
+ 'export_processor.cc',
+ 'export_profile_manager.cc',
+ 'export_status.cc',
+ 'export_timespan.cc',
+ 'export_utilities.cc',
+ 'file_source.cc',
+ 'filename_extensions.cc',
+ 'filesystem_paths.cc',
+ 'filter.cc',
+ 'find_session.cc',
+ 'gain.cc',
+ 'gdither.cc',
+ 'globals.cc',
+ 'import.cc',
+ 'internal_return.cc',
+ 'internal_send.cc',
+ 'interpolation.cc',
+ 'io.cc',
+ 'io_processor.cc',
+ 'jack_slave.cc',
+ 'ladspa_plugin.cc',
+ 'location.cc',
+ 'location_importer.cc',
+ 'meter.cc',
+ 'midi_buffer.cc',
+ 'midi_clock_slave.cc',
+ 'midi_diskstream.cc',
+ 'midi_model.cc',
+ 'midi_patch_manager.cc',
+ 'midi_playlist.cc',
+ 'midi_port.cc',
+ 'midi_region.cc',
+ 'midi_ring_buffer.cc',
+ 'midi_source.cc',
+ 'midi_state_tracker.cc',
+ 'midi_stretch.cc',
+ 'midi_track.cc',
+ 'mix.cc',
+ 'mtc_slave.cc',
+ 'mute_master.cc',
+ 'named_selection.cc',
+ 'onset_detector.cc',
+ 'panner.cc',
+ 'pcm_utils.cc',
+ 'playlist.cc',
+ 'playlist_factory.cc',
+ 'plugin.cc',
+ 'plugin_insert.cc',
+ 'plugin_manager.cc',
+ 'port.cc',
+ 'port_insert.cc',
+ 'port_set.cc',
+ 'processor.cc',
+ 'quantize.cc',
+ 'rc_configuration.cc',
+ 'recent_sessions.cc',
+ 'region.cc',
+ 'region_factory.cc',
+ 'resampled_source.cc',
+ 'return.cc',
+ 'reverse.cc',
+ 'route.cc',
+ 'route_group.cc',
+ 'rb_effect.cc',
+ 'send.cc',
+ 'session.cc',
+ 'session_butler.cc',
+ 'session_click.cc',
+ 'session_command.cc',
+ 'session_configuration.cc',
+ 'session_directory.cc',
+ 'session_events.cc',
+ 'session_export.cc',
+ 'session_metadata.cc',
+ 'session_midi.cc',
+ 'session_process.cc',
+ 'session_state.cc',
+ 'session_state_utils.cc',
+ 'session_time.cc',
+ 'session_transport.cc',
+ 'session_utils.cc',
+ 'smf_source.cc',
+ 'sndfile_helpers.cc',
+ 'sndfileimportable.cc',
+ 'sndfilesource.cc',
+ 'source.cc',
+ 'source_factory.cc',
+ 'strip_silence.cc',
+ 'svn_revision.cc',
+ 'tape_file_matcher.cc',
+ 'template_utils.cc',
+ 'tempo.cc',
+ 'tempo_map_importer.cc',
+ 'ticker.cc',
+ 'track.cc',
+ 'transient_detector.cc',
+ 'user_bundle.cc',
+ 'utils.cc',
+ 'version.cc'
+]
+
def set_options(opt):
autowaf.set_options(opt)
@@ -76,160 +231,8 @@ def configure(conf):
def build(bld):
# Library
- obj = bld.new_task_gen('cxx', 'shlib')
- obj.source = '''
- amp.cc
- analyser.cc
- audio_buffer.cc
- audio_diskstream.cc
- audio_library.cc
- audio_playlist.cc
- audio_playlist_importer.cc
- audio_port.cc
- audio_region_importer.cc
- audio_track.cc
- audio_track_importer.cc
- audioanalyser.cc
- audioengine.cc
- audiofile_tagger.cc
- audiofilesource.cc
- audioregion.cc
- audiosource.cc
- auditioner.cc
- automatable.cc
- automation.cc
- automation_control.cc
- automation_list.cc
- beats_frames_converter.cc
- broadcast_info.cc
- buffer.cc
- buffer_set.cc
- bundle.cc
- chan_count.cc
- chan_mapping.cc
- configuration.cc
- control_protocol_manager.cc
- control_protocol_search_path.cc
- crossfade.cc
- cycle_timer.cc
- default_click.cc
- delivery.cc
- directory_names.cc
- diskstream.cc
- element_import_handler.cc
- element_importer.cc
- enums.cc
- event_type_map.cc
- export_channel.cc
- export_channel_configuration.cc
- export_file_io.cc
- export_filename.cc
- export_format_base.cc
- export_format_manager.cc
- export_format_specification.cc
- export_formats.cc
- export_handler.cc
- export_preset.cc
- export_processor.cc
- export_profile_manager.cc
- export_status.cc
- export_timespan.cc
- export_utilities.cc
- file_source.cc
- filename_extensions.cc
- filesystem_paths.cc
- filter.cc
- find_session.cc
- gain.cc
- gdither.cc
- globals.cc
- import.cc
- internal_return.cc
- internal_send.cc
- interpolation.cc
- io.cc
- io_processor.cc
- jack_slave.cc
- ladspa_plugin.cc
- location.cc
- location_importer.cc
- meter.cc
- midi_buffer.cc
- midi_clock_slave.cc
- midi_diskstream.cc
- midi_model.cc
- midi_patch_manager.cc
- midi_playlist.cc
- midi_port.cc
- midi_region.cc
- midi_ring_buffer.cc
- midi_source.cc
- midi_state_tracker.cc
- midi_stretch.cc
- midi_track.cc
- mix.cc
- mtc_slave.cc
- mute_master.cc
- named_selection.cc
- onset_detector.cc
- panner.cc
- pcm_utils.cc
- playlist.cc
- playlist_factory.cc
- plugin.cc
- plugin_insert.cc
- plugin_manager.cc
- port.cc
- port_insert.cc
- port_set.cc
- processor.cc
- quantize.cc
- rc_configuration.cc
- recent_sessions.cc
- region.cc
- region_factory.cc
- resampled_source.cc
- return.cc
- reverse.cc
- route.cc
- route_group.cc
- rb_effect.cc
- send.cc
- session.cc
- session_butler.cc
- session_click.cc
- session_command.cc
- session_configuration.cc
- session_directory.cc
- session_events.cc
- session_export.cc
- session_metadata.cc
- session_midi.cc
- session_process.cc
- session_state.cc
- session_state_utils.cc
- session_time.cc
- session_transport.cc
- session_utils.cc
- smf_source.cc
- sndfile_helpers.cc
- sndfileimportable.cc
- sndfilesource.cc
- source.cc
- source_factory.cc
- strip_silence.cc
- svn_revision.cc
- tape_file_matcher.cc
- template_utils.cc
- tempo.cc
- tempo_map_importer.cc
- ticker.cc
- track.cc
- transient_detector.cc
- user_bundle.cc
- utils.cc
- version.cc
- '''
+ obj = bld.new_task_gen('cxx', 'shlib')
+ obj.source = libardour_sources
obj.export_incdirs = ['.']
obj.includes = ['.', '../surfaces/control_protocol']
obj.name = 'libardour'
@@ -249,28 +252,35 @@ def build(bld):
#obj.source += ' st_stretch.cc st_pitch.cc '
#obj.uselib += ' SOUNDTOUCH '
if bld.env['HAVE_SLV2']:
- obj.source += ' lv2_plugin.cc lv2_event_buffer.cc uri_map.cc '
+ obj.source += [ 'lv2_plugin.cc', 'lv2_event_buffer.cc', 'uri_map.cc' ]
obj.uselib += ' SLV2 '
if bld.env['VST']:
- obj.source += ' vst_plugin.cc session_vst.cc '
+ obj.source += [ 'vst_plugin.cc', 'session_vst.cc' ]
if bld.env['HAVE_COREAUDIO'] and bld.env['COREAUDIO']:
- obj.sources += ' coreaudio.cc caimportable.cc '
+ obj.sources += [ 'coreaudio.cc', 'caimportable.cc' ]
if bld.env['HAVE_AUDIOUNITS'] and bld.env['AUDIOUNITS']:
- obj.sources += ' audio_unit.cc '
+ obj.sources += [ 'audio_unit.cc' ]
if bld.env['IS_OSX']:
# this avoids issues with circular dependencies between libardour and libardour_cp.
obj.linkflags += '-undefined suppress -flat_namespace'
if bld.env['FPU_OPTIMIZATION']:
- obj.source += ' sse_functions_xmm.cc'
+ obj.source += [ 'sse_functions_xmm.cc' ]
if bld.env['build_target'] == 'i386' or bld.env['build_target'] == 'i686':
- obj.source += ' sse_functions.s'
+ obj.source += [ 'sse_functions.s' ]
elif bld.env['build_target'] == 'x86_64':
- obj.source += ' sse_functions_64bit.s'
+ obj.source += [ 'sse_functions_64bit.s' ]
+
+ # i18n
+ if bld.env['ENABLE_NLS']:
+ mo_files = glob.glob (os.path.join (bld.get_curdir(), 'po/*.mo'))
+ for mo in mo_files:
+ lang = os.path.basename (mo).replace ('.mo', '')
+ bld.install_as (os.path.join (bld.env['PREFIX'], 'share', 'locale', lang, 'LC_MESSAGES', APPNAME + '.mo'), mo)
if bld.env['HAVE_CPPUNIT']:
# Unit tests
@@ -289,3 +299,5 @@ def build(bld):
def shutdown():
autowaf.shutdown()
+def i18n(bld):
+ build_i18n (bld, 'libs/ardour', APPNAME, libardour_sources)