Skip to content

Commit

Permalink
break up lead update so lead data is only fetched once
Browse files Browse the repository at this point in the history
  • Loading branch information
dojoe committed Aug 11, 2012
1 parent fab67dc commit 3504f5d
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions win/main.cpp
Expand Up @@ -102,15 +102,19 @@ static unsigned char voice_lead(unsigned long i, int voice_nr)
boosts &= ~(1 << voice_nr);
if (0 == (i & 0x1FF))
leadtimer--;

if (0 == leadtimer)
{
leadptr++;
leadtimer = leadtimes[leaddata[(leadseq[leadptr >> 4] << 4) | (leadptr & 0xF)] >> 5];

uint8_t data = leaddata[(leadseq[leadptr >> 4] << 4) | (leadptr & 0xF)];

if (0 == leadtimer)
{
leadtimer = leadtimes[data >> 5];
boosts |= 1 << voice_nr;
}


uint8_t melody = leaddata[(leadseq[leadptr >> 4] << 4) | (leadptr & 0xF)] & 0x1F;
uint8_t melody = data & 0x1F;
lead_osc += notes[melody];
uint8_t sample = ((lead_osc >> 6) & 0x7F) + ((lead_osc >> 6) & 0x3F);
return (0 == melody) ? 0 : ((boosts & (1 << voice_nr)) ? sample : THREEQUARTERS(sample));
Expand Down

0 comments on commit 3504f5d

Please sign in to comment.