亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? chorus.c

?? linux下錄音程序
?? C
字號:
/* * August 24, 1998 * Copyright (C) 1998 Juergen Mueller And Sundry Contributors * This source code is freely redistributable and may be used for * any purpose.  This copyright notice must be maintained.  * Juergen Mueller And Sundry Contributors are not responsible for  * the consequences of using this software. *//* * 	Chorus effect. *  * Flow diagram scheme for n delays ( 1 <= n <= MAX_CHORUS ): * *        * gain-in                                           ___ * ibuff -----+--------------------------------------------->|   | *            |      _________                               |   | *            |     |         |                   * decay 1  |   | *            +---->| delay 1 |----------------------------->|   | *            |     |_________|                              |   | *            |        /|\                                   |   | *            :         |                                    |   | *            : +-----------------+   +--------------+       | + | *            : | Delay control 1 |<--| mod. speed 1 |       |   | *            : +-----------------+   +--------------+       |   | *            |      _________                               |   | *            |     |         |                   * decay n  |   | *            +---->| delay n |----------------------------->|   | *                  |_________|                              |   | *                     /|\                                   |___| *                      |                                      |   *              +-----------------+   +--------------+         | * gain-out *              | Delay control n |<--| mod. speed n |         | *              +-----------------+   +--------------+         +----->obuff * * * The delay i is controled by a sine or triangle modulation i ( 1 <= i <= n). * * Usage:  *   chorus gain-in gain-out delay-1 decay-1 speed-1 depth-1 -s1|t1 [ *       delay-2 decay-2 speed-2 depth-2 -s2|-t2 ... ] * * Where: *   gain-in, decay-1 ... decay-n :  0.0 ... 1.0      volume *   gain-out :  0.0 ...      volume *   delay-1 ... delay-n :  20.0 ... 100.0 msec *   speed-1 ... speed-n :  0.1 ... 5.0 Hz       modulation 1 ... n *   depth-1 ... depth-n :  0.0 ... 10.0 msec    modulated delay 1 ... n *   -s1 ... -sn : modulation by sine 1 ... n *   -t1 ... -tn : modulation by triangle 1 ... n * * Note: *   when decay is close to 1.0, the samples can begin clipping and the output *   can saturate!  * * Hint: *   1 / out-gain < gain-in ( 1 + decay-1 + ... + decay-n ) **//* * Sound Tools chorus effect file. */#include <stdlib.h> /* Harmless, and prototypes atof() etc. --dgc */#include <math.h>#include <string.h>#include "st.h"#define MOD_SINE	0#define MOD_TRIANGLE	1#define MAX_CHORUS	7/* Private data for SKEL file */typedef struct chorusstuff {	int	num_chorus;	int	modulation[MAX_CHORUS];	int	counter;				long	phase[MAX_CHORUS];	float	*chorusbuf;	float	in_gain, out_gain;	float	delay[MAX_CHORUS], decay[MAX_CHORUS];	float	speed[MAX_CHORUS], depth[MAX_CHORUS];	long	length[MAX_CHORUS];	int	*lookup_tab[MAX_CHORUS];	int	depth_samples[MAX_CHORUS], samples[MAX_CHORUS];	int	maxsamples, fade_out;} *chorus_t;/* Private data for SKEL file */LONG chorus_clip24(l)LONG l;{	if (l >= ((LONG)1 << 24))		return ((LONG)1 << 24) - 1;	else if (l <= -((LONG)1 << 24))		return -((LONG)1 << 24) + 1;	else		return l;}/* This was very painful.  We need a sine library. */void chorus_sine(buf, len, max, depth)int *buf;long len;int max;int depth;{	long i;	int offset;	double val;	offset = max - depth;	for (i = 0; i < len; i++) {		val = sin((double)i/(double)len * 2.0 * M_PI);		buf[i] = offset + (int) (val * (double)depth);	}}void chorus_triangle(buf, len, max, depth)int *buf;long len;int max;int depth;{	long i;	int offset;	double val;	offset = max - 2 * depth;	for (i = 0; i < len / 2; i++) {		val = i * 2.0 / len;		buf[i] = offset + (int) (val * 2.0 * (double)depth);	}	for (i = len / 2; i < len ; i++) {		val = (len - i) * 2.0 / len;		buf[i] = offset + (int) (val * 2.0 * (double)depth);	}}/* * Process options */void chorus_getopts(effp, n, argv) eff_t effp;int n;char **argv;{	chorus_t chorus = (chorus_t) effp->priv;	int i;	chorus->num_chorus = 0;	i = 0;	if ( ( n < 7 ) || (( n - 2 ) % 5 ) )	    fail("Usage: chorus gain-in gain-out delay decay speed depth [ -s | -t ]");	sscanf(argv[i++], "%f", &chorus->in_gain);	sscanf(argv[i++], "%f", &chorus->out_gain);	while ( i < n ) {		if ( chorus->num_chorus > MAX_CHORUS )			fail("chorus: to many delays, use less than %i delays", MAX_CHORUS);		sscanf(argv[i++], "%f", &chorus->delay[chorus->num_chorus]);		sscanf(argv[i++], "%f", &chorus->decay[chorus->num_chorus]);		sscanf(argv[i++], "%f", &chorus->speed[chorus->num_chorus]);		sscanf(argv[i++], "%f", &chorus->depth[chorus->num_chorus]);		if ( !strcmp(argv[i], "-s"))			chorus->modulation[chorus->num_chorus] = MOD_SINE;		else if ( ! strcmp(argv[i], "-t"))			chorus->modulation[chorus->num_chorus] = MOD_TRIANGLE;		else    			fail("Usage: chorus gain-in gain-out delay decay speed [ -s | -t ]");		i++;		chorus->num_chorus++;	}}/* * Prepare for processing. */void chorus_start(effp)eff_t effp;{	chorus_t chorus = (chorus_t) effp->priv;	int i;	float sum_in_volume;	chorus->maxsamples = 0;	if ( chorus->in_gain < 0.0 )		fail("chorus: gain-in must be positive!\n");	if ( chorus->in_gain > 1.0 )		fail("chorus: gain-in must be less than 1.0!\n");	if ( chorus->out_gain < 0.0 )		fail("chorus: gain-out must be positive!\n");	for ( i = 0; i < chorus->num_chorus; i++ ) {		chorus->samples[i] = (int) ( ( chorus->delay[i] + 			chorus->depth[i] ) * effp->ininfo.rate / 1000.0);		chorus->depth_samples[i] = (int) (chorus->depth[i] * 			effp->ininfo.rate / 1000.0);		if ( chorus->delay[i] < 20.0 )	    		fail("chorus: delay must be more than 20.0 msec!\n");		if ( chorus->delay[i] > 100.0 )	    		fail("chorus: delay must be less than 100.0 msec!\n");		if ( chorus->speed[i] < 0.1 )	    		fail("chorus: speed must be more than 0.1 Hz!\n");		if ( chorus->speed[i] > 5.0 )	    		fail("chorus: speed must be less than 5.0 Hz!\n");		if ( chorus->depth[i] < 0.0 )	    		fail("chorus: delay must be more positive!\n");		if ( chorus->depth[i] > 10.0 )	    		fail("chorus: delay must be less than 10.0 msec!\n");		if ( chorus->decay[i] < 0.0 )	    		fail("chorus: decay must be positive!\n" );		if ( chorus->decay[i] > 1.0 )	    		fail("chorus: decay must be less that 1.0!\n" );		chorus->length[i] = effp->ininfo.rate / chorus->speed[i];		if (! (chorus->lookup_tab[i] = 			(int *) malloc(sizeof (int) * chorus->length[i])))			fail("chorus: Cannot malloc %d bytes!\n", 				sizeof(int) * chorus->length[i]);		if ( chorus->modulation[i] == MOD_SINE )			chorus_sine(chorus->lookup_tab[i], chorus->length[i], 				chorus->samples[i] - 1, chorus->depth_samples[i]);		else			chorus_triangle(chorus->lookup_tab[i], chorus->length[i], 				chorus->samples[i] - 1, chorus->depth_samples[i]);		chorus->phase[i] = 0;		if ( chorus->samples[i] > chorus->maxsamples )			chorus->maxsamples = chorus->samples[i];	}	/* Be nice and check the hint with warning, if... */	sum_in_volume = 1.0;	for ( i = 0; i < chorus->num_chorus; i++ )		sum_in_volume += chorus->decay[i];	if ( chorus->in_gain * ( sum_in_volume ) > 1.0 / chorus->out_gain )	warn("chorus: warning >>> gain-out can cause saturation or clipping of output <<<");	if (! (chorus->chorusbuf = 		(float *) malloc(sizeof (float) * chorus->maxsamples)))		fail("chorus: Cannot malloc %d bytes!\n", 			sizeof(float) * chorus->maxsamples);	for ( i = 0; i < chorus->maxsamples; i++ )		chorus->chorusbuf[i] = 0.0;	chorus->counter = 0;	chorus->fade_out = chorus->maxsamples;}/* * Processed signed long samples from ibuf to obuf. * Return number of samples processed. */void chorus_flow(effp, ibuf, obuf, isamp, osamp)eff_t effp;LONG *ibuf, *obuf;int *isamp, *osamp;{	chorus_t chorus = (chorus_t) effp->priv;	int len, done;	int i;		float d_in, d_out;	LONG out;	len = ((*isamp > *osamp) ? *osamp : *isamp);	for(done = 0; done < len; done++) {		/* Store delays as 24-bit signed longs */		d_in = (float) *ibuf++ / 256;		/* Compute output first */		d_out = d_in * chorus->in_gain;		for ( i = 0; i < chorus->num_chorus; i++ )			d_out += chorus->chorusbuf[(chorus->maxsamples + 		        chorus->counter - chorus->lookup_tab[i][chorus->phase[i]]) % 			chorus->maxsamples] * chorus->decay[i];		/* Adjust the output volume and size to 24 bit */		d_out = d_out * chorus->out_gain;		out = chorus_clip24((LONG) d_out);		*obuf++ = out * 256;		/* Mix decay of delay and input */		chorus->chorusbuf[chorus->counter] = d_in;		chorus->counter = 			( chorus->counter + 1 ) % chorus->maxsamples;		for ( i = 0; i < chorus->num_chorus; i++ )			chorus->phase[i]  = 				( chorus->phase[i] + 1 ) % chorus->length[i];	}	/* processed all samples */}/* * Drain out reverb lines.  */void chorus_drain(effp, obuf, osamp)eff_t effp;LONG *obuf;int *osamp;{	chorus_t chorus = (chorus_t) effp->priv;	int done;	int i;		float d_in, d_out;	LONG out;	done = 0;	while ( ( done < *osamp ) && ( done < chorus->fade_out ) ) {		d_in = 0;		d_out = 0;		/* Compute output first */		for ( i = 0; i < chorus->num_chorus; i++ )			d_out += chorus->chorusbuf[(chorus->maxsamples + 		chorus->counter - chorus->lookup_tab[i][chorus->phase[i]]) % 		chorus->maxsamples] * chorus->decay[i];		/* Adjust the output volume and size to 24 bit */		d_out = d_out * chorus->out_gain;		out = chorus_clip24((LONG) d_out);		*obuf++ = out * 256;		/* Mix decay of delay and input */		chorus->chorusbuf[chorus->counter] = d_in;		chorus->counter = 			( chorus->counter + 1 ) % chorus->maxsamples;		for ( i = 0; i < chorus->num_chorus; i++ )			chorus->phase[i]  = 				( chorus->phase[i] + 1 ) % chorus->length[i];		done++;		chorus->fade_out--;	}	/* samples played, it remains */	*osamp = done;}/* * Clean up chorus effect. */void chorus_stop(effp)eff_t effp;{	chorus_t chorus = (chorus_t) effp->priv;	int i;	free((char *) chorus->chorusbuf);	chorus->chorusbuf = (float *) -1;   /* guaranteed core dump */	for ( i = 0; i < chorus->num_chorus; i++ ) {		free((char *) chorus->lookup_tab[i]);		chorus->lookup_tab[i] = (int *) -1;   /* guaranteed core dump */	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
94色蜜桃网一区二区三区| 在线观看亚洲精品视频| 一区二区三区四区亚洲| 欧美va日韩va| 日本精品一区二区三区高清 | 精品少妇一区二区三区视频免付费| 国产黑丝在线一区二区三区| 肉肉av福利一精品导航| 国产精品国产三级国产普通话99| 91精品国产乱码久久蜜臀| 91一区二区在线| 国产另类ts人妖一区二区| 亚洲成av人片| 亚洲欧美日韩精品久久久久| 久久精品亚洲国产奇米99| 欧美日本韩国一区| 91福利精品第一导航| 成人午夜伦理影院| 国产一区在线不卡| 麻豆精品视频在线观看免费| 亚洲mv大片欧洲mv大片精品| 亚洲欧美色一区| 国产精品丝袜一区| 久久先锋资源网| 精品国产一区二区三区忘忧草| 欧美日韩国产大片| 欧美日韩精品电影| 欧美在线看片a免费观看| 99久免费精品视频在线观看| 高清视频一区二区| 国产乱子轮精品视频| 久久精品国产999大香线蕉| 同产精品九九九| 亚洲国产欧美日韩另类综合| 亚洲摸摸操操av| 亚洲天堂中文字幕| **欧美大码日韩| 亚洲天堂成人在线观看| 国产精品入口麻豆九色| 国产精品久久久久久一区二区三区| 久久亚洲二区三区| 久久麻豆一区二区| 国产夜色精品一区二区av| 久久久久久97三级| 国产视频一区二区在线| 国产日韩欧美不卡| 日本一区免费视频| 中文乱码免费一区二区| 国产精品女人毛片| **网站欧美大片在线观看| 亚洲男人天堂av| 亚洲成人免费影院| 奇米综合一区二区三区精品视频| 日本女优在线视频一区二区| 麻豆精品国产91久久久久久| 国产中文字幕一区| 国产99精品国产| 成人av免费观看| 色天使久久综合网天天| 欧美日韩高清一区二区三区| 欧美成人性战久久| 日本一区二区三区dvd视频在线| 国产精品你懂的在线欣赏| 亚洲自拍偷拍av| 日韩精品一二三| 国产美女在线精品| 色88888久久久久久影院按摩| 欧美日韩国产小视频| www一区二区| 国产精品黄色在线观看| 亚洲国产精品久久艾草纯爱| 久久国产婷婷国产香蕉| 成人午夜激情影院| 欧美伊人久久久久久午夜久久久久| 欧美一级夜夜爽| 国产无一区二区| 亚洲乱码国产乱码精品精小说| 五月天亚洲婷婷| 国产suv精品一区二区6| 欧美性xxxxxxxx| www国产精品av| 亚洲日本一区二区| 久久99精品国产.久久久久 | 国产精品一区二区视频| 94色蜜桃网一区二区三区| 欧美一区二区精品| 中文字幕亚洲一区二区av在线| 亚洲成av人片在www色猫咪| 国产麻豆一精品一av一免费| 91精品91久久久中77777| 26uuu久久综合| 一级女性全黄久久生活片免费| 看片的网站亚洲| 91在线丨porny丨国产| 欧美大胆一级视频| 亚洲亚洲精品在线观看| 国产sm精品调教视频网站| 欧美久久久久久久久久| 国产精品嫩草影院av蜜臀| 激情伊人五月天久久综合| 在线亚洲免费视频| 欧美激情在线一区二区三区| 青草国产精品久久久久久| 日本黄色一区二区| 久久久精品黄色| 喷白浆一区二区| 欧美区视频在线观看| 亚洲色图欧美激情| 国产福利91精品一区二区三区| 91.com在线观看| 亚洲精品综合在线| 成人午夜电影久久影院| 日韩免费观看高清完整版| 亚洲第一主播视频| 在线观看亚洲精品| 最近中文字幕一区二区三区| 国产精品白丝av| 日韩精品自拍偷拍| 日韩精品免费专区| 欧美三级日韩三级| 亚洲欧洲成人自拍| 东方aⅴ免费观看久久av| 精品国产91洋老外米糕| 奇米色777欧美一区二区| 欧美日韩一区不卡| 亚洲在线观看免费| 91黄色免费看| 亚洲摸摸操操av| 色网站国产精品| 亚洲免费av观看| 99精品欧美一区二区三区小说| 国产日韩高清在线| 韩国女主播一区| 欧美精品一区二区三| 精品一区二区三区免费观看| 日韩美女在线视频| 日本欧美一区二区| 日韩欧美不卡在线观看视频| 日韩高清在线观看| 欧美一区二区在线免费播放| 日日噜噜夜夜狠狠视频欧美人| 欧美调教femdomvk| 日本视频免费一区| 欧美一级艳片视频免费观看| 玖玖九九国产精品| 26uuu亚洲| 成人的网站免费观看| 亚洲视频在线观看一区| 在线亚洲人成电影网站色www| 一区二区三区四区蜜桃| 欧美日韩国产高清一区| 免费xxxx性欧美18vr| 久久久久久免费毛片精品| 国产a精品视频| 亚洲男帅同性gay1069| 欧美日韩国产一区| 激情深爱一区二区| 国产精品久久久久久久久搜平片| av午夜一区麻豆| 亚洲一级二级在线| 制服丝袜国产精品| 国产老肥熟一区二区三区| 国产精品剧情在线亚洲| 欧美午夜精品久久久久久孕妇| 日韩精品免费视频人成| 久久久夜色精品亚洲| 色狠狠桃花综合| 美女在线一区二区| 国产精品剧情在线亚洲| 精品视频123区在线观看| 久久激五月天综合精品| 国产日韩影视精品| 欧美日韩国产首页在线观看| 国产又粗又猛又爽又黄91精品| 国产精品家庭影院| 69堂国产成人免费视频| 成人午夜视频网站| 视频一区在线播放| 国产精品午夜在线观看| 欧美高清dvd| 成人免费高清在线| 日韩va欧美va亚洲va久久| 国产视频不卡一区| 91精品国产91久久综合桃花 | 91一区二区三区在线观看| 肉色丝袜一区二区| 国产精品美女一区二区在线观看| 欧美亚洲动漫制服丝袜| 国产伦精品一区二区三区免费迷| 一级精品视频在线观看宜春院 | 91精品1区2区| 国产一区二区久久| 亚洲第一狼人社区| 国产精品久久久久久户外露出 | 国产精品九色蝌蚪自拍| 亚洲香肠在线观看| 日本系列欧美系列| 欧美亚洲一区三区| 丁香六月综合激情| 亚洲色图制服丝袜|