Thursday, March 8, 2007

Working on a language...

There hasn't been much of an update here for some time now, and there's a good reason: I've been working on all kinds of stuff most of which is not in the state of offering anybody anything yet.

This might get a bit too technical for this blog, but the latest thing I've been working with is an implementation for a Scheme like language, with some specific design goals:

  1. Make it compile to truly native code, such that it can be used to implement it's own runtime system, ultimately including the whole operating system, if desired.
  2. Make it able to bootstrap itself on the fly, dynamically replacing the running version without requiring a restart. As a related feature, (almost) all code should be garbage collectible.
So far I have a basic compiler written in Scheme that compiles to x86 assembler. It's nowhere near being able to compile itself yet (and the language differs enough to require a port eventually), but it's properly tail-recursive, can deal with variable arguments and multiple return values without allocating any memory (except that receiving "rest" arguments into a list will obviously allocate said list), and requires minimal external runtime support; a few lines of C to get stuff going and a bit of assembler for apply primitive.

Road map for now is to finish the remaining missing features in the basic language, get linking of libraries to work, add a basic garbage collector, write a meta-circular interpreter, get a REPL running, port the compiler to run on top of the interpreter, extend the compiler to run just-in-time, and then figure out how to get the system to dump it's full state into a file such that it can be resumed. Once all that works, the rest should be relatively easy.

One would think there are already enough Scheme implementations, but this one will be different. ;)

Monday, January 8, 2007

Virtual Bending

There was some talk about circuit bending on a Finnish music site Mikseri.net, which got me thinking whether I'd have some stuff to try bend at home.

Well, I failed to find anything.

So instead I made some noise with my virtual analog software synth project. The tune, "Virtual Bending" can be found in my less-serious-music-project page in Mikseri.

Saturday, January 6, 2007

Blue Mace - Purple Spruces

Made a tune last night, available at http://www.mikseri.net/bluemace.

Drums are samples, piano is 4Front, rest is my VA synth project.

Filter singing


[no-flash: mp3 here]
Who needs oscillators when you have a filter. A bit noisy for now, will have to clean it a bit.

Friday, January 5, 2007

More sound


[no-flash: mp3 here]
Since the synth thingie has got some new features, I thought of posting another small sample of what it can sound like in wrong hands. That's a dry sample, with 2 voices unison for the stereo effect.

A little teaser..

So here's a small screenshot of a filter. It's still lacking text labels and I'm not quite sure about the color scheme, but it's using the vector graphics library thingie.

The library itself needs a bit of tweaking before anything using it goes live. Maybe I'll release the library itself as well at some point, I don't know yet.



I was a bit worried about the performance, since it seemed to slow stuff down when redrawing a lot. That could happen for example when another window was moved on top of the thing. What was a bit strange though, was this would typically only happen after a while...

I was already going to write some bitmap caching logic to avoid doing the actual drawing unless something really changed in the window. Then my eyes caught something missing: I was leaking resources in my painting routine. Single line of code to fix that bug. Now it runs pretty nice just redrawing everything on the fly.

Sunday, December 31, 2006

Islands of Consciousness

Islands of Consciousness is damn cool. Random composition of random images feeding a random audio composition thingie, creating something pretty strange.