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
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -6,7 +6,7 @@ import os
|
||||
# major increment <=> incompatible changes
|
||||
# minor increment <=> compatible changes (additions)
|
||||
# micro increment <=> no interface changes
|
||||
LIBSURFACES_LIB_VERSION = '4.1.0'
|
||||
LIBARDOUR_MCP_LIB_VERSION = '4.1.0'
|
||||
|
||||
# Mandatory variables
|
||||
srcdir = '.'
|
||||
@@ -43,10 +43,10 @@ def build(bld):
|
||||
obj.export_incdirs = ['./mackie']
|
||||
obj.cxxflags = '-DPACKAGE="ardour_mackie"'
|
||||
obj.includes = ['.', './mackie']
|
||||
obj.name = 'libmackie'
|
||||
obj.target = 'mackie'
|
||||
obj.uselib_local = 'libardour libsurfaces'
|
||||
obj.vnum = LIBSURFACES_LIB_VERSION
|
||||
obj.name = 'libardour_mcp'
|
||||
obj.target = 'ardour_mcp'
|
||||
obj.uselib_local = 'libardour libardour_cp'
|
||||
obj.vnum = LIBARDOUR_MCP_LIB_VERSION
|
||||
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
|
||||
|
||||
def shutdown():
|
||||
|
||||
@@ -43,6 +43,7 @@ def configure(conf):
|
||||
def build(bld):
|
||||
bld.add_subdirs('control_protocol')
|
||||
bld.add_subdirs('generic_midi')
|
||||
bld.add_subdirs('mackie')
|
||||
if bld.env['BUILD_OSC']:
|
||||
bld.add_subdirs('osc')
|
||||
if bld.env['BUILD_POWERMATE']:
|
||||
|
||||
Reference in New Issue
Block a user