21 февраля 2021

Sound Controls

On this screen, accessed by hitting ctrl-F, you'll find a few parameters that you recognise from the 'x' menu handily gathered together, plus a few new ones. You can find the descriptions for the basic parms over at the Sound Parameters help.

The newer parameters now control whether fractint uses the PC speaker for sound, as in previous versions, or the output of a sound card, or both.

Your present Sound card may boast all manner of gizmos and wotnots but fractint may well not be able to take advantage of them, this is simply due to our not including umpteen different drivers for all the different cards. Instead it just uses a simple approach that at least allows you to use multimedia speakers for the various noises of which fractint is capable.

This DOS version of fractint uses the current lowest common denominator hardware among the variety of sound cards available, the yamaha OPL-3 FM synthesizer chipset which is found in most sound cards from the original AdLib, through the various soundblasters from creative labs, to the numerous cards that emulate them.

The OPL-3 chipset has within it several 'voices', each capable of generating sound independently of the others, and with a variety of controllable parameters. See Advanced Sound Controls for details.

The sound card volume control given here will be overridden by any volume control applications that come with your OS, such as the windows 95 mixer control panel. Also, depending on your sound card and software, the output of the OPL-3 chipset may be controlled by a slider named 'synth', 'midi', or possibly 'legacy'... if in doubt, experiment :-)

The other parameter that needs explaining here is note pitch quantisation. When this is enabled, tones that are to be played are first rounded to the nearest note on the western even tempered scale (i.e. the notes that you find on a piano) as opposed to the full spectrum of frequencies. The Advanced Sound Controls screen also has a facility to restrict the notes played further so that you can produce tunes in a particular key, if you're so inclined.

Advanced Sound Controls

The soundcard output from fractint is a tad more versatile than the simple tones of the PC speaker. This comes into its own when playing sounds based on fractal orbits, producing results from haunting chordal pulses through to unearthly arpeggios.

The voices used to generate notes on the sound card have variable Envelopes (p. 130) and can be played polyphonically so we have three parameters to vary the sounds produced:

POLYPHONY=nn

This controls how many different note are allowed to sound at once, voices are assigned cyclically as notes are played: i.e. after the first orbit is calculated a frequency is assigned to the first voice and that note is triggered on. Fractint then waits for one orbitdelay period, calculates the next orbit, assigns a frequency to the second voice, and triggers it on. This continues until the number of voices sounding is equal to the polyphony value whereupon the first selected voice is triggered off and the note allowed to decay. That probably all sounds horrendously complex but just think of it as playing the organ, holding down each new note for as long as possible but with the polyphony value controlling how many fingers you have.

WAVETYPE=nn

   WaveForm 0: Sine       WaveForm 1: Half-Sine
    | /^\                   | /^\         /^\
    |/   \       /          |/   \       /   \
   Ä/ÄÄÄÄÄ\ÄÄÄÄÄ/ÄÄ        Ä|ÄÄÄÄÄÁ-----ÁÄÄÄÄÄÁÄ
    |      \   /            |
    |       \_/             |

   WaveForm 2: Abs-Sine   WaveForm 3: Pulse-Sine
    | /^\   /^\             | /^|         /^|
    |/   \ /   \ /          |/  |        /  |
   Ä|ÄÄÄÄÄÁÄÄÄÄÄÁÄÄ        Ä|ÄÄÄÁ-------ÁÄÄÄÁÄÄÄ
    |                       |

   WaveForm 4: Sine - even periods only
    | /^\                     /^\
    |/   \                   /   \
   Ä|ÄÄÄÄÄ\ÄÄÄÄÄÂ-----------ÁÄÄÄÄÄ\ÄÄÄÄÄÂÄ
    |      \   /                   \   /
    |       \_/                     \_/

   WaveForm 5: Abs-Sine - even periods only
    | /^\   /^\               /^\   /^\
    |/   \ /   \             /   \ /   \
   Ä|ÄÄÄÄÄÁÄÄÄÄÄÁ-----------ÁÄÄÄÄÄÁÄÄÄÄÄÁÄ
    |

   WaveForm 6: Square
    |-----¿     Ú-----¿     Ú-----¿     Ú-
    |     |     |     |     |     |     |
   Ä|ÄÄÄÄÄ|ÄÄÄÄÄ|ÄÄÄÄÄ|ÄÄÄÄÄ|ÄÄÄÄÄ|ÄÄÄÄÄ|ÄÄ
    |     |     |     |     |     |     |
    |     À-----Ù     À-----Ù     À-----Ù

   WaveForm 7: Derived Square
    |          |\                |\
    |         |  \              |  \
   Ä|--__ÄÄÄÄ|ÄÄÄÄ\------__ÄÄÄÄ|ÄÄÄÄ\------
    |    \  |              \  |
    |     \|                \|

