### IMMAmpMixer

  The IMMAmpMixer class provides input or output switching and sound-shaping services, such as volume, treble, gain, or bass control. The amplifier-mixer is similar to a home stereo amplifier and mixer. Devices are connected to the IMMAmpMixer so that audio signals can be transferred to speakers or another device.

### IMMAmpMixer - Member Functions and Data by Group

### Constructors & Destructor

You can construct and destruct objects of this class.

~IMMAmpMixer

      public:
      virtual ~IMMAmpMixer()

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

IMMAmpMixer

  Overload 1

      public:
      IMMAmpMixer( unsigned long deviceIdentifier,
                   const IString& newAlias = IString ( ) )

  A derived class can construct an IMMAmpMixer from the following:

  deviceIdentifier
    The value the system uses to identify the device.
  newAlias
    The name you can use to associate a string to the device. Optional.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

  Overload 2

      public:
      IMMAmpMixer( bool openNow = true,
                   unsigned long instance = 0,
                   bool openShareable = true )

  You can construct an IMMAmpMixer from the following:

  openNow
    If true, it causes the device to automatically open the device before returning from the constructor; otherwise, you would have to call one of the open functions to open the device yourself.
  instance
    Specifies your own instance number instead of one being generated for you.
  openShareable
    If true, it allows the hardware device to be shared by different programs; otherwise, the hardware cannot be shared.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

### Implementation

These members check if the passed in string is in the correct format to open the current device.

close

      public:
      virtual IMMAmpMixer& close(CallType call = wait)

  Closes a device.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

Portability Considerations

  This member is overridden in this derived class for specific operating system behavior.

open

  Opens the device.

  Overload 1

      public:
      virtual IMMAmpMixer&
        open( const IString& fileOrDevice = IString ( ),
              bool shareable = true,
              CallType call = wait )

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

Portability Considerations

  This member is overridden in this derived class for specific operating system behavior.

  Overload 2

      protected:
      virtual IMMAmpMixer&
        open( unsigned long instanceNumber,
              bool shareable = true,
              CallType call = nowait )

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

Portability Considerations

  This member is overridden in this derived class for specific operating system behavior.

openOnThread

  Opens the device.

  Overload 1

      public:
      virtual IMMAmpMixer&
        openOnThread( const IString& fileOrDevice = IString ( ),
                      bool shareable = true,
                      CallType call = wait )

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

Portability Considerations

  This member is overridden in this derived class for specific operating system behavior.

  Overload 2

      protected:
      virtual IMMAmpMixer&
        openOnThread( unsigned long instanceNumber,
                      bool shareable = true )

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

Portability Considerations

  This member is overridden in this derived class for specific operating system behavior.

isOpenStringValid

      protected:
      virtual bool
        isOpenStringValid( const IString& deviceName ) const

  Returns true if the passed in open string is valid for this device.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

### Mixer Attributes

Use these members to query and set the different amplifier-mixer attributes.

balance

      public:
      unsigned long balance(CallType call = wait) const

  Returns the balance, where 0 is defined as full left balance and 100 is defined as full right balance.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

bass

      public:
      unsigned long bass(CallType call = wait) const

  Returns the bass, where 0 is the least amount of bass and 100 is the most amount of bass.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

gain

      public:
      unsigned long gain(CallType call = wait) const

  Returns the gain, where 0 is the least amount of gain and 100 is the most amount of gain.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

pitch

      public:
      unsigned long pitch(CallType call = wait) const

  Returns the pitch, where 0 is the lowest pitch and 100 the highest pitch.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

setBalance

      public:
      virtual IMMAmpMixer&
        setBalance( unsigned long balance,
                    CallType call = wait )

  Sets the balance, where 0 is defined as full left balance and 100 is defined as full right balance.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

setBass

      public:
      virtual IMMAmpMixer&
        setBass( unsigned long bass,
                 CallType call = wait )

  Sets the bass, where 0 is the least amount of bass and 100 is the most amount of bass.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

setGain

      public:
      virtual IMMAmpMixer&
        setGain( unsigned long gain,
                 CallType call = wait )

  Sets the gain, where 0 is the least amount of gain and 100 is the most amount of gain.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

