Инструменты для работы с нотами
На этой странице описываются функции, которые позволяют очень удобно работать с объектами Note, Notes и т. п. Например, вы можете легко выполнять преобразование (translate) по времени или транспонирование (transpose) по высоте тона.
Функции velocities, positions, pitches, durations возвращают соответствующее свойство для данного объекта Notes.
Другие доступные функции:
#
MIDI.metric_time — Function
metric_time(midi::MIDIFile,note::AbstractNote)::Float64
Возвращает количество миллисекунд, прошедших в позиции note. Для вычисления матричного времени необходимо поле tpq из MIDIFile. По-видимому, это имеет смысл только в том случае, если note берется из MIDIFile, иначе вы не сможете получить правильный результат.
#
MIDI.duration_metric_time — Function
duration_metric_time(midi::MIDIFile,note::AbstractNote)::Float64
Возвращает время длительности ноты note в миллисекундах. Для вычисления матричного времени необходимо поле tpq из MIDIFile. По-видимому, это имеет смысл только в том случае, если note берется из MIDIFile, иначе вы не сможете получить правильный результат.
#
MusicManipulations.translate — Function
translate(notes, ticks)
Переводит ноты notes за заданное количество тактов. Также работает для одной ноты.
#
Base.transpose — Function
transpose(notes, semitones)
Транспонирует ноты notes на заданное количество полутонов semitones. Также работает для одной ноты.
#
MusicManipulations.louden — Function
louden(notes, v::Int)
Изменяет скорость нот на v (которая может быть и отрицательной). Также работает для одной ноты.
#
Base.repeat — Function
repeat(notes, i = 1)
Повторяет notes i раз, последовательно добавляя дубликаты notes, сдвинутые на общую продолжительность notes. Для удобства возвращает один контейнер Notes.
Функция предполагает, что к нотам применяется timesort.
#
MusicManipulations.timesort! — Function
timesort!(notes::Notes)
Сортирует ноты на месте по их временной позиции. Используйте timesort для не мутирующей версии.
Функции для получения нот по умолчанию:
#
MIDI.testnotes — Function
testnotes()
Возвращает тестовый набор MIDI-нот, сыгранных человеком на фортепиано.
#
MusicManipulations.randomnotes — Function
randomnotes(n::Int, tpq = 960)
Генерирует несколько случайных нот, которые начинаются последовательно.