TeamTalk 4 .NET DLL  Version 4.5A
Sound Capture and Playback

This section explains how to record and playback audio in the client instance. More...

Classes

struct  BearWare.SoundDevice
 A struct containing the properties of a sound device for either playback or recording. More...
 
struct  BearWare.SoundLevel
 An enum encapsulation the minimum, maximum and default sound levels for input and output sound devices. More...
 
struct  BearWare.AudioBlock
 An audio block containing the raw audio from a user who was talking. More...
 
struct  BearWare.AudioFormat
 Struct describing the audio format used by a media file. More...
 

Enumerations

enum  BearWare.SoundSystem : uint {
  BearWare.SOUNDSYSTEM_NONE = 0, BearWare.SOUNDSYSTEM_WINMM = 1, BearWare.SOUNDSYSTEM_DSOUND = 2, BearWare.SOUNDSYSTEM_ALSA = 3,
  BearWare.SOUNDSYSTEM_COREAUDIO = 4, BearWare.SOUNDSYSTEM_WASAPI = 5
}
 The supported sound systems. More...
 
enum  BearWare.AudioFileStatus : uint { BearWare.AFS_ERROR = 0, BearWare.AFS_STARTED = 1, BearWare.AFS_FINISHED = 2, BearWare.AFS_ABORTED = 3 }
 Status of audio files being written to disk. More...
 
enum  BearWare.AudioFileFormat : uint {
  BearWare.AFF_NONE = 0, BearWare.AFF_WAVE_FORMAT = 2, BearWare.AFF_MP3_64KBIT_FORMAT = 3, BearWare.AFF_MP3_128KBIT_FORMAT = 4,
  BearWare.AFF_MP3_256KBIT_FORMAT = 5, BearWare.AFF_MP3_16KBIT_FORMAT = 6, BearWare.AFF_MP3_32KBIT_FORMAT = 7
}
 Audio file formats supported for muxed audio recordings. More...
 

Functions

bool BearWare.TeamTalk4.GetDefaultSoundDevices (out int lpnInputDeviceID, out int lpnOutputDeviceID)
 Get the default sound devices. More...
 
bool BearWare.TeamTalk4.GetDefaultSoundDevicesEx (SoundSystem nSndSystem, out int lpnInputDeviceID, out int lpnOutputDeviceID)
 Get the default sound devices for the specified sound system. More...
 
bool BearWare.TeamTalk4.GetSoundInputDevices (out SoundDevice[] lpSoundDevices)
 Get information about input devices for audio recording. More...
 
bool BearWare.TeamTalk4.GetSoundOutputDevices (out SoundDevice[] lpSoundDevices)
 Get the list of sound output devices for playback. More...
 
bool BearWare.TeamTalk4.InitSoundInputDevice (int nInputDeviceID)
 Initialize the sound input devices (for recording audio). More...
 
bool BearWare.TeamTalk4.InitSoundOutputDevice (int nOutputDeviceID)
 Initialize the sound output devices (for sound playback). More...
 
bool BearWare.TeamTalk4.InitSoundDuplexDevices (int nInputDeviceID, int nOutputDeviceID)
 Enable duplex mode where multiple audio streams are mixed into a single stream using software. More...
 
bool BearWare.TeamTalk4.CloseSoundInputDevice ()
 Shutdown the input sound device. More...
 
bool BearWare.TeamTalk4.CloseSoundOutputDevice ()
 Shutdown the output sound device. More...
 
bool BearWare.TeamTalk4.CloseSoundDuplexDevices ()
 Shut down sound devices running in duplex mode. More...
 
static bool BearWare.TeamTalk4.RestartSoundSystem ()
 Reinitialize sound system (in order to detect new/removed devices). More...
 
bool BearWare.TeamTalk4.StartSoundLoopbackTest (int nInputDeviceID, int nOutputDeviceID, int nSampleRate, int nChannels)
 Perform a record and playback test of specified sound devices. More...
 
bool BearWare.TeamTalk4.StartSoundLoopbackTestEx (int nInputDeviceID, int nOutputDeviceID, int nSampleRate, int nChannels, AudioConfig lpAudioConfig, bool bEchoCancel)
 Perform a record and playback test of specified sound devices along with an audio configuration and ability to try echo cancellation. More...
 
bool BearWare.TeamTalk4.StopSoundLoopbackTest ()
 Stop recorder and playback test. More...
 
int BearWare.TeamTalk4.GetSoundInputLevel ()
 Get the volume level of the current recorded audio. More...
 
bool BearWare.TeamTalk4.SetSoundInputGainLevel (int nLevel)
 Set voice gaining of recorded audio. More...
 
int BearWare.TeamTalk4.GetSoundInputGainLevel ()
 Get voice gain level of outgoing audio. More...
 
bool BearWare.TeamTalk4.SetSoundOutputVolume (int nVolume)
 Set master volume. More...
 
int BearWare.TeamTalk4.GetSoundOutputVolume ()
 Get master volume. More...
 
bool BearWare.TeamTalk4.SetSoundOutputMute (bool bMuteAll)
 Set all users mute. More...
 
