Програвання аудіофайлів в Processing

Почнемо з найпростішого, що можна робити з Minim, а саме – c програвання аудіайлов Але так як це було б занадто просто, ми додамо простий інтерфейс для управління звуком з клавіатури або миші

Приступимо

Створіть новий скетч і збережіть його по імям playing_audio_filespde Імпоіруйте в скетч бібліотеку minim, так, як ми робили це в першому прикладі цієї глави Ще потрібно додати до скетчу MP3 файл Знайдіть на вашому жорсткому диску найкращу пісню і перетягніть її в текстовий редактор Processing так вона додасться в папку data

Як це робиться

Перше, що ми зробимо – перед функцією setup () оголосимо обєкт Minim і обєкт

AudioPlayer

Minim minim AudioPlayer player

У функції setup () ми инициализируем обєкт minim, завантажимо MP3 файл з папки data

і запустимо його на програвання

void setup()

{

size( 640, 480 )

minim = new Minim( this )

player = minimloadFile(&quotsongmp3&quot) playerplay()

}

У функції draw () ми виведемо основну інформацію про пісню У вікні буде вказівник, який показує поточний час і текст з інформацією про пісню

void draw()

{

background( 255 )

float x = map(playerposition(), 0, playerlength(), 0, width) stroke( 0 )

line( x, 0, x, height )

int totalSeconds = (int)(playerlength()/1000) % 60

int totalMinutes = (int)(playerlength()/(1000*60)) % 60 int playheadSeconds = (int)(playerposition()/1000) % 60

int playheadMinutes = (int)(playerposition()/(1000*60)) % 60

String info = &quotPosition: &quot + playheadMinutes + &quot:&quot + nf( playheadSeconds, 2 ) + &quot/&quot + totalMinutes + &quot:&quot + nf( totalSeconds, 2 )

fill( 0 ) noStroke()

text( info, 10, 20 )

}

А тепер ми додамо нашу скетчу інтерактивності Код нескладний і ви розберетеся в ньому самі

void mousePressed()

{

int pos = floor( map( mouseX, 0, width, 0, playerlength() ) ) playerplay( pos )

}

void keyPressed()

{

if ( key == ) {

if ( playerisPlaying() ) { playerpause()

} else { playerplay()

}

}

if ( key == CODED ) {

if ( keyCode == LEFT ) { playerrewind()

}

}

}

Також потрібно додати до скетчу функцію stop (), щоб при виході з скетчу закрити обєкт AudioPlayer і зупинити обєкт Minim Не забудьте про це

void stop()

{

playerclose() minimstop()

superstop()

}

Коли ви запустите скетч, ви побачите таку картинку Натисніть на ліву клавішу-стрілку для перемотування пісні і клацніть по вікну скетчу для переміщення покажчика Для зупинки / запуску пісні натисніть на клавішу-пробіл

Як це працює

Якщо ви хочете використовувати бібліотеку minim, вам завжди буде потрібен обєкт Minim з посиланням на головне клас PApplet Програвання ауліофайла виконується за допомогою класу AudioPlayer Потрібно завантажити аудіофайл в обєкт AudioPlayer за допомогою наступного коду:

player = minimloadFile(&quotsongmp3&quot)

Програвання аудіофайлу виконується за допомогою методу playerplay (), який програє аудіофайл один раз Якщо ви хочете програвати пісню знову і знову, використовуйте метод playerloop ()

Також ми додали нескладний клавіатурний інтерфейс для управління перемоткою аудіофайлу Якщо ви натиснете клавішу-пробіл, аудіофайл поставити на паузу або відновить програвання Я застосував метод player isPlaying () для перевірки, пргривается чи в даний момент аудіофайл Цей метод повертає логічну величину Він поверне істину (true), якщо пісня включена на паузу методом playerpause () і брехня (false), якщо пісня початку програватися з місця зупинки Якщо ви натиснете на клавішу ще раз, пісня почне програватися з початку Це робиться за допомогою методу playerrewind ()

У функції draw () я використовував два методи для створення покажчика Метод player length () повертає ціле число, що є довжиною аудіофайлу в мілісекундах Метод playerposition () повертає поточну позицію покажчика в пісні Для прбразованія поточної позиції покажчика у відповідну величину в діапзоне від 0 до ширини екрану я використав функцію map () Мілісекунди можуть бути незручні для використання як елемента інтерфейсу, так як ми не використовуємо їх у повсякденному житті для відліку часу, тому можна перетворити їх в хвилини і секунди Це робиться за допомогою наступного коду:

int seconds = (int)(milliseconds/1000) % 60

int minutes = (int)(milliseconds/(1000*60)) % 60

У функції mousePressed () я використовував ті ж методи length () і position () для взаємодії з мишею Для програвання пісні з певного моменту ви можете використовувати метод play () і ціле число для вказівки часу

Функція stop () використовується для закриття обєкта AudioPlayer і зупинки Minim Не забудьте додавати її до кожного скетчу, в якому використовується бібілотека Minim

Джерело: Ян Вантомм, Processing 2: креативне програмування, переклад з англійської Олександри Мішутіної, Published by Packt Publishing Ltd, 2012, BIRMINGHAM – MUMBAI

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*