[sdiy] sine wave floating point conversion issue

Veronica Merryfield veronica at merryfield.ca
Sat Feb 25 04:29:42 CET 2012


Divide is often expensive (although not always).

unsigned char DacValue = (unsigned char)((sample*127.5)+127.5);

On 2012-02-24, at 7:20 PM, Jay Schwichtenberg wrote:

> Dan,
> 
> Try:
> 	sine_int = (int) ((((sine_float + 1.0) * 256.0) - 1.0) / 2.0);
> 
> Jay S.
> 
> -----Original Message-----
> From: synth-diy-bounces at dropmix.xs4all.nl
> [mailto:synth-diy-bounces at dropmix.xs4all.nl] On Behalf Of dan snazelle
> Sent: Sunday, December 31, 2000 4:52 PM
> To: synthdiy diy
> Subject: [sdiy] sine wave floating point conversion issue
> 
> If I have a value in my program that is putting out floating point values
> (to make a sine wave) between 0.0 and 1.0
> 
> I would like to get these values into an integer value of between 0 and 255
> for my dac routine.
> 
> i tried changing the type and multiplying the value and then dividing it,
> but then i ended up with negative and positive values....
> 
> 
> here is the routine which MAKES the sine
> 
> 	
> 
> void loop () {
>  int FREQUENCY=25+analogRead(0);
>  float sample;
>   int j; 
> 
> 	for(j = 0; j < NUM_SAMPLES; j++) {
> 
> 		
> 
>  		sample = sin(2 * PI * FREQUENCY * j / SAMPLING_RATE);
> 
> 
> sample is the value which is a float and puts out the number I want to
> transform into something usable for the dacOutput function.
> 
> 
> This has shown me I need to get better and basic type conversion, etc
> 
> 
> thanks
> 
> 
> 
> _______________________________________________
> Synth-diy mailing list
> Synth-diy at dropmix.xs4all.nl
> http://dropmix.xs4all.nl/mailman/listinfo/synth-diy
> 
> 
> _______________________________________________
> Synth-diy mailing list
> Synth-diy at dropmix.xs4all.nl
> http://dropmix.xs4all.nl/mailman/listinfo/synth-diy
> 




More information about the Synth-diy mailing list