156 lines · 2.9 KB · Text
RawDownload
// um, by philipd// (what is it?) // base Player classclass Player{     UGen @ base;    fun void connect( UGen target )    {        base => target;    }     fun void noteOn ( float note, float vel ) {}    fun void noteOff ( float vel ) {}} class Note{     float note;    float vel;    dur length;     fun void set ( float nt, float vl, dur ln )    {         nt => note;        vl => vel;        ln => length;    }     fun void playOn ( Player p)    {         if ( note > 0 )        {             p.noteOn( note , vel );        }    }     fun void playOnAlt( Player p, float noff, float vmul )    {        p.noteOn( note+noff, vel*vmul );    }}  class MandPlayer extends Player{    Mandolin m @=> base;     fun void noteOn ( float note, float vel )    {         Std.mtof ( note ) => m.freq;        vel => m.pluck;    }} class FlutePlayer extends Player{     PercFlut f @=> base;     fun void noteOn ( float note, float vel )    {         Std.mtof ( note ) => f.freq;        vel => f.noteOn;    }} class ClarPlayer extends Player{    Clarinet c @=> base;    fun void noteOn ( float note, float vel )    {         Std.mtof ( note ) => c.freq;        vel => c.startBlowing;    }    fun void noteOff ( float vel )    {         vel => c.stopBlowing;    }} // length of sequence12 => int seqn;// a sequenceNote sequence[seqn];// orderint order[seqn];// scale[0, 2, 4, 7, 9, 12, 14, 16, 19, 21] @=> int scale[];// durations[0.25::second, 0.125::second, 0.125::second,  0.375::second] @=> dur times[]; // new sequencefun void newsequence(){     for( 0 => int i; i < seqn; i++ )    {        i => order[i];		        55 + scale[Math.random2(0, scale.size() - 1)] => int note;        times[Math.random2(0, times.size() - 1)] => dur mydur;        Math.random2f( 0.75, 0.9 ) => float vel;         sequence[i].set( note, vel, mydur );    }} fun void swap( ){     Math.random2(0,seqn-1) => int a;    ( a + Math.random2(1,seqn-1) ) % seqn => int b;    order[a] => int tmp;    order[b] => order[a];    tmp => order[a];} // instantiate a mandolin playerMandPlayer mand;// instantiate a clarinet playerClarPlayer clar; // effectsGain g => JCRev j => Echo e => dac;0.95 => j.gain;0.1 => j.mix;// set echo amount1.15::second => e.max;1.0::second => e.delay;0.3 => e.mix; // connect to effectsmand.connect(g);// connect to effectsclar.connect(g); // set gain0.6 => g.gain; // new sequence!newsequence(); // infinite time-loopwhile( true ){    for( 0 => int j; j < seqn; j++ )    {         sequence[order[j]] @=> Note cur;        cur.playOn ( mand );        cur.playOnAlt ( clar, 12 , 0.7 );        2.0 * cur.length => now;        cur.playOnAlt( mand, 7, 0.33);        cur.length => now;    }     for ( Math.random2(0,2) => int j ; j > 0 ; j-- )        swap();     if ( Math.random2(0, 10) > 8 )        newsequence();}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t