setPitch

      public:
      virtual IMMAmpMixer&
        setPitch( unsigned long pitch,
                  CallType call = wait )

  Sets the pitch, where 0 is lowest pitch and 100 is the highest pitch.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

setTreble

      public:
      virtual IMMAmpMixer&
        setTreble( unsigned long treble,
                   CallType call = wait )

  Sets the treble, where 0 is the least amount of treble and 100 is the most amount of treble.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

treble

      public:
      unsigned long treble(CallType call = wait) const

  Returns the treble, where 0 is the least amount of treble and 100 is the most amount of treble.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

### Monitoring

Use these members to either allow or not allow the signal from an input device to be heard when it is being routed to another device.

The amplifier-mixer device has the ability to monitor (listen to) the audio signal from one device while the audio signal from a second device is being recorded. The main use of monitoring is for recording and mixing more than one audio source. The amplifier-mixer device supports one audio connection and the ability to monitor a second audio source.

disableMonitoring

      public:
      virtual IMMAmpMixer&
        disableMonitoring( CallType call = wait )

  Does not allow the signal from an input device to be heard as it is being routed to another device. The amplifier-mixer device has the ability to monitor (listen to) the audio signal from one device while the audio signal from a second device is being recorded. The main use of monitoring is for recording and mixing more than one audio source. The amplifier-mixer device supports one audio connection and the ability to monitor a second audio source.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

enableMonitoring

      public:
      virtual IMMAmpMixer&
        enableMonitoring( bool enable = true,
                          CallType call = wait )

  Allows the signal from an input device to be heard as it is being routed to another device. The amplifier-mixer device has the ability to monitor (listen to) the audio signal from one device while the audio signal from a second device is being recorded. The main use of monitoring is for recording and mixing more than one audio source. The amplifier-mixer device supports one audio connection and the ability to monitor a second audio source.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

isMonitoringEnabled

      public:
      bool isMonitoringEnabled(CallType call = wait) const

  Returns true if the monitor is turned on. The amplifier-mixer device has the ability to monitor (listen to) the audio signal from one device while the audio signal from a second device is being recorded.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

### IMMAmpMixer - Inherited Member Functions and Data

