synfilt.cpp

来自「一个自己编制的基于pocketPC的mp3播放器」· C++ 代码 · 共 1,042 行 · 第 1/3 页

CPP
1,042
字号
					(vp[10] * dp[10]) +					(vp[9] * dp[11]) +					(vp[8] * dp[12]) +					(vp[7] * dp[13]) +					(vp[6] * dp[14]) +					(vp[5] * dp[15])					) * scalefactor);				buffer->append (channel, clip(pcm_sample));			} // for		} break; // case 4:		case 5: {			// fat chance of having this loop unroll			for( register const real *dp = d;					 dp < d + (32 * 16);					 dp += 16, vp += 16 ) {				register real pcm_sample;				pcm_sample = (real)(((vp[5] * dp[0]) +					(vp[4] * dp[1]) +					(vp[3] * dp[2]) +					(vp[2] * dp[3]) +					(vp[1] * dp[4]) +					(vp[0] * dp[5]) +					(vp[15] * dp[6]) +					(vp[14] * dp[7]) +					(vp[13] * dp[8]) +					(vp[12] * dp[9]) +					(vp[11] * dp[10]) +					(vp[10] * dp[11]) +					(vp[9] * dp[12]) +					(vp[8] * dp[13]) +					(vp[7] * dp[14]) +					(vp[6] * dp[15])					) * scalefactor);				buffer->append (channel, clip(pcm_sample));			} // for		} break; // case 5:		case 6: {			// fat chance of having this loop unroll			for( register const real *dp = d;					 dp < d + (32 * 16);					 dp += 16, vp += 16 ) {				register real pcm_sample;				pcm_sample = (real)(((vp[6] * dp[0]) +					(vp[5] * dp[1]) +					(vp[4] * dp[2]) +					(vp[3] * dp[3]) +					(vp[2] * dp[4]) +					(vp[1] * dp[5]) +					(vp[0] * dp[6]) +					(vp[15] * dp[7]) +					(vp[14] * dp[8]) +					(vp[13] * dp[9]) +					(vp[12] * dp[10]) +					(vp[11] * dp[11]) +					(vp[10] * dp[12]) +					(vp[9] * dp[13]) +					(vp[8] * dp[14]) +					(vp[7] * dp[15])					) * scalefactor);            buffer->append (channel, clip(pcm_sample));			} // for		} break; // case 6:		case 7: {			// fat chance of having this loop unroll			for( register const real *dp = d;					 dp < d + (32 * 16);					 dp += 16, vp += 16 ) {				register real pcm_sample;				pcm_sample = (real)(((vp[7] * dp[0]) +					(vp[6] * dp[1]) +					(vp[5] * dp[2]) +					(vp[4] * dp[3]) +					(vp[3] * dp[4]) +					(vp[2] * dp[5]) +					(vp[1] * dp[6]) +					(vp[0] * dp[7]) +					(vp[15] * dp[8]) +					(vp[14] * dp[9]) +					(vp[13] * dp[10]) +					(vp[12] * dp[11]) +					(vp[11] * dp[12]) +					(vp[10] * dp[13]) +					(vp[9] * dp[14]) +					(vp[8] * dp[15])					) * scalefactor);            buffer->append (channel, clip(pcm_sample));			} // for		} break; // case 7:		case 8: {			// fat chance of having this loop unroll			for( register const real *dp = d;					 dp < d + (32 * 16);					 dp += 16, vp += 16 ) {				register real pcm_sample;				pcm_sample = (real)(((vp[8] * dp[0]) +					(vp[7] * dp[1]) +					(vp[6] * dp[2]) +					(vp[5] * dp[3]) +					(vp[4] * dp[4]) +					(vp[3] * dp[5]) +					(vp[2] * dp[6]) +					(vp[1] * dp[7]) +					(vp[0] * dp[8]) +					(vp[15] * dp[9]) +					(vp[14] * dp[10]) +					(vp[13] * dp[11]) +					(vp[12] * dp[12]) +					(vp[11] * dp[13]) +					(vp[10] * dp[14]) +					(vp[9] * dp[15])					) * scalefactor);            buffer->append (channel, clip(pcm_sample));			} // for		} break; // case 8:		case 9: {			// fat chance of having this loop unroll			for( register const real *dp = d;					 dp < d + (32 * 16);					 dp += 16, vp += 16 ) {				register real pcm_sample;				pcm_sample = (real)(((vp[9] * dp[0]) +					(vp[8] * dp[1]) +					(vp[7] * dp[2]) +					(vp[6] * dp[3]) +					(vp[5] * dp[4]) +					(vp[4] * dp[5]) +					(vp[3] * dp[6]) +					(vp[2] * dp[7]) +					(vp[1] * dp[8]) +					(vp[0] * dp[9]) +					(vp[15] * dp[10]) +					(vp[14] * dp[11]) +					(vp[13] * dp[12]) +					(vp[12] * dp[13]) +					(vp[11] * dp[14]) +					(vp[10] * dp[15])					) * scalefactor);            buffer->append (channel, clip(pcm_sample));			} // for		} break; // case 9:		case 10: {			// fat chance of having this loop unroll			for( register const real *dp = d;					 dp < d + (32 * 16);					 dp += 16, vp += 16 ) {				register real pcm_sample;				pcm_sample = (real)(((vp[10] * dp[0]) +					(vp[9] * dp[1]) +					(vp[8] * dp[2]) +					(vp[7] * dp[3]) +					(vp[6] * dp[4]) +					(vp[5] * dp[5]) +					(vp[4] * dp[6]) +					(vp[3] * dp[7]) +					(vp[2] * dp[8]) +					(vp[1] * dp[9]) +					(vp[0] * dp[10]) +					(vp[15] * dp[11]) +					(vp[14] * dp[12]) +					(vp[13] * dp[13]) +					(vp[12] * dp[14]) +					(vp[11] * dp[15])					) * scalefactor);            buffer->append (channel, clip(pcm_sample));			} // for		} break; // case 10:		case 11: {			// fat chance of having this loop unroll			for( register const real *dp = d;					 dp < d + (32 * 16);					 dp += 16, vp += 16 ) {				register real pcm_sample;				pcm_sample = (real)(((vp[11] * dp[0]) +					(vp[10] * dp[1]) +					(vp[9] * dp[2]) +					(vp[8] * dp[3]) +					(vp[7] * dp[4]) +					(vp[6] * dp[5]) +					(vp[5] * dp[6]) +					(vp[4] * dp[7]) +					(vp[3] * dp[8]) +					(vp[2] * dp[9]) +					(vp[1] * dp[10]) +					(vp[0] * dp[11]) +					(vp[15] * dp[12]) +					(vp[14] * dp[13]) +					(vp[13] * dp[14]) +					(vp[12] * dp[15])					) * scalefactor);            buffer->append (channel, clip(pcm_sample));			} // for		} break; // case 11:		case 12: {			// fat chance of having this loop unroll			for( register const real *dp = d;					 dp < d + (32 * 16);					 dp += 16, vp += 16 ) {				register real pcm_sample;				pcm_sample = (real)(((vp[12] * dp[0]) +					(vp[11] * dp[1]) +					(vp[10] * dp[2]) +					(vp[9] * dp[3]) +					(vp[8] * dp[4]) +					(vp[7] * dp[5]) +					(vp[6] * dp[6]) +					(vp[5] * dp[7]) +					(vp[4] * dp[8]) +					(vp[3] * dp[9]) +					(vp[2] * dp[10]) +					(vp[1] * dp[11]) +					(vp[0] * dp[12]) +					(vp[15] * dp[13]) +					(vp[14] * dp[14]) +					(vp[13] * dp[15])					) * scalefactor);            buffer->append (channel, clip(pcm_sample));			} // for		} break; // case 12:		case 13: {			// fat chance of having this loop unroll			for( register const real *dp = d;					 dp < d + (32 * 16);					 dp += 16, vp += 16 ) {				register real pcm_sample;				pcm_sample = (real)(((vp[13] * dp[0]) +					(vp[12] * dp[1]) +					(vp[11] * dp[2]) +					(vp[10] * dp[3]) +					(vp[9] * dp[4]) +					(vp[8] * dp[5]) +					(vp[7] * dp[6]) +					(vp[6] * dp[7]) +					(vp[5] * dp[8]) +					(vp[4] * dp[9]) +					(vp[3] * dp[10]) +					(vp[2] * dp[11]) +					(vp[1] * dp[12]) +					(vp[0] * dp[13]) +					(vp[15] * dp[14]) +					(vp[14] * dp[15])					) * scalefactor);            buffer->append (channel, clip(pcm_sample));			} // for		} break; // case 13:		case 14: {			// fat chance of having this loop unroll			for( register const real *dp = d;					 dp < d + (32 * 16);					 dp += 16, vp += 16 ) {				register real pcm_sample;				pcm_sample = (real)(((vp[14] * dp[0]) +					(vp[13] * dp[1]) +					(vp[12] * dp[2]) +					(vp[11] * dp[3]) +					(vp[10] * dp[4]) +					(vp[9] * dp[5]) +					(vp[8] * dp[6]) +					(vp[7] * dp[7]) +					(vp[6] * dp[8]) +					(vp[5] * dp[9]) +					(vp[4] * dp[10]) +					(vp[3] * dp[11]) +					(vp[2] * dp[12]) +					(vp[1] * dp[13]) +					(vp[0] * dp[14]) +					(vp[15] * dp[15])					) * scalefactor);            buffer->append (channel, clip(pcm_sample));			} // for		} break; // case 14:		case 15: {			// fat chance of having this loop unroll			for( register const real *dp = d;					 dp < d + (32 * 16);					 dp += 16, vp += 16 ) {				register real pcm_sample;				pcm_sample = (real)(((vp[15] * dp[0]) +					(vp[14] * dp[1]) +					(vp[13] * dp[2]) +					(vp[12] * dp[3]) +					(vp[11] * dp[4]) +					(vp[10] * dp[5]) +					(vp[9] * dp[6]) +					(vp[8] * dp[7]) +					(vp[7] * dp[8]) +					(vp[6] * dp[9]) +					(vp[5] * dp[10]) +					(vp[4] * dp[11]) +					(vp[3] * dp[12]) +					(vp[2] * dp[13]) +					(vp[1] * dp[14]) +					(vp[0] * dp[15])					) * scalefactor);            buffer->append (channel, clip(pcm_sample));			} // for		} break; // case 15:	}; // switch (actual_write_pos)}void SynthesisFilter::calculate_pcm_samples(Obuffer *buffer){	compute_new_v();	compute_pcm_samples(buffer);   actual_write_pos = (actual_write_pos + 1) & 0xf;	actual_v = (actual_v == v1) ? v2 : v1;	// initialize samples[]:  for (register real *floatp = samples + 32; floatp > samples; )	 *--floatp = 0.0f;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?