Skip to main content

Distributed Jams

Posted by daniel on October 28, 2003 at 4:20 PM PST

The internet continues to provide virtual communities where people can come together and share ideas and collaborate. What about a place to go to play live music over the internet?

No way. Can't be done. What about latency?

Sound Jack has the goal of making these distributed Jam sessions a reality. Soundjack,
this week's featured project, comes from the JXTA community The project home page says that "In the first run JXTA will simply show available peers and extract the IP. Later audio transport similar to vop2p-project will be provided."

While you're looking around SoundJack to learn more, take time to check out the home page for the Soundwire Group at the Stanford Center for Computer Research in Music and Acoustics. Check out a picture or two and other materials from an actual Network Jam session.

Also in Projects and Communities , the Java Tools community also highlights an audio piece. This Java Performance Tuning article by Scot Mcphee looks at Timers and audio performance.

Digital audio is achieved by slicing up an analogue audio waveform into a series of many thousands of discrete instantaneous level measurements every second. On a CD, there are 44,100 of these measurements every second. This is referred to as the sample rate (44.1kHz). Additionally, there is the ‘bit depth’ to consider, the amount of data retained for each sample, which on CDs is 16 bits. In other words, on a CD, the level of the analogue input is measured with a 16 bit accuracy 44,100 times every second.

To achieve a correct and accurate playback, the timing of the 44,100 samples is absolutely critical, which is to say that each of the 44,100 samples must be evenly and regularly spaced over the whole second – and with the same timing on playback as record. Additionally, in a multi-device interconnected digital sound network, all the digital clocks of all the machines connected have to be perfectly in sync. This is usually achieved in professional circumstances by use of a centralised master ‘word clock’ which is connected via BNC cabling to all the machines in the studio or facility.


In today's featured Weblogs , Will Iverson is playing with the JavaHMO implementation of the Tivo Home Media Opiton desktop software. In his entry Java and TiVo ready to go Will reports that he "can check weather, local movie listings, random internet pictures, and other cool stuff." Sue Spielman recommends the latest books from Dave Thomas and Andy Hunt in Being Pragmatic.

John Reynolds checks in with some Portability Thoughts . John is concerned about possible vendor lockin - in particular with J2EE apps. "My recommendation to vendors [..] is to be proactive and "publish the pitfalls". Clearly delineate the non-portable features and go one step further, develop a game plan for a portable alternative [...] Portable does not have to mean free, and portable does not have to mean painless. It is not a crime to create something that works best within a proprietary environment, but I will have to hesitate to recommend it unless it can be made to work on any certified J2EE app server."


In Also in Java Today you can read a bit about Using Mock Objects in java in Keld Hanson's Java Boutique article. He shows you how to set up and use some basic Mocks and advices that the time to use them is "if the real object has a complex set-up, uses many system resources (like cpu power), or doesn't yet exist! If you're writing an application that uses a database, there's no need to wait for the team that develops the database modules before you start coding the rest of the application. What you need is a mock object that behaves like the database modules."

In Analyze Your Classes , Vikram Goyal gives you an overview of the Byte Code Engineering Library. Java classes are compiled into byte code. BCEL allows you to analyze the generated byte code and "allows you, at a micro level, to model the instructions contained within the Java class file. This way, you can navigate and manipulate this instruction set programmatically, allowing you to introduce enhancements and improvements in the runtime of your class."


In today's java.net News Headlines :

Registered users can submit news items for the href="http://today.java.net/today/news/">java.net News Page using our
news submission form.
All submissions go through an editorial review by news director Steve
Mallet before being posted to the site. You can also subscribe to the href="http://today.java.net/pub/q/news_rss?x-ver=1.0">java.net News RSS
feed.


Current and upcoming Java Events:

Registered users can submit event listings for the href="http://www.java.net/events">java.net Events Page using our href="http://today.java.net/cs/user/create/e"> events submission form.
All submissions go through an editorial review before being posted to the
site.


This blog is delivered weekdays as the href="http://today.java.net/pub/q/java_today_rss?x-ver=1.0">Java Today RSS
feed. Once this page is no longer featured as the front page of href="http://today.java.net"> Java Today it will be archived at href="http://today.java.net/today/archive/index_10282003.html">
http://today.java.net/today/archive/index_10282003.html. You can
access other past issues in the href="http://today.java.net/today/archive/">java.net Archive.