Made a mini synth in B4J to investigate how it works with generated wave visualization.
Basically it has two oscillators (osc a and b) to generate signals according to a waveform shape of sine, pulse, saw and random noise and its frequency is determined by the music note being played. Each oscillator actually consists of two oscillators which will generate signals with a little bit different frequency, controlled by split, in order to generate more frequency components. The signals then mix together by add (osc mix) and/or multiply (ring mod). The mixed signal goes to a filter to change its frequency component, and then goes to envelope amp to change its volume.
The attack, decay, and release of the envelope amp controls that, after a key is pressed how long the volume will reach to max volume starting from zero, then how long it will decay to the sustain volume, and then how long it will decrease to zero after the key is released, respectively. The sustain means the volume level if the key is keeping pressed. Put sustain to zero will make sound release even the key is still being pressed, like a piano.
There is another oscillator (lfo) which will generate a sine wave in a very low frequency and use this sine wave to control the frequency of the two oscillators mentioned above, the cutoff of the filter, and the volume, to generate a vibrate effect.
With these limited controls, the number of sound types generated are also quite limited. However, it is interesting to see how signal changes through the visualization with limited parameters.
Right click on the knob control will reset a parameter to its default values.
Try: java -jar BxSynthMini.jar (Windows, Java 1.8)
----
Edit: Polyphonic version updated, see and use jar at post #11 with bug fixed and multi-input support.
Basically it has two oscillators (osc a and b) to generate signals according to a waveform shape of sine, pulse, saw and random noise and its frequency is determined by the music note being played. Each oscillator actually consists of two oscillators which will generate signals with a little bit different frequency, controlled by split, in order to generate more frequency components. The signals then mix together by add (osc mix) and/or multiply (ring mod). The mixed signal goes to a filter to change its frequency component, and then goes to envelope amp to change its volume.
The attack, decay, and release of the envelope amp controls that, after a key is pressed how long the volume will reach to max volume starting from zero, then how long it will decay to the sustain volume, and then how long it will decrease to zero after the key is released, respectively. The sustain means the volume level if the key is keeping pressed. Put sustain to zero will make sound release even the key is still being pressed, like a piano.
There is another oscillator (lfo) which will generate a sine wave in a very low frequency and use this sine wave to control the frequency of the two oscillators mentioned above, the cutoff of the filter, and the volume, to generate a vibrate effect.
With these limited controls, the number of sound types generated are also quite limited. However, it is interesting to see how signal changes through the visualization with limited parameters.
Right click on the knob control will reset a parameter to its default values.
Try: java -jar BxSynthMini.jar (Windows, Java 1.8)
----
Edit: Polyphonic version updated, see and use jar at post #11 with bug fixed and multi-input support.
Attachments
Last edited: