[sdiy] Fourier Analysis Question

Paul Cunningham paul at cometway.com
Fri Dec 17 16:52:17 CET 2010


word. Im interested in this sort of thing being an owner of the kurzweil 150 (fs) and absolutely *love* the dynamics of their FFT based piano. unfortunately it is bandwidth limited to 10k. so i guess one consideration is the necessary output sample rate. the other i guess is how critical the individual sine phases are over time, since you will be interpolating (like a waldorf does).

how many wavetable slots are necessary to get an accurate sound? you will need more different waves for the attack, but i suppose the partial phases become a lot more important for the sustained portion since pianos have up to three strings per note and your wavetable would need to represent that movement by scanning a loop or being really long. would you try to modulate the wavetable scanning or just run from front to back at a linear rate? what are your thoughts on that? -pc

On Dec 17, 2010, at 9:26 AM, Scott Gravenhorst <music.maker at gte.net> wrote:

> Top-posted because I have nothing directly to add other than I am very interested in this
> and will be following this thread.  It also reminds me that I need to learn about how to
> do FFT (need to look for and at algorithms and methods).
> 
> Tom Wiltshire <tom at electricdruid.net> wrote:
>> Hi All,
>> 
>> The last few days I've been messing around doing various analyses 
>> of piano tones, recorded from my old piano downstairs. I've come 
>> up with a question, at the foot of this mail. The next bit is how 
>> I got to the question, which you may or may not find interesting. 
>> 
>> <background>
>> I started off by looking at attack times, since it occurred to me 
>> to wonder whether the typical synth trick of sending velocity to 
>> envelope times (higher velocity=shorter attack) was justified by 
>> evidence or "just seems right". I still don't have a definitive 
>> answer, but on the face of it, it seems not to be so for my 
>> piano. The attacks in general seem to have the same *rate* of 
>> attack, with louder notes attacking for longer. The other 
>> important pattern is (unsurprisingly) that lower notes have 
>> slower attacks than the higher ones. Neither relationship seems 
>> to be simply linear, but we could be polite and say it's a 
>> "highly nonlinear" piano. 
>> 
>> I've also been doing fourier analysis of the piano note samples. 
>> I've tried both analysing single samples from various parts of 
>> the waveform and the whole note sample as a unit (80 or 100,000 
>> samples perhaps). Doing this latter, it is possible to generate a 
>> highly accurate fourier series for the sample. I've done this up 
>> to 3000 harmonics (e.g. the lowest 3000 of the 50,000 possible 
>> for a 100K Sample). The output from the fourier function is a 
>> pair of arrays containing the magnitudes and phases of 3000 sine 
>> waves that can be used to reconstruct the original sample. 
>> Comparing a resynthesized version of this sample with the 
>> original produces a file which is indistinguishable from the 
>> original. Examples below: 
>> 
>> The original note sample
>>    http://electricdruid.com/piano/original.aiff
>> The resynthesized note
>>    http://electricdruid.com/piano/resyn_note_3000.aiff
>> The differences between them (remaining high end which has not been analysed)
>>    http://electricdruid.com/piano/resyn_error_3000.aiff
>> 
>> I'd also like to generate a sequence of waveforms for use as a 
>> wavetable from this note. I can do this by finding and analysing 
>> single cycle waveforms from the sample, but I'd like to know if 
>> there's any mathematical way to do it. I'd like to replace the 
>> 3000-point fourier result with a series of small (say 128-point) 
>> fourier 'snapshots'. Synthesis of a piano note would then come 
>> down to building a wavetable when the sound is loaded and then 
>> interpolating sequentially between individual waveforms to create 
>> the final sound. 
>> 
>> </background>
>> 
>> So the question is this:
>> 
>> Can you break one long fourier analysis result into an 
>> approximate copy based on a series of lower resolution fourier 
>> analyses without going back to the time domain? 
>> 
>> Any clues or comments appreciated.
>> Thanks,
>> Tom
>> 
>> 
>> _______________________________________________
>> Synth-diy mailing list
>> Synth-diy at dropmix.xs4all.nl
>> http://dropmix.xs4all.nl/mailman/listinfo/synth-diy
>> 
> 
> -- ScottG
> ________________________________________________________________________
> -- Scott Gravenhorst
> -- FPGA MIDI Synthesizer Information: home1.gte.net/res0658s/FPGA_synth/
> -- FatMan: home1.gte.net/res0658s/fatman/
> -- NonFatMan: home1.gte.net/res0658s/electronics/
> -- When the going gets tough, the tough use the command line.
> 
> _______________________________________________
> 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