/** * Arduino Sounds * * Играйте WAV- или MP3-файлы, когда пьезоэлемент регистрирует удар через Arduino с запущенным * скетчем "PiezoKnock" или когда нажата клавиша на клавиатуре. * * Взято из скетча "trigger" библиотеки Minim: * * В этом скетче показано, как использовать метод trigger объекта AudioSample. * Объекты AudioSample могут быть только проиграны, not cue'd and looped * или что-либо другое, что Вы можете сделать с объектом класса Playable. Преимуществом является то, что * AudioSample может быть проигран в момент исполнения, что вызовет запуск трека поверх себя */ import ddf.minim.*; import processing.serial.*; String portname = "/dev/tty.usbserial-A4001qa8"; // или "COM8" Serial port; // Создать объект класса Serial AudioSample sounds[]; String sound_names[] = { "cat.wav", "fx.mp3", "electric_wrench.wav", "wehoa.mp3", "oriental_gong_2.wav", "yipee.wav", "car_brake.wav" // найдите больше wav- или mp3-файлов и положите их в папку "data" }; void setup() { size(400, 400); background(0); stroke(255); // всегда запускайте Minim, прежде чем делать с ней что-либо Minim.start(this); Minim.debugOn(); sounds = new AudioSample[sound_names.length]; for( int i=0; i< sound_names.length; i++ ) { sounds[i] = Minim.loadSample(sound_names[i], 512); } // Открыть порт, к которому подключена плата, и использовать ту же самую скорость (19200 бод) port = new Serial(this, portname, 19200); } void draw() { // рисование осуществляется в обработчиках событий } void soundball() { int r = int(random(sounds.length)); println("picked sound #"+r); sounds[r].trigger(); // проиграть случайный звук int x = int(random(0,300)); int y = int(random(0,300)); fill(240,0,0); ellipse(x,y, 40,40); fill(30,0,0); ellipse(x,y, 8,8); } void serialEvent(Serial p) { char inByte = port.readChar(); println("received char: "+ inByte); if( inByte == '!' ) { // '!' конец "бац!" soundball(); } } void keyPressed() { if(key == ' ') { background(40,40,40); // очистить экран } soundball(); } void stop() { // всегда закрывайте объекты класса Minim, когда Вы закончили с ними работу for( int i=0; i