diff options
| author | Rémi Verschelde | 2017-03-19 00:36:26 +0100 |
|---|---|---|
| committer | Rémi Verschelde | 2017-03-19 00:36:26 +0100 |
| commit | f8db8a3faa30b71dca33ced38be16d3f93f43e8a (patch) | |
| tree | 3b798318132cca7eccfbca5818ab55656a2896d7 /modules/chibi/cp_player_data_events.cpp | |
| parent | 1d418afe863c9e553b69174ce63aef203c46d2f0 (diff) | |
| download | godot-f8db8a3faa30b71dca33ced38be16d3f93f43e8a.tar.gz godot-f8db8a3faa30b71dca33ced38be16d3f93f43e8a.tar.zst godot-f8db8a3faa30b71dca33ced38be16d3f93f43e8a.zip | |
Bring that Whole New World to the Old Continent too
Applies the clang-format style to the 2.1 branch as done for master in
5dbf1809c6e3e905b94b8764e99491e608122261.
Diffstat (limited to 'modules/chibi/cp_player_data_events.cpp')
| -rw-r--r-- | modules/chibi/cp_player_data_events.cpp | 636 |
1 files changed, 286 insertions, 350 deletions
diff --git a/modules/chibi/cp_player_data_events.cpp b/modules/chibi/cp_player_data_events.cpp index 7ec3f1931..a0b355d9a 100644 --- a/modules/chibi/cp_player_data_events.cpp +++ b/modules/chibi/cp_player_data_events.cpp @@ -39,283 +39,254 @@ will just find one and do it. */ - #define C5FREQ 261.6255653006 -static const int32_t C5FREQ_MIXER = ((int32_t)(C5FREQ*(float)(1<<CPMixer::FREQUENCY_BITS))); - +static const int32_t C5FREQ_MIXER = ((int32_t)(C5FREQ * (float)(1 << CPMixer::FREQUENCY_BITS))); void CPPlayer::setup_voices() { - int i,voice_index; + int i, voice_index; - - + for (i = 0; i < CPPattern::WIDTH; i++) { - for (i=0;i<CPPattern::WIDTH;i++) { - - voice_index=-1; + voice_index = -1; if (control.channel[i].note_delay) continue; - // check if we need a new empty voice - if (control.channel[i].kick==KICK_NOTE) { + if (control.channel[i].kick == KICK_NOTE) { /* if no channel was cut above, find an empty or quiet channel here */ - if ( song->has_instruments() && !control.force_no_nna) { + if (song->has_instruments() && !control.force_no_nna) { - if (control.channel[i].slave_voice==NULL) { // no slave?? + if (control.channel[i].slave_voice == NULL) { // no slave?? int newchn; - if ((newchn=find_empty_voice())!=-1) { + if ((newchn = find_empty_voice()) != -1) { - control.channel[i].slave_voice_index=newchn; - control.channel[i].slave_voice=&voice[newchn]; + control.channel[i].slave_voice_index = newchn; + control.channel[i].slave_voice = &voice[newchn]; } } - } else { - if (i<control.max_voices) { + } else { + if (i < control.max_voices) { - control.channel[i].slave_voice_index=i; - control.channel[i].slave_voice=&voice[i]; - } else { + control.channel[i].slave_voice_index = i; + control.channel[i].slave_voice = &voice[i]; + } else { //This is a _DIRTY_ hack, but i cant think a better way. - control.channel[i].slave_voice_index=control.max_voices-1; - control.channel[i].slave_voice=&voice[control.max_voices-1]; + control.channel[i].slave_voice_index = control.max_voices - 1; + control.channel[i].slave_voice = &voice[control.max_voices - 1]; } - } - /* assign parts of MP_VOICE only done for a KICK_NOTE */ - if ( ( control.channel[i].slave_voice!=NULL ) ) { + if ((control.channel[i].slave_voice != NULL)) { - voice_index=control.channel[i].slave_voice_index; - Voice_Control &v=voice[voice_index]; - - if (v.has_master_channel && (v.master_channel!=NULL) ) { - // If this voice already has a master channel, make sure to remove the reference to it. - v.master_channel->slave_voice=NULL; + voice_index = control.channel[i].slave_voice_index; + Voice_Control &v = voice[voice_index]; + if (v.has_master_channel && (v.master_channel != NULL)) { + // If this voice already has a master channel, make sure to remove the reference to it. + v.master_channel->slave_voice = NULL; } //notify the voice that the current channel is the master - v.master_channel=&control.channel[i]; + v.master_channel = &control.channel[i]; //set the voice as slave of the current channel - control.channel[i].slave_voice=&v; + control.channel[i].slave_voice = &v; //master channel index of the voice - v.master_channel_index=i; - v.has_master_channel=true; + v.master_channel_index = i; + v.has_master_channel = true; } } else { - // nope.. - // so if we DO have a slave voice then use it. - if ( control.channel[i].slave_voice!=NULL ) { - - voice_index=control.channel[i].slave_voice_index; + // nope.. + // so if we DO have a slave voice then use it. + if (control.channel[i].slave_voice != NULL) { + + voice_index = control.channel[i].slave_voice_index; } } - //assuming this channel has a slave voice.. - if (voice_index>=0) { + //assuming this channel has a slave voice.. + if (voice_index >= 0) { // IMPROVE: Code a method for this: voice[voice_index].update_info_from_master_channel(); } - control.channel[i].kick=KICK_NOTHING; + control.channel[i].kick = KICK_NOTHING; } } void CPPlayer::Voice_Control::reset() { - cp_memzero(this,sizeof(*this)); - - instrument_ptr=NULL; - sample_ptr=NULL; - has_master_channel=false; - instrument_index=-1; - reverb_send=0; - chorus_send=0; - filter.it_cutoff=255; - filter.it_reso=0; - display_volume=0; + cp_memzero(this, sizeof(*this)); - + instrument_ptr = NULL; + sample_ptr = NULL; + has_master_channel = false; + instrument_index = -1; + reverb_send = 0; + chorus_send = 0; + filter.it_cutoff = 255; + filter.it_reso = 0; + display_volume = 0; } void CPPlayer::Channel_Control::reset() { - int prev_gv =channel_global_volume; - cp_memzero(this,sizeof(*this)); + int prev_gv = channel_global_volume; + cp_memzero(this, sizeof(*this)); - slave_voice=NULL; - slave_voice_index=255; + slave_voice = NULL; + slave_voice_index = 255; - mute=false; - old_note=255; - real_note=255; - instrument_index=255; - filter.it_cutoff=255; - filter.it_reso=0; - reverb_send=0; - chorus_send=0; - reserved=false; - carry.maybe=false; - last_event_usecs=-1; - channel_global_volume=prev_gv; + mute = false; + old_note = 255; + real_note = 255; + instrument_index = 255; + filter.it_cutoff = 255; + filter.it_reso = 0; + reverb_send = 0; + chorus_send = 0; + reserved = false; + carry.maybe = false; + last_event_usecs = -1; + channel_global_volume = prev_gv; } void CPPlayer::Voice_Control::update_info_from_master_channel() { - instrument_ptr=master_channel->instrument_ptr; - sample_ptr=master_channel->sample_ptr; + instrument_ptr = master_channel->instrument_ptr; + sample_ptr = master_channel->sample_ptr; - instrument_index=master_channel->instrument_index; - sample_index=master_channel->sample_index; + instrument_index = master_channel->instrument_index; + sample_index = master_channel->sample_index; - note=master_channel->note; - output_volume=master_channel->output_volume; + note = master_channel->note; + output_volume = master_channel->output_volume; - channel_volume=master_channel->channel_volume; + channel_volume = master_channel->channel_volume; - panning=master_channel->panning; + panning = master_channel->panning; - kick=master_channel->kick; - note_end_flags=master_channel->note_end_flags; - period=master_channel->period; + kick = master_channel->kick; + note_end_flags = master_channel->note_end_flags; + period = master_channel->period; - volume_envelope_ctrl.active=master_channel->volume_envelope_on; - panning_envelope_ctrl.active=master_channel->panning_envelope_on; - pitch_envelope_ctrl.active=master_channel->pitch_envelope_on; + volume_envelope_ctrl.active = master_channel->volume_envelope_on; + panning_envelope_ctrl.active = master_channel->panning_envelope_on; + pitch_envelope_ctrl.active = master_channel->pitch_envelope_on; + NNA_type = master_channel->NNA_type; + reverb_send = master_channel->reverb_send; + chorus_send = master_channel->chorus_send; - NNA_type=master_channel->NNA_type; - reverb_send=master_channel->reverb_send; - chorus_send=master_channel->chorus_send; - -// last_note_type=master_channel->last_note_type; - - sample_start_index=master_channel->sample_start_index; - filter=master_channel->filter; + // last_note_type=master_channel->last_note_type; + sample_start_index = master_channel->sample_start_index; + filter = master_channel->filter; } - void CPPlayer::update_mixer() { int tmp_mixer_period; - int32_t tmp_vibrato_value,tmp_vibrato_depth,tmp_volenv_value; + int32_t tmp_vibrato_value, tmp_vibrato_depth, tmp_volenv_value; uint64_t tmpvol; // 64bits should be the only way to avoid getting notes raped out int i; + control.voices_used = 0; - control.voices_used=0; + for (i = 0; i < control.max_voices; i++) { - for (i=0;i<control.max_voices;i++) { + int filter_env = -1; + Voice_Control &v = voice[i]; + + if (!((v.kick == KICK_NOTE) || (v.kick == KICK_NOTEOFF)) && !is_voice_active(i)) + continue; - - int filter_env=-1; - Voice_Control &v=voice[i]; - - if ( !((v.kick==KICK_NOTE)||(v.kick==KICK_NOTEOFF)) && !is_voice_active(i)) - continue; - //if voice doesnt have a sample set or size is 0.. forget it - if ( v.sample_ptr==NULL) continue; - + if (v.sample_ptr == NULL) continue; //TODO set limits somewhere else - if (v.period<40) { - - v.period=40; + if (v.period < 40) { - } else if (v.period>50000) { + v.period = 40; - v.period=50000; - } + } else if (v.period > 50000) { + v.period = 50000; + } - if ((v.kick==KICK_NOTE)||(v.kick==KICK_NOTEOFF)) { + if ((v.kick == KICK_NOTE) || (v.kick == KICK_NOTEOFF)) { int real_start_index; - if (v.sample_start_index==-1) { + if (v.sample_start_index == -1) { - real_start_index=0; + real_start_index = 0; } else { - real_start_index=v.sample_start_index; + real_start_index = v.sample_start_index; } - mixer->setup_voice(i,v.sample_ptr->get_sample_data(),real_start_index); - v.fadeout_volume=1024; //IT Docs it is 1024 internally - v.auto_vibrato_sweep_pos=0; - - - + mixer->setup_voice(i, v.sample_ptr->get_sample_data(), real_start_index); + v.fadeout_volume = 1024; //IT Docs it is 1024 internally + v.auto_vibrato_sweep_pos = 0; } + /* Start Envelopes */ + if (song->has_instruments() && ((v.kick == KICK_NOTE) || (v.kick == KICK_ENVELOPE))) { + + // Voice_Control *carry=0; - /* Start Envelopes */ - if ( song->has_instruments() && ((v.kick==KICK_NOTE)||(v.kick==KICK_ENVELOPE))) { - -// Voice_Control *carry=0; - - if (v.has_master_channel && v.master_channel->carry.maybe) { - - v.start_envelope(v.instrument_ptr->get_volume_envelope(),&v.volume_envelope_ctrl,&v.master_channel->carry.vol); - v.start_envelope(v.instrument_ptr->get_pan_envelope(),&v.panning_envelope_ctrl,&v.master_channel->carry.pan); - v.start_envelope(v.instrument_ptr->get_pitch_filter_envelope(),&v.pitch_envelope_ctrl,&v.master_channel->carry.pitch); - - } else { - - v.start_envelope(v.instrument_ptr->get_volume_envelope(),&v.volume_envelope_ctrl,NULL); - v.start_envelope(v.instrument_ptr->get_pan_envelope(),&v.panning_envelope_ctrl,NULL); - v.start_envelope(v.instrument_ptr->get_pitch_filter_envelope(),&v.pitch_envelope_ctrl,NULL); - - } + v.start_envelope(v.instrument_ptr->get_volume_envelope(), &v.volume_envelope_ctrl, &v.master_channel->carry.vol); + v.start_envelope(v.instrument_ptr->get_pan_envelope(), &v.panning_envelope_ctrl, &v.master_channel->carry.pan); + v.start_envelope(v.instrument_ptr->get_pitch_filter_envelope(), &v.pitch_envelope_ctrl, &v.master_channel->carry.pitch); + + } else { + v.start_envelope(v.instrument_ptr->get_volume_envelope(), &v.volume_envelope_ctrl, NULL); + v.start_envelope(v.instrument_ptr->get_pan_envelope(), &v.panning_envelope_ctrl, NULL); + v.start_envelope(v.instrument_ptr->get_pitch_filter_envelope(), &v.pitch_envelope_ctrl, NULL); + } } - v.kick=KICK_NOTHING; + v.kick = KICK_NOTHING; - if (song->has_instruments()) { + if (song->has_instruments()) { - if (!v.process_envelope(v.instrument_ptr->get_volume_envelope(),&v.volume_envelope_ctrl)) - v.volume_envelope_ctrl.value=64; + if (!v.process_envelope(v.instrument_ptr->get_volume_envelope(), &v.volume_envelope_ctrl)) + v.volume_envelope_ctrl.value = 64; - if (!v.process_envelope(v.instrument_ptr->get_pan_envelope(),&v.panning_envelope_ctrl)) - v.panning_envelope_ctrl.value=0; - - if (!v.process_envelope(v.instrument_ptr->get_pitch_filter_envelope(),&v.pitch_envelope_ctrl)) - v.pitch_envelope_ctrl.value=0; - + if (!v.process_envelope(v.instrument_ptr->get_pan_envelope(), &v.panning_envelope_ctrl)) + v.panning_envelope_ctrl.value = 0; + + if (!v.process_envelope(v.instrument_ptr->get_pitch_filter_envelope(), &v.pitch_envelope_ctrl)) + v.pitch_envelope_ctrl.value = 0; if (v.volume_envelope_ctrl.terminated) { if (v.volume_envelope_ctrl.kill) { - - v.fadeout_volume=0; + + v.fadeout_volume = 0; } else { - v.note_end_flags|=END_NOTE_FADE; - } + v.note_end_flags |= END_NOTE_FADE; + } } - } if (song->has_instruments()) { - tmp_volenv_value=v.volume_envelope_ctrl.value; + tmp_volenv_value = v.volume_envelope_ctrl.value; } else { - tmp_volenv_value=64; - + tmp_volenv_value = 64; } /*printf("fadeout %i\n",(int)v.fadeout_volume); @@ -325,349 +296,314 @@ void CPPlayer::update_mixer() { printf("cgb %i\n",(int)v.master_channel->channel_global_volume); */ - - tmpvol=(uint64_t)v.fadeout_volume; /* max 1024 - 10 bits */ - tmpvol*=(uint64_t)v.channel_volume; /* * max 64 - 6 bits */ - tmpvol*=(uint64_t)v.output_volume; /* * max 256 - 8 bits */ - tmpvol*=(uint64_t)tmp_volenv_value; /* max 64 - 6 bits*/ - tmpvol*=(uint64_t)v.master_channel->channel_global_volume; - v.display_volume=tmpvol>>22; //volume used for display purposes , 0 -- 256 - - tmpvol*=(uint64_t)song->get_mixing_volume(); /* max 128 - 7 bits */ - tmpvol*=(uint64_t)control.global_volume; /* max 128 - 7 bits*/ - /* total 10+6+8+6+7+7=44 bits */ + tmpvol = (uint64_t)v.fadeout_volume; /* max 1024 - 10 bits */ + tmpvol *= (uint64_t)v.channel_volume; /* * max 64 - 6 bits */ + tmpvol *= (uint64_t)v.output_volume; /* * max 256 - 8 bits */ + tmpvol *= (uint64_t)tmp_volenv_value; /* max 64 - 6 bits*/ + tmpvol *= (uint64_t)v.master_channel->channel_global_volume; + v.display_volume = tmpvol >> 22; //volume used for display purposes , 0 -- 256 + + tmpvol *= (uint64_t)song->get_mixing_volume(); /* max 128 - 7 bits */ + tmpvol *= (uint64_t)control.global_volume; /* max 128 - 7 bits*/ + /* total 10+6+8+6+7+7=44 bits */ + + tmpvol >>= 43; /* Move back to 8 bits range , 44-19+8=43*/ + + if (tmpvol > CP_VOL_MAX) + tmpvol = CP_VOL_MAX; - tmpvol>>=43; /* Move back to 8 bits range , 44-19+8=43*/ - - if (tmpvol>CP_VOL_MAX) - tmpvol=CP_VOL_MAX; - //printf("volume check - fade %i, channel %i, output %i, env %i, mix %i, global %i -- final %i\n",v.fadeout_volume, v.channel_volume,v.output_volume,tmp_volenv_value, song->get_mixing_volume(),control.global_volume,tmpvol); - - v.total_volume=tmpvol; + v.total_volume = tmpvol; - if ((v.master_channel!=NULL) && song->is_channel_mute( v.master_channel_index ) && !v.master_channel->reserved) { + if ((v.master_channel != NULL) && song->is_channel_mute(v.master_channel_index) && !v.master_channel->reserved) { - mixer->set_voice_volume(i,0); + mixer->set_voice_volume(i, 0); } else { - mixer->set_voice_volume(i,tmpvol); - if (v.fadeout_volume>0) control.voices_used++; + mixer->set_voice_volume(i, tmpvol); + if (v.fadeout_volume > 0) control.voices_used++; } - if (!song->is_stereo()) { - mixer->set_voice_panning(i,PAN_CENTER); + mixer->set_voice_panning(i, PAN_CENTER); - } else if (v.panning==PAN_SURROUND) { + } else if (v.panning == PAN_SURROUND) { - mixer->set_voice_panning(i,PAN_SURROUND); + mixer->set_voice_panning(i, PAN_SURROUND); } else if (song->has_instruments()) { - int newpan,real_modifier; + int newpan, real_modifier; - - real_modifier=(v.panning_envelope_ctrl.value*(PAN_CENTER-cp_intabs(v.panning-PAN_CENTER)))/32; + real_modifier = (v.panning_envelope_ctrl.value * (PAN_CENTER - cp_intabs(v.panning - PAN_CENTER))) / 32; - newpan=v.panning+real_modifier; + newpan = v.panning + real_modifier; - newpan=(newpan<PAN_LEFT)?PAN_LEFT:(newpan>PAN_RIGHT)?PAN_RIGHT:newpan; + newpan = (newpan < PAN_LEFT) ? PAN_LEFT : (newpan > PAN_RIGHT) ? PAN_RIGHT : newpan; //printf("panenv val: %i, finalpan val %i\n",v.panning_envelope_ctrl.value,newpan); - - mixer->set_voice_panning(i,newpan); + + mixer->set_voice_panning(i, newpan); } else { - mixer->set_voice_panning(i,v.panning); + mixer->set_voice_panning(i, v.panning); } - - /* VIBRATO */ - if ( (v.period>0) && (v.sample_ptr->get_vibrato_depth()>0) ) { + if ((v.period > 0) && (v.sample_ptr->get_vibrato_depth() > 0)) { switch (v.sample_ptr->get_vibrato_type()) { case CPSample::VIBRATO_SINE: - tmp_vibrato_value=auto_vibrato_table[v.auto_vibrato_pos&127]; - if (v.auto_vibrato_pos & 0x80) tmp_vibrato_value=-tmp_vibrato_value; + tmp_vibrato_value = auto_vibrato_table[v.auto_vibrato_pos & 127]; + if (v.auto_vibrato_pos & 0x80) tmp_vibrato_value = -tmp_vibrato_value; break; case CPSample::VIBRATO_SQUARE: - tmp_vibrato_value=64; - if (v.auto_vibrato_pos & 0x80) tmp_vibrato_value=-tmp_vibrato_value; + tmp_vibrato_value = 64; + if (v.auto_vibrato_pos & 0x80) tmp_vibrato_value = -tmp_vibrato_value; break; case CPSample::VIBRATO_SAW: - tmp_vibrato_value=63-(((v.auto_vibrato_pos+128)&255)>>1); + tmp_vibrato_value = 63 - (((v.auto_vibrato_pos + 128) & 255) >> 1); break; default: - tmp_vibrato_value=(((v.auto_vibrato_pos+128)&255)>>1)-64; + tmp_vibrato_value = (((v.auto_vibrato_pos + 128) & 255) >> 1) - 64; break; } } else { - tmp_vibrato_value=0; + tmp_vibrato_value = 0; } - if ((v.auto_vibrato_sweep_pos>>8)<v.sample_ptr->get_vibrato_depth()) { + if ((v.auto_vibrato_sweep_pos >> 8) < v.sample_ptr->get_vibrato_depth()) { - v.auto_vibrato_sweep_pos+=v.sample_ptr->get_vibrato_speed(); //FIXME - speed? i think so - tmp_vibrato_depth=v.auto_vibrato_sweep_pos; + v.auto_vibrato_sweep_pos += v.sample_ptr->get_vibrato_speed(); //FIXME - speed? i think so + tmp_vibrato_depth = v.auto_vibrato_sweep_pos; } else { - tmp_vibrato_depth=v.sample_ptr->get_vibrato_depth()<<8; + tmp_vibrato_depth = v.sample_ptr->get_vibrato_depth() << 8; } - - tmp_vibrato_value=(tmp_vibrato_value*tmp_vibrato_depth)>>16; - if (song->has_linear_slides()) - tmp_vibrato_value>>=1; - v.period-=tmp_vibrato_value; + tmp_vibrato_value = (tmp_vibrato_value * tmp_vibrato_depth) >> 16; + if (song->has_linear_slides()) + tmp_vibrato_value >>= 1; + v.period -= tmp_vibrato_value; /* update vibrato position */ - v.auto_vibrato_pos=(v.auto_vibrato_pos+v.sample_ptr->get_vibrato_rate())&0xff; - - + v.auto_vibrato_pos = (v.auto_vibrato_pos + v.sample_ptr->get_vibrato_rate()) & 0xff; + /* process pitch envelope */ - tmp_mixer_period=v.period; + tmp_mixer_period = v.period; if (v.pitch_envelope_ctrl.active) { long aux_pitch_diff; - int pe_value=v.pitch_envelope_ctrl.value; - + int pe_value = v.pitch_envelope_ctrl.value; + if (!v.instrument_ptr->is_pitch_use_as_filter()) { - - - if (((uint16_t)v.note<<1)+pe_value<=0) - pe_value=-(v.note<<1); - int smp_c5=CPSampleManager::get_singleton()->get_c5_freq( v.sample_ptr->get_sample_data()); - - int base=get_period(((uint16_t)v.note<<1),smp_c5); - int env=get_period(((uint16_t)v.note<<1)+pe_value,smp_c5); + if (((uint16_t)v.note << 1) + pe_value <= 0) + pe_value = -(v.note << 1); + + int smp_c5 = CPSampleManager::get_singleton()->get_c5_freq(v.sample_ptr->get_sample_data()); + + int base = get_period(((uint16_t)v.note << 1), smp_c5); + int env = get_period(((uint16_t)v.note << 1) + pe_value, smp_c5); /* int env_next=(pe_value<0)?get_period(((uint16_t)(v.note-1)<<1)+pe_value,smp_c5):get_period(((uint16_t)(v.note+1)<<1)+pe_value,smp_c5); env=env+(abs(v.pitch_envelope_ctrl.value)&((1<<CPEnvelope::FX_HEIGHT_BITS)-1))*(env_next-env)/(1<<CPEnvelope::FX_HEIGHT_BITS); printf("env %i\n",env); - */ - aux_pitch_diff=env-base; + */ + aux_pitch_diff = env - base; + if (((int)tmp_mixer_period - aux_pitch_diff) < 0) aux_pitch_diff = 0; - if ( ((int)tmp_mixer_period-aux_pitch_diff)<0 ) aux_pitch_diff=0; - - tmp_mixer_period+=aux_pitch_diff; + tmp_mixer_period += aux_pitch_diff; } else { - filter_env=pe_value+32; //max 64 -// printf("pitch envelope at %i",filter_env); - + filter_env = pe_value + 32; //max 64 + // printf("pitch envelope at %i",filter_env); } } - if (v.fadeout_volume==0 || (v.note_end_flags & END_NOTE_KILL)) { /* check for a dead note (fadevol=0) */ + if (v.fadeout_volume == 0 || (v.note_end_flags & END_NOTE_KILL)) { /* check for a dead note (fadevol=0) */ mixer->stop_voice(i); } else { - - int32_t freq=get_frequency(tmp_mixer_period); - int32_t tracker_c5=get_frequency(get_period(60<<1,CPSampleManager::get_singleton()->get_c5_freq( v.sample_ptr->get_sample_data()))); - - freq=(int32_t)((uint64_t)freq*(uint64_t)C5FREQ_MIXER/(uint64_t)tracker_c5); //numbers may become very high - mixer->set_voice_frequency(i,freq); + int32_t freq = get_frequency(tmp_mixer_period); + int32_t tracker_c5 = get_frequency(get_period(60 << 1, CPSampleManager::get_singleton()->get_c5_freq(v.sample_ptr->get_sample_data()))); + + freq = (int32_t)((uint64_t)freq * (uint64_t)C5FREQ_MIXER / (uint64_t)tracker_c5); //numbers may become very high + mixer->set_voice_frequency(i, freq); /* if keyfade, start substracting fadeoutspeed from fadevol: */ - if ((song->has_instruments())&&(v.note_end_flags & END_NOTE_FADE)) { + if ((song->has_instruments()) && (v.note_end_flags & END_NOTE_FADE)) { - if (v.fadeout_volume>=(v.instrument_ptr->get_volume_fadeout())) { + if (v.fadeout_volume >= (v.instrument_ptr->get_volume_fadeout())) { - v.fadeout_volume-=(v.instrument_ptr->get_volume_fadeout()); + v.fadeout_volume -= (v.instrument_ptr->get_volume_fadeout()); } else { - v.fadeout_volume=0; + v.fadeout_volume = 0; } } - - /*FILTARSSSSSSSS*/ + /*FILTARSSSSSSSS*/ - - v.filter.envelope_cutoff=filter_env; + v.filter.envelope_cutoff = filter_env; v.filter.process(); - - if ((v.filter.final_cutoff<0xFF) && (control.filters)) { - + + if ((v.filter.final_cutoff < 0xFF) && (control.filters)) { + //int final_cutoff; //uint8_t final_reso; - + //v.filter.set_filter_parameters( &final_cutoff, &final_reso ); - - mixer->set_voice_filter(i,true,v.filter.final_cutoff,v.filter.it_reso); - } else { - - - mixer->set_voice_filter(i,false,0,0); - } - - /* RAIVERV */ - - mixer->set_voice_reverb_send(i,v.reverb_send); - /* CHAURUZ */ + mixer->set_voice_filter(i, true, v.filter.final_cutoff, v.filter.it_reso); + } else { + + mixer->set_voice_filter(i, false, 0, 0); + } + + /* RAIVERV */ + + mixer->set_voice_reverb_send(i, v.reverb_send); - mixer->set_voice_chorus_send(i,v.chorus_send); + /* CHAURUZ */ - } + mixer->set_voice_chorus_send(i, v.chorus_send); + } } - - switch(song->get_reverb_mode()) { - + switch (song->get_reverb_mode()) { + case CPSong::REVERB_MODE_ROOM: { - - mixer->set_reverb_mode( CPMixer::REVERB_MODE_ROOM ); + + mixer->set_reverb_mode(CPMixer::REVERB_MODE_ROOM); } break; case CPSong::REVERB_MODE_STUDIO_SMALL: { - - mixer->set_reverb_mode( CPMixer::REVERB_MODE_STUDIO_SMALL ); - + + mixer->set_reverb_mode(CPMixer::REVERB_MODE_STUDIO_SMALL); + } break; case CPSong::REVERB_MODE_STUDIO_MEDIUM: { - - mixer->set_reverb_mode( CPMixer::REVERB_MODE_STUDIO_MEDIUM ); - + + mixer->set_reverb_mode(CPMixer::REVERB_MODE_STUDIO_MEDIUM); + } break; case CPSong::REVERB_MODE_STUDIO_LARGE: { - - mixer->set_reverb_mode( CPMixer::REVERB_MODE_STUDIO_LARGE ); - + + mixer->set_reverb_mode(CPMixer::REVERB_MODE_STUDIO_LARGE); + } break; case CPSong::REVERB_MODE_HALL: { - - mixer->set_reverb_mode( CPMixer::REVERB_MODE_HALL ); - + + mixer->set_reverb_mode(CPMixer::REVERB_MODE_HALL); + } break; case CPSong::REVERB_MODE_SPACE_ECHO: { - - mixer->set_reverb_mode( CPMixer::REVERB_MODE_SPACE_ECHO ); - + + mixer->set_reverb_mode(CPMixer::REVERB_MODE_SPACE_ECHO); + } break; case CPSong::REVERB_MODE_ECHO: { - - mixer->set_reverb_mode( CPMixer::REVERB_MODE_ECHO ); - + + mixer->set_reverb_mode(CPMixer::REVERB_MODE_ECHO); + } break; case CPSong::REVERB_MODE_DELAY: { - - mixer->set_reverb_mode( CPMixer::REVERB_MODE_DELAY ); - + + mixer->set_reverb_mode(CPMixer::REVERB_MODE_DELAY); + } break; case CPSong::REVERB_MODE_HALF_ECHO: { - - mixer->set_reverb_mode( CPMixer::REVERB_MODE_HALF_ECHO ); - + + mixer->set_reverb_mode(CPMixer::REVERB_MODE_HALF_ECHO); + } break; - } - - mixer->set_chorus_params(song->get_chorus_delay_ms(),song->get_chorus_separation_ms(),song->get_chorus_depth_ms10(),song->get_chorus_speed_hz10() ); - + mixer->set_chorus_params(song->get_chorus_delay_ms(), song->get_chorus_separation_ms(), song->get_chorus_depth_ms10(), song->get_chorus_speed_hz10()); } - - - - - - - void CPPlayer::handle_tick() { int i; - - if ( mixer==NULL ) return; - if ( song==NULL ) return; - + if (mixer == NULL) return; + if (song == NULL) return; /* update time counter (sngtime is in milliseconds (in fact 2^-10)) */ - if (control.ticks_counter>=control.speed) { // time to process... ***THE ROW***! + if (control.ticks_counter >= control.speed) { // time to process... ***THE ROW***! /* process pattern-delay. pf->patdly2 is the counter and pf->patdly is the command memory. */ -// if (control.pattern_delay_1) { + // if (control.pattern_delay_1) { -// control.pattern_delay_2=control.pattern_delay_1; -// control.pattern_delay_1=0; -// } -// if (control.pattern_delay_2) { -// patterndelay active -// if (--control.pattern_delay_2) -// so turn back pf->patpos by 1 -// if (pf->patpos) pf->patpos--; -// } + // control.pattern_delay_2=control.pattern_delay_1; + // control.pattern_delay_1=0; + // } + // if (control.pattern_delay_2) { + // patterndelay active + // if (--control.pattern_delay_2) + // so turn back pf->patpos by 1 + // if (pf->patpos) pf->patpos--; + // } - if (control.play_mode!=PLAY_NOTHING) { + if (control.play_mode != PLAY_NOTHING) { - control.ticks_counter=0; - + control.ticks_counter = 0; - if (control.position.force_next_order>=0) { + if (control.position.force_next_order >= 0) { - control.position.current_order=control.position.force_next_order; + control.position.current_order = control.position.force_next_order; } - control.position.force_next_order=-1; + control.position.force_next_order = -1; - control.previous_position=control.position; // for those special cases... - control.position.forbid_jump=false; + control.previous_position = control.position; // for those special cases... + control.position.forbid_jump = false; - for (i=0;i<CPPattern::WIDTH;i++) { + for (i = 0; i < CPPattern::WIDTH; i++) { - process_note(i,song->get_pattern(control.position.current_pattern)->get_note(i,control.position.current_row)); + process_note(i, song->get_pattern(control.position.current_pattern)->get_note(i, control.position.current_row)); } control.position.current_row++; - - if ( control.position.current_row>=song->get_pattern(control.position.current_pattern)->get_length() ) { - if (control.play_mode==PLAY_SONG) { + if (control.position.current_row >= song->get_pattern(control.position.current_pattern)->get_length()) { + + if (control.play_mode == PLAY_SONG) { int next_order; - next_order=get_song_next_order_idx(song,control.position.current_order); + next_order = get_song_next_order_idx(song, control.position.current_order); - if (next_order!=-1) { + if (next_order != -1) { // Do we have a "next order?" - control.position.current_pattern=song->get_order(next_order); - if (next_order<=control.position.current_order) - control.reached_end=true; - control.position.current_order=next_order; - + control.position.current_pattern = song->get_order(next_order); + if (next_order <= control.position.current_order) + control.reached_end = true; + control.position.current_order = next_order; + } else { // no, probably the user deleted the orderlist. - control.play_mode=PLAY_NOTHING; + control.play_mode = PLAY_NOTHING; reset(); - control.reached_end=true; + control.reached_end = true; } } - control.position.current_row=0; + control.position.current_row = 0; } - } - - } - - pre_process_effects(); process_NNAs(); setup_voices(); |
