r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[Sound] discussion about sound and audio implementation in REBOL

Rebolek
20-Apr-2009
[210x2]
nice
I should have a drumsynth for R3 somewhere, I'll try to find it.
ICarii
20-Apr-2009
[212x2]
heh :)
wait ... for R3? can that do sound now?
Rebolek
20-Apr-2009
[214]
No, just save the sound as WAV or AIFF
ICarii
20-Apr-2009
[215]
ahh ok
Rebolek
20-Apr-2009
[216]
it uses vector! for storing sound data
ICarii
20-Apr-2009
[217]
i thought vector was broken? - ive been avoiding it since i heard 
that
Rebolek
20-Apr-2009
[218]
Well vector has its limitations but if you try hard enough, it's 
usable :)
ICarii
20-Apr-2009
[219]
noticed an Endian bug in bitrates of 16+ when saving to wav files 
- will fix this in next release.
ICarii
21-Apr-2009
[220]
ok - im trying to calc the optimal intersection point where 3 different 
frequency sine waves create the highest complex wave -
w1: freq 440.0Hz  w2: freq 530.0Hz w3: freq 720.0Hz
i was using: sine (90 * w2 / w3) + sine (90 * w1 / w3) + 1.0

this was under the assumption that the greatest cumulative distance 
from 0 would be at the 90degree mark from the highest freq wave - 
unfortunately this is not the case :(

does anyone have a nice (or not too nasty) formula that will find 
the optimum value? - i will post this in maths too
Anton
21-Apr-2009
[221]
Do you mean you are trying to find the repeating period of the three 
sine waves, once they are combined ?
I think that means finding the lowest common denominator.
ICarii
21-Apr-2009
[222]
i am trying to find the maximum amplitude of the complex wave
Anton
21-Apr-2009
[223]
Ok, different problem than I thought..
ICarii
21-Apr-2009
[224]
sorry - wasnt very clear in my original post
Anton
21-Apr-2009
[225]
So you want to calculate it in advance.
ICarii
21-Apr-2009
[226]
yes - it is a huge time save when i go to do loudness balancing
Pekr
21-Apr-2009
[227]
just a note to Sound. Some time ago, when Cyphre tried to do media 
player in REBOL for us, he complained about some bugs in smooth playback. 
Carl released C code for the sound system in REBOL - this is some 
2 - 3 pages of C code (mostly wrappers) IIRC? Maybe we could fix 
few things for next R2 release?
ICarii
21-Apr-2009
[228]
sounds good - now all we need is a coding sound engineer ;)
Geomol
21-Apr-2009
[229]
The max amplitude, you find, depends on how long you play the sound, 
doesn't it? If you play it long enough, you might get max for each 
of the sin added together, which is 3.
Anton
21-Apr-2009
[230]
If your 3 waves happen to peak all at the same time, then the maximum 
amplitude is simply the addition of all three amplitudes. If not, 
then the max amplitude is some lesser value. Calculating this seems 
complicated to me..
ICarii
21-Apr-2009
[231x2]
i cheated and used the number of waves
its not strictly correct though depending on the start phase etc
Anton
21-Apr-2009
[233]
As you add together a larger number of waves, you will find the maximum 
amplitude is typically much less than the total of all the wave amplitudes. 
It might be easier to generate all the samples of the complex wave 
(using decimal!/float), keeping track of the maximum value, then 
scaling it to 8 or 16 bit integers afterwards. It would be nice to 
have a precise mathematical way of calculating the maximum peak values 
in advance, though...
ICarii
21-Apr-2009
[234]
yes - that would be nice.  Ill have a hunt about see what i can find. 
 I know a couple of sound engineers who might know
Geomol
21-Apr-2009
[235]
It makes me think of something called Fourier Transformations:
http://en.wikipedia.org/wiki/Fourier_transform
ICarii
21-Apr-2009
[236]
yes - they are good for decomposing waves.  very math/processor intensive 
though
Steeve
21-Apr-2009
[237]
hey guys,  I have somewhere an FFT implementation in Rebol, interested 
?
Anton
21-Apr-2009
[238]
Steeve, what did you use it for? Just experimenting?
Steeve
21-Apr-2009
[239]
it shows frenquencies for a sample, but i don't remember how i did 
that, i can post the demo
ICarii
21-Apr-2009
[240]
would be interesting to see one :)  My next project is to decompose 
complex waves into sheet music :)
Steeve
21-Apr-2009
[241]
FFT = Fast fourier transform
ICarii
21-Apr-2009
[242]
of course - thats about a month away at the rate of my current project 
:)
Anton
21-Apr-2009
[243]
Hoho!
Steeve
21-Apr-2009
[244x3]
ok i upload the old demo
*** UPLOAD at http://sites.google.com/site/rebolish/Home
(see FFT.R at the end of the page)
you have to load a wav sample
Anton
21-Apr-2009
[247x2]
Wow - first use of CP (alias of COPY) I ever saw. I override CP to 
be a unixiod file copy function.
long wave file .... crunch crunch...
Steeve
21-Apr-2009
[249]
it's an old script Anton
Anton
21-Apr-2009
[250]
I see a little graph :)
Steeve
21-Apr-2009
[251]
yep, it show a graph with some frequencies, don't remember why...
Anton
21-Apr-2009
[252x2]
:)
I've got an old script which uses FMOD library to show a spectrum 
window in rebol while a sound is playing. It's a Windows DLL but 
it works in wine.

 do-thru http://anton.wildit.net.au/rebol/audio/fmod/play-rebol-sound.r
Rebolek
21-Apr-2009
[254]
Icarii, calculate RMS of the sound.
Oldes
21-Apr-2009
[255]
Anton:
** Script Error: cv has no value
** Where: do-parse
** Near: cv mold type-converter/c-to-rebol-map
Rebolek
21-Apr-2009
[256]
Steeve, thanks for the FFT, I'm really interested. I had only DFT 
running for my modular synth. And maybe iFFT also, I don't remember, 
I hope the sources are still somewhere in deeps of the Internets.
Steeve
21-Apr-2009
[257]
Anton, you asked why i had an FFT implementation...

Because, i made some tests to extract frequencies from wav sounds, 
to be able to play sounds on an old 8bit sound chip.
And also, i wanted to use FFT to make an image compressor.
Geez, so much projects vanished...
Anton
21-Apr-2009
[258]
Oldes, thanks. Do this

 load-thru/update http://anton.wildit.net.au/rebol/os/make-external-library-interface.r
then try again.
ICarii
22-Apr-2009
[259]
new version of synth almost ready - added an oscilloscope so i can 
see where my complex waves are not behaving .. lol