If you have a problem or need to report a bug please email : support@dsprobotics.com
There are 3 sections to this support area:
DOWNLOADS: access to product manuals, support files and drivers
HELP & INFORMATION: tutorials and example files for learning or finding pre-made modules for your projects
USER FORUMS: meet with other users and exchange ideas, you can also get help and assistance here
NEW REGISTRATIONS - please contact us if you wish to register on the forum
Users are reminded of the forum rules they sign up to which prohibits any activity that violates any laws including posting material covered by copyright
Ruby Complex FFT CPU speed
4 posts
• Page 1 of 1
Ruby Complex FFT CPU speed
Hi!
The last days i made some tests about doing FFTs and iFFTs in ruby.
I've tested those FFT codes in ruby:
https://github.com/CompScienceClub/ruby-fft
https://rosettacode.org/wiki/Fast_Fouri ... sform#Ruby
http://www.gregfjohnson.com/fftruby/
All seem pretty to be the same - the fist is a little faster because it creates a storage-map
Both are also reversible - so calculating an iFFT brings up most the original signal.
BUT:
If i run the for example for rate 44100 as a buffer of 512 signals (so i need to do 44100/512 FFTs) results in taking about 3-4 seconds for 1 second of a signal (mono).
So i found this here (Something that i've seen impossible in SynthMaker times):
viewtopic.php?f=4&t=1510&start=0
And this thing is pretty fast
So just a question to the ruby-freaks here if there is a better code for ruby?
The goal is to read a wav-file in ruby, do some fft operations and write it to another wav-file. This already worked but with speeds that are quite sad.
(As i multithreaded the script it is just for testing proposes loaded in FlowStone)
kind regards, chackl
The last days i made some tests about doing FFTs and iFFTs in ruby.
I've tested those FFT codes in ruby:
https://github.com/CompScienceClub/ruby-fft
https://rosettacode.org/wiki/Fast_Fouri ... sform#Ruby
http://www.gregfjohnson.com/fftruby/
All seem pretty to be the same - the fist is a little faster because it creates a storage-map
Both are also reversible - so calculating an iFFT brings up most the original signal.
BUT:
If i run the for example for rate 44100 as a buffer of 512 signals (so i need to do 44100/512 FFTs) results in taking about 3-4 seconds for 1 second of a signal (mono).
So i found this here (Something that i've seen impossible in SynthMaker times):
viewtopic.php?f=4&t=1510&start=0
And this thing is pretty fast
So just a question to the ruby-freaks here if there is a better code for ruby?
The goal is to read a wav-file in ruby, do some fft operations and write it to another wav-file. This already worked but with speeds that are quite sad.
(As i multithreaded the script it is just for testing proposes loaded in FlowStone)
kind regards, chackl
100% accuracy is the guarantee to your success. The value alters if you combine it with musical creativity.
-
chackl - Posts: 233
- Joined: Tue Aug 17, 2010 8:46 pm
- Location: Austria / Salzburg
Re: Ruby Complex FFT CPU speed
This may be related to your project
viewtopic.php?f=2&t=3972&p=22927&hilit=Clone#p22958
Fft of an entire track, performance is acceptable.
viewtopic.php?f=2&t=3972&p=22927&hilit=Clone#p22958
Fft of an entire track, performance is acceptable.
-
martinvicanek - Posts: 1328
- Joined: Sat Jun 22, 2013 8:28 pm
Re: Ruby Complex FFT CPU speed
I doubt that the Ruby could be made to run much faster; it's just inherent in Ruby being an interpreted language that it can't process such huge chunks of data at "real-time" like speeds. I could be done using a Ruby C-extension (i.e. C++ code using the Ruby API to create a new Ruby "primitive"), but if you were going to do that, the FS DLL component might be the easier route.
The main issue with the ASM FFT that you linked to is that it's designed to work in real-time from a stream rather than off-line. I think that the code could possibly be adapted to work off-line by using Ruby Frames created from your file reader (the code essentially makes its own equivalent of Frames internally) - but that might need some help from MyCo, as he upgraded my original FFT ASM code in some very clever ways that I'm not sure I quite understand! Unless MV's solution already works for what you need, of course.
The main issue with the ASM FFT that you linked to is that it's designed to work in real-time from a stream rather than off-line. I think that the code could possibly be adapted to work off-line by using Ruby Frames created from your file reader (the code essentially makes its own equivalent of Frames internally) - but that might need some help from MyCo, as he upgraded my original FFT ASM code in some very clever ways that I'm not sure I quite understand! Unless MV's solution already works for what you need, of course.
All schematics/modules I post are free for all to use - but a credit is always polite!
Don't stagnate, mutate to create!
Don't stagnate, mutate to create!
-
trogluddite - Posts: 1730
- Joined: Fri Oct 22, 2010 12:46 am
- Location: Yorkshire, UK
Re: Ruby Complex FFT CPU speed
Hi!
Thanks.
In the link there is now this code:
https://blog.mro.name/2011/04/simple-ru ... transform/
I just implimented it at it realy runs much faster than the rosetta-code FFT.
The problem is that i realy do not understand asm in any case if i have no debugger that is able to do step by step.
This code fits my needs for the moment.
Thanks.
In the link there is now this code:
https://blog.mro.name/2011/04/simple-ru ... transform/
I just implimented it at it realy runs much faster than the rosetta-code FFT.
The problem is that i realy do not understand asm in any case if i have no debugger that is able to do step by step.
This code fits my needs for the moment.
100% accuracy is the guarantee to your success. The value alters if you combine it with musical creativity.
-
chackl - Posts: 233
- Joined: Tue Aug 17, 2010 8:46 pm
- Location: Austria / Salzburg
4 posts
• Page 1 of 1
Who is online
Users browsing this forum: No registered users and 40 guests