Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* DUY Code: ARP Arpeggio example */
- /*
- * Example script of RK002 arpeggiator.
- *
- * PARAMETERS (accessible via DUY Portal or SysEx without compiling)
- * MIDICHN : working input MIDI channel (1..16)
- * MODE : 0=off, 1=UP, 2=DOWN, 3=ALTERNATE, 4=RANDOM, 5=AS_PLAYED
- * OCTAVE_MIN : range min 0-4
- * OCTAVE_MAX : range max 0-4
- * CLOCKLENGTH: ARP clock length 1-48
- * GATE : gate length: 1=1/4, 2=2/4, 3=3/4, 4=1, 5=5/4 etc.
- * TRANSPOSE : ARP transpose 0-36
- */
- RK002_DECLARE_PARAM(MIDICHN,1,1,16,1);
- // MODE: 0=off, 1=UP, 2=DOWN, 3=ALTERNATE, 4=RANDOM, 5=AS_PLAYED
- RK002_DECLARE_PARAM(MODE,0,0,5,1);
- RK002_DECLARE_PARAM(OCTAVE_MIN,0,-4,0,0);
- RK002_DECLARE_PARAM(OCTAVE_MAX,0,0,4,0);
- RK002_DECLARE_PARAM(CLOCKLENGTH,0,1,48,2);
- // GATE: 1=1/4, 2=2/4, 3=3/4, 4=1, 5=5/4 etc.
- RK002_DECLARE_PARAM(GATE,0,1,16,2);
- RK002_DECLARE_PARAM(TRANSPOSE,0,0,36,0);
- RKArp arp;
- byte midichn = 0;
- void updateParams()
- {
- midichn = RK002_paramGet(MIDICHN) - 1;
- arp.setMode(RK002_paramGet(MODE));
- /*
- ARPMODE_OFF,
- ARPMODE_UP,
- ARPMODE_DOWN,
- ARPMODE_ALTERNATE,
- ARPMODE_RANDOM,
- ARPMODE_AS_PLAYED,
- */
- arp.setOctaveMin(RK002_paramGet(OCTAVE_MIN));
- arp.setOctaveMax(RK002_paramGet(OCTAVE_MAX));
- arp.setClockLength(RK002_paramGet(CLOCKLENGTH));
- arp.setTranspose(RK002_paramGet(TRANSPOSE));
- }
- void RK002_onParamChange(unsigned param_nr, int param_val)
- {
- updateParams();
- }
- bool RK002_onNoteOff(byte chn, byte note, byte velocity)
- {
- bool thru = true;
- if (chn == midichn)
- {
- arp.inputNote(note,0); // velo 0 = note off
- thru=false;
- }
- return thru;
- }
- bool RK002_onNoteOn(byte chn, byte note, byte velocity)
- {
- bool thru = true;
- if (chn == midichn)
- {
- arp.inputNote(note,velocity);
- thru=false;
- }
- return thru;
- }
- bool RK002_onClock()
- {
- arp.inputClock();
- return true;
- }
- void onArpOutput(void *userarg, byte key, byte vel)
- {
- if(!vel){
- RK002_sendNoteOff(midichn,key,100);
- }else{
- RK002_sendNoteOn(midichn,key,vel);
- }
- }
- bool RK002_onControlChange(byte chn,byte number,byte value){
- bool retval=true;
- if(chn==midichn){
- if(number== 70){
- arp.setMode(value/25); // // MODE: 0=off, 1=UP, 2=DOWN, 3=ALTERNATE, 4=RANDOM, 5=AS_PLAYED
- }
- if(number== 71){
- arp.setGateCode((value/8)+1);
- }
- if(number== 72){
- arp.setClockLength((value/3)+1);
- }
- if(number== 73){
- arp.setTranspose(((value-64)/16));
- }
- if(number== 74){
- arp.setOctaveMin(value/32);
- }
- if(number== 75){
- arp.setOctaveMax(value/32);
- }
- if(number== 76){
- arp.setHold(value/127);
- }
- //retval= false; //mute original cc?
- }
- if(number==123) return false; // mute always.
- return retval;
- }
- void setup()
- {
- RK002_clockSetMode(0);// 0=auto clock, 1=only internal, 2=only external
- updateParams();
- arp.setOutputHandler(onArpOutput,0);
- }
- void loop()
- {
- }
Add Comment
Please, Sign In to add comment