const char * maker () const { return _info->creator.c_str(); }
uint32_t parameter_count () const;
float default_value (uint32_t port);
- framecnt_t signal_latency() const;
+ samplecnt_t signal_latency() const;
void set_parameter (uint32_t which, float val);
float get_parameter (uint32_t which) const;
+ PluginOutputConfiguration possible_output () const { return _output_configs; }
+
int get_parameter_descriptor (uint32_t which, ParameterDescriptor&) const;
uint32_t nth_parameter (uint32_t which, bool& ok) const;
void activate ();
int set_block_size (pframes_t nframes);
int connect_and_run (BufferSet& bufs,
- ChanMapping in, ChanMapping out,
- pframes_t nframes, framecnt_t offset);
+ samplepos_t start, samplepos_t end, double speed,
+ ChanMapping const& in, ChanMapping const& out,
+ pframes_t nframes, samplecnt_t offset);
std::set<Evoral::Parameter> automatable() const;
std::string describe_parameter (Evoral::Parameter);
+ IOPortDescription describe_io_port (DataType dt, bool input, uint32_t id) const;
std::string state_node_name () const { return "audiounit"; }
void print_parameter (uint32_t, char*, uint32_t len) const;
bool has_editor () const;
- bool can_support_io_configuration (const ChanCount& in, ChanCount& out);
+ bool can_support_io_configuration (const ChanCount& in, ChanCount& out, ChanCount* imprecise);
ChanCount output_streams() const;
ChanCount input_streams() const;
bool configure_io (ChanCount in, ChanCount out);
OSStatus render_callback(AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
- UInt32 inNumberFrames,
+ UInt32 inNumberSamples,
AudioBufferList* ioData);
/* "host" callbacks */
int32_t input_channels;
int32_t output_channels;
std::vector<std::pair<int,int> > io_configs;
- pframes_t _current_block_size;
- framecnt_t _last_nframes;
+ samplecnt_t _last_nframes;
+ mutable volatile guint _current_latency;
bool _requires_fixed_size_buffers;
AudioBufferList* buffers;
bool _has_midi_input;
bool _has_midi_output;
+ PluginOutputConfiguration _output_configs;
/* despite all the cool work that apple did on their AU preset
system, they left factory presets and user presets as two
UInt32 output_elements;
UInt32 input_elements;
- int set_output_format (AudioStreamBasicDescription&);
- int set_input_format (AudioStreamBasicDescription&);
- int set_stream_format (int scope, uint32_t cnt, AudioStreamBasicDescription&);
+ bool variable_inputs;
+ bool variable_outputs;
+
+ uint32_t configured_input_busses;
+ uint32_t configured_output_busses;
+
+ uint32_t *bus_inputs;
+ uint32_t *bus_outputs;
+ std::vector <std::string> _bus_name_in;
+ std::vector <std::string> _bus_name_out;
+
+ int set_stream_format (int scope, uint32_t bus, AudioStreamBasicDescription&);
void discover_parameters ();
void add_state (XMLNode *) const;
typedef std::map<uint32_t, uint32_t> ParameterMap;
ParameterMap parameter_map;
uint32_t input_maxbuf;
- framecnt_t input_offset;
- framecnt_t cb_offset;
+ samplecnt_t input_offset;
+ samplecnt_t *cb_offsets;
BufferSet* input_buffers;
- framecnt_t frames_processed;
+ ChanMapping * input_map;
+ samplecnt_t samples_processed;
uint32_t audio_input_cnt;
std::vector<AUParameterDescriptor> descriptors;
void discover_factory_presets ();
- bool last_transport_rolling;
- float last_transport_speed;
+ samplepos_t transport_sample;
+ float transport_speed;
+ float last_transport_speed;
static void _parameter_change_listener (void* /*arg*/, void* /*src*/, const AudioUnitEvent* event, UInt64 host_time, Float32 new_value);
void parameter_change_listener (void* /*arg*/, void* /*src*/, const AudioUnitEvent* event, UInt64 host_time, Float32 new_value);
PluginPtr load (Session& session);
- virtual std::vector<Plugin::PresetRecord> get_presets(Session& session);
+ std::vector<Plugin::PresetRecord> get_presets (bool user_only) const;
- bool needs_midi_input ();
- bool is_effect () const;
+ bool needs_midi_input () const;
bool is_effect_without_midi_input () const;
bool is_effect_with_midi_input () const;
+
+ /* note: AU's have an explicit way to prompt for instrument/fx category */
+ bool is_effect () const;
bool is_instrument () const;
+ bool is_utility () const;
AUPluginCachedInfo cache;
bool reconfigurable_io() const { return true; }
+ static void clear_cache ();
static PluginInfoList* discover (bool scan_only);
static bool au_get_crashlog (std::string &msg);
static std::string stringify_descriptor (const CAComponentDescription&);