.wav files not playing in 3.3.0 on Windows 10

I’ve been playing Terraforming Mars using VASSAL 3.3.0 with a couple of friends. I’m on Linux (Kubuntu 19.10) with Java 11. My friends are both on Windows 10. My system has no problems with module version 2.6.3, but on my friends’ systems, they keep getting an error when it attempts to play any .wav file (it claims it can’t find the file, IIRC).

This error did not occur when using 3.2.17, but is occurring with both build 9324 and beta 2.

Thus spake jrwatts:

I’ve been playing Terraforming Mars using VASSAL 3.3.0 with a couple of
friends. I’m on Linux (Kubuntu 19.10) with Java 11. My friends are
both on Windows 10. My system has no problems with module version
2.6.3, but on my friends’ systems, they keep getting an error when it
attempts to play any .wav file (it claims it can’t find the file, IIRC).

Please post an errorLog from a run where this happens so we can look into
it.


J.

Where would the error log be found on a WIndows 10 machine (I found it on my Linux system, but I don’t get the error)?

Thus spake jrwatts:

Where would the error log be found on a WIndows 10 machine (I found it
on my Linux system, but I don’t get the error)?

vassalengine.org/wiki/Error_Logs

The information there for Windows I think also applies to Windows 10.
(If not, I’d like to know so we can add whatever the path is on Win 10.)


J.

The information is correct (the bottom entry e.g. Windows Vista, 7, 8 ) is also right for Windows 10.

Here you go:

