#7512: Localize mixer media add-on.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42967 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
e039afe87e
commit
6fd240c27d
@ -15,6 +15,7 @@
|
||||
#include <string.h>
|
||||
|
||||
#include <Buffer.h>
|
||||
#include <Catalog.h>
|
||||
#include <FindDirectory.h>
|
||||
#include <MediaRoster.h>
|
||||
#include <ParameterWeb.h>
|
||||
@ -28,6 +29,10 @@
|
||||
#include "MixerUtils.h"
|
||||
|
||||
|
||||
#undef B_TRANSLATE_CONTEXT
|
||||
#define B_TRANSLATE_CONTEXT "AudioMixer"
|
||||
|
||||
|
||||
// the range of the gain sliders (in dB)
|
||||
#define DB_MAX 18.0
|
||||
#define DB_MIN -60.0
|
||||
@ -1696,71 +1701,104 @@ AudioMixer::UpdateParameterWeb()
|
||||
MixerOutput *out;
|
||||
char buf[50];
|
||||
|
||||
top = web->MakeGroup("Gain controls");
|
||||
top = web->MakeGroup(B_TRANSLATE("Gain controls"));
|
||||
|
||||
out = fCore->Output();
|
||||
group = top->MakeGroup("");
|
||||
group->MakeNullParameter(PARAM_STR1(0), B_MEDIA_RAW_AUDIO, "Master output", B_WEB_BUFFER_INPUT);
|
||||
group->MakeNullParameter(PARAM_STR1(0), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("Master output"), B_WEB_BUFFER_INPUT);
|
||||
if (!out) {
|
||||
group->MakeNullParameter(PARAM_STR2(0), B_MEDIA_RAW_AUDIO, "not connected", B_GENERIC);
|
||||
group->MakeNullParameter(PARAM_STR2(0), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("not connected"), B_GENERIC);
|
||||
} else {
|
||||
group->MakeNullParameter(PARAM_STR2(0), B_MEDIA_RAW_AUDIO, StringForFormat(buf, out), B_GENERIC);
|
||||
group->MakeDiscreteParameter(PARAM_MUTE(0), B_MEDIA_RAW_AUDIO, "Mute", B_MUTE);
|
||||
if (fCore->Settings()->UseBalanceControl() && out->GetOutputChannelCount() == 2 && 1 /*channel mask is stereo */) {
|
||||
group->MakeNullParameter(PARAM_STR2(0), B_MEDIA_RAW_AUDIO,
|
||||
StringForFormat(buf, out), B_GENERIC);
|
||||
group->MakeDiscreteParameter(PARAM_MUTE(0), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("Mute"), B_MUTE);
|
||||
if (fCore->Settings()->UseBalanceControl()
|
||||
&& out->GetOutputChannelCount() == 2 && 1
|
||||
/*channel mask is stereo */) {
|
||||
// single channel control + balance
|
||||
group->MakeContinuousParameter(PARAM_GAIN(0), B_MEDIA_RAW_AUDIO, "Gain", B_MASTER_GAIN, "dB", DB_MIN, DB_MAX, 0.1);
|
||||
group->MakeContinuousParameter(PARAM_BALANCE(0), B_MEDIA_RAW_AUDIO, "", B_BALANCE, "", 0, 100, 1);
|
||||
group->MakeContinuousParameter(PARAM_GAIN(0), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("Gain"), B_MASTER_GAIN, B_TRANSLATE("dB"),
|
||||
DB_MIN, DB_MAX, 0.1);
|
||||
group->MakeContinuousParameter(PARAM_BALANCE(0), B_MEDIA_RAW_AUDIO,
|
||||
"", B_BALANCE, "", 0, 100, 1);
|
||||
} else {
|
||||
// multi channel control
|
||||
group->MakeContinuousParameter(PARAM_GAIN(0), B_MEDIA_RAW_AUDIO, "Gain", B_MASTER_GAIN, "dB", DB_MIN, DB_MAX, 0.1)
|
||||
->SetChannelCount(out->GetOutputChannelCount());
|
||||
group->MakeContinuousParameter(PARAM_GAIN(0), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("Gain"), B_MASTER_GAIN, B_TRANSLATE("dB"),
|
||||
DB_MIN, DB_MAX, 0.1)
|
||||
->SetChannelCount(out->GetOutputChannelCount());
|
||||
}
|
||||
group->MakeNullParameter(PARAM_STR3(0), B_MEDIA_RAW_AUDIO, "To output", B_WEB_BUFFER_OUTPUT);
|
||||
group->MakeNullParameter(PARAM_STR3(0), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("To output"), B_WEB_BUFFER_OUTPUT);
|
||||
}
|
||||
|
||||
for (int i = 0; (in = fCore->Input(i)); i++) {
|
||||
group = top->MakeGroup("");
|
||||
group->MakeNullParameter(PARAM_STR1(in->ID()), B_MEDIA_RAW_AUDIO, in->MediaInput().name, B_WEB_BUFFER_INPUT);
|
||||
group->MakeNullParameter(PARAM_STR2(in->ID()), B_MEDIA_RAW_AUDIO, StringForFormat(buf, in), B_GENERIC);
|
||||
group->MakeDiscreteParameter(PARAM_MUTE(in->ID()), B_MEDIA_RAW_AUDIO, "Mute", B_MUTE);
|
||||
group->MakeNullParameter(PARAM_STR1(in->ID()), B_MEDIA_RAW_AUDIO,
|
||||
in->MediaInput().name, B_WEB_BUFFER_INPUT);
|
||||
group->MakeNullParameter(PARAM_STR2(in->ID()), B_MEDIA_RAW_AUDIO,
|
||||
StringForFormat(buf, in), B_GENERIC);
|
||||
group->MakeDiscreteParameter(PARAM_MUTE(in->ID()), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("Mute"), B_MUTE);
|
||||
// XXX the gain control is ugly once you have more than two channels,
|
||||
// as you don't know what channel each slider controls. Tooltips might help...
|
||||
if (fCore->Settings()->InputGainControls() == 0) {
|
||||
// Physical input channels
|
||||
if (fCore->Settings()->UseBalanceControl() && in->GetInputChannelCount() == 2 && 1 /*channel mask is stereo */) {
|
||||
if (fCore->Settings()->UseBalanceControl()
|
||||
&& in->GetInputChannelCount() == 2 && 1
|
||||
/*channel mask is stereo */) {
|
||||
// single channel control + balance
|
||||
group->MakeContinuousParameter(PARAM_GAIN(in->ID()), B_MEDIA_RAW_AUDIO, "Gain", B_GAIN, "dB", DB_MIN, DB_MAX, 0.1);
|
||||
group->MakeContinuousParameter(PARAM_BALANCE(in->ID()), B_MEDIA_RAW_AUDIO, "", B_BALANCE, "", 0, 100, 1);
|
||||
group->MakeContinuousParameter(PARAM_GAIN(in->ID()),
|
||||
B_MEDIA_RAW_AUDIO, B_TRANSLATE("Gain"), B_GAIN,
|
||||
B_TRANSLATE("dB"), DB_MIN, DB_MAX, 0.1);
|
||||
group->MakeContinuousParameter(PARAM_BALANCE(in->ID()),
|
||||
B_MEDIA_RAW_AUDIO, "", B_BALANCE, "", 0, 100, 1);
|
||||
} else {
|
||||
// multi channel control
|
||||
group->MakeContinuousParameter(PARAM_GAIN(in->ID()), B_MEDIA_RAW_AUDIO, "Gain", B_GAIN, "dB", DB_MIN, DB_MAX, 0.1)
|
||||
->SetChannelCount(in->GetInputChannelCount());
|
||||
group->MakeContinuousParameter(PARAM_GAIN(in->ID()),
|
||||
B_MEDIA_RAW_AUDIO, B_TRANSLATE("Gain"), B_GAIN,
|
||||
B_TRANSLATE("dB"), DB_MIN, DB_MAX, 0.1)
|
||||
->SetChannelCount(in->GetInputChannelCount());
|
||||
}
|
||||
} else {
|
||||
// Virtual output channels
|
||||
if (fCore->Settings()->UseBalanceControl() && in->GetMixerChannelCount() == 2 && 1 /*channel mask is stereo */) {
|
||||
if (fCore->Settings()->UseBalanceControl()
|
||||
&& in->GetMixerChannelCount() == 2 && 1
|
||||
/*channel mask is stereo */) {
|
||||
// single channel control + balance
|
||||
group->MakeContinuousParameter(PARAM_GAIN(in->ID()), B_MEDIA_RAW_AUDIO, "Gain", B_GAIN, "dB", DB_MIN, DB_MAX, 0.1);
|
||||
group->MakeContinuousParameter(PARAM_BALANCE(in->ID()), B_MEDIA_RAW_AUDIO, "", B_BALANCE, "", 0, 100, 1);
|
||||
group->MakeContinuousParameter(PARAM_GAIN(in->ID()),
|
||||
B_MEDIA_RAW_AUDIO, B_TRANSLATE("Gain"), B_GAIN,
|
||||
B_TRANSLATE("dB"), DB_MIN, DB_MAX, 0.1);
|
||||
group->MakeContinuousParameter(PARAM_BALANCE(in->ID()),
|
||||
B_MEDIA_RAW_AUDIO, "", B_BALANCE, "", 0, 100, 1);
|
||||
} else {
|
||||
// multi channel control
|
||||
group->MakeContinuousParameter(PARAM_GAIN(in->ID()), B_MEDIA_RAW_AUDIO, "Gain", B_GAIN, "dB", DB_MIN, DB_MAX, 0.1)
|
||||
->SetChannelCount(in->GetMixerChannelCount());
|
||||
group->MakeContinuousParameter(PARAM_GAIN(in->ID()),
|
||||
B_MEDIA_RAW_AUDIO, B_TRANSLATE("Gain"), B_GAIN,
|
||||
B_TRANSLATE("dB"), DB_MIN, DB_MAX, 0.1)
|
||||
->SetChannelCount(in->GetMixerChannelCount());
|
||||
}
|
||||
}
|
||||
group->MakeNullParameter(PARAM_STR3(in->ID()), B_MEDIA_RAW_AUDIO, "To master", B_WEB_BUFFER_OUTPUT);
|
||||
group->MakeNullParameter(PARAM_STR3(in->ID()), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("To master"), B_WEB_BUFFER_OUTPUT);
|
||||
}
|
||||
|
||||
if (fCore->Settings()->AllowOutputChannelRemapping()) {
|
||||
top = web->MakeGroup("Output mapping"); // top level group
|
||||
top = web->MakeGroup(B_TRANSLATE("Output mapping")); // top level group
|
||||
outputchannels = top->MakeGroup("");
|
||||
outputchannels->MakeNullParameter(PARAM_STR4(0), B_MEDIA_RAW_AUDIO, "Output channel sources", B_GENERIC);
|
||||
outputchannels->MakeNullParameter(PARAM_STR4(0), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("Output channel sources"), B_GENERIC);
|
||||
|
||||
group = outputchannels->MakeGroup("");
|
||||
group->MakeNullParameter(PARAM_STR5(0), B_MEDIA_RAW_AUDIO, "Master output", B_GENERIC);
|
||||
group->MakeNullParameter(PARAM_STR5(0), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("Master output"), B_GENERIC);
|
||||
group = group->MakeGroup("");
|
||||
if (!out) {
|
||||
group->MakeNullParameter(PARAM_STR6(0), B_MEDIA_RAW_AUDIO, "not connected", B_GENERIC);
|
||||
group->MakeNullParameter(PARAM_STR6(0), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("not connected"), B_GENERIC);
|
||||
} else {
|
||||
for (int chan = 0; chan < out->GetOutputChannelCount(); chan++) {
|
||||
subgroup = group->MakeGroup("");
|
||||
@ -1782,52 +1820,67 @@ AudioMixer::UpdateParameterWeb()
|
||||
}
|
||||
|
||||
if (fCore->Settings()->AllowInputChannelRemapping()) {
|
||||
top = web->MakeGroup("Input mapping"); // top level group
|
||||
top = web->MakeGroup(B_TRANSLATE("Input mapping")); // top level group
|
||||
inputchannels = top->MakeGroup("");
|
||||
inputchannels->MakeNullParameter(PARAM_STR7(0), B_MEDIA_RAW_AUDIO, "Input channel destinations", B_GENERIC);
|
||||
inputchannels->MakeNullParameter(PARAM_STR7(0), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("Input channel destinations"), B_GENERIC);
|
||||
|
||||
for (int i = 0; (in = fCore->Input(i)); i++) {
|
||||
group = inputchannels->MakeGroup("");
|
||||
group->MakeNullParameter(PARAM_STR4(in->ID()), B_MEDIA_RAW_AUDIO, in->MediaInput().name, B_GENERIC);
|
||||
group->MakeNullParameter(PARAM_STR4(in->ID()), B_MEDIA_RAW_AUDIO,
|
||||
in->MediaInput().name, B_GENERIC);
|
||||
group = group->MakeGroup("");
|
||||
|
||||
for (int chan = 0; chan < in->GetInputChannelCount(); chan++) {
|
||||
subgroup = group->MakeGroup("");
|
||||
subgroup->MakeNullParameter(PARAM_DST_STR(in->ID(), chan), B_MEDIA_RAW_AUDIO,
|
||||
StringForChannelType(buf, in->GetInputChannelType(chan)), B_GENERIC);
|
||||
subgroup->MakeNullParameter(PARAM_DST_STR(in->ID(), chan),
|
||||
B_MEDIA_RAW_AUDIO, StringForChannelType(buf,
|
||||
in->GetInputChannelType(chan)), B_GENERIC);
|
||||
for (int dst = 0; dst < MAX_CHANNEL_TYPES; dst++) {
|
||||
subgroup->MakeDiscreteParameter(PARAM_DST_ENABLE(in->ID(), chan, dst), B_MEDIA_RAW_AUDIO, StringForChannelType(buf, dst), B_ENABLE);
|
||||
subgroup->MakeDiscreteParameter(PARAM_DST_ENABLE(in->ID(),
|
||||
chan, dst), B_MEDIA_RAW_AUDIO, StringForChannelType(buf, dst),
|
||||
B_ENABLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
top = web->MakeGroup("Setup"); // top level group
|
||||
top = web->MakeGroup(B_TRANSLATE("Setup")); // top level group
|
||||
group = top->MakeGroup("");
|
||||
|
||||
group->MakeDiscreteParameter(PARAM_ETC(10), B_MEDIA_RAW_AUDIO, "Attenuate mixer output by 3dB (like BeOS R5)", B_ENABLE);
|
||||
group->MakeDiscreteParameter(PARAM_ETC(20), B_MEDIA_RAW_AUDIO, "Use non linear gain sliders (like BeOS R5)", B_ENABLE);
|
||||
group->MakeDiscreteParameter(PARAM_ETC(30), B_MEDIA_RAW_AUDIO, "Display balance control for stereo connections", B_ENABLE);
|
||||
group->MakeDiscreteParameter(PARAM_ETC(10), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("Attenuate mixer output by 3dB (like BeOS R5)"), B_ENABLE);
|
||||
group->MakeDiscreteParameter(PARAM_ETC(20), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("Use non linear gain sliders (like BeOS R5)"), B_ENABLE);
|
||||
group->MakeDiscreteParameter(PARAM_ETC(30), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("Display balance control for stereo connections"),
|
||||
B_ENABLE);
|
||||
|
||||
group->MakeDiscreteParameter(PARAM_ETC(40), B_MEDIA_RAW_AUDIO, "Allow output channel remapping", B_ENABLE);
|
||||
group->MakeDiscreteParameter(PARAM_ETC(50), B_MEDIA_RAW_AUDIO, "Allow input channel remapping", B_ENABLE);
|
||||
group->MakeDiscreteParameter(PARAM_ETC(40), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("Allow output channel remapping"), B_ENABLE);
|
||||
group->MakeDiscreteParameter(PARAM_ETC(50), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("Allow input channel remapping"), B_ENABLE);
|
||||
|
||||
dp = group->MakeDiscreteParameter(PARAM_ETC(60), B_MEDIA_RAW_AUDIO, "Input gain controls represent", B_INPUT_MUX);
|
||||
dp->AddItem(0, "Physical input channels");
|
||||
dp->AddItem(1, "Virtual output channels");
|
||||
dp = group->MakeDiscreteParameter(PARAM_ETC(60), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("Input gain controls represent"), B_INPUT_MUX);
|
||||
dp->AddItem(0, B_TRANSLATE("Physical input channels"));
|
||||
dp->AddItem(1, B_TRANSLATE("Virtual output channels"));
|
||||
|
||||
dp = group->MakeDiscreteParameter(PARAM_ETC(70), B_MEDIA_RAW_AUDIO, "Resampling algorithm", B_INPUT_MUX);
|
||||
dp->AddItem(0, "Drop/repeat samples");
|
||||
dp->AddItem(2, "Linear interpolation");
|
||||
dp = group->MakeDiscreteParameter(PARAM_ETC(70), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("Resampling algorithm"), B_INPUT_MUX);
|
||||
dp->AddItem(0, B_TRANSLATE("Drop/repeat samples"));
|
||||
dp->AddItem(2, B_TRANSLATE("Linear interpolation"));
|
||||
|
||||
// Note: The following code is outcommented on purpose
|
||||
// and is about to be modified at a later point
|
||||
/*
|
||||
dp->AddItem(1, "Drop/repeat samples (template based)");
|
||||
dp->AddItem(3, "17th order filtering");
|
||||
dp->AddItem(1, B_TRANSLATE("Drop/repeat samples (template based)"));
|
||||
dp->AddItem(3, B_TRANSLATE("17th order filtering"));
|
||||
*/
|
||||
group->MakeDiscreteParameter(PARAM_ETC(80), B_MEDIA_RAW_AUDIO, "Refuse output format changes", B_ENABLE);
|
||||
group->MakeDiscreteParameter(PARAM_ETC(90), B_MEDIA_RAW_AUDIO, "Refuse input format changes", B_ENABLE);
|
||||
group->MakeDiscreteParameter(PARAM_ETC(80), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("Refuse output format changes"), B_ENABLE);
|
||||
group->MakeDiscreteParameter(PARAM_ETC(90), B_MEDIA_RAW_AUDIO,
|
||||
B_TRANSLATE("Refuse input format changes"), B_ENABLE);
|
||||
|
||||
fCore->Unlock();
|
||||
SetParameterWeb(web);
|
||||
|
15
src/add-ons/media/media-add-ons/mixer/AudioMixer.rdef
Normal file
15
src/add-ons/media/media-add-ons/mixer/AudioMixer.rdef
Normal file
@ -0,0 +1,15 @@
|
||||
/*
|
||||
* AudioMixer.rdef
|
||||
*/
|
||||
|
||||
resource app_signature "application/x-vnd.Haiku-mixer.media_addon";
|
||||
|
||||
resource app_version {
|
||||
major = 1,
|
||||
middle = 0,
|
||||
minor = 0,
|
||||
variety = 0,
|
||||
internal = 0,
|
||||
short_info = "1.0.0",
|
||||
long_info = "Haiku AudioMixer media add-on."
|
||||
};
|
@ -2,6 +2,8 @@ SubDir HAIKU_TOP src add-ons media media-add-ons mixer ;
|
||||
|
||||
SetSubDirSupportedPlatformsBeOSCompatible ;
|
||||
|
||||
AddResources mixer.media_addon : AudioMixer.rdef ;
|
||||
|
||||
Addon mixer.media_addon :
|
||||
AudioMixer.cpp
|
||||
ByteSwap.cpp
|
||||
@ -13,9 +15,16 @@ Addon mixer.media_addon :
|
||||
MixerSettings.cpp
|
||||
MixerUtils.cpp
|
||||
Resampler.cpp
|
||||
: be media $(TARGET_LIBSUPC++)
|
||||
: be media $(TARGET_LIBSUPC++) $(HAIKU_LOCALE_LIBS)
|
||||
;
|
||||
|
||||
Package haiku-mixer-cvs
|
||||
: mixer.media_addon
|
||||
: boot home config add-ons media ;
|
||||
|
||||
DoCatalogs mixer.media_addon
|
||||
:
|
||||
x-vnd.Haiku-mixer.media_addon
|
||||
:
|
||||
AudioMixer.cpp
|
||||
;
|
||||
|
Loading…
x
Reference in New Issue
Block a user