bool BearWare.TeamTalk4.EnableDenoising (bool bEnable)
 Enable denoising of recorded audio. More...
 
bool BearWare.TeamTalk4.SetDenoiseLevel (int nLevel)
 Set the denoise level of recorded audio. More...
 
int BearWare.TeamTalk4.GetDenoiseLevel ()
 Set the denoise level of recorded audio. More...
 
bool BearWare.TeamTalk4.EnableEchoCancellation (bool bEnable)
 Enable/disable acoustic echo cancellation (AEC). More...
 
bool BearWare.TeamTalk4.EnableAGC (bool bEnable)
 Enable Automatic Gain Control. More...
 
bool BearWare.TeamTalk4.SetAGCSettings (int nGainLevel, int nMaxIncrement, int nMaxDecrement, int nMaxGain)
 Set Automatic Gain Control (AGC) settings. More...
 
bool BearWare.TeamTalk4.GetAGCSettings (out int lpnGainLevel, out int lpnMaxIncrement, out int lpnMaxDecrement, out int lpnMaxGain)
 Get Automatic Gain Control settings. More...
 
bool BearWare.TeamTalk4.Enable3DSoundPositioning (bool bEnable)
 Enable automatically position users using 3D-sound. More...
 
bool BearWare.TeamTalk4.AutoPositionUsers ()
 Automatically position users using 3D-sound. More...
 
bool BearWare.TeamTalk4.EnableAudioBlockEvent (bool bEnable)
 Enable/disable access to user's raw audio. More...
 
bool BearWare.TeamTalk4.SetUserVolume (int nUserID, int nVolume)
 Set the volume of a user. More...
 
int BearWare.TeamTalk4.GetUserVolume (int nUserID)
 Get the volume of a user. More...
 
bool BearWare.TeamTalk4.SetUserGainLevel (int nUserID, int nGainLevel)
 Use software to gain a user's volume. More...
 
int BearWare.TeamTalk4.GetUserGainLevel (int nUserID)
 Get the software gain level for a user. More...
 
bool BearWare.TeamTalk4.SetUserMute (int nUserID, bool bMute)
 Mute a user. More...
 
bool BearWare.TeamTalk4.SetUserStoppedTalkingDelay (int nUserID, int nDelayMSec)
 Set the delay of when a user should be considered to no longer be talking. More...
 
int BearWare.TeamTalk4.GetUserStoppedTalkingDelay (int nUserID)
 Get the delay of when a user should no longer be considered as talking. More...
 
bool BearWare.TeamTalk4.SetUserPosition (int nUserID, float x, float y, float z)
 Set the position of a user. More...
 
bool BearWare.TeamTalk4.GetUserPosition (int nUserID, out float x, out float y, out float z)
 Get a user's position. More...
 
bool BearWare.TeamTalk4.SetUserStereo (int nUserID, bool bLeftSpeaker, bool bRightSpeaker)
 Set whether a user should speak in the left, right or both speakers. This function only works if BearWare.AudioCodec has been set to use stereo. More...
 
bool BearWare.TeamTalk4.GetUserStereo (int nUserID, out bool lpbLeftSpeaker, out bool lpbRightSpeaker)
 Check what speaker a user is outputting to. More...
 
bool BearWare.TeamTalk4.SetUserAudioFolder (int nUserID, string szFolderPath, string szFileNameVars, AudioFileFormat uAFF)
 Store audio conversations to disk. More...
 
bool BearWare.TeamTalk4.SetUserMediaBufferSize (int nUserID, int nMSec)
 Change the amount of media data which can be buffered in the user's playback queue. More...
 
bool BearWare.TeamTalk4.AcquireUserAudioBlock (int nUserID, ref AudioBlock lpAudioBlock)
 Extract the raw audio from a user who has been talking. More...
 
bool BearWare.TeamTalk4.ReleaseUserAudioBlock (int nUserID)
 Release the shared memory of an BearWare.AudioBlock. More...
 
bool BearWare.TeamTalk4.ReleaseAllUserAudioBlocks ()
 Release all audio blocks of the local client instance. More...
 

Variables

const int BearWare.TeamTalk4.TT_SAMPLERATES_MAX = 16
 

Detailed Description

This section explains how to record and playback audio in the client instance.

Before being able to initialize the sound devices to use for recording and playback the computer's available sound devices must first be queried. This is done using the functions TeamTalk4.GetSoundInputDevices() and TeamTalk4.GetSoundOutputDevices(). These two functions return arrays of BearWare.SoundDevice-structs which contains a description of the sound device. In the BearWare.SoundDevice-struct there's a member variable called nDeviceID. This ID should be passed to the client instance's two sound initialization functions TeamTalk4.InitSoundInputDevice() and TeamTalk4.InitSoundOutputDevice(). Once this has been done the TeamTalk4.GetFlags() call will return a value containing the mask bits ClientFlag CLIENT_SNDINPUT_READY and ClientFlag CLIENT_SNDOUTPUT_READY.

