diff --git a/client.go b/client.go index 71a9291..6b160bb 100644 --- a/client.go +++ b/client.go @@ -310,10 +310,7 @@ func (b *Talkkonnect) ClientStart() { } if TTSEnabled && TTSTalkkonnectLoaded { - err := aplayLocal(TTSTalkkonnectLoadedFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("error: aplayLocal(TTSTalkkonnectLoadedFilenameAndPath) Returned Error: ", err) - } + localMediaPlayer(TTSTalkkonnectLoadedFilenameAndPath, TTSVolumeLevel, 0, 1) } b.Connect() diff --git a/clientcommands.go b/clientcommands.go index e95e2ba..7a2c203 100644 --- a/clientcommands.go +++ b/clientcommands.go @@ -262,16 +262,10 @@ func (b *Talkkonnect) ParticipantLEDUpdate(verbose bool) { if EventSoundEnabled { if participantCount > prevParticipantCount { - err := aplayLocal(EventJoinedSoundFilenameAndPath, 100) - if err != nil { - log.Println("error: aplayLocal(EventJoinedSoundFilenameAndPath) Returned Error: ", err) - } + localMediaPlayer(EventJoinedSoundFilenameAndPath, EventVolume, 0, 1) } if participantCount < prevParticipantCount { - err := aplayLocal(EventLeftSoundFilenameAndPath, 100) - if err != nil { - log.Println("error: aplayLocal(EventLeftSoundFilenameAndPath) Returned Error: ", err) - } + localMediaPlayer(EventLeftSoundFilenameAndPath, EventVolume, 0, 1) } } @@ -404,11 +398,7 @@ func (b *Talkkonnect) ChannelUp() { } if TTSEnabled && TTSChannelUp { - err := aplayLocal(TTSChannelUpFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("error: aplayLocal(TTSChannelDownFilenameAndPath) Returned Error: ", err) - } - + localMediaPlayer(TTSChannelUpFilenameAndPath, EventVolume, 0, 1) } prevButtonPress = "ChannelUp" @@ -475,11 +465,7 @@ func (b *Talkkonnect) ChannelDown() { } if TTSEnabled && TTSChannelDown { - err := aplayLocal(TTSChannelDownFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("error: aplayLocal(TTSChannelDownFilenameAndPath) Returned Error: ", err) - } - + localMediaPlayer(TTSChannelDownFilenameAndPath, TTSVolumeLevel, 0, 1) } prevButtonPress = "ChannelDown" diff --git a/commandkeys.go b/commandkeys.go index 10cc383..c8d27ec 100644 --- a/commandkeys.go +++ b/commandkeys.go @@ -45,11 +45,7 @@ func (b *Talkkonnect) cmdDisplayMenu() { log.Println("debug: Delete Key Pressed Menu and Session Information Requested") if TTSEnabled && TTSDisplayMenu { - err := aplayLocal(TTSDisplayMenuFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("error: aplayLocal(TTSDisplayMenuFilenameAndPath) Returned Error: ", err) - } - + localMediaPlayer(TTSDisplayMenuFilenameAndPath, TTSVolumeLevel, 0, 1) } b.talkkonnectMenu("\u001b[44;1m") // add blue background to banner reference https://www.lihaoyi.com/post/BuildyourownCommandLinewithANSIescapecodes.html#background-colors @@ -70,10 +66,7 @@ func (b *Talkkonnect) cmdMuteUnmute(subCommand string) { log.Println("debug: F3 pressed Mute/Unmute Speaker Requested") if TTSEnabled && TTSMuteUnMuteSpeaker { - err := aplayLocal(TTSMuteUnMuteSpeakerFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("error: aplayLocal(TTSMuteUnMuteSpeakerFilenameAndPath) Returned Error: ", err) - } + localMediaPlayer(TTSMuteUnMuteSpeakerFilenameAndPath, TTSVolumeLevel, 0, 1) } OrigMuted, err := volume.GetMuted(OutputDevice) @@ -177,11 +170,7 @@ func (b *Talkkonnect) cmdCurrentVolume() { log.Println("info: Volume Level is at", OrigVolume, "%") if TTSEnabled && TTSCurrentVolumeLevel { - err := aplayLocal(TTSCurrentVolumeLevelFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("error: aplayLocal(TTSCurrentVolumeLevelFilenameAndPath) Returned Error: ", err) - } - + localMediaPlayer(TTSCurrentVolumeLevelFilenameAndPath, TTSVolumeLevel, 0, 1) } if TargetBoard == "rpi" { if LCDEnabled { @@ -233,13 +222,8 @@ func (b *Talkkonnect) cmdVolumeUp() { } if TTSEnabled && TTSDigitalVolumeUp { - err := aplayLocal(TTSDigitalVolumeUpFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("error: aplayLocal(TTSDigitalVolumeUpFilenameAndPath) Returned Error: ", err) - } - + localMediaPlayer(TTSDigitalVolumeUpFilenameAndPath, TTSVolumeLevel, 0, 1) } - } func (b *Talkkonnect) cmdVolumeDown() { @@ -282,24 +266,15 @@ func (b *Talkkonnect) cmdVolumeDown() { } if TTSEnabled && TTSDigitalVolumeDown { - err := aplayLocal(TTSDigitalVolumeDownFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("error: aplayLocal(TTSDigitalVolumeDownFilenameAndPath) Returned Error: ", err) - } - + localMediaPlayer(TTSDigitalVolumeDownFilenameAndPath, TTSVolumeLevel, 0, 1) } - } func (b *Talkkonnect) cmdListServerChannels() { log.Println("debug: F7 pressed Channel List Requested") if TTSEnabled && TTSListServerChannels { - err := aplayLocal(TTSListServerChannelsFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("error: aplayLocal(TTSListServerChannelsFilenameAndPath) Returned Error: ", err) - } - + localMediaPlayer(TTSListServerChannelsFilenameAndPath, TTSVolumeLevel, 0, 1) } b.ListChannels(true) @@ -311,11 +286,7 @@ func (b *Talkkonnect) cmdStartTransmitting() { log.Println("info: Start Transmitting") if TTSEnabled && TTSStartTransmitting { - err := aplayLocal(TTSStartTransmittingFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("error: aplayLocal(TTSStartTransmittingFilenameAndPath) Returned Error: ", err) - } - + localMediaPlayer(TTSStartTransmittingFilenameAndPath, TTSVolumeLevel, 0, 1) } if IsPlayStream { @@ -338,11 +309,7 @@ func (b *Talkkonnect) cmdStopTransmitting() { log.Println("info: Stop Transmitting") if TTSEnabled && TTSStopTransmitting { - err := aplayLocal(TTSStopTransmittingFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("error: Play Wav Local Module Returned Error: ", err) - } - + localMediaPlayer(TTSStopTransmittingFilenameAndPath, TTSVolumeLevel, 0, 1) } if IsPlayStream { @@ -365,11 +332,7 @@ func (b *Talkkonnect) cmdListOnlineUsers() { log.Println("info: F10 Online User(s) in Current Channel") if TTSEnabled && TTSListOnlineUsers { - err := aplayLocal(TTSListOnlineUsersFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("error: aplayLocal(TTSListOnlineUsersFilenameAndPath) Returned Error: ", err) - } - + localMediaPlayer(TTSListOnlineUsersFilenameAndPath, TTSVolumeLevel, 0, 1) } log.Println(fmt.Sprintf("info: Channel %#v Has %d Online User(s)", b.Client.Self.Channel.Name, len(b.Client.Self.Channel.Users))) @@ -384,12 +347,7 @@ func (b *Talkkonnect) cmdPlayback() { b.BackLightTimer() if TTSEnabled && TTSPlayStream { - err := aplayLocal(TTSPlayStreamFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("error: aplayLocal(TTSPlayStreamFilenameAndPath) Returned Error: ", err) - - } - + localMediaPlayer(TTSPlayStreamFilenameAndPath, TTSVolumeLevel, 0, 1) } if b.IsTransmitting { @@ -413,11 +371,7 @@ func (b *Talkkonnect) cmdGPSPosition() { log.Println("info: GPS details requested") if TTSEnabled && TTSRequestGpsPosition { - err := aplayLocal(TTSRequestGpsPositionFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("error: aplayLocal(TTSRequestGpsPositionFilenameAndPath) Returned Error: ", err) - } - + localMediaPlayer(TTSRequestGpsPositionFilenameAndPath, TTSVolumeLevel, 0, 1) } var i int = 0 @@ -449,11 +403,7 @@ func (b *Talkkonnect) cmdQuitTalkkonnect() { log.Printf("info: Talkkonnect Now Running For %v \n", secondsToHuman(int(duration.Seconds()))) if TTSEnabled && TTSQuitTalkkonnect { - err := aplayLocal(TTSQuitTalkkonnectFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("error: aplayLocal(TTSQuitTalkkonnectFilenameAndPath) Returned Error: ", err) - } - + localMediaPlayer(TTSQuitTalkkonnectFilenameAndPath, TTSVolumeLevel, 0, 1) } ServerHop = true b.CleanUp() @@ -501,11 +451,7 @@ func (b *Talkkonnect) cmdSendEmail() { } if TTSEnabled && TTSSendEmail { - err := aplayLocal(TTSSendEmailFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("warn: aplayLocal(TTSSendEmailFilenameAndPath) Returned Error: ", err) - } - + localMediaPlayer(TTSSendEmailFilenameAndPath, TTSVolumeLevel, 0, 1) } if EmailEnabled { @@ -540,11 +486,7 @@ func (b *Talkkonnect) cmdConnPreviousServer() { log.Println("info: Previous Server Requested") if TTSEnabled && TTSPreviousServer { - err := aplayLocal(TTSPreviousServerFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("error: aplayLocal(TTSPreviousServerFilenameAndPath) Returned Error: ", err) - } - + localMediaPlayer(TTSPreviousServerFilenameAndPath, TTSVolumeLevel, 0, 1) } if AccountCount > 1 { @@ -582,11 +524,7 @@ func (b *Talkkonnect) cmdPingServers() { log.Println("info: Ping Servers") if TTSEnabled && TTSPingServers { - err := aplayLocal(TTSPingServersFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("alert: aplayLocal(TTSPingServersFilenameAndPath) Returned Error: ", err) - } - + localMediaPlayer(TTSPingServersFilenameAndPath, TTSVolumeLevel, 0, 1) } b.pingServers() @@ -597,11 +535,7 @@ func (b *Talkkonnect) cmdConnNextServer() { log.Println("info: Next Server Requested Killing This Session, talkkonnect should be restarted by systemd") if TTSEnabled && TTSNextServer { - err := aplayLocal(TTSNextServerFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("alert: aplayLocal(TTSNextServerFilenameAndPath) Returned Error: ", err) - } - + localMediaPlayer(TTSNextServerFilenameAndPath, TTSVolumeLevel, 0, 1) } if AccountCount > 1 { @@ -721,11 +655,7 @@ func (b *Talkkonnect) cmdPanicSimulation() { log.Println("info: Panic Button Start/Stop Simulation Requested") if TTSEnabled && TTSPanicSimulation { - err := aplayLocal(TTSPanicSimulationFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("error: aplayLocal(TTSPanicSimulationFilenameAndPath) Returned Error: ", err) - } - + localMediaPlayer(TTSPanicSimulationFilenameAndPath, TTSVolumeLevel, 0, 1) } if PEnabled { @@ -832,11 +762,7 @@ func (b *Talkkonnect) cmdScanChannels() { log.Println("info: Scanning Channels") if TTSEnabled && TTSScan { - err := aplayLocal(TTSScanFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("error: aplayLocal(TTSScanFilenameAndPath) Returned Error: ", err) - } - + localMediaPlayer(TTSScanFilenameAndPath, TTSVolumeLevel, 0, 1) } b.Scan() @@ -866,11 +792,7 @@ func (b *Talkkonnect) cmdDumpXMLConfig() { log.Println("info: Print XML Config " + ConfigXMLFile) if TTSEnabled && TTSPrintXmlConfig { - err := aplayLocal(TTSPrintXmlConfigFilenameAndPath, TTSVolumeLevel) - if err != nil { - log.Println("error: aplayLocal(TTSPrintXmlConfigFilenameAndPath) Returned Error: ", err) - } - + localMediaPlayer(TTSPrintXmlConfigFilenameAndPath, TTSVolumeLevel, 0, 1) } printxmlconfig() diff --git a/media.go b/media.go index ed38b8a..31cd2b9 100644 --- a/media.go +++ b/media.go @@ -42,7 +42,7 @@ import ( "github.com/talkkonnect/gumble/gumbleffmpeg" ) -func aplayLocal(filepath string, playbackvolume int) error { +func aplayLocal(filepath string, playbackvolume float32) error { var player string if path, err := exec.LookPath("aplay"); err == nil { diff --git a/onevent.go b/onevent.go index 6f562ce..4eb1419 100644 --- a/onevent.go +++ b/onevent.go @@ -126,6 +126,10 @@ func (b *Talkkonnect) OnDisconnect(e *gumble.DisconnectEvent) { func (b *Talkkonnect) OnTextMessage(e *gumble.TextMessageEvent) { b.BackLightTimer() + if EventSoundEnabled { + localMediaPlayer(EventMessageSoundFilenameAndPath, EventVolume, 0, 1) + } + if len(cleanstring(e.Message)) > 105 { log.Println("warn: Message Too Long to Be Displayed on Screen") message = strings.TrimSpace(cleanstring(e.Message)[:105]) @@ -195,12 +199,6 @@ func (b *Talkkonnect) OnTextMessage(e *gumble.TextMessageEvent) { } } - if EventSoundEnabled { - err := aplayLocal(EventMessageSoundFilenameAndPath, 100) - if err != nil { - log.Println("error: aplayLocal(EventMessageSoundFilenameAndPath) Returned Error: ", err) - } - } } func (b *Talkkonnect) OnUserChange(e *gumble.UserChangeEvent) { diff --git a/xmlparser.go b/xmlparser.go index 3c00f4f..dfcd052 100644 --- a/xmlparser.go +++ b/xmlparser.go @@ -51,7 +51,7 @@ import ( //version and release date const ( - talkkonnectVersion string = "1.67.29" + talkkonnectVersion string = "1.68.01" talkkonnectReleased string = "Sep 5 2021" ) @@ -148,7 +148,7 @@ var ( //tts var ( TTSEnabled bool - TTSVolumeLevel int + TTSVolumeLevel float32 TTSParticipants bool TTSChannelUp bool TTSChannelUpFilenameAndPath string @@ -212,6 +212,7 @@ var ( //sound settings var ( EventSoundEnabled bool + EventVolume float32 EventJoinedSoundFilenameAndPath string EventLeftSoundFilenameAndPath string EventMessageSoundFilenameAndPath string @@ -607,51 +608,51 @@ type DocumentStruct struct { Volume float32 `xml:"volume"` } `xml:"beacon"` TTS struct { - Enabled bool `xml:"enabled,attr"` - VolumeLevel int `xml:"volumelevel"` - Participants bool `xml:"participants"` - ChannelUp bool `xml:"channelup"` - ChannelUpFilenameAndPath string `xml:"channelupfilenameandpath"` - ChannelDown bool `xml:"channeldown"` - ChannelDownFilenameAndPath string `xml:"channeldownfilenameandpath"` - MuteUnmuteSpeaker bool `xml:"muteunmutespeaker"` - MuteUnmuteSpeakerFilenameAndPath string `xml:"muteunmutespeakerfilenameandpath"` - CurrentVolumeLevel bool `xml:"currentvolumelevel"` - CurrentVolumeLevelFilenameAndPath string `xml:"currentvolumelevelfilenameandpath"` - DigitalVolumeUp bool `xml:"digitalvolumeup"` - DigitalVolumeUpFilenameAndPath string `xml:"digitalvolumeupfilenameandpath"` - DigitalVolumeDown bool `xml:"digitalvolumedown"` - DigitalVolumeDownFilenameAndPath string `xml:"digitalvolumedownfilenameandpath"` - ListServerChannels bool `xml:"listserverchannels"` - ListServerChannelsFilenameAndPath string `xml:"listserverchannelsfilenameandpath"` - StartTransmitting bool `xml:"starttransmitting"` - StartTransmittingFilenameAndPath string `xml:"starttransmittingfilenameandpath"` - StopTransmitting bool `xml:"stoptransmitting"` - StopTransmittingFilenameAndPath string `xml:"stoptransmittingfilenameandpath"` - ListOnlineUsers bool `xml:"listonlineusers"` - ListOnlineUsersFilenameAndPath string `xml:"listonlineusersfilenameandpath"` - PlayStream bool `xml:"playstream"` - PlayStreamFilenameAndPath string `xml:"playstreamfilenameandpath"` - RequestGpsPosition bool `xml:"requestgpsposition"` - RequestGpsPositionFilenameAndPath string `xml:"requestgpspositionfilenameandpath"` - NextServer bool `xml:"nextserver"` - NextServerFilenameAndPath string `xml:"nextserverfilenameandpath"` - PreviousServer bool `xml:"previousserver"` - PreviousServerFilenameAndPath string `xml:"previousserverfilenameandpath"` - PanicSimulation bool `xml:"panicsimulation"` - PanicSimulationFilenameAndPath string `xml:"panicsimulationfilenameandpath"` - PrintXmlConfig bool `xml:"printxmlconfig"` - PrintXmlConfigFilenameAndPath string `xml:"printxmlconfigfilenameandpath"` - SendEmail bool `xml:"sendemail"` - SendEmailFilenameAndPath string `xml:"sendemailfilenameandpath"` - DisplayMenu bool `xml:"displaymenu"` - DisplayMenuFilenameAndPath string `xml:"displaymenufilenameandpath"` - QuitTalkkonnect bool `xml:"quittalkkonnect"` - QuitTalkkonnectFilenameAndPath string `xml:"quittalkkonnectfilenameandpath"` - TalkkonnectLoaded bool `xml:"talkkonnectloaded"` - TalkkonnectLoadedFilenameAndPath string `xml:"talkkonnectloadedfilenameandpath"` - PingServers bool `xml:"pingservers"` - PingServersFilenameAndPath string `xml:"pingserversfilenameandpath"` + Enabled bool `xml:"enabled,attr"` + VolumeLevel float32 `xml:"volumelevel"` + Participants bool `xml:"participants"` + ChannelUp bool `xml:"channelup"` + ChannelUpFilenameAndPath string `xml:"channelupfilenameandpath"` + ChannelDown bool `xml:"channeldown"` + ChannelDownFilenameAndPath string `xml:"channeldownfilenameandpath"` + MuteUnmuteSpeaker bool `xml:"muteunmutespeaker"` + MuteUnmuteSpeakerFilenameAndPath string `xml:"muteunmutespeakerfilenameandpath"` + CurrentVolumeLevel bool `xml:"currentvolumelevel"` + CurrentVolumeLevelFilenameAndPath string `xml:"currentvolumelevelfilenameandpath"` + DigitalVolumeUp bool `xml:"digitalvolumeup"` + DigitalVolumeUpFilenameAndPath string `xml:"digitalvolumeupfilenameandpath"` + DigitalVolumeDown bool `xml:"digitalvolumedown"` + DigitalVolumeDownFilenameAndPath string `xml:"digitalvolumedownfilenameandpath"` + ListServerChannels bool `xml:"listserverchannels"` + ListServerChannelsFilenameAndPath string `xml:"listserverchannelsfilenameandpath"` + StartTransmitting bool `xml:"starttransmitting"` + StartTransmittingFilenameAndPath string `xml:"starttransmittingfilenameandpath"` + StopTransmitting bool `xml:"stoptransmitting"` + StopTransmittingFilenameAndPath string `xml:"stoptransmittingfilenameandpath"` + ListOnlineUsers bool `xml:"listonlineusers"` + ListOnlineUsersFilenameAndPath string `xml:"listonlineusersfilenameandpath"` + PlayStream bool `xml:"playstream"` + PlayStreamFilenameAndPath string `xml:"playstreamfilenameandpath"` + RequestGpsPosition bool `xml:"requestgpsposition"` + RequestGpsPositionFilenameAndPath string `xml:"requestgpspositionfilenameandpath"` + NextServer bool `xml:"nextserver"` + NextServerFilenameAndPath string `xml:"nextserverfilenameandpath"` + PreviousServer bool `xml:"previousserver"` + PreviousServerFilenameAndPath string `xml:"previousserverfilenameandpath"` + PanicSimulation bool `xml:"panicsimulation"` + PanicSimulationFilenameAndPath string `xml:"panicsimulationfilenameandpath"` + PrintXmlConfig bool `xml:"printxmlconfig"` + PrintXmlConfigFilenameAndPath string `xml:"printxmlconfigfilenameandpath"` + SendEmail bool `xml:"sendemail"` + SendEmailFilenameAndPath string `xml:"sendemailfilenameandpath"` + DisplayMenu bool `xml:"displaymenu"` + DisplayMenuFilenameAndPath string `xml:"displaymenufilenameandpath"` + QuitTalkkonnect bool `xml:"quittalkkonnect"` + QuitTalkkonnectFilenameAndPath string `xml:"quittalkkonnectfilenameandpath"` + TalkkonnectLoaded bool `xml:"talkkonnectloaded"` + TalkkonnectLoadedFilenameAndPath string `xml:"talkkonnectloadedfilenameandpath"` + PingServers bool `xml:"pingservers"` + PingServersFilenameAndPath string `xml:"pingserversfilenameandpath"` } `xml:"tts"` SMTP struct { Enabled bool `xml:"enabled,attr"` @@ -666,10 +667,11 @@ type DocumentStruct struct { } `xml:"smtp"` Sounds struct { Event struct { - Enabled bool `xml:"enabled,attr"` - JoinedFilenameAndPath string `xml:"joinedfilenameandpath"` - LeftFilenameAndPath string `xml:"leftfilenameandpath"` - MessageFilenameAndPath string `xml:"messagefilenameandpath"` + Enabled bool `xml:"enabled,attr"` + EventVolume float32 `xml:"eventvolume"` + JoinedFilenameAndPath string `xml:"joinedfilenameandpath"` + LeftFilenameAndPath string `xml:"leftfilenameandpath"` + MessageFilenameAndPath string `xml:"messagefilenameandpath"` } `xml:"event"` Alert struct { Enabled bool `xml:"enabled,attr"` @@ -1381,6 +1383,7 @@ func readxmlconfig(file string) error { EmailGoogleMapsURL = Document.Global.Software.SMTP.GoogleMapsURL EventSoundEnabled = Document.Global.Software.Sounds.Event.Enabled + EventVolume = Document.Global.Software.Sounds.Event.EventVolume EventJoinedSoundFilenameAndPath = Document.Global.Software.Sounds.Event.JoinedFilenameAndPath EventLeftSoundFilenameAndPath = Document.Global.Software.Sounds.Event.LeftFilenameAndPath EventMessageSoundFilenameAndPath = Document.Global.Software.Sounds.Event.MessageFilenameAndPath @@ -1772,7 +1775,7 @@ func printxmlconfig() { if PrintTTS { log.Println("info: -------- TTS -------- ") log.Println("info: TTS Global Enabled ", fmt.Sprintf("%t", TTSEnabled)) - log.Println("info: TTS Volume Level (%) ", fmt.Sprintf("%d", TTSVolumeLevel)) + log.Println("info: TTS Volume Level (%) ", fmt.Sprintf("%.1f", TTSVolumeLevel)) log.Println("info: TTS Participants ", fmt.Sprintf("%t", TTSParticipants)) log.Println("info: TTS ChannelUp ", fmt.Sprintf("%t", TTSChannelUp)) log.Println("info: TTS ChannelUpFilenameAndPath ", TTSChannelUpFilenameAndPath) @@ -1839,6 +1842,7 @@ func printxmlconfig() { if PrintSounds { log.Println("info: ------------- Sounds ------------------ ") log.Println("info: Event Sound Enabled " + fmt.Sprintf("%t", EventSoundEnabled)) + log.Println("info: Event Volume " + fmt.Sprintf("%.1f", EventVolume)) log.Println("info: Event Joined Sound Filename " + EventJoinedSoundFilenameAndPath) log.Println("info: Event Left Sound Filename " + EventJoinedSoundFilenameAndPath) log.Println("info: Event Msg Sound Filename " + EventMessageSoundFilenameAndPath)