BFont font; gSampleGroup mainBeat,sliceBeat,scratch; /////////////////////////////////////////// /////////////////////////////////////////// //--( SetUp )-- /////////////////////////////////////////// void setup(){ size(250,250); Sonia.start(this); font = loadFont("Supertext10.vlw.gz"); textFont(font); textSpace(SCREEN_SPACE); //--( mainBeat )-- mainBeat = new gSampleGroup(); mainBeat.add("DRUM.wav",16); mainBeat.smp[0].son.setRate(22050); mainBeat.smp[0].yPos=height-20; //--( sliceBeat )-- sliceBeat = new gSampleGroup(); for(int i=0;i<12;i++) sliceBeat.add("Olta"+i+".wav",1); sliceBeat.setRate(44050); sliceBeat.setVolume(0.8f); //--( scratch )-- scratch = new gSampleGroup(); for(int i=1;i<4;i++) scratch.add("RunDMC"+i+".wav",12); scratch.setRate(10050); //Z.setVolume(0.75); } /////////////////////////////////////////// /////////////////////////////////////////// //--( Loop )-- /////////////////////////////////////////// void loop() { background(255,0,0); strokeWeight(1); if (mainBeat.smp[0].isPlaying()) { background(255); } else { background(255,155,0); mainBeat.smp[0].playNext(); if (mainBeat.smp[0].actualCue%8==4) { event1(1); } else if (mainBeat.smp[0].actualCue%4==0) { if (random(4)>1) { event1(0.7f); } event2(); } else if (mainBeat.smp[0].actualCue%2==0) { if (random(2)>1) { event1(0.5f); if (random(2)>1) event2(); } } else if (random(9)>8) { event1(0.3f); } if (random(100)>90) mainBeat.smp[0].son.setVolume(0.1f); else mainBeat.smp[0].son.setVolume(1); } mainBeat.draw(); sliceBeat.draw(); scratch.draw(); } /////////////////////////////////////////// /////////////////////////////////////////// //--( Events )-- /////////////////////////////////////////// void event1(float v){ int n = (int)(random(sliceBeat.gSampleNum)); sliceBeat.smp[n].randomCue(); sliceBeat.smp[n].son.setRate(random(70000)); sliceBeat.smp[n].son.setPan(random(2)-1); sliceBeat.smp[n].son.setVolume(v); sliceBeat.smp[n].playCue(); int m = (int)(random(scratch.gSampleNum)); scratch.smp[m].randomCue(); scratch.smp[m].son.setRate(random(10000000)); scratch.smp[m].son.setPan(random(2)-1); scratch.smp[m].son.setVolume(0.1f); scratch.smp[m].playCue(); } void event2(){ int m = (int)(random(scratch.gSampleNum)); scratch.smp[m].randomCue(); scratch.smp[m].son.setRate(10000); scratch.smp[m].son.setPan(random(1)-0.5f); scratch.smp[m].son.setVolume(0.5f+random(1)/4); scratch.smp[m].playCue(); } /////////////////////////////////////////// /////////////////////////////////////////// //--( GroupOfSamples )-- /////////////////////////////////////////// class gSampleGroup{ int gSampleNum=0; gSample[] smp; gSampleGroup(){} void add(String sonName, int cueNum){ gSample newSample = new gSample(sonName,cueNum,gSampleNum); gSample[] Temp=new gSample[1]; if(gSampleNum!=0) { Temp= new gSample[gSampleNum]; for(int i=0;icue.length-1) actualCue=0; playCue(); } void drawScroller(){ strokeWeight(1); stroke(155,80,0); percent = son.getCurrentFrame() *100f / son.getNumFrames(); float marker = percent*width/100f; // draw... noStroke(); fill(255,225,175); rect(marker,yPos,marker,15); printSample(); } } /////////////////////////////////////////// /////////////////////////////////////////// public void stop(){ Sonia.stop(); super.stop(); }