Cobosoda Synth

From NYC Resistor Wiki
Jump to navigation Jump to search

Back to Cobosoda

Introduction[edit]

The cobosoda synth engine is built with the Csound API.

Classes[edit]

The following classes are currently synth specific:

  • SynthModelObserver
  • ModelEnergyMap

Getting Sound to Play[edit]

If sound isn't working, look for the public static variable PLAY_SYNTH in Config.java, and make sure the value is set to true.

Open Design Issues[edit]

Prototype[edit]

SynthModelObserver is only a prototype at this stage. The sounds currently being generated, though already somewhat pleasing, have been designed to test communication between Java and Csound. Making something as elegant as the Java language work with the Frankenstein that is Csound will require much work and refinement. One possible approach would be to design a static synth engine with Csound, and create a specific Java interface to this engine.

Reinitialize Engine[edit]

When a new model is created, Csound should reinitialize to conform to the specifics of the new model. As of right now, channels are hardwired to approximately 20 instances. Csound should only have as many as needed. ModelEnergyMap should be calculated at this stage, as recalculating the map everytime a collision occurs is highly inefficient because of the recursive nature of ModelEnergyMap.computeMap().

Observing Limb Length[edit]

As of now, SynthModelObserver is observing changes in limb length. This is pointless since between each update, the springs are bound to change. This class should probably be split into two classes, one for observing, one as the synth engine.