#python #audio #vector #display #oscilloscope
#python #Аудио #вектор #дисплей #осциллограф
Вопрос:
Недавно я начал работать с python для университета, и я хотел бы иметь возможность отображать графики из python на моем осциллографе. Ранее я использовал чужой код для использования моей области в качестве векторного отображения:
https://www.youtube.com/watch?v=oXR4yCge4AU
В режиме «X Y» осциллограф использует переменные напряжения в качестве координат x и y, как видно на видео, и это часто делается со звуком из левого и правого аудиоканалов компьютера.
Итак, я подумал, что если бы я мог использовать значения в массиве для управления волной каждого аудиоканала, должна быть возможность отображать график на осциллографе. Я нашел несколько примеров для запуска звука или синтеза обычной формы сигнала, но мне было интересно, есть ли способ управлять аудиовыходом с большим контролем?
— редактировать —
Я нашел пример кода, который генерирует синус из функции:
import struct
import numpy as np
samplingRate = 44100
freq = 440
samples = 44100
x = np.arange(samples*100)
y = 100*np.sin(2* np.pi * freq * x / samplingRate)
f = open('test.wav', 'wb')
for i in y:
print(i)
f.write(struct.pack('b',int(i)))
f.close()
Однако, если я попытаюсь использовать более сложную функцию:
x = np.arange(samples*100)
#y = 100*np.sin(2* np.pi * freq * x / samplingRate)
y = 100*(x^4 7*x^3 8*x^2 x) * freq / samplingRate
Я получаю следующую ошибку:
10.276643990929704
10.166893424036282
10.136961451247165
153.3015873015873
Traceback (most recent call last):
File "audio_test.py", line 28, in <module>
f.write(struct.pack('b',int(i)))
struct.error: byte format requires -128 <= number <= 127
Комментарии:
1.
i was wondering if there was a way to control the audio output with more control ?
можете ли вы пояснить, что вы имеете в виду? Если вы можете синтезировать любую произвольную форму стереосигнала, у вас уже есть полный контроль, не так ли?2. я не могу найти код с большим контролем, чем просто частота. допустим, я хотел построить график x ^ 4 3 ^ x ^ 3… и т.д., Одна из волн должна выглядеть как эта функция