April 12, 2006
Umm, lots of work on reaper done, lots more to do. Added pitch shifting/timestretch, using SoundTouch, which makes it very nearly done, on a purely feature-based scale, the main other thing needed being MIDI editing.
I went to LA to meet with one of REAPER's biggest evangelists, where it was used in a relatively well known studio:
(to make music which, while I didn't like, I am secretly hoping for huge commercial success, to give REAPER that extra bit of legitimacy. note: the laptop was just being used as a remote display to a beefy dual opteron on the floor. the reason it is there is that while the speakers in the room were great, the studios, for whatever reasons, like having the computers in places you can't hear the speakers. duh.)
When I added SMP support to REAPER I discovered the the Waves plug-ins (at least version 5) have real issue with running separate instances on multiple processors simultaneously. All of the other plug-ins I've tried work great, but when running with Waves on an SMP system, if two instances end up processing at the same time, BOOM, it crashes. I even narrowed it down to what the code looked like (it was a function that seemed to just convert double to float), and sent them an email asking to see if they had any ideas or if they would fix. That was 10 days ago or so, and they haven't responded. I ended up just detecting "Waves" and doing a critical section around that, as a hack. LAME.
Which brings me to my next bitchpoint. People expect support for software they pay for, yet software people pay thousands of dollars for, they get crappy ass support. WTF?
Spent some time debugging problems relating to some systems (some versions of MSVCRT?) enabling floating point exceptions that are supposed to be off by default. So now I turn a lot of them on when debugging, and off on release builds. Ugh.
Have a request in to Mackie to get the real MCU documentation so I can add full support for it, waiting (though it hasnt been THAT long).
Have a request in to Propellerheads for the Rewire SDK. Been a week or two, still waiting.
anyway, now to go see why SoundTouch has to require MSVCP60.dll, assuming it is STL or something. (update: yep, updated in .931, bla bla bla)
Recordings:
brenbidernewtonmayor - 1 -- [11:55]
brenbidernewtonmayor - 2 -- [113:38]
brenbidernewtonmayor - 3 -- [72:21]
4 Comments
I've been busy as of late, moving my office/workshop to a new place here in SF, but as it settles down I think I'll be getting back into the groove more (though in all honesty I do seem to end up programming way more than is probably good for me).
At this point I'm still excited about reaper, though I am also getting a touch burnt out. We're coming up on 4 months of work! Let's see, aside from fixing tons of crap, the real things left for 1.0 are midi editing and event pitch/stretch. mmmm. How long will it take? Another 3 months? MIDI editing is a problem I've only gotten far enough in thinking about to fear it, since a good MIDI editor is going to be a very extensive bit of design...
Before I go, here's an mp3 that I just rendered, that was me piling on as many
effects as possible, to test how great SMP is. What was particularly enjoyable
is that I went to render it to disk (which is still single-threaded), and it
went at 0.7x realtime. Yay, this makes me REALLY love my Athlon64x2.
Recordings:
freeform jam with brenchr
10 Comments
I don't know what I did to deserve it, but somehow I ended up having an awesome
group of friends. Thanks guys for everything. And by everything, I mean the handjobs.
7 Comments
just kidding, it's been long enough. REAPER's been envolving so steadily it amazes me. Gradually mistakes (well, decisions, not really mistakes) I made get massaged out, and replaced by new code that seems to work better. A nice class I wrote that I should have a long time ago is a generic file reader class, that can use win32 overlapped I/O if supported (which seems to be necessary when moving a lot of data from lots of files on disk).. Having that will be useful in the future. But another good time was realizing a good way of doing something like the track reordering, and getting to throw out (comfortably, thank you version control) a bunch of code that was a pain, and replace it with a nice simple bit of code that works much better. anyway.
At my release rate (a version a day or so, I will run out of 0.xx version numbers before 1.0 is really ready. So maybe when I get to 0.9 I will do 0.9.0 and so on. My list of things to do is quite large, but then again I need to realize that 1.0 is just 1.0, and there will always be more to do. But I'm not in a terrible rush, anyway.
...now I'm tempted to write a shoutcast output plug-in for reaper, mmm....
4 Comments
so tired I am. too much running around with my head cut off.
I did some arrangment/editing of this song last night with REAPER (Dave Wiener sent me those amazing vocals to work with). It really worked well. It's exceeding my expectations as far as what it can do. There's still so much to do, though. So so much. I'd say 1.0 in june would be plenty of time, though. if I don't get too tired.
5 Comments
It will be interesting to see Acid 6.0. Before I started writing REAPER I wished Acid did multitrack recording well. But now it's too late, I'm committed to this. It's been 9 weeks. I'm so tired. But happy.
I ordered a real Mackie Control Universal, so I can support it. REAPER works great on my BFC2k in MCU mode, but apparently a real MCU doesn't like it. lame.
Everybody who has been sending in suggestions has been so helpful. It's really a lot like the old Winamp days, except people are REALLY passionate about what they want, which is even better. I just have to sort through it and find the best ways of pleasing myself (that sounds naughty) and others equally.
At any rate, REAPER v1.0 seems so far away now, but the prospect of making
literally HUNDREDS of dollars, ~$20 at a time, seems so exciting. That's a lot of burritos. Why did I say I'd go to 1.0 before going shareware?
2 Comments
In general it works really well, and I'm very impressed with the quality of the $200 BCF. If any other manufacturers want to send me units, it would help too, haha.
I'll probably post 0.45 by monday or so which will have support for surfaces.. and maybe a few other things (depending on how much time I make to do them).. ogg (and maybe lame) encoding is a big one I'm planning on doing soon. Does lame_enc.dll support multiple simultaneous encodes yet? last I checked it did internally, though the bladeenc api didn't support it...
The biggest thing I'm planning now, though, and almost have figured out, is the automation recording, so you can use sliders and/or control surfaces to record envelopes. The code for this will be relatively straightforward, the UI for how to present it in a sensible way is the most difficult, I think. That and I gotta do DX/VST/JS parameter envelopes, too.
Anyway. Brennan and I saw that crazy (in an amazingly good way) 11 string bass guy at Guitar Center last night. I am still totally in awe.
The biggest single thing in it is that I made a nice system that buffers all source material in another thread, so the audio thread doesnt have to wait around for a slow network device or disk, etc (well, it still might have to, but it's a lot less likely). All of the effects and mixing of tracks still run in the audio thread, though that may change eventually, but for now it makes sense (since you may be monitoring an input on those channels, and would want to have the effects applied on there with as little latency as possible). At any rate, playback is now a LOT more reliable, with less little dropouts. It took me a few days of thinking to come up with this compromise, and a few hours to code it, but I'm pretty happy about it, thus far.
The other thing of interest is I made a separate position and playback cursor, so you can see where actions such as splitting will take place (or where you will start playback if you hit play and you were stopped). Makes a lot more sense now.
And there's a bunch of other small things (MIDI peaks now show the approximate notes/durations/etc), VST latency compensation, bla bla bla.
I picked up a $200 Behringer midi/usb control surface, going to add support for it tonight I think. Initially the faders will just map to volume sliders (and be controlled by them), but eventually there will be automation modes, I'm planning (automation will be supported with or without a real surface, that is, mmmm).
So much to do + no deadline = happy justin.
Comment...
Oh yeah my other complaint was that in processing the NINJAM autosongs it ends up using alittle of CPU on my main workstation (which has plenty of CPU to spare), but uses way too much disk bandwidth. So I'm setting up a box just for that processing.
Back to my first paragraph, perhaps it just makes sense to say fuck it. You can't keep information forever. Or if you can, it's not worth bothering. If only we had our 100gb blu-ray recordable discs. if only I can hang on til then, I'll be able to put everything I will have by then on 20 of them or so. times two. plus the online (RAID) version. sigh.
I guess it's not really that much data.. I mean, everything fits within my 1.2tb array. so
maybe I should just get another, and keep them synchronized. and set up rsyncs to backup other
stuff to them. or just keep getting more firewire drives for the seocnd copies. rOn got one
of those usb->IDE cables, that might be a good way to go, and just buy a few 400gb IDE drives..
4 Comments
So I've added basic VST support to REAPER, and in doing that I also added VSTi support, which then required me to add MIDI input support, which is pretty much done (there are some sync issues). So now I'm going to add MIDI file reading/writing, and I suppose MIDI output as well, and that will be hot. I can't wait to merge a lot of this into NINJAM, too, so we can use softsynths (as well as DX plugins and VSTs) directly. I'll do that someday soon.
Other stuff that will be in the next version of REAPER (in the next week or so):
+ moved config files to application data instead of the program directory
+ effect bypass support
+ directx plug-ins use the current samplerate instead of 44khz
+ made it so you can arm/disarm tracks while recording
+ option to create new files when recording every X megabytes
+ a bunch of preferences updates
+ tons more
Yay.
Now I'm going to go cut an EP from a relatively productive new years eve...
Now I must try to fight off a cold or something.
Recordings:
newpoo-without-direction
2 Comments