# [sdiy] Fourier Analysis Question

Scott Gravenhorst music.maker at gte.net
Fri Dec 17 15:26:03 CET 2010

```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?
>
>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.

```