2#include <Patternist/PatternModel.hpp>
4#include <score_plugin_midi_export.h>
17SCORE_PLUGIN_MIDI_EXPORT Note toggledNote(Note current)
noexcept;
19SCORE_PLUGIN_MIDI_EXPORT
bool setStep(Pattern& p,
int lane,
int step, Note n)
noexcept;
21SCORE_PLUGIN_MIDI_EXPORT
void clear(Pattern& p)
noexcept;
25SCORE_PLUGIN_MIDI_EXPORT
void rotate(Pattern& p,
int steps)
noexcept;
29SCORE_PLUGIN_MIDI_EXPORT
void
30randomize(Pattern& p, std::mt19937& rng,
int lane = -1) noexcept;
33enum class Combine : uint8_t
44SCORE_PLUGIN_MIDI_EXPORT
void euclidean(
45 const Pattern& p, Lane& l,
int hits,
int rotation, Combine c = Combine::Replace)
noexcept;
49SCORE_PLUGIN_MIDI_EXPORT
bool transpose(Pattern& p,
int semitones)
noexcept;
52SCORE_PLUGIN_MIDI_EXPORT
void addLane(Pattern& p);
54SCORE_PLUGIN_MIDI_EXPORT
bool addControlLane(Pattern& p, uint8_t note)
noexcept;
55SCORE_PLUGIN_MIDI_EXPORT
bool hasLane(
const Pattern& p, uint8_t note)
noexcept;
56SCORE_PLUGIN_MIDI_EXPORT
void removeLane(Pattern& p,
int lane);
57SCORE_PLUGIN_MIDI_EXPORT
void setLength(Pattern& p,
int length);
59SCORE_PLUGIN_MIDI_EXPORT
60QMimeData* patternToMime(
const Pattern& p);
61SCORE_PLUGIN_MIDI_EXPORT
62std::optional<Pattern> patternFromMime(
const QMimeData& mime);
69 std::vector<std::vector<int>> steps;
71 bool valid()
const noexcept {
return lane0 >= 0 && !steps.empty(); }
72 bool contains(
int lane,
int step)
const noexcept
74 if(lane < lane0 || lane >= lane0 +
int(steps.size()))
76 const auto& s = steps[lane - lane0];
77 return std::find(s.begin(), s.end(), step) != s.end();
79 bool operator==(
const StepSelection&)
const noexcept =
default;
88SCORE_PLUGIN_MIDI_EXPORT
void
89pasteSteps(
Pattern& p,
const Pattern& steps,
int lane,
const std::vector<int>& starts);
91SCORE_PLUGIN_MIDI_EXPORT QMimeData* stepsToMime(
const Pattern& steps);
92SCORE_PLUGIN_MIDI_EXPORT std::optional<Pattern> stepsFromMime(
const QMimeData& mime);
95SCORE_PLUGIN_MIDI_EXPORT
Pattern copyLanes(
const Pattern& p,
const std::vector<int>& lanes);
98SCORE_PLUGIN_MIDI_EXPORT
bool
99pasteLanes(
Pattern& p,
const Pattern& lanes,
const std::vector<int>& targets);
101SCORE_PLUGIN_MIDI_EXPORT
void clearLanes(
Pattern& p,
const std::vector<int>& lanes);
102SCORE_PLUGIN_MIDI_EXPORT QMimeData* lanesToMime(
const Pattern& lanes);
103SCORE_PLUGIN_MIDI_EXPORT std::optional<Pattern> lanesFromMime(
const QMimeData& mime);
106enum class StepField : uint8_t
127SCORE_PLUGIN_MIDI_EXPORT
FieldRange fieldRange(StepField f)
noexcept;
128SCORE_PLUGIN_MIDI_EXPORT QString fieldName(StepField f);
129SCORE_PLUGIN_MIDI_EXPORT
float stepField(
const StepParams& p, StepField f)
noexcept;
130SCORE_PLUGIN_MIDI_EXPORT
void setStepField(
StepParams& p, StepField f,
float v)
noexcept;
132SCORE_PLUGIN_MIDI_EXPORT QString fieldText(StepField f,
float v);
137SCORE_PLUGIN_MIDI_EXPORT
void
138randomizeField(
Pattern& p, std::mt19937& rng, StepField f,
int lane = -1) noexcept;
140SCORE_PLUGIN_MIDI_EXPORT
float randomFieldValue(StepField f,
std::mt19937& rng) noexcept;
143SCORE_PLUGIN_MIDI_EXPORT
float anyFieldValue(StepField f,
std::mt19937& rng) noexcept;
145SCORE_PLUGIN_MIDI_EXPORT
void resetField(
Pattern& p, StepField f,
int lane = -1) noexcept;
148SCORE_PLUGIN_MIDI_EXPORT QString laneLabel(
int note, LaneLabels mode);
Definition PatternEdit.hpp:122
float origin
Bars start from this value: 0 for most, the middle for offsets and pitch.
Definition PatternEdit.hpp:125
Definition PatternModel.hpp:139
Definition PatternModel.hpp:49
Definition PatternEdit.hpp:67