44class Instrument :
public Output {
46 Instrument(OutputType newType) : Output(newType) {}
52 bool editedByUser =
false;
53 bool existsOnCard =
false;
54 bool shouldHibernate{
true};
55 bool matchesPreset(OutputType otherType, int32_t channel, int32_t channelSuffix,
char const* otherName,
56 char const* otherPath)
override {
58 if (type == otherType) {
60 if (otherType == OutputType::SYNTH || otherType == OutputType::KIT) {
61 match = !strcasecmp(otherName, name.get()) && !strcasecmp(otherPath, dirPath.get());
66 virtual bool doAnySoundsUseCC(uint8_t channel, uint8_t ccNumber, uint8_t value) {
return false; }
67 virtual void beenEdited(
bool shouldMoveToEmptySlot =
true);
75 bool writeDataToFile(
Serializer& writer,
Clip* clipForSavingOutputOnly,
Song* song)
override;
76 bool readTagFromFile(
Deserializer& reader,
char const* tagName)
override;
79 virtual bool isNoteRowStillAuditioningAsLinearRecordingEnded(
NoteRow* noteRow) = 0;
80 virtual void processParamFromInputMIDIChannel(int32_t cc, int32_t newValue,
83 char const* getNameXMLTag()
override {
return "presetName"; }
84 virtual char const* getSlotXMLTag() {
return "presetSlot"; }
85 virtual char const* getSubSlotXMLTag() {
return "presetSubSlot"; }
87 virtual bool isAnyAuditioningHappening() = 0;
89 uint8_t defaultVelocity = FlashStorage::defaultVelocity;
93 Clip* createNewClipForArrangementRecording(
ModelStack* modelStack)
final;
94 Error setupDefaultAudioFileDir();
Definition model_stack.h:231