Инструменты для работы с нотами
На этой странице описываются функции, которые позволяют очень удобно работать с объектами 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)
Генерирует несколько случайных нот, которые начинаются последовательно.