1set_volume_per_voice(3) Allegro manual set_volume_per_voice(3)
2
3
4
6 set_volume_per_voice - Sets the volume of a voice. Allegro game pro‐
7 gramming library.
8
10 #include <allegro.h>
11
12
13 void set_volume_per_voice(int scale);
14
16 By default, Allegro will play a centered sample at half volume on both
17 the left and right channel. A sample panned to the far right or left
18 will be played at maximum volume on that channel only. This is done so
19 you can play a single panned sample without distortion. If you play
20 multiple samples at full volume, the mixing process can result in clip‐
21 ping, a noticeable form of distortion. The more samples, the more
22 likely clipping is to occur, and the more clipping, the worse the out‐
23 put will sound.
24
25 If clipping is a problem - or if the output is too quiet - this func‐
26 tion can be used to adjust the volume of each voice. You should first
27 check that your speakers are at a reasonable volume, Allegro's global
28 volume is at maximum (see set_volume() below), and any other mixers
29 such as the Windows Volume Control are set reasonably. Once you are
30 sure that Allegro's output level is unsuitable for your application,
31 use this function to adjust it.
32
33 Each time you increase the parameter by one, the volume of each voice
34 will halve. For example, if you pass 4, you can play up to 16 centred
35 samples at maximum volume without distortion.
36
37 If you pass 0 to this function, each centred sample will play at the
38 maximum volume possible without distortion, as will all samples played
39 through a mono driver. Samples at the extreme left and right will dis‐
40 tort if played at full volume. If you wish to play panned samples at
41 full volume without distortion, you should pass 1 to this function.
42 Note: this is different from the function's behaviour in WIPs 3.9.34,
43 3.9.35 and 3.9.36. If you used this function under one of these WIPs,
44 you will have to increase your parameter by one to get the same volume.
45
46 Note: The default behaviour has changed as of Allegro 4.1.15. If you
47 would like the behaviour of earlier versions of Allegro, pass -1 to
48 this function. Allegro will choose a value dependent on the number of
49 voices, so that if you reserve n voices, you can play up to n/2 nor‐
50 malised samples with centre panning without risking distortion. The
51 exception is when you have fewer than 8 voices, where the volume
52 remains the same as for 8 voices. Here are the values, dependent on the
53 number of voices:
54
55 1-8 voices - set_volume_per_voice(2)
56 16 voices - set_volume_per_voice(3)
57 32 voices - set_volume_per_voice(4)
58 64 voices - set_volume_per_voice(5)
59
60 Of course this function does not override the volume you specify with
61 play_sample() or voice_set_volume(). It simply alters the overall out‐
62 put of the program. If you play samples at lower volumes, or if they
63 are not normalised, then you can play more of them without distortion.
64
65 It is recommended that you hard-code the parameter into your program,
66 rather than offering it to the user. The user can alter the volume with
67 the configuration file instead, or you can provide for this with
68 set_volume().
69
70 To restore volume per voice to its default behaviour, pass 1.
71
72
74 reserve_voices(3), set_volume(3), install_sound(3),
75 detect_digi_driver(3), detect_midi_driver(3)
76
77
78
79Allegro version 4.4.2 set_volume_per_voice(3)