I'm forwarding this to the Audacity developer & nyquist lists in case 
somebody there has comments.

- Vaughan


Albert Santoni wrote:
> Hi Enr(r)y,
>
> Without actually knowing the Nyquist language, I think what this code  
> is doing is:
> - Downsampling to 1000 Hz (the Nyquist frequency is then 500 Hz, and  
> there's tons of aliasing introduced probably. I think aliasing is the  
> right term to use...?)
> - applying a low-pass filter (so that you just get the bassy beat,  
> probably kills the aliasing caused by the downsampling)
> - If signal > threshold, we've found a peak
>
> I wouldn't be surprised if there was some other stuff going on in this  
> code, but it's not immediately obvious that there is. The algorithm I  
> extracted above would be pretty easy to write in C++ if someone is  
> bored and wants to play around with it. It could be the start of a new  
> BPM detection algorithm even* (that's optimistic though). :)
>
> Thanks,
> Albert
>
> * If someone wants to hack a new algorithm in, look at bpmdetector.cpp  
> and just hack a new BPM detection function in there. You'll see two  
> existing functions in there for doing BPM detection, so you'd just add  
> another.
>
>
>
>
> On 7-Jan-09, at 2:23 AM, [email protected] wrote:
>
>   
>> Hi all, this is enrry.
>>
>> I have seen a nice feature of Audacity software: it's "beat finder",  
>> you can try from analysis tab, it is not perfect and maybe a little  
>> trivial, but looks to work rather well and I think it could be  
>> someway integrated to make Mixxx beat pattern manage to be  
>> synchronized with the first beat of a track.
>>
>> In Audacity user can set threshold parameter and select a part of  
>> audio file to be analyzed; here in Mixxx i think that it would be  
>> enough to analyze the first 10-20 s of the track.
>>
>> Here is the source code of beat finder written in Nyquist language:  
>> do someone know it and would be interested to convert in C++ and  
>> integrate into bpm and pattern algorhitms?
>>
>> ;nyquist plug-in
>> ;version 1
>> ;type analyze
>> ;categories "http://audacityteam.org/namespace#OnsetDetector";
>> ;n! ame "Beat Finder..."
>> ;action "Finding beats..."
>> ;info "Released under terms of the GNU General Public License  
>> version 2"
>>
>> ;control thresval "Threshold Percentage" int "" 65 5 100
>> (setf s1 (if (arrayp s) (snd-add (aref s 0) (aref s 1)) s))
>> (defun signal () (force-srate 1000 (lp (snd-follow (lp s1 50) 0.001  
>> 0.01 0.1 512) 10)))
>> (setq max (peak (signal) NY:ALL))
>> (setq thres (* (/ thresval 100.0) max))
>> (setq s2 (signal))
>> (do ((c 0.0) (l NIL) (p T) (v (snd-fetch s2))) ((not v) l)
>>  (if (and p (> v thres)) (setq l (cons (list c "B") l)))
>>  (setq p (< v thres))
>>  (setq c (+ c 0.001))
>>  (setq v (snd-fetch s2)))
>>
>> ; arch-tag: 2204686b-2dcc-4891-964a-2749ac30661b
>>     
>

------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Mixxx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mixxx-devel

Reply via email to