A computer's default sound devices can be queried using TeamTalk4.GetDefaultSoundDevices(). A loop-back test of the selected sound devices can be performed using TeamTalk4.StartSoundLoopbackTest().

Be aware that the sound devices might fail if e.g. a USB sound device is unplugged while the client is talking in a channel. In this case ensure the application is processing the errors ClientError INTERR_SNDINPUT_FAILURE and ClientError INTERR_SNDOUTPUT_FAILURE in the TeamTalk4.OnInternalError() event.

Read section Audio and Video Transmission to see how to transmit recorded audio to other users.

Enumeration Type Documentation

enum BearWare.SoundSystem : uint

The supported sound systems.

See Also
SoundDevice
TeamTalk4.InitSoundInputDevice()
TeamTalk4.InitSoundOutputDevice()
TeamTalk4.InitSoundDuplexDevices()
Enumerator
SOUNDSYSTEM_NONE 

Sound system denoting invalid or not found.

SOUNDSYSTEM_WINMM 

Windows legacy audio system. Should be used on Windows Mobile.

SOUNDSYSTEM_DSOUND 

DirectSound audio system. Should be used on Windows 2K/XP.

SOUNDSYSTEM_ALSA 

Advanced Linux Sound Architecture (ALSA). Should be used on Linux.

Often ALSA sound devices only support a limited number of sample rates so TeamTalk internally use software filters to resample the audio to the sample rate used by the selected audio codecs.

SOUNDSYSTEM_COREAUDIO 

Core Audio. Should be used on MacOS.

SOUNDSYSTEM_WASAPI 

Windows Audio Session API (WASAPI). Should be used on Windows Vista/7.

WASAPI audio devices typically only support a single sample rate so internally TeamTalk uses software filters to resample audio to the sample rate used by the selected audio codecs.

Check supportedSampleRates and nDefaultSampleRate of BearWare.SoundDevice to see which sample rates are supported.

Status of audio files being written to disk.

See Also
OnUserAudioFile
Enumerator
AFS_ERROR 

Error while processing audio file.

AFS_STARTED 

Started processing audio file.

AFS_FINISHED 

Finished processing audio file.

AFS_ABORTED 

Aborted processing of audio file.

Audio file formats supported for muxed audio recordings.

See Also
TeamTalk4.StartRecordingMuxedAudioFile()
Enumerator
AFF_NONE 

Used to denote nothing selected.

AFF_WAVE_FORMAT 

Store in 16-bit wave format.

AFF_MP3_64KBIT_FORMAT 

Store in MP3-format. This requires lame_enc.dll to be in the same directory as the application's execuable. The LAME DLLs can be obtained from http://lame.sourceforge.net. Note that the MP3-format is subject to licensing by Fraunhofer and Thomson Multimedia.

AFF_MP3_128KBIT_FORMAT 
See Also
AudioFileFormat AFF_MP3_64KBIT_FORMAT
AFF_MP3_256KBIT_FORMAT 
See Also
AudioFileFormat AFF_MP3_64KBIT_FORMAT
AFF_MP3_16KBIT_FORMAT 
See Also
AudioFileFormat AFF_MP3_64KBIT_FORMAT
AFF_MP3_32KBIT_FORMAT 
See Also
AudioFileFormat AFF_MP3_64KBIT_FORMAT

Function Documentation

bool BearWare.TeamTalk4.GetDefaultSoundDevices ( out int  lpnInputDeviceID,
out int  lpnOutputDeviceID 
)

Get the default sound devices.

Parameters
lpnInputDeviceIDThe ID of the default input device.
lpnOutputDeviceIDThe ID of the default output device.
See Also
TeamTalk4.InitSoundInputDevice
TeamTalk4.InitSoundOutputDevice
bool BearWare.TeamTalk4.GetDefaultSoundDevicesEx ( SoundSystem  nSndSystem,
out int  lpnInputDeviceID,
out int  lpnOutputDeviceID 
)

Get the default sound devices for the specified sound system.

See Also
TT_GetDefaultSoundDevices()
bool BearWare.TeamTalk4.GetSoundInputDevices ( out SoundDevice[]  lpSoundDevices)

Get information about input devices for audio recording.

Parameters
lpSoundDevicesAn output array of BearWare.SoundDevice-structs which will receive the available sound input devices.
See Also
TeamTalk4.GetDefaultSoundDevices
TeamTalk4.InitSoundInputDevice
TeamTalk4.InitSoundOutputDevice
bool BearWare.TeamTalk4.GetSoundOutputDevices ( out SoundDevice[]  lpSoundDevices)

Get the list of sound output devices for playback.

The nDeviceID of the BearWare.SoundDevice struct should be passed to InitSoundOutputDevice.

Parameters
lpSoundDevicesAn output array of BearWare.SoundDevice-structs which will receive the available sound output devices.
See Also
TeamTalk4.GetDefaultSoundDevices
TeamTalk4.InitSoundOutputDevice
bool BearWare.TeamTalk4.InitSoundInputDevice ( int  nInputDeviceID)

Initialize the sound input devices (for recording audio).

The nDeviceID of the BearWare.SoundDevice should be used as nInputDeviceID.

