Использование вспомогательного порта с помощью python

#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… и т.д., Одна из волн должна выглядеть как эта функция