Главная » Processing » Получение временной диаграммы в Processing

0

Если вы когда-нибудь использовали редактор аудио, вы знаете, что звук.ю как правило, представляется временной диаграммой. В этом примере мы сделаем визуализацию песни в виде временной диаграммы.

Как это делается

Первая часть этого скетча вам уже знакома. Это просто тот же код, что и в скетче для примера Проигрывание аудиофайлов.

import ddf.minim.*;

import ddf.minim.signals.*; import ddf.minim.analysis.*; import ddf.minim.effects.*;

Minim minim; AudioPlayer player;

void setup()

{

size( 1024, 480 );

smooth();

minim = new Minim( this );

player = minim.loadFile("song.mp3", 1024); player.play();

strokeWeight( 2 );

Код, выполняющий анализ аудио и составляющий диаграмму находится в функции draw(). Так как наша песня является стерео аудиофайлом, мы обозначим левый и прый канал на экране разными цветами. Не забудьте добавить в конце функцию stop().

void draw()

{

background( 255 ); translate( 0, height/2 );

// right channel stroke( 255, 0, 0 );

for ( int i = 0; i < player.right.size(); i++ ) { float y = player.right.get( i ) * 220;

point( i, y );

}

// left channel stroke( 0 );

for ( int i = 0; i < player.left.size(); i++ ) { float y = player.left.get( i ) * 220;

point( i, y );

}

}

void stop()

{

player.close(); minim.stop();

super.stop();

}

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

Объект AudioPlayer возвращает три вида диаграмм: для левого канала, для правого канала и комбинацию обоих. Получить доступ к ним можно методами player.left, player.right и player.mix. Используя метод size() для этих объектов, вы можете менять длину буфера. Это удобно, если вы будете работать с буфером. С помощью метода get() вы можете получить доступ к отдельной величине в буфере. Эти величины находятся в диапазоне от -1 до 1, и вы можете умножить их на большее число для отображения на экране.

Источник: Ян Вантомм, Processing 2: креативное программирование, перевод с английского Александры Мишутиной, Published by Packt Publishing Ltd., 2012, BIRMINGHAM – MUMBAI.

По теме:

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