Базовое программирование звука на Python

#python #audio

#python #Аудио

Вопрос:

Как я могу создать программу, которая воспроизводит звук, который я определяю, удерживая нажатой клавишу? Я могу воспроизводить разные ноты с помощью winsound.Звуковой сигнал (), но я не думаю, что это действительно помогает.

Комментарии:

1. «Я не думаю, что это действительно помогает» мало что дает с точки зрения ваших критериев.

2. Я просто хочу сказать, что я пытался использовать библиотеку winsound для этого, но безрезультатно.

Ответ №1:

Если вы просто хотите использовать стандартную библиотеку и используете, вы можете использовать msvcrt, чтобы получить текущее нажатие клавиши и сопоставить его с частотой.

 import msvcrt
import time
import winsound

notes = {'a': 440, 's': 935, 'd': 1039}

while True:
    key = msvcrt.getch()
    try:
        note = notes[key]
    except KeyError:
        note = 0

    winsound.Beep(note, 10)
    time.sleep(0.01)
  

Комментарии:

1. Это просто повторяет звуковой сигнал (или, как он воспроизводится на моем компьютере, скорее щелчок) быстро, когда кнопка удерживается нажатой. Я имею в виду плавный тон, пока нота удерживается нажатой. Возможно ли это с помощью winsound или мне понадобится другая библиотека?

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

3. @Paul Вторым аргументом winsound.Beep() является длительность звукового сигнала в миллисекундах. Вы могли бы включить это число, чтобы получить более длинную ноту, но если вы используете getch() для ввода, программа не сможет узнать, как долго вы удерживаете нажатой клавишу.

4. В таком случае, есть ли что-то еще, кроме winsound. Звуковой сигнал (), который можно использовать для воспроизведения звука во время чего-либо, например, нажатия клавиши?

5. Может быть, pygame? или просто предварительно создайте аудио.

Ответ №2:

Модуль winsound позволяет воспроизводить не только звуковые сигналы, взгляните на winsound.PlaySound :

 winsound.PlaySound('mySound.wav', winsound.SND_FILENAME)
  

Когда пользователь удерживает нажатой клавишу, вы обычно получаете несколько нажатий клавиш за короткое время.

Комментарии:

1. Я изучал PlaySound, но мне просто интересно получить плавный тон на частоте, описываемой программой.