Calling this function will set the flag ClientFlag CLIENT_SNDINPUT_READY.

Parameters
nInputDeviceIDThe nDeviceID of BearWare.SoundDevice extracted through GetSoundInputDevices.
See Also
BearWare.SoundDevice
GetDefaultSoundDevices
GetSoundInputDevices
CloseSoundInputDevice
GetSoundInputLevel
bool BearWare.TeamTalk4.InitSoundOutputDevice ( int  nOutputDeviceID)

Initialize the sound output devices (for sound playback).

The nDeviceID of the BearWare.SoundDevice should be used as nOutputDeviceID.

Callling this function will set the flag ClientFlag CLIENT_SNDOUTPUT_READY.

Parameters
nOutputDeviceIDShould be the nDeviceID of BearWare.SoundDevice extracted through GetSoundOutputDevices().
See Also
BearWare.SoundDevice
TeamTalk4.GetDefaultSoundDevices
TeamTalk4.GetSoundOutputDevices
TeamTalk4.CloseSoundOutputDevice
bool BearWare.TeamTalk4.InitSoundDuplexDevices ( int  nInputDeviceID,
int  nOutputDeviceID 
)

Enable duplex mode where multiple audio streams are mixed into a single stream using software.

Duplex mode can ONLY be enabled on sound devices which support the same sample rate. Sound systems SoundSystem SOUNDSYSTEM_WASAPI and SoundSystem SOUNDSYSTEM_ALSA typically only support a single sample rate. Check supportedSampleRates in BearWare.SoundDevice to see which sample rates are supported.

Sound duplex mode is required for echo cancellation since sound input and output device must be synchronized. Also sound cards which does not support multiple output streams should use duplex mode.

If TeamTalk4.InitSoundDuplexDevices() is successful the following flags will be set:

Sound duplex mode is required for echo cancellation since sound input and output device must be synchronized. Also sound cards which does not support multiple output stream should use duplex mode.

Call TeamTalk4.CloseSoundDuplexDevices() to shut down duplex mode.

Note that it is only the audio streams from users in the local client instance's current channel which will be mixed. If the local client instance calls TeamTalk4.DoSubscribe() with Subscription SUBSCRIBE_INTERCEPT_AUDIO on a user in another channel then the audio from this user will be started in a separate stream. The reason for this is that the other user may use a different audio codec.

Parameters
nInputDeviceIDThe nDeviceID of BearWare.SoundDevice extracted through GetSoundInputDevices().
nOutputDeviceIDThe nDeviceID of BearWare.SoundDevice extracted through GetSoundOutputDevices().
See Also
TeamTalk4.InitSoundInputDevice()
TeamTalk4.InitSoundOutputDevice()
TeamTalk4.EnableEchoCancellation()
TeamTalk4.CloseSoundDuplexDevices()
bool BearWare.TeamTalk4.CloseSoundInputDevice ( )

Shutdown the input sound device.

Callling this function will clear the flag ClientFlag CLIENT_SNDINPUT_READY.

If the local client instance is running in duplex mode (flag ClientFlag CLIENT_SNDINOUTPUT_DUPLEX is set) then trying to close the sound device will fail since duplex mode require that both input and output sound devices are active at the same time. Therefore in order to close sound devices running in duplex mode call TeamTalk4.CloseSoundDuplexDevices().

Returns
If running in sound duplex mode (ClientFlag CLIENT_SNDINOUTPUT_DUPLEX) then ensure to disable duplex mode prior to closing the sound device.
See Also
TeamTalk4.InitSoundInputDevice
bool BearWare.TeamTalk4.CloseSoundOutputDevice ( )

Shutdown the output sound device.

Callling this function will clear set the flag ClientFlag CLIENT_SNDOUTPUT_READY.

If the local client instance is running in duplex mode (flag ClientFlag CLIENT_SNDINOUTPUT_DUPLEX is set) then trying to close the sound device will fail since duplex mode require that both input and output sound devices are active at the same time. Therefore in order to close sound devices running in duplex mode call TeamTalk4.CloseSoundDuplexDevices().

Returns
If running in sound duplex mode (ClientFlag CLIENT_SNDINOUTPUT_DUPLEX) then ensure to disable duplex mode prior to closing the sound device.
See Also
TeamTalk4.InitSoundOutputDevice
bool BearWare.TeamTalk4.CloseSoundDuplexDevices ( )

Shut down sound devices running in duplex mode.

Calling this function only applies if sound devices has been initialized with TeamTalk4.InitSoundDuplexDevices().

static bool BearWare.TeamTalk4.RestartSoundSystem ( )
static

Reinitialize sound system (in order to detect new/removed devices).

When the TeamTalk client is first initialized all the sound devices are detected and stored in a list inside the client instance. If a user adds or removes e.g. a USB sound device then it's not picked up automatically by the client instance. TT_RestartSoundSystem() can be used to reinitialize the sound system and thereby detect if sound devices have been removed or added.

In order to restart the sound system all sound devices in all client instances must be closed using TT_CloseSoundInputDevice(), TT_CloseSoundoutputDevice() and TT_CloseSoundDuplexDevices().