2020-04-30 07:25:15,254 [0-main] INFO VASSAL.launch.StartUp - Starting 2020-04-30 07:25:15,263 [0-main] INFO VASSAL.launch.StartUp - OS Windows 10 10.0 2020-04-30 07:25:15,264 [0-main] INFO VASSAL.launch.StartUp - Java version 13 2020-04-30 07:25:15,265 [0-main] INFO VASSAL.launch.StartUp - VASSAL version 3.3.0-beta2 2020-04-30 07:25:15,569 [0-AWT-EventQueue-0] INFO VASSAL.launch.ModuleManager - Manager 2020-04-30 07:25:49,602 [0-SwingWorker-pool-2-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module file C:\Users\dbruc\Downloads\Terraforming_Mars_263.vmod 2020-04-30 07:25:49,863 [0-SwingWorker-pool-2-thread-1] INFO VASSAL.launch.TilingHandler - No images to tile. 2020-04-30 07:25:49,866 [0-SwingWorker-pool-2-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module Terraforming Mars 2020-04-30 07:25:49,888 [0-SwingWorker-pool-2-thread-1] INFO VASSAL.tools.io.ProcessLauncher - launching C:\Program Files\VASSAL-3.3.0-beta2\jre\bin\java -Xms512M -Xmx1024M -DVASSAL.id=1 -DVASSAL.port=51237 -Duser.home=C:\Users\dbruc -Duser.dir=C:\Program Files\VASSAL-3.3.0-beta2 -cp lib\Vengine.jar VASSAL.launch.Player --load -- C:\Users\dbruc\Downloads\Terraforming_Mars_263.vmod 2020-04-30 07:25:51,157 [1-main] INFO VASSAL.launch.StartUp - Starting 2020-04-30 07:25:51,168 [1-main] INFO VASSAL.launch.StartUp - OS Windows 10 10.0 2020-04-30 07:25:51,169 [1-main] INFO VASSAL.launch.StartUp - Java version 13 2020-04-30 07:25:51,169 [1-main] INFO VASSAL.launch.StartUp - VASSAL version 3.3.0-beta2 2020-04-30 07:25:51,169 [1-main] INFO VASSAL.launch.Launcher - Player 2020-04-30 07:25:53,277 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - VASSAL images folder found at jar:file:/C:/Program%20Files/VASSAL-3.3.0-beta2/lib/Vengine.jar!/images/ 2020-04-30 07:25:53,281 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family VASSAL created for VASSAL.svg 2020-04-30 07:25:53,281 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family VASSAL-jabber created for VASSAL-jabber.png 2020-04-30 07:25:53,281 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family network-idle created for network-idle.svg 2020-04-30 07:25:53,281 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family yes created for yes.svg 2020-04-30 07:25:53,281 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family go-down created for go-down.svg 2020-04-30 07:25:53,281 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family bug created for bug.svg 2020-04-30 07:25:53,281 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family no created for no.svg 2020-04-30 07:25:53,281 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family calculator created for calculator.svg 2020-04-30 07:25:53,282 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family jabber created for jabber.png 2020-04-30 07:25:53,282 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family go-up created for go-up.svg 2020-04-30 07:25:53,282 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family network-server created for network-server.svg 2020-04-30 07:25:56,344 [1-AWT-EventQueue-0] WARN VASSAL.launch.BasicModule - Terraforming Mars version 2.6.3 2020-04-30 07:26:35,863 [1-AWT-EventQueue-0] INFO VASSAL.script.ExpressionInterpreter - Attempting to load /VASSAL/script/init_expression.bsh URI generated=jar:file:/C:/Program%20Files/VASSAL-3.3.0-beta2/lib/Vengine.jar!/VASSAL/script/init_expression.bsh 2020-04-30 07:27:50,305 [1-AWT-EventQueue-0] WARN VASSAL.tools.ErrorDialog - Temperature [Play Sound - temperature.wav] - Audio Clip not found: Clip=temperature.wav 2020-04-30 07:27:50,309 [1-AWT-EventQueue-0] ERROR VASSAL.tools.ErrorDialog - java.io.IOException: javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 24 bit, mono, 3 bytes/frame, little-endian not supported. at VASSAL.tools.AudioSystemClip.<init>(AudioSystemClip.java:86) at VASSAL.tools.DataArchive.getCachedAudioClip(DataArchive.java:127) at VASSAL.counters.PlaySound.myKeyEvent(PlaySound.java:109) at VASSAL.counters.Decorator.keyEvent(Decorator.java:285) at VASSAL.counters.ReportState.keyEvent(ReportState.java:115) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.ReportState.keyEvent(ReportState.java:115) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.ReportState.keyEvent(ReportState.java:115) at VASSAL.counters.Decorator.keyEvent(Decorator.java:287) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.TriggerAction.doLoopOnce(TriggerAction.java:317) at VASSAL.counters.TriggerAction.myKeyEvent(TriggerAction.java:198) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:163) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.ReportState.keyEvent(ReportState.java:115) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.ReportState.keyEvent(ReportState.java:115) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.ReportState.keyEvent(ReportState.java:115) at VASSAL.counters.Decorator.keyEvent(Decorator.java:287) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.GlobalCommand$Visitor.apply(GlobalCommand.java:176) at VASSAL.counters.GlobalCommand$Visitor.visitDefault(GlobalCommand.java:168) at VASSAL.counters.PieceVisitorDispatcher.accept(PieceVisitorDispatcher.java:47) at VASSAL.counters.DeckVisitorDispatcher.accept(DeckVisitorDispatcher.java:37) at VASSAL.counters.GlobalCommand.apply(GlobalCommand.java:117) at VASSAL.counters.GlobalCommand.apply(GlobalCommand.java:90) at VASSAL.counters.CounterGlobalKeyCommand.apply(CounterGlobalKeyCommand.java:194) at VASSAL.counters.CounterGlobalKeyCommand.myKeyEvent(CounterGlobalKeyCommand.java:138) at VASSAL.counters.Decorator.keyEvent(Decorator.java:285) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.TriggerAction.doLoopOnce(TriggerAction.java:317) at VASSAL.counters.TriggerAction.myKeyEvent(TriggerAction.java:198) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:163) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.TriggerAction.doLoopOnce(TriggerAction.java:317) at VASSAL.counters.TriggerAction.myKeyEvent(TriggerAction.java:198) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:163) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.ActionButton$ButtonPusher.doClick(ActionButton.java:262) at VASSAL.counters.ActionButton$ButtonPusher$MapMouseListener.mouseClicked(ActionButton.java:289) at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at VASSAL.build.module.Map.mouseClicked(Map.java:1241) at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.desktop/java.awt.Component.processMouseEvent(Unknown Source) at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source) at java.desktop/java.awt.Component.processEvent(Unknown Source) at java.desktop/java.awt.Container.processEvent(Unknown Source) at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Component.dispatchEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Component.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue$5.run(Unknown Source) at java.desktop/java.awt.EventQueue$5.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.run(Unknown Source) Caused by: javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 24 bit, mono, 3 bytes/frame, little-endian not supported. at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectDL.implOpen(Unknown Source) at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectClip.implOpen(Unknown Source) at java.desktop/com.sun.media.sound.AbstractDataLine.open(Unknown Source) at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectClip.open(Unknown Source) at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectClip.open(Unknown Source) at VASSAL.tools.AudioSystemClip.<init>(AudioSystemClip.java:80) ... 112 common frames omitted 2020-04-30 07:28:06,451 [1-AWT-EventQueue-0] WARN VASSAL.tools.ErrorDialog - Oceans [Play Sound - ocean.wav] - Audio Clip not found: Clip=ocean.wav 2020-04-30 07:28:06,452 [1-AWT-EventQueue-0] ERROR VASSAL.tools.ErrorDialog - java.io.IOException: javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 24 bit, mono, 3 bytes/frame, little-endian not supported. at VASSAL.tools.AudioSystemClip.<init>(AudioSystemClip.java:86) at VASSAL.tools.DataArchive.getCachedAudioClip(DataArchive.java:127) at VASSAL.counters.PlaySound.myKeyEvent(PlaySound.java:109) at VASSAL.counters.Decorator.keyEvent(Decorator.java:285) at VASSAL.counters.TriggerAction.doLoopOnce(TriggerAction.java:317) at VASSAL.counters.TriggerAction.myKeyEvent(TriggerAction.java:198) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:163) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.GlobalCommand$Visitor.apply(GlobalCommand.java:176) at VASSAL.counters.GlobalCommand$Visitor.visitStack(GlobalCommand.java:162) at VASSAL.counters.PieceVisitorDispatcher.accept(PieceVisitorDispatcher.java:44) at VASSAL.counters.DeckVisitorDispatcher.accept(DeckVisitorDispatcher.java:37) at VASSAL.counters.GlobalCommand.apply(GlobalCommand.java:117) at VASSAL.counters.GlobalCommand.apply(GlobalCommand.java:90) at VASSAL.counters.CounterGlobalKeyCommand.apply(CounterGlobalKeyCommand.java:194) at VASSAL.counters.CounterGlobalKeyCommand.myKeyEvent(CounterGlobalKeyCommand.java:138) at VASSAL.counters.Decorator.keyEvent(Decorator.java:285) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.TriggerAction.doLoopOnce(TriggerAction.java:317) at VASSAL.counters.TriggerAction.myKeyEvent(TriggerAction.java:198) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:163) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.ActionButton$ButtonPusher.doClick(ActionButton.java:262) at VASSAL.counters.ActionButton$ButtonPusher$MapMouseListener.mouseClicked(ActionButton.java:289) at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at VASSAL.build.module.Map.mouseClicked(Map.java:1241) at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.desktop/java.awt.Component.processMouseEvent(Unknown Source) at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source) at java.desktop/java.awt.Component.processEvent(Unknown Source) at java.desktop/java.awt.Container.processEvent(Unknown Source) at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Component.dispatchEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Component.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue$5.run(Unknown Source) at java.desktop/java.awt.EventQueue$5.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.run(Unknown Source) Caused by: javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 24 bit, mono, 3 bytes/frame, little-endian not supported. at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectDL.implOpen(Unknown Source) at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectClip.implOpen(Unknown Source) at java.desktop/com.sun.media.sound.AbstractDataLine.open(Unknown Source) at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectClip.open(Unknown Source) at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectClip.open(Unknown Source) at VASSAL.tools.AudioSystemClip.<init>(AudioSystemClip.java:80) ... 69 common frames omitted 2020-04-30 07:28:15,042 [1-AWT-EventQueue-0] WARN VASSAL.tools.ErrorDialog - Oxygen [Play Sound - oxygen.wav] - Audio Clip not found: Clip=oxygen.wav 2020-04-30 07:28:15,043 [1-AWT-EventQueue-0] ERROR VASSAL.tools.ErrorDialog - java.io.IOException: javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 24 bit, mono, 3 bytes/frame, little-endian not supported. at VASSAL.tools.AudioSystemClip.<init>(AudioSystemClip.java:86) at VASSAL.tools.DataArchive.getCachedAudioClip(DataArchive.java:127) at VASSAL.counters.PlaySound.myKeyEvent(PlaySound.java:109) at VASSAL.counters.Decorator.keyEvent(Decorator.java:285) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.TriggerAction.doLoopOnce(TriggerAction.java:317) at VASSAL.counters.TriggerAction.myKeyEvent(TriggerAction.java:198) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:163) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.GlobalCommand$Visitor.apply(GlobalCommand.java:176) at VASSAL.counters.GlobalCommand$Visitor.visitDefault(GlobalCommand.java:168) at VASSAL.counters.PieceVisitorDispatcher.accept(PieceVisitorDispatcher.java:47) at VASSAL.counters.DeckVisitorDispatcher.accept(DeckVisitorDispatcher.java:37) at VASSAL.counters.GlobalCommand.apply(GlobalCommand.java:117) at VASSAL.counters.GlobalCommand.apply(GlobalCommand.java:90) at VASSAL.counters.CounterGlobalKeyCommand.apply(CounterGlobalKeyCommand.java:194) at VASSAL.counters.CounterGlobalKeyCommand.myKeyEvent(CounterGlobalKeyCommand.java:138) at VASSAL.counters.Decorator.keyEvent(Decorator.java:285) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.RestrictCommands.keyEvent(RestrictCommands.java:111) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.TriggerAction.doLoopOnce(TriggerAction.java:317) at VASSAL.counters.TriggerAction.myKeyEvent(TriggerAction.java:198) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:163) at VASSAL.counters.Decorator.keyEvent(Decorator.java:287) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.RestrictCommands.keyEvent(RestrictCommands.java:111) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.TriggerAction.doLoopOnce(TriggerAction.java:317) at VASSAL.counters.TriggerAction.myKeyEvent(TriggerAction.java:198) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:163) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.Decorator.keyEvent(Decorator.java:287) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.RestrictCommands.keyEvent(RestrictCommands.java:111) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.ActionButton$ButtonPusher.doClick(ActionButton.java:262) at VASSAL.counters.ActionButton$ButtonPusher$MapMouseListener.mouseClicked(ActionButton.java:289) at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at VASSAL.build.module.Map.mouseClicked(Map.java:1241) at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.desktop/java.awt.Component.processMouseEvent(Unknown Source) at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source) at java.desktop/java.awt.Component.processEvent(Unknown Source) at java.desktop/java.awt.Container.processEvent(Unknown Source) at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Component.dispatchEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Component.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue$5.run(Unknown Source) at java.desktop/java.awt.EventQueue$5.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.run(Unknown Source) Caused by: javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 24 bit, mono, 3 bytes/frame, little-endian not supported. at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectDL.implOpen(Unknown Source) at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectClip.implOpen(Unknown Source) at java.desktop/com.sun.media.sound.AbstractDataLine.open(Unknown Source) at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectClip.open(Unknown Source) at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectClip.open(Unknown Source) at VASSAL.tools.AudioSystemClip.<init>(AudioSystemClip.java:80) ... 110 common frames omitted 2020-04-30 07:29:10,916 [1-AWT-EventQueue-0] INFO VASSAL.build.GameModule - Exiting 2020-04-30 07:29:11,472 [0-IPC receiver for 1908925855] ERROR VASSAL.tools.ipc.IPCMessageReceiver - java.net.SocketException: Connection reset at java.base/sun.nio.ch.NioSocketImpl.implRead(Unknown Source) at java.base/sun.nio.ch.NioSocketImpl.read(Unknown Source) at java.base/sun.nio.ch.NioSocketImpl$1.read(Unknown Source) at java.base/java.net.Socket$SocketInputStream.read(Unknown Source) at java.base/java.net.Socket$SocketInputStream.read(Unknown Source) at java.base/java.io.ObjectInputStream$PeekInputStream.peek(Unknown Source) at java.base/java.io.ObjectInputStream$BlockDataInputStream.peek(Unknown Source) at java.base/java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source) at java.base/java.io.ObjectInputStream.readObject0(Unknown Source) at java.base/java.io.ObjectInputStream.readObject(Unknown Source) at VASSAL.tools.ipc.IPCMessageReceiver.run(IPCMessageReceiver.java:35) at java.base/java.lang.Thread.run(Unknown Source) 2020-04-30 07:29:33,806 [0-SwingWorker-pool-2-thread-2] INFO VASSAL.launch.AbstractLaunchAction - Loading module file C:\Users\dbruc\Downloads\Terraforming_Mars_263.vmod 2020-04-30 07:29:33,944 [0-SwingWorker-pool-2-thread-2] INFO VASSAL.launch.TilingHandler - No images to tile. 2020-04-30 07:29:33,947 [0-SwingWorker-pool-2-thread-2] INFO VASSAL.launch.AbstractLaunchAction - Loading module Terraforming Mars 2020-04-30 07:29:33,958 [0-SwingWorker-pool-2-thread-2] INFO VASSAL.tools.io.ProcessLauncher - launching C:\Program Files\VASSAL-3.3.0-beta2\jre\bin\java -Xms512M -Xmx1024M -DVASSAL.id=3 -DVASSAL.port=51252 -Duser.home=C:\Users\dbruc -Duser.dir=C:\Program Files\VASSAL-3.3.0-beta2 -cp lib\Vengine.jar VASSAL.launch.Player --load -- C:\Users\dbruc\Downloads\Terraforming_Mars_263.vmod 2020-04-30 07:29:35,203 [3-main] INFO VASSAL.launch.StartUp - Starting 2020-04-30 07:29:35,213 [3-main] INFO VASSAL.launch.StartUp - OS Windows 10 10.0 2020-04-30 07:29:35,213 [3-main] INFO VASSAL.launch.StartUp - Java version 13 2020-04-30 07:29:35,214 [3-main] INFO VASSAL.launch.StartUp - VASSAL version 3.3.0-beta2 2020-04-30 07:29:35,214 [3-main] INFO VASSAL.launch.Launcher - Player 2020-04-30 07:29:37,254 [3-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - VASSAL images folder found at jar:file:/C:/Program%20Files/VASSAL-3.3.0-beta2/lib/Vengine.jar!/images/ 2020-04-30 07:29:37,257 [3-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family VASSAL created for VASSAL.svg 2020-04-30 07:29:37,257 [3-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family VASSAL-jabber created for VASSAL-jabber.png 2020-04-30 07:29:37,257 [3-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family network-idle created for network-idle.svg 2020-04-30 07:29:37,257 [3-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family yes created for yes.svg 2020-04-30 07:29:37,258 [3-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family go-down created for go-down.svg 2020-04-30 07:29:37,258 [3-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family bug created for bug.svg 2020-04-30 07:29:37,258 [3-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family no created for no.svg 2020-04-30 07:29:37,258 [3-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family calculator created for calculator.svg 2020-04-30 07:29:37,258 [3-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family jabber created for jabber.png 2020-04-30 07:29:37,258 [3-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family go-up created for go-up.svg 2020-04-30 07:29:37,258 [3-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family network-server created for network-server.svg 2020-04-30 07:29:40,035 [3-AWT-EventQueue-0] WARN VASSAL.launch.BasicModule - Terraforming Mars version 2.6.3 2020-04-30 07:30:31,031 [3-AWT-EventQueue-0] INFO VASSAL.script.ExpressionInterpreter - Attempting to load /VASSAL/script/init_expression.bsh URI generated=jar:file:/C:/Program%20Files/VASSAL-3.3.0-beta2/lib/Vengine.jar!/VASSAL/script/init_expression.bsh 2020-04-30 07:31:23,733 [3-AWT-EventQueue-0] WARN VASSAL.tools.ErrorDialog - Temperature [Play Sound - temperature.wav] - Audio Clip not found: Clip=temperature.wav 2020-04-30 07:31:23,736 [3-AWT-EventQueue-0] ERROR VASSAL.tools.ErrorDialog - java.io.IOException: javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 24 bit, mono, 3 bytes/frame, little-endian not supported. at VASSAL.tools.AudioSystemClip.<init>(AudioSystemClip.java:86) at VASSAL.tools.DataArchive.getCachedAudioClip(DataArchive.java:127) at VASSAL.counters.PlaySound.myKeyEvent(PlaySound.java:109) at VASSAL.counters.Decorator.keyEvent(Decorator.java:285) at VASSAL.counters.ReportState.keyEvent(ReportState.java:115) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.ReportState.keyEvent(ReportState.java:115) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.ReportState.keyEvent(ReportState.java:115) at VASSAL.counters.Decorator.keyEvent(Decorator.java:287) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.TriggerAction.doLoopOnce(TriggerAction.java:317) at VASSAL.counters.TriggerAction.myKeyEvent(TriggerAction.java:198) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:163) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.ReportState.keyEvent(ReportState.java:115) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.ReportState.keyEvent(ReportState.java:115) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.ReportState.keyEvent(ReportState.java:115) at VASSAL.counters.Decorator.keyEvent(Decorator.java:287) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.GlobalCommand$Visitor.apply(GlobalCommand.java:176) at VASSAL.counters.GlobalCommand$Visitor.visitDefault(GlobalCommand.java:168) at VASSAL.counters.PieceVisitorDispatcher.accept(PieceVisitorDispatcher.java:47) at VASSAL.counters.DeckVisitorDispatcher.accept(DeckVisitorDispatcher.java:37) at VASSAL.counters.GlobalCommand.apply(GlobalCommand.java:117) at VASSAL.counters.GlobalCommand.apply(GlobalCommand.java:90) at VASSAL.counters.CounterGlobalKeyCommand.apply(CounterGlobalKeyCommand.java:194) at VASSAL.counters.CounterGlobalKeyCommand.myKeyEvent(CounterGlobalKeyCommand.java:138) at VASSAL.counters.Decorator.keyEvent(Decorator.java:285) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.TriggerAction.doLoopOnce(TriggerAction.java:317) at VASSAL.counters.TriggerAction.myKeyEvent(TriggerAction.java:198) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:163) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.TriggerAction.doLoopOnce(TriggerAction.java:317) at VASSAL.counters.TriggerAction.myKeyEvent(TriggerAction.java:198) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:163) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.ActionButton$ButtonPusher.doClick(ActionButton.java:262) at VASSAL.counters.ActionButton$ButtonPusher$MapMouseListener.mouseClicked(ActionButton.java:289) at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at VASSAL.build.module.Map.mouseClicked(Map.java:1241) at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.desktop/java.awt.Component.processMouseEvent(Unknown Source) at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source) at java.desktop/java.awt.Component.processEvent(Unknown Source) at java.desktop/java.awt.Container.processEvent(Unknown Source) at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Component.dispatchEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Component.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue$5.run(Unknown Source) at java.desktop/java.awt.EventQueue$5.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.run(Unknown Source) Caused by: javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 24 bit, mono, 3 bytes/frame, little-endian not supported. at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectDL.implOpen(Unknown Source) at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectClip.implOpen(Unknown Source) at java.desktop/com.sun.media.sound.AbstractDataLine.open(Unknown Source) at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectClip.open(Unknown Source) at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectClip.open(Unknown Source) at VASSAL.tools.AudioSystemClip.<init>(AudioSystemClip.java:80) ... 112 common frames omitted 2020-04-30 07:31:50,137 [3-AWT-EventQueue-0] WARN VASSAL.tools.ErrorDialog - Oxygen [Play Sound - oxygen.wav] - Audio Clip not found: Clip=oxygen.wav 2020-04-30 07:31:50,138 [3-AWT-EventQueue-0] ERROR VASSAL.tools.ErrorDialog - java.io.IOException: javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 24 bit, mono, 3 bytes/frame, little-endian not supported. at VASSAL.tools.AudioSystemClip.<init>(AudioSystemClip.java:86) at VASSAL.tools.DataArchive.getCachedAudioClip(DataArchive.java:127) at VASSAL.counters.PlaySound.myKeyEvent(PlaySound.java:109) at VASSAL.counters.Decorator.keyEvent(Decorator.java:285) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.TriggerAction.doLoopOnce(TriggerAction.java:317) at VASSAL.counters.TriggerAction.myKeyEvent(TriggerAction.java:198) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:163) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.GlobalCommand$Visitor.apply(GlobalCommand.java:176) at VASSAL.counters.GlobalCommand$Visitor.visitDefault(GlobalCommand.java:168) at VASSAL.counters.PieceVisitorDispatcher.accept(PieceVisitorDispatcher.java:47) at VASSAL.counters.DeckVisitorDispatcher.accept(DeckVisitorDispatcher.java:37) at VASSAL.counters.GlobalCommand.apply(GlobalCommand.java:117) at VASSAL.counters.GlobalCommand.apply(GlobalCommand.java:90) at VASSAL.counters.CounterGlobalKeyCommand.apply(CounterGlobalKeyCommand.java:194) at VASSAL.counters.CounterGlobalKeyCommand.myKeyEvent(CounterGlobalKeyCommand.java:138) at VASSAL.counters.Decorator.keyEvent(Decorator.java:285) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.RestrictCommands.keyEvent(RestrictCommands.java:111) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.TriggerAction.doLoopOnce(TriggerAction.java:317) at VASSAL.counters.TriggerAction.myKeyEvent(TriggerAction.java:198) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:163) at VASSAL.counters.Decorator.keyEvent(Decorator.java:287) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.RestrictCommands.keyEvent(RestrictCommands.java:111) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.TriggerAction.doLoopOnce(TriggerAction.java:317) at VASSAL.counters.TriggerAction.myKeyEvent(TriggerAction.java:198) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:163) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:162) at VASSAL.counters.Decorator.keyEvent(Decorator.java:287) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.RestrictCommands.keyEvent(RestrictCommands.java:111) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.ActionButton$ButtonPusher.doClick(ActionButton.java:262) at VASSAL.counters.ActionButton$ButtonPusher$MapMouseListener.mouseClicked(ActionButton.java:289) at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at VASSAL.build.module.Map.mouseClicked(Map.java:1241) at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.desktop/java.awt.Component.processMouseEvent(Unknown Source) at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source) at java.desktop/java.awt.Component.processEvent(Unknown Source) at java.desktop/java.awt.Container.processEvent(Unknown Source) at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Component.dispatchEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Component.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue$5.run(Unknown Source) at java.desktop/java.awt.EventQueue$5.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.run(Unknown Source) Caused by: javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 24 bit, mono, 3 bytes/frame, little-endian not supported. at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectDL.implOpen(Unknown Source) at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectClip.implOpen(Unknown Source) at java.desktop/com.sun.media.sound.AbstractDataLine.open(Unknown Source) at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectClip.open(Unknown Source) at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectClip.open(Unknown Source) at VASSAL.tools.AudioSystemClip.<init>(AudioSystemClip.java:80) ... 110 common frames omitted 2020-04-30 07:31:58,035 [3-AWT-EventQueue-0] WARN VASSAL.tools.ErrorDialog - Oceans [Play Sound - ocean.wav] - Audio Clip not found: Clip=ocean.wav 2020-04-30 07:31:58,035 [3-AWT-EventQueue-0] ERROR VASSAL.tools.ErrorDialog - java.io.IOException: javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 24 bit, mono, 3 bytes/frame, little-endian not supported. at VASSAL.tools.AudioSystemClip.<init>(AudioSystemClip.java:86) at VASSAL.tools.DataArchive.getCachedAudioClip(DataArchive.java:127) at VASSAL.counters.PlaySound.myKeyEvent(PlaySound.java:109) at VASSAL.counters.Decorator.keyEvent(Decorator.java:285) at VASSAL.counters.TriggerAction.doLoopOnce(TriggerAction.java:317) at VASSAL.counters.TriggerAction.myKeyEvent(TriggerAction.java:198) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:163) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.GlobalCommand$Visitor.apply(GlobalCommand.java:176) at VASSAL.counters.GlobalCommand$Visitor.visitStack(GlobalCommand.java:162) at VASSAL.counters.PieceVisitorDispatcher.accept(PieceVisitorDispatcher.java:44) at VASSAL.counters.DeckVisitorDispatcher.accept(DeckVisitorDispatcher.java:37) at VASSAL.counters.GlobalCommand.apply(GlobalCommand.java:117) at VASSAL.counters.GlobalCommand.apply(GlobalCommand.java:90) at VASSAL.counters.CounterGlobalKeyCommand.apply(CounterGlobalKeyCommand.java:194) at VASSAL.counters.CounterGlobalKeyCommand.myKeyEvent(CounterGlobalKeyCommand.java:138) at VASSAL.counters.Decorator.keyEvent(Decorator.java:285) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.TriggerAction.doLoopOnce(TriggerAction.java:317) at VASSAL.counters.TriggerAction.myKeyEvent(TriggerAction.java:198) at VASSAL.counters.TriggerAction.keyEvent(TriggerAction.java:163) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.Decorator.keyEvent(Decorator.java:286) at VASSAL.counters.ActionButton$ButtonPusher.doClick(ActionButton.java:262) at VASSAL.counters.ActionButton$ButtonPusher$MapMouseListener.mouseClicked(ActionButton.java:289) at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at VASSAL.build.module.Map.mouseClicked(Map.java:1241) at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.desktop/java.awt.Component.processMouseEvent(Unknown Source) at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source) at java.desktop/java.awt.Component.processEvent(Unknown Source) at java.desktop/java.awt.Container.processEvent(Unknown Source) at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Component.dispatchEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Component.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue$5.run(Unknown Source) at java.desktop/java.awt.EventQueue$5.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.run(Unknown Source) Caused by: javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 24 bit, mono, 3 bytes/frame, little-endian not supported. at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectDL.implOpen(Unknown Source) at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectClip.implOpen(Unknown Source) at java.desktop/com.sun.media.sound.AbstractDataLine.open(Unknown Source) at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectClip.open(Unknown Source) at java.desktop/com.sun.media.sound.DirectAudioDevice$DirectClip.open(Unknown Source) at VASSAL.tools.AudioSystemClip.<init>(AudioSystemClip.java:80) ... 69 common frames omitted

Are your friends able to play any sounds form that module, or does the error happen on the the very first try?

Yes, some sounds work. Quote from Doug: “there are some sounds that work, such as the TR raise. I think if someone plays an ocean, it’s supposed to play the ocean sound then the TR sound, but I get the error for ocean then the TR sound.”

Thus spake jrwatts:

Yes, some sounds work. Quote from Doug: “there are some sounds that
work, such as the TR raise. I think if someone plays an ocean, it’s
supposed to play the ocean sound then the TR sound, but I get the error
for ocean then the TR sound.”

Does the ocean sound ever play correctly for him?


J.

No, ocean.wav, temperature.wav, and oxygen.wav always cause an error.

I’ve finally been able to reproduce the problem on a Windows VM, with a minimal test module: vassalengine.org/~uckelman/t … dtest.vmod

It looks like the javax.sound.sampled.AudioSystem doesn’t support the particular format those WAV files are in on Windows. I’m not sure what we can do about that, as we have to move ahead past Java 8 and as the sound API we were using through V3.2 was removed in Java 9.

I’ll investigate a bit more, but the answer might be: Encode these sound files differently.

That’s what I was suspecting. Should be simple enough to re-encode the files, but it’s definitely something module developers will need to aware of as we transition to 3.3.0!

Thus spake jrwatts:

That’s what I was suspecting. Should be simple enough to re-encode the
files, but it’s definitely something module developers will need to
aware of as we transition to 3.3.0!

I’m not sure how best to convey this to module designers. For one thing,
it’s not obvious what WAV files will work in what situations. I have
yet to hit one which fails on Linux. We have examples of ones which fail
on Windows. How could a module designer know in advance which are which?
I don’t know what guidance would be helpful.

I don’t understand why the Java developers replaced something which never
had a problem playing whatever WAV files we gave it with something that
doesn’t play some of them depending on what OS you’re using.


J.

I did a quick look around for the original error message and the usual answer was something like ‘I gave up on the in-built Java sound handling and changed to using the Beads library and have not had a problem since.’

I have not investigated it for suitability at all.

I think I’ve found a solution. AudioSystem.getAudioInputStream(InputStream) can give you AudioInputStreams which have an AudioFormat that’s not supported by Clip. But there’s another overload, AudioSystem.getAudioInputStream(AudioFormat, AudioInputStream), which takes an existing AudioInputStream and a target AudioFormat and produces you a new AudioInputStream with the given AudioFormat. Clip.getFormat() will get you the default format supported by a Clip… So if we get a Clip, then call AudioSystem.getAudioInputStream(clip.getFormat(), stream) on the AudioInputStream we alreaday have… we apparently end up converting it to one that Clip is sure to be able to open and play.

This works with my Windows VM, so I expect it will work elsewhere. What a faff to figure out. They could have mentioned this when they removed the old Applet sound API rather than just marking it deprecated and letting everyone fend for themselves.

I’ll get a test build uploaded in a bit.

Try 3.3.0-svn9382, here: vassalengine.org/~uckelman/tmp/

Does that work?

Doug didn’t have time for a full game, but a quick test resulted in no sound errors, and all sounds playing correctly. We’ll probably play a full game in another day or two, and try the latest build at that time.

Thus spake jrwatts:

Doug didn’t have time for a full game, but a quick test resulted in no
sound errors, and all sounds playing correctly. We’ll probably play a
full game in another day or two, and try the latest build at that time.

If he got the sounds to play at all, then there’s a good chance he won’t
have any further problems. Thanks for testing.

This fix will go into 3.3.0-beta3 in a few days.


J.