The current internal synthesizer is a very simple one, so that it can have the high polyphony needed for simulating a massively stringed instrument. It's running by default at the effective processor friendly speed of 22050 Hz. (What it's really doing is running at 44100 Hz and only calculating every other sample to save some time.)

PolyHarp Synth (PHSynth) Algorithm

Each string area has a dedicated set of synthesizer parameters associated with it.

The synthesizer interpolates between four wavetables. The sound is divided into an attack wave and a sustain wave. The attack wave is interpolated into the sustain wave over a period of "attack time" seconds. This combination can be called a wave pair. Furthermore, these wave pairs themselves are interpolated depending on the frequency range of the string being hit. Between the extremes of these ranges, the two wave pairs are interpolated.

This basic waveform can be subject to configurable modulations. These modulations take characteristics of the strum, such as where on the string you have strummed and how fast, and use it to modulate characteristics of the sound in that string area.

PHSynth settings


The synth settings control can be used to set up a synth associated with the current string area.

You can choose one of the presets in the table at the top, and base new presets on them. A PHSynth doesn't have to be using a preset, and even custom PHSynth settings are saved with the PolyHarp, when you save the PolyHarp itself.

PHSynth wavetables

The four waveforms can be individually set to a number of preset waveforms by tapping their names. When you do, a waveform picker shows up with names and pictures of the available waveforms. Some are rather complicated! Noise and Silence are among the choices.

image When you have chosen a waveform, touch DONE to dismiss the picker.

To change the frequency values associated with each "high" or "low" waveform, the usual frequency picker is used:


You can set these frequencies to the same value and force an all low, all high, or sharp transition in the interpolated waves for a string. But usually, you can set them to be about the same as the range of frequencies you have set up for the string area.

Tip! Low strings often benefit from higher harmonic content, and so do attacks! But there's no obligation to do that.

PHSynth modulations


Where you "pluck" the string (the strum), and how fast you pluck it (the velocity) can be used to further modulate the timbre of the PHSynth. You can set up sources and destinations via the Modulation dialog. Tap the source and destination names to step through the choices.



How the modulatation is applied:

Each modulation links the source of modulation to a destination, mapped with a scaled curve. You can pick what kind of curve it is,

and the curves effective ranges for its input and output. The input is always going to be normalized from 0 to 1, but the output ranges may vary, based on the modulation. The pitch bends, for instance, are expressed in cents (+/- 1200 cents)

I'm experimenting with a special range control for setting these values. Just touch it and slide left and right to set it. You can also set the top higher than the bottom if need be: the shaded area will turn red. If you "long touch" it, it will reset to its default. It will quantize the value to something sensible, but moving the touch up or down will fine tune the offset of the current value. I may replace these with something else, but they are prety useful still.

PHSynths are associated with each string area, so different string areas can have different timbres. 

Each string also has an envelope applied to it, independent of the "attack" part of the PHSynth, and the signal may be clipped when it is loud enough, which adds some harmonics to the timbre.



Sliders control the envelope of the string: attach, decay and damping. The envelope is very simple: plucking a string puts an amount of energy into a "reservoir" which is dependent of the speed with which you strike the string. That reservoir feeds an envelope level at a certain rate set by the attack rate. That envelope level is also decayed by the decay rate. It's rather like filling up a bathtub with the drain open. The resulting envelope is entirely based on a reservoir level, an attack rate, and a decay rate. Plucking the string again just adds more energy to the original reservoir level.

The decay rate setting controls the decay rate of a strings amplitude, but when the string is damped, rather than just turning off the sound, it changes its decay rate to a faster decay. That damping decay amount is set by the Damp slider. When the slider is at the left, the damping is vary fast, at the right, it's slower. Thus, damped strings can cut off suddenly, or more slowly. This simulates "worn felts" on the chord bars of a physical chorded zither.


The Polyphony stepper controls the maximum number of simultaneous oscillators that can be playing, currently 1000. Polyphony also affects the volume, since the more oscillators you have going at full blast, the more likely it is to distort. You can automatically set the polyphony to the current maximum number of strings by tapping the "polyphony" label. Doing this guarantees there is no voice stealing, which is when an oscillator is reassigned to a new string while it's playing!

Usually, there aren't that many oscillators playing simultaneously, so I usually set the polyphony to something more like the number of strings that will actually be playing simultaneously. You can do this by DOUBLE tapping the polyphony label; which will then set it to the maximum of the number of strings used by any of the chord bars. This applies also to multiple string courses.

Making the polyphony less than the total number of strings may affect string damping, which after all, means the strings are still playing until they are damped out. This is especially true if you have "scrub" turned on.

Or, you can make them somewhat louder than would be prudent; the Volume slider lets you adjust the volume so in the case of massive, high velocity polyphony, it won't overload and distort. Or ... maybe you like that?

You can also use the stepper to add or subtract from this polyphony setting. The +10 and -10 buttons speed up this process a little, and holding a touch on a button and wiggling the touch repeatedly operates it.