diff --git a/EarTrumpet/Addons/EarTrumpet.Actions/AddonResources.xaml b/EarTrumpet/Addons/EarTrumpet.Actions/AddonResources.xaml
index 482df820d..17a97f562 100644
--- a/EarTrumpet/Addons/EarTrumpet.Actions/AddonResources.xaml
+++ b/EarTrumpet/Addons/EarTrumpet.Actions/AddonResources.xaml
@@ -317,8 +317,9 @@
vol,
+ SetVolumeKind.Increment => (prevVol + vol).Bound(0, 1),
+ SetVolumeKind.Decrement => (prevVol - vol).Bound(0, 1),
+ _ => throw new ArgumentException("Invalid volume action.")
+ });
+ }
+ break;
+ case VolumeUnit.Decibel:
+ {
+ var vol = (float)part.Volume;
+ var prevVol = stream.GetVolumeLogarithmic();
+ stream.SetVolumeLogarithmic(action switch {
+ SetVolumeKind.Set => vol,
+ SetVolumeKind.Increment => (prevVol + vol).Bound(App.Settings.LogarithmicVolumeMinDb, 0),
+ SetVolumeKind.Decrement => (prevVol - vol).Bound(App.Settings.LogarithmicVolumeMinDb, 0),
+ _ => throw new ArgumentException("Invalid volume action.")
+ });
+ }
+ break;
+ default:
+ throw new ArgumentException("Invalid volume unit.");
+ }
+ }
+ catch (Exception ex) when (ex.Is(HRESULT.AUDCLNT_E_DEVICE_INVALIDATED))
+ {
+ // Expected in some cases.
}
}
}
diff --git a/EarTrumpet/Addons/EarTrumpet.Actions/DataModel/Serialization/Actions.cs b/EarTrumpet/Addons/EarTrumpet.Actions/DataModel/Serialization/Actions.cs
index 8986e4596..d02ff836d 100644
--- a/EarTrumpet/Addons/EarTrumpet.Actions/DataModel/Serialization/Actions.cs
+++ b/EarTrumpet/Addons/EarTrumpet.Actions/DataModel/Serialization/Actions.cs
@@ -24,6 +24,7 @@ public class SetAppVolumeAction : BaseAction, IPartWithVolume, IPartWithDevice,
public AppRef App { get; set; }
public SetVolumeKind Option { get; set; }
public double Volume { get; set; }
+ public VolumeUnit Unit { get; set; }
}
public class SetDefaultDeviceAction : BaseAction, IPartWithDevice
@@ -42,6 +43,7 @@ public class SetDeviceVolumeAction : BaseAction, IPartWithDevice, IPartWithVolum
public Device Device { get; set; }
public SetVolumeKind Option { get; set; }
public double Volume { get; set; }
+ public VolumeUnit Unit { get; set; }
}
public class SetVariableAction : BaseAction, IPartWithText
diff --git a/EarTrumpet/Addons/EarTrumpet.Actions/ViewModel/Actions/SetAppVolumeActionViewModel.cs b/EarTrumpet/Addons/EarTrumpet.Actions/ViewModel/Actions/SetAppVolumeActionViewModel.cs
index b35cc0434..3cb687c4a 100644
--- a/EarTrumpet/Addons/EarTrumpet.Actions/ViewModel/Actions/SetAppVolumeActionViewModel.cs
+++ b/EarTrumpet/Addons/EarTrumpet.Actions/ViewModel/Actions/SetAppVolumeActionViewModel.cs
@@ -1,11 +1,14 @@
-using EarTrumpet.Actions.DataModel.Serialization;
-using EarTrumpet.Actions.DataModel.Enum;
+using EarTrumpet.Actions.DataModel.Enum;
+using EarTrumpet.Actions.DataModel.Serialization;
+using EarTrumpet.Extensions;
+using System;
namespace EarTrumpet.Actions.ViewModel.Actions;
internal class SetAppVolumeActionViewModel : PartViewModel
{
public OptionViewModel Option { get; }
+ public OptionViewModel Unit { get; }
public DeviceListViewModel Device { get; }
public AppListViewModel App { get; }
public VolumeViewModel Volume { get; }
@@ -17,14 +20,39 @@ public SetAppVolumeActionViewModel(SetAppVolumeAction action) : base(action)
_action = action;
Option = new OptionViewModel(action, nameof(action.Option));
+ Unit = new OptionViewModel(action, nameof(action.Unit));
App = new AppListViewModel(action, AppListViewModel.AppKind.EveryApp | AppListViewModel.AppKind.ForegroundApp);
Device = new DeviceListViewModel(action, DeviceListViewModel.DeviceListKind.DefaultPlayback);
Volume = new VolumeViewModel(action);
Attach(Option);
+ Attach(Unit);
Attach(App);
Attach(Device);
Attach(Volume);
+
+ Option.PropertyChanged += (s, e) =>
+ {
+ if (e.PropertyName == nameof(OptionViewModel.Selected))
+ {
+ Volume.UpdateRange();
+ Volume.Volume = 0;
+ }
+ };
+
+ Unit.PropertyChanged += (s, e) =>
+ {
+ if (e.PropertyName == nameof(OptionViewModel.Selected))
+ {
+ Volume.UpdateRange();
+ Volume.Volume = (VolumeUnit)Unit.Selected.Value switch
+ {
+ VolumeUnit.Percentage => Math.Round(Volume.Volume.LogToLinear() * 100),
+ VolumeUnit.Decibel => Math.Round((Volume.Volume / 100).LinearToLog(), 1),
+ _ => throw new ArgumentException("Invalid volume unit."),
+ };
+ }
+ };
}
public override string LinkText
diff --git a/EarTrumpet/Addons/EarTrumpet.Actions/ViewModel/Actions/SetDeviceVolumeActionViewModel.cs b/EarTrumpet/Addons/EarTrumpet.Actions/ViewModel/Actions/SetDeviceVolumeActionViewModel.cs
index d8e54c952..2e8a12271 100644
--- a/EarTrumpet/Addons/EarTrumpet.Actions/ViewModel/Actions/SetDeviceVolumeActionViewModel.cs
+++ b/EarTrumpet/Addons/EarTrumpet.Actions/ViewModel/Actions/SetDeviceVolumeActionViewModel.cs
@@ -1,11 +1,14 @@
using EarTrumpet.Actions.DataModel.Enum;
using EarTrumpet.Actions.DataModel.Serialization;
+using EarTrumpet.Extensions;
+using System;
namespace EarTrumpet.Actions.ViewModel.Actions;
internal class SetDeviceVolumeActionViewModel : PartViewModel
{
public OptionViewModel Option { get; }
+ public OptionViewModel Unit { get; }
public DeviceListViewModel Device { get; }
public VolumeViewModel Volume { get; }
@@ -15,12 +18,37 @@ public SetDeviceVolumeActionViewModel(SetDeviceVolumeAction action) : base(actio
{
_action = action;
Option = new OptionViewModel(action, nameof(action.Option));
+ Unit = new OptionViewModel(action, nameof(action.Unit));
Device = new DeviceListViewModel(action, DeviceListViewModel.DeviceListKind.Recording | DeviceListViewModel.DeviceListKind.DefaultPlayback);
Volume = new VolumeViewModel(action);
Attach(Option);
+ Attach(Unit);
Attach(Device);
Attach(Volume);
+
+ Option.PropertyChanged += (s, e) =>
+ {
+ if (e.PropertyName == nameof(OptionViewModel.Selected))
+ {
+ Volume.UpdateRange();
+ Volume.Volume = 0;
+ }
+ };
+
+ Unit.PropertyChanged += (s, e) =>
+ {
+ if (e.PropertyName == nameof(OptionViewModel.Selected))
+ {
+ Volume.UpdateRange();
+ Volume.Volume = (VolumeUnit)Unit.Selected.Value switch
+ {
+ VolumeUnit.Percentage => 100,
+ VolumeUnit.Decibel => 0,
+ _ => throw new ArgumentException("Invalid volume unit."),
+ };
+ }
+ };
}
public override string LinkText
diff --git a/EarTrumpet/Addons/EarTrumpet.Actions/ViewModel/VolumeViewModel.cs b/EarTrumpet/Addons/EarTrumpet.Actions/ViewModel/VolumeViewModel.cs
index ecc8ce8b2..25992c8e8 100644
--- a/EarTrumpet/Addons/EarTrumpet.Actions/ViewModel/VolumeViewModel.cs
+++ b/EarTrumpet/Addons/EarTrumpet.Actions/ViewModel/VolumeViewModel.cs
@@ -1,19 +1,51 @@
using EarTrumpet.Actions.DataModel;
+using EarTrumpet.Actions.DataModel.Enum;
+using System;
namespace EarTrumpet.Actions.ViewModel;
public class VolumeViewModel : BindableBase
{
- public int Volume
+ public double Volume
{
- get => (int)_part.Volume;
+ get => _part.Volume;
set
{
- _part.Volume = value;
+ _part.Volume = Math.Round(value, _part.Unit switch
+ {
+ VolumeUnit.Percentage => 0,
+ VolumeUnit.Decibel => 1,
+ _ => throw new InvalidOperationException("Invalid volume unit."),
+ });
RaisePropertyChanged(nameof(Volume));
}
}
+ public double Maximum => _part.Unit switch
+ {
+ VolumeUnit.Percentage => 100,
+ VolumeUnit.Decibel => _part.Option switch
+ {
+ SetVolumeKind.Set => 0,
+ SetVolumeKind.Increment => -App.Settings.LogarithmicVolumeMinDb,
+ SetVolumeKind.Decrement => -App.Settings.LogarithmicVolumeMinDb,
+ _ => throw new InvalidOperationException("Invalid action."),
+ },
+ _ => throw new InvalidOperationException("Invalid volume unit."),
+ };
+ public double Minimum => _part.Unit switch
+ {
+ VolumeUnit.Percentage => 0,
+ VolumeUnit.Decibel => _part.Option switch
+ {
+ SetVolumeKind.Set => App.Settings.LogarithmicVolumeMinDb,
+ SetVolumeKind.Increment => 0,
+ SetVolumeKind.Decrement => 0,
+ _ => throw new InvalidOperationException("Invalid action."),
+ },
+ _ => throw new InvalidOperationException("Invalid volume unit."),
+ };
+
private IPartWithVolume _part;
public VolumeViewModel(IPartWithVolume part)
{
@@ -22,6 +54,12 @@ public VolumeViewModel(IPartWithVolume part)
public override string ToString()
{
- return $"{Volume}%";
+ return $"{Volume}";
+ }
+
+ public void UpdateRange()
+ {
+ RaisePropertyChanged(nameof(Maximum));
+ RaisePropertyChanged(nameof(Minimum));
}
}
diff --git a/EarTrumpet/DataModel/Audio/IStreamWithVolumeControl.cs b/EarTrumpet/DataModel/Audio/IStreamWithVolumeControl.cs
index 699e859b2..3ff852187 100644
--- a/EarTrumpet/DataModel/Audio/IStreamWithVolumeControl.cs
+++ b/EarTrumpet/DataModel/Audio/IStreamWithVolumeControl.cs
@@ -9,4 +9,10 @@ public interface IStreamWithVolumeControl : INotifyPropertyChanged
float Volume { get; set; }
float PeakValue1 { get; }
float PeakValue2 { get; }
+
+ // Unlike Volume property, these methods are independent of app unit settings.
+ float GetVolumeScalar();
+ float GetVolumeLogarithmic();
+ void SetVolumeScalar(float value);
+ void SetVolumeLogarithmic(float value);
}
diff --git a/EarTrumpet/DataModel/WindowsAudio/Internal/AudioDevice.cs b/EarTrumpet/DataModel/WindowsAudio/Internal/AudioDevice.cs
index 7aa9dbccc..ec57059f7 100644
--- a/EarTrumpet/DataModel/WindowsAudio/Internal/AudioDevice.cs
+++ b/EarTrumpet/DataModel/WindowsAudio/Internal/AudioDevice.cs
@@ -125,6 +125,9 @@ public unsafe void OnNotify(AUDIO_VOLUME_NOTIFICATION_DATA* pNotify)
}));
}
+ ///
+ /// NOTICE: This value can be either scalar or logarithmic based on App.Settings.UseLogarithmicVolume
+ ///
public float Volume
{
get => _volume;
@@ -134,18 +137,11 @@ public float Volume
{
if (App.Settings.UseLogarithmicVolume)
{
- value = value.Bound(App.Settings.LogarithmicVolumeMinDb, 0);
- value = value.Bound(_deviceVolumeMinDb, _deviceVolumeMaxDb);
- _volume = value;
- _deviceVolume.SetMasterVolumeLevel(value, Guid.Empty);
- IsMuted = value <= App.Settings.LogarithmicVolumeMinDb;
+ SetVolumeLogarithmic(value);
}
else
{
- value = value.Bound(0, 1f);
- _volume = value;
- _deviceVolume.SetMasterVolumeLevelScalar(value, Guid.Empty);
- IsMuted = _volume.ToVolumeInt() == 0;
+ SetVolumeScalar(value);
}
}
catch (Exception ex) when (ex.Is(HRESULT.AUDCLNT_E_DEVICE_INVALIDATED))
@@ -202,6 +198,35 @@ public IAudioDeviceManager Parent
public IEnumerable Channels => _channels.Channels;
+ public float GetVolumeScalar()
+ {
+ _deviceVolume.GetMasterVolumeLevelScalar(out var volume);
+ return volume;
+ }
+
+ public float GetVolumeLogarithmic()
+ {
+ _deviceVolume.GetMasterVolumeLevel(out var volume);
+ return volume;
+ }
+
+ public void SetVolumeScalar(float value)
+ {
+ value = value.Bound(0, 1f);
+ _volume = value;
+ _deviceVolume.SetMasterVolumeLevelScalar(value, Guid.Empty);
+ IsMuted = _volume.ToVolumeInt() == 0;
+ }
+
+ public void SetVolumeLogarithmic(float value)
+ {
+ value = value.Bound(App.Settings.LogarithmicVolumeMinDb, 0);
+ value = value.Bound(_deviceVolumeMinDb, _deviceVolumeMaxDb);
+ _volume = value;
+ _deviceVolume.SetMasterVolumeLevel(value, Guid.Empty);
+ IsMuted = value <= App.Settings.LogarithmicVolumeMinDb;
+ }
+
public void UpdatePeakValue()
{
var newValues = Helpers.ReadPeakValues(_meter);
diff --git a/EarTrumpet/DataModel/WindowsAudio/Internal/AudioDeviceSession.cs b/EarTrumpet/DataModel/WindowsAudio/Internal/AudioDeviceSession.cs
index 317f06ace..7cb30623a 100644
--- a/EarTrumpet/DataModel/WindowsAudio/Internal/AudioDeviceSession.cs
+++ b/EarTrumpet/DataModel/WindowsAudio/Internal/AudioDeviceSession.cs
@@ -32,29 +32,25 @@ public IAudioDevice Parent
}
}
+ ///
+ /// NOTICE: This value can be either scalar or logarithmic based on App.Settings.UseLogarithmicVolume
+ ///
public float Volume
{
get => App.Settings.UseLogarithmicVolume
- ? _volume.LinearToLog()
- : _volume;
+ ? GetVolumeLogarithmic()
+ : GetVolumeScalar();
set
{
try
{
if (App.Settings.UseLogarithmicVolume)
{
- value = value.Bound(App.Settings.LogarithmicVolumeMinDb, 0);
- // We must convert manually here because sessions use linear volume.
- _simpleVolume.SetMasterVolume(value.LogToLinear(), Guid.Empty);
- _volume = value;
- IsMuted = value <= App.Settings.LogarithmicVolumeMinDb;
+ SetVolumeLogarithmic(value);
}
else
{
- value = value.Bound(0, 1f);
- _simpleVolume.SetMasterVolume(value, Guid.Empty);
- _volume = value;
- IsMuted = _volume.ToVolumeInt() == 0;
+ SetVolumeScalar(value);
}
}
catch (Exception ex) when (ex.Is(HRESULT.AUDCLNT_E_DEVICE_INVALIDATED))
@@ -220,6 +216,26 @@ private void UseLogarithmicVolumeChangedHandler(object sender, EventArgs e)
}
}
+ public float GetVolumeScalar() => _volume;
+ public float GetVolumeLogarithmic() => _volume.LinearToLog();
+
+ public void SetVolumeScalar(float value)
+ {
+ value = value.Bound(0, 1f);
+ _simpleVolume.SetMasterVolume(value, Guid.Empty);
+ _volume = value;
+ IsMuted = _volume.ToVolumeInt() == 0;
+ }
+
+ public void SetVolumeLogarithmic(float value)
+ {
+ value = value.Bound(App.Settings.LogarithmicVolumeMinDb, 0);
+ // We must convert manually here because sessions use linear volume.
+ _simpleVolume.SetMasterVolume(value.LogToLinear(), Guid.Empty);
+ _volume = value;
+ IsMuted = value <= App.Settings.LogarithmicVolumeMinDb;
+ }
+
public void Hide()
{
Trace.WriteLine($"AudioDeviceSession MoveFromDevice {ExeName} {Id}");
diff --git a/EarTrumpet/DataModel/WindowsAudio/Internal/AudioDeviceSessionGroup.cs b/EarTrumpet/DataModel/WindowsAudio/Internal/AudioDeviceSessionGroup.cs
index abcb00fb9..bb9fdee3d 100644
--- a/EarTrumpet/DataModel/WindowsAudio/Internal/AudioDeviceSessionGroup.cs
+++ b/EarTrumpet/DataModel/WindowsAudio/Internal/AudioDeviceSessionGroup.cs
@@ -111,6 +111,25 @@ public float Volume
public string PackageInstallPath => _sessions.FirstOrDefault()?.PackageInstallPath;
+ public float GetVolumeScalar() => _sessions.Count > 0 ? _sessions[0].GetVolumeScalar() : 1;
+ public float GetVolumeLogarithmic() => _sessions.Count > 0 ? _sessions[0].GetVolumeLogarithmic() : 1;
+
+ public void SetVolumeScalar(float value)
+ {
+ foreach (var session in _sessions)
+ {
+ session.SetVolumeScalar(value);
+ }
+ }
+
+ public void SetVolumeLogarithmic(float value)
+ {
+ foreach (var session in _sessions)
+ {
+ session.SetVolumeLogarithmic(value);
+ }
+ }
+
public void Hide()
{
foreach (var session in _sessions.ToArray())
diff --git a/EarTrumpet/Extensions/FloatExtensions.cs b/EarTrumpet/Extensions/FloatExtensions.cs
index cb421615e..f2d340e3b 100644
--- a/EarTrumpet/Extensions/FloatExtensions.cs
+++ b/EarTrumpet/Extensions/FloatExtensions.cs
@@ -4,23 +4,22 @@ namespace EarTrumpet.Extensions;
public static class FloatExtensions
{
- public static int ToVolumeInt(this float val)
- {
- return Convert.ToInt32(Math.Round(val * 100, MidpointRounding.AwayFromZero));
- }
+ public static int ToVolumeInt(this float val) => ToVolumeInt((double)val);
+ public static int ToVolumeInt(this double val) => Convert.ToInt32(Math.Round(val * 100, MidpointRounding.AwayFromZero));
- public static float Bound(this float val, float min, float max)
- {
- return Math.Max(min, Math.Min(max, val));
- }
+ public static float Bound(this float val, float min, float max) => (float)Bound((double)val, min, max);
+ public static double Bound(this double val, double min, double max) => Math.Max(min, Math.Min(max, val));
- public static float LinearToLog(this float val) => (float)(20 * Math.Log10(val));
+ public static float LinearToLog(this float val) => (float)LinearToLog((double)val);
+ public static double LinearToLog(this double val) => (double)(20 * Math.Log10(val));
- public static float LinearToLogNormalized(this float val) =>
+ public static float LinearToLogNormalized(this float val) => (float)LinearToLogNormalized((double)val);
+ public static double LinearToLogNormalized(this double val) =>
val == 0
? 0
- : ((float)(20 * Math.Log10(val) / -App.Settings.LogarithmicVolumeMinDb + 1))
+ : ((double)(20 * Math.Log10(val) / -App.Settings.LogarithmicVolumeMinDb + 1))
.Bound(0, 1f);
- public static float LogToLinear(this float val) => (float)Math.Pow(10, val / 20);
+ public static float LogToLinear(this float val) => (float)LogToLinear((double)val);
+ public static double LogToLinear(this double val) => (double)Math.Pow(10, val / 20);
}
diff --git a/EarTrumpet/Properties/Resources.Designer.cs b/EarTrumpet/Properties/Resources.Designer.cs
index 35293d644..e3aef0abd 100644
--- a/EarTrumpet/Properties/Resources.Designer.cs
+++ b/EarTrumpet/Properties/Resources.Designer.cs
@@ -19,7 +19,7 @@ namespace EarTrumpet.Properties {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class Resources {
@@ -1280,7 +1280,7 @@ public static string SetAppVolumeAction_AddText {
}
///
- /// Looks up a localized string similar to {Option} {App} volume to {Volume} on {Device}.
+ /// Looks up a localized string similar to {Option} {App} volume to {Volume}{Unit} on {Device}.
///
public static string SetAppVolumeAction_LinkText {
get {
@@ -1289,7 +1289,7 @@ public static string SetAppVolumeAction_LinkText {
}
///
- /// Looks up a localized string similar to {Option} {App} volume by {Volume} on {Device}.
+ /// Looks up a localized string similar to {Option} {App} volume by {Volume}{Unit} on {Device}.
///
public static string SetAppVolumeAction_LinkTextIncrement {
get {
@@ -1352,7 +1352,7 @@ public static string SetDeviceVolumeAction_AddText {
}
///
- /// Looks up a localized string similar to {Option} {Device} volume to {Volume}.
+ /// Looks up a localized string similar to {Option} {Device} volume to {Volume}{Unit}.
///
public static string SetDeviceVolumeAction_LinkText {
get {
@@ -1361,7 +1361,7 @@ public static string SetDeviceVolumeAction_LinkText {
}
///
- /// Looks up a localized string similar to {Option} {Device} volume by {Volume}.
+ /// Looks up a localized string similar to {Option} {Device} volume by {Volume}{Unit}.
///
public static string SetDeviceVolumeAction_LinkTextIncrement {
get {
@@ -1711,6 +1711,24 @@ public static string VersionText {
}
}
+ ///
+ /// Looks up a localized string similar to dB.
+ ///
+ public static string VolumeUnit_Decibel {
+ get {
+ return ResourceManager.GetString("VolumeUnit_Decibel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to %.
+ ///
+ public static string VolumeUnit_Percentage {
+ get {
+ return ResourceManager.GetString("VolumeUnit_Percentage", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Learn more.
///
diff --git a/EarTrumpet/Properties/Resources.ar-SA.resx b/EarTrumpet/Properties/Resources.ar-SA.resx
index b62f085e3..49e123ee5 100644
--- a/EarTrumpet/Properties/Resources.ar-SA.resx
+++ b/EarTrumpet/Properties/Resources.ar-SA.resx
@@ -516,10 +516,10 @@
تعيين مستوى صوت التطبيق
- {Option} {App} حجم {Volume} على {Device}
+ {Option} {App} حجم {Volume}{Unit} على {Device}
- {Option} {App} حجم {Volume} على {Device}
+ {Option} {App} حجم {Volume}{Unit} على {Device}
تعيين جهاز التشغيل الافتراضي
@@ -540,10 +540,10 @@
ضبط مستوى صوت الجهاز
- {Option} {Device} مستوى الصوت إلى {Volume}
+ {Option} {Device} مستوى الصوت إلى {Volume}{Unit}
- {Option} {Device} مستوى الصوت بواسطة {Volume}
+ {Option} {Device} مستوى الصوت بواسطة {Volume}{Unit}
تعيين متغير محلي
diff --git a/EarTrumpet/Properties/Resources.bs-latn-ba.resx b/EarTrumpet/Properties/Resources.bs-latn-ba.resx
index 021b2bb1a..9b72d7266 100644
--- a/EarTrumpet/Properties/Resources.bs-latn-ba.resx
+++ b/EarTrumpet/Properties/Resources.bs-latn-ba.resx
@@ -516,10 +516,10 @@ Otvoriti [https://eartrumpet.app/jmp/fixfonts] sad?
Postavi glasnoću aplikacije
- {Option} {App} glasnoća na {Volume} na {Device}
+ {Option} {App} glasnoća na {Volume}{Unit} na {Device}
- {Option} {App} glasnoća za {Volume} na {Device}
+ {Option} {App} glasnoća za {Volume}{Unit} na {Device}
Postavi zadani uređaj za reprodukciju
@@ -540,10 +540,10 @@ Otvoriti [https://eartrumpet.app/jmp/fixfonts] sad?
Postavi glasnoću uređaja
- {Option} {Device} glasnoća na {Volume}
+ {Option} {Device} glasnoća na {Volume}{Unit}
- {Option} {Device} glasnoća za {Volume}
+ {Option} {Device} glasnoća za {Volume}{Unit}
Postavi lokalnu varijablu
diff --git a/EarTrumpet/Properties/Resources.ca-ES.resx b/EarTrumpet/Properties/Resources.ca-ES.resx
index 27da0fefe..f0aa3f6f2 100644
--- a/EarTrumpet/Properties/Resources.ca-ES.resx
+++ b/EarTrumpet/Properties/Resources.ca-ES.resx
@@ -523,10 +523,10 @@ Voleu obrir [https://eartrumpet.app/jmp/fixstartup] per resoldre-ho?
Estableix el volum d'una aplicació
- {Option} {App} volum a {Volume} a {Device}
+ {Option} {App} volum a {Volume}{Unit} a {Device}
- {Option} {App} volum per {Volume} a {Device}
+ {Option} {App} volum per {Volume}{Unit} a {Device}
Estableix el dispositiu de reproducció per defecte
@@ -547,10 +547,10 @@ Voleu obrir [https://eartrumpet.app/jmp/fixstartup] per resoldre-ho?
Estableix el volum del dispositiu
- {Option} {Device} volum a {Volume}
+ {Option} {Device} volum a {Volume}{Unit}
- {Option} {Device} volum per {Volume}
+ {Option} {Device} volum per {Volume}{Unit}
Estableix una variable local
diff --git a/EarTrumpet/Properties/Resources.cs-CZ.resx b/EarTrumpet/Properties/Resources.cs-CZ.resx
index a6a116960..c9937ddcf 100644
--- a/EarTrumpet/Properties/Resources.cs-CZ.resx
+++ b/EarTrumpet/Properties/Resources.cs-CZ.resx
@@ -516,10 +516,10 @@ Přejete si nyní otevřít [https://eartrumpet.app/jmp/fixfonts]?
Nastavit hlasitost aplikace
- {Option} {App} hlasitost k {Volume} na {Device}
+ {Option} {App} hlasitost k {Volume}{Unit} na {Device}
- {Option} {App} hlasitost od {Volume} na {Device}
+ {Option} {App} hlasitost od {Volume}{Unit} na {Device}
Nastavit výchozí přehrávací zařízení
@@ -540,10 +540,10 @@ Přejete si nyní otevřít [https://eartrumpet.app/jmp/fixfonts]?
Nastavit hlasitost zařízení
- {Option} {Device} hlasitost pro {Volume}
+ {Option} {Device} hlasitost pro {Volume}{Unit}
- {Option} {Device} hlasitost od {Volume}
+ {Option} {Device} hlasitost od {Volume}{Unit}
Nastavit místní proměnnou
diff --git a/EarTrumpet/Properties/Resources.da-DK.resx b/EarTrumpet/Properties/Resources.da-DK.resx
index 421091ddd..c4a65ac41 100644
--- a/EarTrumpet/Properties/Resources.da-DK.resx
+++ b/EarTrumpet/Properties/Resources.da-DK.resx
@@ -516,10 +516,10 @@
Indstil lydstyrken for en app
- {Option} {App} lydstyrke til {Volume} på {Device}
+ {Option} {App} lydstyrke til {Volume}{Unit} på {Device}
- {Option} {App} lydstyrke med {Volume} på {Device}
+ {Option} {App} lydstyrke med {Volume}{Unit} på {Device}
Indstil standard afspilningsenhed
@@ -540,10 +540,10 @@
Indstil en enheds lydstyrke
- {Option} {Device} lydstyrke til {Volume}
+ {Option} {Device} lydstyrke til {Volume}{Unit}
- {Option} {Device} lydstyrke med {Volume}
+ {Option} {Device} lydstyrke med {Volume}{Unit}
Angiv lokal variabel
diff --git a/EarTrumpet/Properties/Resources.de-DE.resx b/EarTrumpet/Properties/Resources.de-DE.resx
index 8bf89ed66..06bc28ca4 100644
--- a/EarTrumpet/Properties/Resources.de-DE.resx
+++ b/EarTrumpet/Properties/Resources.de-DE.resx
@@ -524,10 +524,10 @@ Möchten Sie [https://eartrumpet.app/jmp/fixfonts] öffnen?
Lege das Volumen einer App fest
- {Option} {App} Lautstärke zu {Volume} auf {Device}
+ {Option} {App} Lautstärke zu {Volume}{Unit} auf {Device}
- {Option} {App} Lautstärke von {Volume} auf {Device}
+ {Option} {App} Lautstärke von {Volume}{Unit} auf {Device}
Lege das Standard-Wiedergabegerät fest
@@ -548,10 +548,10 @@ Möchten Sie [https://eartrumpet.app/jmp/fixfonts] öffnen?
Gerätelautstärke festlegen
- {Option} {Device} Lautstärke zu {Volume}
+ {Option} {Device} Lautstärke zu {Volume}{Unit}
- {Option} {Device} Lautstärke bis {Volume}
+ {Option} {Device} Lautstärke bis {Volume}{Unit}
Lokale Variable festlegen
diff --git a/EarTrumpet/Properties/Resources.el-GR.resx b/EarTrumpet/Properties/Resources.el-GR.resx
index f5eb6c1f2..c3edc0721 100644
--- a/EarTrumpet/Properties/Resources.el-GR.resx
+++ b/EarTrumpet/Properties/Resources.el-GR.resx
@@ -524,10 +524,10 @@
Ορισμός έντασης ήχου μιας εφαρμογής
- {Option} {App} ένταση στο {Volume} στο {Device}
+ {Option} {App} ένταση στο {Volume}{Unit} στο {Device}
- {Option} {App} ένταση στο {Volume} στο {Device}
+ {Option} {App} ένταση στο {Volume}{Unit} στο {Device}
Ορισμός της προεπιλεγμένης συσκευής αναπαραγωγής
@@ -548,10 +548,10 @@
Ορισμός έντασης συσκευής
- {Option} {Device} ένταση στο {Volume}
+ {Option} {Device} ένταση στο {Volume}{Unit}
- {Option} {Device} ένταση στο {Volume}
+ {Option} {Device} ένταση στο {Volume}{Unit}
Ορισμός μιας τοπικής μεταβλητής
diff --git a/EarTrumpet/Properties/Resources.es-ES.resx b/EarTrumpet/Properties/Resources.es-ES.resx
index 08a69d9c5..23381128c 100644
--- a/EarTrumpet/Properties/Resources.es-ES.resx
+++ b/EarTrumpet/Properties/Resources.es-ES.resx
@@ -524,10 +524,10 @@ Deseas abrir [https://eartrumpet.app/jmp/fixfonts] ahora?
Establece el volumen de una aplicación
- {Option} {App} volumen a {Volume} en {Device}
+ {Option} {App} volumen a {Volume}{Unit} en {Device}
- {Option} {App} volumen por {Volume} en {Device}
+ {Option} {App} volumen por {Volume}{Unit} en {Device}
Poner por predeterminado la reproducción
@@ -548,10 +548,10 @@ Deseas abrir [https://eartrumpet.app/jmp/fixfonts] ahora?
Establecer el volumen de un dispositivo
- {Option} {Device} volumen a {Volume}
+ {Option} {Device} volumen a {Volume}{Unit}
- {Option} {Device} volumen a {Volume}
+ {Option} {Device} volumen a {Volume}{Unit}
Establecer una variable local
diff --git a/EarTrumpet/Properties/Resources.fi-FI.resx b/EarTrumpet/Properties/Resources.fi-FI.resx
index ee9d758b1..43e445675 100644
--- a/EarTrumpet/Properties/Resources.fi-FI.resx
+++ b/EarTrumpet/Properties/Resources.fi-FI.resx
@@ -518,10 +518,10 @@ Avaa [https://eartrumpet.app/jmp/fixfonts] nyt?
Aseta sovelluksen äänenvoimakkuus
- {Option} {App} aseta äänenvoimakkuus {Volume} laitteella {Device}
+ {Option} {App} aseta äänenvoimakkuus {Volume}{Unit} laitteella {Device}
- {Option} {App} äänenvoimakkuus {Volume} laitteelta {Device}
+ {Option} {App} äänenvoimakkuus {Volume}{Unit} laitteelta {Device}
Aseta oletussoittolaite
@@ -542,10 +542,10 @@ Avaa [https://eartrumpet.app/jmp/fixfonts] nyt?
Aseta laitteen äänenvoimakkuudeksi
- {Option} {Device} äänenvoimakkuus {Volume} saakka
+ {Option} {Device} äänenvoimakkuus {Volume}{Unit} saakka
- {Option} {Device} äänenvoimakkuutta {Volume}
+ {Option} {Device} äänenvoimakkuutta {Volume}{Unit}
Aseta paikallinen muuttuja
diff --git a/EarTrumpet/Properties/Resources.fr-FR.resx b/EarTrumpet/Properties/Resources.fr-FR.resx
index 10d9041dc..025dd2d38 100644
--- a/EarTrumpet/Properties/Resources.fr-FR.resx
+++ b/EarTrumpet/Properties/Resources.fr-FR.resx
@@ -516,10 +516,10 @@ Voulez-vous ouvrir [https://eartrumpet.app/jmp/fixfonts] maintenant?
Définir le volume d'une application
- Volume de {Volume} sur {Device} pour {Option} {App}
+ Volume de {Volume}{Unit} sur {Device} pour {Option} {App}
- {Option} {App} volume pour {Volume} sur {Device}
+ {Option} {App} volume pour {Volume}{Unit} sur {Device}
Définir le périphérique de lecteur par défaut
@@ -540,10 +540,10 @@ Voulez-vous ouvrir [https://eartrumpet.app/jmp/fixfonts] maintenant?
Définir le volume d'un périphérique
- {Option} {Device} volume à {Volume}
+ {Option} {Device} volume à {Volume}{Unit}
- {Option} volume de {Device} par {Volume}
+ {Option} volume de {Device} par {Volume}{Unit}
Définir une variable locale
diff --git a/EarTrumpet/Properties/Resources.he-IL.resx b/EarTrumpet/Properties/Resources.he-IL.resx
index 4b9cb09cf..95a791336 100644
--- a/EarTrumpet/Properties/Resources.he-IL.resx
+++ b/EarTrumpet/Properties/Resources.he-IL.resx
@@ -524,10 +524,10 @@
הגדר את עוצמת השמע של אפליקציה
- {Option} {App} עוצמה ל{Volume} על {Device}
+ {Option} {App} עוצמה ל{Unit}{Volume} על {Device}
- {Option} {App} עוצמה על ידי{Volume} על {Device}
+ {Option} {App} עוצמה על ידי{Unit}{Volume} על {Device}
הגדר את מכשיר ההשמעה ברירת המחדל
@@ -548,10 +548,10 @@
הגדר עוצמת קול למכשיר
- {Option} {Device} עוצמת קול ל{Volume}
+ {Option} {Device} עוצמת קול ל{Unit}{Volume}
- {Option} {Device} עוצמת קול על ידי {Volume}
+ {Option} {Device} עוצמת קול על ידי {Unit}{Volume}
הגדר משתנה מקומי (לוקאלי)
diff --git a/EarTrumpet/Properties/Resources.hr-HR.resx b/EarTrumpet/Properties/Resources.hr-HR.resx
index 256c3ab9f..959afd62b 100644
--- a/EarTrumpet/Properties/Resources.hr-HR.resx
+++ b/EarTrumpet/Properties/Resources.hr-HR.resx
@@ -524,10 +524,10 @@ Otvorite [https://eartrumpet.app/jmp/fixstartup] za rješavanje problema?Postavi glasnoću aplikacije
- {Option} {App} glasnoća na {Volume} na {Device}
+ {Option} {App} glasnoća na {Volume}{Unit} na {Device}
- {Option} {App} glasnoća za {Volume} na {Device}
+ {Option} {App} glasnoća za {Volume}{Unit} na {Device}
Postavi zadani uređaj za reprodukciju
@@ -548,10 +548,10 @@ Otvorite [https://eartrumpet.app/jmp/fixstartup] za rješavanje problema?Postavi glasnoću uređaja
- {Option} {Device} glasnoća na {Volume}
+ {Option} {Device} glasnoća na {Volume}{Unit}
- {Option} {Device} glasnoća za {Volume}
+ {Option} {Device} glasnoća za {Volume}{Unit}
Postavi lokalnu varijablu
diff --git a/EarTrumpet/Properties/Resources.it-IT.resx b/EarTrumpet/Properties/Resources.it-IT.resx
index a0d5c4d6e..e5ebe7cda 100644
--- a/EarTrumpet/Properties/Resources.it-IT.resx
+++ b/EarTrumpet/Properties/Resources.it-IT.resx
@@ -516,10 +516,10 @@ Aprire [https://eartrumpet.app/jmp/fixfonts] ora?
Imposta il volume di un'applicazione
- {Option} il volume di {App} a {Volume} su {Device}
+ {Option} il volume di {App} a {Volume}{Unit} su {Device}
- {Option} il volume di {App} di {Volume} su {Device}
+ {Option} il volume di {App} di {Volume}{Unit} su {Device}
Imposta il dispositivo di riproduzione predefinito
@@ -540,10 +540,10 @@ Aprire [https://eartrumpet.app/jmp/fixfonts] ora?
Imposta il volume di un dispositivo
- {Option} {Device} al {Volume}
+ {Option} {Device} al {Volume}{Unit}
- {Option} {Device} del {Volume}
+ {Option} {Device} del {Volume}{Unit}
Imposta una variabile locale
diff --git a/EarTrumpet/Properties/Resources.ja-JP.resx b/EarTrumpet/Properties/Resources.ja-JP.resx
index 2e977d436..9f136d352 100644
--- a/EarTrumpet/Properties/Resources.ja-JP.resx
+++ b/EarTrumpet/Properties/Resources.ja-JP.resx
@@ -524,10 +524,10 @@
アプリの音量を設定
- {Device} 上 {Option} {App} の音量を {Volume} へ
+ {Device} 上 {Option} {App} の音量を {Volume}{Unit} へ
- {Device} {Option} {App} の音量を {Volume} で調整
+ {Device} {Option} {App} の音量を {Volume}{Unit} で調整
既定の再生デバイスを設定
@@ -548,10 +548,10 @@
デバイスの音量を設定
- {Option} {Device} の音量を {Volume} へ
+ {Option} {Device} の音量を {Volume}{Unit} へ
- {Option} {Device} ボリュームを {Volume} へ
+ {Option} {Device} ボリュームを {Volume}{Unit} へ
ローカル変数を設定
diff --git a/EarTrumpet/Properties/Resources.ko-KR.resx b/EarTrumpet/Properties/Resources.ko-KR.resx
index 6c1f63c60..13a4af7ac 100644
--- a/EarTrumpet/Properties/Resources.ko-KR.resx
+++ b/EarTrumpet/Properties/Resources.ko-KR.resx
@@ -524,10 +524,10 @@
앱 음량 설정
- {Device} 장치의 {App} 앱 음량을 {Volume} (으)로 {Option}
+ {Device} 장치의 {App} 앱 음량을 {Volume}{Unit} (으)로 {Option}
- {Device} 장치의 {App} 앱 음량을 {Volume} 만큼 {Option}
+ {Device} 장치의 {App} 앱 음량을 {Volume}{Unit} 만큼 {Option}
기본 재생 장치 설정
@@ -548,10 +548,10 @@
장치 음량 설정
- {Device} 장치의 음량을 {Volume} (으)로 {Option}
+ {Device} 장치의 음량을 {Volume}{Unit} (으)로 {Option}
- {Device} 장치의 음량을 {Volume} 만큼 {Option}
+ {Device} 장치의 음량을 {Volume}{Unit} 만큼 {Option}
지역 변수 설정
diff --git a/EarTrumpet/Properties/Resources.nl-NL.resx b/EarTrumpet/Properties/Resources.nl-NL.resx
index aa8d27ab9..0f86973ef 100644
--- a/EarTrumpet/Properties/Resources.nl-NL.resx
+++ b/EarTrumpet/Properties/Resources.nl-NL.resx
@@ -516,10 +516,10 @@ Wil je [https://eartrumpet.app/jmp/fixfonts] openen om het probleem op te lossen
Stel het volume van een app in
- {Option} {App} volume naar {Volume} op {Device}
+ {Option} {App} volume naar {Volume}{Unit} op {Device}
- {Option} {App} volume met {Volume} op {Device}
+ {Option} {App} volume met {Volume}{Unit} op {Device}
Stel het standaard afspeelapparaat in
@@ -540,10 +540,10 @@ Wil je [https://eartrumpet.app/jmp/fixfonts] openen om het probleem op te lossen
Apparaatvolume instellen
- {Option} {Device} volume naar {Volume}
+ {Option} {Device} volume naar {Volume}{Unit}
- {Option} {Device} volume met {Volume}
+ {Option} {Device} volume met {Volume}{Unit}
Stel een lokale variabele in
diff --git a/EarTrumpet/Properties/Resources.no-NO.resx b/EarTrumpet/Properties/Resources.no-NO.resx
index 46b6e14ef..0c310d7e0 100644
--- a/EarTrumpet/Properties/Resources.no-NO.resx
+++ b/EarTrumpet/Properties/Resources.no-NO.resx
@@ -524,10 +524,10 @@ Gå til [https://eartrumpet.app/jmp/fixstartup] for å reparere dette?
Sett volumet til en app
- {Option} {App} volum til {Volume} på {Device}
+ {Option} {App} volum til {Volume}{Unit} på {Device}
- {Option} {App} volum med {Volume} på {Device}
+ {Option} {App} volum med {Volume}{Unit} på {Device}
Angi standard avspillingsenhet
@@ -548,10 +548,10 @@ Gå til [https://eartrumpet.app/jmp/fixstartup] for å reparere dette?
Angi en enhetsvolum
- {Option} {Device} volum til {Volume}
+ {Option} {Device} volum til {Volume}{Unit}
- {Option} {Device} volum med {Volume}
+ {Option} {Device} volum med {Volume}{Unit}
Angi en lokal variabel
diff --git a/EarTrumpet/Properties/Resources.pl-PL.resx b/EarTrumpet/Properties/Resources.pl-PL.resx
index 5eff65c76..631d14baf 100644
--- a/EarTrumpet/Properties/Resources.pl-PL.resx
+++ b/EarTrumpet/Properties/Resources.pl-PL.resx
@@ -516,10 +516,10 @@ Otworzyć [https://eartrumpet.app/jmp/fixfonts] teraz?
Ustaw poziom głośności aplikacji
- {Option} {App} poziom głośności na {Volume} na {Device}
+ {Option} {App} poziom głośności na {Volume}{Unit} na {Device}
- {Option} {App} poziom głośności o {Volume} na {Device}
+ {Option} {App} poziom głośności o {Volume}{Unit} na {Device}
Ustaw domyślne urządzenie odtwarzające
@@ -540,10 +540,10 @@ Otworzyć [https://eartrumpet.app/jmp/fixfonts] teraz?
Ustaw poziom głośności urządzenia
- {Option} {Device} poziom głośności na {Volume}
+ {Option} {Device} poziom głośności na {Volume}{Unit}
- {Option} {Device} poziom głośności o {Volume}
+ {Option} {Device} poziom głośności o {Volume}{Unit}
Ustaw zmienną lokalną
diff --git a/EarTrumpet/Properties/Resources.pt-BR.resx b/EarTrumpet/Properties/Resources.pt-BR.resx
index 6d63b21c8..aacd1c097 100644
--- a/EarTrumpet/Properties/Resources.pt-BR.resx
+++ b/EarTrumpet/Properties/Resources.pt-BR.resx
@@ -524,10 +524,10 @@ Abrir [https://eartrumpet.app/jmp/fixstartup] para resolver isso?
Definir o volume de um aplicativo
- {Option} {App} alterar volume para {Volume} no {Device}
+ {Option} {App} alterar volume para {Volume}{Unit} no {Device}
- {Option} {App} volume em {Volume} no {Device}
+ {Option} {App} volume em {Volume}{Unit} no {Device}
Definir o dispositivo de reprodução padrão
@@ -548,10 +548,10 @@ Abrir [https://eartrumpet.app/jmp/fixstartup] para resolver isso?
Definir volume do dispositivo
- {Option} {Device} alterar volume para {Volume}
+ {Option} {Device} alterar volume para {Volume}{Unit}
- {Option} {Device} volume em {Volume}
+ {Option} {Device} volume em {Volume}{Unit}
Selecionar uma variável local
diff --git a/EarTrumpet/Properties/Resources.pt-PT.resx b/EarTrumpet/Properties/Resources.pt-PT.resx
index 73a912b6b..7b93346bf 100644
--- a/EarTrumpet/Properties/Resources.pt-PT.resx
+++ b/EarTrumpet/Properties/Resources.pt-PT.resx
@@ -516,10 +516,10 @@ Abrir [https://eartrumpet.app/jmp/fixfonts] agora?
Definir o volume de uma aplicação
- {Option} {App} alterar volume para {Volume} em {Device}
+ {Option} {App} alterar volume para {Volume}{Unit} em {Device}
- {Option} {App} volume a {Volume} em {Device}
+ {Option} {App} volume a {Volume}{Unit} em {Device}
Predefinir dispositivo de reprodução
@@ -540,10 +540,10 @@ Abrir [https://eartrumpet.app/jmp/fixfonts] agora?
Definir volume do dispositivo
- {Option} {Device} alterar volume para {Volume}
+ {Option} {Device} alterar volume para {Volume}{Unit}
- {Option} {Device} volume a {Volume}
+ {Option} {Device} volume a {Volume}{Unit}
Definir uma variável local
diff --git a/EarTrumpet/Properties/Resources.resx b/EarTrumpet/Properties/Resources.resx
index 79c5cd331..97f1fb8d9 100644
--- a/EarTrumpet/Properties/Resources.resx
+++ b/EarTrumpet/Properties/Resources.resx
@@ -524,10 +524,10 @@ Open [https://eartrumpet.app/jmp/fixstartup] to resolve this?
Set the volume of an app
- {Option} {App} volume to {Volume} on {Device}
+ {Option} {App} volume to {Volume}{Unit} on {Device}
- {Option} {App} volume by {Volume} on {Device}
+ {Option} {App} volume by {Volume}{Unit} on {Device}
Set the default playback device
@@ -548,10 +548,10 @@ Open [https://eartrumpet.app/jmp/fixstartup] to resolve this?
Set a device volume
- {Option} {Device} volume to {Volume}
+ {Option} {Device} volume to {Volume}{Unit}
- {Option} {Device} volume by {Volume}
+ {Option} {Device} volume by {Volume}{Unit}
Set a local variable
@@ -679,4 +679,10 @@ Open [https://eartrumpet.app/jmp/fixstartup] to resolve this?
Logarithmic scale minimum
+
+ %
+
+
+ dB
+
\ No newline at end of file
diff --git a/EarTrumpet/Properties/Resources.ro-RO.resx b/EarTrumpet/Properties/Resources.ro-RO.resx
index 093ca9f2c..30b24c056 100644
--- a/EarTrumpet/Properties/Resources.ro-RO.resx
+++ b/EarTrumpet/Properties/Resources.ro-RO.resx
@@ -516,10 +516,10 @@ Deschide [https://eartrumpet.app/jmp/fixfonts] acum?
Setați volumul unei aplicații
- {Option} {App} volum la {Volume} pe {Device}
+ {Option} {App} volum la {Volume}{Unit} pe {Device}
- {Option} {App} volum de {Volume} pe {Device}
+ {Option} {App} volum de {Volume}{Unit} pe {Device}
Setați dispozitivul implicit de redare
@@ -540,10 +540,10 @@ Deschide [https://eartrumpet.app/jmp/fixfonts] acum?
Setaţi volumul dispozitivului
- {Option} {Device} volum la {Volume}
+ {Option} {Device} volum la {Volume}{Unit}
- {Option} {Device} volum de {Volume}
+ {Option} {Device} volum de {Volume}{Unit}
Setaţi o variabilă locală
diff --git a/EarTrumpet/Properties/Resources.ru-RU.resx b/EarTrumpet/Properties/Resources.ru-RU.resx
index 0760442be..8081839b3 100644
--- a/EarTrumpet/Properties/Resources.ru-RU.resx
+++ b/EarTrumpet/Properties/Resources.ru-RU.resx
@@ -524,10 +524,10 @@
Установить громкость программы
- {Option} громкость {App} на {Volume} на {Device}
+ {Option} громкость {App} на {Volume}{Unit} на {Device}
- {Option} громкость {App} на {Volume} на {Device}
+ {Option} громкость {App} на {Volume}{Unit} на {Device}
Установить устройство воспроизведения по умолчанию
@@ -548,10 +548,10 @@
Установить громкость устройства
- {Option} громкость на {Volume} на {Device}
+ {Option} громкость на {Volume}{Unit} на {Device}
- {Option} громкость на {Volume} на {Device}
+ {Option} громкость на {Volume}{Unit} на {Device}
Установить локальную переменную
diff --git a/EarTrumpet/Properties/Resources.sl-SI.resx b/EarTrumpet/Properties/Resources.sl-SI.resx
index 768b737fa..591eddcef 100644
--- a/EarTrumpet/Properties/Resources.sl-SI.resx
+++ b/EarTrumpet/Properties/Resources.sl-SI.resx
@@ -518,10 +518,10 @@ Ali želite zdaj odpreti [https://eartrumpet.app/jmp/fixfonts]?
Nastavi glasnost aplikacije
- {Option} {App} glasnost na {Volume} na {Device}
+ {Option} {App} glasnost na {Volume}{Unit} na {Device}
- {Option} {App} glasnost za {Volume} na {Device}
+ {Option} {App} glasnost za {Volume}{Unit} na {Device}
Nastavi privzeto predvajalno napravo
@@ -542,10 +542,10 @@ Ali želite zdaj odpreti [https://eartrumpet.app/jmp/fixfonts]?
Nastavi lastnost naprave
- {Option} {Device} glasnost na {Volume}
+ {Option} {Device} glasnost na {Volume}{Unit}
- {Option} {Device} glasnost za {Volume}
+ {Option} {Device} glasnost za {Volume}{Unit}
Nastavite lokalno spremenljivko
diff --git a/EarTrumpet/Properties/Resources.sv-SE.resx b/EarTrumpet/Properties/Resources.sv-SE.resx
index c54785c03..a98ad0019 100644
--- a/EarTrumpet/Properties/Resources.sv-SE.resx
+++ b/EarTrumpet/Properties/Resources.sv-SE.resx
@@ -524,10 +524,10 @@
Ange volymen för en app
- {Option} {App} volym till {Volume} på {Device}
+ {Option} {App} volym till {Volume}{Unit} på {Device}
- {Option} {App} volym av {Volume} på {Device}
+ {Option} {App} volym av {Volume}{Unit} på {Device}
Ställ in standardenhet för uppspelning
@@ -548,10 +548,10 @@
Ställ in enhetsvolym
- {Option} {Device} volym till {Volume}
+ {Option} {Device} volym till {Volume}{Unit}
- {Option} {Device} volym av {Volume}
+ {Option} {Device} volym av {Volume}{Unit}
Ställ in en lokal variabel
diff --git a/EarTrumpet/Properties/Resources.th-TH.resx b/EarTrumpet/Properties/Resources.th-TH.resx
index 9c0195a89..337c63d7b 100644
--- a/EarTrumpet/Properties/Resources.th-TH.resx
+++ b/EarTrumpet/Properties/Resources.th-TH.resx
@@ -516,10 +516,10 @@
ปรับความดังของแอป
- {Option} {App} ปรับเสียงไป {Volume} บน {Device}
+ {Option} {App} ปรับเสียงไป {Volume}{Unit} บน {Device}
- {Option} {App} ปรับเสียงให้ {Volume} บน {Device}
+ {Option} {App} ปรับเสียงให้ {Volume}{Unit} บน {Device}
ตั้งให้เป็นอุปกรณ์ค่าเริ่มต้น
@@ -540,10 +540,10 @@
ปรับเสียงของอุปกรณ์
- {Option} {Device} ปรับเสียงไป {Volume}
+ {Option} {Device} ปรับเสียงไป {Volume}{Unit}
- {Option} {Device} ปรับเสียงให้ {Volume}
+ {Option} {Device} ปรับเสียงให้ {Volume}{Unit}
ตั้งตัวแปรภายใน
diff --git a/EarTrumpet/Properties/Resources.tr-TR.resx b/EarTrumpet/Properties/Resources.tr-TR.resx
index e2d83921b..267e7a0c3 100644
--- a/EarTrumpet/Properties/Resources.tr-TR.resx
+++ b/EarTrumpet/Properties/Resources.tr-TR.resx
@@ -524,10 +524,10 @@
Bir uygulamanın sesini ayarla
- {App} ses yüksekliğini {Device} aygıtında {Volume} olarak {Option}
+ {App} ses yüksekliğini {Device} aygıtında {Volume}{Unit} olarak {Option}
- {App} ses yüksekliğini {Device} aygıtında {Volume} kadar {Option}
+ {App} ses yüksekliğini {Device} aygıtında {Volume}{Unit} kadar {Option}
Varsayılan kayıttan yürütme aygıtını ayarla
@@ -548,10 +548,10 @@
Bir aygıt ses yüksekliği ayarlayın
- {Device} ses seviyesini {Volume} değerine {Option}
+ {Device} ses seviyesini {Volume}{Unit} değerine {Option}
- {Device} ses seviyesini {Volume} kadar {Option}
+ {Device} ses seviyesini {Volume}{Unit} kadar {Option}
Bir yerel değişken ayarlayın
diff --git a/EarTrumpet/Properties/Resources.uk-UA.resx b/EarTrumpet/Properties/Resources.uk-UA.resx
index d5897504e..7dfd568d1 100644
--- a/EarTrumpet/Properties/Resources.uk-UA.resx
+++ b/EarTrumpet/Properties/Resources.uk-UA.resx
@@ -516,10 +516,10 @@
Встановити гучність програми
- {Option} {App} гучність до {Volume} у {Device}
+ {Option} {App} гучність до {Volume}{Unit} у {Device}
- {Option} {App} гучність {Volume} на {Device}
+ {Option} {App} гучність {Volume}{Unit} на {Device}
Встановити стандартний пристрій відтворення
@@ -540,10 +540,10 @@
Установити гучність пристрою
- {Option} {Device} гучність до {Volume}
+ {Option} {Device} гучність до {Volume}{Unit}
- {Option} {Device} гучність на {Volume}
+ {Option} {Device} гучність на {Volume}{Unit}
Установити локальну змінну
diff --git a/EarTrumpet/Properties/Resources.vi-VN.resx b/EarTrumpet/Properties/Resources.vi-VN.resx
index 05b11370f..bb5922239 100644
--- a/EarTrumpet/Properties/Resources.vi-VN.resx
+++ b/EarTrumpet/Properties/Resources.vi-VN.resx
@@ -516,10 +516,10 @@ Mở [https://eartrumpet.app/jmp/fixfonts] ngay?
Đặt âm lượng của ứng dụng
- {Option} âm lượng của {App} thành {Volume} ở thiết bị {Device}
+ {Option} âm lượng của {App} thành {Volume}{Unit} ở thiết bị {Device}
- {Option} âm lượng của {App} thành {Volume} ở thiết bị {Device}
+ {Option} âm lượng của {App} thành {Volume}{Unit} ở thiết bị {Device}
Đặt thiết bị phát lại mặc định
@@ -540,10 +540,10 @@ Mở [https://eartrumpet.app/jmp/fixfonts] ngay?
Đật âm lượng cho thiết bị
- {Option} âm lượng của {Device} thành {Volume}
+ {Option} âm lượng của {Device} thành {Volume}{Unit}
- {Option} âm lượng của {Device} thành {Volume}
+ {Option} âm lượng của {Device} thành {Volume}{Unit}
Đặt biến cục bộ
diff --git a/EarTrumpet/Properties/Resources.zh-CN.resx b/EarTrumpet/Properties/Resources.zh-CN.resx
index 26a532fea..b961f09f2 100644
--- a/EarTrumpet/Properties/Resources.zh-CN.resx
+++ b/EarTrumpet/Properties/Resources.zh-CN.resx
@@ -524,10 +524,10 @@
调整某应用的音量
- 在 {Device} 上将 {App} 的音量 {Option} 为 {Volume}
+ 在 {Device} 上将 {App} 的音量 {Option} 为 {Volume}{Unit}
- 在 {Device} 上将 {App} 的音量 {Option} {Volume}
+ 在 {Device} 上将 {App} 的音量 {Option} {Volume}{Unit}
设置默认播放设备
@@ -548,10 +548,10 @@
调整某设备音量
- 将 {Device} 的音量 {Option} 为 {Volume}
+ 将 {Device} 的音量 {Option} 为 {Volume}{Unit}
- 将 {Device} 的音量 {Option} {Volume}
+ 将 {Device} 的音量 {Option} {Volume}{Unit}
设置某局部变量
diff --git a/EarTrumpet/Properties/Resources.zh-TW.resx b/EarTrumpet/Properties/Resources.zh-TW.resx
index 534511553..72bf188cd 100644
--- a/EarTrumpet/Properties/Resources.zh-TW.resx
+++ b/EarTrumpet/Properties/Resources.zh-TW.resx
@@ -516,10 +516,10 @@
設置應用程式的音量
- {Option} {App} 音量至 {Volume} 於 {Device}
+ {Option} {App} 音量至 {Volume}{Unit} 於 {Device}
- {Option} {App} 音量至 {Volume} 於 {Device}
+ {Option} {App} 音量至 {Volume}{Unit} 於 {Device}
設定預設播放裝置
@@ -540,10 +540,10 @@
設定設備音量
- {Option} {Device} 音量到 {Volume}
+ {Option} {Device} 音量到 {Volume}{Unit}
- {Option} {Device} 音量到 {Volume}
+ {Option} {Device} 音量到 {Volume}{Unit}
設定區域變數
diff --git a/EarTrumpet/UI/Controls/VolumeSlider.cs b/EarTrumpet/UI/Controls/VolumeSlider.cs
index 7c9a37ec6..2f5cf5efc 100644
--- a/EarTrumpet/UI/Controls/VolumeSlider.cs
+++ b/EarTrumpet/UI/Controls/VolumeSlider.cs
@@ -24,6 +24,16 @@ public float PeakValue2
public static readonly DependencyProperty PeakValue2Property = DependencyProperty.Register(
"PeakValue2", typeof(float), typeof(VolumeSlider), new PropertyMetadata(0f, new PropertyChangedCallback(PeakValueChanged)));
+ public bool UseCustomRange
+ {
+ get { return (bool)this.GetValue(UseCustomRangeProperty); }
+ set { this.SetValue(UseCustomRangeProperty, value); }
+ }
+ public static readonly DependencyProperty UseCustomRangeProperty = DependencyProperty.Register(
+ "UseCustomRange", typeof(bool), typeof(VolumeSlider), new PropertyMetadata(false));
+
+
+
private Border _peakMeter1;
private Border _peakMeter2;
private Thumb _thumb;
@@ -41,7 +51,6 @@ public VolumeSlider() : base()
Loaded += OnLoaded;
Unloaded += OnUnloaded;
- UseLogarithmicVolumeChangedHandler(null, new EventArgs());
App.Settings.UseLogarithmicVolumeChanged += UseLogarithmicVolumeChangedHandler;
}
@@ -56,6 +65,7 @@ private void OnLoaded(object sender, RoutedEventArgs e)
_thumb = (Thumb)GetTemplateChild("SliderThumb");
_peakMeter1 = (Border)GetTemplateChild("PeakMeter1");
_peakMeter2 = (Border)GetTemplateChild("PeakMeter2");
+ UseLogarithmicVolumeChangedHandler(null, new EventArgs());
}
private void OnUnloaded(object sender, RoutedEventArgs e)
@@ -77,6 +87,8 @@ private static void PeakValueChanged(DependencyObject d, DependencyPropertyChang
private void UpdateVolumeRange()
{
+ if (UseCustomRange) return;
+
if (App.Settings.UseLogarithmicVolume)
{
Minimum = App.Settings.LogarithmicVolumeMinDb;
@@ -199,7 +211,7 @@ public void SetPositionByControlPoint(Point point)
{
var percent = point.X / ActualWidth;
Value = App.Settings.UseLogarithmicVolume
- ? Math.Round(Minimum + percent * (Maximum - Minimum), 1)
+ ? Bound(Math.Round(Minimum + percent * (Maximum - Minimum), 1))
: Bound(Minimum + (Maximum - Minimum) * percent);
}