This isn't really Geek Stuff...

... just a brief explanation of some of JavaGran's underlying technologies.

Java

JavaGran is written in Java, a programming language developed by Sun Microsystems. Java was designed to take full advantage of what's called Object-Oriented Programming, or OOP for short. This is nothing to be scared of, it just means that you program with little widgets, each of which is unique, and each of which is capable of performing certain tasks. What's nice about that is that you solve computing problems in a way which is similar to how you solve problems in the real world: You have tools that do certain jobs. In fact some programs even have structures which mirror the real world problems they relate to. Most people feel this makes programming easier and more 'natural.'

Another interesting thing about Java is that it was designed to be 'platform independent'. This meant that in practice any Java program should run on any type of operating system (Windows, Mac OS, Linux, UNIX ...) without modification. This is done by having a thing called a Java Virtual Machine, which takes care of the differences of each system. There are Java Virtual Machines written for almost every type of computer and operating system currently available. This makes Java very good for use on the internet, especially in web pages, since it is impossible to know what kind of computer might be accessing a given page.

So, if it's relatively easy to program and it runs on everything, where's the catch? Well, for one thing security is an issue. If you're downloading programs from the net (perhaps without even intending to!), you want to make sure that they're not going to do something nasty to your machine. Java programs which run in web pages are called 'applets', and they have a number of special security restrictions and tests to make sure that they do no harm.

This leads us to problem number two: Speed. All of this interpretation for different systems and thorough checking tends to slow things down a bit, at least in comparison to some other programming languages. Sometimes this isn't noticeable, but it can be a problem for 'heavy duty' applications like sound synthesis!

JSyn

Enter JSyn. JSyn is a kind of special extension to Java which allows one to do all kinds of sound synthesis and processing. JSyn makes use of something called the Java Native Interface. This allows Java to use tools written in faster programming languages which are optimized for the particular operating system being used. JSyn allows programmers the convenience of programming in Java, but all of the hard processing is done using the faster OS specific code. So easy and fast! This fast stuff is accessed using the JSyn browser plugin. There are currently versions of the plugin for almost all common browsers, running on most flavours of Windows, Mac OS9 and OSX, and Linux.

JavaLayer

JavaGran uses mp3 files for some of the default sounds. Standard Java has no support for mp3s, so JavaGran makes use of another extension called JavaLayer, which takes care of the decoding. JavaLayer is used under the GPL. I have extended some of the classes for use in JavaGran. Source code can be obtained by following this link, and/or contacting me.

Samples

All of the default samples used in JavaGran are public domain. Enjoy...

 

> Click here to learn about some other sites relating to JavaGran, and people using granular techniques in their music...

> Or move on to the application itself and start making sound!

 


> What?              > Why?               > How?               Geek Stuff

Go Beep!               > Links               > scottwilson.ca                > Contact