Re: [music-dsp] tracking drum partials
There is also "Science of Percussion Instruments" by Rossing. Am 07.08.2017 um 09:24 schrieb Jacob Møller Hjerrild: Hi Thomas, See if you can look up the book "The physics of musical instruments", by Fletcher and Rossing. I can see that there is a chapter on drums in it. It might be of use to you! Best regards Jacob ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] tracking drum partials
Hi Thomas, See if you can look up the book "The physics of musical instruments", by Fletcher and Rossing. I can see that there is a chapter on drums in it. It might be of use to you! Best regards Jacob On 08/06/2017 11:12 PM, Thomas Rehaag wrote: > sorry for the late reply. Half of my clients actually need help. > > @Theo: I'm not trying to rebuild natural drum sounds. Just tried to get > a bit more insight about drum sounds > I'm not quite content with the missing overtones in electro drum > synthesis. > > @Ian & Corey: thanks for pointing me to the parametric estimation method. > > Hope I'll find some hours in the next weeks to have a look at all the > new information and to go on with this. > > Best Regards, > > Thomas > > ___ > dupswapdrop: music-dsp mailing list > music-dsp@music.columbia.edu > https://lists.columbia.edu/mailman/listinfo/music-dsp > -- Med venlig hilsen / Best regards Jacob Møller Research Assistant, Audio Analysis Lab Aalborg University juni...@gmail.com mob: +45 29802053 ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] tracking drum partials
sorry for the late reply. Half of my clients actually need help. @Theo: I'm not trying to rebuild natural drum sounds. Just tried to get a bit more insight about drum sounds I'm not quite content with the missing overtones in electro drum synthesis. @Ian & Corey: thanks for pointing me to the parametric estimation method. Hope I'll find some hours in the next weeks to have a look at all the new information and to go on with this. Best Regards, Thomas ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] tracking drum partials
Thomas Rehaag wrote: Dear DSP Experts, can anybody tell me how to track drum partials? Is it even possible? What I'd like to have are the frequency & amplitude envelopes of the partials so that I can rebuild the drum sounds with additive synthesis. Hi In theory, just a little like using mpeg compression om a drum track, nothings in the way, you can do a frequency / amplitude encoding of "partials" from drum sounds. I recall when I was 'shopping around" for a ((Electrical) Network Theory) MSc subject in the 80s there was some work in the literature about such things being done or considered, because sample space in drum computers was limited and expensive. The idea that also some of the sound path of a decomposition in partials would magically concide with interesting moments of actual or electronic drums sounds appears to have been not very true. So it wasn't a great idea after all, most likely. Of course it's fun to make something of a digital percussion machine, I concur with that desire, but from my experience with sound design and studio effects I know it's a very complicated thing to project a working, decent and pleasant percussion sound out of your digital monitors, so it would be interesting to do some matching sine components and exponential dampings, but exceeding that nice electronic organ drum sound from the 60s might be quite some work to do! Theo V. ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] tracking drum partials
Original Message Subject: Re: [music-dsp] tracking drum partials From: "Ian Esten" <i...@ianesten.com> Date: Tue, August 1, 2017 4:49 pm To: "A discussion list for music-related DSP" <music-dsp@music.columbia.edu> -- > Roland Badeau, R�my Boyer, Bertrand David. EDS parametric modeling and > tracking of audio signals. Proc. of the 5th International Conference on > Digital Audio Effects (DAFx), 2002, Hambourg, Germany. pp.139144, 2002. > > > I remember reading other papers on EDS models that incorporate time varying > pitch into the model that came from voice compression research. But I > couldn't find any in my collection... � just a guess, but maybe one could autotune it, recording how much pitch correction was needed for each frame so they can re-apply pitch variation later. just like you could maybe somehow take out tremelo from the decaying amplitude. i don't see how that would help the more general case where the pitch of some partials varies with respect to others. i realize that, without a human doing it (like with a talking drum), vibrato or tremelo is not what i might expect to hear from a drum hit. -- r b-j � � � � � � � � �r...@audioimagination.com "Imagination is more important than knowledge." ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] tracking drum partials
Ian, do you have some references for the time-varying methods? Just curious... On Jul 31, 2017 12:04 AM, "Ian Esten" <i...@ianesten.com> wrote: > That would also be my first choice. It might also be worth looking at > modern algorithms in that family of methods. A lot of effort has gone into > designing exponentially damped sine methods for voice compression and > transmission. They will be more robust to noise than Prony's method. Some > methods can even handle arbitrarily coloured noise, not just white. Some > methods also deal with time-varying damped sinusoids, which would be > interesting if your drums can change their resonant modes over time, as > happens with the tabla, timpani and others. > > Best, > Ian > > On Sun, Jul 30, 2017 at 12:14 PM, Corey K <corey...@gmail.com> wrote: > >> You might want to look into a parametric method of estimating the >> partials as well, e.g., Prony's method, which could give you much higher >> resolution than the FFT. >> >> Best, >> >> Corey Kereliuk >> www.reverberate.ca >> >> >> On Jul 28, 2017 12:47 PM, "Thomas Rehaag" <develo...@netcologne.de> >> wrote: >> >> see below. >> >> >>> Original Message >>> >>> Subject: Re: [music-dsp] tracking drum partials >>> From: "Thomas Rehaag" <develo...@netcologne.de> >>> Date: Thu, July 27, 2017 4:02 pm >>> To: music-dsp@music.columbia.edu >>> >>> -- >>> >>> > >>> > @Robert: >>> > I didn't quite get "for analysis, i would recommend Gaussian windows >>> > because each partial will have it's own gaussian bump in the frequency >>> > domain ..." >>> > Looks like you wouldn't just pick up the peaks like I do. >>> > >>> >>> well, i *would* sorta, but it's not always as simple as that. >>> >>> ... >>> >>> >>> > Next the highest peaks are taken from every FFT and then tracks in time >>> > are built. >>> > >>> > And it looks like I've just found the simple key for better results >>> > after putting the whole stuff aside for 3 weeks now. >>> > It's just to use samples from drums that have been hit softly. >>> > Else every bin of the first FFTs will be crossed by 2 or 3 sweeps which >>> > leads to lots of artifacts. >>> >>> are you using MATLAB/Octave? you might need to think about fftshift() . >>> >>> suppose you have a sinusoid that goes on forever and you use a **very** >>> long FFT and transform it. if you can imagine that very long FFT as >>> approximating the Fourier Transform, you will get better than a "peak", you >>> will get a *spike* and +/- f0, the frequency of that sinusoid (the >>> "negative frequency" spike will be at N-f0). in the F.T., it's a pair >>> dirac impulses at +/- f0. then when you multiply by a window in the time >>> domain, that is convolving by the F.T. of the window in the frequency >>> domain. i will call that F.T. of the window, the "window spectrum". a >>> window function is normally a low-pass kinda signal, which means the window >>> spectrum will peak at a frequency of 0. convolving that window spectrum >>> with a dirac spike at f0 simply moves that window spectrum to f0. so it's >>> no longer a spike, but a more rounded peak at f0. i will call that "more >>> rounded peak" the "main lobe" of the window spectrum. and it is what i >>> meant by the "gaussian bump" in the previous response. >>> >>> now most (actually all, to some degree) window spectra have sidelobes >>> and much of what goes on with designing a good window function is to deal >>> with those sidelobe bumps. because the sidelobe of one partial will add to >>> the mainlobe of another partial and possibly skew the apparent peak >>> location and peak height. one of the design goals behind the Hamming >>> window was to beat down the sidelobes a little. a more systematic approach >>> is the Kaiser window which allows you to trade off sidelobe height and >>> mainlobe width. you would like *both* a skinny mainlobe and small >>> sidelobes, but you can't get both without increasing the window length "L". >>> >>> another property that *some* windows have that are of
Re: [music-dsp] tracking drum partials
That would also be my first choice. It might also be worth looking at modern algorithms in that family of methods. A lot of effort has gone into designing exponentially damped sine methods for voice compression and transmission. They will be more robust to noise than Prony's method. Some methods can even handle arbitrarily coloured noise, not just white. Some methods also deal with time-varying damped sinusoids, which would be interesting if your drums can change their resonant modes over time, as happens with the tabla, timpani and others. Best, Ian On Sun, Jul 30, 2017 at 12:14 PM, Corey K <corey...@gmail.com> wrote: > You might want to look into a parametric method of estimating the partials > as well, e.g., Prony's method, which could give you much higher resolution > than the FFT. > > Best, > > Corey Kereliuk > www.reverberate.ca > > > On Jul 28, 2017 12:47 PM, "Thomas Rehaag" <develo...@netcologne.de> wrote: > > see below. > > >> ------------ Original Message ---- >> Subject: Re: [music-dsp] tracking drum partials >> From: "Thomas Rehaag" <develo...@netcologne.de> >> Date: Thu, July 27, 2017 4:02 pm >> To: music-dsp@music.columbia.edu >> >> -- >> >> > >> > @Robert: >> > I didn't quite get "for analysis, i would recommend Gaussian windows >> > because each partial will have it's own gaussian bump in the frequency >> > domain ..." >> > Looks like you wouldn't just pick up the peaks like I do. >> > >> >> well, i *would* sorta, but it's not always as simple as that. >> >> ... >> >> >> > Next the highest peaks are taken from every FFT and then tracks in time >> > are built. >> > >> > And it looks like I've just found the simple key for better results >> > after putting the whole stuff aside for 3 weeks now. >> > It's just to use samples from drums that have been hit softly. >> > Else every bin of the first FFTs will be crossed by 2 or 3 sweeps which >> > leads to lots of artifacts. >> >> are you using MATLAB/Octave? you might need to think about fftshift() . >> >> suppose you have a sinusoid that goes on forever and you use a **very** >> long FFT and transform it. if you can imagine that very long FFT as >> approximating the Fourier Transform, you will get better than a "peak", you >> will get a *spike* and +/- f0, the frequency of that sinusoid (the >> "negative frequency" spike will be at N-f0). in the F.T., it's a pair >> dirac impulses at +/- f0. then when you multiply by a window in the time >> domain, that is convolving by the F.T. of the window in the frequency >> domain. i will call that F.T. of the window, the "window spectrum". a >> window function is normally a low-pass kinda signal, which means the window >> spectrum will peak at a frequency of 0. convolving that window spectrum >> with a dirac spike at f0 simply moves that window spectrum to f0. so it's >> no longer a spike, but a more rounded peak at f0. i will call that "more >> rounded peak" the "main lobe" of the window spectrum. and it is what i >> meant by the "gaussian bump" in the previous response. >> >> now most (actually all, to some degree) window spectra have sidelobes and >> much of what goes on with designing a good window function is to deal with >> those sidelobe bumps. because the sidelobe of one partial will add to the >> mainlobe of another partial and possibly skew the apparent peak location >> and peak height. one of the design goals behind the Hamming window was to >> beat down the sidelobes a little. a more systematic approach is the Kaiser >> window which allows you to trade off sidelobe height and mainlobe width. >> you would like *both* a skinny mainlobe and small sidelobes, but you can't >> get both without increasing the window length "L". >> >> another property that *some* windows have that are of interest to the >> music-dsp crowd is that of being (or not) complementary. that is adjacent >> windows add to 1. this is important in **synthesis** (say in the phase >> vocoder), but is not important in **analysis**. for example, the Kaiser >> window is not complementary, but the Hann window is. so, if you don't need >> complementary, then you might wanna choose a window with good sidelobe >> behavior. >> >> the reason i suggested Gaussian over Kaiser was just sorta knee-jerk. >> p
Re: [music-dsp] tracking drum partials
You might want to look into a parametric method of estimating the partials as well, e.g., Prony's method, which could give you much higher resolution than the FFT. Best, Corey Kereliuk www.reverberate.ca On Jul 28, 2017 12:47 PM, "Thomas Rehaag" <develo...@netcologne.de> wrote: see below. > Original Message -------- > Subject: Re: [music-dsp] tracking drum partials > From: "Thomas Rehaag" <develo...@netcologne.de> > Date: Thu, July 27, 2017 4:02 pm > To: music-dsp@music.columbia.edu > -- > > > > > @Robert: > > I didn't quite get "for analysis, i would recommend Gaussian windows > > because each partial will have it's own gaussian bump in the frequency > > domain ..." > > Looks like you wouldn't just pick up the peaks like I do. > > > > well, i *would* sorta, but it's not always as simple as that. > > ... > > > > Next the highest peaks are taken from every FFT and then tracks in time > > are built. > > > > And it looks like I've just found the simple key for better results > > after putting the whole stuff aside for 3 weeks now. > > It's just to use samples from drums that have been hit softly. > > Else every bin of the first FFTs will be crossed by 2 or 3 sweeps which > > leads to lots of artifacts. > > are you using MATLAB/Octave? you might need to think about fftshift() . > > suppose you have a sinusoid that goes on forever and you use a **very** > long FFT and transform it. if you can imagine that very long FFT as > approximating the Fourier Transform, you will get better than a "peak", you > will get a *spike* and +/- f0, the frequency of that sinusoid (the > "negative frequency" spike will be at N-f0). in the F.T., it's a pair > dirac impulses at +/- f0. then when you multiply by a window in the time > domain, that is convolving by the F.T. of the window in the frequency > domain. i will call that F.T. of the window, the "window spectrum". a > window function is normally a low-pass kinda signal, which means the window > spectrum will peak at a frequency of 0. convolving that window spectrum > with a dirac spike at f0 simply moves that window spectrum to f0. so it's > no longer a spike, but a more rounded peak at f0. i will call that "more > rounded peak" the "main lobe" of the window spectrum. and it is what i > meant by the "gaussian bump" in the previous response. > > now most (actually all, to some degree) window spectra have sidelobes and > much of what goes on with designing a good window function is to deal with > those sidelobe bumps. because the sidelobe of one partial will add to the > mainlobe of another partial and possibly skew the apparent peak location > and peak height. one of the design goals behind the Hamming window was to > beat down the sidelobes a little. a more systematic approach is the Kaiser > window which allows you to trade off sidelobe height and mainlobe width. > you would like *both* a skinny mainlobe and small sidelobes, but you can't > get both without increasing the window length "L". > > another property that *some* windows have that are of interest to the > music-dsp crowd is that of being (or not) complementary. that is adjacent > windows add to 1. this is important in **synthesis** (say in the phase > vocoder), but is not important in **analysis**. for example, the Kaiser > window is not complementary, but the Hann window is. so, if you don't need > complementary, then you might wanna choose a window with good sidelobe > behavior. > > the reason i suggested Gaussian over Kaiser was just sorta knee-jerk. > perhaps Kaiser would be better, but one good thing about the Gaussian is > that its F.T. is also a Gaussian (and there are other cool properties > related to chirp functions). a theoretical Gaussian window has no > sidelobes. so, if you let your Gaussian window get extremely close to zero > before it is truncated, then it's pretty close to a theoretical Gaussian > and you need not worry about sidelobes and the behavior of the window > spectrum is also nearly perfectly Gaussian and you can sometimes take > advantage of that. like in interpolating around an apparent peak (at an > integer FFT bin) to get the precise peak location. > > now you probably do not need to get this anal-retentive about it, but if > you want to, you can look at this: > https://www.researchgate.net/publication/3927319_Intraframe_ > time-scaling_of_nonstationary_sinusoids_within_the_phase_vocoder > and i might have some old MATLAB code to run for it, if
Re: [music-dsp] tracking drum partials
see below. Original Message Subject: Re: [music-dsp] tracking drum partials From: "Thomas Rehaag" <develo...@netcologne.de> Date: Thu, July 27, 2017 4:02 pm To: music-dsp@music.columbia.edu -- > > @Robert: > I didn't quite get "for analysis, i would recommend Gaussian windows > because each partial will have it's own gaussian bump in the frequency > domain ..." > Looks like you wouldn't just pick up the peaks like I do. > well, i *would* sorta, but it's not always as simple as that. ... > Next the highest peaks are taken from every FFT and then tracks in time > are built. > > And it looks like I've just found the simple key for better results > after putting the whole stuff aside for 3 weeks now. > It's just to use samples from drums that have been hit softly. > Else every bin of the first FFTs will be crossed by 2 or 3 sweeps which > leads to lots of artifacts. are you using MATLAB/Octave? you might need to think about fftshift() . suppose you have a sinusoid that goes on forever and you use a **very** long FFT and transform it. if you can imagine that very long FFT as approximating the Fourier Transform, you will get better than a "peak", you will get a *spike* and +/- f0, the frequency of that sinusoid (the "negative frequency" spike will be at N-f0). in the F.T., it's a pair dirac impulses at +/- f0. then when you multiply by a window in the time domain, that is convolving by the F.T. of the window in the frequency domain. i will call that F.T. of the window, the "window spectrum". a window function is normally a low-pass kinda signal, which means the window spectrum will peak at a frequency of 0. convolving that window spectrum with a dirac spike at f0 simply moves that window spectrum to f0. so it's no longer a spike, but a more rounded peak at f0. i will call that "more rounded peak" the "main lobe" of the window spectrum. and it is what i meant by the "gaussian bump" in the previous response. now most (actually all, to some degree) window spectra have sidelobes and much of what goes on with designing a good window function is to deal with those sidelobe bumps. because the sidelobe of one partial will add to the mainlobe of another partial and possibly skew the apparent peak location and peak height. one of the design goals behind the Hamming window was to beat down the sidelobes a little. a more systematic approach is the Kaiser window which allows you to trade off sidelobe height and mainlobe width. you would like *both* a skinny mainlobe and small sidelobes, but you can't get both without increasing the window length "L". another property that *some* windows have that are of interest to the music-dsp crowd is that of being (or not) complementary. that is adjacent windows add to 1. this is important in **synthesis** (say in the phase vocoder), but is not important in **analysis**. for example, the Kaiser window is not complementary, but the Hann window is. so, if you don't need complementary, then you might wanna choose a window with good sidelobe behavior. the reason i suggested Gaussian over Kaiser was just sorta knee-jerk. perhaps Kaiser would be better, but one good thing about the Gaussian is that its F.T. is also a Gaussian (and there are other cool properties related to chirp functions). a theoretical Gaussian window has no sidelobes. so, if you let your Gaussian window get extremely close to zero before it is truncated, then it's pretty close to a theoretical Gaussian and you need not worry about sidelobes and the behavior of the window spectrum is also nearly perfectly Gaussian and you can sometimes take advantage of that. like in interpolating around an apparent peak (at an integer FFT bin) to get the precise peak location. now you probably do not need to get this anal-retentive about it, but if you want to, you can look at this: https://www.researchgate.net/publication/3927319_Intraframe_time-scaling_of_nonstationary_sinusoids_within_the_phase_vocoder and i might have some old MATLAB code to run for it, if you want it (or anyone else), lemme know. big thanks for the elaborate explanation! Looks like you've turned my head into the right direction. Had a look at the spectrum of my window: a 4096 Hann win. in the middle of 64k samples. A big sidelobe party! A 64k gaussian window that just sets priority to an area of ~4096 samples will of course fix that. Btw.: no Matlab here. C++ only. Best Regards, Thomas ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] tracking drum partials
Original Message Subject: Re: [music-dsp] tracking drum partials From: "Thomas Rehaag" <develo...@netcologne.de> Date: Thu, July 27, 2017 4:02 pm To: music-dsp@music.columbia.edu -- > > @Robert: > I didn't quite get "for analysis, i would recommend Gaussian windows > because each partial will have it's own gaussian bump in the frequency > domain ..." > Looks like you wouldn't just pick up the peaks like I do. > � well, i *would* sorta, but it's not always as simple as that. ... > Next the highest peaks are taken from every FFT and then tracks in time > are built. > > And it looks like I've just found the simple key for better results > after putting the whole stuff aside for 3 weeks now. > It's just to use samples from drums that have been hit softly. > Else every bin of the first FFTs will be crossed by 2 or 3 sweeps which > leads to lots of artifacts. � are you using MATLAB/Octave? �you might need to think about �fftshift() . � suppose you have a sinusoid that goes on forever and you use a **very** long FFT and transform it. �if you can imagine that very long FFT as approximating the Fourier Transform, you will get better than a "peak", you will get a *spike* and +/- f0, the frequency of that sinusoid (the "negative frequency" spike will be at N-f0). �in the F.T., it's a pair dirac impulses at +/- f0. �then when you multiply by a window in the time domain, that is convolving by the F.T. of the window in the frequency domain. �i will call that F.T. of the window, the "window spectrum". �a window function is normally a low-pass kinda signal, which means the window spectrum will peak at a frequency of 0. � convolving that window spectrum with a dirac spike at f0 simply moves that window spectrum to f0. �so it's no longer a spike, but a more rounded peak at f0. �i will call that "more rounded peak" the "main lobe" of the window spectrum. �and it is what i meant by the "gaussian bump" in the previous response. now most (actually all, to some degree) window spectra have sidelobes and much of what goes on with designing a good window function is to deal with those sidelobe bumps. �because the sidelobe of one partial will add to the mainlobe of another partial and possibly skew the apparent peak location and peak height. �one of the design goals behind the Hamming window was to beat down the sidelobes a little. �a more systematic approach is the Kaiser window which allows you to trade off sidelobe height and mainlobe width. �you would like *both* a skinny mainlobe and small sidelobes, but you can't get both without increasing the window length "L". another property that *some* windows have that are of interest to the music-dsp crowd is that of being (or not) complementary. �that is adjacent windows add to 1. �this is important in **synthesis** (say in the phase vocoder), but is not important in **analysis**. �for example, the Kaiser window is not complementary, but the Hann window is. �so, if you don't need complementary, then you might wanna choose a window with good sidelobe behavior. the reason i suggested Gaussian over Kaiser was just sorta knee-jerk. �perhaps Kaiser would be better, but one good thing about the Gaussian is that its F.T. is also a Gaussian (and there are other cool properties related to chirp functions). �a theoretical Gaussian window has no sidelobes. �so, if you let your Gaussian window get extremely close to zero before it is truncated, then it's pretty close to a theoretical Gaussian and you need not worry about sidelobes and the behavior of the window spectrum is also nearly perfectly Gaussian and you can sometimes take advantage of that. �like in interpolating around an apparent peak (at an integer FFT bin) to get the precise peak location. now you probably do not need to get this anal-retentive about it, but if you want to, you can look at this: https://www.researchgate.net/publication/3927319_Intraframe_time-scaling_of_nonstationary_sinusoids_within_the_phase_vocoder� and i might have some old MATLAB code to run for it, if you want it (or anyone else), lemme know. � -- r b-j � � � � � � � � �r...@audioimagination.com "Imagination is more important than knowledge." ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] tracking drum partials
https://ccrma.stanford.edu/~scottl/thesis.html Esteban On 7/27/2017 4:02 PM, Thomas Rehaag wrote: @Esteban: Have you got a link to a (Levine and Smith, 98) PDF? Found the other one and it looks promising after a short glimpse. -- Esteban Maestre Computational Acoustic Modeling Lab Department of Music Research, McGill University http://ccrma.stanford.edu/~esteban ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] tracking drum partials
Thomas, you could try https://github.com/mangledjambon/drumbooth to separate sinusoidal and impulse-like parts of sounds, and then do your additive analysis on the sinusoidal part only. The deconstruction is based on Derry FitzGerald HARMONIC/PERCUSSIVE SEPARATION USING MEDIAN FILTERING, Proc. of the 13th Int. Conference on Digital Audio Effects (DAFx-10), Graz, Austria , September 6-10, 2010, http://dafx10.iem.at/papers/DerryFitzGerald_DAFx10_P15.pdf . -olli On Thu, Jul 27, 2017 at 3:08 AM, robert bristow-johnson < r...@audioimagination.com> wrote: > > > > > Thomas, are you recording single isolated drum hits that you analyze? or > are you trying to lift this partial information from a drum track with many > hits? > > if the latter, you'll need to do a transient detection which should be > pretty easy with monophonic drum hits. if the former, then you just need > to trim off the silence preceding the onset of the hit. and the > Levine/Smith model is good, but you can probably do it most easily on > isolated drum hits even without much reference. > > then you want a window (or a half-window, like the latter half of a Hann > window) to capture the attack transient and window down to zero at the > "steady-state". if there are no snare wires or beads, then i don't think > there should be much of a noise component after the initial transient that > you window off. so what is left after the transient should be a collection > of decaying sinusoidal partials > > since it's a drum and not a string or horn, the partials are not likely > harmonic. so then you need to use well-overlapped windowed frames and FFT > it. for analysis, the windows need not be a Hann or Hamming or some > complementary window. for analysis, i would recommend Gaussian windows > because each partial will have it's own gaussian bump in the frequency > domain and there should be very little sidelobe behavior between partials. > the frequency and amplitude of the partial should be the horizontal > location and height of the interpolated peak of each gaussian bump in the > frequency domain. remember the phase for a particular partial of a frame > should be the phase of the same partial in the previous frame plus the > (angular) frequency times the elapsed time between frames. that should > help confirm tracking of the partial to make sure you're connecting each > partial to it's counterpart in the previous frame. if you're careful, the > envelopes should be smooth and mostly monotonically decreasing in amplitude. > > then synthesize with basic sinusoidal additive synthesis, adding to the > windowed attack. > > good luck. > > r b-j > > > > > Sinusoidal-only modeling could be limiting for some of the intrinsic > > features of percussive sounds. > > A possibility would be to encode partials + noise (Serra and Smith, 89) > > or partials + noise + transients (Levine and Smith, 98). > > > > > > > > On 7/26/2017 4:37 PM, Thomas Rehaag wrote: > >> > >> can anybody tell me how to track drum partials? Is it even possible? > >> What I'd like to have are the frequency & amplitude envelopes of the > >> partials so that I can rebuild the drum sounds with additive synthesis. > >> > >> I've tried it with heavily overlapping FFTs and then building tracks > >> from the peaks. > >> Feeding the results into the synthesis (~60 generators) brought > >> halfway acceptable sounds. Of course after playing with FFT- and > >> overlapping step sizes for a while. > >> > >> But those envelopes were strange and it was very frustrating to see > >> the results when I analyzed a synthesized sound containing some simple > >> sine sweeps this way. > >> Got a good result for the loudest sweep. But the rest was scattered in > >> short signals with strange frequencies. > >> > >> Large FFTs have got the resolution to separate the partials but a bad > >> resolution in time so you don't even see the higher partials which are > >> gone within a short part of the buffer. > >> With small FFTs every bin is crowded with some partials. And every > >> kind of mask adds the more artifacts the smaller the FFT is. > >> > >> Also tried BP filter banks. Even worse! > >> It's always resolution in time and frequency fighting each other too > >> much for this subject. > >> > > > -- > > > > > r b-j r...@audioimagination.com > > > > > "Imagination is more important than knowledge." > > ___ > dupswapdrop: music-dsp mailing list > music-dsp@music.columbia.edu > https://lists.columbia.edu/mailman/listinfo/music-dsp > ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] tracking drum partials
� � Thomas, are you recording single isolated drum hits that you analyze? �or are you trying to lift this partial information from a drum track with many hits? if the latter, you'll need to do a transient detection which should be pretty easy with monophonic drum hits. �if the former, then you just need to trim off the silence preceding the onset of the hit. �and the Levine/Smith model is good, but you can probably do it most easily on isolated drum hits even without much reference. then you want a window (or a half-window, like the latter half of a Hann window) to capture the attack transient and window down to zero at the "steady-state". �if there are no snare wires or beads, then i don't think there should be much of a noise component after the initial transient that you window off. �so what is left after the transient should be a collection of decaying sinusoidal partials since it's a drum and not a string or horn, the partials are not likely harmonic. �so then you need to use well-overlapped windowed frames and FFT it. �for analysis, the windows need not be a Hann or Hamming or some complementary window. �for analysis, i would recommend Gaussian windows because each partial will have it's own gaussian bump in the frequency domain and there should be very little sidelobe behavior between partials. �the frequency and amplitude of the partial should be the horizontal location and height of the interpolated peak of each gaussian bump in the frequency domain. �remember the phase for a particular partial of a frame should be the phase of the same partial in the previous frame plus the (angular) frequency times the elapsed time between frames. �that should help confirm tracking of the partial to make sure you're connecting each partial to it's counterpart in the previous frame. �if you're careful, the envelopes should be smooth and mostly monotonically decreasing in amplitude. then synthesize with basic sinusoidal additive synthesis, adding to the windowed attack. good luck. r b-j > > Sinusoidal-only modeling could be limiting for some of the intrinsic > features of percussive sounds. > A possibility would be to encode partials + noise (Serra and Smith, 89) > or partials + noise + transients (Levine and Smith, 98). > > > > On 7/26/2017 4:37 PM, Thomas Rehaag wrote: >> >> can anybody tell me how to track drum partials? Is it even possible? >> What I'd like to have are the frequency & amplitude envelopes of the >> partials so that I can rebuild the drum sounds with additive synthesis. >> >> I've tried it with heavily overlapping FFTs and then building tracks >> from the peaks. >> Feeding the results into the synthesis (~60 generators) brought >> halfway acceptable sounds. Of course after playing with FFT- and >> overlapping step sizes for a while. >> >> But those envelopes were strange and it was very frustrating to see >> the results when I analyzed a synthesized sound containing some simple >> sine sweeps this way. >> Got a good result for the loudest sweep. But the rest was scattered in >> short signals with strange frequencies. >> >> Large FFTs have got the resolution to separate the partials but a bad >> resolution in time so you don't even see the higher partials which are >> gone within a short part of the buffer. >> With small FFTs every bin is crowded with some partials. And every >> kind of mask adds the more artifacts the smaller the FFT is. >> >> Also tried BP filter banks. Even worse! >> It's always resolution in time and frequency fighting each other too >> much for this subject. >> -- � r b-j � � � � � � � � �r...@audioimagination.com � "Imagination is more important than knowledge." ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] tracking drum partials
Hi Thomas, Sinusoidal-only modeling could be limiting for some of the intrinsic features of percussive sounds. A possibility would be to encode partials + noise (Serra and Smith, 89) or partials + noise + transients (Levine and Smith, 98). Cheers, Esteban On 7/26/2017 4:37 PM, Thomas Rehaag wrote: Dear DSP Experts, can anybody tell me how to track drum partials? Is it even possible? What I'd like to have are the frequency & amplitude envelopes of the partials so that I can rebuild the drum sounds with additive synthesis. I've tried it with heavily overlapping FFTs and then building tracks from the peaks. Feeding the results into the synthesis (~60 generators) brought halfway acceptable sounds. Of course after playing with FFT- and overlapping step sizes for a while. But those envelopes were strange and it was very frustrating to see the results when I analyzed a synthesized sound containing some simple sine sweeps this way. Got a good result for the loudest sweep. But the rest was scattered in short signals with strange frequencies. Large FFTs have got the resolution to separate the partials but a bad resolution in time so you don't even see the higher partials which are gone within a short part of the buffer. With small FFTs every bin is crowded with some partials. And every kind of mask adds the more artifacts the smaller the FFT is. Also tried BP filter banks. Even worse! It's always resolution in time and frequency fighting each other too much for this subject. Any solution for this? Best Regards, Thomas ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp -- Esteban Maestre Computational Acoustic Modeling Lab Department of Music Research, McGill University http://ccrma.stanford.edu/~esteban ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp