U1Synth is a simple audio synthesizer with GUI for MorphOS. The synthesis scheme is very basic. The base sound is a sine wave at frequency of the C note of choosen octave (from C0 to C8) on the equally tempered musical scale. The sine wave is sampled at 44.1 kHz. Then a simple ADSR envelope is imposed on the sine.
The idea of ADSR envelope (short from "attack, decay, sustain, release") is shown on the left. The envelope itself is drawn in red. It shapes the base sine wave shown in green. The attack phase starts from zero and linearly reaches maximum amplitude (0 dB on decibel scale) in the attack time. Then during the decay time, the amplitude of the wave falls linearly to the sustain level. This level is expressed in decibels too, in relation to the maximum level. The example level on the diagram is −6 dB, which mean the amplitude is ½ of the maximum. Every −6 dB divides the level by two. The level is kept constant in the sustain phase. Finally in the release time amplitude falls linearly from the sustain level to zero. In U1Synth one can adjust all the 4 times independently and also the sustain level. Each of four phases can be eliminated by setting its time to zero. U1Synth's engine runs on floating point numbers, so it's very accurate. Audio samples are converted to integers just before being played or saved.
The "Play" button just plays a synthesized sound using current settings. With "Save As..." one can write an audio file in format selected above. U1Synth uses Reggae media saving framework, so it supports all formats having Reggae encoders. At the time of making the screenshot, 3 encoders were available, but every new encoder will be supported automatically.
The program is released with source code on BSD licence. While as an audio synthesizer it is rather primitive, it serves as a programming example of Reggae media saving API, also the synthesizer is implemented as a Reggae private custom class. The source also shows good programming practices with MUI and typical way of localizing the interface. There is a link library libvstring contained in the sources. It simplifies dynamic string allocation, generation and management in C, using MorphOS native API. Of course it is released under BSD licence too, so may be used freely by anyone.
Version 1.2 (2012-09-26), added octave selection. Added U1Synth to Grunch package manager.
Version 1.1a (2012-08-31), added missing audiopcm.encoder class to the archive, no changes in the program.
Version 1.1 (2012-08-30) was the first release.