Software Synth in the make

[quote]Make sure that you can construct patches programmatically!
[/quote]
This is some code of the first demo:


        Oscillator osc1 = new Oscillator(WaveTables.SAWTOOTH);
        Oscillator osc2 = new Oscillator(WaveTables.SQUARE);
        LowPassFilter lpf1 = new LowPassFilter();
        LowPassFilter lpf2 = new LowPassFilter();
        LFO lfo1 = new LFO(WaveTables.SINUS);
        LFO lfo2 = new LFO(WaveTables.SINUS);
        Amplifier amp1 = new Amplifier();
        Amplifier amp2 = new Amplifier();
        PanPot pan1 = new PanPot();
        PanPot pan2 = new PanPot();
        Mixer mixL = new Mixer();
        Mixer mixR = new Mixer();
        ToJavaSound out = new ToJavaSound(ToJavaSound.STEREO, 32, 8196);
        
        mixL.connectTo(out.inputL);
        mixR.connectTo(out.inputR);
        mixL.addChannel(pan1.outputL);
        mixL.addChannel(pan2.outputL);
        mixR.addChannel(pan1.outputR);
        mixR.addChannel(pan2.outputR);
        amp1.connectTo(pan1);
        amp2.connectTo(pan2);
        lfo1.connectTo(lpf1.cutOffControl);
        lfo2.connectTo(lpf2.cutOffControl);
        lpf1.connectTo(amp1);
        lpf2.connectTo(amp2);
        osc1.connectTo(lpf1);
        osc2.connectTo(lpf2);

Is this what you mean?

[quote]All of my GUI work with Scream should work great with your project. Plus eventually you might consider using OSC, Open Sound Control, to get your synth running via the network; Scream already has a client based OSC framework; I’ll be extending it with server capability after J1; should be as easy as defining a protocol for your synth and interfacing with Scream…
[/quote]
Scream looks fantastic. :slight_smile:
Is OSC a java framework?

[quote]I tipped off someone who might be interested in contributing to your project… So who knows… Have you made a web page for it yet?
[/quote]
No web page yet. I’m thinking about either a sourceforge.net project or a java.net project.

[quote]Here’s another one: :slight_smile:

http://www.mycgiserver.com/~movegaga/SynDemo2.jnlp

Make sure you select your microphone for recording in your Volume Control -> Options -> Properties -> recording (windows).

Then talk in your mic and hear HAL gone crazy ;D
[/quote]
Hehe absolutly odd ;D

Open Sound Control is an application protocol (network based and otherwise).

A good overview can be found here:
http://www.cnmat.berkeley.edu/Research/NIME2003/NIME03_Wright.pdf

The main page is here:
http://www.cnmat.berkeley.edu/OpenSoundControl/

As far as my Java implementation I started with Chandrasekhar Ramakrishnan’s code, but extended it for NIO and efficiency; packet conservation.
http://www.mat.ucsb.edu/~c.ramakr/illposed/javaosc.html

Checking into OSC will give you an idea about being able to configure your synth programmatically.

The audio engine I am using, SuperCollider3, which is covered in the OSC PDF can only be addressed via OSC.

The goal of a programmatic interface is language independence. I am able to fully configure and control SuperCollider3 from Java over the network.

Essentially, it would be awesome to have an interface that exposes the functionality of your synthesis system without having to know the implementation details.

The example you listed of being able to connect your synth is programmatic, but still tied more to OO programming than a generic interface. For instance you will probably want to break down your Oscillator class to particular implementation SinOscillator, SawOscillator, etc.

Spending time to review SuperCollider3 could be very beneficial in gaining some ideas on your project. SC3 is under GPL, but you should be able to convert the code for basic unit generators (oscillators, filters, etc.) to Java and not break GPL… I’d like to see your synth be released under BSD if possible.

I’d be glad to continue discussing all of this… Time permitting I would also like to help out with implementation.