void pouu(track_t *t, int pos, int length, int freq, float vol){ track_t *n = trackNew(110 + 2*length); float hi_vol = 0.125 *vol; float med_vol = 0.25 *vol; float low_vol = 0.5 *vol; int hi_sust = 0.25 *length; int med_sust = 0.5 *length; int low_sust = 1.0 *length; fun_t *nte; fun_t *hi_note = note(0,10,100,hi_sust,med_sust,med_vol,hi_vol); fun_t *med_note = note(0,10,100,med_sust,low_sust,low_vol,med_vol); fun_t *low_note = note(0,10,100,low_sust,low_sust,low_vol,low_vol); fun_t *vhi_note = note(0,10,100,hi_sust,hi_sust,med_vol/2,hi_vol/2); freq/=2; nte = add( mult(low_note, sine(trapeze(0,low_sust*2,freq,freq),0,1.0)), add( mult(med_note, sine(trapeze(0,low_sust*2,freq*2,freq*2),0,1.0)), add( mult(hi_note, sine(trapeze(0,low_sust*2,freq*4,freq*4),0,0.3)), mult(vhi_note,sine(c(freq*8),0,0.05)) ))); nte = mult(nte,add(c(0.9),sine(c(5),100,0.1))); nte = mult(unit(0,0.0,1.0),mult(unit(low_sust*2,1.0,0.0),nte)); trackAdd(n,nte,nte); trackMix(t,n,pos,1.0); }
void beatloop_self_mix(beatloop_t *bl, float bpm){ int i; track_t *tmp ; tmp = trackNew(beat_to_msec(bpm,bl->beatCount)); bl->bpm = bpm; /* removing cache data */ i = bl->subtrackCount; while(i--){ if(bl->subtrack[i] != NULL){ trackZero(bl->subtrack[i]); }else{ bl->subtrack[i] = trackNew(2*beat_to_msec(bpm,bl->beatCount)); } } if(bl->track){ trackZero(bl->track); }else{ bl->track = trackNew(2*beat_to_msec(bpm,bl->beatCount)); } /* mixing drums on subtracks */ i = bl->drumCount; while(i--){ trackZero(tmp); bl->drums[i](tmp,bl->drumVol[i]); if(bl->mixmode[bl->drumSubtrack[i]] == MIXMODE_MIX){ trackMix( bl->subtrack[bl->drumSubtrack[i]], tmp, beat_to_msec(bpm,bl->drumTime[i]), 1.0); }else{ trackPaste(bl->subtrack[bl->drumSubtrack[i]], tmp, beat_to_msec(bpm,bl->drumTime[i]), 1.0); } } /* mixing subtracks together on track */ i = bl->subtrackCount; while(i--){ trackMix(bl->track, bl->subtrack[i], 0, bl->subtrackVol[i] ); } }
void song(track_t*t){ track_t *s = trackNew(8000); track_t *b = trackNew(8000); fun_t *f; fun_t *f2; bassloop(t,0,200); bassloop(t,8*200,200); bassloop(t,16*200,200); bassloop(t,24*200,200); bassloop(t,32*200,200); bassloop(t,46*200,200); bassloop(t,54*200,200); bassloop(t,62*200,200); f = min(c(1.0),max(ramp(4000,8400,0,1),sine(ramp(2000,8400,5,8),0,10))); f2 =max(unit(2400,0.2,0),unit(2400,0,1.0)); trackMult(t,f,f); f = max(unit(5000,1,0),max(unit(8500,0,1), min(c(1.0),max(ramp(5000,8500,1,0),sine(ramp(5000,8000,20,200),0,10))) )); trackMult(t,f,f); //trackMult(t,f2,f2); //fx_reverb(t); fx_disto(t,WAVE_BOTH); tshhloop(s,0*200,200); tshhloop(s,8*200,200); tshhloop(s,16*200,200); tshhloop(s,24*200,200); tshhloop(s,32*200,200); tshhloop(s,40*200,200); tshhloop(s,46*200,200); tshhloop(s,54*200,200); tshhloop(s,56*200,200); tshhloop(s,62*200,200); f = ramp(0,8000,0.2,0.7); trackMult(s,f,f); trackMix(t,s,0,1); //fx_reverb(b); //fx_disto(b); //trackMix(t,b,0,0.5); }
void tshh(track_t *t, int pos, int length,int echo, float vol){ track_t *n = trackNew(20+20+length+echo+60); fun_t * f = noise(note(0,1,20,20,length,vol,vol/2)); f = add( f, add( delay(echo,mult(c(0.2),f)), add( delay(echo + 10,mult(c(0.2),f)), add( delay(echo + 20,mult(c(0.2),f)), add( delay(echo + 30,mult(c(0.1),f)), add( delay(echo + 40,mult(c(0.1),f)), add( delay(echo + 50,mult(c(0.05),f)), delay(echo + 60,mult(c(0.05),f)) ))))))); trackAdd(n,f,f); trackMix(t,n,pos,1.0); }
void addWikiTrack(struct track **pGroupList) /* Add wiki track and append to group list. */ { if (wikiTrackEnabled(database, NULL)) { struct track *tg = trackNew(); static char longLabel[80]; struct trackDb *tdb; struct sqlConnection *wikiConn = wikiConnect(); if (! sqlTableExists(wikiConn,WIKI_TRACK_TABLE)) errAbort("loadWikiTrack configuration error, set wikiTrack.URL in hg.conf"); linkedFeaturesMethods(tg); AllocVar(tdb); tg->track = WIKI_TRACK_TABLE; tg->table = WIKI_TRACK_TABLE; tg->canPack = TRUE; tg->visibility = tvHide; tg->hasUi = TRUE; tg->shortLabel = cloneString(WIKI_TRACK_LABEL); safef(longLabel, sizeof(longLabel), WIKI_TRACK_LONGLABEL); tg->longLabel = longLabel; tg->loadItems = wikiTrackLoadItems; tg->itemName = linkedFeaturesName; tg->mapItemName = wikiTrackMapItemName; tg->mapItem = wikiTrackMapItem; tg->priority = WIKI_TRACK_PRIORITY; tg->defaultPriority = WIKI_TRACK_PRIORITY; tg->groupName = cloneString("map"); tg->defaultGroupName = cloneString("map"); tg->exonArrows = TRUE; tg->nextItemButtonable = TRUE; tdb->track = cloneString(tg->track); tdb->canPack = tg->canPack; tdb->table = cloneString(tg->table); tdb->shortLabel = cloneString(tg->shortLabel); tdb->longLabel = cloneString(tg->longLabel); tdb->useScore = 1; tdb->grp = cloneString(tg->groupName); tdb->priority = tg->priority; trackDbPolish(tdb); tg->tdb = tdb; slAddHead(pGroupList, tg); wikiDisconnect(&wikiConn); } }