bool BearWare.TeamTalk4.StartSoundLoopbackTest ( int  nInputDeviceID,
int  nOutputDeviceID,
int  nSampleRate,
int  nChannels 
)

Perform a record and playback test of specified sound devices.

Call StopSoundLoopbackTest() to stop the loopback test.

Parameters
nInputDeviceIDShould be the nDeviceID extracted through GetSoundInputDevices.
nOutputDeviceIDShould be the nDeviceID extracted through GetSoundOutputDevices.
nSampleRateThe sample rate the client's recorder should use.
nChannelsNumber of channels to use, i.e. 1 = mono, 2 = stereo. Note that echo cancellation, denoising and AGC is not supported in stereo.
See Also
TeamTalk4.InitSoundInputDevice()
TeamTalk4.InitSoundOutputDevice()
TeamTalk4.StopSoundLoopbackTest()
bool BearWare.TeamTalk4.StartSoundLoopbackTestEx ( int  nInputDeviceID,
int  nOutputDeviceID,
int  nSampleRate,
int  nChannels,
AudioConfig  lpAudioConfig,
bool  bEchoCancel 
)

Perform a record and playback test of specified sound devices along with an audio configuration and ability to try echo cancellation.

Both input and output devices MUST support the specified sample rate since this loop back test uses duplex mode (

See Also
TeamTalk4.InitSoundDuplexDevices() ). Check out supportedSampleRates of BearWare.SoundDevice to see which sample rates are supported.

Call TeamTalk4.StopSoundLoopbackTest() to stop the loopback test.

This function is almost like TeamTalk4.StartSoundLoopbackTest() except that it allows the use of BearWare.AudioConfig to enable AGC and echo cancellation. Note that AGC and echo cancellation can only be used in mono, i.e. nChannels = 1.

Parameters
nInputDeviceIDShould be the nDeviceID extracted through TeamTalk4.GetSoundInputDevices().
nOutputDeviceIDShould be the nDeviceID extracted through TeamTalk4.GetSoundOutputDevices().
nSampleRateThe sample rate the client's recorder should use.
nChannelsNumber of channels to use, i.e. 1 = mono, 2 = stereo. Note that echo cancellation, denoising and AGC is not supported in stereo.
lpAudioConfigThe audio configuration to use, i.e. AGC and denoising properties.
bEchoCancelWhether to enable echo cancellation.
See Also
TeamTalk4.InitSoundInputDevice()
TeamTalk4.InitSoundOutputDevice()
TeamTalk4.InitSoundDuplexDevices()
TeamTalk4.StopSoundLoopbackTest()
bool BearWare.TeamTalk4.StopSoundLoopbackTest ( )
int BearWare.TeamTalk4.GetSoundInputLevel ( )

Get the volume level of the current recorded audio.

The current level is updated at an interval specified in a channel's BearWare.AudioCodec.

Note that the volume level will not be available until the client instance joins a channel, i.e. it knows what sample rate to use.

Returns
Returns a value between BearWare.SoundLevel.SOUND_VU_MIN and BearWare.SoundLevel.SOUND_VU_MAX
bool BearWare.TeamTalk4.SetSoundInputGainLevel ( int  nLevel)

Set voice gaining of recorded audio.

The gain level ranges from BearWare.SoundLevel.SOUND_GAIN_MIN to BearWare.SoundLevel.SOUND_GAIN_MAX where BearWare.SoundLevel.SOUND_GAIN_DEFAULT is no gain. So 100 is 1/10 of the original volume and 8000 is 8 times the original volume.

Parameters
nLevelA value from BearWare.SoundLevel.SOUND_GAIN_MIN to BearWare.SoundLevel.SOUND_GAIN_MAX.
See Also
TeamTalk4.GetSoundInputGainLevel
int BearWare.TeamTalk4.GetSoundInputGainLevel ( )

Get voice gain level of outgoing audio.

Returns
A value from BearWare.SoundLevel.SOUND_GAIN_MIN to BearWare.SoundLevel.SOUND_GAIN_MAX.
See Also
SetSoundInputGainLevel
bool BearWare.TeamTalk4.SetSoundOutputVolume ( int  nVolume)

Set master volume.

If still not loud enough use SetUserGainLevel().

Parameters
nVolumeA value from BearWare.SoundLevel.SOUND_VOLUME_MIN to BearWare.SoundLevel.SOUND_VOLUME_MAX.
See Also
TeamTalk4.SetUserVolume
int BearWare.TeamTalk4.GetSoundOutputVolume ( )

Get master volume.

Returns
Returns the master volume.
See Also
BearWare.SoundLevel.SOUND_VOLUME_MAX
BearWare.SoundLevel.SOUND_VOLUME_MIN
TeamTalk4.GetUserVolume
bool BearWare.TeamTalk4.SetSoundOutputMute ( bool  bMuteAll)

Set all users mute.

To stop receiving audio from a user call DoUnsubscribe().

Parameters
bMuteAllWhether to mute or unmute all users.
See Also
ClientFlag CLIENT_SNDOUTPUT_MUTE
bool BearWare.TeamTalk4.EnableDenoising ( bool  bEnable)

