i hadn't heard of this dev board before. at http://www.st.com/internet/evalboard/product/252419.jsp it says that the single unit prices is US$14.9 . is that right? that's nearly free.

where do the software tools (the compiler/linker/loader/etc) come from?

regarding wavetable indexing, somewhere Julian must be converting float to int, no? i am still convinced that the correct way to implement it is with pure integer arithmetic. to implement a good NCO, you need a lot of bits in the phase accumulator. i might think that 32 would be enough. if there are 256 points in the wavetable, then the top 8 bits go to indexing into the wavetable and the bottom 24 bits are used for interpolation between points. usually, for mid-quality synthesis, a 256-point wavetable oughta be good enough, but you might want it a little bigger. maybe 1024 points. that leaves 22 bits for the interpolation. if you have enough points in the wavetable, then linear interpolation oughta be good enough.

Julian, are are you willing to plop up more code? if you want, i'll dig up a snippet for how to do this without if statements and without floating-point phase accumulator. and with linear interpolation. it's pretty straight forward.

--

r b-j                  r...@audioimagination.com

"Imagination is more important than knowledge."





On 4/9/12 12:51 PM, Nigel Redmon wrote:
Interesting...my STM32F4DISCOVERY just arrive Friday...intending to make a 
wavetable oscillator on it, first thing...

Are you writing the wavetable to a buffer, then pulling from that at the sample 
rate? if so, what size?



On Apr 9, 2012, at 6:28 AM, Julian Schmidt wrote:
Hello all,

I'm trying to get an oscillator running on the STM32F4 discovery board.
I'm sending my audio with 44100Hz via I2S to the onboard codec.
However I'm experiencing strange problems.

my code ist quite straight forward:

phase += phaseInc(440); // calculate the phase increment for 440 hz and add it 
to phase
if(phase>= TABLESIZE) phase -= TABLESIZE;
return phase/TABLESIZE;

this should give me a non bw limited saw from 0 to 1.f
(I also tried it with an actual wavetable in use. a sine is played fine. but as 
soon as overtones are added i get the fluttering)

My problem is that i get periodic amplitude modulations on the overtones about 
2-3 times a second.
the root frequency amplitude is fixed, but the higher the overtone frequency, 
the more it's amplitude drops every now and then.
this screenshot illustrates the waveform. the upper waveform has some ringing 
on the discontinuity and the lower has not.
http://i.imgur.com/JyuEr.png (this image is taken from an inverted saw 
wavetable. but the flutter is the same, no matter if i use a bandlimited WT or 
output the phase counter directly)
the waveform oscillates between the upper and the lower image.

the amplitude flutter from the overtones is also frequency dependent.
at 439 and 441 Hz its not really audible.

so my tought is that is has to do with the wrap of the phase counter. but i 
can't get my head around whats wrong.
any ideas where this change in overtone amplitude could come from?

cheers,
julian

--
dupswapdrop -- the music-dsp mailing list and website:
subscription info, FAQ, source code archive, list archive, book reviews, dsp 
links
http://music.columbia.edu/cmc/music-dsp
http://music.columbia.edu/mailman/listinfo/music-dsp

Reply via email to