11namespace tracktion {
inline namespace engine
17 auto* um = &clip.edit.getUndoManager();
19 channel.referTo (state, IDs::channel, um, MidiChannel (defaultMidiChannel));
20 noteNumber.referTo (state, IDs::note, um, defaultNoteNumber);
21 noteValue.referTo (state, IDs::velocity, um, defaultNoteValue);
22 grooveTemplate.referTo (state, IDs::groove, um);
23 grooveStrength.referTo (state, IDs::grooveStrength, um, 0.1f);
24 name.referTo (state, IDs::name, um);
27StepClip::Channel::~Channel() noexcept
29 notifyListenersOfDeletion();
32bool StepClip::Channel::operator== (
const Channel& other)
const noexcept
34 return channel == other.channel
35 && noteNumber == other.noteNumber
36 && noteValue == other.noteValue
37 && grooveTemplate == other.grooveTemplate
39 && grooveStrength == other.grooveStrength;
42bool StepClip::Channel::usesGrooveStrength()
const
44 auto gt = clip.edit.engine.getGrooveTemplateManager().getTemplateByName (grooveTemplate.get());
46 if (gt !=
nullptr && gt->isEmpty())
50 return gt->isParameterized();
55int StepClip::Channel::getIndex()
const
57 return state.getParent().indexOf (state);
62 return name.get().isEmpty() ?
juce::String (getIndex() + 1) : name;