NINJAM is born (or almost born)
June 10, 2005
June 10, 2005
NINJAM web site is up. We'll be releasing alpha versions for Windows and OS X next week, it looks like. Woot.
3 Comments
NINJAM web site is up. We'll be releasing alpha versions for Windows and OS X next week, it looks like. Woot.
Yay for Apple and the x86 announcement. So I think it's about time to share info about the new project (for a while I was unsure if it was going to even be useful, but after this afternoon's playing with it, I'm completely hooked). It's sort of half multiplayer game, half music production tool: Brennan and I are working on software called Ninjam*, which allows a small group of geographically challenged people to play music together. Because latency is so important in playing music, existing voice conferencing over IP really wouldn't work. So instead, we decided to just make latency bigger, not smaller. Latency in Ninjam is measured in measures, and that's what makes it interesting. When you play, you're playing along with the previous intervals of everybody else, and they're playing along with your previous intervals. If this sounds pretty bizarre, it sort of is, until you get used to it, then it becomes pretty natural. We'll go into the architecture of Ninjam soon, and describe some of the more advanced upcoming features as they get implemented. I suppose this should actually go on the Ninjam web site, but I'm too lazy as of yet. Here is a little jam we had today with people from IRC (it comes together towards the end). * Perhaps it should be NINJAM: Novel Interval-based Network Jamming Architecture for Musicians
So after spending quite a lot of time getting LAME/mpglib tuned for my app, it turns out mpglib doesnt handle having multiple decodes going at once (despite having a context pointer etc). LAME. REALLY. So after looking around for any good solid (<=LGPL) mp3 decoders, and not finding any, I started trying to use Vorbis again. My main problem was with creating a Vorbis encoder taking too long. Well, when I went to get a burrito tonight, I realized that I shouldn't be encoding samples as they come in, but rather just when I get a chance. So with a mild architectural change (that took about 30 minutes), I got it all working nicely. Vorbis is really ideally suited for this app (which you will be seeing shortly), on many levels, and above all the fact that it's free goes a long long way. Now I've been talking shit about APIs some, lately, and I just want to state that while I don't think I'm an expert on making great APIs (god knows Winamp's API is a handfull), I do know a good API when I see one. :) I managed to do a good one for Jesusonic, that allows me to integrate Jesusonic processing with other apps extremely easily (including the new app)-- in making the DirectX plug-in the only challenge was making the DirectX plug-in. Not integrating Jesusonic into it. I'm very tempted to go make a version of LAME that has a very clean and sane encoding and decoding API, as well as tuning the mpglib that comes with it to support multiple decodes, much better frame synchronization (Winamp's got as solid as it did from just a few good tweaks).. it's very tempting, cause I often find myself wanting to support these things. Then again, maybe I should wait until the MP3 patents run out, since I live in the USA... Yay for Vorbis... The other thing to note, is that the feral cat who adopted us rocks. Last night we were watching a movie, and we heard this noise. I went to look into her little doghouse, and it looked like she was shredding the crap out of her bed. I was thinking "wow she must be restless or something", and I went out to survey (and perhaps clean up) the damage (scaring the cat off in the process), only to find that she was just pulling her shedded hair from the bed, cleaning it. IT made us feel bad that we didn't clean it sooner, but all was well once we cleaned the hair off, and ran it through the washer and dryer, to give the kitty back her clean bed. It just really impressed me, that's all. And one final thing, with all of the rumour going around about Apple possibly announcing switching to Intel architecture chips tomorrow, I'd just like to point out the following: Whether or not it makes business sense for them to switch, the actual process of switching won't be that bad. Porting applications from OSX/PPC to OSX/x86 wouldn't be that big of a deal. Getting everybody to use the updated APIs, and gcc for compiling, was the huge step. Apple may even have planned it, for all we know. API changes are a much bigger headache than instruction set/ endian changes. At least from my experience in porting software. Then again, 99.99% of the code I write is endian-nuetral on the first take, so maybe I'm smoking crack (but I doubt it). I'd really like to hear that Apple announced that they were going to use Athlon64s. AMD has really blown me away. And I'm going to order my A64X2 4400+ soon (HELLO, BIOS UPGRADE).
In reverse order. My 2.4ghz Athlon64 will encode 48khz stereo WAV to 192kbps MP3 at about 15x realtime. My 2.8ghz P4 does it at 11.5x realtime (both using LAME). Sweet. That's 130% the speed at 85% the clock rate. Or about 1.5x more shit getting done per cycle. Yay, and dual core A64s come out in a week or two, I can't wait. I spent some time integrating OGG Vorbis support into this new app that Brennan and I are working on, and it is sorely lacking in one respect-- the API for using it. Complete pain in the ass. They need to have a simple encode/decode API, much like LAME (though I have a beef with LAME's API, too, see next paragraph). Instead you have to deal with the gory details of the OGG format (OK so you can use the VorbisFile API, but it has its own complexity issues, especially if you are dealing with streamed content). So then I also did some stuff with LAME, and they need to (at least on the Win32 side) provide a nice clean API as well as the old BladeEnc compatible one. And lame_enc.dll includes mp3 decoding support, yet they don't expose any of it. So instead I have to do a 10 line patch to lame_enc.dll and have a custom dll to get it to work! (I will be sending them the changes for hopeful inclusion shortly)...but once I do it's good times and works. There's a place down the street from here that I go to from time to time for drinks and burgers, and I used to think that their burgers were really good, but now I'm realizing they are only good if you have exactly the right amount of alcohol-- too little, and you realize how overdone they are, or too much which leaves you like I feel now-- bloated, nauseous, and feeling like you want to die. With burps that remind you why. Ugh. Finally, I'm happy to see AOL open source AVS/Milkdrop/NSV/Ultravox. Woot.
So I got a Shuttle ST20G5 (I think) and a 90nm AMD Athlon64 3800+, and let me say this thing rocks. It runs at the same clock speed as my old P4 2.4ghz, and is way way faster, and insanely quieter/cooler (I can hardly hear it). And once the Athlon64X2s come out, I will be able to upgrade to dual core easily. Hot (but not TOO hot). It's been a while since I've seen an Intel CPU that has impressed me this much. Had some pain getting XP to install since I didn't have a floppy drive and my HD is SATA. Got to learn how to add it to an XP CD, which was, err, fun. And had some annoying times getting my printer/fax/scanner to work (the drivers included with XP were hanging the system). After a good 8 hours of fudging I got it all where it needed to be. Now to go grab a couple USB-Serial converters for doing AVR development (since my old box had two serial ports, and this one has none). Bleh, my back hurts. WTF. More to this story later.
Here's a newer incarnation of the mp3 linked to below, with me singing on it. I really need to get voice lessons or something. If only I could make the sound I imagine in my head. But what I really hate is people who say shit like "you shouldn't sing" when I make crap like this. Because if you don't try, how can you ever expect to improve? Anybody who has ever gotten good at something that once they were not should know that. (it's not like I recorded that and was like "MAN I RULE I NEED TO GO ON AMERICAN IDOL! YEAHZ!!!")
Just made this remix (licensed under a Creative Commons Attribution NonCommercial ShareAlike license). It's from this remix contest. I know they want us to use more of their samples, but I'm too lazy to go dig through them.. and I wanted to do another song in non-4/4 time.. it almost works, anyway. But fun no less. I dedicate this song to Steve. Anyway, not gonna bother entering it or anything, but not too awful for a quick bit of work, either. My attention span is too short, though. On one of our own songs, maybe I can spend more time, maybe. Update: OK those vocals were really not working for me, here's a mix without them and with some drums in the bridge.
My lovely woman ran off for a fun long weekend on the east coast, so I'm alone, with the cat, my cold, my new gold crown (pictures coming soon) and some tasty indian food. I just made this tribute to one of our band's songs. Kinda funny. I really dig the Treo 650 I got. Might start playing around with developing stuff for it. Maybe. I have an itch that needs scratching, now if I could just find something that won't take tooo long to get into. Tomorrow we're going to start recording album versions of our songs, fun. Also, been watching that classic 90s show, "Strange Luck." It's been so long, that I get to watch each one as if I've never seen it before. If only I had something better than a terrible VHS rip..
Our show last night went pretty well, we had a very good time. We were lucky enough to have two friends (ok ok more than two) there to videotape, so we edited together this little video.
Woot only 2 days til our band plays. Excitement in the air! Saw The Hitchhikers Guide to the Galaxy movie today. Was pretty good. I understand that some of the changes were necessary to make a good movie, and that's fine, but I do have a few gripes over particular things. But in the end, I think it's a good movie for what it is, and definitely enjoyed it.
I posted a link on the Jesusonic Forum to the Jesusonic DirectX plug-in, woot. Also, our show next tuesday is on, and we will be going on at about 8:00pm. Hooray. Here is a playlist of our last rehearsal (which is a mixed bag but entertaining no less).
There's a new version of Pathsync up. Thanks Francis and Alan! This new one lets you do a lot of nice things, see the whatsnew on the page.
OK so I still need to build the footboard for the new Jesusonic (which I will do this week), but I just upgraded the board in this one to a via C3 1.2ghz board. The CrusFX still has a 1.6ghz P-M board in it. The difference in power (and price!) between the P-Ms and the C3 is huge. But The 1.2ghz C3 is finally powerful enough where in normal (and even excessive experimentation) I'm not finding it running out of power. Yes, if I try, I can get it to run out (whereas with the P-M that is difficult sometimes even). So I think the first run of Jesusonics will probably be 1.2ghz C3 powered. If anybody is interested in purchasing one of the first run of Jesusonic hardware, let me know. It will probably cost around $1k, and will likely be hand made and of very limited production. I'd like to gauge interest before building the initial run. I've still been using the 1.6ghz P-M based CrusFX for our practices, it's really quite fantastic, we tried using a Line6 POD XT Live for half of one of the practices and while it was good too, it was also lacking in certain features (which makes me feel like making the Jesusonic is somewhat justified, if not completely useful). We had a fantastic rehearsal today, too, the mp3 is up. I can't wait for the show (but I'm glad we have a little more time to get things solidifed ;)