Захват и визуализация звука со входа микрофона - PROCESSING
- Войдите на сайт для отправки комментариев
Пт, 03/12/2021 - 18:03
Помогайте развивать ! Предлагайте свои идеи !
код программы
import processing.sound.*; // Это библиотеа проигрыватель звуковых файлов AudioIn input; //вкл аудивход Amplitude loudness; //Амплитуда громкости //----------------------------------------------------------------------------------- int val; // Данные int[] values; // хроним значение float zoom; // зум //НАСТРОЙКА ЦЕНТРАЛЬНОЙ ЛИНИИ-------------------------------------------------------- int centrLine =2; //смещение центра по вертикали //НАСТРОЙКА КРИВОЙ ЛИНИИ------------------------------------------------------------- int curveLine =-1667; //ВЫВЕСТИ КРИВУЮ В ЦЕНТР float curveSqueeze =6.0; //сжать-растянуть график кривой //----------------------------------------------------------------------------------- void setup() { size(1280, 480); // размер основного окна background(255); // Создайте аудиовход и возьмите 1-й канал input = new AudioIn(this, 0); // Начните захват аудиовхода input.start(); // старт (аудио) loudness = new Amplitude(this); // Подключите вход к анализатору объема loudness.input(input); // аудиовход values = new int[width]; // zoom = curveSqueeze; //скорость графика(сжать-растянуть) smooth(); } int getY(int val) { return (int)(height - val / 1023.0f * (height - curveLine));//ВЫВЕСТИ КРИВУЮ В ЦЕНТР } //МИКРОФОН-------------------------------------------------------------------------- void pushValue(int value) { for (int i=0; i<width-1; i++) values[i] = values[i+1]; values[width-1] = value; } //РИСОВАТЬ КРИВУЮ ЛИНИЮ---------------------------------------------------------------- void drawLines() { stroke(255); int displayWidth = (int) (width / zoom); int k = values.length - displayWidth; int x0 = 0; int y0 = getY(values[k]); for (int i=1; i<displayWidth; i++) { k++; int x1 = (int) (i * (width-1) / (displayWidth-1)); int y1 = getY(values[k]); line(x0, y0, x1, y1); x0 = x1; y0 = y1; } } //ЛИНИЯ ПО ЦЕНТРУ-------------------------------------------------------------------- void drawGrid() { stroke(155, 200, 0); //цвет строки линия по центру line(0, height/centrLine, width, height/centrLine); //смещение линии } //ОСНОВНОЙ КОД----------------------------------------------------------------------- void draw() { float inputLevel = map(mouseY, 0, height, 0.0, 0.0); input.amp(inputLevel);// Отрегулируйте громкость аудиовхода в зависимости от положения мыши float volume = loudness.analyze();//volume.analyze () возвращает значение от 0 до 1. Для настройки(сигнал со входа микрофона) int size = int(map(volume, 0, 0.4, volume, 350)); //масштабирование и отображение эллипса мы масштабируем от 0 до 0,5 background(0); // цвет фона drawGrid(); val = size; //значение графика(size-вход с микрофона) if (val != -5) { pushValue(val); } drawLines(); }
Предлагаю сделать нормально, потому что картинка даже близко не напоминает звук.
Предлагаю сделать нормально, потому что картинка даже близко не напоминает звук.
я правильно понимаю Вы имеете ввиду Спектроанализатор или? поясните
Нет, не имею. Имею в виду простую визуализацию звука. На картинке у тебя фарш, а не звук.
добавил регулировку по осям ,и центральной линии в планах добавить яркость центральной линии режим пульс. луча и самое муторное сетку с цифрами если получиться конечно
Добавил регулировку и уровень яркости центральной линии "0"
добавил режим DarkSide
+Неплохая библиотека работы со звуком minim попробую что то сделать на основе
http://code.compartmental.net/minim/