opt_flags = []
if env['GPROFILE'] == 1:
- debug_flags = [ '-g', '-pg' ]
+ debug_flags = [ '-O0', '-g', '-pg' ]
else:
- debug_flags = [ '-g' ]
+ debug_flags = [ '-O0', '-g' ]
# guess at the platform, used to define compiler flags
*/
#include <pbd/memento_command.h>
+#include <ardour/session.h>
+#include <ardour/automation_control.h>
#include "automation_region_view.h"
#include "public_editor.h"
#include <gtkmm2ext/window_title.h>
#include <gtkmm2ext/choice.h>
-#include <ardour/audio_track.h>
#include <ardour/audio_diskstream.h>
-#include <ardour/plugin_manager.h>
-#include <ardour/location.h>
+#include <ardour/audio_track.h>
#include <ardour/audioplaylist.h>
#include <ardour/audioregion.h>
+#include <ardour/location.h>
#include <ardour/midi_region.h>
-#include <ardour/session_route.h>
+#include <ardour/plugin_manager.h>
+#include <ardour/profile.h>
+#include <ardour/route_group.h>
#include <ardour/session_directory.h>
+#include <ardour/session_route.h>
#include <ardour/session_state_utils.h>
#include <ardour/tempo.h>
#include <ardour/utils.h>
-#include <ardour/profile.h>
#include <control_protocol/control_protocol.h>
#include <pbd/convert.h>
+#include <ardour/audio_port.h>
+#include <ardour/audio_track.h>
#include <ardour/audioengine.h>
#include <ardour/export_channel_configuration.h>
#include <ardour/export_handler.h>
#include <ardour/io.h>
#include <ardour/route.h>
-#include <ardour/audio_port.h>
#include <ardour/session.h>
#include <sstream>
return true;
}
+boost::shared_ptr<PBD::Controllable>
+GainMeterBase::get_controllable()
+{
+ return _io->gain_control();
+}
+
+
virtual void setup_meters (int len=0);
- boost::shared_ptr<PBD::Controllable> get_controllable() { return _io->gain_control(); }
+ boost::shared_ptr<PBD::Controllable> get_controllable();
LevelMeter& get_level_meter() const { return *level_meter; }
Gtkmm2ext::SliderController& get_gain_slider() const { return *gain_slider; }
#define __ardour_gtk_track_meter_h__
#include <vector>
-#include <map>
#include <gtkmm/box.h>
#include <gtkmm/adjustment.h>
guint16 regular_meter_width;
static const guint16 thin_meter_width = 2;
- vector<MeterInfo> meters;
+ std::vector<MeterInfo> meters;
float max_peak;
void hide_all_meters ();
#include <ardour/session.h>
#include <ardour/audioengine.h>
#include <ardour/route.h>
+#include <ardour/route_group.h>
#include <ardour/audio_track.h>
#include <ardour/audio_diskstream.h>
#include <ardour/panner.h>
#include <ardour/types.h>
#include <ardour/ardour.h>
-#include <ardour/io.h>
#include <ardour/processor.h>
-#include <ardour/io_processor.h>
#include <pbd/fastlog.h>
#include <gtkmm2ext/stop_signal.h>
#include <gtkmm2ext/window_title.h>
-#include <ardour/session.h>
-#include <ardour/audio_track.h>
-#include <ardour/session_route.h>
#include <ardour/audio_diskstream.h>
+#include <ardour/audio_track.h>
#include <ardour/plugin_manager.h>
+#include <ardour/route_group.h>
+#include <ardour/session.h>
+#include <ardour/session_route.h>
#include "keyboard.h"
#include "mixer_ui.h"
#include <pbd/stateful.h>
#include <ardour/ardour.h>
-#include <ardour/io.h>
#include "route_processor_selection.h"
#include "enums.h"
for (Targets::iterator i = pucks.begin(); i != pucks.end(); ++i) {
- Target* puck = i->second;
+ //Target* puck = i->second;
/* XXX DO SOMETHING TO SET PUCK BACK TO "normal" */
}
void panning_link_direction_clicked ();
- vector<Gtk::Adjustment*> pan_adjustments;
- vector<PannerBar*> pan_bars;
+ std::vector<Gtk::Adjustment*> pan_adjustments;
+ std::vector<PannerBar*> pan_bars;
void pan_adjustment_changed (uint32_t which);
void pan_value_changed (uint32_t which);
*/
-#include "port_group.h"
-#include "port_matrix.h"
-#include "i18n.h"
-#include "ardour/session.h"
+#include <cstring>
+#include <boost/shared_ptr.hpp>
+
#include "ardour/audio_track.h"
-#include "ardour/midi_track.h"
#include "ardour/audioengine.h"
-#include "ardour/port.h"
#include "ardour/bundle.h"
-#include <boost/shared_ptr.hpp>
-#include <cstring>
+#include "ardour/io_processor.h"
+#include "ardour/midi_track.h"
+#include "ardour/port.h"
+#include "ardour/session.h"
+
+#include "port_group.h"
+#include "port_matrix.h"
+
+#include "i18n.h"
using namespace std;
using namespace Gtk;
#include <ardour/types.h>
#include <ardour/ardour.h>
-#include <ardour/io.h>
#include <ardour/plugin_insert.h>
#include <ardour/port_insert.h>
#include <ardour/processor.h>
namespace ARDOUR {
class Connection;
+ class IO;
class Insert;
class Plugin;
class PluginInsert;
#include <pbd/stateful.h>
#include <ardour/ardour.h>
-#include <ardour/io.h>
-#include <ardour/io_processor.h>
#include "io_selector.h"
#include "ardour_dialog.h"
#include <gtkmm2ext/bindable_button.h>
#include <gtkmm2ext/utils.h>
-#include <ardour/playlist.h>
#include <ardour/audioplaylist.h>
#include <ardour/diskstream.h>
-#include <ardour/processor.h>
#include <ardour/ladspa_plugin.h>
#include <ardour/location.h>
#include <ardour/panner.h>
#include <ardour/playlist.h>
+#include <ardour/playlist.h>
+#include <ardour/processor.h>
+#include <ardour/profile.h>
+#include <ardour/route_group.h>
#include <ardour/session.h>
#include <ardour/session_playlist.h>
#include <ardour/utils.h>
#include <evoral/Parameter.hpp>
-#include <ardour/profile.h>
#include "ardour_ui.h"
#include "route_time_axis.h"
#ifndef __ardour_route_time_axis_h__
#define __ardour_route_time_axis_h__
+#include <list>
+#include <set>
+
#include <gtkmm/table.h>
#include <gtkmm/button.h>
#include <gtkmm/box.h>
#include <gtkmm2ext/selector.h>
#include <gtkmm2ext/slider_controller.h>
-#include <list>
#include <ardour/playlist.h>
#include <ardour/types.h>
ProcessorAutomationCurves processor_automation_curves;
// Set from XML so context menu automation buttons can be correctly initialized
- set<Evoral::Parameter> _show_automation;
+ std::set<Evoral::Parameter> _show_automation;
AutomationTracks _automation_tracks;
*/
-#include <ardour/send.h>
#include <gtkmm2ext/doi.h>
+#include <ardour/io.h>
+#include <ardour/send.h>
+
#include "utils.h"
#include "send_ui.h"
#include "io_selector.h"
#include <ardour/ardour.h>
#include <ardour/configuration.h>
-#include <ardour/session.h>
-#include <ardour/route_group.h>
-#include <ardour/route.h>
#include <ardour/utils.h>
#include <ardour/diskstream.h>
#include <ardour/audioplaylist.h>
void process_varispeed_playback(nframes_t nframes, boost::shared_ptr<ChannelList> c);
/* The two central butler operations */
- int do_flush (Session::RunContext context, bool force = false);
+ int do_flush (RunContext context, bool force = false);
int do_refill () { return _do_refill(_mixdown_buffer, _gain_buffer); }
int do_refill_with_alloc ();
#include <set>
#include <map>
#include <boost/shared_ptr.hpp>
-#include <ardour/session_object.h>
-#include <ardour/automation_list.h>
-#include <ardour/automation_control.h>
#include <ardour/event_type_map.h>
#include <evoral/ControlSet.hpp>
#include <evoral/Sequence.hpp>
namespace ARDOUR {
-class AutomationList;
class Session;
class Automatable;
#ifndef __ardour_diskstream_h__
#define __ardour_diskstream_h__
-#include <sigc++/signal.h>
-
-#include <cmath>
#include <string>
#include <queue>
#include <map>
#include <vector>
-
+#include <cmath>
#include <time.h>
+#include <sigc++/signal.h>
+
+#include <evoral/types.hpp>
+
#include <pbd/fastlog.h>
#include <pbd/ringbufferNPT.h>
#include <pbd/stateful.h>
#include <ardour/ardour.h>
#include <ardour/configuration.h>
-#include <ardour/session.h>
-#include <ardour/route_group.h>
-#include <ardour/route.h>
+#include <ardour/location.h>
+#include <ardour/session_object.h>
+#include <ardour/types.h>
#include <ardour/utils.h>
+#include <ardour/chan_count.h>
struct tm;
namespace ARDOUR {
class AudioEngine;
+class IO;
+class Playlist;
+class Processor;
+class Region;
class Send;
class Session;
-class Playlist;
-class IO;
class Diskstream : public SessionObject
{
};
/* The two central butler operations */
- virtual int do_flush (Session::RunContext context, bool force = false) = 0;
+ virtual int do_flush (RunContext context, bool force = false) = 0;
virtual int do_refill () = 0;
/** For non-butler contexts (allocates temporary working buffers) */
#define __ardour_export_channel_h__
#include <ardour/audioregion.h>
-#include <ardour/audio_track.h>
#include <ardour/buffer_set.h>
#include <set>
namespace ARDOUR {
class Session;
+class AudioTrack;
+class AudioPort;
/// Export channel base class interface for different source types
class ExportChannel
#ifndef __ardour_export_filename_h__
#define __ardour_export_filename_h__
+#include <boost/shared_ptr.hpp>
#include <glibmm/ustring.h>
#include <pbd/statefuldestructible.h>
-#include <ardour/session.h>
-
using Glib::ustring;
namespace ARDOUR
#include <boost/shared_ptr.hpp>
#include <ardour/ardour.h>
-#include <ardour/session.h>
#include <ardour/types.h>
+#include <ardour/session.h>
namespace ARDOUR
{
#include "ardour.h"
#include "automation_list.h"
-#include <evoral/Curve.hpp>
namespace ARDOUR {
#include <pbd/stateful.h>
#include <ardour/ardour.h>
#include <ardour/audioengine.h>
-#include <ardour/io.h>
#include <ardour/io_processor.h>
namespace ARDOUR {
#include <ardour/chan_count.h>
#include <ardour/latent.h>
#include <ardour/automation_control.h>
+#include <ardour/session_object.h>
using std::string;
using std::vector;
#define __ardour_redirect_h__
#include <string>
-#include <vector>
-#include <set>
-#include <map>
#include <boost/shared_ptr.hpp>
#include <sigc++/signal.h>
#include <ardour/ardour.h>
#include <ardour/processor.h>
-#include <ardour/io.h>
-#include <ardour/automation_list.h>
-using std::map;
-using std::set;
using std::string;
-using std::vector;
class XMLNode;
namespace ARDOUR {
class Session;
+class IO;
/** A mixer strip element (Processor) with Jack ports (IO).
*/
IOProcessor (const IOProcessor&);
virtual ~IOProcessor ();
- virtual ChanCount output_streams() const { return _io->n_outputs(); }
- virtual ChanCount input_streams () const { return _io->n_inputs(); }
- virtual ChanCount natural_output_streams() const { return _io->n_outputs(); }
- virtual ChanCount natural_input_streams () const { return _io->n_inputs(); }
+ virtual ChanCount output_streams() const;
+ virtual ChanCount input_streams () const;
+ virtual ChanCount natural_output_streams() const;
+ virtual ChanCount natural_input_streams () const;
boost::shared_ptr<IO> io() { return _io; }
boost::shared_ptr<const IO> io() const { return _io; }
- virtual void automation_snapshot (nframes_t now, bool force) { _io->automation_snapshot(now, force); }
+ virtual void automation_snapshot (nframes_t now, bool force);
- virtual void run_in_place (BufferSet& in, nframes_t start_frame, nframes_t end_frame, nframes_t nframes, nframes_t offset) = 0;
+ virtual void run_in_place (BufferSet& in, nframes_t start, nframes_t end,
+ nframes_t nframes, nframes_t offset) = 0;
void silence (nframes_t nframes, nframes_t offset);
#include <ardour/ardour.h>
#include <ardour/configuration.h>
-#include <ardour/session.h>
-#include <ardour/route_group.h>
-#include <ardour/route.h>
-#include <ardour/utils.h>
#include <ardour/diskstream.h>
#include <ardour/midi_playlist.h>
#include <ardour/midi_ring_buffer.h>
#include <ardour/midi_state_tracker.h>
+#include <ardour/utils.h>
struct tm;
namespace ARDOUR {
+class IO;
class MidiEngine;
+class MidiPort;
+class MidiRingbuffer;
+class SMFSource;
class Send;
class Session;
-class MidiPlaylist;
-class SMFSource;
-class IO;
class MidiDiskstream : public Diskstream
{
private:
/* The two central butler operations */
- int do_flush (Session::RunContext context, bool force = false);
+ int do_flush (RunContext context, bool force = false);
int do_refill ();
int do_refill_with_alloc();
#include <ardour/types.h>
#include <ardour/utils.h>
-#include <ardour/io.h>
#if defined (ARCH_X86) && defined (BUILD_SSE_OPTIMIZATIONS)
extern "C" {
/* SSE functions */
- float x86_sse_compute_peak (const ARDOUR::Sample * buf, nframes_t nsamples, float current);
- void x86_sse_apply_gain_to_buffer (ARDOUR::Sample * buf, nframes_t nframes, float gain);
- void x86_sse_mix_buffers_with_gain (ARDOUR::Sample * dst, const ARDOUR::Sample * src, nframes_t nframes, float gain);
- void x86_sse_mix_buffers_no_gain (ARDOUR::Sample * dst, const ARDOUR::Sample * src, nframes_t nframes);
+ float x86_sse_compute_peak (const ARDOUR::Sample * buf, nframes_t nsamples, float current);
+ void x86_sse_apply_gain_to_buffer (ARDOUR::Sample * buf, nframes_t nframes, float gain);
+ void x86_sse_mix_buffers_with_gain(ARDOUR::Sample * dst, const ARDOUR::Sample * src, nframes_t nframes, float gain);
+ void x86_sse_mix_buffers_no_gain (ARDOUR::Sample * dst, const ARDOUR::Sample * src, nframes_t nframes);
}
-void x86_sse_find_peaks (const ARDOUR::Sample * buf, nframes_t nsamples, float *min, float *max);
+void x86_sse_find_peaks (const ARDOUR::Sample * buf, nframes_t nsamples, float *min, float *max);
/* debug wrappers for SSE functions */
-float debug_compute_peak (const ARDOUR::Sample * buf, nframes_t nsamples, float current);
-void debug_apply_gain_to_buffer (ARDOUR::Sample * buf, nframes_t nframes, float gain);
-void debug_mix_buffers_with_gain (ARDOUR::Sample * dst, const ARDOUR::Sample * src, nframes_t nframes, float gain);
-void debug_mix_buffers_no_gain (ARDOUR::Sample * dst, const ARDOUR::Sample * src, nframes_t nframes);
+float debug_compute_peak (const ARDOUR::Sample * buf, nframes_t nsamples, float current);
+void debug_apply_gain_to_buffer (ARDOUR::Sample * buf, nframes_t nframes, float gain);
+void debug_mix_buffers_with_gain (ARDOUR::Sample * dst, const ARDOUR::Sample * src, nframes_t nframes, float gain);
+void debug_mix_buffers_no_gain (ARDOUR::Sample * dst, const ARDOUR::Sample * src, nframes_t nframes);
#endif
#include <ardour/types.h>
#include <ardour/automation_control.h>
#include <ardour/processor.h>
-#include <ardour/session.h>
using std::istream;
using std::ostream;
#include <ardour/ardour.h>
#include <ardour/types.h>
#include <ardour/processor.h>
-#include <ardour/automation_list.h>
+#include <ardour/automation_control.h>
class XMLNode;
#ifndef __ardour_port_h__
#define __ardour_port_h__
-#include "ardour/data_type.h"
-#include "ardour/types.h"
-#include <sigc++/trackable.h>
-#include <jack/jack.h>
-#include <string>
#include <set>
+#include <string>
#include <vector>
+#include <jack/jack.h>
+#include <sigc++/trackable.h>
+#include "ardour/data_type.h"
+#include "ardour/types.h"
namespace ARDOUR {
#include <ardour/buffer_set.h>
#include <ardour/automatable.h>
#include <ardour/latent.h>
+#include <ardour/session_object.h>
class XMLNode;
#include <ardour/data_type.h>
#include <ardour/automatable.h>
#include <ardour/readable.h>
+#include <ardour/session_object.h>
class XMLNode;
namespace ARDOUR {
class Session;
+class AudioRegion;
class RegionFactory {
#include <string>
#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
#include <pbd/fastlog.h>
#include <glibmm/thread.h>
#include <ardour/ardour.h>
#include <ardour/io.h>
-#include <ardour/session.h>
-#include <ardour/io_processor.h>
#include <ardour/types.h>
namespace ARDOUR {
class Processor;
+class IOProcessor;
class Send;
class RouteGroup;
ProcessorList::iterator i;
for (i = _processors.begin(); i != _processors.end() && n; ++i, --n);
if (i == _processors.end()) {
- return boost::shared_ptr<IOProcessor> ();
+ return boost::shared_ptr<Processor> ();
} else {
return *i;
}
IO* control_outs() { return _control_outs; }
bool feeds (boost::shared_ptr<Route>);
- set<boost::shared_ptr<Route> > fed_by;
+ std::set<boost::shared_ptr<Route> > fed_by;
struct ToggleControllable : public PBD::Controllable {
enum ToggleType {
#define __ardour_route_group_specialized_h__
#include <ardour/route_group.h>
-#include <ardour/audio_track.h>
+#include <ardour/track.h>
namespace ARDOUR {
#include <pbd/stateful.h>
#include <ardour/ardour.h>
#include <ardour/audioengine.h>
-#include <ardour/io.h>
#include <ardour/io_processor.h>
namespace ARDOUR {
#ifndef __ardour_session_h__
#define __ardour_session_h__
-#include <string>
#include <list>
#include <map>
-#include <vector>
#include <set>
#include <stack>
+#include <string>
+#include <vector>
+#include <stdint.h>
+#include <boost/dynamic_bitset.hpp>
#include <boost/scoped_ptr.hpp>
#include <boost/weak_ptr.hpp>
-#include <boost/dynamic_bitset.hpp>
-
-#include <stdint.h>
#include <sndfile.h>
#include <glibmm/thread.h>
#include <pbd/error.h>
-#include <pbd/undo.h>
#include <pbd/pool.h>
#include <pbd/rcu.h>
#include <pbd/statefuldestructible.h>
+#include <pbd/undo.h>
-#include <midi++/types.h>
#include <midi++/mmc.h>
+#include <midi++/types.h>
-#include <pbd/stateful.h>
#include <pbd/destructible.h>
+#include <pbd/stateful.h>
#include <ardour/ardour.h>
+#include <ardour/chan_count.h>
#include <ardour/configuration.h>
#include <ardour/location.h>
-#include <ardour/gain.h>
-#include <ardour/chan_count.h>
-
#include <ardour/smpte.h>
class XMLTree;
class Controllable;
}
+namespace Evoral {
+ class Curve;
+}
+
namespace ARDOUR {
-class Port;
+class AudioDiskstream;
class AudioEngine;
-class Slave;
-class Diskstream;
-class Route;
-class AuxInput;
-class Source;
+class AudioFileSource;
+class AudioRegion;
class AudioSource;
+class AudioTrack;
+class Auditioner;
+class AutomationList;
+class AuxInput;
class BufferSet;
-class IO;
-
+class Bundle;
+class ControlProtocolInfo;
class Diskstream;
-class AudioDiskstream;
+class ExportHandler;
+class ExportStatus;
+class IO;
+class IOProcessor;
class MidiDiskstream;
-class AudioFileSource;
+class MidiRegion;
class MidiSource;
-class Auditioner;
-class Processor;
-class Send;
-class IOProcessor;
-class PortInsert;
-class PluginInsert;
-class Bundle;
-class TempoMap;
-class AudioTrack;
+class MidiTrack;
class NamedSelection;
-class AudioRegion;
-
-class Region;
class Playlist;
-class VSTPlugin;
-class ControlProtocolInfo;
-
-class MidiTrack;
-class MidiRegion;
+class PluginInsert;
+class Port;
+class PortInsert;
+class Processor;
+class Region;
+class Route;
+class RouteGroup;
class SMFSource;
-
+class Send;
class SessionDirectory;
class SessionMetadata;
-class ExportHandler;
-class ExportStatus;
-
-struct RouteGroup;
+class Slave;
+class Source;
+class TempoMap;
+class VSTPlugin;
using std::vector;
using std::string;
};
struct Event {
- enum Type {
- SetTransportSpeed,
- SetDiskstreamSpeed,
- Locate,
- LocateRoll,
- LocateRollLocate,
- SetLoop,
- PunchIn,
- PunchOut,
- RangeStop,
- RangeLocate,
- Overwrite,
- SetSlaveSource,
- Audition,
- InputConfigurationChange,
- SetAudioRange,
- SetPlayRange,
-
- /* only one of each of these events
- can be queued at any one time
- */
-
- StopOnce,
- AutoLoop
- };
-
- enum Action {
- Add,
- Remove,
- Replace,
- Clear
- };
+ enum Type {
+ SetTransportSpeed,
+ SetDiskstreamSpeed,
+ Locate,
+ LocateRoll,
+ LocateRollLocate,
+ SetLoop,
+ PunchIn,
+ PunchOut,
+ RangeStop,
+ RangeLocate,
+ Overwrite,
+ SetSlaveSource,
+ Audition,
+ InputConfigurationChange,
+ SetAudioRange,
+ SetPlayRange,
+
+ /* only one of each of these events
+ can be queued at any one time
+ */
+
+ StopOnce,
+ AutoLoop
+ };
+
+ enum Action {
+ Add,
+ Remove,
+ Replace,
+ Clear
+ };
Type type;
- Action action;
- nframes_t action_frame;
- nframes_t target_frame;
- double speed;
+ Action action;
+ nframes_t action_frame;
+ nframes_t target_frame;
+ double speed;
- union {
+ union {
void* ptr;
bool yes_or_no;
- nframes_t target2_frame;
+ nframes_t target2_frame;
SlaveSource slave;
Route* route;
- };
+ };
- boost::shared_ptr<Region> region;
+ boost::shared_ptr<Region> region;
- list<AudioRange> audio_range;
- list<MusicRange> music_range;
+ list<AudioRange> audio_range;
+ list<MusicRange> music_range;
- Event(Type t, Action a, nframes_t when, nframes_t where, double spd, bool yn = false)
- : type (t),
- action (a),
- action_frame (when),
- target_frame (where),
- speed (spd),
- yes_or_no (yn) {}
+ Event(Type t, Action a, nframes_t when, nframes_t where, double spd, bool yn = false)
+ : type (t),
+ action (a),
+ action_frame (when),
+ target_frame (where),
+ speed (spd),
+ yes_or_no (yn) {}
- void set_ptr (void* p) {
- ptr = p;
- }
+ void set_ptr (void* p) {
+ ptr = p;
+ }
- bool before (const Event& other) const {
- return action_frame < other.action_frame;
- }
+ bool before (const Event& other) const {
+ return action_frame < other.action_frame;
+ }
- bool after (const Event& other) const {
- return action_frame > other.action_frame;
- }
+ bool after (const Event& other) const {
+ return action_frame > other.action_frame;
+ }
- static bool compare (const Event *e1, const Event *e2) {
- return e1->before (*e2);
- }
+ static bool compare (const Event *e1, const Event *e2) {
+ return e1->before (*e2);
+ }
- void *operator new (size_t ignored) {
- return pool.alloc ();
- }
+ void *operator new (size_t ignored) {
+ return pool.alloc ();
+ }
- void operator delete(void *ptr, size_t size) {
- pool.release (ptr);
- }
+ void operator delete(void *ptr, size_t size) {
+ pool.release (ptr);
+ }
- static const nframes_t Immediate = 0;
+ static const nframes_t Immediate = 0;
- private:
- static MultiAllocSingleReleasePool pool;
+ private:
+ static MultiAllocSingleReleasePool pool;
};
/* creating from an XML file */
Session (AudioEngine&,
- const string& fullpath,
- const string& snapshot_name,
- string mix_template = "");
+ const string& fullpath,
+ const string& snapshot_name,
+ string mix_template = "");
/* creating a new Session */
Session (AudioEngine&,
- string fullpath,
- string snapshot_name,
- AutoConnectOption input_auto_connect,
- AutoConnectOption output_auto_connect,
- uint32_t control_out_channels,
- uint32_t master_out_channels,
- uint32_t n_physical_in,
- uint32_t n_physical_out,
- nframes_t initial_length);
+ string fullpath,
+ string snapshot_name,
+ AutoConnectOption input_auto_connect,
+ AutoConnectOption output_auto_connect,
+ uint32_t control_out_channels,
+ uint32_t master_out_channels,
+ uint32_t n_physical_in,
+ uint32_t n_physical_out,
+ nframes_t initial_length);
virtual ~Session ();
static sigc::signal<void> EndTimeChanged;
static sigc::signal<void> SMPTEOffsetChanged;
- void request_slave_source (SlaveSource);
- bool synced_to_jack() const { return Config->get_slave_source() == JACK; }
+ void request_slave_source (SlaveSource);
+ bool synced_to_jack() const { return Config->get_slave_source() == JACK; }
- double transport_speed() const { return _transport_speed; }
- bool transport_stopped() const { return _transport_speed == 0.0f; }
- bool transport_rolling() const { return _transport_speed != 0.0f; }
+ double transport_speed() const { return _transport_speed; }
+ bool transport_stopped() const { return _transport_speed == 0.0f; }
+ bool transport_rolling() const { return _transport_speed != 0.0f; }
void set_silent (bool yn);
bool silent () { return _silent; }
/* source management */
struct import_status : public InterThreadInfo {
- string doing_what;
+ string doing_what;
- /* control info */
- uint32_t total;
- SrcQuality quality;
- volatile bool freeze;
- std::vector<Glib::ustring> paths;
- bool replace_existing_source;
+ /* control info */
+ uint32_t total;
+ SrcQuality quality;
+ volatile bool freeze;
+ std::vector<Glib::ustring> paths;
+ bool replace_existing_source;
- /* result */
- SourceList sources;
+ /* result */
+ SourceList sources;
};
void import_audiofiles (import_status&);
/* flattening stuff */
- boost::shared_ptr<Region> write_one_track (AudioTrack&, nframes_t start, nframes_t end, bool overwrite, vector<boost::shared_ptr<Source> >&,
- InterThreadInfo& wot);
+ boost::shared_ptr<Region> write_one_track (AudioTrack&, nframes_t start, nframes_t end,
+ bool overwrite, vector<boost::shared_ptr<Source> >&, InterThreadInfo& wot);
int freeze (InterThreadInfo&);
/* session-wide solo/mute/rec-enable */
gain_t* gain_automation_buffer () const { return _gain_automation_buffer; }
pan_t** pan_automation_buffer () const { return _pan_automation_buffer; }
- /* buffers for conversion */
- enum RunContext {
- ButlerContext = 0,
- TransportContext,
- ExportContext
- };
-
/* VST support */
static long vst_callback (AEffect* effect,
- long opcode,
- long index,
- long value,
- void* ptr,
- float opt);
+ long opcode,
+ long index,
+ long value,
+ void* ptr,
+ float opt);
static sigc::signal<void> SendFeedback;
void add_controllable (boost::shared_ptr<PBD::Controllable>);
void remove_controllable (PBD::Controllable*);
- /* metadata */
-
SessionMetadata & metadata () { return *_metadata; }
protected:
inline bool transport_work_requested() const { return g_atomic_int_get(&butler_should_do_transport_work); }
struct ButlerRequest {
- enum Type {
- Wake,
- Run,
- Pause,
- Quit
- };
+ enum Type {
+ Wake,
+ Run,
+ Pause,
+ Quit
+ };
};
enum PostTransportWork {
};
static const PostTransportWork ProcessCannotProceedMask =
- PostTransportWork (PostTransportInputChange|
- PostTransportSpeed|
- PostTransportReverse|
- PostTransportCurveRealloc|
- PostTransportScrub|
- PostTransportAudition|
- PostTransportLocate|
- PostTransportStop);
+ PostTransportWork (
+ PostTransportInputChange|
+ PostTransportSpeed|
+ PostTransportReverse|
+ PostTransportCurveRealloc|
+ PostTransportScrub|
+ PostTransportAudition|
+ PostTransportLocate|
+ PostTransportStop);
PostTransportWork post_transport_work;
bool process_can_proceed() const { return !(post_transport_work & ProcessCannotProceedMask); }
struct MIDIRequest {
-
- enum Type {
- PortChange,
- Quit
- };
-
- Type type;
-
- MIDIRequest () {}
+ enum Type {
+ PortChange,
+ Quit
+ };
+ Type type;
};
Glib::Mutex midi_lock;
/* S/W RAID */
struct space_and_path {
- uint32_t blocks; /* 4kB blocks */
- string path;
+ uint32_t blocks; /* 4kB blocks */
+ string path;
- space_and_path() {
- blocks = 0;
- }
+ space_and_path() {
+ blocks = 0;
+ }
};
struct space_and_path_ascending_cmp {
- bool operator() (space_and_path a, space_and_path b) {
- return a.blocks > b.blocks;
- }
+ bool operator() (space_and_path a, space_and_path b) {
+ return a.blocks > b.blocks;
+ }
};
void setup_raid_path (string path);
/* click track */
struct Click {
- nframes_t start;
- nframes_t duration;
- nframes_t offset;
- const Sample *data;
+ nframes_t start;
+ nframes_t duration;
+ nframes_t offset;
+ const Sample *data;
- Click (nframes_t s, nframes_t d, const Sample *b)
- : start (s), duration (d), data (b) { offset = 0; }
+ Click (nframes_t s, nframes_t d, const Sample *b)
+ : start (s), duration (d), data (b) { offset = 0; }
- void *operator new(size_t ignored) {
- return pool.alloc ();
- };
+ void *operator new(size_t ignored) {
+ return pool.alloc ();
+ };
- void operator delete(void *ptr, size_t size) {
- pool.release (ptr);
- }
+ void operator delete(void *ptr, size_t size) {
+ pool.release (ptr);
+ }
private:
- static Pool pool;
+ static Pool pool;
};
typedef list<Click*> Clicks;
- Clicks clicks;
- bool _clicking;
+ Clicks clicks;
+ bool _clicking;
boost::shared_ptr<IO> _click_io;
- Sample* click_data;
- Sample* click_emphasis_data;
- nframes_t click_length;
- nframes_t click_emphasis_length;
- mutable Glib::RWLock click_lock;
+ Sample* click_data;
+ Sample* click_emphasis_data;
+ nframes_t click_length;
+ nframes_t click_emphasis_length;
+ mutable Glib::RWLock click_lock;
static const Sample default_click[];
static const nframes_t default_click_length;
/* VST support */
long _vst_callback (VSTPlugin*,
- long opcode,
- long index,
- long value,
- void* ptr,
- float opt);
+ long opcode,
+ long index,
+ long value,
+ void* ptr,
+ float opt);
/* number of hardware ports we're using,
based on max (requested,available)
uint32_t n_physical_midi_outputs;
uint32_t n_physical_midi_inputs;
-
int find_all_sources (std::string path, std::set<std::string>& result);
int find_all_sources_across_snapshots (std::set<std::string>& result, bool exclude_this_snapshot);
static bool _disable_all_loaded_plugins;
- /* Metadata */
-
SessionMetadata * _metadata;
- /* used in ::audible_frame() */
-
- mutable bool have_looped;
+ mutable bool have_looped; ///< Used in ::audible_frame(*)
};
} // namespace ARDOUR
class Diskstream;
class Playlist;
class RouteGroup;
+class Region;
class Track : public Route
{
LV2,
VST
};
+
+ enum RunContext {
+ ButlerContext = 0,
+ TransportContext,
+ ExportContext
+ };
enum SlaveSource {
None = 0,
#include <ardour/audio_port.h>
#include <ardour/source_factory.h>
#include <ardour/audio_buffer.h>
+#include <ardour/session.h>
+#include <ardour/io.h>
#include "i18n.h"
#include <locale.h>
* written at all unless @a force_flush is true.
*/
int
-AudioDiskstream::do_flush (Session::RunContext context, bool force_flush)
+AudioDiskstream::do_flush (RunContext context, bool force_flush)
{
uint32_t to_write;
int32_t ret = 0;
*/
while (more_work && !err) {
- switch (do_flush (Session::TransportContext, true)) {
+ switch (do_flush (TransportContext, true)) {
case 0:
more_work = false;
break;
#include <ardour/cycle_timer.h>
#include <ardour/region.h>
#include <ardour/panner.h>
+#include <ardour/session.h>
+#include <ardour/io.h>
+#include <ardour/route.h>
#include "i18n.h"
#include <locale.h>
*/
+#include <ardour/audio_buffer.h>
+#include <ardour/audio_port.h>
+#include <ardour/audio_track.h>
+#include <ardour/audioengine.h>
#include <ardour/export_channel.h>
-
#include <ardour/export_failed.h>
-#include <ardour/audioengine.h>
-#include <ardour/audio_port.h>
-#include <ardour/audio_buffer.h>
+#include <ardour/session.h>
using namespace ARDOUR;
#include <ardour/buffer_set.h>
#include <ardour/meter.h>
#include <ardour/panner.h>
+#include <ardour/io.h>
#include "i18n.h"
#include <ardour/send.h>
#include <ardour/port_insert.h>
#include <ardour/plugin_insert.h>
+#include <ardour/io.h>
#include "i18n.h"
{
_io->silence(nframes, offset);
}
+
+ChanCount
+IOProcessor::output_streams() const
+{
+ return _io->n_outputs();
+}
+
+ChanCount
+IOProcessor::input_streams () const
+{
+ return _io->n_inputs();
+}
+
+ChanCount
+IOProcessor::natural_output_streams() const
+{
+ return _io->n_outputs();
+}
+
+ChanCount
+IOProcessor::natural_input_streams () const
+{
+ return _io->n_inputs();
+}
+
+void
+IOProcessor::automation_snapshot (nframes_t now, bool force)
+{
+ _io->automation_snapshot(now, force);
+}
+
#include <ardour/ardour.h>
#include <ardour/audioengine.h>
-#include <ardour/midi_diskstream.h>
-#include <ardour/utils.h>
#include <ardour/configuration.h>
-#include <ardour/smf_source.h>
-#include <ardour/send.h>
-#include <ardour/region_factory.h>
-#include <ardour/midi_playlist.h>
-#include <ardour/playlist_factory.h>
#include <ardour/cycle_timer.h>
-#include <ardour/midi_region.h>
+#include <ardour/io.h>
+#include <ardour/midi_diskstream.h>
+#include <ardour/midi_playlist.h>
#include <ardour/midi_port.h>
+#include <ardour/midi_region.h>
+#include <ardour/playlist_factory.h>
+#include <ardour/region_factory.h>
+#include <ardour/send.h>
+#include <ardour/session.h>
+#include <ardour/smf_source.h>
+#include <ardour/utils.h>
#include "i18n.h"
#include <locale.h>
* written at all unless @a force_flush is true.
*/
int
-MidiDiskstream::do_flush (Session::RunContext context, bool force_flush)
+MidiDiskstream::do_flush (RunContext context, bool force_flush)
{
uint32_t to_write;
int32_t ret = 0;
*/
while (more_work && !err) {
- switch (do_flush (Session::TransportContext, true)) {
+ switch (do_flush (TransportContext, true)) {
case 0:
more_work = false;
break;
#include <ardour/audio_track.h>
#include <ardour/audio_diskstream.h>
#include <ardour/configuration.h>
+#include <ardour/session.h>
using namespace ARDOUR;
using namespace sigc;
#include <ardour/buffer_set.h>
#include <ardour/meter.h>
#include <ardour/panner.h>
+#include <ardour/io.h>
#include "i18n.h"
#include <pbd/stacktrace.h>
#include <pbd/file_utils.h>
-#include <ardour/audioengine.h>
-#include <ardour/configuration.h>
-#include <ardour/session.h>
-#include <ardour/session_directory.h>
-#include <ardour/session_metadata.h>
-#include <ardour/utils.h>
+#include <ardour/analyser.h>
+#include <ardour/audio_buffer.h>
#include <ardour/audio_diskstream.h>
+#include <ardour/audio_track.h>
+#include <ardour/audioengine.h>
+#include <ardour/audiofilesource.h>
#include <ardour/audioplaylist.h>
#include <ardour/audioregion.h>
-#include <ardour/audiofilesource.h>
+#include <ardour/auditioner.h>
+#include <ardour/buffer_set.h>
+#include <ardour/bundle.h>
+#include <ardour/click.h>
+#include <ardour/configuration.h>
+#include <ardour/crossfade.h>
+#include <ardour/cycle_timer.h>
+#include <ardour/data_type.h>
+#include <ardour/filename_extensions.h>
+#include <ardour/internal_send.h>
+#include <ardour/io_processor.h>
#include <ardour/midi_diskstream.h>
#include <ardour/midi_playlist.h>
#include <ardour/midi_region.h>
-#include <ardour/smf_source.h>
-#include <ardour/auditioner.h>
-#include <ardour/recent_sessions.h>
-#include <ardour/io_processor.h>
-#include <ardour/send.h>
-#include <ardour/processor.h>
-#include <ardour/plugin_insert.h>
-#include <ardour/port_insert.h>
-#include <ardour/slave.h>
-#include <ardour/tempo.h>
-#include <ardour/audio_track.h>
#include <ardour/midi_track.h>
-#include <ardour/cycle_timer.h>
#include <ardour/named_selection.h>
-#include <ardour/crossfade.h>
#include <ardour/playlist.h>
-#include <ardour/internal_send.h>
-#include <ardour/click.h>
-#include <ardour/data_type.h>
-#include <ardour/buffer_set.h>
-#include <ardour/source_factory.h>
+#include <ardour/plugin_insert.h>
+#include <ardour/port_insert.h>
+#include <ardour/processor.h>
+#include <ardour/recent_sessions.h>
#include <ardour/region_factory.h>
-#include <ardour/filename_extensions.h>
+#include <ardour/route_group.h>
+#include <ardour/send.h>
+#include <ardour/session.h>
#include <ardour/session_directory.h>
+#include <ardour/session_directory.h>
+#include <ardour/session_metadata.h>
+#include <ardour/slave.h>
+#include <ardour/smf_source.h>
+#include <ardour/source_factory.h>
#include <ardour/tape_file_matcher.h>
-#include <ardour/analyser.h>
-#include <ardour/audio_buffer.h>
-#include <ardour/bundle.h>
+#include <ardour/tempo.h>
+#include <ardour/utils.h>
#include "i18n.h"
#include <pbd/pthread_utils.h>
#include <pbd/stacktrace.h>
-#include <ardour/configuration.h>
-#include <ardour/audioengine.h>
-#include <ardour/session.h>
#include <ardour/audio_diskstream.h>
-#include <ardour/midi_diskstream.h>
+#include <ardour/audioengine.h>
+#include <ardour/configuration.h>
#include <ardour/crossfade.h>
+#include <ardour/io.h>
+#include <ardour/midi_diskstream.h>
+#include <ardour/session.h>
#include <ardour/timestamps.h>
#include "i18n.h"
/* note that we still try to flush diskstreams attached to inactive routes
*/
- switch ((*i)->do_flush (Session::ButlerContext)) {
+ switch ((*i)->do_flush (ButlerContext)) {
case 0:
bytes += (*i)->write_data_count();
break;
#include <pbd/error.h>
#include <glibmm/thread.h>
+#include <ardour/ardour.h>
+#include <ardour/audio_diskstream.h>
+#include <ardour/audioengine.h>
#include <ardour/export_failed.h>
#include <ardour/export_file_io.h>
-#include <ardour/export_utilities.h>
#include <ardour/export_handler.h>
#include <ardour/export_status.h>
-#include <ardour/timestamps.h>
-#include <ardour/ardour.h>
-#include <ardour/session.h>
-#include <ardour/audioengine.h>
-#include <ardour/audio_diskstream.h>
+#include <ardour/export_utilities.h>
#include <ardour/panner.h>
+#include <ardour/route.h>
+#include <ardour/session.h>
+#include <ardour/timestamps.h>
#include "i18n.h"
#include <ardour/directory_names.h>
#include <ardour/template_utils.h>
#include <ardour/ticker.h>
+#include <ardour/route_group.h>
#include <control_protocol/control_protocol.h>
#include <glibmm/miscutils.h>
#include <evoral/SMFReader.hpp>
+#include <evoral/Control.hpp>
#include <ardour/smf_source.h>
#include <ardour/session.h>
}
if (id < 0) {
- id = limit;
- while (id > initial_id) {
- if ((cr = session->route_by_remote_id (id)) != 0) {
+ uint32_t i = limit;
+ while (i > initial_id) {
+ if ((cr = session->route_by_remote_id (i)) != 0) {
break;
}
- id--;
+ i--;
}
}