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

amacleod
15-Mar-2009
[155x2]
i've tried several .wav recording/converting software...no change.
Tried changing the sample rates, channels etc...no difference. 

I know you should not use compression but I'm pretty sure I'm not.
Gregg
16-Mar-2009
[157]
How are you creating them Alan, and what specs? Try generic 44.1Khz 
stereo.
amacleod
16-Mar-2009
[158]
I'm using windows sound recorder on XP (Ofcourse, they removed .wav 
format in VIsta)
I just used "cd" quaity which is 44.1khz stereo
Converted to 8bit also....
same problem.
Maxim
16-Mar-2009
[159]
what do you mean they removed .wav format?
amacleod
16-Mar-2009
[160x2]
You can no longer save in .wav
wma only
Maxim
16-Mar-2009
[162]
oh, for the little mic recorder?
amacleod
16-Mar-2009
[163]
yes
Maxim
16-Mar-2009
[164x2]
such a bunch of idiots.  I removed Vista... after it corrupted itself 
on bootup.
last month... after more than a year of using it.
amacleod
16-Mar-2009
[166]
I read that you could start it from teh command line and get it save 
in .wav but I could not get it to work..


THere are a lot of annyoing things about vista...but I have it on 
my wife's laptop and I'm forced to use it now and again..
Maxim
16-Mar-2009
[167]
did you try using audigy?
amacleod
16-Mar-2009
[168]
no
I'll have a look..
Maxim
16-Mar-2009
[169x2]
its the best freeware multi platform recording/editing software
doesn't even need an install  :-)  and it works the same on mac and 
linux.
amacleod
16-Mar-2009
[171x3]
thanks
I do not see it..keep getting references to  a sound blaster card..
Is there a web site? or an other name?
Maxim
16-Mar-2009
[174]
doh... its audacity... stupid me.
amacleod
16-Mar-2009
[175x4]
got it thanks
Maxim, It works...Thank you very much!
How can you test if the sound port is already open?
Never mind just used an "if error? try [" statement..
Anton
19-Apr-2009
[179]
ICarii, I just quickly tried your synth2.r. It plays the song here 
on Linux, and matches the score. I wonder, though, how you are going 
to scale the program. Rebol's sound port is currently underpowered, 
and Rebol isn't fast at number crunching which is necessary for audio 
work. I don't like the idea of waiting for hours for a full song 
to render.. I would be looking for an audio processing system to 
hook into rebol.
ICarii
19-Apr-2009
[180x2]
im going to port it to R3 tomorrow and rely on Call to play sounds
but yes it is horribly slow.
Anton
19-Apr-2009
[182]
Well, I've been fiddling with Tiny C Compiler - maybe it can eventually 
be used for fast crunching.
ICarii
19-Apr-2009
[183x5]
R3 build-song speed (without optimization) plus write to disk is 
1810ms vs R2 of 2862ms. So even without optimizing in R3 there is 
a large difference in performance.
added an interpolate function for dual channel sound and works fine 
:)  still slow on initial build though :(
interpolate: func [series1 series2 chunksize /local ts1 ts2 c][
	ts1: copy series1
	ts2: copy series2
	c: copy #{}
	forall ts1 [
		insert tail c copy/part ts1 chunksize
		insert tail c copy/part at ts2 index? ts1 chunksize
		take/part ts1 chunksize - 1
	]
	c
]
hmm that works with the take/part in the forall but: 		loop chunksize 
- 1 [next ts1]
may be safer?
ahh.. i should have used forskip .. never used that before
interpolate: func [series1 series2 chunksize /local ts1 ts2 c][
	ts1: copy series1
	ts2: copy series2
	c: copy #{}
	forskip ts1 chunksize [
		insert tail c copy/part ts1 chunksize
		insert tail c copy/part at ts2 index? ts1 chunksize
	]
]
Dockimbel
19-Apr-2009
[188]
Try with :

interpolate: func [series1 series2 chunksize /local ts1 ts2 c][
	ts1: copy series1
	ts2: copy series2
	c: copy #{}
	forskip ts1 chunksize [
		insert/part tail c ts1 chunksize
		insert/part tail c at ts2 index? ts1 chunksize
	]
]


Why do you copy the 2 series? It's not required here, you're not 
modifying them.

You should also pre-allocate the 'c buffer : c: make binary! <max-size>.
ICarii
19-Apr-2009
[189x2]
ahh thx - re copy - that was an artifact from the first iteration 
of the function where i was using take in a loop.
next on the list of todo's is to separate top and bottom notes and 
timings and add in rests.
Dockimbel
20-Apr-2009
[191]
Just tried synth2.r, nice work by the way.
ICarii
20-Apr-2009
[192]
:)  its getting there slowly - i really need to look at ADSR envelopes 
so 16bit samples dont sound so horrid :)
Rebolek
20-Apr-2009
[193x2]
ICarii, have a look at my PM-101 http://www.rebol.org/view-script.r?script=pm-101.r
I use 8-point free envelope there (ADSR can be easily emulated using 
just 3 points), maybe it will be of some use for you
ICarii
20-Apr-2009
[195]
will do :)  ive been looking at using piano waveforms but they require 
too much number crunching for rebol :(
Rebolek
20-Apr-2009
[196]
I was compiling the math functions to C and the result was about 
5-10x faster (not optimalized), but I cannot find that code right 
now.
ICarii
20-Apr-2009
[197]
pm-101 reminds me of an aircraft console ;)   once it stops scaring 
me ill look more closely :)
Rebolek
20-Apr-2009
[198]
hehe :)
ICarii
20-Apr-2009
[199]
i was thinking of prebuilding and saving envelope shapes and modifying 
the tone like a mask
Rebolek
20-Apr-2009
[200x3]
I was also working on tracker-like program (not published). I had 
a simple format for notes there that was similar to sequencers - 
I was using tuple! for timing information, it may be better than 
having two blocks, one for notes and one for timing.
so it looked like 1.1.1.1 C1 0.0.1.0 1.1.2.1 D1 0.0.1.0 etc
I think it was used in my demo pitch.green for Rebol demo contest
ICarii
20-Apr-2009
[203x2]
i intend to fully reproduce sheet music so the format is still a 
little in teh air at the moment
the next version of synth is using a top/bottom stave block with 
separate timings