parent
							
								
									0c606103e3
								
							
						
					
					
						commit
						f1b560cce9
					
				|  | @ -190,9 +190,6 @@ const char** DivPlatformPCSpeaker::getRegisterSheet() { | ||||||
|   return regCheatSheetPCSpeaker; |   return regCheatSheetPCSpeaker; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| const float cut=0.05; |  | ||||||
| const float reso=0.06; |  | ||||||
| 
 |  | ||||||
| void DivPlatformPCSpeaker::acquire_unfilt(short** buf, size_t len) { | void DivPlatformPCSpeaker::acquire_unfilt(short** buf, size_t len) { | ||||||
|   int out=0; |   int out=0; | ||||||
|   for (size_t i=0; i<len; i++) { |   for (size_t i=0; i<len; i++) { | ||||||
|  | @ -229,8 +226,8 @@ void DivPlatformPCSpeaker::acquire_cone(short** buf, size_t len) { | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|       float next=(pos>((freq+16)>>1) && !isMuted[0])?1:0; |       float next=(pos>((freq+16)>>1) && !isMuted[0])?1:0; | ||||||
|       low+=0.04*band; |       low+=cut*band; | ||||||
|       band+=0.04*(next-low-band); |       band+=cut*(next-low-band); | ||||||
|       float out=(low+band)*0.75; |       float out=(low+band)*0.75; | ||||||
|       if (out>1.0) out=1.0; |       if (out>1.0) out=1.0; | ||||||
|       if (out<-1.0) out=-1.0; |       if (out<-1.0) out=-1.0; | ||||||
|  | @ -612,6 +609,17 @@ void DivPlatformPCSpeaker::setFlags(const DivConfig& flags) { | ||||||
|   rate=chipClock/PCSPKR_DIVIDER; |   rate=chipClock/PCSPKR_DIVIDER; | ||||||
|   speakerType=flags.getInt("speakerType",0)&3; |   speakerType=flags.getInt("speakerType",0)&3; | ||||||
|   oscBuf->rate=rate; |   oscBuf->rate=rate; | ||||||
|  | 
 | ||||||
|  |   switch (speakerType) { | ||||||
|  |     case 1: | ||||||
|  |       cut=2.0*sin(M_PI*1900.0/rate); | ||||||
|  |       reso=0.0; | ||||||
|  |       break; | ||||||
|  |     default: | ||||||
|  |       cut=2.0*sin(M_PI*2375.0/rate); | ||||||
|  |       reso=0.06; | ||||||
|  |       break; | ||||||
|  |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void DivPlatformPCSpeaker::notifyInsDeletion(void* ins) { | void DivPlatformPCSpeaker::notifyInsDeletion(void* ins) { | ||||||
|  |  | ||||||
|  | @ -57,6 +57,9 @@ class DivPlatformPCSpeaker: public DivDispatch { | ||||||
|   float low, band; |   float low, band; | ||||||
|   float low2, high2, band2; |   float low2, high2, band2; | ||||||
|   float low3, band3; |   float low3, band3; | ||||||
|  |   float cut; | ||||||
|  |   float reso; | ||||||
|  | 
 | ||||||
|   unsigned short freq, lastFreq; |   unsigned short freq, lastFreq; | ||||||
|   unsigned char regPool[2]; |   unsigned char regPool[2]; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 tildearrow
						tildearrow