ATTACK=nn

This controls the time taken for a note to hit full volume after being triggered on. Low values give a punchy percussive sound while long values give a softer bowed sound. If attack time is set too long and orbitdelay is low then notes are played too fast to ever achieve any volume and the net result is low or non existent output. To put it another way, if orbitdelay is low then this value should be low also.

DECAY=nn

This controls the time taken for a note to die down to the sustain level. Setting this time too low may produce a rhythmic click between notes. The attack and decay values don't allow much fine control.

SUSTAIN=nn

This controls the volume level at which a note is held.

RELEASE=nn

This controls the delay in time for releasing a note. A release value of 15 seems to equate to 'never let the note release' on the machine used to develop the sound card drivers. But, as ever, with other manufacturer's emulations your mileage may vary.

VOLUME=nn

It is possible to adjust the volume of an FM synth card. This has no effect on the PC speaker.

ATTENUATE=none|low|mid|high

On an FM synth card it is possible to attenuate the high pitched notes. The default is none. The low value attenuates at 1.5 dB/octave, the mid at 3.0 dB/octave, and the high at 6.0 dB/octave.

SCALEMAP=nn/nn/nn/...

The scale map list is a way of controlling which notes are played by fractint and only has any effect if note quantisation is switched on in the basic sound parameters screen. It can be very useful when the polyphony is up and the chords you're getting are more like dischords. :-)

The way it works is this: When a sound is played with frequency quantisation on its frequency is rounded to the nearest 'proper' note on the musical scale, this note number is then looked up in the scale map table and substituted by the note indicated in that entry of the table. The end result of this is that, for instance, using this sequence of numbers as a scale map:

2,2,4,4,4,7,7,9,9,11,11,11

Will ensure that fractint uses only the black notes on the keyboard, just the sharps and flats for a vaguely oriental feel (to my western ears anyway :-) ).

The above probably appears to be sheer gobbledegook at first reading, sorry, but if you keep at it you'll unlock this powerful feature for keeping your fractals melodic. (Unless you're totally turned on by microtonal frequencies in which case forget all this quantisation nonsense and tune in to the true sound of chaos!)

The passes=1 setting Drawing Method almost always works best with sound.

Envelopes

Here's some more information about the concept of a note envelope for those unfamiliar with sound synthesis terminology, it's all about how the dynamics of a note are defined (i.e the way in which the loudness changes during the life of a note)

Graph of a note's volume during it's life cycle:

      /\______                     /\_______
  __/          \_____ ... _______/          \_________
  0011111111110000000 ... 0000000111111111110000000000
    A  D  S   R                  AAADSSSSSSSR

The string of 0's and 1's represents the keyon/off state of the voice, 1's indicate the key being held down. The attack, decay, sustain, and release portions of the envelope are represented by ADSR, this is what happens:

When the note is first triggered on the volume rises to peak volume at a rate determined by the attack value.

Once at the full level the decay period starts and the volume dies down (at a rate set by the decay value) to a level that is set by the sustain value.

The note continues to sound at this volume until triggered off (the 'key' is released) whereupon it dies down to zero volume at the release rate.

And so on. Now, with the current voice assignment method, while orbits are being generated continuously, timing looks like this (with four note polyphony in this example)

     Voice:
       1 *111.....*111....
       2 .*111.....*111...
       3 ..*111.....*111..
       4 ...*111.....*111.
       5 ....*111.....*111
       6 .....*111.....*11
       7 ......*111.....*1
       8 .......*111.....*
       9 ........*111.....
  orbit: 12345678901234567

Where:

	. = key off (silent or releasing note)
	
	* = note assigned a value and triggered on, attack, 
		decay, sustain phase begins
		
	1 = note held on, you'll notice that above there are only 
		ever four notes held on at any one time, though more than 
		four may be sounding if there is a long release value.