Указание длительности ноты с помощью pyfluidsynth (без использования time.sleep)

Я использую pyfluidsynth для создания звуковых событий (используя звуковые шрифты) из Python. Есть ли способ создания событий noteon без использования time.sleep? Например, указав продолжительность заметки как часть события заметки? Я не могу найти какие-либо способы играть ноты без использования time.sleep в настоящее время.

Например, если я использую следующий код:

fs.noteon (1, 60, 127) time.sleep (1)

тогда я играю ноту. Но если бы я убрал time.sleep, то не получил бы звука.

Проблема, с которой я столкнулся при использовании time.sleep, состоит в том, что я пишу программу, которая воспроизводит несколько событий заметок при каждом выполнении условия. Я хочу, чтобы функция воспроизведения нот повторялась без ограничения по времени, но в настоящее время из-за time.sleep вся программа задерживается всякий раз, когда воспроизводится нота, поэтому быстрые последовательности нот невозможны.

Я попытался использовать многопоточность, чтобы создать новый поток для запуска каждой заметки и времени. Но проблема здесь заключается в том, что в условиях, когда мне нужно сыграть много нот, несколько потоков используют слишком много ЦП для эффективной работы кода.

Я думаю, что идеальным решением было бы указать "продолжительность заметки" как часть события noteon, так что time.sleep не требуется. Но я не могу найти способ сделать это.

Кто-нибудь знает как это сделать? Любая помощь приветствуется.

Спасибо,

Луиза

0 ответов

Другие вопросы по тегам