#### Inherited Public Functions

  IMMDevice

  -     virtual ~IMMDevice()

  -     virtual IMMDevice&
          acquire( ShareMode acquire = shareable,
                   bool queuedForResources = false,
                   CallType call = wait )

  -     IString aliasName() const

  -     virtual IMMDevice& close(CallType call = wait)

  -     unsigned long
          connectedDeviceId( ConnectorType type,
                             CallType call = wait ) const

  -     virtual IMMDevice&
          deletePendingEvents( EventType event = allEvents )

  -     IString description(CallType call = wait) const

  -     unsigned long deviceId() const

  -     IString deviceName() const

  -     unsigned long deviceType(CallType call = wait) const

  -     virtual IMMDevice&
          disableAudio( AudioChannel channel = all,
                        const IMMMillisecondTime& over = IMMMillisecondTime ( ),
                        CallType call = wait )

  -     virtual IMMDevice&
          disableConnector( ConnectorType type,
                            CallType call = wait )

  -     virtual IMMDevice&
          enableAudio( bool enable = true,
                       AudioChannel channel = all,
                       const IMMMillisecondTime& over = IMMMillisecondTime ( ),
                       CallType call = wait )

  -     virtual IMMDevice&
          enableConnector( ConnectorType type,
                           bool enable = true,
                           CallType call = wait )

  -     virtual IMMDevice& enableNotification(bool enabled = true)

  -     bool isAcquired(CallType call = wait) const

  -     bool
          isAudioEnabled( AudioChannel channel = all,
                          CallType call = wait )

  -     bool isCloseOnDestroy() const

  -     bool
          isConnectionSupported( ConnectorType type,
                                 CallType call = wait ) const

  -     bool
          isConnectorEnabled( ConnectorType type,
                              CallType call = wait ) const

  -     bool isOpen() const

  -     virtual Mode mode(CallType call = wait) const

  -     virtual IMMDevice&
          open( const IString& fileOrDevice = IString ( ),
                bool shareable = true,
                CallType call = wait )

  -     virtual IMMDevice&
          openOnThread( const IString& fileOrDevice = IString ( ),
                        bool shareable = true,
                        CallType call = wait )

  -     IMMTime prerollTime(CallType call = wait) const

  -     PrerollType prerollType(CallType call = wait) const

  -     virtual IMMDevice& release(CallType call = wait)

  -     bool requiresFiles(CallType call = wait) const

  -     IMMDevice& setCloseOnDestroy(bool close = true)

  -     virtual IMMDevice&
          setSpeedFormat( IMMSpeed::Format format,
                          CallType call = wait )

  -     virtual IMMDevice&
          setTimeFormat( IMMTime::Format format,
                         CallType call = wait )

  -     virtual IMMDevice&
          setVolume( unsigned long volume,
                     AudioChannel channel = all,
                     const IMMMillisecondTime& over = IMMMillisecondTime ( ),
                     CallType call = wait )

  -     IMMSpeed::Format speedFormat(CallType call = wait) const

  -     bool supportsAudio(CallType call = wait) const

  -     bool
          supportsCommand( IMMNotifyEvent::Command command,
                           CallType call = wait ) const

  -     bool supportsDigitalTransfer(CallType call = wait) const

  -     bool supportsDisableEject(CallType call = wait) const

  -     bool supportsEject(CallType call = wait) const

  -     bool supportsPlay(CallType call = wait) const

  -     bool supportsRecord(CallType call = wait) const

  -     bool supportsRecordInsertion(CallType call = wait) const

  -     bool supportsSave(CallType call = wait) const

  -     bool supportsStreaming(CallType call = wait) const

  -     bool supportsVideo(CallType call = wait) const

  -     bool supportsVolumeAdjustment(CallType call = wait) const

  -     IMMTime::Format timeFormat(CallType call = wait) const

  -     virtual unsigned long
          volume( AudioChannel channel = left,
                  CallType call = wait ) const

  INotifier

  -     virtual ~INotifier()

  -     virtual INotifier& disableNotification() = 0

  -     virtual INotifier&
          enableNotification( bool enable = true ) = 0

  -     INotifier()

  -     virtual bool isEnabledForNotification() const = 0

  -     virtual INotifier&
          notifyObservers( const INotificationEvent& event ) = 0

  -     virtual INotifier&
          notifyObserversAsync( const INotificationEvent& event )

  -     const IThreadId& threadId() const

  IStandardNotifier

  -     virtual ~IStandardNotifier()

  -     virtual IStandardNotifier& disableNotification()

  -     virtual IStandardNotifier&
          enableNotification( bool enable = true )

  -     virtual bool isEnabledForNotification() const

  -     IStandardNotifier(const IStandardNotifier& copy)

  -     IStandardNotifier()

  -     virtual INotifierAddress notifierAddress() const

  -     virtual IStandardNotifier&
          notifyObservers( const INotificationEvent& anEvent )

  -     virtual IStandardNotifier&
          notifyObserversAsync( const INotificationEvent& anEvent )

  -     IStandardNotifier&
          operator =( const IStandardNotifier& aStandardNotifier )

#### Inherited Public Data

  INotifier

  -     static INotificationId const allChangesId

  -     static INotificationId const deleteId

  IMMDevice

  -     static const unsigned long allDevices

  -     static const unsigned long ampMixer

  -     static const unsigned long animation

  -     static const unsigned long audioCD

  -     static const unsigned long audioTape

  -     static const unsigned long cdxa

  -     static INotificationId const commandNotifyId

  -     static INotificationId const cuePointId

  -     static const unsigned long dat

  -     static INotificationId const deviceEventId

  -     static const unsigned long digitalVideo

  -     static const unsigned long headphone

  -     static const unsigned long microphone

  -     static const unsigned long monitor

  -     static const unsigned long other

  -     static const unsigned long overlay

  -     static INotificationId const passDeviceId

  -     static INotificationId const positionChangeId

  -     static const unsigned long sequencer

  -     static const unsigned long speaker

  -     static const unsigned long videoDisc

  -     static const unsigned long videoTape

  -     static const unsigned long waveAudio

