Sunday, December 18, 2011

Why is math (written) so complex?

It's been ages since I wrote to this particular blog, but rather than make a new blog I'm going to use the existing one to mention some things that are in my mind these days.

We're going to start our series of rants with quaternion rotations. Now if you check the link, you'll find some annoyingly messy (long, error prone to type) formulas for converting a rotation quaternion into a 3x3 rotation matrix. As far as I'm concerned this is yet another perfect example of how people tend to make math unnecessarily cryptic.

Let's assume that we can multiply quaternions and use this to rotate vectors (see the link, it's simple enough). Now if we rotate axial unit vectors (1,0,0), (0,1,0) and (0,0,1) using the quaternion, we end up with a rotated basis that we can turn into a matrix simply by using those rotated vectors as the columns of the new matrix. It so happens that the resulting matrix is the rotation matrix that we want.

Now for efficiency purposes (in code) one might (if you don't trust your compiler's optimizer) want to write out the formulas, so all the products with zero can be dropped and all the products with one skipped and then simplify the remaining stuff a bit... but why do such premature optimizations when writing math for humans to read (as in Wikipedia) is just totally beyond me.

PS. I figured I could take the opportunity to also complain about the general hand-waving about adding scalars and vectors in the above mentioned Wikipedia article. The whole issue could be easily eliminated by defining vector i=(i,j,k) and taking a dot-product with the vector part of the quaternion. Then you'd end up with a+vi which becomes type-safe being all scalars now.

Tuesday, August 18, 2009

Watch out for the angry kernel

After approximately 12 hours of trying to compile the thing after tweaking the source very slightly in order to fix a minor inconvenience:

teemu@opensolaris:~$ uname -a
SunOS opensolaris 5.11 on111b-teemu i86pc i386 i86pc Solaris

And now I just hope it actually fixes the original problem and that I won't run into any driver problems...

Friday, July 31, 2009

plugin project has a site

Ok, nothing much yet, but at least I've got something, and now I've got a place to host my stuff that doesn't fit that well into a blog.

You can find it here: www.signaldust.com

Sunday, July 6, 2008

What if...

What if there was no lambda in Lisp, but if defun returned the function defined? Wouldn't it be possible to define a macro such as:


(defmacro lambda (args . body)
`(defun ,(gensym) ,args . ,body))


Please excuse the half-Scheme notation.

Tuesday, June 17, 2008

Still alive...

Some time has passed without any updates again. That's been because there has been enough other stuff happening I guess. Haven't had much to talk about too, because what I've been doing has either been not of general interest, or has been in a phase where it's not ready to be announced, or too damn technical to explain without some effort.

Anyway, situation is that Valo was kinda announced on KVR forums and got some feedback. Then I basically rewrote it's modulation stuff and some minor additions and whatever. Still haven't been making much noise about it though, because I still haven't got a website up for it. The other thing is that I'm currently reconsidering what I'm going to do with it, because I'm not sure if I have time right now to add those features that I would like to see done before I start messing with licenses to people. I'm trying to fix the most critical stuff as soon as possible, but whether I'm going to do a commercial release is open. I'd like to see it used though, so I'm keeping the possibility open that I just release the current version as freeware instead and then do some new stuff in a successor as some stuff wouldn't easily fit in Valo anyway.

In any case I managed to come up with some sort of a tune using (mostly) Valo, which gave me a better perspective of where it is currently. There's definitely a lot of things it could be doing, but at least I'm starting to believe that it actually already fills the initial design goals quite nicely. It can provide me some of the edge, but also warmth, that my previous attempt was incapable of. On the other hand adding the old filter from the previous project as an alternative might be a good idea, because the transistor-ladder-wannabe in Valo cannot quite do some of the sounds that I so liked about the previous project.

I'm going to allocate some more time for DSP development again though. I've got a lot of ideas, but Valo is still my priority, and after that I'm considering a small personal platform of some sort, so I can go faster from quick&dirty prototypes to quality product. This will take some thinking and trying and testing, but I might talk about those things in the future here, since as far as I know, there's not that much audience on this blog that I would alienate.

I'm also thinking of setting up a more generic website to collect and write about some stuff that is really hard to find on the web. Topics would probably fall between music theory, sound design theory and audio signal processing theory. I could write some of the stuff here, but I don't think a blog is necessarily the right format for that, and mixing my personal rants and proper content probably isn't such a great idea. I'm not going to build yet another open community forum though, because we've got enough venues for freeform discussion I think. Rather I'm thinking of focusing on editorial content.

Tuesday, February 5, 2008

Well.. I kicked a cable accidentally and...

Everything seems to work perfectly again.. had to replace the cable though..

Tuesday, January 22, 2008

More interesting example of my project synth's sound



[no-flash: mp3 here]
Drums are from FPC, rest is from 4 instances of the previously mentioned new project, effects are external, and mixing sucks. Turn volume up, it's not mastered.