*/
class LIBARDOUR_API Transform : public MidiOperator {
public:
- typedef Evoral::Sequence<Evoral::MusicalTime>::NotePtr NotePtr;
- typedef Evoral::Sequence<Evoral::MusicalTime>::Notes Notes;
- typedef ARDOUR::MidiModel::NoteDiffCommand::Property Property;
+ typedef Evoral::Sequence<Evoral::Beats>::NotePtr NotePtr;
+ typedef Evoral::Sequence<Evoral::Beats>::Notes Notes;
+ typedef ARDOUR::MidiModel::NoteDiffCommand::Property Property;
/** Context while iterating over notes during transformation. */
struct Context {
ADD, ///< Add top two values
SUB, ///< Subtract top from second-top
MULT, ///< Multiply top two values
- DIV ///< Divide second-top by top
+ DIV, ///< Divide second-top by top
+ MOD ///< Modulus (division remainder)
};
Operation(Operator o, const Value& a=Value()) : op(o), arg(a) {}
Transform(const Program& prog);
Command* operator()(boost::shared_ptr<ARDOUR::MidiModel> model,
- Evoral::MusicalTime position,
+ Evoral::Beats position,
std::vector<Notes>& seqs);
std::string name() const { return std::string ("transform"); }