Enable denoising of recorded audio.

This call will enable/disable the ClientFlag CLIENT_SNDINPUT_DENOISING flag. Denoising will not be active if the local client instance is participating in a channel which uses a stereo BearWare.AudioCodec.

Parameters
bEnableTRUE to enable, otherwise FALSE.
See Also
TeamTalk4.SetDenoiseLevel()
bool BearWare.TeamTalk4.SetDenoiseLevel ( int  nLevel)

Set the denoise level of recorded audio.

Setting denoise level is only valid if TeamTalk4.GetFlags() contains ClientFlag CLIENT_SNDINPUT_DENOISING.

Parameters
nLevelMaximum attenuation of the noise in dB. Negative value! Default value is -15.
See Also
TeamTalk4.EnableDenoising()
int BearWare.TeamTalk4.GetDenoiseLevel ( )

Set the denoise level of recorded audio.

Getting denoise level is only valid if TeamTalk4.GetFlags() contains ClientFlag CLIENT_SNDINPUT_DENOISING.

Returns
Maximum attenuation of the noise in dB. Negative value!
See Also
TeamTalk4.SetDenoiseLevel()
bool BearWare.TeamTalk4.EnableEchoCancellation ( bool  bEnable)

Enable/disable acoustic echo cancellation (AEC).

In order to enable echo cancellation mode the local client instance must first be set in sound duplex mode by calling TeamTalk4.InitSoundDuplexDevices(). This is because the echo canceller must first mixed all audio streams into a single stream and have then run in synch with the input stream. After calling TeamTalk4.InitSoundDuplexDevices() the flag ClientFlag CLIENT_SNDINOUTPUT_DUPLEX will be set.

For echo cancellation to work the sound input and output device must be the same sound card since the input and output stream must be completely synchronized. Also it is recommended to also enable denoising and AGC for better echo cancellation by calling TeamTalk4.EnableDenoising() and TeamTalk4.EnableAGC() respectively. Using an BearWare.AudioConfig on a BearWare.Channel can also be use to automatically enable denoising and AGC.

Echo cancellation will not be active if the local client instance is participating in a channel which uses a stereo BearWare.AudioCodec.

After calling TeamTalk4.EnableEchoCancellation() the flag ClientFlag CLIENT_SNDINPUT_AEC will be set.

Note that Windows Mobile/CE doesn't support echo cancellation.

Parameters
bEnableWhether to enable or disable echo callation.
See Also
TeamTalk4.EnableDenoising()
TeamTalk4.EnableAGC()
bool BearWare.TeamTalk4.EnableAGC ( bool  bEnable)

Enable Automatic Gain Control.

Each BearWare.Channel can also be configured to automatically enable the local client instance to enable AGC by specifying the bEnableAGC member of BearWare.AudioConfig.

AGC will not be active if the local client instance is participating in a channel which uses a stereo BearWare.AudioCodec.

Note that Windows Mobile/CE doesn't support AGC.

Parameters
bEnableWhether to enable AGC.
See Also
ClientFlag CLIENT_SNDINPUT_AGC
TeamTalk4.SetAGCSettings()
bool BearWare.TeamTalk4.SetAGCSettings ( int  nGainLevel,
int  nMaxIncrement,
int  nMaxDecrement,
int  nMaxGain 
)

Set Automatic Gain Control (AGC) settings.

Since microphone volumes may vary AGC can be used to adjust a signal to a reference volume. That way users will speak at the same volume level.

Calling TeamTalk4.SetAGCSettings() is only valid if TeamTalk4.GetFlags() contains ClientFlag CLIENT_SNDINPUT_AGC.

Parameters
nGainLevelA value from 0 to 32768. Default is 8000.
nMaxIncrementUsed so volume should not be amplified too quickly (maximal gain increase in dB/second). Default is 12.
nMaxDecrementNegative value! Used so volume should not be attenuated too quickly (maximal gain decrease in dB/second). Default is -40.
nMaxGainEnsure volume doesn't become too loud (maximal gain in dB). Default is 30.
See Also
TeamTalk4.EnableAGC()
bool BearWare.TeamTalk4.GetAGCSettings ( out int  lpnGainLevel,
out int  lpnMaxIncrement,
out int  lpnMaxDecrement,
out int  lpnMaxGain 
)

Get Automatic Gain Control settings.

Calling TeamTalk4.GetAGCSettings() is only valid if TeamTalk4.GetFlags() contains ClientFlag CLIENT_SNDINPUT_AGC.

Parameters
lpnGainLevelA value from 0 to 32768.
lpnMaxIncrementUsed so volume should not be amplified too quickly (maximal gain increase in dB/second).
lpnMaxDecrementNegative value! Used so volume should not be attenuated too quickly (maximal gain decrease in dB/second).
lpnMaxGainEnsure volume doesn't become too loud (maximal gain in dB).
See Also
TeamTalk4.EnableAGC
bool BearWare.TeamTalk4.Enable3DSoundPositioning ( bool  bEnable)

