///------------------------------------------------------------------------------ // //------------------------------------------------------------------------------ /** * Oisoft www Drumbox * * @author Oisoft Rekords * @version 1.1 * @since 1998 ----------------------------------------------------------------------------- Copyright (C) 1999 Oisoft rekords ------------------------------------------------------------------------------ Ce programme est une boite à rythmes virtuelle Il vous permet de composer des séquences rythmiques sur votre micro-ordinateur ------------------------------------------------------------------------------ Ce programme est un logiciel libre. Vous pouvez le redistribuer et/ou le modifier conformément aux dispositions de la Licence Publique Générale GNU, telle que publiée par la Free Software Foundation version 2 de la licence. Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER. Pour plus de détail, voir la Licence Publique Générale GNU . Vous pouvez reçevoir un exemplaire de la Licence Publique Générale GNU en écrivant à la Free Software Foundation Inc., 675 Mass Ave, Cambridge, MA 02139, Etats-Unis. Vous pouvez consulter la version française de la license sur http://www.april.org ------------------------------------------------------------------------------ Vous pouvez joindre les auteurs de ce programme en écrivant par mail à oisoftrekords@altern.org et optenir des mise à jour sur http://altern.org/oisoftrekords ------------------------------------------------------------------------------ */ //------------------------------------------------------------------------------ import java.awt.*; import java.util.Random; //------------------------------------------------------------------------------ public class Gnr { private loPattern pat=null; private String Name; private int ctr = 0 ; private int ctrDblFreq = 0 ; private int instrDblFreq ; private int SongState; private loBar bar; private Random rnd; public boolean trace = false; //----------------------------------------------------------------------------- public Gnr (String Name) { this.Name = Name; rnd = new Random(1234); pat = new loPattern(16,"toto"); bar = new loBar(0); } //----------------------------------------------------------------------------- public void anotherPattern () { ctr++; bar.setAddress(ctr); pat.Clear(); // pat.setTitle(bar.toString()); SongState = bar.getSongState(); if ( SongState== loBar.COUPLET ) { fillDiscoHH(); } else { fillLightHH(); } if ( bar.isLastOf4() ) { fillBasicBoomDbl(); } else { fillBasicBoom(); } if (SongState!= loBar.INTRO && SongState!= loBar.REFRAIN) { fillDiscoSnare(); } if ( bar.isLastOf8() ) { fillAddSnareRoll2(); } if ( bar.isLastOf4() ) { fillAddSnareRoll(); } if (bar.isFirstOf8() ) { fillAddEchoHit(getRandomInstr()); } if (bar.isFirstOf4() && (SongState==loBar.COUPLET)) { fillAddEchoHit2(loPattern.BOING); } if (bar.isLastOf8()) { // startDblFreq(loPattern.BOING); startDblFreq(getRandomInstr()); } if (ctrDblFreq==1) { fillDblFreq1(instrDblFreq); } else if (ctrDblFreq==2) { fillDblFreq2(instrDblFreq); } else if (ctrDblFreq==3) { fillDblFreq3(instrDblFreq); } } //----------------------------------------------------------------------------- public void afficheTrace(String msg) { pat.setTitle(bar.toString() +"--"+msg); if (trace==true) { System.out.println(bar.toString() +" -- " + msg); } } //----------------------------------------------------------------------------- public loPattern getPattern() { return pat; } //----------------------------------------------------------------------------- private int getRandomInstr() { return (rnd.nextInt()%pat.getnbInstruments()); } //----------------------------------------------------------------------------- private void startDblFreq(int Instrument) { ctrDblFreq=1; instrDblFreq = Instrument ; } //----------------------------------------------------------------------------- private void fillDiscoSnare () { int i; afficheTrace("fillDiscoSnare"); for (i=4;i< pat.getNbSteps() ;i+=8) { pat.setPoint(i,loPattern.SNARE,loPattern.VELOMAX); } } //----------------------------------------------------------------------------- private void fillDiscoHH () { int i; afficheTrace("fillDiscoHH"); for (i=0;i< pat.getNbSteps() ;i+=4) { pat.setPoint(i ,loPattern.CHH,loPattern.VELOMAX); pat.setPoint(i+1,loPattern.CHH,loPattern.VELOMOY); pat.setPoint(i+2,loPattern.CHH,loPattern.VELOMIN); pat.setPoint(i+3,loPattern.CHH,loPattern.VELOMOY); } } //----------------------------------------------------------------------------- private void fillLightHH () { int i; afficheTrace("fillLightHH"); for (i=2;i< pat.getNbSteps() ;i+=4) { pat.setPoint(i ,loPattern.CHH,loPattern.VELOMIN); } } //----------------------------------------------------------------------------- private void fillBasicBoomDbl () { afficheTrace("fillBasicBoomDbl"); fillBasicBoom (); pat.setPoint(pat.getNbSteps()-2,loPattern.BASSDRUM,loPattern.VELOMOY); } //----------------------------------------------------------------------------- private void fillBasicBoom () { int i; afficheTrace("fillBasicBoom"); for (i=0;i< pat.getNbSteps() ;i+=4) { pat.setPoint(i,loPattern.BASSDRUM,loPattern.VELOMOY); } } //----------------------------------------------------------------------------- private void fillAddSnareRoll() { int i,start; start = 2* pat.getNbSteps()/4 ; afficheTrace("fillAddSnareRoll"); for (i=start;i< pat.getNbSteps() ;i++) { pat.setPoint(i+1,loPattern.SNARE,loPattern.VELOMIN ); pat.setPoint(i+2,loPattern.SNARE,loPattern.VELOMOY); pat.setPoint(i+3,loPattern.SNARE,loPattern.VELOMAX); i+=3; } } //----------------------------------------------------------------------------- private void fillAddSnareRoll2() { int i,start; start = 2* pat.getNbSteps()/4 ; afficheTrace("fillAddSnareRoll2"); i=start+1; { pat.setPoint(i ,loPattern.SNARE,loPattern.VELOMOY); pat.setPoint(i+1,loPattern.SNARE,loPattern.VELOMAX); pat.setPoint(i+2,loPattern.SNARE,loPattern.VELOMOY); pat.setPoint(i+3,loPattern.SNARE,loPattern.VELOMIN); pat.setPoint(i+4,loPattern.SNARE,loPattern.VELOMAX); pat.setPoint(i+5,loPattern.SNARE,loPattern.VELOMAX); pat.setPoint(i+6,loPattern.SNARE,0); pat.setPoint(i+5,loPattern.SNARE,loPattern.VELOMAX); } } //----------------------------------------------------------------------------- private void fillAddEchoHit(int instr) { int i=0; afficheTrace("fillAddEchoHit"); pat.setPoint(i ,instr,loPattern.VELOMIN ); pat.setPoint(i+1,instr,loPattern.VELOMOY ); pat.setPoint(i+2,instr,loPattern.VELOMAX ); pat.setPoint(i+3,instr, 0); } //----------------------------------------------------------------------------- private void fillAddEchoHit2(int instr) { int i=0; afficheTrace("fillAddEchoHit"); // int start = 1* pat.getNbSteps()/4 ; pat.setPoint(i+2,instr,loPattern.VELOMAX ); pat.setPoint(i+3,instr,loPattern.VELOMOY ); pat.setPoint(i+4,instr,loPattern.VELOMIN ); } //----------------------------------------------------------------------------- private void fillDblFreq1(int instr) { int i,step; afficheTrace("fillDblFreq1"); step = pat.getNbSteps()/2; for (i=0;i< pat.getNbSteps() ;i+=step) { pat.setPoint(i,instr,loPattern.VELOMOY); } ctrDblFreq =2; } //----------------------------------------------------------------------------- public void fillDblFreq2(int instr) { int i,step; afficheTrace("fillDblFreq2"); step = pat.getNbSteps()/4; for (i=0;i< pat.getNbSteps() ;i+=step) { pat.setPoint(i,instr,loPattern.VELOMOY); } ctrDblFreq =3; } //----------------------------------------------------------------------------- private void fillDblFreq3(int instr) { int i,step; afficheTrace("fillDblFreq3"); step = pat.getNbSteps()/8; for (i=0;i< pat.getNbSteps() ;i+=step) { pat.setPoint(i,instr,loPattern.VELOMOY); } for (i=pat.getNbSteps()/2 ; i< pat.getNbSteps() ;i+=1) { pat.setPoint(i,instr,loPattern.VELOMOY); } ctrDblFreq =0; } }