Документация Engee

Инструменты для работы с нотами

На этой странице описываются функции, которые позволяют очень удобно работать с объектами Note, Notes и т. п. Например, вы можете легко выполнять преобразование (translate) по времени или транспонирование (transpose) по высоте тона.

Функции velocities, positions, pitches, durations возвращают соответствующее свойство для данного объекта Notes.

Другие доступные функции:

metric_time(midi::MIDIFile,note::AbstractNote)::Float64

Возвращает количество миллисекунд, прошедших в позиции note. Для вычисления матричного времени необходимо поле tpq из MIDIFile. По-видимому, это имеет смысл только в том случае, если note берется из MIDIFile, иначе вы не сможете получить правильный результат.

duration_metric_time(midi::MIDIFile,note::AbstractNote)::Float64

Возвращает время длительности ноты note в миллисекундах. Для вычисления матричного времени необходимо поле tpq из MIDIFile. По-видимому, это имеет смысл только в том случае, если note берется из MIDIFile, иначе вы не сможете получить правильный результат.

translate(notes, ticks)

Переводит ноты notes за заданное количество тактов. Также работает для одной ноты.

transpose(notes, semitones)

Транспонирует ноты notes на заданное количество полутонов semitones. Также работает для одной ноты.

louden(notes, v::Int)

Изменяет скорость нот на v (которая может быть и отрицательной). Также работает для одной ноты.

repeat(notes, i = 1)

Повторяет notes i раз, последовательно добавляя дубликаты notes, сдвинутые на общую продолжительность notes. Для удобства возвращает один контейнер Notes.

Функция предполагает, что к нотам применяется timesort.

timesort!(notes::Notes)

Сортирует ноты на месте по их временной позиции. Используйте timesort для не мутирующей версии.


Функции для получения нот по умолчанию:

testmidi()

Возвращает путь к тестовому MIDI-файлу.

testnotes()

Возвращает тестовый набор MIDI-нот, сыгранных человеком на фортепиано.

randomnotes(n::Int, tpq = 960)

Генерирует несколько случайных нот, которые начинаются последовательно.