Home

Anonymous

Licenses: Apache 2, GNU LGPL, Classpath Exception, which is compatible with most other licenses.

In this JSoundCard software, generating (speakers) and receiving (microphone) realtime audio is as easy as a loop that uses numbers from -1 to 1 for the amount of electricity that should be in the speaker/microphone wire at that time. There are no codecs or compression. Those things are for storing audio as files. This is much simpler.

Double-click the Jar file to run a test sound which plays the microphone on the speakers. Future versions will have less delay between them. The test automatically adjusts the microphone volume inversely proportional to how loud it hears, but that is only a demonstration of a very simple thing you can use this software for.

By creating code that implements the SoundFunc interface (only 2 functions, 1 which takes a floating point array and the other specifies the size of the array), you can define any musical instruments or other sound effects that use speakers and optionally microphone.

To play a sound, simply use this code: JSoundCard.play(theSoundFunc, numberOfSpeakers, numberOfMicrophones, 44100); and to stop it use this code: JSoundCard.stop(); Create your own SoundFuncs.

Originally part of Audivolv, JSoundCard is the code that takes a stream of floating-point numbers (in range -1 to 1) and sends them to the computer's sound-card as bytes which are played on the speakers in realtime. Its also the code for getting a list of sound-card options, choosing them manually, and/or automatically interpreting which sound-card options are best so sound can start immediately with no setup. This code is more general than Audivolv.

Most computer programmers think its hard to get direct access to the sound-card, or that it requires some complex framework or native C code, so they do not look into it and find it can be done much easier.

Why write hundreds of lines of code when you can focus on calculating the sound effects as numbers from -1 to 1? If you want an echo, for example, save those numbers into an array and use a few of the older numbers (delayed by a few milliseconds, and a few more milliseconds...). For the best echos, use that code recursively. Then add some Math.sin(number), Math.min, Math.max, multiply, affine-rotation math, etc. Its hard to find any part of math that doesn't sound good if used the right way. I've done the hard parts for you... audio buffers and timing etc. A lot of the music you hear on the radio uses sound effects designed by experts. Why did they need experts? Because they didn't use JSoundCard. Math and music are 2 ways to describe the same thing. After you get past the boring technical stuff, and math and music are 1 thing and that is intuitive for you to use, the sound effects you hear on the radio will sound simple to you. Its only a matter of time before those audio experts are out of a job... I just have to get this software working at a higher sound quality with less delays and sound skips. Create your own SoundFuncs. Be part of this music revolution before it obsoletes the audio technologies used by the experts that you hear on the radio and in concerts and dance clubs. Its easy if you have basic Java programming and math skills.

It does speakers and microphones... or anything you can plug into the speakers and microphones holes of the computer. Electric guitars are normally used with a network of sound effects devices which each have a few wires to the other devices. Use your computer as 1 of those devices. Program your own sound effects instead of buying them in new devices. My plans for this JSoundCard software are to continue what I started in CodeSimian and Audivolv. I already have advanced sound effects and musical instruments that learn to sound more like you want them to sound. JSoundCard is the next step in simplifying that and combining all that code (into a software that uses JSoundCard). Audivolv is an artificial intelligence for musical instruments. CodeSimian is better for electric guitar because it has a delay command in its scripting language. That's the history of why I'm building JSoundCard. My plans are to expand the artificial intelligence parts and let them do most of the sound effects code. I want to use it through an electric guitar. I'm not good at playing a guitar, but the artificial intelligence can be a user-interface through the guitar which means I don't have to learn chords and other normal things about guitar playing. I can do it more through the timing and hardness I push on the strings, which I am better at. The artificial intelligence (of a software that uses JSoundCard that I haven't built yet) will translate that into music... It will learn to do that. Years from now, when I get more of my software finished and learn to use it for music, I'm going to put on some concerts, maybe like rock music and electronic but not like anything anyone has ever heard because the technology is unprecedented. It will be a cooperation of Human and artificial intelligence in a way most people can not yet imagine. That's 1 of the bigger reasons I'm building JSoundCard, but you can use it for lots of other things too.


MongoDB Logo MongoDB