# SND_SetChannelVolume

## C Specification

      #include <nitro/snd.h>

      void SND_SetChannelVolume(
      u32 chBitMask,
      int volume,
      SNDChannelDataShift shift );

## Arguments

`chBitMask` | The channel bit mask. It specifies which channels to control.
`volume` | The volume. Takes a value between 0 and 127.
`shift` | The data shift setting.

## Return Values

None.

## Description

Changes the channel volume.

The channel bit mask `chBitMask` specifies which channels to control. The channels are represented in order, with the lowest bit representing channel 0. Only channels whose representative bits are standing are controlled.

Choose from among these values for the data shift setting `shift`:

Table. SNDChannelDataShift

Label | Description
--- | ---
SND_CHANNEL_DATASHIFT_NONE | Do not perform a data shift.
SND_CHANNEL_DATASHIFT_1BIT | Shift data 1 bit right.
SND_CHANNEL_DATASHIFT_2BIT | Shift data 2 bit right.
SND_CHANNEL_DATASHIFT_4BIT | Shift data 4 bit right.

### Caution

This function is an ARM7 reserved function. After this function is called, processing occurs only after the command is issued with the `SND_FlushCommand` function.

When it is necessary to synchronize something with the completion of the process, first use `SND_GetCurrentCommandTag` to obtain the command tag immediately after calling this function. After the command is issued, use the command tag and call either the `SND_IsFinishedCommandTag` or `SND_WaitForCommandProc` function to confirm that the process has finished or to wait for it to complete.

## See Also

`SND_FlushCommand, SND_GetCurrentCommandTag, SND_IsFinishedCommandTag, SND_WaitForCommandProc`

## Revision History

02/17/2005 Added a note about ARM7 command processing
07/20/2004 Initial version