a work in progress, currently private-ware
JHarmono is a hybrid SuperCollider / Java (via Processing) application for creating and animating harmonographs. Traditionally, this is achieved using an apparatus with a table and two (or more) pendulums. My harmonograph at its simplest is a 2D plot of three sine waves (the first two are plotted on the X and Y axis, and third is used for colour changes and line thinkness.) I have continued to extend my own interpretation of this concept.
The GUI runs in SuperCollider as data handling in that environment is so nice, and I have built up a library of GUI elements I can draw on. The parameters are sent to Java using Open Sound Control messages sent internally, although conceptually there is nothing to stop the Java end being on another networked machine.
The sine wave itself is generated from a lookup table, and could in fact be any arbitrary shape (something for a future update.)
The controls are as follows:
Freq / Phase / Amplitude for each sine wave.
Amp Mult Dur Mult:
Amp Mult Min:
Start Time: The time offset that the sine is read from. If at 0, then all sines will start in the middle (they range from -1 to +1.)
Time Span: the total amount of time that is plotted.
Clip / Wrap / Fold Limit: set a threshold for these operations.
No. of Steps: the total number of points on the path that will be generated.
Masking Alpha: The alpha of the latest update to the picture – if less than its maximum, a little of the previous image will be seen, leading to a nice “blurry” effect.
Background Color / Path Color 1 /Path Color 2 / Dot Color
Dot Alpha: the alpha value of the dots – less than the maximum and they will appear increasingly transparent.
Line Stroke Weight: The thickness of the lines used to draw the plot.
Width Mult X / Y / Z: How much the individual sines will influence the thickness of the line.
Dot Every: If dots are to be plotted, this sets the multiple at which they will appear, i.e. for there to be a dot every 10 points, this value would be set to 10.
Dot Every Offset: an offset to the above value, i.e. if it was set to 3, it would mean a dot every 10 points starting with the 3rd point.
Dot Radius Z Var:
Dot Stroke Weight: If the dot is drawn instead of filled, the thickness of the line that will draw it.