Music
July 13, 2005
loneparasite reprise
July 13, 2005
Dear bands who open for small big name acts in San Francisco, Please, if you don't already have them, get drums. I know, you see people like Tori Amos get by with just an amazing voice and a piano, or Thom Yorke with a guitar and a wonderful sense of rhythm (among other things), and think -- I can do that too! Get back to the basics, none of this modern stuff. Like having some celtic singing style somehow mitigates the need for percussion! Let me tell you, you're NOT pulling it off. There's a reason that the standard drum kit has caught on. IT'S GOOD. USE IT. AND USE YOUR TOMS, TOO. Beating two peices of wood together, or worse yet random items found on the street, isn't cutting it! Really! I don't know how these bands end up getting booked as opening acts. I guess the selling point is that they don't have as much equipment to move or set up. That is all. BTW, Dungen was fuckin awesome, equipment failures and all. Wish I could see them again.
Finally, NINJAM is out! NINJAM is a software suite that allows groups of people to play music with eachother online. Now I'm going to eat dinner and go see Dungen tonight.
In the last couple of days I've managed to track down and fix some of the last bugs that I could find in the NINJAM architecture, making shit just work a lot better now. Yay. Looks like we'll be making a public alpha version available tonight or tomorrow. I know I've said similar things in the past, and it's been delayed a couple of weeks, but this time I mean it, and it'll be worth it now, as the software is a lot more mature than it was a couple of weeks ago (and we have a GUI for OS X too, which I think is hot.. almost makes me want to use a mac more, haha. I'll wait for the pentium M powerbooks, mmm).
It has been a bit of work these past few days, but I managed to get the native (Cocoa) OS X version of NINJAM nearly fully functional. So hot. The whole Cocoa and Objective C thing is pretty decent, I must say. Takes a bit of getting used to, but it ends up feeling a lot like PHP (i.e. with autorelease objects that you don't have to worry about). I probably have a ton of memory leaks that I haven't noticed, though. Too bad it doesn't have the uber-easiness (and obvious of function names) and uber-well-documentedness (I find at times that a particular method has been deprecated, but without explanation or a replacement method) of PHP. Anyhoo, when we do finally release, Mac people (Mac using musicians, too!) might be happy too. Just gotta get text scrolling for the chat box working, and do a bunch of preference items. Yay.
work will have to be on hold for a bit. time to smack my head against the wall.
...before I go to bed, two things: A song that will soon have lyrics. A fun NINJAM song we made today.
... we still haven't publicly released NINJAM. I know it's late, but we're resolving some issues that probably would have bugged people (just this morning I managed to rearchitect a portion of code that made everything run a whole lot smoother), and it'll be worth it. If you really can't wait, go on IRC where I described before and you can play with it. Honest. A download link is in the topic. But it won't be long before it's up on a public page as well. I'm dreading the traffic hitting my lowly T1, though. Normally I like releasing software and it getting attention, but sometimes it's counter productive. Anyway... we've been having some fun jams, this stuff is so awesome (at least I think so, clearly you, the reader, can make up your own mind).
...Brennan and I are hoping to release an alpha version of NINJAM by Friday. It will be far from feature complete, but should basically work and be pretty fun and usable. I'm amazed at how much fun I've had using it. I also feel like I get some really good practice playing, too. Here's a little clip we made today. We got chat support working, and topics so that users with permission can set a topic string (i.e. "space rock in Am"). Tasty.
Listening to some older Verve records, only had ever heard Urban Hymns of theirs, and these ones are awesome. Toast digging. Here's a little song Mr Wiener (not what you're thinking, probably) and I made. It's about certain people. NINJAM is coming along nicely, but I'm going to a wedding this weekend so we'll wait to release until next week, I think. That and Brennan and I have a few interesting things left to do. One of the more interesting features added recently is the ability for the server to require clients to agree to a licensing agreement. For example, the server can enforce that everybody who contributes content to the server agrees to license that content under a Creative Commons license, or whatever the server operator chooses. Hot. Finally, ordered my Athlon64x2 today. Hopefully won't take too long to come.
Ah, the two day hangover, ouch. Note to self: quit trying to reclaim your teenage yaers of not drinking by shotgunning MGDs. Although it's funny as hell, there's just nothing right about it. Nothing. And although it all got consumed, one 30 pack would probabably have been enough. Really. We just had a lovely ninjam (my favourite parts are at about 30:00 and 42:00 or so). I can't help but feeling very elite due to having so much code in there that made shit work (specifically, the idea that I wrote the drum sequencer, ha ha). Anyway, gonna take our time a little before releasing NINJAM, but if you can't wait try coming to irc.cockos.com, #ninjam. and you might get involved. If you have windows, make sure you have ASIO drivers that Jesusonic works with, and if you're on a mac, try out the Jesusonic version on it and make sure it works, too.
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.