Index: trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java	(revision 5870)
+++ trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java	(revision 5871)
@@ -150,5 +150,5 @@
      */
     public SequenceCommand simplifyWay(Way w, DataSet ds) {
-        double threshold = Main.pref.getDouble("simplify-way.max-error", "3");
+        double threshold = Main.pref.getDouble("simplify-way.max-error", 3.0);
         int lower = 0;
         int i = 0;
Index: trunk/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java	(revision 5870)
+++ trunk/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java	(revision 5871)
@@ -15,6 +15,13 @@
 import org.openstreetmap.josm.tools.Shortcut;
 
+/**
+ * Jump the audio backward 10 seconds and start playing if paused. 
+ * @since 547
+ */
 public class AudioBackAction extends JosmAction {
 
+    /**
+     * Constructs a new {@code AudioBackAction}.
+     */
     public AudioBackAction() {
         super(trc("audio", "Back"), "audio-back", trc("audio", "Jump back."),
@@ -27,5 +34,5 @@
             if (AudioPlayer.playing() || AudioPlayer.paused())
                 AudioPlayer.play(AudioPlayer.url(), AudioPlayer.position()
-                - Main.pref.getDouble("audio.forwardbackamount","10.0"));
+                - Main.pref.getDouble("audio.forwardbackamount", 10.0));
             else
                 MarkerLayer.playAudio();
Index: trunk/src/org/openstreetmap/josm/actions/audio/AudioFastSlowAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/audio/AudioFastSlowAction.java	(revision 5870)
+++ trunk/src/org/openstreetmap/josm/actions/audio/AudioFastSlowAction.java	(revision 5871)
@@ -9,11 +9,24 @@
 import org.openstreetmap.josm.tools.Shortcut;
 
+/**
+ * Abstract superclass of {@link AudioFasterAction} and {@link AudioSlowerAction}.
+ * @since 563
+ */
 abstract public class AudioFastSlowAction extends JosmAction {
 
     private double multiplier;
 
+    /**
+     * Constructs a new {@code AudioFastSlowAction}.
+     * 
+     * @param name the action's text as displayed on the menu (if it is added to a menu)
+     * @param iconName the filename of the icon to use
+     * @param tooltip  a longer description of the action that will be displayed in the tooltip.
+     * @param shortcut a ready-created shortcut object.
+     * @param fast {@code true} to increase speed (faster audio), {@code false} to decrease it (slower audio).
+     */
     public AudioFastSlowAction(String name, String iconName, String tooltip, Shortcut shortcut, boolean fast) {
         super(name, iconName, tooltip, shortcut, true);
-        multiplier = Main.pref.getDouble("audio.fastfwdmultiplier","1.3");
+        multiplier = Main.pref.getDouble("audio.fastfwdmultiplier", 1.3);
         if (! fast)
             multiplier = 1.0 / multiplier;
Index: trunk/src/org/openstreetmap/josm/actions/audio/AudioFasterAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/audio/AudioFasterAction.java	(revision 5870)
+++ trunk/src/org/openstreetmap/josm/actions/audio/AudioFasterAction.java	(revision 5871)
@@ -10,6 +10,14 @@
 import org.openstreetmap.josm.tools.Shortcut;
 
+/**
+ * Increase the speed of audio playback.
+ * Each use increases the speed further until one of the other controls is used. 
+ * @since 563
+ */
 public class AudioFasterAction extends AudioFastSlowAction {
 
+    /**
+     * Constructs a new {@code AudioFasterAction}.
+     */
     public AudioFasterAction() {
         super(trc("audio", "Faster"), "audio-faster", trc("audio", "Faster Forward"),
Index: trunk/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java	(revision 5870)
+++ trunk/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java	(revision 5871)
@@ -14,5 +14,13 @@
 import org.openstreetmap.josm.tools.Shortcut;
 
+/**
+ * Jump the audio forward 10 seconds.
+ * @since 547
+ */
 public class AudioFwdAction extends JosmAction {
+    
+    /**
+     * Constructs a new {@code AudioFwdAction}.
+     */
     public AudioFwdAction() {
         super(trc("audio", "Forward"), "audio-fwd", trc("audio", "Jump forward"),
@@ -24,5 +32,5 @@
             if (AudioPlayer.playing() || AudioPlayer.paused())
                 AudioPlayer.play(AudioPlayer.url(), AudioPlayer.position()
-                + Main.pref.getDouble("audio.forwardbackamount","10.0"));
+                + Main.pref.getDouble("audio.forwardbackamount", 10.0));
             else
                 MarkerLayer.playAudio();
Index: trunk/src/org/openstreetmap/josm/actions/audio/AudioNextAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/audio/AudioNextAction.java	(revision 5870)
+++ trunk/src/org/openstreetmap/josm/actions/audio/AudioNextAction.java	(revision 5871)
@@ -12,6 +12,14 @@
 import org.openstreetmap.josm.tools.Shortcut;
 
+/**
+ * Play the sound track from the Audio Marker after the one most recently played.<br/>
+ * Play from the first such Marker if none has been played, or repeat the last marker if at the end. 
+ * @since 547
+ */
 public class AudioNextAction extends JosmAction {
 
+    /**
+     * Constructs a new {@code AudioNextAction}.
+     */
     public AudioNextAction() {
         super(trc("audio", "Next Marker"), "audio-next", trc("audio", "Play next marker."),
Index: trunk/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java	(revision 5870)
+++ trunk/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java	(revision 5871)
@@ -13,6 +13,15 @@
 import org.openstreetmap.josm.tools.Shortcut;
 
+/**
+ * If not playing, play the sound track from the first Audio Marker, or from the point at which it was paused.<br/>
+ * If playing, pause the sound.<br/>
+ * If fast forwarding or slow forwarding, resume normal speed. 
+ * @since 547
+ */
 public class AudioPlayPauseAction extends JosmAction {
 
+    /**
+     * Constructs a new {@code AudioPlayPauseAction}.
+     */
     public AudioPlayPauseAction() {
         super(trc("audio", "Play/Pause"), "audio-playpause", tr("Play/pause audio."),
Index: trunk/src/org/openstreetmap/josm/actions/audio/AudioPrevAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/audio/AudioPrevAction.java	(revision 5870)
+++ trunk/src/org/openstreetmap/josm/actions/audio/AudioPrevAction.java	(revision 5871)
@@ -12,6 +12,14 @@
 import org.openstreetmap.josm.tools.Shortcut;
 
+/**
+ * Play the sound track from the Audio Marker before the one most recently played.<br/>
+ * Play from the first such Marker if none has been played or already at the first marker. 
+ * @since 547
+ */
 public class AudioPrevAction extends JosmAction {
 
+    /**
+     * Constructs a new {@code AudioPrevAction}.
+     */
     public AudioPrevAction() {
         super(trc("audio", "Previous Marker"), "audio-prev", trc("audio", "Play previous marker."),
Index: trunk/src/org/openstreetmap/josm/actions/audio/AudioSlowerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/audio/AudioSlowerAction.java	(revision 5870)
+++ trunk/src/org/openstreetmap/josm/actions/audio/AudioSlowerAction.java	(revision 5871)
@@ -10,9 +10,17 @@
 import org.openstreetmap.josm.tools.Shortcut;
 
+/**
+ * Decrease the speed of audio playback.
+ * Each use decreases the speed further until one of the other controls is used. 
+ * @since 563
+ */
 public class AudioSlowerAction extends AudioFastSlowAction {
 
+    /**
+     * Constructs a new {@code AudioSlowerAction}.
+     */
     public AudioSlowerAction() {
         super(trc("audio", "Slower"), "audio-slower", trc("audio", "Slower Forward"),
-        Shortcut.registerShortcut("audio:slower", tr("Audio: {0}", trc("audio", "Slower")), KeyEvent.VK_F4, Shortcut.DIRECT), true);
+        Shortcut.registerShortcut("audio:slower", tr("Audio: {0}", trc("audio", "Slower")), KeyEvent.VK_F4, Shortcut.DIRECT), false);
         this.putValue("help", ht("/Action/AudioSlower"));
     }
Index: trunk/src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 5870)
+++ trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 5871)
@@ -824,14 +824,4 @@
     }
 
-    synchronized public double getDouble(String key, String def) {
-        putDefault(key, def);
-        String v = get(key);
-        if(v != null && v.length() != 0) {
-            try { return Double.parseDouble(v); } catch(NumberFormatException e) {}
-        }
-        try { return Double.parseDouble(def); } catch(NumberFormatException e) {}
-        return 0.0;
-    }
-
     /**
      * Get a list of values for a certain key
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 5870)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 5871)
@@ -31,4 +31,8 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+/**
+ * Import audio files into a GPX layer to enable audio playback functions.
+ * @since 5715
+ */
 public class ImportAudioAction extends AbstractAction {
     private final GpxLayer layer;
@@ -39,4 +43,8 @@
     }
 
+    /**
+     * Constructs a new {@code ImportAudioAction}.
+     * @param layer The associated GPX layer
+     */
     public ImportAudioAction(final GpxLayer layer) {
         super(tr("Import Audio"), ImageProvider.get("importaudio"));
@@ -105,5 +113,5 @@
     }
     
-        /**
+    /**
      * Makes a new marker layer derived from this GpxLayer containing at least one audio marker
      * which the given audio file is associated with. Markers are derived from the following (a)
@@ -213,5 +221,5 @@
             double startTime = lastModified - duration;
             startTime = firstStartTime + (startTime - firstStartTime)
-                    / Main.pref.getDouble("audio.calibration", "1.0" /* default, ratio */);
+                    / Main.pref.getDouble("audio.calibration", 1.0 /* default, ratio */);
             WayPoint w1 = null;
             WayPoint w2 = null;
@@ -314,5 +322,3 @@
         }
     }
-
-    
 }
Index: trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java	(revision 5870)
+++ trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java	(revision 5871)
@@ -32,5 +32,5 @@
  *
  * @author David Earl<david@frankieandshadow.com>
- *
+ * @since 572
  */
 public class PlayHeadMarker extends Marker {
@@ -47,4 +47,8 @@
     private int dropTolerance; /* pixels */
 
+    /**
+     * Returns the unique instance of {@code PlayHeadMarker}.
+     * @return The unique instance of {@code PlayHeadMarker}.
+     */
     public static PlayHeadMarker create() {
         if (playHead == null) {
@@ -264,5 +268,10 @@
     }
 
-    public void paint(Graphics g, MapView mv /*, boolean mousePressed */) {
+    /**
+     * Paint the marker icon in the given graphics context.
+     * @param g The graphics context
+     * @param mv The map
+     */
+    public void paint(Graphics g, MapView mv) {
         if (time < 0.0) return;
         Point screen = mv.getPoint(getEastNorth());
@@ -270,8 +279,11 @@
     }
 
+    /**
+     * Animates the marker along the track.
+     */
     public void animate() {
         if (! enabled) return;
         if (timer == null) {
-            animationInterval = Main.pref.getDouble("marker.audioanimationinterval", "1"); //milliseconds
+            animationInterval = Main.pref.getDouble("marker.audioanimationinterval", 1.0); //milliseconds
             timer = new Timer((int)(animationInterval * 1000.0), new ActionListener() {
                 public void actionPerformed(ActionEvent e) {
Index: trunk/src/org/openstreetmap/josm/tools/AudioPlayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/AudioPlayer.java	(revision 5870)
+++ trunk/src/org/openstreetmap/josm/tools/AudioPlayer.java	(revision 5871)
@@ -20,5 +20,5 @@
  *
  * @author David Earl <david@frankieandshadow.com>
- *
+ * @since 547
  */
 public class AudioPlayer extends Thread {
@@ -104,5 +104,5 @@
      * start at the beginning of the stream
      * @param url The resource to play, which must be a WAV file or stream
-     * @throws audio fault exception, e.g. can't open stream,  unhandleable audio format
+     * @throws Exception audio fault exception, e.g. can't open stream,  unhandleable audio format
      */
     public static void play(URL url) throws Exception {
@@ -114,5 +114,5 @@
      * @param url The resource to play, which must be a WAV file or stream
      * @param seconds The number of seconds into the audio to start playing
-     * @throws audio fault exception, e.g. can't open stream,  unhandleable audio format
+     * @throws Exception audio fault exception, e.g. can't open stream,  unhandleable audio format
      */
     public static void play(URL url, double seconds) throws Exception {
@@ -125,5 +125,5 @@
      * @param seconds The number of seconds into the audio to start playing
      * @param speed Rate at which audio playes (1.0 = real time, > 1 is faster)
-     * @throws audio fault exception, e.g. can't open stream,  unhandleable audio format
+     * @throws Exception audio fault exception, e.g. can't open stream,  unhandleable audio format
      */
     public static void play(URL url, double seconds, double speed) throws Exception {
@@ -133,5 +133,5 @@
     /**
      * Pauses the currently playing audio stream. Does nothing if nothing playing.
-     * @throws audio fault exception, e.g. can't open stream,  unhandleable audio format
+     * @throws Exception audio fault exception, e.g. can't open stream,  unhandleable audio format
      */
     public static void pause() throws Exception {
@@ -194,4 +194,7 @@
     }
 
+    /**
+     * Resets the audio player.
+     */
     public static void reset() {
         if(audioPlayer != null)
@@ -208,6 +211,6 @@
         command = new Execute();
         playingUrl = null;
-        leadIn = Main.pref.getDouble("audio.leadin", "1.0" /* default, seconds */);
-        calibration = Main.pref.getDouble("audio.calibration", "1.0" /* default, ratio */);
+        leadIn = Main.pref.getDouble("audio.leadin", 1.0 /* default, seconds */);
+        calibration = Main.pref.getDouble("audio.calibration", 1.0 /* default, ratio */);
         start();
         while (state == State.INITIALIZING) { yield(); }
@@ -338,4 +341,8 @@
     }
 
+    /**
+     * Shows a popup audio error message for the given exception. 
+     * @param ex The exception used as error reason. Cannot be {@code null}.
+     */
     public static void audioMalfunction(Exception ex) {
         String msg = ex.getMessage();
Index: trunk/src/org/openstreetmap/josm/tools/AudioUtil.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/AudioUtil.java	(revision 5870)
+++ trunk/src/org/openstreetmap/josm/tools/AudioUtil.java	(revision 5871)
@@ -12,10 +12,16 @@
 
 /**
- * Returns calibrated length of recording in seconds.
+ * Utils functions for audio.
  *
  * @author David Earl <david@frankieandshadow.com>
- *
+ * @since 1462
  */
 public class AudioUtil {
+    
+    /**
+     * Returns calibrated length of recording in seconds.
+     * @param wavFile the recording file (WAV format)
+     * @return the calibrated length of recording in seconds.
+     */
     static public double getCalibratedDuration(File wavFile) {
         try {
@@ -28,5 +34,5 @@
             double naturalLength = filesize / bytesPerSecond;
             audioInputStream.close();
-            double calibration = Main.pref.getDouble("audio.calibration", "1.0" /* default, ratio */);
+            double calibration = Main.pref.getDouble("audio.calibration", 1.0 /* default, ratio */);
             return naturalLength / calibration;
         } catch (Exception e) {