Enable automatically position users using 3D-sound.

Note that 3d-sound does not work if sound is running in duplex mode (ClientFlag CLIENT_SNDINOUTPUT_DUPLEX).

Parameters
bEnableTRUE to enable, otherwise FALSE.
See Also
TeamTalk4.SetUserPosition
bool BearWare.TeamTalk4.AutoPositionUsers ( )

Automatically position users using 3D-sound.

Note that 3d-sound does not work if sound is running in duplex mode (ClientFlag CLIENT_SNDINOUTPUT_DUPLEX).

See Also
TeamTalk4.SetUserPosition
bool BearWare.TeamTalk4.EnableAudioBlockEvent ( bool  bEnable)

Enable/disable access to user's raw audio.

With audio callbacks enabled all audio which has been played will be accessible by calling TeamTalk4.AcquireUserAudioBlock(). Every time a new BearWare.AudioBlock is available the event OnUserAudioBlock() is generated.

See Also
TeamTalk4.AcquireUserAudioBlock()
TeamTalk4.ReleaseUserAudioBlock()
OnUserAudioBlock()
bool BearWare.TeamTalk4.SetUserVolume ( int  nUserID,
int  nVolume 
)

Set the volume of a user.

Note that it's a virtual volume which is being set since the master volume affects the user volume.

Parameters
nUserIDThe ID of the user whose volume will be changed.
nVolumeMust be between BearWare.SoundLevel.SOUND_VOLUME_MIN and BearWare.SoundLevel.SOUND_VOLUME_MAX.
See Also
SetSoundOutputVolume
int BearWare.TeamTalk4.GetUserVolume ( int  nUserID)

Get the volume of a user.

Note that it's a virtual volume which is being set since the master volume affects the user volume.

Parameters
nUserIDThe ID of the user.
Returns
A value between BearWare.SoundLevel.SOUND_VOLUME_MIN and BearWare.SoundLevel.SOUND_VOLUME_MAX
bool BearWare.TeamTalk4.SetUserGainLevel ( int  nUserID,
int  nGainLevel 
)

Use software to gain a user's volume.

Parameters
nUserIDThe ID of the user who should have sound gained.
nGainLevelThe gain level for the user. A value from BearWare.SoundLevel.SOUND_GAIN_MIN to BearWare.SoundLevel.SOUND_GAIN_MAX
See Also
GetUserGainLevel
SoundLevel.SOUND_GAIN_DEFAULT
int BearWare.TeamTalk4.GetUserGainLevel ( int  nUserID)

Get the software gain level for a user.

Parameters
nUserIDThe ID of the user whose gain level should be retrieved.
See Also
SetUserGainLevel
Returns
The gain level for the user. A value from BearWare.SoundLevel.SOUND_GAIN_MIN to BearWare.SoundLevel.SOUND_GAIN_MAX
bool BearWare.TeamTalk4.SetUserMute ( int  nUserID,
bool  bMute 
)

Mute a user.

To stop receiving audio from a user call TeamTalk4.DoUnsubscribe().

Parameters
nUserIDThe user ID of the user to mute (or unmute).
bMuteTRUE will mute, FALSE will unmute.
See Also
SetSoundOutputMute
bool BearWare.TeamTalk4.SetUserStoppedTalkingDelay ( int  nUserID,
int  nDelayMSec 
)

Set the delay of when a user should be considered to no longer be talking.

When a user starts talking the TeamTalk4.OnUserTalking() is triggered with its parameter set to active. A user will remain in this active state until no packets are received from this user, plus a delay (due to network interruptions). This delay is by default set to 500 msec but can be changed by calling TeamTalk4.SetUserStoppedTalkingDelay().

See Also
GetUserStoppedTalkingDelay
int BearWare.TeamTalk4.GetUserStoppedTalkingDelay ( int  nUserID)

Get the delay of when a user should no longer be considered as talking.

Returns
The delay in miliseconds. -1 on error.
See Also
SetUserStoppedTalkingDelay
bool BearWare.TeamTalk4.SetUserPosition ( int  nUserID,
float  x,
float  y,
float  z 
)

Set the position of a user.

This can only be done using DirectSound (SoundSystem SOUNDSYSTEM_DSOUND) and with sound duplex mode (ClientFlag CLIENT_SNDINOUTPUT_DUPLEX) disabled.

Parameters
nUserIDID of user.
xDistance in meters to user (left/right).
yDistance in meters to user (back/forward).
zDistance in meters to user (up/down).
bool BearWare.TeamTalk4.GetUserPosition ( int  nUserID,
out float  x,
out float  y,
out float  z 
)

Get a user's position.

Parameters
nUserIDID of user.
xDistance in meters to user (left/right).
yDistance in meters to user (back/forward).
zDistance in meters to user (up/down).
bool BearWare.TeamTalk4.SetUserStereo ( int  nUserID,
bool  bLeftSpeaker,
bool  bRightSpeaker 
)

Set whether a user should speak in the left, right or both speakers. This function only works if BearWare.AudioCodec has been set to use stereo.

