21 #ifndef __ardour_audio_unit_h__
22 #define __ardour_audio_unit_h__
25 #include <boost/shared_ptr.hpp>
35 #include <AudioUnit/AudioUnit.h>
36 #include <AudioUnit/AudioUnitProperties.h>
37 #include "appleutility/AUParamInfo.h"
39 #include <boost/shared_ptr.hpp>
43 class CAComponentDescription;
44 struct AudioBufferList;
53 AudioUnitParameterID
id;
67 std::string unique_id ()
const;
68 const char * label ()
const;
69 const char *
name ()
const {
return _info->name.c_str(); }
70 const char *
maker ()
const {
return _info->creator.c_str(); }
71 uint32_t parameter_count ()
const;
72 float default_value (uint32_t port);
74 void set_parameter (uint32_t which,
float val);
75 float get_parameter (uint32_t which)
const;
78 uint32_t nth_parameter (uint32_t which,
bool& ok)
const;
87 std::set<Evoral::Parameter> automatable()
const;
90 void print_parameter (uint32_t,
char*, uint32_t len)
const;
92 bool parameter_is_audio (uint32_t)
const;
93 bool parameter_is_control (uint32_t)
const;
94 bool parameter_is_input (uint32_t)
const;
95 bool parameter_is_output (uint32_t)
const;
99 int set_state(
const XMLNode& node,
int);
101 bool load_preset (PresetRecord);
102 std::string current_preset()
const;
104 bool has_editor ()
const;
110 bool requires_fixed_size_buffers()
const;
113 _requires_fixed_size_buffers = yn;
119 OSStatus render_callback(AudioUnitRenderActionFlags *ioActionFlags,
120 const AudioTimeStamp *inTimeStamp,
122 UInt32 inNumberFrames,
123 AudioBufferList* ioData);
127 OSStatus get_beat_and_tempo_callback (Float64* outCurrentBeat,
128 Float64* outCurrentTempo);
130 OSStatus get_musical_time_location_callback (UInt32* outDeltaSampleOffsetToNextBeat,
131 Float32* outTimeSig_Numerator,
132 UInt32* outTimeSig_Denominator,
133 Float64* outCurrentMeasureDownBeat);
135 OSStatus get_transport_state_callback (Boolean* outIsPlaying,
136 Boolean* outTransportStateChanged,
137 Float64* outCurrentSampleInTimeLine,
138 Boolean* outIsCycling,
139 Float64* outCycleStartBeat,
140 Float64* outCycleEndBeat);
142 static std::string maybe_fix_broken_au_id (
const std::string&);
147 int create_parameter_listener (AUEventListenerProc callback,
void *arg,
float interval_secs);
151 int listen_to_parameter (uint32_t param_id);
152 int end_listen_to_parameter (uint32_t param_id);
156 std::string do_save_preset (std::string
name);
157 void do_remove_preset (std::string);
160 void find_presets ();
193 int set_output_format (AudioStreamBasicDescription&);
194 int set_input_format (AudioStreamBasicDescription&);
195 int set_stream_format (
int scope, uint32_t cnt, AudioStreamBasicDescription&);
196 void discover_parameters ();
197 void add_state (
XMLNode *)
const;
212 void discover_factory_presets ();
217 static void _parameter_change_listener (
void* ,
void* ,
const AudioUnitEvent* event, UInt64 host_time, Float32 new_value);
218 void parameter_change_listener (
void* ,
void* ,
const AudioUnitEvent* event, UInt64 host_time, Float32 new_value);
234 bool needs_midi_input ();
235 bool is_effect ()
const;
236 bool is_effect_without_midi_input ()
const;
237 bool is_effect_with_midi_input ()
const;
238 bool is_instrument ()
const;
245 static bool au_get_crashlog (std::string &msg);
246 static void get_names (CAComponentDescription&, std::string&
name, std::string& maker);
247 static std::string stringify_descriptor (
const CAComponentDescription&);
249 static int load_cached_info ();
256 static void au_start_crashlog (
void);
257 static void au_remove_crashlog (
void);
258 static void au_crashlog (std::string);
264 static void discover_by_description (
PluginInfoList&, CAComponentDescription&);
265 static Glib::ustring au_cache_path ();
270 static bool cached_io_configuration (
const std::string&, UInt32, CAComponent&,
AUPluginCachedInfo&,
const std::string&
name);
272 static void save_cached_info ();
279 #endif // __ardour_audio_unit_h__
UserPresetMap user_preset_map
std::map< uint32_t, uint32_t > ParameterMap
BufferSet * input_buffers
std::vector< std::pair< int, int > > io_configs
bool last_transport_rolling
bool _requires_fixed_size_buffers
AUEventListenerRef _parameter_listener
std::map< std::string, int > FactoryPresetMap
void * _parameter_listener_arg
std::map< std::string, AUPluginCachedInfo > CachedInfoMap
const char * name() const
const char * maker() const
boost::shared_ptr< AUPluginInfo > AUPluginInfoPtr
boost::shared_ptr< CAComponentDescription > descriptor
float last_transport_speed
std::vector< AUParameterDescriptor > descriptors
std::string state_node_name() const
AudioUnitParameterUnit au_unit
boost::shared_ptr< CAComponent > comp
void set_fixed_size_buffers(bool yn)
pframes_t _current_block_size
boost::shared_ptr< AUPlugin > AUPluginPtr
boost::shared_ptr< CAComponent > get_comp() const
bool reconfigurable_io() const
ParameterMap parameter_map
boost::shared_ptr< CAAudioUnit > get_au()
static CachedInfoMap cached_info
framecnt_t frames_processed
static FILE * _crashlog_fd
AudioBufferList * buffers
FactoryPresetMap factory_preset_map
boost::shared_ptr< CAAudioUnit > unit
LIBARDOUR_API uint64_t AudioEngine
std::list< PluginInfoPtr > PluginInfoList
std::vector< std::pair< int, int > > io_configs
LIBARDOUR_API bool init(bool with_vst, bool try_optimization, const char *localedir)
std::map< std::string, std::string > UserPresetMap