#### Inherited Protected Functions

  IStandardNotifier

  -     virtual IStandardNotifier&
          addObserver( IObserver& observer,
                       const IInterest& interest )

  -     virtual IStandardNotifier&
          notifyObservers( const INotificationId& nId )

  -     virtual IObserverList&
          observerList( const IInterest* anInterest = 0 ) const

  -     virtual IStandardNotifier& removeAllObservers()

  -     virtual IStandardNotifier&
          removeObserver( IObserver& observer,
                          const IInterest& interest )

  -     virtual IStandardNotifier&
          removeObserver( IObserver& observer )

  INotifier

  -     virtual INotifier&
          addObserver( IObserver& observer,
                       const IInterest& interest )

  -     virtual INotifier&
          notifyObservers( const INotificationId& id ) = 0

  -     virtual IObserverList&
          observerList( const IInterest* anInterest = 0 ) const = 0

  -     virtual INotifier& removeAllObservers() = 0

  -     virtual INotifier& removeObserver(IObserver& observer) = 0

  -     virtual INotifier&
          removeObserver( IObserver& observer,
                          const IInterest& interest )

  IMMDevice

  -     IMMMessageWindow& deviceWindow() const

  -     IMMDevice( unsigned long deviceIdentifier,
                   const IString& newAlias = IString ( ) )

  -     IMMDevice(const IString& fileOrDevice)

  -     unsigned long
          itemCapability( unsigned long item,
                          CallType call ) const

  -     unsigned long
          itemStatus( unsigned long item,
                      unsigned long value = 0,
                      CallType call = wait ) const

  -     unsigned long lastError() const

  -     virtual bool
          mixerControlValues( unsigned long dwComponentType,
                              unsigned long dwControlType,
                              unsigned short* usDetails,
                              bool uniform = true,
                              unsigned long multipleItems = 0,
                              unsigned long hmx = NULL )

  -     virtual bool
          mixerControlValues( unsigned long dwComponentType,
                              unsigned long dwControlType,
                              unsigned long* ulDetails,
                              bool uniform = true,
                              unsigned long multipleItems = 0,
                              unsigned long hmx = NULL )

  -     IMMDeviceNotifyHandler* notificationHandler() const

  -     virtual IMMDevice&
          open( unsigned long instanceNumber,
                bool shareable = true,
                CallType call = nowait )

  -     virtual IMMDevice&
          openOnThread( unsigned long instanceNumber,
                        bool shareable = true )

  -     OpenStatus openStatus() const

  -     virtual IMMDevice&
          restoreDeviceSettings( bool newRecordMode = false )

  -     virtual IMMDevice& saveDeviceSettings()

  -     IString sendCommand(const IString& command)

  -     IMMDevice&
          sendCommand( unsigned short message,
                       unsigned long param1,
                       void* param2,
                       unsigned short userParm )

  -     IMMDevice&
          sendCommand( unsigned short message,
                       unsigned long param1,
                       void* param2 )

  -     IString
          sendCommand( const IString& command,
                       unsigned short userParm )

  -     IMMDevice& setLastError(unsigned long errorId)

  -     virtual bool
          setMixerControlValues( unsigned long dwComponentType,
                                 unsigned long dwControlType,
                                 unsigned short* usDetails,
                                 bool uniform = true,
                                 unsigned long multipleItems = 0,
                                 unsigned long hmx = NULL )

  -     virtual bool
          setMixerControlValues( unsigned long dwComponentType,
                                 unsigned long dwControlType,
                                 unsigned long* ulDetails,
                                 bool uniform = true,
                                 unsigned long multipleItems = 0,
                                 unsigned long hmx = NULL )

  -     IMMDevice&
          setNotificationHandler( IMMDeviceNotifyHandler* notifyHandler )

  -     IMMDevice& setOpenStatus(OpenStatus status)

  -     IMMDevice& setPassDeviceRequested(bool sawPassDevice)

  -     IMMDevice& setSystemMixerHandle(unsigned long hmx)

  -     IMMDevice& setUserParameter(unsigned short userParm = 0)

  -     unsigned long systemMixerHandle() const

  -     unsigned short userParameter() const

  -     bool wasPassDeviceRequested() const

#### Inherited Protected Data

  - None