Parameters
nUserIDID of user.
bLeftSpeakerTRUE if user should be played in left speaker.
bRightSpeakerTRUE if user should be played in right speaker.
See Also
GetUserStereo
bool BearWare.TeamTalk4.GetUserStereo ( int  nUserID,
out bool  lpbLeftSpeaker,
out bool  lpbRightSpeaker 
)

Check what speaker a user is outputting to.

Parameters
nUserIDID of user.
lpbLeftSpeakerTRUE if playing in left speaker.
lpbRightSpeakerTRUE if playing in right speaker.
See Also
SetUserStereo
bool BearWare.TeamTalk4.SetUserAudioFolder ( int  nUserID,
string  szFolderPath,
string  szFileNameVars,
AudioFileFormat  uAFF 
)

Store audio conversations to disk.

Set the path of where to store audio from a channel to disk. To store in MP3 format instead of .wav format ensure that the LAME MP3 encoder file lame_enc.dll is placed in the same directory as the SDKs DLL files. To stop recording set szFolderPath to an empty string and uAFF to AudioFileFormat AFF_NONE.

To store audio of other channels than the client instance check out the section Spying on Users.

Parameters
nUserIDThe ID of the BearWare.User which should store audio to disk.
szFolderPathThe path on disk to where files should be stored. This value will be stored in szAudioFolder of BearWare.User.
szFileNameVarsThe file name used for audio files can consist of the following variables: %nickname%, %username%, %userid%, %counter% and a specified time based on strftime (google 'strftime' for a description of the format. The default format used by TeamTalk is: '%Y%m%d-%H%M%S #%userid% %username%'. The %counter% variable is a 9 digit integer which is incremented for each audio file. The file extension is automatically appended based on the file type (.wav for AudioFileFormat AFF_WAVE_FORMAT and .mp3 for AFF_MP3_*_FORMAT). Pass NULL or empty string to revert to default format.
uAFFThe AudioFileFormat to use for storing audio files. Passing AudioFileFormat AFF_NONE will cancel/reset the current recording.
Returns
FALSE if path is invalid, otherwise TRUE.
See Also
BearWare.User
OnUserAudioFile
bool BearWare.TeamTalk4.SetUserMediaBufferSize ( int  nUserID,
int  nMSec 
)

Change the amount of media data which can be buffered in the user's playback queue.

Increasing the media buffer size is especially important when the user is currently streaming a media file using TeamTalk4.StartStreamingMediaFileToChannel(). Once streaming has finished it is recommended to reset the media buffer, i.e. setting it to zero.

A simple way to notify users that the client instance is streaming a media file is to change the status of the local client instance using TeamTalk4.DoChangeStatus() or to send a BearWare.TextMessage using TeamTalk4.DoTextMessage().

Parameters
nUserIDThe ID of the user who should have changed the size of the media buffer.
nMSecThe number of miliseconds of audio and video which should be allowed to be stored in the media buffer. 2000 - 3000 msec is a good size for a media buffer. Set the media buffer size to 0 msec to reset the media buffer to its default value.
bool BearWare.TeamTalk4.AcquireUserAudioBlock ( int  nUserID,
ref AudioBlock  lpAudioBlock 
)

Extract the raw audio from a user who has been talking.

To enable access to user's raw audio first call TeamTalk4.EnableAudioBlockEvent(). Whenever new audio becomes available the event TeamTalk4.OnUserAudioBlock() is generated and TeamTalk4.AcquireUserAudioBlock() can be called to extract the audio.

The BearWare.AudioBlock contains shared memory with the local client instance therefore always remember to call TeamTalk4.ReleaseUserAudioBlock() to release the shared memory.

If TeamTalk4.AcquireUserAudioBlock() is called multiple times without calling TeamTalk4.ReleaseUserAudioBlock() then the same BearWare.AudioBlock will be retrieved again.

See Also
TeamTalk4.ReleaseUserAudioBlock()
TeamTalk4.EnableAudioBlockEvent()
TeamTalk4.OnUserAudioBlock()
bool BearWare.TeamTalk4.ReleaseUserAudioBlock ( int  nUserID)

Release the shared memory of an BearWare.AudioBlock.

All BearWare.AudioBlock-structures extracted through TeamTalk4.AcquireUserAudioBlock() must be released again since they share memory with the local client instance.

Never access lpRawAudio after releasing its BearWare.AudioBlock. This will cause the application to crash with a memory exception.

See Also
TeamTalk4.AcquireUserAudioBlock()
TeamTalk4.OnUserAudioBlock()
bool BearWare.TeamTalk4.ReleaseAllUserAudioBlocks ( )

Release all audio blocks of the local client instance.

This function is only for convenience to ensure that no memory is leaked. Normally TeamTalk4.ReleaseUserAudioBlock() should be used to release BearWare.AudioBlock-data.

See Also
TeamTalk4.ReleaseUserAudioBlock()
TeamTalk4.OnUserAudioBlock()

Variable Documentation

const int BearWare.TeamTalk4.TT_SAMPLERATES_MAX = 16

The maximum number of sample rates supported by a BearWare.SoundDevice.