DEBUG_TRACE (DEBUG::AudioUnits, "count output elements\n");
unit->GetElementCount (kAudioUnitScope_Output, output_elements);
- cb_offsets = (framecnt_t*) calloc (input_elements, sizeof(uint32_t));
+ cb_offsets = (framecnt_t*) calloc (input_elements, sizeof(framecnt_t));
bus_inputs = (uint32_t*) calloc (input_elements, sizeof(uint32_t));
bus_outputs = (uint32_t*) calloc (output_elements, sizeof(uint32_t));
break;
}
- d.min_unbound = 0; // lower is bound
- d.max_unbound = 0; // upper is bound
d.update_steps();
descriptors.push_back (d);
/* one MIDI port/buffer only */
MidiBuffer& m = bufs.get_midi (i);
for (MidiBuffer::iterator i = m.begin(); i != m.end(); ++i) {
- Evoral::MIDIEvent<framepos_t> ev (*i);
+ Evoral::Event<framepos_t> ev (*i);
if (ev.is_channel_event()) {
const uint8_t* b = ev.buffer();
DEBUG_TRACE (DEBUG::AudioUnits, string_compose ("%1: MIDI event %2\n", name(), ev));
}
if (outCurrentTempo) {
- *outCurrentTempo = tmap.tempo_at_frame (transport_frame + input_offset).beats_per_minute();
+ *outCurrentTempo = tmap.tempo_at_frame (transport_frame + input_offset).quarter_notes_per_minute();
}
return noErr;
bbt.beats = 1;
bbt.ticks = 0;
- *outCurrentMeasureDownBeat = tmap.pulse_at_bbt (bbt) * 4.0;
+ *outCurrentMeasureDownBeat = tmap.quarter_note_at_bbt (bbt);
}
return noErr;
break;
}
+ std::string busname;
+
if (dt == DataType::AUDIO) {
if (input) {
uint32_t pid = id;
id = pid;
ss << _bus_name_in[bus];
ss << " / Bus " << (1 + bus);
+ busname = _bus_name_in[bus];
break;
}
pid -= bus_inputs[bus];
id = pid;
ss << _bus_name_out[bus];
ss << " / Bus " << (1 + bus);
+ busname = _bus_name_out[bus];
break;
}
pid -= bus_outputs[bus];
ss << (id + 1);
Plugin::IOPortDescription iod (ss.str());
+ if (!busname.empty()) {
+ iod.group_name = busname;
+ iod.group_channel = id;
+ }
return iod;
}
}
void
-AUPlugin::print_parameter (uint32_t /*param*/, char* /*buf*/, uint32_t /*len*/) const
+AUPlugin::print_parameter (uint32_t param, char* buf, uint32_t len) const
{
// NameValue stuff here
+ if (buf && len) {
+ if (param < parameter_count()) {
+ snprintf (buf, len, "%.3f", get_parameter (param));
+ } else {
+ strcat (buf, "0");
+ }
+ }
}
bool
/* add factory presets */
for (FactoryPresetMap::iterator i = factory_preset_map.begin(); i != factory_preset_map.end(); ++i) {
- /* XXX: dubious */
- string const uri = string_compose ("%1", _presets.size ());
+ /* XXX: dubious -- deleting & re-adding a preset -> same URI
+ * good that we don't support deleting AU presets :)
+ */
+ string const uri = PBD::to_string<uint32_t> (_presets.size ());
_presets.insert (make_pair (uri, Plugin::PresetRecord (uri, i->first, false)));
DEBUG_TRACE (DEBUG::AudioUnits, string_compose("AU Adding Factory Preset: %1 > %2\n", i->first, i->second));
}
continue;
case kAudioUnitType_Output:
- info->category = _("AudioUnit Outputs");
+ info->category = _("AudioUnit Output");
break;
case kAudioUnitType_MusicDevice:
- info->category = _("AudioUnit Instruments");
+ info->category = _("Instrument");
has_midi_in = true;
break;
case kAudioUnitType_MusicEffect:
- info->category = _("AudioUnit MusicEffects");
+ info->category = _("Music Effect");
has_midi_in = true;
break;
case kAudioUnitType_Effect:
- info->category = _("AudioUnit Effects");
+ info->category = _("Effect");
break;
case kAudioUnitType_Mixer:
- info->category = _("AudioUnit Mixers");
+ info->category = _("Mixer");
break;
case kAudioUnitType_Generator:
- info->category = _("AudioUnit Generators");
+ info->category = _("Generator");
break;
default:
info->category = _("AudioUnit (Unknown)");
XMLNode* node;
node = new XMLNode (X_("AudioUnitPluginCache"));
- node->add_property( "version", AU_CACHE_VERSION );
+ node->set_property( "version", AU_CACHE_VERSION );
for (map<string,AUPluginCachedInfo>::iterator i = cached_info.begin(); i != cached_info.end(); ++i) {
XMLNode* parent = new XMLNode (X_("plugin"));
- parent->add_property ("id", i->first);
+ parent->set_property ("id", i->first);
node->add_child_nocopy (*parent);
for (vector<pair<int, int> >::iterator j = i->second.io_configs.begin(); j != i->second.io_configs.end(); ++j) {
XMLNode* child = new XMLNode (X_("io"));
- char buf[32];
- snprintf (buf, sizeof (buf), "%d", j->first);
- child->add_property (X_("in"), buf);
- snprintf (buf, sizeof (buf), "%d", j->second);
- child->add_property (X_("out"), buf);
+ child->set_property (X_("in"), j->first);
+ child->set_property (X_("out"), j->second);
parent->add_child_nocopy (*child);
}
const XMLNode* gchild;
const XMLNodeList gchildren = child->children();
- XMLProperty const * prop = child->property (X_("id"));
- if (!prop) {
+ string id;
+ if (!child->get_property (X_("id"), id)) {
continue;
}
- string id = prop->value();
string fixed;
string version;
if (gchild->name() == X_("io")) {
- int in;
- int out;
- XMLProperty const * iprop;
- XMLProperty const * oprop;
-
- if (((iprop = gchild->property (X_("in"))) != 0) &&
- ((oprop = gchild->property (X_("out"))) != 0)) {
- in = atoi (iprop->value());
- out = atoi (oprop->value());
+ int32_t in;
+ int32_t out;
+ if (gchild->get_property (X_("in"), in) && gchild->get_property (X_("out"), out)) {
cinfo.io_configs.push_back (pair<int,int> (in, out));
}
}