Merge remote-tracking branch 'upstream/master'
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..0639eb9
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,19 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_PROGUARD_FLAG_FILES := proguard.flags
+
+LOCAL_STATIC_JAVA_LIBRARIES := android-support-v13
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := DSPManager
+
+LOCAL_OVERRIDES_PACKAGES := MusicFX
+
+include $(BUILD_PACKAGE)
+
+# Use the folloing include to make our test apk.
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
new file mode 100644
index 0000000..f3424c3
--- /dev/null
+++ b/AndroidManifest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.bel.android.dspmanager" android:versionCode="2"
+ android:versionName="2.0">
+
+ <uses-sdk android:minSdkVersion="14"/>
+
+ <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"></uses-permission>
+ <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
+ <uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
+
+ <application android:icon="@drawable/icon" android:label="@string/app_name" android:persistent="true">
+ <activity android:label="@string/app_name" android:name=".activity.DSPManager" android:theme="@style/AppTheme"
+ android:configChanges="orientation">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="android.media.action.DISPLAY_AUDIO_EFFECT_CONTROL_PANEL" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <service android:exported="false" android:enabled="true"
+ android:name=".service.HeadsetService">
+ </service>
+
+ <receiver android:name=".receiver.BootCompletedReceiver">
+ <intent-filter>
+ <action android:name="android.intent.action.BOOT_COMPLETED" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </receiver>
+ </application>
+</manifest>
diff --git a/MODULE_LICENSE_APACHE2 b/MODULE_LICENSE_APACHE2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/MODULE_LICENSE_APACHE2
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..c5b1efa
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,190 @@
+
+ Copyright (c) 2005-2008, The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
diff --git a/cyanogen-dsp/Android.mk b/cyanogen-dsp/Android.mk
new file mode 100644
index 0000000..ce036bd
--- /dev/null
+++ b/cyanogen-dsp/Android.mk
@@ -0,0 +1,51 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libcyanogen-dsp
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/soundfx
+
+LOCAL_PRELINK_MODULE := false
+
+LOCAL_ARM_MODE := arm
+
+LOCAL_SRC_FILES := \
+ cyanogen-dsp.cpp \
+ Biquad.cpp \
+ Delay.cpp \
+ Effect.cpp \
+ EffectBassBoost.cpp \
+ EffectCompression.cpp \
+ EffectEqualizer.cpp \
+ EffectVirtualizer.cpp \
+ FIR16.cpp \
+# terminator
+
+LOCAL_C_INCLUDES += \
+ frameworks/base/include \
+ hardware/libhardware/include \
+ system/core/include \
+ system/media/audio_effects/include \
+# terminator
+
+LOCAL_SHARED_LIBRARIES := \
+ libcutils
+
+include $(BUILD_SHARED_LIBRARY)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := audio_effects.conf
+
+LOCAL_SRC_FILES := $(LOCAL_MODULE)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_MODULE_CLASS := ETC
+
+LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/etc
+
+include $(BUILD_PREBUILT)
diff --git a/cyanogen-dsp/Biquad.cpp b/cyanogen-dsp/Biquad.cpp
new file mode 100644
index 0000000..7db0fa6
--- /dev/null
+++ b/cyanogen-dsp/Biquad.cpp
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Biquad.h"
+#include <math.h>
+
+static int64_t toFixedPoint(double in) {
+ return int64_t(0.5 + in * (int64_t(1) << 32));
+}
+
+Biquad::Biquad()
+{
+ reset();
+ setCoefficients(0, 1, 0, 0, 1, 0, 0);
+}
+
+Biquad::~Biquad()
+{
+}
+
+void Biquad::setCoefficients(int32_t steps, double a0, double a1, double a2, double b0, double b1, double b2)
+{
+ int64_t A1 = -toFixedPoint(a1/a0);
+ int64_t A2 = -toFixedPoint(a2/a0);
+ int64_t B0 = toFixedPoint(b0/a0);
+ int64_t B1 = toFixedPoint(b1/a0);
+ int64_t B2 = toFixedPoint(b2/a0);
+
+ if (steps == 0) {
+ mA1 = A1;
+ mA2 = A2;
+ mB0 = B0;
+ mB1 = B1;
+ mB2 = B2;
+ mInterpolationSteps = 0;
+ } else {
+ mA1dif = (A1 - mA1) / steps;
+ mA2dif = (A2 - mA2) / steps;
+ mB0dif = (B0 - mB0) / steps;
+ mB1dif = (B1 - mB1) / steps;
+ mB2dif = (B2 - mB2) / steps;
+ mInterpolationSteps = steps;
+ }
+}
+
+void Biquad::reset()
+{
+ mInterpolationSteps = 0;
+ mA1 = 0;
+ mA2 = 0;
+ mB0 = 0;
+ mB1 = 0;
+ mB2 = 0;
+ mX1 = 0;
+ mX2 = 0;
+ mY1 = 0;
+ mY2 = 0;
+}
+
+void Biquad::setHighShelf(int32_t steps, double center_frequency, double sampling_frequency, double gainDb, double slope, double overallGainDb)
+{
+ double w0 = 2 * M_PI * center_frequency / sampling_frequency;
+ double A = pow(10, gainDb/40);
+ double alpha = sin(w0)/2 * sqrt( (A + 1/A)*(1/slope - 1) + 2 );
+
+ double b0 = A*( (A+1) + (A-1)*cos(w0) + 2*sqrt(A)*alpha );
+ double b1 = -2*A*( (A-1) + (A+1)*cos(w0) );
+ double b2 = A*( (A+1) + (A-1)*cos(w0) - 2*sqrt(A)*alpha );
+ double a0 = (A+1) - (A-1)*cos(w0) + 2*sqrt(A)*alpha ;
+ double a1 = 2*( (A-1) - (A+1)*cos(w0) );
+ double a2 = (A+1) - (A-1)*cos(w0) - 2*sqrt(A)*alpha ;
+
+ double overallGain = pow(10, overallGainDb / 20);
+ b0 *= overallGain;
+ b1 *= overallGain;
+ b2 *= overallGain;
+
+ setCoefficients(steps, a0, a1, a2, b0, b1, b2);
+}
+
+void Biquad::setBandPass(int32_t steps, double center_frequency, double sampling_frequency, double resonance)
+{
+ double w0 = 2 * M_PI * center_frequency / sampling_frequency;
+ double alpha = sin(w0) / (2*resonance);
+
+ double b0 = sin(w0)/2;
+ double b1 = 0;
+ double b2 = -sin(w0)/2;
+ double a0 = 1 + alpha;
+ double a1 = -2*cos(w0);
+ double a2 = 1 - alpha;
+
+ setCoefficients(steps, a0, a1, a2, b0, b1, b2);
+}
+
+void Biquad::setLowPass(int32_t steps, double center_frequency, double sampling_frequency, double resonance)
+{
+ double w0 = 2 * M_PI * center_frequency / sampling_frequency;
+ double alpha = sin(w0) / (2*resonance);
+
+ double b0 = (1 - cos(w0))/2;
+ double b1 = 1 - cos(w0);
+ double b2 = (1 - cos(w0))/2;
+ double a0 = 1 + alpha;
+ double a1 = -2*cos(w0);
+ double a2 = 1 - alpha;
+
+ setCoefficients(steps, a0, a1, a2, b0, b1, b2);
+}
+
+int32_t Biquad::process(int32_t x0)
+{
+ int64_t y0 = mB0 * x0
+ + mB1 * mX1
+ + mB2 * mX2
+ + mA1 * mY1
+ + mA2 * mY2;
+ y0 >>= 32;
+
+ mY2 = mY1;
+ mY1 = y0;
+
+ mX2 = mX1;
+ mX1 = x0;
+
+ /* Interpolate biquad parameters */
+ if (mInterpolationSteps != 0) {
+ mInterpolationSteps --;
+ mB0 += mB0dif;
+ mB1 += mB1dif;
+ mB2 += mB2dif;
+ mA1 += mA1dif;
+ mA2 += mA2dif;
+ }
+
+ return y0;
+}
diff --git a/cyanogen-dsp/Biquad.h b/cyanogen-dsp/Biquad.h
new file mode 100644
index 0000000..ea7b41c
--- /dev/null
+++ b/cyanogen-dsp/Biquad.h
@@ -0,0 +1,23 @@
+#pragma once
+
+#include <stdint.h>
+
+class Biquad {
+ protected:
+ int32_t mX1, mX2;
+ int32_t mY1, mY2;
+ int64_t mB0, mB1, mB2, mA1, mA2;
+ int64_t mB0dif, mB1dif, mB2dif, mA1dif, mA2dif;
+ int32_t mInterpolationSteps;
+
+ void setCoefficients(int32_t steps, double a0, double a1, double a2, double b0, double b1, double b2);
+
+ public:
+ Biquad();
+ virtual ~Biquad();
+ void setHighShelf(int32_t steps, double cf, double sf, double gaindB, double slope, double overallGain);
+ void setBandPass(int32_t steps, double cf, double sf, double resonance);
+ void setLowPass(int32_t steps, double cf, double sf, double resonance);
+ int32_t process(int32_t in);
+ void reset();
+};
diff --git a/cyanogen-dsp/Delay.cpp b/cyanogen-dsp/Delay.cpp
new file mode 100644
index 0000000..4726d71
--- /dev/null
+++ b/cyanogen-dsp/Delay.cpp
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Delay.h"
+
+#include <string.h>
+
+Delay::Delay()
+ : mState(0), mIndex(0), mLength(0)
+{
+}
+
+Delay::~Delay()
+{
+ if (mState != 0) {
+ delete[] mState;
+ mState = 0;
+ }
+}
+
+void Delay::setParameters(float samplingFrequency, float time)
+{
+ mLength = int32_t(time * samplingFrequency + 0.5f);
+ if (mState != 0) {
+ delete[] mState;
+ }
+ mState = new int32_t[mLength];
+ memset(mState, 0, mLength * sizeof(int32_t));
+ mIndex = 0;
+}
+
+int32_t Delay::process(int32_t x0)
+{
+ int32_t y0 = mState[mIndex];
+ mState[mIndex] = x0;
+ mIndex = (mIndex + 1) % mLength;
+ return y0;
+}
diff --git a/cyanogen-dsp/Delay.h b/cyanogen-dsp/Delay.h
new file mode 100644
index 0000000..b438c73
--- /dev/null
+++ b/cyanogen-dsp/Delay.h
@@ -0,0 +1,15 @@
+#pragma once
+
+#include <stdint.h>
+
+class Delay {
+ int32_t* mState;
+ int32_t mIndex;
+ int32_t mLength;
+
+ public:
+ Delay();
+ ~Delay();
+ void setParameters(float rate, float time);
+ int32_t process(int32_t x0);
+};
diff --git a/cyanogen-dsp/Effect.cpp b/cyanogen-dsp/Effect.cpp
new file mode 100644
index 0000000..d197f15
--- /dev/null
+++ b/cyanogen-dsp/Effect.cpp
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "DSP-Effect"
+
+#include <cutils/log.h>
+#include "Effect.h"
+
+Effect::Effect()
+ : mSamplingRate(44100)
+{
+}
+
+Effect::~Effect() {
+}
+
+/* Configure a bunch of general parameters. */
+int32_t Effect::configure(void* pCmdData) {
+ effect_config_t *cfg = (effect_config_t *) pCmdData;
+ buffer_config_t in = cfg->inputCfg;
+ buffer_config_t out = cfg->outputCfg;
+
+ /* Check that we aren't asked to do resampling. Note that audioflinger
+ * always provides full setup info at initial configure time. */
+ if ((in.mask & EFFECT_CONFIG_SMP_RATE) && (out.mask & EFFECT_CONFIG_SMP_RATE)) {
+ if (out.samplingRate != in.samplingRate) {
+ ALOGE("This effect is not capable of resampling from %d to %d Hz", in.samplingRate, out.samplingRate);
+ return -EINVAL;
+ }
+ mSamplingRate = in.samplingRate;
+ }
+
+ if (in.mask & EFFECT_CONFIG_CHANNELS && out.mask & EFFECT_CONFIG_CHANNELS) {
+ if (in.channels != AUDIO_CHANNEL_OUT_STEREO) {
+ ALOGE("Invalid input channel setup: 0x%x", in.channels);
+ return -EINVAL;
+ }
+ if (out.channels != AUDIO_CHANNEL_OUT_STEREO) {
+ ALOGE("Invalid output channel setup: 0x%x", in.channels);
+ return -EINVAL;
+ }
+ }
+
+ if (in.mask & EFFECT_CONFIG_FORMAT) {
+ if (in.format != AUDIO_FORMAT_PCM_16_BIT) {
+ ALOGE("Invalid input format (need 16-bit PCM): 0x%x", in.format);
+ }
+ }
+ if (out.mask & EFFECT_CONFIG_FORMAT) {
+ if (out.format != AUDIO_FORMAT_PCM_16_BIT) {
+ ALOGE("Invalid output format (need 16-bit PCM): 0x%x", out.format);
+ }
+ }
+ if (out.mask & EFFECT_CONFIG_ACC_MODE) {
+ mAccessMode = (effect_buffer_access_e) out.accessMode;
+ }
+
+ return 0;
+}
+
+int32_t Effect::command(uint32_t cmdCode, uint32_t cmdSize, void *pCmdData, uint32_t *replySize, void* pReplyData)
+{
+ switch (cmdCode) {
+ case EFFECT_CMD_ENABLE:
+ case EFFECT_CMD_DISABLE: {
+ mEnable = cmdCode == EFFECT_CMD_ENABLE;
+ int32_t *replyData = (int32_t *) pReplyData;
+ *replyData = 0;
+ break;
+ }
+
+ case EFFECT_CMD_INIT:
+ case EFFECT_CMD_SET_CONFIG:
+ case EFFECT_CMD_SET_PARAM:
+ case EFFECT_CMD_SET_PARAM_COMMIT: {
+ int32_t *replyData = (int32_t *) pReplyData;
+ *replyData = 0;
+ break;
+ }
+
+ case EFFECT_CMD_RESET:
+ case EFFECT_CMD_SET_PARAM_DEFERRED:
+ case EFFECT_CMD_SET_DEVICE:
+ case EFFECT_CMD_SET_AUDIO_MODE:
+ break;
+
+ case EFFECT_CMD_GET_PARAM: {
+ effect_param_t *rep = (effect_param_t *) pReplyData;
+ rep->status = -EINVAL;
+ rep->psize = 0;
+ rep->vsize = 0;
+ *replySize = 12;
+ break;
+ }
+
+ case EFFECT_CMD_SET_VOLUME:
+ if (pReplyData != NULL) {
+ int32_t *replyData = (int32_t *) pReplyData;
+ for (uint32_t i = 0; i < *replySize / 4; i ++) {
+ replyData[i] = 1 << 24;
+ }
+ }
+ break;
+ }
+
+ return 0;
+}
diff --git a/cyanogen-dsp/Effect.h b/cyanogen-dsp/Effect.h
new file mode 100644
index 0000000..6b52b84
--- /dev/null
+++ b/cyanogen-dsp/Effect.h
@@ -0,0 +1,58 @@
+#pragma once
+
+#include <stdint.h>
+#include <system/audio.h>
+#include <hardware/audio_effect.h>
+
+static inline uint8_t prng() {
+ static uint32_t seed;
+ seed = seed * 1664525 + 1013904223;
+ return seed >> 22;
+}
+
+class Effect {
+ private:
+ effect_buffer_access_e mAccessMode;
+
+ protected:
+ bool mEnable;
+ float mSamplingRate;
+ uint8_t mPreviousRandom;
+
+ /* High-passed triangular probability density function.
+ * Output varies from -0xff to 0xff. */
+ inline int32_t triangularDither8() {
+ uint8_t newRandom = prng();
+ int32_t rnd = int32_t(mPreviousRandom) - int32_t(newRandom);
+ mPreviousRandom = newRandom;
+ return rnd;
+ }
+
+ /* AudioFlinger only gives us 16-bit PCM for now. */
+ inline int32_t read(audio_buffer_t *in, int32_t idx) {
+ return in->s16[idx] << 8;
+ }
+
+ /* AudioFlinger only expects 16-bit PCM for now. */
+ inline void write(audio_buffer_t *out, int32_t idx, int32_t sample) {
+ if (mAccessMode == EFFECT_BUFFER_ACCESS_ACCUMULATE) {
+ sample += out->s16[idx] << 8;
+ }
+ sample = (sample + triangularDither8()) >> 8;
+ if (sample > 32767) {
+ sample = 32767;
+ }
+ if (sample < -32768) {
+ sample = -32768;
+ }
+ out->s16[idx] = sample;
+ }
+
+ int32_t configure(void *pCmdData);
+
+ public:
+ Effect();
+ virtual ~Effect();
+ virtual int32_t process(audio_buffer_t *in, audio_buffer_t *out) = 0;
+ virtual int32_t command(uint32_t cmdCode, uint32_t cmdSize, void* pCmdData, uint32_t* replySize, void* pReplyData) = 0;
+};
diff --git a/cyanogen-dsp/EffectBassBoost.cpp b/cyanogen-dsp/EffectBassBoost.cpp
new file mode 100644
index 0000000..0a7dae7
--- /dev/null
+++ b/cyanogen-dsp/EffectBassBoost.cpp
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "Effect-BassBoost"
+
+#include <cutils/log.h>
+#include "EffectBassBoost.h"
+
+typedef struct {
+ int32_t status;
+ uint32_t psize;
+ uint32_t vsize;
+ int32_t cmd;
+ int32_t data;
+} reply1x4_1x4_t;
+
+typedef struct {
+ int32_t status;
+ uint32_t psize;
+ uint32_t vsize;
+ int32_t cmd;
+ int16_t data;
+} reply1x4_1x2_t;
+
+EffectBassBoost::EffectBassBoost()
+ : mStrength(0)
+{
+ refreshStrength();
+}
+
+int32_t EffectBassBoost::command(uint32_t cmdCode, uint32_t cmdSize, void* pCmdData, uint32_t* replySize, void* pReplyData)
+{
+ if (cmdCode == EFFECT_CMD_SET_CONFIG) {
+ int32_t ret = Effect::configure(pCmdData);
+ if (ret != 0) {
+ int32_t *replyData = (int32_t *) pReplyData;
+ *replyData = ret;
+ return 0;
+ }
+
+ int32_t *replyData = (int32_t *) pReplyData;
+ *replyData = 0;
+ return 0;
+ }
+
+ if (cmdCode == EFFECT_CMD_GET_PARAM) {
+ effect_param_t *cep = (effect_param_t *) pCmdData;
+ if (cep->psize == 4) {
+ int32_t cmd = ((int32_t *) cep)[3];
+ if (cmd == BASSBOOST_PARAM_STRENGTH_SUPPORTED) {
+ reply1x4_1x4_t *replyData = (reply1x4_1x4_t *) pReplyData;
+ replyData->status = 0;
+ replyData->vsize = 4;
+ replyData->data = 1;
+ *replySize = sizeof(reply1x4_1x4_t);
+ return 0;
+ }
+ if (cmd == BASSBOOST_PARAM_STRENGTH) {
+ reply1x4_1x2_t *replyData = (reply1x4_1x2_t *) pReplyData;
+ replyData->status = 0;
+ replyData->vsize = 2;
+ replyData->data = mStrength;
+ *replySize = sizeof(reply1x4_1x2_t);
+ return 0;
+ }
+ }
+
+ ALOGE("Unknown GET_PARAM of %d bytes", cep->psize);
+ effect_param_t *replyData = (effect_param_t *) pReplyData;
+ replyData->status = -EINVAL;
+ replyData->vsize = 0;
+ *replySize = sizeof(effect_param_t);
+ return 0;
+ }
+
+ if (cmdCode == EFFECT_CMD_SET_PARAM) {
+ effect_param_t *cep = (effect_param_t *) pCmdData;
+ if (cep->psize == 4 && cep->vsize == 2) {
+ int32_t cmd = ((int32_t *) cep)[3];
+ if (cmd == BASSBOOST_PARAM_STRENGTH) {
+ mStrength = ((int16_t *) cep)[8];
+ ALOGI("New strength: %d", mStrength);
+ refreshStrength();
+ int32_t *replyData = (int32_t *) pReplyData;
+ *replyData = 0;
+ return 0;
+ }
+ }
+
+ ALOGE("Unknown SET_PARAM of %d, %d bytes", cep->psize, cep->vsize);
+ int32_t *replyData = (int32_t *) pReplyData;
+ *replyData = -EINVAL;
+ return 0;
+ }
+
+ return Effect::command(cmdCode, cmdSize, pCmdData, replySize, pReplyData);
+}
+
+void EffectBassBoost::refreshStrength()
+{
+ /* Q = 0.5 .. 2.0 */
+ mBoost.setLowPass(0, 55.0f, mSamplingRate, 0.5f + mStrength / 666.0f);
+}
+
+int32_t EffectBassBoost::process(audio_buffer_t* in, audio_buffer_t* out)
+{
+ for (uint32_t i = 0; i < in->frameCount; i ++) {
+ int32_t dryL = read(in, i * 2);
+ int32_t dryR = read(in, i * 2 + 1);
+
+ /* Original LVM effect was far more involved than this one.
+ * This effect is mostly a placeholder until I port that, or
+ * something else. LVM process diagram was as follows:
+ *
+ * in -> [ HPF ] -+-> [ mono mix ] -> [ BPF ] -> [ compressor ] -> out
+ * `-->------------------------------>--'
+ *
+ * High-pass filter was optional, and seemed to be
+ * tuned at 55 Hz and upwards. BPF is probably always tuned
+ * at the same frequency, as this would make sense.
+ *
+ * Additionally, a compressor element was used to limit the
+ * mixing of the boost (only!) to avoid clipping.
+ */
+ int32_t boost = mBoost.process(dryL + dryR);
+
+ write(out, i * 2, dryL + boost);
+ write(out, i * 2 + 1, dryR + boost);
+ }
+
+ return mEnable ? 0 : -ENODATA;
+ }
+
diff --git a/cyanogen-dsp/EffectBassBoost.h b/cyanogen-dsp/EffectBassBoost.h
new file mode 100644
index 0000000..80e1658
--- /dev/null
+++ b/cyanogen-dsp/EffectBassBoost.h
@@ -0,0 +1,20 @@
+#pragma once
+
+#include <audio_effects/effect_bassboost.h>
+
+#include "Biquad.h"
+#include "Effect.h"
+
+class EffectBassBoost : public Effect {
+ private:
+ int16_t mStrength;
+ Biquad mBoost;
+
+ void refreshStrength();
+
+ public:
+ EffectBassBoost();
+
+ int32_t command(uint32_t cmdCode, uint32_t cmdSize, void* pCmdData, uint32_t* replySize, void* pReplyData);
+ int32_t process(audio_buffer_t *in, audio_buffer_t *out);
+};
diff --git a/cyanogen-dsp/EffectCompression.cpp b/cyanogen-dsp/EffectCompression.cpp
new file mode 100644
index 0000000..a71e187
--- /dev/null
+++ b/cyanogen-dsp/EffectCompression.cpp
@@ -0,0 +1,211 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "Effect-DRC"
+
+#include <cutils/log.h>
+#include "EffectCompression.h"
+
+#include <math.h>
+
+typedef struct {
+ effect_param_t ep;
+ uint32_t code;
+ uint16_t value;
+} cmd1x4_1x2_t;
+
+static int32_t max(int32_t a, int32_t b)
+{
+ return a > b ? a : b;
+}
+
+EffectCompression::EffectCompression()
+ : mCompressionRatio(2.0), mFade(0)
+{
+ for (int32_t i = 0; i < 2; i ++) {
+ mCurrentLevel[i] = 0;
+ mUserLevel[i] = 1 << 24;
+ }
+}
+
+int32_t EffectCompression::command(uint32_t cmdCode, uint32_t cmdSize, void* pCmdData, uint32_t* replySize, void* pReplyData)
+{
+ if (cmdCode == EFFECT_CMD_SET_CONFIG) {
+ int32_t *replyData = (int32_t *) pReplyData;
+ int32_t ret = Effect::configure(pCmdData);
+ if (ret != 0) {
+ *replyData = ret;
+ return 0;
+ }
+
+ /* This filter gives a reasonable approximation of A- and C-weighting
+ * which is close to correct for 100 - 10 kHz. 10 dB gain must be added to result. */
+ mWeigherBP[0].setBandPass(0, 2200, mSamplingRate, 0.33);
+ mWeigherBP[1].setBandPass(0, 2200, mSamplingRate, 0.33);
+
+ *replyData = 0;
+ return 0;
+ }
+
+ if (cmdCode == EFFECT_CMD_SET_PARAM) {
+ effect_param_t *cep = (effect_param_t *) pCmdData;
+ if (cep->psize == 4 && cep->vsize == 2) {
+ int32_t *replyData = (int32_t *) pReplyData;
+ cmd1x4_1x2_t *strength = (cmd1x4_1x2_t *) pCmdData;
+ if (strength->code == 0) {
+ /* 1.0 .. 11.0 */
+ mCompressionRatio = 1.f + strength->value / 100.f;
+ ALOGI("Compression factor set to: %f", mCompressionRatio);
+ *replyData = 0;
+ return 0;
+ }
+ }
+
+ ALOGE("Unknown SET_PARAM of %d, %d bytes", cep->psize, cep->vsize);
+ return -1;
+ }
+
+ if (cmdCode == EFFECT_CMD_SET_VOLUME && cmdSize == 8) {
+ ALOGI("Setting volumes");
+
+ if (pReplyData != NULL) {
+ int32_t *userVols = (int32_t *) pCmdData;
+ for (uint32_t i = 0; i < cmdSize / 4; i ++) {
+ ALOGI("user volume on channel %d: %d", i, userVols[i]);
+ mUserLevel[i] = userVols[i];
+ }
+
+ int32_t *myVols = (int32_t *) pReplyData;
+ for (uint32_t i = 0; i < *replySize / 4; i ++) {
+ ALOGI("Returning unity for our pre-requested volume on channel %d", i);
+ myVols[i] = 1 << 24; /* Unity gain */
+ }
+ } else {
+ /* We don't control volume. */
+ for (int32_t i = 0; i < 2; i ++) {
+ mUserLevel[i] = 1 << 24;
+ }
+ }
+
+ return 0;
+ }
+
+ /* Init to current volume level on enabling effect to prevent
+ * initial fade in / other shite */
+ if (cmdCode == EFFECT_CMD_ENABLE) {
+ ALOGI("Copying user levels as initial loudness.");
+ /* Unfortunately Android calls SET_VOLUME after ENABLE for us.
+ * so we can't really use those volumes. It's safest just to fade in
+ * each time. */
+ for (int32_t i = 0; i < 2; i ++) {
+ mCurrentLevel[i] = 0;
+ }
+ }
+
+ return Effect::command(cmdCode, cmdSize, pCmdData, replySize, pReplyData);
+}
+
+/* Return fixed point 16.48 */
+uint64_t EffectCompression::estimateOneChannelLevel(audio_buffer_t *in, int32_t interleave, int32_t offset, Biquad& weigherBP)
+{
+ uint64_t power = 0;
+ for (uint32_t i = 0; i < in->frameCount; i ++) {
+ int32_t tmp = read(in, offset);
+ tmp = weigherBP.process(tmp);
+
+ /* 2^24 * 2^24 = 48 */
+ power += int64_t(tmp) * int64_t(tmp);
+ offset += interleave;
+ }
+
+ return (power / in->frameCount);
+}
+
+int32_t EffectCompression::process(audio_buffer_t *in, audio_buffer_t *out)
+{
+ /* Analyze both channels separately, pick the maximum power measured. */
+ uint64_t maximumPowerSquared = 0;
+ for (uint32_t i = 0; i < 2; i ++) {
+ uint64_t candidatePowerSquared = estimateOneChannelLevel(in, 2, i, mWeigherBP[i]);
+ if (candidatePowerSquared > maximumPowerSquared) {
+ maximumPowerSquared = candidatePowerSquared;
+ }
+ }
+
+ /* -100 .. 0 dB. */
+ float signalPowerDb = logf(maximumPowerSquared / float(int64_t(1) << 48) + 1e-10f) / logf(10.0f) * 10.0f;
+
+ /* Target 83 dB SPL */
+ signalPowerDb += 96.0f - 83.0f + 10.0f;
+
+ /* now we have an estimate of the signal power, with 0 level around 83 dB.
+ * we now select the level to boost to. */
+ float desiredLevelDb = signalPowerDb / mCompressionRatio;
+
+ /* turn back to multiplier */
+ float correctionDb = desiredLevelDb - signalPowerDb;
+
+ if (mEnable && mFade != 100) {
+ mFade += 1;
+ }
+ if (!mEnable && mFade != 0) {
+ mFade -= 1;
+ }
+
+ correctionDb *= mFade / 100.f;
+
+ /* Reduce extreme boost by a smooth ramp.
+ * New range -50 .. 0 dB */
+ correctionDb -= powf(correctionDb/100, 2.0f) * (100.0f / 2.0f);
+
+ /* 40.24 */
+ int64_t correctionFactor = (1 << 24) * powf(10.0f, correctionDb / 20.0f);
+
+ /* Now we have correction factor and user-desired sound level. */
+ for (uint32_t i = 0; i < 2; i ++) {
+ /* 8.24 */
+ int32_t desiredLevel = mUserLevel[i] * correctionFactor >> 24;
+
+ /* 8.24 */
+ int32_t volAdj = desiredLevel - mCurrentLevel[i];
+
+ /* I want volume adjustments to occur in about 0.025 seconds.
+ * However, if the input buffer would happen to be longer than
+ * this, I'll just make sure that I am done with the adjustment
+ * by the end of it. */
+ int32_t adjLen = mSamplingRate / 40; // in practice, about 1100 frames
+ /* This formulation results in piecewise linear approximation of
+ * exponential because the rate of adjustment decreases from granule
+ * to granule. */
+ volAdj /= max(adjLen, in->frameCount);
+
+ /* Additionally, I want volume to increase only very slowly.
+ * This biases us against pumping effects and also tends to spare
+ * our ears when some very loud sound begins suddenly. */
+ if (volAdj > 0) {
+ volAdj >>= 4;
+ }
+
+ for (uint32_t j = 0; j < in->frameCount; j ++) {
+ int32_t value = read(in, j * 2 + i);
+ value = int64_t(value) * mCurrentLevel[i] >> 24;
+ write(out, j * 2 + i, value);
+ mCurrentLevel[i] += volAdj;
+ }
+ }
+
+ return mEnable || mFade != 0 ? 0 : -ENODATA;
+}
diff --git a/cyanogen-dsp/EffectCompression.h b/cyanogen-dsp/EffectCompression.h
new file mode 100644
index 0000000..1ccac64
--- /dev/null
+++ b/cyanogen-dsp/EffectCompression.h
@@ -0,0 +1,22 @@
+#pragma once
+
+#include "Biquad.h"
+#include "Effect.h"
+
+class EffectCompression : public Effect {
+ private:
+ int32_t mUserLevel[2];
+ float mCompressionRatio;
+
+ int32_t mFade;
+ int32_t mCurrentLevel[2];
+
+ Biquad mWeigherBP[2];
+
+ uint64_t estimateOneChannelLevel(audio_buffer_t *in, int32_t interleave, int32_t offset, Biquad& WeigherBP);
+
+ public:
+ EffectCompression();
+ int32_t command(uint32_t cmdCode, uint32_t cmdSize, void* pCmdData, uint32_t* replySize, void* pReplyData);
+ int32_t process(audio_buffer_t *in, audio_buffer_t *out);
+};
diff --git a/cyanogen-dsp/EffectEqualizer.cpp b/cyanogen-dsp/EffectEqualizer.cpp
new file mode 100644
index 0000000..373fab2
--- /dev/null
+++ b/cyanogen-dsp/EffectEqualizer.cpp
@@ -0,0 +1,459 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "Effect-Equalizer"
+
+#include <cutils/log.h>
+#include "EffectEqualizer.h"
+
+#include <math.h>
+
+#define NUM_BANDS 6
+
+/* EQ presets */
+static int16_t gPresetAcoustic[NUM_BANDS] = { 450, 450, 350, 175, 350, 250 };
+static int16_t gPresetBassBooster[NUM_BANDS] = { 650, 650, 400, 0, 0, 0 };
+static int16_t gPresetBassReducer[NUM_BANDS] = { -650, -650, -400, 0, 0, 0 };
+static int16_t gPresetClassical[NUM_BANDS] = { 400, 400, 325, -50, 200, 350 };
+static int16_t gPresetDeep[NUM_BANDS] = { 400, 400, 50, 150, -400, -450 };
+static int16_t gPresetFlat[NUM_BANDS] = { 0, 0, 0, 0, 0, 0 };
+static int16_t gPresetRnB[NUM_BANDS] = { 550, 550, 350, -175, 150, 250 };
+static int16_t gPresetRock[NUM_BANDS] = { 450, 450, 275, -50, 275, 400 };
+static int16_t gPresetSmallSpeakers[NUM_BANDS] = { 650, 650, 400, 0, -650, -400 };
+static int16_t gPresetTrebleBooster[NUM_BANDS] = { 0, 0, 0, 0, 400, 650 };
+static int16_t gPresetTrebleReducer[NUM_BANDS] = { 0, 0, 0, 0, -650, -400 };
+static int16_t gPresetVocalBooster[NUM_BANDS] = { -250, -250, 0, 350, 150, -200 };
+
+struct sPresetConfig {
+ const char * name;
+ const int16_t * bandConfigs;
+};
+
+static const sPresetConfig gEqualizerPresets[] = {
+ { "Acoustic", gPresetAcoustic },
+ { "Bass Booster", gPresetBassBooster },
+ { "Bass Reducer", gPresetBassReducer },
+ { "Classical", gPresetClassical },
+ { "Deep", gPresetDeep },
+ { "Flat", gPresetFlat },
+ { "R&B", gPresetRnB },
+ { "Rock", gPresetRock },
+ { "Small Speakers", gPresetSmallSpeakers },
+ { "Treble Booster", gPresetTrebleBooster },
+ { "Treble Reducer", gPresetTrebleReducer },
+ { "Vocal Booster", gPresetVocalBooster }
+};
+
+static const int16_t gNumPresets = sizeof(gEqualizerPresets)/sizeof(sPresetConfig);
+static int16_t mCurPreset = 0;
+
+/* End of EQ presets */
+
+typedef struct {
+ int32_t status;
+ uint32_t psize;
+ uint32_t vsize;
+ int32_t cmd;
+ int16_t data;
+} reply1x4_1x2_t;
+
+typedef struct {
+ int32_t status;
+ uint32_t psize;
+ uint32_t vsize;
+ int32_t cmd;
+ int16_t data1;
+ int16_t data2;
+} reply1x4_2x2_t;
+
+typedef struct {
+ int32_t status;
+ uint32_t psize;
+ uint32_t vsize;
+ int32_t cmd;
+ int32_t arg;
+ int16_t data;
+} reply2x4_1x2_t;
+
+typedef struct {
+ int32_t status;
+ uint32_t psize;
+ uint32_t vsize;
+ int32_t cmd;
+ int32_t arg;
+ int32_t data;
+} reply2x4_1x4_t;
+
+typedef struct {
+ int32_t status;
+ uint32_t psize;
+ uint32_t vsize;
+ int32_t cmd;
+ int32_t arg;
+ int32_t data1;
+ int32_t data2;
+} reply2x4_2x4_t;
+
+typedef struct {
+ int32_t status;
+ uint32_t psize;
+ uint32_t vsize;
+ int32_t cmd;
+ int16_t data[8]; // numbands (6) + 2
+} reply1x4_props_t;
+
+static int64_t toFixedPoint(float in) {
+ return (int64_t) (0.5 + in * ((int64_t) 1 << 32));
+}
+
+EffectEqualizer::EffectEqualizer()
+ : mLoudnessAdjustment(10000.f), mLoudnessL(50.f), mLoudnessR(50.f),
+ mNextUpdate(0), mNextUpdateInterval(1000), mPowerSquaredL(0), mPowerSquaredR(0), mFade(0)
+{
+ for (int32_t i = 0; i < 6; i ++) {
+ mBand[i] = 0;
+ }
+}
+
+int32_t EffectEqualizer::command(uint32_t cmdCode, uint32_t cmdSize, void* pCmdData, uint32_t* replySize, void* pReplyData)
+{
+ if (cmdCode == EFFECT_CMD_SET_CONFIG) {
+ int32_t ret = Effect::configure(pCmdData);
+ if (ret != 0) {
+ ALOGE("EFFECT_CMD_SET_CONFIG failed");
+ int32_t *replyData = (int32_t *) pReplyData;
+ *replyData = ret;
+ return 0;
+ }
+
+ /* 100 updates per second. */
+ mNextUpdateInterval = int32_t(mSamplingRate / 100.);
+
+ int32_t *replyData = (int32_t *) pReplyData;
+ *replyData = 0;
+ return 0;
+ }
+
+ if (cmdCode == EFFECT_CMD_GET_PARAM) {
+ effect_param_t *cep = (effect_param_t *) pCmdData;
+ if (cep->psize == 4) {
+ int32_t cmd = ((int32_t *) cep)[3];
+ if (cmd == EQ_PARAM_NUM_BANDS) {
+ reply1x4_1x2_t *replyData = (reply1x4_1x2_t *) pReplyData;
+ replyData->status = 0;
+ replyData->vsize = 2;
+ replyData->data = NUM_BANDS;
+ *replySize = sizeof(reply1x4_1x2_t);
+ return 0;
+ }
+ if (cmd == EQ_PARAM_LEVEL_RANGE) {
+ reply1x4_2x2_t *replyData = (reply1x4_2x2_t *) pReplyData;
+ replyData->status = 0;
+ replyData->vsize = 4;
+ replyData->data1 = -1000;
+ replyData->data2 = 1000;
+ *replySize = sizeof(reply1x4_2x2_t);
+ return 0;
+ }
+ if (cmd == EQ_PARAM_GET_NUM_OF_PRESETS) {
+ reply1x4_1x2_t *replyData = (reply1x4_1x2_t *) pReplyData;
+ replyData->status = 0;
+ replyData->vsize = 2;
+ replyData->data = gNumPresets;
+ *replySize = sizeof(reply1x4_1x2_t);
+ return 0;
+ }
+ if (cmd == EQ_PARAM_PROPERTIES) {
+ reply1x4_props_t *replyData = (reply1x4_props_t *) pReplyData;
+ replyData->status = 0;
+ replyData->vsize = 2*8;
+ replyData->data[0] = (int16_t)-1; // PRESET_CUSTOM
+ replyData->data[1] = (int16_t)6; // number of bands
+ for (int i = 0; i < NUM_BANDS; i++) {
+ replyData->data[2 + i] = (int16_t)(mBand[i] * 100 + 0.5f); // band levels
+ }
+ *replySize = sizeof(reply1x4_props_t);
+ return 0;
+ }
+ if (cmd == EQ_PARAM_CUR_PRESET) {
+ reply1x4_1x2_t *replyData = (reply1x4_1x2_t *) pReplyData;
+ replyData->status = 0;
+ replyData->vsize = 2;
+ replyData->data = mCurPreset;
+ *replySize = sizeof(reply1x4_1x2_t);
+ return 0;
+ }
+ } else if (cep->psize == 8) {
+ int32_t cmd = ((int32_t *) cep)[3];
+ int32_t arg = ((int32_t *) cep)[4];
+ if (cmd == EQ_PARAM_BAND_LEVEL && arg >= 0 && arg < NUM_BANDS) {
+ reply2x4_1x2_t *replyData = (reply2x4_1x2_t *) pReplyData;
+ replyData->status = 0;
+ replyData->vsize = 2;
+ replyData->data = int16_t(mBand[arg] * 100 + 0.5f);
+ *replySize = sizeof(reply2x4_1x2_t);
+ return 0;
+ }
+ if (cmd == EQ_PARAM_CENTER_FREQ && arg >= 0 && arg < NUM_BANDS) {
+ float centerFrequency = 15.625f * powf(4, arg);
+ reply2x4_1x4_t *replyData = (reply2x4_1x4_t *) pReplyData;
+ replyData->status = 0;
+ replyData->vsize = 4;
+ replyData->data = int32_t(centerFrequency * 1000);
+ *replySize = sizeof(reply2x4_1x4_t);
+ return 0;
+ }
+ if (cmd == EQ_PARAM_GET_BAND) {
+ float band = log(float(arg / 1000) / 15.625f) / log(4);
+ reply2x4_1x2_t *replyData = (reply2x4_1x2_t *) pReplyData;
+ replyData->status = 0;
+ replyData->vsize = 2;
+ replyData->data = int16_t(band);
+ *replySize = sizeof(reply2x4_1x2_t);
+ return 0;
+ }
+ if (cmd == EQ_PARAM_BAND_FREQ_RANGE && arg >= 0 && arg < NUM_BANDS) {
+ float centerFrequency = 15.625f * powf(4, arg);
+ float topFrequency = ((1.5f * 15.625f) * powf(4, arg));
+ float bottomFrequency = (centerFrequency - (topFrequency - centerFrequency));
+ reply2x4_2x4_t *replyData = (reply2x4_2x4_t *) pReplyData;
+ replyData->status = 0;
+ replyData->vsize = 8;
+ replyData->data1 = int32_t(bottomFrequency * 1000);
+ replyData->data2 = int32_t(topFrequency * 1000);
+ *replySize = sizeof(reply2x4_2x4_t);
+ return 0;
+ }
+ if (cmd == EQ_PARAM_GET_PRESET_NAME && arg >= 0 && arg < int32_t(gNumPresets)) {
+ effect_param_t *replyData = (effect_param_t *)pReplyData;
+ memcpy(pReplyData, pCmdData, sizeof(effect_param_t) + cep->psize);
+ size_t *pValueSize = &replyData->vsize;
+ int voffset = ((replyData->psize - 1) / sizeof(int32_t) + 1) * sizeof(int32_t);
+ void *pValue = replyData->data + voffset;
+
+ char *name = (char *)pValue;
+ strncpy(name, gEqualizerPresets[arg].name, *pValueSize - 1);
+ name[*pValueSize - 1] = 0;
+ *pValueSize = strlen(name) + 1;
+ *replySize = sizeof(effect_param_t) + voffset + replyData->vsize;
+ replyData->status = 0;
+ return 0;
+ }
+ }
+
+ /* Didn't support this command. We'll just set error status. */
+ ALOGE("Unknown GET_PARAM of size %d (%d)", cep->psize, ((int32_t *) cep)[3]);
+ effect_param_t *replyData = (effect_param_t *) pReplyData;
+ replyData->status = -EINVAL;
+ replyData->vsize = 0;
+ *replySize = sizeof(effect_param_t);
+ return 0;
+ }
+
+ if (cmdCode == EFFECT_CMD_SET_PARAM) {
+ effect_param_t *cep = (effect_param_t *) pCmdData;
+ int32_t *replyData = (int32_t *) pReplyData;
+
+ if (cep->psize == 4 && cep->vsize == 2) {
+ int32_t cmd = ((int32_t *) cep)[3];
+ if (cmd == CUSTOM_EQ_PARAM_LOUDNESS_CORRECTION) {
+ int16_t value = ((int16_t *) cep)[8];
+ mLoudnessAdjustment = value / 100.0f;
+ ALOGI("Setting loudness correction reference to %f dB", mLoudnessAdjustment);
+ *replyData = 0;
+ return 0;
+ }
+ }
+
+ if (cep->psize == 4 && cep->vsize == 2) {
+ int32_t cmd = *((int32_t *) cep->data);
+ int16_t arg = *((int16_t *) (cep->data + sizeof(int32_t)));
+
+ if (cmd == EQ_PARAM_CUR_PRESET && arg >= 0 && arg < gNumPresets) {
+ sizeof(const int16_t *);
+ int16_t i = 0;
+ for (i = 0; i < NUM_BANDS; i++) {
+ mBand[i] = gEqualizerPresets[arg].bandConfigs[i] / 100.0f;
+ }
+ ALOGI("Preset set to %d",arg);
+ mCurPreset = arg;
+ *replyData = 0;
+ refreshBands();
+ return 0;
+ } else {
+ ALOGI("Asking to set to %d",arg);
+ }
+ }
+
+ if (cep->psize == 8 && cep->vsize == 2) {
+ int32_t cmd = ((int32_t *) cep)[3];
+ int32_t arg = ((int32_t *) cep)[4];
+
+ if (cmd == EQ_PARAM_BAND_LEVEL && arg >= 0 && arg < NUM_BANDS) {
+ *replyData = 0;
+ int16_t value = ((int16_t *) cep)[10];
+ ALOGI("Setting band %d to %d", arg, value);
+ mBand[arg] = value / 100.0f;
+ return 0;
+ }
+ }
+
+ if (cep->psize == 4 && cep->vsize >= 4 && cep->vsize <= 16) {
+ int32_t cmd = ((int32_t *) cep)[3];
+ if (cmd == EQ_PARAM_PROPERTIES) {
+ *replyData = 0;
+ if ((((int16_t *) cep)[8]) >= 0) {
+ *replyData = -EINVAL;
+ ALOGE("Asking for non-existing preset ID");
+ return 0;
+ }
+ if ((((int16_t *) cep)[9]) != NUM_BANDS) {
+ *replyData = -EINVAL;
+ ALOGE("Asking to manipulate invalid number of bands");
+ return 0;
+ }
+ for (int i = 0; i < NUM_BANDS; i++) {
+ mBand[i] = ((int16_t *) cep)[10 + i] / 100.0f;
+ }
+
+ return 0;
+ }
+ }
+
+ ALOGE("Unknown SET_PARAM size %d, %d bytes", cep->psize, cep->vsize);
+ *replyData = -EINVAL;
+ return 0;
+ }
+
+ return Effect::command(cmdCode, cmdSize, pCmdData, replySize, pReplyData);
+}
+
+/* Source material: ISO 226:2003 curves.
+ *
+ * On differencing 100 dB curves against 80 dB, 60 dB, 40 dB and 20 dB, a pattern
+ * can be established where each loss of 20 dB of power in signal suggests gradually
+ * decreasing ear sensitivity, until the bottom is reached at 20 dB SPL where no more
+ * boosting is required. Measurements end at 100 dB, which is assumed to be the reference
+ * sound pressure level.
+ *
+ * The boost can be calculated as linear scaling of the following adjustment:
+ * 20 Hz 0.0 .. 41.0 dB
+ * 62.5 Hz 0.0 .. 28.0 dB
+ * 250 Hz 0.0 .. 10.0 dB
+ * 1000 Hz 0.0 .. 0,0 dB
+ * 4000 Hz -1.0 .. -3.0 dB
+ * 16000 Hz -1.5 .. 8.0 dB
+ *
+ * The boost will be applied maximally for signals of 20 dB and less,
+ * and linearly decreased for signals 20 dB ... 100 dB, and no adjustment is
+ * made for 100 dB or higher. User must configure a reference level that maps the
+ * digital sound level against the SPL achieved in the ear.
+ */
+float EffectEqualizer::getAdjustedBand(int32_t band, float loudness) {
+ /* 1st derived by linear extrapolation from (62.5, 28) to (20, 41) */
+ const float adj_beg[NUM_BANDS] = { 0.0, 0.0, 0.0, 0.0, -1.0, -1.5 };
+ const float adj_end[NUM_BANDS] = { 42.3, 28.0, 10.0, 0.0, -3.0, 8.0 };
+
+ /* Add loudness adjustment */
+ float loudnessLevel = loudness + mLoudnessAdjustment;
+ if (loudnessLevel > 100.f) {
+ loudnessLevel = 100.f;
+ }
+ if (loudnessLevel < 20.f) {
+ loudnessLevel = 20.f;
+ }
+ /* Maximum loudness = no adj (reference behavior at 100 dB) */
+ loudnessLevel = (loudnessLevel - 20.0f) / (100.0f - 20.0f);
+
+ /* Read user setting */
+ float f = mBand[band];
+ /* Add compensation values */
+ f += adj_beg[band] + (adj_end[band] - adj_beg[band]) * (1.0f - loudnessLevel);
+ /* Account for effect smooth fade in/out */
+ return f * (mFade / 100.f);
+}
+
+void EffectEqualizer::refreshBands()
+{
+ for (int32_t band = 0; band < (NUM_BANDS - 1); band ++) {
+ /* 15.625, 62.5, 250, 1000, 4000, 16000 */
+ float centerFrequency = 15.625f * powf(4, band);
+
+ float dBL = getAdjustedBand(band + 1, mLoudnessL) - getAdjustedBand(band, mLoudnessL);
+ float overallGainL = band == 0 ? getAdjustedBand(0, mLoudnessL) : 0.0f;
+ mFilterL[band].setHighShelf(mNextUpdateInterval, centerFrequency * 2.0f, mSamplingRate, dBL, 1.0f, overallGainL);
+
+ float dBR = getAdjustedBand(band + 1, mLoudnessR) - getAdjustedBand(band, mLoudnessR);
+ float overallGainR = band == 0 ? getAdjustedBand(0, mLoudnessR) : 0.0f;
+ mFilterR[band].setHighShelf(mNextUpdateInterval, centerFrequency * 2.0f, mSamplingRate, dBR, 1.0f, overallGainR);
+ }
+}
+
+void EffectEqualizer::updateLoudnessEstimate(float& loudness, int64_t powerSquared) {
+ float signalPowerDb = 96.0f + logf(powerSquared / mNextUpdateInterval / float(int64_t(1) << 48) + 1e-10f) / logf(10.0f) * 10.0f;
+ /* Immediate rise-time, and perceptibly linear 10 dB/s decay */
+ if (loudness > signalPowerDb + 0.1f) {
+ loudness -= 0.1f;
+ } else {
+ loudness = signalPowerDb;
+ }
+}
+
+int32_t EffectEqualizer::process(audio_buffer_t *in, audio_buffer_t *out)
+{
+ for (uint32_t i = 0; i < in->frameCount; i ++) {
+ /* Update EQ? */
+ if (mNextUpdate == 0) {
+ mNextUpdate = mNextUpdateInterval;
+
+ //ALOGI("powerSqL: %lld, powerSqR: %lld", mPowerSquaredL, mPowerSquaredR);
+ updateLoudnessEstimate(mLoudnessL, mPowerSquaredL);
+ updateLoudnessEstimate(mLoudnessR, mPowerSquaredR);
+ //ALOGI("loudnessL: %f, loudnessR: %f", mLoudnessL, mLoudnessR);
+ mPowerSquaredL = 0;
+ mPowerSquaredR = 0;
+
+
+ if (mEnable && mFade < 100) {
+ mFade += 1;
+ }
+ if (! mEnable && mFade > 0) {
+ mFade -= 1;
+ }
+
+ refreshBands();
+ }
+ mNextUpdate --;
+
+ int32_t tmpL = read(in, i * 2);
+ int32_t tmpR = read(in, i * 2 + 1);
+
+ /* Update signal loudness estimate in SPL */
+ mPowerSquaredL += int64_t(tmpL) * tmpL;
+ mPowerSquaredR += int64_t(tmpR) * tmpR;
+
+ /* Evaluate EQ filters */
+ for (int32_t j = 0; j < (NUM_BANDS - 1); j ++) {
+ tmpL = mFilterL[j].process(tmpL);
+ tmpR = mFilterR[j].process(tmpR);
+ }
+
+ write(out, i * 2, tmpL);
+ write(out, i * 2 + 1, tmpR);
+ }
+
+ return mEnable || mFade != 0 ? 0 : -ENODATA;
+}
diff --git a/cyanogen-dsp/EffectEqualizer.h b/cyanogen-dsp/EffectEqualizer.h
new file mode 100644
index 0000000..c3426b6
--- /dev/null
+++ b/cyanogen-dsp/EffectEqualizer.h
@@ -0,0 +1,37 @@
+#pragma once
+
+#include <audio_effects/effect_equalizer.h>
+
+#include "Biquad.h"
+#include "Effect.h"
+
+#define CUSTOM_EQ_PARAM_LOUDNESS_CORRECTION 1000
+
+class EffectEqualizer : public Effect {
+ private:
+ float mBand[6];
+ Biquad mFilterL[5], mFilterR[5];
+
+ /* Automatic equalizer */
+ float mLoudnessAdjustment;
+
+ float mLoudnessL;
+ float mLoudnessR;
+ int32_t mNextUpdate;
+ int32_t mNextUpdateInterval;
+ int64_t mPowerSquaredL;
+ int64_t mPowerSquaredR;
+
+ /* Smooth enable/disable */
+ int32_t mFade;
+
+ void setBand(int32_t idx, float dB);
+ float getAdjustedBand(int32_t idx, float loudness);
+ void refreshBands();
+ void updateLoudnessEstimate(float& loudness, int64_t powerSquared);
+
+ public:
+ EffectEqualizer();
+ int32_t command(uint32_t cmdCode, uint32_t cmdSize, void* pCmdData, uint32_t* replySize, void* pReplyData);
+ int32_t process(audio_buffer_t *in, audio_buffer_t *out);
+};
diff --git a/cyanogen-dsp/EffectVirtualizer.cpp b/cyanogen-dsp/EffectVirtualizer.cpp
new file mode 100644
index 0000000..9e79f4e
--- /dev/null
+++ b/cyanogen-dsp/EffectVirtualizer.cpp
@@ -0,0 +1,188 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "Effect-Virtualizer"
+
+#include <cutils/log.h>
+#include <math.h>
+
+#include "EffectVirtualizer.h"
+
+typedef struct {
+ int32_t status;
+ uint32_t psize;
+ uint32_t vsize;
+ int32_t cmd;
+ int32_t data;
+} reply1x4_1x4_t;
+
+typedef struct {
+ int32_t status;
+ uint32_t psize;
+ uint32_t vsize;
+ int32_t cmd;
+ int16_t data;
+} reply1x4_1x2_t;
+
+EffectVirtualizer::EffectVirtualizer()
+ : mStrength(0)
+{
+ refreshStrength();
+}
+
+int32_t EffectVirtualizer::command(uint32_t cmdCode, uint32_t cmdSize, void* pCmdData, uint32_t* replySize, void* pReplyData)
+{
+ if (cmdCode == EFFECT_CMD_SET_CONFIG) {
+ int32_t ret = Effect::configure(pCmdData);
+ if (ret != 0) {
+ int32_t *replyData = (int32_t *) pReplyData;
+ *replyData = ret;
+ return 0;
+ }
+
+ /* Haas effect delay -- slight difference between L & R
+ * to reduce artificialness of the ping-pong. */
+ mReverbDelayL.setParameters(mSamplingRate, 0.029f);
+ mReverbDelayR.setParameters(mSamplingRate, 0.023f);
+ /* the -3 dB point is around 650 Hz, giving about 300 us to work with */
+ mLocalization.setHighShelf(0, 800.0f, mSamplingRate, -11.0f, 0.72f, 0);
+
+ mDelayDataL = 0;
+ mDelayDataR = 0;
+
+ int32_t *replyData = (int32_t *) pReplyData;
+ *replyData = 0;
+ return 0;
+ }
+
+ if (cmdCode == EFFECT_CMD_GET_PARAM) {
+ effect_param_t *cep = (effect_param_t *) pCmdData;
+ if (cep->psize == 4) {
+ int32_t cmd = ((int32_t *) cep)[3];
+ if (cmd == VIRTUALIZER_PARAM_STRENGTH_SUPPORTED) {
+ reply1x4_1x4_t *replyData = (reply1x4_1x4_t *) pReplyData;
+ replyData->status = 0;
+ replyData->vsize = 4;
+ replyData->data = 1;
+ *replySize = sizeof(reply1x4_1x4_t);
+ return 0;
+ }
+ if (cmd == VIRTUALIZER_PARAM_STRENGTH) {
+ reply1x4_1x2_t *replyData = (reply1x4_1x2_t *) pReplyData;
+ replyData->status = 0;
+ replyData->vsize = 2;
+ replyData->data = mStrength;
+ *replySize = sizeof(reply1x4_1x2_t);
+ return 0;
+ }
+ }
+
+ ALOGE("Unknown GET_PARAM of %d bytes", cep->psize);
+ effect_param_t *replyData = (effect_param_t *) pReplyData;
+ replyData->status = -EINVAL;
+ replyData->vsize = 0;
+ *replySize = sizeof(effect_param_t);
+ return 0;
+ }
+
+ if (cmdCode == EFFECT_CMD_SET_PARAM) {
+ effect_param_t *cep = (effect_param_t *) pCmdData;
+ if (cep->psize == 4 && cep->vsize == 2) {
+ int32_t cmd = ((int32_t *) cep)[3];
+ if (cmd == VIRTUALIZER_PARAM_STRENGTH) {
+ mStrength = ((int16_t *) cep)[8];
+ refreshStrength();
+ int32_t *replyData = (int32_t *) pReplyData;
+ *replyData = 0;
+ return 0;
+ }
+ }
+
+ ALOGE("Unknown SET_PARAM of %d, %d bytes", cep->psize, cep->vsize);
+ int32_t *replyData = (int32_t *) pReplyData;
+ *replyData = -EINVAL;
+ return 0;
+ }
+
+ return Effect::command(cmdCode, cmdSize, pCmdData, replySize, pReplyData);
+}
+
+void EffectVirtualizer::refreshStrength()
+{
+ mDeep = mStrength != 0;
+ mWide = mStrength >= 500;
+
+ if (mStrength != 0) {
+ float start = -15.0f;
+ float end = -5.0f;
+ float attenuation = start + (end - start) * (mStrength / 1000.0f);
+ float roomEcho = powf(10.0f, attenuation / 20.0f);
+ mLevel = int64_t(roomEcho * (int64_t(1) << 32));
+ } else {
+ mLevel = 0;
+ }
+}
+
+int32_t EffectVirtualizer::process(audio_buffer_t* in, audio_buffer_t* out)
+{
+ for (uint32_t i = 0; i < in->frameCount; i ++) {
+ /* calculate reverb wet into dataL, dataR */
+ int32_t dryL = read(in, i * 2);
+ int32_t dryR = read(in, i * 2 + 1);
+ int32_t dataL = dryL;
+ int32_t dataR = dryR;
+
+ if (mDeep) {
+ /* Note: a pinking filter here would be good. */
+ dataL += mDelayDataR;
+ dataR += mDelayDataL;
+ }
+
+ dataL = mReverbDelayL.process(dataL);
+ dataR = mReverbDelayR.process(dataR);
+
+ if (mWide) {
+ dataR = -dataR;
+ }
+
+ dataL = dataL * mLevel >> 32;
+ dataR = dataR * mLevel >> 32;
+
+ mDelayDataL = dataL;
+ mDelayDataR = dataR;
+
+ /* Reverb wet done; mix with dry and do headphone virtualization */
+ dataL += dryL;
+ dataR += dryR;
+
+ /* Center channel. */
+ int32_t center = (dataL + dataR) >> 1;
+ /* Direct radiation components. */
+ int32_t side = (dataL - dataR) >> 1;
+
+ /* Adjust derived center channel coloration to emphasize forward
+ * direction impression. (XXX: disabled until configurable). */
+ //center = mColorization.process(center);
+ /* Sound reaching ear from the opposite speaker */
+ side -= mLocalization.process(side);
+
+ write(out, i * 2, center + side);
+ write(out, i * 2 + 1, center - side);
+ }
+
+ return mEnable ? 0 : -ENODATA;
+}
+
diff --git a/cyanogen-dsp/EffectVirtualizer.h b/cyanogen-dsp/EffectVirtualizer.h
new file mode 100644
index 0000000..2660858
--- /dev/null
+++ b/cyanogen-dsp/EffectVirtualizer.h
@@ -0,0 +1,28 @@
+#pragma once
+
+#include <audio_effects/effect_virtualizer.h>
+
+#include "Biquad.h"
+#include "Delay.h"
+#include "Effect.h"
+#include "FIR16.h"
+
+class EffectVirtualizer : public Effect {
+ private:
+ int16_t mStrength;
+
+ bool mDeep, mWide;
+ int64_t mLevel;
+
+ Delay mReverbDelayL, mReverbDelayR;
+ int64_t mDelayDataL, mDelayDataR;
+ Biquad mLocalization;
+
+ void refreshStrength();
+
+ public:
+ EffectVirtualizer();
+
+ int32_t command(uint32_t cmdCode, uint32_t cmdSize, void* pCmdData, uint32_t* replySize, void* pReplyData);
+ int32_t process(audio_buffer_t *in, audio_buffer_t *out);
+};
diff --git a/cyanogen-dsp/FIR16.cpp b/cyanogen-dsp/FIR16.cpp
new file mode 100644
index 0000000..5fad45e
--- /dev/null
+++ b/cyanogen-dsp/FIR16.cpp
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "FIR16.h"
+
+#include <string.h>
+
+FIR16::FIR16()
+ : mIndex(0)
+{
+ memset(mState, 0, sizeof(mState));
+ memset(mCoeff, 0, sizeof(mCoeff));
+}
+
+FIR16::~FIR16()
+{
+}
+
+void FIR16::setParameters(float coeff[16])
+{
+ for (int32_t i = 0; i < 16; i ++) {
+ mCoeff[i] = int64_t(coeff[i] * (int64_t(1) << 32));
+ }
+}
+
+int32_t FIR16::process(int32_t x0)
+{
+ mIndex --;
+ mState[mIndex & 0xf] = x0;
+
+ int64_t y = 0;
+ for (int32_t i = 0; i < 16; i ++) {
+ y += mCoeff[i] * mState[(i + mIndex) & 0xf];
+ }
+
+ return int32_t(y >> 32);
+}
diff --git a/cyanogen-dsp/FIR16.h b/cyanogen-dsp/FIR16.h
new file mode 100644
index 0000000..976a211
--- /dev/null
+++ b/cyanogen-dsp/FIR16.h
@@ -0,0 +1,15 @@
+#pragma once
+
+#include <stdint.h>
+
+class FIR16 {
+ int64_t mCoeff[16];
+ int32_t mState[16];
+ int32_t mIndex;
+
+ public:
+ FIR16();
+ ~FIR16();
+ void setParameters(float coeff[16]);
+ int32_t process(int32_t x0);
+};
diff --git a/cyanogen-dsp/audio_effects.conf b/cyanogen-dsp/audio_effects.conf
new file mode 100644
index 0000000..0399b0a
--- /dev/null
+++ b/cyanogen-dsp/audio_effects.conf
@@ -0,0 +1,146 @@
+# List of effect libraries to load. Each library element must contain a "path" element
+# giving the full path of the library .so file.
+# libraries {
+# <lib name> {
+# path <lib path>
+# }
+# }
+libraries {
+ bundle {
+ path /system/lib/soundfx/libbundlewrapper.so
+ }
+ cm {
+ path /system/lib/soundfx/libcyanogen-dsp.so
+ }
+ reverb {
+ path /system/lib/soundfx/libreverbwrapper.so
+ }
+ visualizer {
+ path /system/lib/soundfx/libvisualizer.so
+ }
+ pre_processing {
+ path /system/lib/soundfx/libaudiopreprocessing.so
+ }
+ downmix {
+ path /system/lib/soundfx/libdownmix.so
+ }
+}
+
+# list of effects to load. Each effect element must contain a "library" and a "uuid" element.
+# The value of the "library" element must correspond to the name of one library element in the
+# "libraries" element.
+# The name of the effect element is indicative, only the value of the "uuid" element
+# designates the effect.
+# The uuid is the implementation specific UUID as specified by the effect vendor. This is not the
+# generic effect type UUID.
+# effects {
+# <fx name> {
+# library <lib name>
+# uuid <effect uuid>
+# }
+# ...
+# }
+
+effects {
+ compression {
+ library cm
+ uuid f27317f4-c984-4de6-9a90-545759495bf2
+ }
+ bassboost {
+# library bundle
+# uuid 8631f300-72e2-11df-b57e-0002a5d5c51b
+ library cm
+ uuid 42b5cbf5-4dd8-4e79-a5fb-cceb2cb54e13
+ }
+ virtualizer {
+# library bundle
+# uuid 1d4033c0-8557-11df-9f2d-0002a5d5c51b
+ library cm
+ uuid 7c6cc5f8-6f34-4449-a282-bed84f1a5b5a
+ }
+ equalizer {
+# library bundle
+# uuid ce772f20-847d-11df-bb17-0002a5d5c51b
+ library cm
+ uuid 58bc9000-0d7f-462e-90d2-035eddd8b434
+ }
+ volume {
+ library bundle
+ uuid 119341a0-8469-11df-81f9-0002a5d5c51b
+ }
+ reverb_env_aux {
+ library reverb
+ uuid 4a387fc0-8ab3-11df-8bad-0002a5d5c51b
+ }
+ reverb_env_ins {
+ library reverb
+ uuid c7a511a0-a3bb-11df-860e-0002a5d5c51b
+ }
+ reverb_pre_aux {
+ library reverb
+ uuid f29a1400-a3bb-11df-8ddc-0002a5d5c51b
+ }
+ reverb_pre_ins {
+ library reverb
+ uuid 172cdf00-a3bc-11df-a72f-0002a5d5c51b
+ }
+ visualizer {
+ library visualizer
+ uuid d069d9e0-8329-11df-9168-0002a5d5c51b
+ }
+ downmix {
+ library downmix
+ uuid 93f04452-e4fe-41cc-91f9-e475b6d1d69f
+ }
+ agc {
+ library pre_processing
+ uuid aa8130e0-66fc-11e0-bad0-0002a5d5c51b
+ }
+ aec {
+ library pre_processing
+ uuid bb392ec0-8d4d-11e0-a896-0002a5d5c51b
+ }
+ ns {
+ library pre_processing
+ uuid c06c8400-8e06-11e0-9cb6-0002a5d5c51b
+ }
+}
+# Audio preprocessor configurations.
+# The pre processor configuration consists in a list of elements each describing
+# pre processor settings for a given input source. Valid input source names are:
+# "mic", "camcorder", "voice_recognition", "voice_communication"
+# Each input source element contains a list of effects elements. The name of the effect
+# element must be the name of one of the effects in the "effects" list of the file.
+# Each effect element may optionally contain a list of parameters and their
+# default value to apply when the pre processor effect is created.
+# A parameter is defined by a "param" element and a "value" element. Each of these elements
+# consists in one or more elements specifying a type followed by a value.
+# The types defined are: "int", "short", "float", "bool" and "string"
+# When both "param" and "value" are a single int, a simple form is allowed where just
+# the param and value pair is present in the parameter description
+# pre_processing {
+# <input source name> {
+# <fx name> {
+# <param 1 name> {
+# param {
+# int|short|float|bool|string <value>
+# [ int|short|float|bool|string <value> ]
+# ...
+# }
+# value {
+# int|short|float|bool|string <value>
+# [ int|short|float|bool|string <value> ]
+# ...
+# }
+# }
+# <param 2 name > {<param> <value>}
+# ...
+# }
+# ...
+# }
+# ...
+# }
+
+#
+# TODO: add default audio pre processor configurations after debug and tuning phase
+#
diff --git a/cyanogen-dsp/cyanogen-dsp.cpp b/cyanogen-dsp/cyanogen-dsp.cpp
new file mode 100644
index 0000000..863909a
--- /dev/null
+++ b/cyanogen-dsp/cyanogen-dsp.cpp
@@ -0,0 +1,185 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "DSP-entry"
+
+#include <cutils/log.h>
+#include <string.h>
+#include <media/AudioEffect.h>
+#include <hardware/audio_effect.h>
+#include <audio_effects/effect_bassboost.h>
+#include <audio_effects/effect_equalizer.h>
+#include <audio_effects/effect_virtualizer.h>
+
+#include "Effect.h"
+#include "EffectBassBoost.h"
+#include "EffectCompression.h"
+#include "EffectEqualizer.h"
+#include "EffectVirtualizer.h"
+
+static effect_descriptor_t compression_descriptor = {
+ { 0x09e8ede0, 0xddde, 0x11db, 0xb4f6, { 0x00, 0x02, 0xa5, 0xd5, 0xc5, 0x1b } }, // SL_IID_VOLUME
+ { 0xf27317f4, 0xc984, 0x4de6, 0x9a90, { 0x54, 0x57, 0x59, 0x49, 0x5b, 0xf2 } }, // own UUID
+ EFFECT_CONTROL_API_VERSION,
+ EFFECT_FLAG_INSERT_FIRST | EFFECT_FLAG_VOLUME_CTRL,
+ 10, /* 1 MIPS. FIXME: should be measured. */
+ 1,
+ "CyanogenMod's Dynamic Range Compression",
+ "Antti S. Lankila"
+};
+
+static effect_descriptor_t virtualizer_descriptor = {
+ *SL_IID_VIRTUALIZER,
+ { 0x7c6cc5f8, 0x6f34, 0x4449, 0xa282, { 0xbe, 0xd8, 0x4f, 0x1a, 0x5b, 0x5a } }, // own UUID
+ EFFECT_CONTROL_API_VERSION,
+ EFFECT_FLAG_INSERT_LAST,
+ 10, /* 1 MIPS. FIXME: should be measured. */
+ 1,
+ "CyanogenMod's Headset Virtualization",
+ "Antti S. Lankila"
+};
+
+static effect_descriptor_t equalizer_descriptor = {
+ *SL_IID_EQUALIZER,
+ { 0x58bc9000, 0x0d7f, 0x462e, 0x90d2, { 0x03, 0x5e, 0xdd, 0xd8, 0xb4, 0x34 } }, // own UUID
+ EFFECT_CONTROL_API_VERSION,
+ 0,
+ 10, /* 1 MIPS. FIXME: should be measured. */
+ 1,
+ "CyanogenMod's Equalizer",
+ "Antti S. Lankila"
+};
+
+static effect_descriptor_t bassboost_descriptor = {
+ *SL_IID_BASSBOOST,
+ { 0x42b5cbf5, 0x4dd8, 0x4e79, 0xa5fb, { 0xcc, 0xeb, 0x2c, 0xb5, 0x4e, 0x13 } }, // own UUID
+ EFFECT_CONTROL_API_VERSION,
+ 0,
+ 10, /* 1 MIPS. FIXME: should be measured. */
+ 1,
+ "CyanogenMod's Bass Boost",
+ "Antti S. Lankila"
+};
+
+/* Library mandatory methods. */
+extern "C" {
+
+struct effect_module_s {
+ const struct effect_interface_s *itfe;
+ Effect *effect;
+ effect_descriptor_t *descriptor;
+};
+
+static int32_t generic_process(effect_handle_t self, audio_buffer_t *in, audio_buffer_t *out) {
+ struct effect_module_s *e = (struct effect_module_s *) self;
+ return e->effect->process(in, out);
+}
+
+static int32_t generic_command(effect_handle_t self, uint32_t cmdCode, uint32_t cmdSize, void *pCmdData, uint32_t *replySize, void *pReplyData) {
+ struct effect_module_s *e = (struct effect_module_s *) self;
+ return e->effect->command(cmdCode, cmdSize, pCmdData, replySize, pReplyData);
+}
+
+static int32_t generic_getDescriptor(effect_handle_t self, effect_descriptor_t *pDescriptor) {
+ struct effect_module_s *e = (struct effect_module_s *) self;
+ memcpy(pDescriptor, e->descriptor, sizeof(effect_descriptor_t));
+ return 0;
+}
+
+static const struct effect_interface_s generic_interface = {
+ generic_process,
+ generic_command,
+ generic_getDescriptor,
+ NULL
+};
+
+int32_t EffectCreate(const effect_uuid_t *uuid, int32_t sessionId, int32_t ioId, effect_handle_t *pEffect) {
+ if (memcmp(uuid, &compression_descriptor.uuid, sizeof(effect_uuid_t)) == 0) {
+ struct effect_module_s *e = (struct effect_module_s *) calloc(1, sizeof(struct effect_module_s));
+ e->itfe = &generic_interface;
+ e->effect = new EffectCompression();
+ e->descriptor = &compression_descriptor;
+ *pEffect = (effect_handle_t) e;
+ return 0;
+ }
+ if (memcmp(uuid, &equalizer_descriptor.uuid, sizeof(effect_uuid_t)) == 0) {
+ struct effect_module_s *e = (struct effect_module_s *) calloc(1, sizeof(struct effect_module_s));
+ e->itfe = &generic_interface;
+ e->effect = new EffectEqualizer();
+ e->descriptor = &equalizer_descriptor;
+ *pEffect = (effect_handle_t) e;
+ return 0;
+ }
+ if (memcmp(uuid, &virtualizer_descriptor.uuid, sizeof(effect_uuid_t)) == 0) {
+ struct effect_module_s *e = (struct effect_module_s *) calloc(1, sizeof(struct effect_module_s));
+ e->itfe = &generic_interface;
+ e->effect = new EffectVirtualizer();
+ e->descriptor = &virtualizer_descriptor;
+ *pEffect = (effect_handle_t) e;
+ return 0;
+ }
+ if (memcmp(uuid, &bassboost_descriptor.uuid, sizeof(effect_uuid_t)) == 0) {
+ struct effect_module_s *e = (struct effect_module_s *) calloc(1, sizeof(struct effect_module_s));
+ e->itfe = &generic_interface;
+ e->effect = new EffectBassBoost();
+ e->descriptor = &bassboost_descriptor;
+ *pEffect = (effect_handle_t) e;
+ return 0;
+ }
+
+ return -EINVAL;
+}
+
+int32_t EffectRelease(effect_handle_t ei) {
+ struct effect_module_s *e = (struct effect_module_s *) ei;
+ delete e->effect;
+ free(e);
+ return 0;
+}
+
+int32_t EffectGetDescriptor(const effect_uuid_t *uuid, effect_descriptor_t *pDescriptor) {
+ if (memcmp(uuid, &compression_descriptor.uuid, sizeof(effect_uuid_t)) == 0) {
+ memcpy(pDescriptor, &compression_descriptor, sizeof(effect_descriptor_t));
+ return 0;
+ }
+ if (memcmp(uuid, &equalizer_descriptor.uuid, sizeof(effect_uuid_t)) == 0) {
+ memcpy(pDescriptor, &equalizer_descriptor, sizeof(effect_descriptor_t));
+ return 0;
+ }
+ if (memcmp(uuid, &virtualizer_descriptor.uuid, sizeof(effect_uuid_t)) == 0) {
+ memcpy(pDescriptor, &virtualizer_descriptor, sizeof(effect_descriptor_t));
+ return 0;
+
+ }
+ if (memcmp(uuid, &bassboost_descriptor.uuid, sizeof(effect_uuid_t)) == 0) {
+ memcpy(pDescriptor, &bassboost_descriptor, sizeof(effect_descriptor_t));
+ return 0;
+ }
+
+ return -EINVAL;
+}
+
+audio_effect_library_t AUDIO_EFFECT_LIBRARY_INFO_SYM = {
+ tag : AUDIO_EFFECT_LIBRARY_TAG,
+ version : EFFECT_LIBRARY_API_VERSION,
+ name : "CyanogenMod's Effect Library",
+ implementor : "Antti S. Lankila",
+ create_effect : EffectCreate,
+ release_effect : EffectRelease,
+ get_descriptor : EffectGetDescriptor,
+};
+
+}
diff --git a/lint.xml b/lint.xml
new file mode 100644
index 0000000..7a294d4
--- /dev/null
+++ b/lint.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<lint>
+ <!-- Enable selected checks that are disabled by default. These should help devs fix minor mistakes.-->
+ <issue id="FieldGetter" severity="warning" />
+ <issue id="IconExpectedSize" severity="warning" />
+ <issue id="TypographyQuotes" severity="warning" />
+
+ <!-- Suppress UsesMinSdkAttributes since we know what version we are building for -->
+ <issue id="UsesMinSdkAttributes" severity="ignore" />
+
+ <issue id="LintError" severity="ignore" />
+
+</lint>
diff --git a/proguard.flags b/proguard.flags
new file mode 100644
index 0000000..3725966
--- /dev/null
+++ b/proguard.flags
@@ -0,0 +1 @@
+-dontshrink
diff --git a/res/drawable-hdpi/icon.png b/res/drawable-hdpi/icon.png
new file mode 100644
index 0000000..a91b43f
--- /dev/null
+++ b/res/drawable-hdpi/icon.png
Binary files differ
diff --git a/res/drawable-hdpi/vp_background_texture.png b/res/drawable-hdpi/vp_background_texture.png
new file mode 100644
index 0000000..4b61fb2
--- /dev/null
+++ b/res/drawable-hdpi/vp_background_texture.png
Binary files differ
diff --git a/res/drawable-ldpi/icon.png b/res/drawable-ldpi/icon.png
new file mode 100644
index 0000000..b498d38
--- /dev/null
+++ b/res/drawable-ldpi/icon.png
Binary files differ
diff --git a/res/drawable-mdpi/icon.png b/res/drawable-mdpi/icon.png
new file mode 100644
index 0000000..5b61b56
--- /dev/null
+++ b/res/drawable-mdpi/icon.png
Binary files differ
diff --git a/res/drawable-mdpi/vp_background_texture.png b/res/drawable-mdpi/vp_background_texture.png
new file mode 100644
index 0000000..4b61fb2
--- /dev/null
+++ b/res/drawable-mdpi/vp_background_texture.png
Binary files differ
diff --git a/res/drawable-xhdpi/icon.png b/res/drawable-xhdpi/icon.png
new file mode 100644
index 0000000..8f1f168
--- /dev/null
+++ b/res/drawable-xhdpi/icon.png
Binary files differ
diff --git a/res/drawable-xhdpi/vp_background_texture.png b/res/drawable-xhdpi/vp_background_texture.png
new file mode 100644
index 0000000..76aab7c
--- /dev/null
+++ b/res/drawable-xhdpi/vp_background_texture.png
Binary files differ
diff --git a/res/drawable/pager_background.xml b/res/drawable/pager_background.xml
new file mode 100644
index 0000000..bbb86f5
--- /dev/null
+++ b/res/drawable/pager_background.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+ android:src="@drawable/vp_background_texture"
+ android:tileMode="repeat" />
diff --git a/res/drawable/top_shadow.xml b/res/drawable/top_shadow.xml
new file mode 100644
index 0000000..1687e81
--- /dev/null
+++ b/res/drawable/top_shadow.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle" >
+
+ <gradient
+ android:angle="270"
+ android:endColor="#00000000"
+ android:startColor="#ff000000" />
+
+</shape>
diff --git a/res/layout/equalizer.xml b/res/layout/equalizer.xml
new file mode 100644
index 0000000..9a3dc0d
--- /dev/null
+++ b/res/layout/equalizer.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_height="200px"
+ android:layout_gravity="center"
+ android:layout_width="match_parent">
+
+ <com.bel.android.dspmanager.preference.EqualizerSurface
+ android:id="@+id/FrequencyResponse"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent" />
+
+</LinearLayout>
diff --git a/res/layout/equalizer_popup.xml b/res/layout/equalizer_popup.xml
new file mode 100644
index 0000000..6f06e17
--- /dev/null
+++ b/res/layout/equalizer_popup.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="300px">
+
+ <com.bel.android.dspmanager.preference.EqualizerSurface
+ android:id="@+id/FrequencyResponse"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+
+</LinearLayout>
diff --git a/res/layout/help.xml b/res/layout/help.xml
new file mode 100644
index 0000000..f065b8c
--- /dev/null
+++ b/res/layout/help.xml
@@ -0,0 +1,11 @@
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <TextView
+ android:id="@+id/help"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:padding="5pt" />
+
+</ScrollView>
diff --git a/res/layout/preference_dialog_bass_boost.xml b/res/layout/preference_dialog_bass_boost.xml
new file mode 100644
index 0000000..66cea68
--- /dev/null
+++ b/res/layout/preference_dialog_bass_boost.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <RelativeLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:paddingBottom="20dip">
+
+ <TextView android:id="@+id/bass_boost_gain_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/pref_wm8994_bass_boost_gain_dlg_desc"
+ android:paddingTop="10dip"
+ android:paddingLeft="20dip"
+ android:paddingRight="20dip" />
+ <TextView android:id="@+id/bass_boost_gain_value"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:paddingTop="10dip"
+ android:paddingLeft="20dip"
+ android:paddingRight="20dip" />
+ <SeekBar android:id="@+id/bass_boost_gain_seekbar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/bass_boost_gain_text"
+ android:paddingTop="2dip"
+ android:paddingLeft="20dip"
+ android:paddingRight="20dip" />
+
+ <TextView android:id="@+id/bass_boost_range_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@+id/bass_boost_gain_seekbar"
+ android:text="@string/pref_wm8994_bass_boost_range_dlg_desc"
+ android:paddingTop="10dip"
+ android:paddingLeft="20dip"
+ android:paddingRight="20dip" />
+ <TextView android:id="@+id/bass_boost_range_value"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@+id/bass_boost_gain_seekbar"
+ android:layout_alignParentRight="true"
+ android:paddingTop="10dip"
+ android:paddingLeft="20dip"
+ android:paddingRight="20dip" />
+ <SeekBar android:id="@+id/bass_boost_range_seekbar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/bass_boost_range_text"
+ android:paddingTop="2dip"
+ android:paddingLeft="20dip"
+ android:paddingRight="20dip" />
+
+ </RelativeLayout>
+</ScrollView>
diff --git a/res/layout/preference_dialog_headphone_amplifier_level.xml b/res/layout/preference_dialog_headphone_amplifier_level.xml
new file mode 100644
index 0000000..0de4498
--- /dev/null
+++ b/res/layout/preference_dialog_headphone_amplifier_level.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <RelativeLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:paddingBottom="20dip">
+
+ <TextView android:id="@+id/headphone_amplifier_level_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/pref_wm8994_headphone_amp_dlg_desc"
+ android:paddingTop="10dip"
+ android:paddingLeft="20dip"
+ android:paddingRight="20dip" />
+ <TextView android:id="@+id/headphone_amplifier_level_value"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:paddingTop="10dip"
+ android:paddingLeft="20dip"
+ android:paddingRight="20dip" />
+ <SeekBar android:id="@+id/headphone_amplifier_level_seekbar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/headphone_amplifier_level_text"
+ android:paddingTop="2dip"
+ android:paddingLeft="20dip"
+ android:paddingRight="20dip" />
+
+ </RelativeLayout>
+</ScrollView>
diff --git a/res/layout/top.xml b/res/layout/top.xml
new file mode 100644
index 0000000..e2690b3
--- /dev/null
+++ b/res/layout/top.xml
@@ -0,0 +1,28 @@
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent">
+
+ <android.support.v4.view.ViewPager
+ android:id="@+id/viewPager"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <android.support.v4.view.PagerTabStrip
+ android:id="@+id/pagerTabStrip"
+ android:layout_width="wrap_content"
+ android:layout_height="30dp"
+ android:layout_gravity="top"
+ android:textColor="@android:color/holo_blue_light"
+ android:background="@drawable/pager_background"
+ android:textSize="12sp"
+ android:textStyle="bold" />
+
+ </android.support.v4.view.ViewPager>
+
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="5dp"
+ android:background="@drawable/top_shadow" />
+
+</FrameLayout>
+
diff --git a/res/menu/menu.xml b/res/menu/menu.xml
new file mode 100644
index 0000000..e1f4c3a
--- /dev/null
+++ b/res/menu/menu.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:id="@+id/help"
+ android:title="@string/help_title"
+ android:icon="@android:drawable/ic_menu_help" />
+</menu>
diff --git a/res/values-af/arrays.xml b/res/values-af/arrays.xml
new file mode 100644
index 0000000..f2684e2
--- /dev/null
+++ b/res/values-af/arrays.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>Oorspronklik</item>
+ <item>Gebalanseerd</item>
+ <item>Hoë sensitiwiteit</item>
+ <item>Luide omgewing</item>
+ </string-array>
+
+ <string-array name="headphone_modes">
+ <item>Ateljee</item>
+ <item>Kamer</item>
+ <item>Groot kamer</item>
+ <item>Verhoog</item>
+ </string-array>
+
+
+ <string-array name="equalizer_loudness_modes">
+ <item>Deaktiveer</item>
+ <item>Swakste</item>
+ <item>Swakker</item>
+ <item>Swak</item>
+ <item>Sterk</item>
+ <item>Sterker</item>
+ <item>Sterkste</item>
+ </string-array>
+
+ <string-array name="compression_modes">
+ <item>Effens</item>
+ <item>Matig</item>
+ <item>Uiters</item>
+ </string-array>
+
+ <string-array name="bassboost_modes">
+ <item>Effens</item>
+ <item>Matig</item>
+ <item>Uiters</item>
+ </string-array>
+
+ <string-array name="wm8994_bassboost_modes">
+ <item>Standaard</item>
+ <item>Klein luidsprekers</item>
+ </string-array>
+</resources>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
new file mode 100644
index 0000000..7a25490
--- /dev/null
+++ b/res/values-af/strings.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name">DSV Bestuurder</string>
+ <string name="select_configuration_title">Kies konfigurasie om te verander</string>
+ <string name="headset_title">Oorfone</string>
+ <string name="speaker_title">Luidspreker</string>
+ <string name="bluetooth_title">Bluetooth</string>
+ <string name="usb_title">USB/Dok</string>
+ <string name="audio_effects">Klank effekte</string>
+ <string name="pref_unavailable">Nie beskikbaar op toestel nie</string>
+ <string name="dsp_settings_headset">DSV instellings - Oorfone</string>
+ <string name="dsp_settings_speaker">DSV instellings - Luidspreker</string>
+ <string name="dsp_settings_bluetooth">DSV instellings - Bluetooth</string>
+ <string name="dsp_settings_usb">DSV instellings - USB toestel</string>
+ <string name="dsp_settings_wm8994">DSV instellings - WM8994</string>
+ <string name="pref_dsp_title">Dinamiese bereik kompressie</string>
+ <string name="pref_dsp_summary_on">Kompressie geaktiveer</string>
+ <string name="pref_dsp_summary_off">Kompressie gedeaktiveer</string>
+ <string name="pref_dsp_enable">Aktiveer</string>
+ <string name="pref_effect_title">Kies effek sterkte</string>
+ <string name="dialog_effect">Effek sterkte</string>
+ <string name="pref_equalizer_title">Gelykmaker</string>
+ <string name="pref_equalizer_summary_on">Gelykmaker geaktiveer</string>
+ <string name="pref_equalizer_summary_off">Gelykmaker gedeaktiveer</string>
+ <string name="pref_equalizer_enable">Aktiveer</string>
+ <string name="pref_equalizer_preset_title">Kies voorafstelling</string>
+ <string name="pref_equalizer_loudness_title">Hardheid kompensasie</string>
+ <string name="pref_bassboost_title">Versterk bas</string>
+ <string name="pref_bassboost_summary_on">Versterking geaktiveer</string>
+ <string name="pref_bassboost_summary_off">Versterking gedeaktiveer</string>
+ <string name="pref_bassboost_enable">Aktiveer</string>
+ <string name="pref_headset_virtual_title">Oorfone virtuele kamer effek</string>
+ <string name="pref_headset_virtual_summary_on">Virtuele kamer geaktiveer</string>
+ <string name="pref_headset_virtual_summary_off">Virtuele kamer gedeaktiveer</string>
+ <string name="pref_headset_virtual_enable">Aktiveer</string>
+ <string name="pref_room_title">Kies kamer tipe</string>
+ <string name="dialog_room">Kamer tipe</string>
+ <string name="menu_reset">Herstel</string>
+ <string name="eq_preset_acoustic">Akoesties</string>
+ <string name="eq_preset_bass_booster">Versterkte bas</string>
+ <string name="eq_preset_bass_reducer">Verminderde bas</string>
+ <string name="eq_preset_classical">Klassiek</string>
+ <string name="eq_preset_deep">Diep</string>
+ <string name="eq_preset_flat">Plat</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">Rock</string>
+ <string name="eq_preset_small_speakers">Klein luidsprekers</string>
+ <string name="eq_preset_treble_booster">Versterkte sopraan</string>
+ <string name="eq_preset_treble_reducer">Verminderde sopraan</string>
+ <string name="eq_preset_vocal_booster">Vokale versterking</string>
+ <string name="eq_preset_custom">Persoonlik</string>
+ <string name="category_wm8994_internal_speaker">Luidspreker</string>
+ <string name="category_wm8994_signal_processing">Sein prosessering</string>
+ <string name="category_wm8994_headphone_amp">Oorfone</string>
+ <string name="category_wm8994_codec_optimization">Kodering optimalisering</string>
+ <string name="category_wm8994_dac_config">Digitaal/Analoog omskakelaar instellings</string>
+ <string name="category_wm8994_analog_path">Analoog konfigurasie</string>
+ <string name="category_wm8994_mic_settings">Mikrofoon instellings</string>
+ <string name="category_wm8994_microphone_recording">Mikrofoon</string>
+ <string name="wm8994_settings_title_head">Klank instellings</string>
+ <string name="wm8994_settings_title_subhead">Klank instellings</string>
+ <string name="wm8994_settings_summary_head">Gevorderde beheer van die WM8994 klank verwerker</string>
+ <string name="pref_wm8994_microphone_recording_title">Opnames</string>
+ <string name="pref_wm8994_headphone_amp_title">Versterker vlak</string>
+ <string name="pref_wm8994_headphone_amp_summary">Verander analoog versterking</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Oorfone vlak versterker</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Analoog versterking</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Bas versterker</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Gevorderde bas versterker beheer</string>
+ <string name="pref_wm8994_bass_boost_title">Bas versterker reeks</string>
+ <string name="pref_wm8994_bass_boost_summary">Gevorderde dinamiese omvang beheer</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Voorafgestelde bas versterker instellings</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Bas versterker</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Versterk</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Bas versterker reeks</string>
+ <string name="pref_wm8994_control_enable_title">Aktiveer WM8994 beheer</string>
+ <string name="pref_wm8994_control_enable_summary">Gevorderde WM8994 klank verwerker beheer</string>
+ <string name="pref_wm8994_speaker_tuning_title">Musiek instemming</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Herkonfigureer die hardeware gelykmaker (\'EQ\') vir meer bas en gebalanseerde klank</string>
+ <string name="pref_wm8994_mono_downmix_title">Mono \'downmix\'</string>
+ <string name="pref_wm8994_mono_downmix_summary">\'Downmix\' stereo klank na mono (vir stereo uitsette soos oorfone)</string>
+ <string name="pref_wm8994_stereo_expansion_title">Stereo uitbreiding</string>
+ <string name="pref_wm8994_stereo_expansion_summary">Stereo klank uitbreiding via digitale seinverwerking</string>
+ <string name="pref_wm8994_dac_direct_title">D/AC direk</string>
+ <string name="pref_wm8994_dac_direct_summary">Verkry direkte toegang tot die Digitaal/Analoog omskakelaar en vermy die kanaal menger. Produseer skoner klank (hoër sein-tot-ruis verhouding)</string>
+ <string name="pref_wm8994_dac_osr128_title">Hoëtrou terugspeel</string>
+ <string name="pref_wm8994_dac_osr128_summary">Digitaal-na-analoog omskakelaar 128x oormonstering — skoner klank wanneer musiek gespeel word</string>
+ <string name="pref_wm8994_adc_osr128_title">Hoëtrou opnames</string>
+ <string name="pref_wm8994_adc_osr128_summary">Analoog-na-digitaal omskakelaar 128x oormonstering — verhoog gehalte van opnames</string>
+ <string name="pref_wm8994_fll_tuning_title">Ingestemde klank-klok</string>
+ <string name="pref_wm8994_fll_tuning_summary">Gebruik ingestemde WM8994 klank-klok bron — verhoog kwaliteit van die klank</string>
+ <string name="help_title">Aangaande</string>
+ <string name="help_text"><b>Wat is DSV Bestuurder?</b> <!-- Translation done by Brand van Sittert -->
+\n\n
+DSV Bestuurder is \'n per-uitsettings klank aanpassings program. <i>DSV</i> staan vir Digitale Sein Verwerking
+(\'Digital Signal Processing (DSP)\'), en die <i>Bestuurder</i> gedeelte verwys na die feit dat die DSV in
+werklikheid nie van binne die program self uitgevoer word nie; die bestuurder kan dit slegs in werking
+stel vir programme wat voldoen aan Android se klank effek spesifikasies,
+d.w.s. die meeste Android aanpasbare musiek spelers.
+\n\n\n
+<b>Filosofie</b>
+\n\n
+CyanogenMod se klank verwerking ondersteun drie verskillende uitset kategorieë:
+bedrade oorfoone, foon luidspreker en Bluetooth oorfone. Daar is \'n aparte
+verstellings paneel vir elke uitset kategorie. DSV Bestuurder se filosofie is om
+elke klank uitset se bepaalde leemtes reg te stel ten einde
+die mees optimale luister ervaring met elkeen te bereik.
+\n\n
+Anders as met \'AOSP\' klank effekte, is daar geen per-program instellings nie. Hierdie is \'n
+doelbewuste ontwerp keuse: dit is die uitset waarin ons belangstel, nie watter program
+se klank die DSV Bestuurder mee werk nie.
+\n\n\n
+<b>Kenmerke</b>
+\n\n
+1. <b>Dinamiese Reeks Samepersing (DRS)</b>
+\n\n
+Hierdie effek beraam die hardheid van die klank soos waargeneem deur \'n gemiddelde
+luisteraar en dryf \'n verkrygings kontrole gabasseer op hierdie beraming. Die
+hoof gebruikersgeval is met lawaaierige omgewings soos in \'n kar of in die straat,
+waar sagte gedeeltes van musiek die gevaar loop om verswelg te word deur agtergrond lawaai.
+\n\n
+Die enkel verstelbare bepaal hoe hard DSV Bestuurder sal probeer om die audio hardheid
+op die teikenvlak te behou. Daar is geen \'AOSP\' ekwivalent vir hierdie DSP effek nie.
+\n\n\n
+2. <b>Bas Versterking</b>
+\n\n
+Die Bas Versterking is \'n eenvoudige laagdeurlaatfilter wat gebruik kan word om klem by
+frekwesies van 55 Hz en laer te voeg. Die versterking is omtrent 6 dB, en word aangepas
+deur die \'strength\' parameter, wat filter resonansie by die 55 Hz band voeg, en
+daardeur ekstra klem lê op daardie frekwensie. Die effek is ontwerp om die verlies van
+bas frekwensie wat algemeen by klein luidsprekers en supra-aurale (bo die oor)
+oorfone voorkom wat nie stewig koppel met die gebruiker se oorkanaal nie te beveg.
+\n\n\n
+3. <b>Gelykmaker</b>
+\n\n
+Dit is \'n 6-band gelykmaker met \'n band op 16, 64, 250, 1000, 4000 en 16000 Hz.
+Sommige algemene vooruitinstellings word voorsien, en die frekwensie reaksie kan
+ook doelgemaak word deur op die gelykmaker grafiek te tik. Die frekwensie moet
+gebruik word om die frekwensie in te stem op die gebruiker se persoonlike smaak,
+of op die spesifieke vermoë van die beskikbare oorfone of luidsprekers.
+\n\n
+Gelykmaker bevat ook \'n hardheids kompenserings filter, wat die veranderinge in
+die oor frekwensie reaksie gelyk maak gebaseer op die klank drukvlak wat die
+gebruiker se oor bereik. Die gebruik van bedrade oorfone word benodig, en die
+sterkte parameter waarde moet korrek ingestem wees voor die effek sal werk soos
+ontwerp.
+\n\n
+Om die regte waarde vir die kompensasie sterkte te kies, gebruik die sagste musiek
+volume, en kies breë spektrum raserige musiek soos rock of metal. Probeer om \'n
+instelling te vind waar die bas versterk word totdat dit gehoor kan word en
+gebalanseerd voorkom met die res van die materiaal. Nadat die kompensasie korrek
+ingestel is, moet die bas op die selfde vlak bly relatief tot die ander instrumente
+ongeag die luister vlak. Aan die ander kant, as die musiek begin om bas-swaar te
+klink op hoër luistervlakke, dan is die die kompensasie waarskynlik te sterk gestel
+en sal verminder moet word.
+\n\n
+Die kompensasie word by die gebruiker se gekose verstellings bygevoeg. Indien slegs
+kompensasie verlang word, moet die gelykmaker in die \'Flat\' verstelling gelos word.
+\n\n\n
+4. <b>Oorfone filter</b>
+\n\n
+Die Oorfone filter is \'n kruisvoer ontwerp wat geïnspireer is deur die beroemde bs2b
+analoog kringbaan. Die effek laat mono klank onveranderd deur, en verstel die verskil
+sein deur \'n laagdeurlaat filter wat beide die kop sadu en interoor vertraging dadadelik
+beraam, en geen daardeur die regte tipe tipe psigoakkoestiese leidrade vir die gebruiker
+se ore gee. Die bedoeling is om luisteraar moegheid te voorkom wat teweeg gebring word
+deur die ongeloofwaardige stereoverwyderding wat inherent is aan alle oorfone. Die
+effek moet geaktiveer word wanneerookal stereo oorfone gebruik word.
+\n\n
+Omdat die vermenging die stereo skeiding ietwat verminder, is daar \'n Haas effek galm,
+wat gebruik kan word om die waargenome stereo beeld verbreed. Dit word beheer deur die
+\'Room type\' kontrole.
+</string>
+</resources>
diff --git a/res/values-ca/arrays.xml b/res/values-ca/arrays.xml
new file mode 100644
index 0000000..b3cf076
--- /dev/null
+++ b/res/values-ca/arrays.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>Original</item>
+ <item>Equilibrat</item>
+ <item>Alta sensibilitat</item>
+ <item>Entorn sorollós</item>
+ </string-array>
+ <string-array name="headphone_modes">
+ <item>Estudi</item>
+ <item>Habitació</item>
+ <item>Habitació gran</item>
+ <item>Teatre</item>
+ </string-array>
+ <string-array name="equalizer_loudness_modes">
+ <item>Inhabilitat</item>
+ <item>El més dèbil</item>
+ <item>Més dèbil</item>
+ <item>Dèbil</item>
+ <item>Fort</item>
+ <item>Més fort</item>
+ <item>El més fort</item>
+ </string-array>
+ <string-array name="compression_modes">
+ <item>Lleuger</item>
+ <item>Mitjà</item>
+ <item>Extrem</item>
+ </string-array>
+ <string-array name="bassboost_modes">
+ <item>Lleuger</item>
+ <item>Mitjà</item>
+ <item>Extrem</item>
+ </string-array>
+ <string-array name="wm8994_bassboost_modes">
+ <item>Estàndard</item>
+ <item>Altaveus petits</item>
+ </string-array>
+</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
new file mode 100644
index 0000000..bf46d5f
--- /dev/null
+++ b/res/values-ca/strings.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <string name="app_name">Gestor DSP</string>
+ <string name="select_configuration_title">Selecciona la configuració a editar</string>
+ <string name="headset_title">Auriculars</string>
+ <string name="speaker_title">Altaveu</string>
+ <string name="bluetooth_title">Bluetooth</string>
+ <string name="usb_title">USB/Acoplament</string>
+ <string name="audio_effects">Efectes de so</string>
+ <string name="pref_unavailable">La funcionalitat no està disponible pel teu dispositiu</string>
+ <string name="dsp_settings_headset">Configuració DSP - Auriculars</string>
+ <string name="dsp_settings_speaker">Configuració DSP - Altaveu del telèfon</string>
+ <string name="dsp_settings_bluetooth">Configuració DSP - Dispositiu Bluetooth</string>
+ <string name="dsp_settings_usb">Configuració DSP - Dispositiu USB</string>
+ <string name="dsp_settings_wm8994">Configuració DSP - WM8994</string>
+ <string name="pref_dsp_title">Compressió del rang dinàmic</string>
+ <string name="pref_dsp_summary_on">La compressió està habilitada</string>
+ <string name="pref_dsp_summary_off">La compressió està deshabilitada</string>
+ <string name="pref_dsp_enable">Habilita</string>
+ <string name="pref_effect_title">Seleccioneu la potència dels efectes</string>
+ <string name="dialog_effect">Potència dels efectes</string>
+ <string name="pref_equalizer_title">Equalitzador</string>
+ <string name="pref_equalizer_summary_on">L\'equalitzador està activat</string>
+ <string name="pref_equalizer_summary_off">L\'equalitzador està desactivat</string>
+ <string name="pref_equalizer_enable">Habilita</string>
+ <string name="pref_equalizer_preset_title">Seleccioneu presintonia</string>
+ <string name="pref_equalizer_loudness_title">Compensació de volum</string>
+ <string name="pref_bassboost_title">Amplificació de greus</string>
+ <string name="pref_bassboost_summary_on">Amplificació de greus habilitada</string>
+ <string name="pref_bassboost_summary_off">Amplificació de greus deshabilitada</string>
+ <string name="pref_bassboost_enable">Habilita</string>
+ <string name="pref_headset_virtual_title">Efecte d\'habitació virtual per als auriculars</string>
+ <string name="pref_headset_virtual_summary_on">Efecte d\'habitació virtual habilitat</string>
+ <string name="pref_headset_virtual_summary_off">Efecte d\'habitació virtual deshabilitat</string>
+ <string name="pref_headset_virtual_enable">Habilita</string>
+ <string name="pref_room_title">Seleccioneu el tipus d\'habitació</string>
+ <string name="dialog_room">Tipus d\'habitació</string>
+ <string name="menu_reset">Reestableix</string>
+ <string name="eq_preset_acoustic">Acústic</string>
+ <string name="eq_preset_bass_booster">Amplificació de greus</string>
+ <string name="eq_preset_bass_reducer">Reducció de greus</string>
+ <string name="eq_preset_classical">Clàssica</string>
+ <string name="eq_preset_deep">Profunda</string>
+ <string name="eq_preset_flat">Plana</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">Rock</string>
+ <string name="eq_preset_small_speakers">Altaveus petits</string>
+ <string name="eq_preset_treble_booster">Amplificació d\'aguts</string>
+ <string name="eq_preset_treble_reducer">Reducció d\'aguts</string>
+ <string name="eq_preset_vocal_booster">Amplificació de veus</string>
+ <string name="eq_preset_custom">Personalitzat</string>
+ <string name="category_wm8994_internal_speaker">Altaveu</string>
+ <string name="category_wm8994_signal_processing">Processament de senyal</string>
+ <string name="category_wm8994_headphone_amp">Auriculars</string>
+ <string name="category_wm8994_codec_optimization">Optimització del Codec</string>
+ <string name="category_wm8994_dac_config">Configuració del convertidor Digital/Analògic</string>
+ <string name="category_wm8994_analog_path">Configuració del camí analògic</string>
+ <string name="category_wm8994_mic_settings">Configuració del micròfon</string>
+ <string name="category_wm8994_microphone_recording">Micròfon</string>
+ <string name="wm8994_settings_title_head">Configuració de so</string>
+ <string name="wm8994_settings_title_subhead">Configuració de so</string>
+ <string name="wm8994_settings_summary_head">Controls avançats del processador de so WM8994</string>
+ <string name="pref_wm8994_microphone_recording_title">Presintonia de gravació</string>
+ <string name="pref_wm8994_headphone_amp_title">Nivell d\'amplificació</string>
+ <string name="pref_wm8994_headphone_amp_summary">Personalitza el guany analògic</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Nivell d\'amplificació dels auriculars</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Guany analògic</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Amplificació de greus</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Controls avançats per l\'amplificació de greus</string>
+ <string name="pref_wm8994_bass_boost_title">Rang d\'amplificació de greus</string>
+ <string name="pref_wm8994_bass_boost_summary">Gestió avançada del rang dinàmic</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Presintonia d\'amplificació de greus</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Amplificació de greus</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Guany</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Rang d\'amplificació de greus</string>
+ <string name="pref_wm8994_control_enable_title">Habilita el control WM8994</string>
+ <string name="pref_wm8994_control_enable_summary">Controls avançats del processador de so WM8994</string>
+ <string name="pref_wm8994_speaker_tuning_title">Optimitza per a la música</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Reconfigura el maquinari de l\'EQ per aconseguir més greus i un so més equilibrat</string>
+ <string name="pref_wm8994_mono_downmix_title">Reducció a Mono</string>
+ <string name="pref_wm8994_mono_downmix_summary">Redueix el so estèreo a mono (per a sortides estèreo, com ara els auriculars)</string>
+ <string name="pref_wm8994_stereo_expansion_title">Expansió estèreo</string>
+ <string name="pref_wm8994_stereo_expansion_summary">\'Expandeix\' el so estèreo mitjançant el processament d\'una senyal digital</string>
+ <string name="pref_wm8994_dac_direct_title">Directe D/AC</string>
+ <string name="pref_wm8994_dac_direct_summary">Accedeix al convertidor digital/analògic directament, saltant el mesclador de canals. Produeix un so més net (relació senyal-soroll més alta)</string>
+ <string name="pref_wm8994_dac_osr128_title">Reproducció Hi-fi</string>
+ <string name="pref_wm8994_dac_osr128_summary">Convertidor Digital-a-analògic 128x de sobremostreig — so més net quan es reprodueix música</string>
+ <string name="pref_wm8994_adc_osr128_title">Gravació Hi-fi</string>
+ <string name="pref_wm8994_adc_osr128_summary">Convertidor Analògic-a-digital 128x de sobremostreig — millora la qualitat de les gravacions</string>
+ <string name="pref_wm8994_fll_tuning_title">Ajusta el rellotge sonor</string>
+ <string name="pref_wm8994_fll_tuning_summary">Utilitza un rellotge sonor WM8994 — millora la qualitat del so</string>
+ <string name="help_title">Ajuda</string>
+ <string name="help_text"><b>Què és el gestor DSP?</b>
+\n\n
+El gestor DSP és una app d\'ajustament de so per cada sortida. <i>DSP</i> es refereix a Digital signal processing (Processament digital de senyal), i la part <i>Gestor</i> es refereix al fet que el DSP no s\'executa dins l\'app per si mateix; el gestor només s\'habilita per les apps que compleixen amb les especificacions dels efectes de so d\'Android, p.e. la majoria de reproductors de música.
+\n\n\n
+<b>Filosofia</b>
+\n\n
+EL processament de so de CyanogenMod suporta quatre categories de sortida diferents: auriculars amb cable, so USB, altaveu del telèfon i auriculars bluetooth. Hi ha un panell de configuració separada per a cada tipus de sortida. La filosofia del gestor DSP és corregir les deficiencies concretes de cada tipus de sortida per aconseguir la millor experiencia d\'audició amb cada una.
+\n\n
+A diferència dels efectes de so AOSP, no hi ha ajustos específics per a cada app. Això ha estat una decisió intencionada del disseny: és la sortida el que ens preocupa, no quina app genera el so amb el qual el gestor DSP treballarà.
+\n\n\n
+<b>Característiques</b>
+\n\n
+1. <b>Compressió del rang dinàmic (DRC)</b>
+\n\n
+Aquest efecte estima el volum del so tal com el percep l\'oient mitjà i estableix un control de guany basat en aquesta estimació. La utilització principal és en entorns sorollosos com ara en cotxes o al carrer, on les parts més silencioses de la música corren el risc de quedar diluides en el soroll de fons.
+\n\n
+Aquest únic paràmetre determina com el gestor DSP intentarà mantenir el volum de so cap al nivell objectiu. No hi ha cap equivalència AOSP per aquest efecte DSP.
+\n\n\n
+2. <b>Amplificació de greus</b>
+\n\n
+L\'amplificació de greus és un simple filtre de pas que pot ser utilitzat per afegir èmfasis a 55 Hz o en freqüències més baixes. L\'amplificació és del voltant de 6 dB, i modificat pel paràmtre de \'potència\', que afegeix ressonància al filtre a la banda de 55 Hz, donant a aquesta freqüència un ènfasis extra. L\'efecte està dissenyat per combatre la pèrdua de les freqüències baixas comuna en els altaveus petits i els auriculars supra-aurals que no s\'ajusten correctament al canal auditiu de l\'orella de l\'usuari.
+\n\n\n
+3. <b>Equalitzador</b>
+\n\n
+Aquest és un equalitzador de 6-bandes amb bandes a 16, 64, 250, 1000, 4000 i 16000 Hz. Es proveeixen algunes presintonies habituals, i la freqüència de resposta també pot ser personalitzada picant sobre la gràfica de l\'equalitzador. L\'efecte hauria de ser utilitzat per optimitzar la freqüència de resposta al gust personal de l\'usuari, o per a les característiques particulars dels altaveus o auriculars disponibles.
+\n\n
+L\'equalitzador també conté un filtre de compensació de greus, que equalitza els canvis en la reposta de la freqüència auditiva basat en el nivell de pressió sonora que arriba a l\'orella de l\'usuari. És necessari l\'us d\'uns auriculars amb cable, i el paràmetre de del valor de potència s\'ha d\'haver ajustat correctament abans que l\'efecte funcioni com està dissenyat.
+\n\n
+Per a seleccionar el valor adequat per a la compensació de potència, utilitza el volum de música més silenciós, i escull un espectre ampli de música sorollosa com ara rock o metal. Intenta trobar l\'ajust on els greus s\'amplifiquen audiblement i semblen equilibrats amb la resta del material. Després que la compensació s\'hagi configurat correctament, els greus haurien de mantenir-se al mateix nivell relatiu a altres instruments independentment del volum d\'audició. D\'altra banda, si la música comença a fer notar els greus en els volums més alts, la compensació estarà establerta massa forta, i s\'haurà de reduir.
+\n\n
+La compensació s\'afegeix als ajustaments escollits per l\'usuari. Si només es desitja la compensació, l\'equalitzador s\'haurà de deixar en la presintonia \'Plana\'.
+\n\n\n
+4. <b>Filtre d\'auriculars</b>
+\n\n
+El filtre d\'auriculars és un disseny inspirat en el famós circuit analògic bs2b. Aquest efecte passa el so mono inalterat, i ajusta la diferència de senyal a través d\'un filtre de pas baix que aproxima l\'ombra del cap i el retard interaural a la vegada, donant les pistes psico-acústiques adequades a les orelles de l\'usuari. La intenció és prevenir a la fatiga de l\'oient derivada de la separació implausible de l\'estèreo inherent de tots els auriculars. Aquest efecte hauria d\'estar activat sempre que s\'utilitzin auriculars estèreo.
+\n\n
+Com que la mescla redueix la separació estèreo fins a cert punt, hi ha un efecte reverberació Haas, que pot ser utilitzat per incrementar l\'amplada de la imatge estèreo percebuda. Això es regula pel control \'Tipus d\'habitació\'.</string>
+</resources>
diff --git a/res/values-cs/arrays.xml b/res/values-cs/arrays.xml
new file mode 100644
index 0000000..633a655
--- /dev/null
+++ b/res/values-cs/arrays.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>Původní</item>
+ <item>Vyvážený</item>
+ <item>Vysoká citlivost</item>
+ <item>Hlasité prostředí</item>
+ </string-array>
+
+ <string-array name="headphone_modes">
+ <item>Studio</item>
+ <item>Pokoj</item>
+ <item>Hala</item>
+ <item>Stadion</item>
+ </string-array>
+
+ <string-array name="equalizer_loudness_modes">
+ <item>Vypnutý</item>
+ <item>Nejslabší</item>
+ <item>Slabší</item>
+ <item>Slabý</item>
+ <item>Silný</item>
+ <item>Silnější</item>
+ <item>Nejsilnější</item>
+ </string-array>
+
+ <string-array name="compression_modes">
+ <item>Mírný</item>
+ <item>Střední</item>
+ <item>Největší</item>
+ </string-array>
+
+ <string-array name="bassboost_modes">
+ <item>Mírný</item>
+ <item>Střední</item>
+ <item>Největší</item>
+ </string-array>
+
+ <string-array name="wm8994_bassboost_modes">
+ <item>Standardní</item>
+ <item>Malé reproduktury</item>
+ </string-array>
+</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
new file mode 100644
index 0000000..0c40fff
--- /dev/null
+++ b/res/values-cs/strings.xml
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (C) 2013 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <string name="select_configuration_title">Zvolte nastavení ke změně</string>
+ <string name="headset_title">Sluchátka</string>
+ <string name="speaker_title">Reproduktor</string>
+ <string name="bluetooth_title">Zařízení Bluetooth</string>
+ <string name="usb_title">USB/Dok</string>
+ <string name="audio_effects">Zvukové efekty</string>
+ <string name="pref_unavailable">Tato funkce není na Vašem zařízení dostupná.</string>
+ <string name="dsp_settings_headset">Nastavení DSP - sluchátka</string>
+ <string name="dsp_settings_speaker">Nastavení DSP - reproduktor</string>
+ <string name="dsp_settings_bluetooth">Nastavení DSP - zařízení Bluetooth</string>
+ <string name="dsp_settings_usb">Nastavení DSP - zařízení USB</string>
+ <string name="dsp_settings_wm8994">Nastavení DSP - WM8994</string>
+ <string name="pref_dsp_title">Komprese dynamiky signálu (DRC)</string>
+ <string name="pref_dsp_summary_on">Komprese povolena</string>
+ <string name="pref_dsp_summary_off">Komprese zakázána</string>
+ <string name="pref_dsp_enable">Povolit</string>
+ <string name="pref_effect_title">Zvolte sílu efektu</string>
+ <string name="dialog_effect">Síla efektu</string>
+ <string name="pref_equalizer_title">Ekvalizér</string>
+ <string name="pref_equalizer_summary_on">Ekvalizér povolen</string>
+ <string name="pref_equalizer_summary_off">Ekvalizér zakázán</string>
+ <string name="pref_equalizer_enable">Povolit</string>
+ <string name="pref_equalizer_preset_title">Zvolte předvolbu</string>
+ <string name="pref_equalizer_loudness_title">Kompenzace hlasitosti</string>
+ <string name="pref_bassboost_title">Zvýraznění basů</string>
+ <string name="pref_bassboost_summary_on">Zvýraznění basů povoleno</string>
+ <string name="pref_bassboost_summary_off">Zvýraznění basů zakázáno</string>
+ <string name="pref_bassboost_enable">Povolit</string>
+ <string name="pref_headset_virtual_title">Efekt virtuálního prostoru pro sluchátka</string>
+ <string name="pref_headset_virtual_summary_on">Virtuální prostor povolen</string>
+ <string name="pref_headset_virtual_summary_off">Virtuální prostor zakázán</string>
+ <string name="pref_headset_virtual_enable">Povolit</string>
+ <string name="pref_room_title">Zvolte typ prostoru</string>
+ <string name="dialog_room">Typ prostoru</string>
+ <string name="menu_reset">Vynulovat</string>
+
+ <string name="eq_preset_acoustic">Akustický</string>
+ <string name="eq_preset_bass_booster">Zvýraznění basů</string>
+ <string name="eq_preset_bass_reducer">Potlačení basů</string>
+ <string name="eq_preset_classical">Klasika</string>
+ <string name="eq_preset_deep">Hluboký</string>
+ <string name="eq_preset_flat">Plochý</string>
+ <string name="eq_preset_small_speakers">Malé reproduktory</string>
+ <string name="eq_preset_treble_booster">Zvýraznění výšek</string>
+ <string name="eq_preset_treble_reducer">Potlačení výšek</string>
+ <string name="eq_preset_vocal_booster">Zvýraznění řeči</string>
+ <string name="eq_preset_custom">Vlastní</string>
+
+ <!-- WM8994 -->
+ <!-- Categories -->
+ <string name="category_wm8994_internal_speaker">Reproduktor</string>
+ <string name="category_wm8994_signal_processing">Zpracování signálu</string>
+ <string name="category_wm8994_headphone_amp">Sluchátka</string>
+ <string name="category_wm8994_codec_optimization">Optimalizace kodeku</string>
+ <string name="category_wm8994_dac_config">Nastavení D/A převodníku</string>
+ <string name="category_wm8994_analog_path">Nastavení analogové trasy</string>
+ <string name="category_wm8994_mic_settings">Nastavení mikrofonu</string>
+ <string name="category_wm8994_microphone_recording">Mikrofon</string>
+ <!-- Titles/Summaries -->
+ <string name="wm8994_settings_title_head">Nastavení zvuku</string>
+ <string name="wm8994_settings_title_subhead">Nastavení zvuku</string>
+ <string name="wm8994_settings_summary_head">Pokročilé ovládání zvukového procesoru WM8994</string>
+ <string name="pref_wm8994_microphone_recording_title">Předvolba nahrávání</string>
+ <string name="pref_wm8994_headphone_amp_title">Úroveň zesilovače</string>
+ <string name="pref_wm8994_headphone_amp_summary">Upravit analogové zesílení</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Úroveň zesilovače pro sluchátka</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Analogové zesílení</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Zvýraznění basů</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Pokročilé ovládání pro zvýraznění basů</string>
+ <string name="pref_wm8994_bass_boost_title">Rozsah zvýraznění basů</string>
+ <string name="pref_wm8994_bass_boost_summary">Pokročilé ovládání dynamického rozsahu</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Předvolba zvýraznění basů</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Zvýraznění basů</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Zisk</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Rozsah zvýraznění basů</string>
+ <string name="pref_wm8994_control_enable_title">Povolit ovládání WM8994</string>
+ <string name="pref_wm8994_control_enable_summary">Pokročilé ovládání zvukového procesoru WM8994</string>
+ <string name="pref_wm8994_speaker_tuning_title">Přizpůsobit pro hudbu</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Provede přenastavení HW ekvalizéru pro více basů a vyvážený poslech hudby</string>
+ <string name="pref_wm8994_mono_downmix_title">Převést na mono</string>
+ <string name="pref_wm8994_mono_downmix_summary">Převede stereofonní zvuk na monofonní (pro stereo výstup, např. sluchátka)</string>
+ <string name="pref_wm8994_stereo_expansion_title">Rozšířené stereo</string>
+ <string name="pref_wm8994_stereo_expansion_summary">Stereofonní zvuk bude \u201erozšířen\u201c pomocí DSP</string>
+ <string name="pref_wm8994_dac_direct_title">D/AC přímo</string>
+ <string name="pref_wm8994_dac_direct_summary">Přistupovat k D/A převodníku přímo, obejít mixér kanálů. Způsobí čistější zvuk (vyšší poměr signálu k šumu)</string>
+ <string name="pref_wm8994_dac_osr128_title">Přehrávání Hi-Fi</string>
+ <string name="pref_wm8994_dac_osr128_summary">D/A převodník s 128x přesamplováním \u2014 čistější zvuk při přehrávání hudby</string>
+ <string name="pref_wm8994_adc_osr128_title">Nahrávání Hi-Fi</string>
+ <string name="pref_wm8994_adc_osr128_summary">A/D převodník s 128x přesamplováním \u2014 zvýší kvalitu nahrávaného zvuku</string>
+ <string name="pref_wm8994_fll_tuning_title">Přizpůsobené časování</string>
+ <string name="pref_wm8994_fll_tuning_summary">Bude použito přizpůsobené časování procesoru WM8994 pro zvukové zdroje \u2014 zvýší kvalitu zvuku</string>
+
+ <string name="help_title">Uživatelská příručka</string>
+ <string name="help_text"><b>Co je DSPManager?</b>\n\nDSPManager je aplikace
+na nastavení efektů zvukového výstupu. <i>DSP</i> znamená digitální signálové
+zpracování (Digital Signal Processing) a <i>Manager</i> znamená, že ono DSP
+není součástí vlastní aplikace, která vytváří zvuk; tento správce může pouze
+toto DSP aktivovat pro Android aplikace, které jsou vytvořeny v souladu se
+specifikací zvukového subsystému Androidu - což splňuje většina přehrávačů.\n
+\n<b>Filozofie</b>\n
+\nZvukové zpracování v CyanogenModu podporuje čtyři různé výstupní kategorie:
+drátová sluchátka, USB audio, telefonní reproduktor a sluchátka připojené
+pomocí Bluetooth. Pro každou tuto kategorii je vlastní konfigurační panel.
+Filozofie DSPManagera je upravit jednotlivý zvukový výstup tak, aby bylo
+docíleno nejlepšího poslechu.\n
+\nNa rozdíl od zvukových efektů AOSP není toto nastavení rozlišeno na
+jednotlivé aplikace, což byl hlavní záměr této aplikace: upravuje se konkrétní
+zvukový výstup a je jedno, která aplikace do tohoto výstupu generuje zvuk.\n
+\n<b>Vlastnosti</b>\n
+\nVe zbytku tohoto dokumentu jsou popsány jednotlivé zvukové efekty a jejich
+zamýšlené použití v konkrétních situacích.\n
+\n1. <b>Komprese dynamiky (DRC)</b>\n
+\nTento efekt upravuje hlasitost výstupního zvuku na základě úrovně hlasitosti
+zvuku vstupního s možností využití proměnného zisku. Primární využití je v
+hlučném prostředí, jako například v autech nebo na ulici, kde tiché pasáže
+hudby mohou při poslechu zaniknout právě v okolním hluku.\n
+\nJe možné nastavit, jakým způsobem se bude bude DSPManager snažit udržet
+zvukovou hlasitost na cílové úrovni. Pro tento DSP efekt není ekvivalent v
+AOSP.\n
+\n2. <b>Zvýraznění basů</b>\n
+\nEfekt zvýraznění basů je jednoduchá dolní propust (low-pass filtr), která
+přidává důraz na frekvencích do 55 Hz. Zvýraznění je přibližně 6 dB a je možné
+jej modifikovat parametrem \u201esíla\u201c, který přidává rezonanci v pásmu
+55 Hz, což způsobí větší změny v důrazu efektu. Tento efekt je navržen pro
+opětovné získání důrazu basů při malých reproduktorech či sluchátkách, která
+pouze leží na uších (supraaurální sluchátka) a nejsou uvnitř zvukovodu ucha.\n
+\n3. <b>Ekvalizér</b>\n
+\nJe šesti pásmový ekvalizér s pásmy na 16, 64, 250, 1000, 4000 a 16000 Hz.
+Dostupné jsou některé běžné předvolby a je pochopitelně možné provést vlastní
+nastavení klepnutím na graf ekvalizéru. Tento efekt je využit pro zisk či
+potlačení konkrétního frekvenčního pásma tak, aby to posluchači bylo příjemné
+či aby bylo docíleno optimálního využití frekvenčního rozsahu sluchátek či
+reproduktorů.\n
+\nEkvalizér také obsahuje kompenzační filtr hlasitosti, který vyrovnává změny
+frekvence v uchu v závislosti na úrovni zvukového tlaku, vznikající v uchu.
+Pro tuto vlastnost je nutné použít drátová sluchátka a hodnota parametru
+určující sílu efektu musí být správně nastavena, aby efekt pracoval tak, jak
+byl navržen.\n
+\nPro zvolení správné hodnoty síly kompenzace použijte co možná nejtišší
+hlasitost a pusťte hudbu s velkým rozpětím frekvencí - rock nebo metal jsou
+ideální. Pokuste se najít takové nastavení, kdy jsou basy slyšitelné a zároveň
+přibližně ve stejné úrovni k ostatním nástrojům. Po správném nastavení
+kompenzace zůstanou basy stále ve stejné úrovni k ostatním nástrojům bez
+ohledu na nastavené hlasitosti. Pokud ale dojde při vyšších hlasitostech k
+přílišnému zesílení basů, je úroveň kompenzace veliká a měla by být snížena.\n
+\nKompenzace je přidána do uživatelských změn a pokud chcete použít pouze tuto
+kompenzaci, je nutné, aby ekvalizér byl nastaven na předvolbu \u201eplochý\u201c.\n
+\n4. <b>Filtr sluchátek</b>\n
+\nFiltr sluchátek je filtr křížového mixování inspirovaný slavným analogovým
+obvodem bs2b. Monofonní zvuk je propuštěn beze změn, ale je upraven rozdíl
+signálů pomocí dolní propusti, který aproximuje stín a zpoždění ve vnitřním
+uchu současně, což způsobuje určitý druh psychoakustického poslechu. Tento
+efekt je určen pro zabránění striktní separace stereofonní hudby při použití
+sluchátek. Tento efekt by měl být použit vždy, když jsou použita stereofonní
+sluchátka.\n
+\nProtože mixování sníží separaci stereofonního zvuku, je možné použít efektu
+ozvěny Haas, který je použit pro zvýšení vnímání šířky stereo vjemu. Toto je
+možné změnit v nastavení \u201etypu prostoru\u201c.
+ </string>
+
+</resources>
diff --git a/res/values-da/arrays.xml b/res/values-da/arrays.xml
new file mode 100644
index 0000000..fad7306
--- /dev/null
+++ b/res/values-da/arrays.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>Original</item>
+ <item>Balanceret</item>
+ <item>Høj følsomhed</item>
+ <item>Højlydt miljø</item>
+ </string-array>
+
+ <string-array name="headphone_modes">
+ <item>Studie</item>
+ <item>Rum</item>
+ <item>Stort rum</item>
+ <item>Scene</item>
+ </string-array>
+
+ <string-array name="equalizer_loudness_modes">
+ <item>Deaktiveret</item>
+ <item>Svagest</item>
+ <item>Svagere</item>
+ <item>Svag</item>
+ <item>Stærk</item>
+ <item>Stærkere</item>
+ <item>Stærkest</item>
+ </string-array>
+
+ <string-array name="compression_modes">
+ <item>Let</item>
+ <item>Moderat</item>
+ <item>Ekstrem</item>
+ </string-array>
+
+ <string-array name="bassboost_modes">
+ <item>Let</item>
+ <item>Moderat</item>
+ <item>Ekstrem</item>
+ </string-array>
+
+ <string-array name="wm8994_bassboost_modes">
+ <item>Standard</item>
+ <item>Små højttalere</item>
+ </string-array>
+</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
new file mode 100644
index 0000000..4ea38f3
--- /dev/null
+++ b/res/values-da/strings.xml
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name">DSP-styring</string>
+ <string name="select_configuration_title">Vælg en konfiguration, der skal redigeres</string>
+ <string name="headset_title">Hovedtlf.</string>
+ <string name="speaker_title">Højttaler</string>
+ <string name="bluetooth_title">Bluetooth</string>
+ <string name="usb_title">USB/Dock</string>
+ <string name="audio_effects">Lydeffekter</string>
+ <string name="pref_unavailable">Funktionaliteten er ikke tilgængelig på din enhed</string>
+ <string name="dsp_settings_headset">DSP-indstillinger - Hovedtelefoner</string>
+ <string name="dsp_settings_speaker">DSP-indstillinger - Højttaler</string>
+ <string name="dsp_settings_bluetooth">DSP-indstillinger - Bluetooth-enhed</string>
+ <string name="dsp_settings_usb">DSP-indstillinger - USB-enhed</string>
+ <string name="dsp_settings_wm8994">DSP-indstillinger - WM8994</string>
+ <string name="pref_dsp_title">Kompression af dynamikområdet</string>
+ <string name="pref_dsp_summary_on">Kompression aktiveret</string>
+ <string name="pref_dsp_summary_off">Kompression deaktiveret</string>
+ <string name="pref_dsp_enable">Aktivér</string>
+ <string name="pref_effect_title">Vælg effektstyrke</string>
+ <string name="dialog_effect">Effektstyrke</string>
+ <string name="pref_equalizer_title">Equalizer</string>
+ <string name="pref_equalizer_summary_on">Equalizeren er aktiveret</string>
+ <string name="pref_equalizer_summary_off">Equalizeren er deaktiveret</string>
+ <string name="pref_equalizer_enable">Aktivér</string>
+ <string name="pref_equalizer_preset_title">Vælg forudindstilling</string>
+ <string name="pref_equalizer_loudness_title">Loudness-kompensation</string>
+ <string name="pref_bassboost_title">Basforstærkning</string>
+ <string name="pref_bassboost_summary_on">Basforstærkning er aktiveret</string>
+ <string name="pref_bassboost_summary_off">Basforstærkning er deaktiveret</string>
+ <string name="pref_bassboost_enable">Aktivér</string>
+ <string name="pref_headset_virtual_title">Virtuel rumklang for hovedtelefoner</string>
+ <string name="pref_headset_virtual_summary_on">Virtuel rumklang for hovedtelefoner er aktiveret</string>
+ <string name="pref_headset_virtual_summary_off">Virtuel rumklang for hovedtelefoner er deaktiveret</string>
+ <string name="pref_headset_virtual_enable">Aktivér</string>
+ <string name="pref_room_title">Vælg rumtype</string>
+ <string name="dialog_room">Rumtype</string>
+ <string name="menu_reset">Nulstil</string>
+ <string name="eq_preset_acoustic">Akustisk</string>
+ <string name="eq_preset_bass_booster">Mere bas</string>
+ <string name="eq_preset_bass_reducer">Mindre bas</string>
+ <string name="eq_preset_classical">Klassisk</string>
+ <string name="eq_preset_deep">Dyb</string>
+ <string name="eq_preset_flat">Flad</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">Rock</string>
+ <string name="eq_preset_small_speakers">Små højttalere</string>
+ <string name="eq_preset_treble_booster">Mere diskant</string>
+ <string name="eq_preset_treble_reducer">Mindre diskant</string>
+ <string name="eq_preset_vocal_booster">Mere vokal</string>
+ <string name="eq_preset_custom">Brugerdefineret</string>
+ <string name="category_wm8994_internal_speaker">Højttaler</string>
+ <string name="category_wm8994_signal_processing">Signalbehandling</string>
+ <string name="category_wm8994_headphone_amp">Hovedtelefoner</string>
+ <string name="category_wm8994_codec_optimization">Codec-optimering</string>
+ <string name="category_wm8994_dac_config">Indstillinger for Digital/Analog-konverter</string>
+ <string name="category_wm8994_analog_path">Analog kanalkonfigurering</string>
+ <string name="category_wm8994_mic_settings">Mikrofonindstillinger</string>
+ <string name="category_wm8994_microphone_recording">Mikrofon</string>
+ <string name="wm8994_settings_title_head">Lydindstillinger</string>
+ <string name="wm8994_settings_title_subhead">Lydindstillinger</string>
+ <string name="wm8994_settings_summary_head">Avanceret styring af WM8994-codec</string>
+ <string name="pref_wm8994_microphone_recording_title">Forudindstilling for optagelse</string>
+ <string name="pref_wm8994_headphone_amp_title">Forstærkerniveau</string>
+ <string name="pref_wm8994_headphone_amp_summary">Tilpasse analog forstærkning</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Forstærkerniveau for hovedtelefon</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Analog forstærkning</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Basforstærkning</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Avanceret styring af basforstærkning</string>
+ <string name="pref_wm8994_bass_boost_title">Basforstærkningsområde</string>
+ <string name="pref_wm8994_bass_boost_summary">Avanceret styring af dynamikområde</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Forudindstilling for basforstærkning</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Basforstærkning</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Forstærkning</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Basforstærkningsområde</string>
+ <string name="pref_wm8994_control_enable_title">Aktivér WM8994 styring</string>
+ <string name="pref_wm8994_control_enable_summary">Avanceret styring for WM8994-codec</string>
+ <string name="pref_wm8994_speaker_tuning_title">Indstil for musik</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Konfigurér hardware-EQ for mere bas og afbalanceret lyd</string>
+ <string name="pref_wm8994_mono_downmix_title">Mono-downmix</string>
+ <string name="pref_wm8994_mono_downmix_summary">Downmix stereo til mono (for stereoudgange, såsom hovedtelefoner)</string>
+ <string name="pref_wm8994_stereo_expansion_title">Stereoudvidelse</string>
+ <string name="pref_wm8994_stereo_expansion_summary">“Udvid” stereolyden via digital signalbehandling</string>
+ <string name="pref_wm8994_dac_direct_title">D/AC direkte</string>
+ <string name="pref_wm8994_dac_direct_summary">Få adgang til digital/analog-konverteren direkte, udenom kanal mixeren. Giver renere lyd (højere signal-/støjforhold)</string>
+ <string name="pref_wm8994_dac_osr128_title">HiFi-afspilning</string>
+ <string name="pref_wm8994_dac_osr128_summary">Digital-til-analog-konverter 128x oversampling — renere lyd ved afspilning af musik</string>
+ <string name="pref_wm8994_adc_osr128_title">HiFi-optagelse</string>
+ <string name="pref_wm8994_adc_osr128_summary">Analog-til-digital-konverter 128x oversampling — øger kvaliteten af optagelserne</string>
+ <string name="pref_wm8994_fll_tuning_title">Afstemt lydfrekvens</string>
+ <string name="pref_wm8994_fll_tuning_summary">Anvend afstemt WM8994-lydfrekvens — forbedrer lydkvaliteten</string>
+ <string name="help_title">Brugervejledning</string>
+ <string name="help_text"><b>Hvad er DSP Manager?</b>
+\n\n
+DSP Manager er en lydjusteringsapplikation per udgang. <i>DSP</i> står for
+Digital Signal Processor, og <i>Manager</i>-delen refererer til det faktum,
+at DSP\'en faktisk ikke kører i selve applikationen; manageren kan kun
+aktivere det for applikationer, der er kompatible med Android\'s lydeffekt-
+specifikation, dvs. de fleste musikafspillere.
+\n\n\n
+<b>Filosofi</b>
+\n\n
+CyanogenMod\'s lydbehandling understøtter tre forskellige udgangs-kategorier:
+kablede hovedtelefoner, telefonens højttaler og bluetooth-hovedtelefoner. Der er
+et separat konfigurationspanel for hver udgangs-kategori. DSP Manager\'s filosofi
+er at korrigere konkrete mangler, for at opnå den mest optimale lytteoplevelse,
+for hver lydudgang.
+\n\n
+I modsætning til AOSP-lydeffekter er der ingen indstillinger per applikation.
+Dette er et bevidst designvalg: det er resultatet som vi interesserer os for,
+ikke hvilken applikation der genererer lyden, som DSP Manager skal arbejde med.
+\n\n\n
+<b>Funktioner</b>
+\n\n
+1. <b>Kompression af dynamikområdet</b>
+\n\n
+Denne effekt vurderer lydstyrken for en gennemsnitlig lytter og regulerer den
+på grundlag af denne vurdering. Den primære anvendelse er ved støjende miljøer,
+såsom i biler eller på gaden, hvor stille dele af musikken risikerer at blive
+overdøvet af baggrundsstøj.
+\n\n
+Denne justering afgør, hvor hårdt DSP Manager vil forsøge at fastholde lydniveauet
+til det målsatte niveau. Der er ingen tilsvarende AOSP-variant for denne DSP-effekt.
+\n\n\n
+2. <b>Basforstærkning</b>
+\n\n
+Basforstærkningen er et simpelt lavpasfilter, som kan anvendes til at tilføje
+særlig vægt ved 55 Hz og lavere frekvenser. Forstærkningen er omkring 6 dB og
+ændret af \'styrke\'-parameteren, som tilføjer filter resonans ved 55 Hz-båndet,
+hvilket giver denne frekvens ekstra vægt. Effekten er designet til at bekæmpe
+tab af basfrekvens, som ved små højttalere og over-øre hovedtelefoner, som
+ikke sidder helt tæt ind til brugerens øregang.
+\n\n\n
+3. <b>Equalizer</b>
+\n\n
+Dette er en 6-båndsequalizer med bånd ved 16, 64, 250, 1000, 4000 og 16000 Hz.
+Nogle af de almindelige forudindstillinger findes, og frekvensgangen kan også
+tilpasses ved at trykke på equalizerkurven. Effekten bør anvendes til at
+indstille frekvensgengivelsen, til brugerens personlige smag, eller til
+de bestemte muligheder for de tilgængelige hovedtelefoner eller højttalere.
+\n\n
+Equalizer indeholder også et kompensationsfilter for lydstyrken, som udligner
+ændringerne for frekvensgangen i øret, baseret på det lydtryksniveau, som når
+brugerens øre. Anvendelse af kabelforbundne hovedtelefoner er påkrævet, og
+værdien for styrkeparameteren skal indstilles korrekt, før effekten fungerer
+som forventet.
+\n\n
+For at vælge den rigtige værdi for kompensationsstyrken, anvend den mest stille
+lydstyrke, og vælg noget bredspektret støjende musik, som rock eller metal.
+Forsøg at finde en indstilling, hvor bassen forstærkes tilbage til hørbarhed
+og virker afbalanceret med resten af materialet. Efter at kompensationen er
+korrekt konfigureret, bør bassen forblive på samme niveau i forhold til
+andre instrumenter uafhængigt af lydniveauet. På den anden side, hvis
+musikken begynder at lyde bas-tung ved højere lydniveauer, er kompensationen
+sandsynligvis indstillet for stærkt, og bør reduceres.
+\n\n
+Kompensationen føjes til brugerens valgte justeringer. Hvis der kun ønskes
+kompensation, bør equalizeren være i indstillingen \'Flad\'.
+\n\n\n
+4. <b>Hovedtelefon-filter</b>
+\n\n
+Hovedtelefon-filteret er et såkaldt "crossfeed-design", inspireret af det
+berømte analoge kredsløb bs2b. Effekten passerer monolyd uændret og justerer
+signal-differencen gennem et lavpasfilter, som estimerer lyden i hovedet og
+den interaurale forsinkelse på én gang, hvilket giver rigtige psykoakustiske
+spor for brugerens ører. Hensigten er at forhindre lyttetræthed som følge af
+usandsynlig stereoseparation, indbygget i alle hovedtelefoner. Effekten bør
+aktiveres, hver gang der anvendes stereo-hovedtelefoner.
+\n\n
+Fordi blandingen reducerer stereoadskillelsen en smule, er der en efterklangs-
+effekt, som kan anvendes til at øge bredden på det oplevede stereobillede.
+Dette styres af indstillingen \'Rumtype\'.</string>
+</resources>
diff --git a/res/values-de/arrays.xml b/res/values-de/arrays.xml
new file mode 100644
index 0000000..5453258
--- /dev/null
+++ b/res/values-de/arrays.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>Normal</item>
+ <item>Ausgeglichen</item>
+ <item>Sehr empfindlich</item>
+ <item>Laute Umgebung</item>
+ </string-array>
+
+ <string-array name="headphone_modes">
+ <item>Studio</item>
+ <item>Raum</item>
+ <item>Großer Raum</item>
+ <item>Bühne</item>
+ </string-array>
+
+ <string-array name="compression_modes">
+ <item>Schwach</item>
+ <item>Mittel</item>
+ <item>Extrem</item>
+ </string-array>
+
+ <string-array name="bassboost_modes">
+ <item>Schwach</item>
+ <item>Mittel</item>
+ <item>Extrem</item>
+ </string-array>
+
+ <string-array name="wm8994_bassboost_modes">
+ <item>Normal</item>
+ <item>Kleine Lautsprecher</item>
+ </string-array>
+
+ <string-array name="equalizer_loudness_modes">
+ <item>Deaktiviert</item>
+ <item>Sehr schwach</item>
+ <item>Schwächer</item>
+ <item>Schwach</item>
+ <item>Stark</item>
+ <item>Stärker</item>
+ <item>Sehr stark</item>
+ </string-array>
+</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
new file mode 100644
index 0000000..ae82f0b
--- /dev/null
+++ b/res/values-de/strings.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <string name="app_name">DSP-Manager</string>
+ <string name="select_configuration_title">Konfiguration zum Bearbeiten auswählen</string>
+ <string name="headset_title">Kopfhörer</string>
+ <string name="speaker_title">Lautsprecher</string>
+ <string name="bluetooth_title">Bluetooth-Gerät</string>
+ <string name="usb_title">USB/Dock</string>
+ <string name="audio_effects">Audioeffekte</string>
+ <string name="pref_unavailable">Diese Funktion ist auf diesem Gerät nicht verfügbar</string>
+ <string name="dsp_settings_headset">DSP-Einstellungen - Kopfhörer</string>
+ <string name="dsp_settings_speaker">DSP-Einstellungen - Lautsprecher</string>
+ <string name="dsp_settings_bluetooth">DSP-Einstellungen - Bluetooth-Gerät</string>
+ <string name="dsp_settings_wm8994">DSP-Einstellungen - WM8994</string>
+ <string name="dsp_settings_usb">DSP-Einstellungen - USB-Gerät</string>
+ <string name="pref_dsp_title">Kompression des Dynamikumfangs</string>
+ <string name="pref_dsp_summary_on">Kompression des Dynamikumfangs ist eingeschaltet</string>
+ <string name="pref_dsp_summary_off">Kompression des Dynamikumfangs ist ausgeschaltet</string>
+ <string name="pref_dsp_enable">Einschalten</string>
+ <string name="pref_effect_title">Effektstärke auswählen</string>
+ <string name="dialog_effect">Effektstärke</string>
+ <string name="pref_equalizer_title">Equalizer</string>
+ <string name="pref_equalizer_summary_on">Equalizer ist eingeschaltet</string>
+ <string name="pref_equalizer_summary_off">Equalizer ist ausgeschaltet</string>
+ <string name="pref_equalizer_enable">Einschalten</string>
+ <string name="pref_equalizer_preset_title">Voreinstellung auswählen</string>
+ <string name="pref_equalizer_loudness_title">Loudness-Kompensation</string>
+ <string name="pref_bassboost_title">Bassverstärkung</string>
+ <string name="pref_bassboost_summary_on">Bassverstärkung ist eingeschaltet</string>
+ <string name="pref_bassboost_summary_off">Bassverstärkung ist ausgeschaltet</string>
+ <string name="pref_bassboost_enable">Einschalten</string>
+ <string name="pref_headset_virtual_title">Virtueller Raumklang</string>
+ <string name="pref_headset_virtual_summary_on">Virtueller Raumklang ist eingeschaltet</string>
+ <string name="pref_headset_virtual_summary_off">Virtueller Raumklang ist ausgeschaltet</string>
+ <string name="pref_headset_virtual_enable">Einschalten</string>
+ <string name="pref_room_title">Raumtyp</string>
+ <string name="dialog_room">Raumtyp</string>
+ <string name="menu_reset">Zurücksetzen</string>
+ <string name="eq_preset_acoustic">Acoustic</string>
+ <string name="eq_preset_bass_booster">Mehr Bässe</string>
+ <string name="eq_preset_bass_reducer">Weniger Bässe</string>
+ <string name="eq_preset_classical">Klassik</string>
+ <string name="eq_preset_deep">Deep</string>
+ <string name="eq_preset_flat">Aus</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">Rock</string>
+ <string name="eq_preset_small_speakers">Kleine Boxen</string>
+ <string name="eq_preset_treble_booster">Mehr Höhen</string>
+ <string name="eq_preset_treble_reducer">Weniger Höhen</string>
+ <string name="eq_preset_vocal_booster">Sprache</string>
+ <string name="eq_preset_custom">Benutzerdefiniert</string>
+ <string name="category_wm8994_internal_speaker">Lautsprecher</string>
+ <string name="category_wm8994_signal_processing">Signalverarbeitung</string>
+ <string name="category_wm8994_headphone_amp">Kopfhörer</string>
+ <string name="category_wm8994_codec_optimization">Codec-Optimierung</string>
+ <string name="category_wm8994_dac_config">D/A-Wander-Einstellungen</string>
+ <string name="category_wm8994_analog_path">Analogpfad-Einstellungen</string>
+ <string name="category_wm8994_mic_settings">Mikrofon-Einstellungen</string>
+ <string name="category_wm8994_microphone_recording">Mikrofon</string>
+ <string name="wm8994_settings_title_head">Klangeinstellungen</string>
+ <string name="wm8994_settings_title_subhead">Klangeinstellungen</string>
+ <string name="wm8994_settings_summary_head">Erweiterte Steuerung des WM8994-Codecs</string>
+ <string name="pref_wm8994_microphone_recording_title">Aufnahme-Voreinstellung</string>
+ <string name="pref_wm8994_headphone_amp_title">Verstärker-Pegel</string>
+ <string name="pref_wm8994_headphone_amp_summary">Analogverstärkung anpassen</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Pegel Kopfhörerverstärker</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Analogverstärkung</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Bassanhebung</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Erweiterte Steuerung der Bassanhebung</string>
+ <string name="pref_wm8994_bass_boost_title">Bandbreite der Bassanhebung</string>
+ <string name="pref_wm8994_bass_boost_summary">Erweiterte, dynamische Bandbreitensteuerung</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Voreinstellung der Bassanhebung</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Bassanhebung</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Verstärkung</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Bandbreite der Bassanhebung</string>
+ <string name="pref_wm8994_control_enable_title">WM8994-Steuerung aktivieren</string>
+ <string name="pref_wm8994_control_enable_summary">Erweiterte Steuerung des WM8994-Codecs</string>
+ <string name="pref_wm8994_speaker_tuning_title">Für Musik abstimmen</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Rekonfiguriert den Hardware EQ für mehr Bass und ein ausgewogenes Klangbild</string>
+ <string name="pref_wm8994_mono_downmix_title">Mono-Downmix</string>
+ <string name="pref_wm8994_mono_downmix_summary">Stereo zu Mono heruntermischen (Für Stereo Ausgänge wie z.B. Kopfhörer)</string>
+ <string name="pref_wm8994_stereo_expansion_title">Stereoverbreiterung</string>
+ <string name="pref_wm8994_stereo_expansion_summary">Stereo durch digitale Signalverarbeitung verbreitern</string>
+ <string name="pref_wm8994_dac_direct_title">Direktzugriff D/A-Wandler</string>
+ <string name="pref_wm8994_dac_direct_summary">Direktzugriff auf den D/A-Wandler durch umgehen des Kanalmischers. Erzeugt saubereren Klang (höheres Signal-Rausch-Verhältnis)</string>
+ <string name="pref_wm8994_dac_osr128_title">Hi-Fi-Wiedergabe</string>
+ <string name="pref_wm8994_dac_osr128_summary">D/A-Wandler 128x Oversampling — Sauberer Klang bei Musikwiedergabe</string>
+ <string name="pref_wm8994_adc_osr128_title">Hi-Fi-Aufnahme</string>
+ <string name="pref_wm8994_adc_osr128_summary">A/D-Wandler 128x Oversampling — Erhöht die Aufnahmequalität</string>
+ <string name="pref_wm8994_fll_tuning_title">Stabilisierter Audio-Takt</string>
+ <string name="pref_wm8994_fll_tuning_summary">Stabilisierten WM8994-Audio-Takt benutzen — Verbessert die Klangqualität</string>
+ <string name="help_title">Über</string>
+ <string name="help_text"><b>Was ist der DSP Manager?</b>
+\nDer DSP Manager (Digital Signal Processing) ist eine Anwendung, mit der die Audioausgabe beeinflusst werden kann. Die Signalverarbeitung findet nicht im DSP Manager statt, sondern wird durch diesen gesteuert. Der DSP Manager kann von allen zu den Android-Audioeffekten kompatiblen Anwendungen verwendet werden.\n
+\n<b>Philosophie</b>
+\nCyanogenMod unterstützt vier verschiedene Audio-Ausgabewege:
+Kopfhörer, USB-Audio, Lautsprecher und Bluetooth-Geräte. Für jeden Ausgabeweg gibt es ein eigenes Konfigurationspanel, in dem die Besonderheiten des jeweiligen Ausgabeweges für ein optimales Hörerlebnis angepasst werden können.
+\nIm Gegensatz zu den AOSP-Audioeffekten gibt es keine anwendungsspezifischen Einstellungen. Dies wurde mit Absicht so konzipiert, denn die Audio-Ausgabe ist uns wichtig, nicht die Anwendung, welche die (Audio-)Daten an den DSP Manager übergibt.\n
+\n<b>Effekte</b>
+\n1. <b>Dynamikumfangskompression</b>
+\nDie Lautstärke wird an einen durchschnittlichen Hörer angepasst. Die Audiowiedergabe soll durch diesen Effekt weniger von Hintergrundgeräuschen, z.B. Straßenlärm, übertönt werden.
+\nDer Effektstärke-Regler bestimmt, wie stark der DSP Manager die Lautstärke des Tones beeinflussen soll. Für diesen DSP-Effekt gibt es keinen entsprechendenen AOSP-Effekt.\n
+\n2. <b>Bassverstärkung</b>
+\nDie Bassverstärkung wird durch einen Tiefpassfilter erzeugt, wobei versucht wird, die Betonung auf den Bass zu legen. Die Intensität der Verstärkung kann in den Einstellung geregelt werden.\n
+\n3. <b>Equalizer</b>
+\nEs handelt sich hier um einen Equalizer mit Frequenzbändern bei 16, 64, 250, 1000, 4000 und 16000 Hz. Einige gemeinsame Voreinstellungen sind verfügbar, außerdem kann der Frequenzgang durch Berühren des Equalizer-Graphen angepasst werden. Der Effekt sollte dafür benutzt werden, den Frequenzgang an den persönlichen Geschmack oder den Besonderheiten der Kopfhörer oder Lautsprecher abzustimmen.
+\nBei Verwendung eines kabelgebundenen Kopfhörers erlaubt der Equalizer auch eine Loudness-Kompensation, welche die durch den Schalldruckpegel am Ohr des Benutzers entstehenden Frequenzveränderungen ausgleicht. Damit der gewünschte Effekt eintritt, muss zuerst im entsprechenden Menü der richtige Wert gewählt werden.\n
+\nUm die Effektstärke der Loudness-Kompensation einzustellen, sollte breitbandige Musik, z.B. Rock oder Metal, leise abgespielt werden. Man sollte versuchen, eine Einstellung zu finden, bei der die Hörbarkeit des Basses gesteigert wird, aber noch nicht hervorsticht. Nachdem die Kompensation richtig konfiguriert wurde, sollte der Bass-Pegel, unabhängig von der Hörlautstärke im Vergleich zum Pegel der anderen Instrumente, gleich bleiben. Wenn mit steigender Hörlautstärke die Musik basslastig wird, ist die Kompensation wahrscheinlich zu stark und sollte reduziert werden.
+\nDie Loudness-Kompensation wirkt zusätzlich zur gewählten Einstellung des Equalizers. Falls nur eine Kompensation erwünscht ist, sollte die Equalizer-Voreinstellung "Aus" gewählt werden.\n
+\n4. <b>Virtueller Raumklang</b>
+\nDer "Headset-Filter" ist ein "Crossfeed-Design", das von der berühmten bs2b-Analogschaltung inspiriert wurde. Er lässt Monosignale unverändert passieren; lediglich das Differenzsignal wird mittels eines Tiefpassfilters beeinflusst. Der Filter erzeugt gleichzeitig einen Kopfschatteneffekt und eine interaurale Laufzeitdifferenz, um dem Hörer einen korrekten psychoakustischen Eindruck zu vermitteln. Dahinter steckt die Absicht, den Benutzer vor einer Hörermüdung durch unplausible Stereo-Trennung zu schützen. Der Effekt sollte bei allen Stereo-Kopfhörern verwendet werden.
+\nDa das Mischen die (Stereo-)Kanaltrennung reduziert, entsteht ein Echo-Effekt, der für die Erhöhung der Basisbreite verwendet werden kann. Dieser Effekt wird durch die Raumtyp-Einstellung beinflusst.</string>
+</resources>
diff --git a/res/values-el/arrays.xml b/res/values-el/arrays.xml
new file mode 100644
index 0000000..beb7c2a
--- /dev/null
+++ b/res/values-el/arrays.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>Αρχικό</item>
+ <item>Ισορροπημένο</item>
+ <item>Υψηλή ευαισθησία</item>
+ <item>Loud Environment</item>
+ </string-array>
+ <string-array name="headphone_modes">
+ <item>Studio</item>
+ <item>Δωμάτιο</item>
+ <item>Μεγάλο δωμάτιο</item>
+ <item>Σκηνή</item>
+ </string-array>
+ <string-array name="equalizer_loudness_modes">
+ <item>Απενεργοποιημένη</item>
+ <item>Ασθενέσθατη</item>
+ <item>Ασθενέστερη</item>
+ <item>Ασθενής</item>
+ <item>Ισχυρή</item>
+ <item>Ισχυρότερη</item>
+ <item>Ισχυρότατη</item>
+ </string-array>
+ <string-array name="compression_modes">
+ <item>Μικρή</item>
+ <item>Μεσαία</item>
+ <item>Μεγάλη</item>
+ </string-array>
+ <string-array name="bassboost_modes">
+ <item>Μικρή</item>
+ <item>Μεσαία</item>
+ <item>Μεγάλη</item>
+ </string-array>
+ <string-array name="wm8994_bassboost_modes">
+ <item>Κανονική</item>
+ <item>Μικρά ηχεία</item>
+ </string-array>
+</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
new file mode 100644
index 0000000..8f40c35
--- /dev/null
+++ b/res/values-el/strings.xml
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name">DSP Manager</string>
+ <string name="select_configuration_title">Επιλέξτε ρύθμιση για επεξεργασία</string>
+ <string name="headset_title">Ακουστικά</string>
+ <string name="speaker_title">Ηχείο</string>
+ <string name="bluetooth_title">Bluetooth</string>
+ <string name="usb_title">USB/Βάση σύνδεσης</string>
+ <string name="audio_effects">Ηχητικά εφέ</string>
+ <string name="pref_unavailable">Η λειτουργία δεν είναι διαθέσιμη στη συσκευή σας</string>
+ <string name="dsp_settings_headset">Ρυθμίσεις DSP - Ακουστικά</string>
+ <string name="dsp_settings_speaker">Ρυθμίσεις DSP - Ηχείο</string>
+ <string name="dsp_settings_bluetooth">Ρυθμίσεις DSP - Συσκευή Bluetooth</string>
+ <string name="dsp_settings_usb">Ρυθμίσεις DSP - Συσκευή USB</string>
+ <string name="dsp_settings_wm8994">Ρυθμίσεις DSP - WM8994</string>
+ <string name="pref_dsp_title">Συμπίεση δυναμικού εύρους</string>
+ <string name="pref_dsp_summary_on">Συμπίεση ενεργοποιημένη</string>
+ <string name="pref_dsp_summary_off">Συμπίεση απενεργοποιημένη</string>
+ <string name="pref_dsp_enable">Ενεργοποίηση</string>
+ <string name="pref_effect_title">Επίδραση εφέ</string>
+ <string name="dialog_effect">Επίδραση εφέ</string>
+ <string name="pref_equalizer_title">Ισοσταθμιστής</string>
+ <string name="pref_equalizer_summary_on">Ισοσταθμιστής ενεργοποιημένος</string>
+ <string name="pref_equalizer_summary_off">Ισοσταθμιστής απενεργοποιημένος</string>
+ <string name="pref_equalizer_enable">Ενεργοποίηση</string>
+ <string name="pref_equalizer_preset_title">Επιλογή προκαθορισμένου</string>
+ <string name="pref_equalizer_loudness_title">Ενίσχ. υψηλών και χαμηλών συχν.</string>
+ <string name="pref_bassboost_title">Ενίσχυση μπάσου</string>
+ <string name="pref_bassboost_summary_on">Ενίσχυση μπάσου ενεργοποιημένη</string>
+ <string name="pref_bassboost_summary_off">Ενίσχυση μπάσου απενεργοποιημένη</string>
+ <string name="pref_bassboost_enable">Ενεργοποίηση</string>
+ <string name="pref_headset_virtual_title">Εφέ φίλτρου ακουστικών</string>
+ <string name="pref_headset_virtual_summary_on">Εφέ φίλτρου ακουστικών ενεργοποιημένο</string>
+ <string name="pref_headset_virtual_summary_off">Εφέ φίλτρου ακουστικών απενεργοποιημένο</string>
+ <string name="pref_headset_virtual_enable">Ενεργοποίηση</string>
+ <string name="pref_room_title">Επιλογή τύπου δωματίου</string>
+ <string name="dialog_room">Τύπος δωματίου</string>
+ <string name="menu_reset">Επαναφορά</string>
+ <string name="eq_preset_acoustic">Ακουστική</string>
+ <string name="eq_preset_bass_booster">Ενίσχυση μπάσου</string>
+ <string name="eq_preset_bass_reducer">Μείωση μπάσου</string>
+ <string name="eq_preset_classical">Κλασική</string>
+ <string name="eq_preset_deep">Deep</string>
+ <string name="eq_preset_flat">Επίπεδο</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">Ροκ</string>
+ <string name="eq_preset_small_speakers">Μικρά ηχεία</string>
+ <string name="eq_preset_treble_booster">Ενίσχυση πρίμα</string>
+ <string name="eq_preset_treble_reducer">Μείωση πρίμα</string>
+ <string name="eq_preset_vocal_booster">Ενίσχυση φωνητικών</string>
+ <string name="eq_preset_custom">Προσαρμοσμένο</string>
+ <string name="category_wm8994_internal_speaker">Ηχείο</string>
+ <string name="category_wm8994_signal_processing">Επεξεργασία σήματος</string>
+ <string name="category_wm8994_headphone_amp">Ακουστικά</string>
+ <string name="category_wm8994_codec_optimization">Βελτιστοποίηση κωδικοποιητή</string>
+ <string name="category_wm8994_dac_config">Ρυθμίσεις μετατροπέα ψηφιακού/αναλογικού</string>
+ <string name="category_wm8994_analog_path">Ρύθμιση διαδρομής αναλογικού</string>
+ <string name="category_wm8994_mic_settings">Ρυθμίσεις μικροφώνου</string>
+ <string name="category_wm8994_microphone_recording">Μικρόφωνο</string>
+ <string name="wm8994_settings_title_head">Ρυθμίσεις ήχου</string>
+ <string name="wm8994_settings_title_subhead">Ρυθμίσεις ήχου</string>
+ <string name="wm8994_settings_summary_head">Προηγμένος έλεγχος του επεξεργαστή ήχου WM8994</string>
+ <string name="pref_wm8994_microphone_recording_title">Προεπιλογές εγγραφής</string>
+ <string name="pref_wm8994_headphone_amp_title">Επίπεδο ενισχυτή</string>
+ <string name="pref_wm8994_headphone_amp_summary">Προσαρμογή αναλογικού κέρδους</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Επίπεδο ενισχυτή ακουστικών</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Αναλογικό κέρδος</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Ενίσχυση μπάσων</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Προηγμένος έλεγχος της ενίσχυσης μπάσων</string>
+ <string name="pref_wm8994_bass_boost_title">Εύρος ενίσχυσης μπάσων</string>
+ <string name="pref_wm8994_bass_boost_summary">Προηγμένος έλεγχος δυναμικού εύρους</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Προεπιλογή ενίσχυσης μπάσων</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Ενίσχυση μπάσων</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Κέρδος</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Εύρος ενίσχυσης μπάσων</string>
+ <string name="pref_wm8994_control_enable_title">Ενεργοποίηση ελέγχου WM8994</string>
+ <string name="pref_wm8994_control_enable_summary">Προηγμένος έλεγχος του επεξεργαστή ήχου WM8994</string>
+ <string name="pref_wm8994_speaker_tuning_title">Ρύθμιση για μουσική</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Ρυθμίζει τον ισοσταθμιστή για περισσότερα μπάσα και ισορροπημένο ήχο</string>
+ <string name="pref_wm8994_mono_downmix_title">Μίξη στέρεο σε μόνο</string>
+ <string name="pref_wm8994_mono_downmix_summary">Μίξη στερεοφωνικού ήχου σε μονοφωνικό (για στερεοφωνικές εξόδους όπως ακουστικά)</string>
+ <string name="pref_wm8994_stereo_expansion_title">Επέκταση στέρεο</string>
+ <string name="pref_wm8994_stereo_expansion_summary">“Επέκταση” στερεοφωνικού ήχου μέσω ψηφιακής επεξεργασίας σήματος</string>
+ <string name="pref_wm8994_dac_direct_title">Άμεση προσβ. ψηφ./αν.</string>
+ <string name="pref_wm8994_dac_direct_summary">Άμεση πρόσβαση στον ψηφιακό / αναλογικό μετατροπέα, παρακάμπτοντας τον μικτη. Παράγει καθαρότερο ήχο (υψηλότερο λόγο σήματος-προς-θόρυβο)</string>
+ <string name="pref_wm8994_dac_osr128_title">Αναπαραγωγή Hi-fi</string>
+ <string name="pref_wm8994_dac_osr128_summary">128x oversampling στον ψηφιακό-σε-αναλογικό μετατροπέα — καθαρότερος ήχο κατά την αναπαραγωγή μουσικής</string>
+ <string name="pref_wm8994_adc_osr128_title">Εγγραφή Hi-fi</string>
+ <string name="pref_wm8994_adc_osr128_summary">128x oversampling στον ψηφιακό-σε-αναλογικό μετατροπέα — αυξημένη ποιότητα ηχογραφήσεων</string>
+ <string name="pref_wm8994_fll_tuning_title">Βελτιωμένο audio clock</string>
+ <string name="pref_wm8994_fll_tuning_summary">Χρήση βελτιωμένου audio clock στο WM8994 — βελτιώνει την ποιότητα του ήχου</string>
+ <string name="help_title">Βοήθεια</string>
+ <string name="help_text"><b>Τι είναι το DSP Manager;</b>
+\n\n
+Το DSP Manager είναι μια εφαρμογή προενίσχυσης-ισοστάθμισης ήχου.
+<i>DSP</i> σημαίνει Ψηφιακή Επεξεργασία Σήματος (Digital Signal Processing)
+και <i>Manager</i> αναφέρεται στο γεγονός ότι το DSP στην πραγματικότητα
+δεν λειτουργεί αποκλειστικά ως εφαρμογή, αλά ως διαχειριστής επεξεργασίας ήχου
+για εφαρμογές που είναι συμβατές με τις προδιαγραφές εφέ ήχου του Android,
+δηλαδή οι περισσότερες εφαρμογές αναπαραγωγής μουσικής.
+\n\n\n
+<b>Φιλοσοφία</b>
+\n\n
+Ο επεξεργαστής ήχου του CyanogenMod υποστηρίζει τέσσερις διαφορετικές κατηγορίες
+εξόδου ήχου: ενσύρματα ακουστικά, συσκευές ήχου USB, ηχείο τηλεφώνου, ακουστικά bluetooth.
+Υπάρχει ξεχωριστό πλαίσιο ρύθμισης για κάθε κατηγορία.
+Η φιλοσοφία του DSP Manager είναι να διορθώνει τις ιδιαίτερες ατέλειες του ήχου
+προκειμένου να επιτευχθεί η πλέον βέλτιστη εμπειρία ακρόασης για τον κάθε χρήστη.
+\n\n
+Σε αντίθεση με τα εφέ ήχου του AOSP, δεν υπάρχουν ξεχωριστές ρυθμίσεις ανά εφαρμογή.
+Αυτό είναι μια σκόπιμη επιλογή του σχεδιασμού: μας ενδιαφέρει η ποιότητα του ήχου
+γενικά και όχι ο ήχος που παράγει η κάθε εφαρμογή.
+\n\n\n
+<b>Χαρακτηριστικά</b>
+\n\n
+1. <b>Δυναμική συμπίεση φάσματος (DRC)</b>
+\n\n
+Αυτό το εφέ εκτιμά την ένταση του ήχου, όπως γίνεται αντιληπτό από το αυτί του
+μέσου ακροατή, το οποίο και ρυθμίζεται ανάλογα της εκτίμησης. Η κύρια χρήση του
+είναι σε θορυβώδη περιβάλλοντα, όπως στο αυτοκίνητο ή στο δρόμο, όπου χαμηλής
+έντασης ήχοι αλλοιώνονται από τον γύρω θόρυβο.
+\n\n
+Ανάλογα με την επιλογή της επίδρασης, καθορίζουμε το πόσο σκληρά θα δουλέψει
+το DSP Manager, για να διατηρήσει την ένταση στο επίπεδο-στόχο.
+Δεν υπάρχει ανάλογο DSP εφέ ήχου στο AOSP.
+\n\n\n
+2. <b>Ενίσχυση μπάσων</b>
+\n\n
+Η ενίσχυση μπάσων είναι ένα απλό φίλτρο χαμηλών συχνοτήτων το οποίο
+χρησιμοποιείται για να δώσει έμφαση στα 55 Hz και στις χαμηλότερες συχνότητες.
+Η ενίσχυση είναι περίπου 6 db και ρυθμίζεται ανάλογα με
+την επιλογή \'Επίδραση εφέ\' και ενισχύει το φάσμα των 55 Hz δίνοντας έτσι
+στην συχνότητα παραπάνω έμφαση. Το εφέ αυτό έχει σχεδιαστεί για την καταπολέμηση
+της απώλειας των μπάσων σε ηχεία μικρών διαστάσεων και ακουστικών (supra-aural),
+που δεν εφαρμόζουν καλά στο αυτί.
+\n\n\n
+3. <b>Ισοσταθμιστής</b>
+\n\n
+Είναι ένας 6-κάναλος ισοσταθμιστής με κανάλια 16, 64, 250, 1000, 4000 και 16000 Hz
+και με κάποιες κοινές προκαθορισμένες ρυθμίσεις. Πατώντας πάνω στο γράφημα,
+μπορούμε να περάσουμε στην προσαρμοσμένη ρύθμιση. Το εφέ αυτό χρησιμοποιείται για
+την ρύθμιση του ήχου ανάλογα με της ακουστικές προτιμήσεις του καθενός και
+ανάλογα με τον τύπο τον ακουστικών η ηχείων που χρησιμοποιεί.
+\n\n
+Ο Ισοσταθμιστής περιέχει επίσης ένα φίλτρο αντιστάθμισης έντασης ήχου, το οποίο
+ισοσταθμίζει τις αλλαγές στην απόκριση συχνοτήτων του αυτιού, με βάση τη στάθμη
+της πίεσης του ήχου που φτάνει στο αυτί του χρήστη.
+Απαιτείται η χρήση ενσύρματων ακουστικών, και η τιμή της παραμέτρου πρέπει να
+συντονιστεί σωστά για να λειτουργήσει έτσι όπως έχει σχεδιαστεί.
+\n\n
+Για την ορθή ρύθμιση της έντασης αντιστάθμισης ήχου, χαμηλώστε την φωνή στο
+χαμηλότερο επίπεδο και χρησιμοποιείστε μουσική με ευρύ φάσμα συχνοτήτων, θορυβώδη
+όπως rock η metal. Ρυθμίστε το μπάσο έτσι ώστε να ακούγετε έντονα αλά ομοιόμορφα
+με το υπόλοιπο υλικό. Αν η αντιστάθμιση έχει ρυθμιστεί σωστά, τότε το μπάσο πρέπει
+να ακούγετε ομοιόμορφα σε σχέση με τα υπόλοιπα όργανα, ανεξαρτήτως
+του επιπέδου της φωνής. Αν όμως ακούγεται βαρύ μπάσο σε υψηλότερα επίπεδα φωνής,
+τότε η αντιστάθμιση είναι πολύ ψηλά και θα πρέπει να μειωθεί.
+\n\n
+Η αντιστάθμιση ήχου προστίθεται στις ρυθμίσεις του ισοσταθμίστη. Εάν μόνο
+το εφέ αντιστάθμισης ήχου είναι επιθυμητό, ο ισοσταθμιστής πρέπει να παραμείνει
+στην επιλογή \'Επίπεδο\'.
+\n\n\n
+4. <b>Εφέ φίλτρου ακουστικών</b>
+\n\n
+Το εφέ φίλτρου ακουστικών είναι εμπνευσμένο από το διάσημο αναλογικό ηλεκτρονικό
+κύκλωμα bs2b (Bauer stereophonic-to-binaural DSP). Αρχικά οι μουσικές συνθέσεις
+ήταν προορισμένες να ακούγονται από ηχεία σε Hi Fi συστήματα ήχου όπου το κάθε
+κανάλι ακούμε και με τα δυο αυτιά μας, όμως με διαφορετική ένταση και καθυστέρηση.
+Με την ακρόαση της μουσικής με τα \'stereo\' ακουστικά δε συμβαίνει το ίδιο.
+Δημιουργείται ένα εφέ που ονομάζεται \'Superstereo effect\' το οποίο κουράζει πολύ
+τον ακροατή. Ο τρόπος λειτουργίας του φίλτρου είναι ο εξής. Το μονοφωνικό κομμάτι
+της μουσικής, που ακούγεται το ίδιο και στα δυο ακουστικά, μένει ανεπηρέαστο
+από το φίλτρο. Αντίθετα οι ήχοι που ακούγονται σε κάθε κανάλι ξεχωριστά, περνάνε
+μέσα από ένα \'lowpass\' φίλτρο το οποίο \'καθορίζει\' την ακουστική \'σκιά\' του
+κεφαλιού και την καθυστέρηση του ήχου στο εσωτερικό του αυτιού. Με αποτέλεσμα να
+δημιουργείται μία σωστή ψυχοακουστική εμπειρία για τον ακροατή. Αυτό το εφέ
+επιβάλλεται να είναι ενεργοποιημένο κάθε φορά που ακούμε μουσική από τα \'stereo\'
+ακουστικά μας.
+\n\n
+Επειδή η μίξη μειώνει το στερεοφωνικό διαχωρισμό, υπάρχει ένα εφέ αντήχησης
+το οποίο μπορεί να χρησιμοποιηθεί για να διατηρήσει το στερεοφωνικό εύρος.
+Αυτό ελέγχεται από την επιλογή \'Επιλογή τύπου δωματίου\'.</string>
+</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
new file mode 100644
index 0000000..eebf817
--- /dev/null
+++ b/res/values-en-rGB/strings.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="pref_equalizer_title">Equaliser</string>
+ <string name="pref_equalizer_summary_on">Equaliser is enabled</string>
+ <string name="pref_equalizer_summary_off">Equaliser is disabled</string>
+ <string name="category_wm8994_codec_optimization">Codec optimisation</string>
+ <string name="category_wm8994_dac_config">Digital/Analogue converter settings</string>
+ <string name="category_wm8994_analog_path">Analogue path configuration</string>
+ <string name="pref_wm8994_headphone_amp_summary">Customise the analogue gain</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Analogue gain</string>
+ <string name="pref_wm8994_dac_direct_summary">Access digital/analogue converter directly, bypassing the channel mixer. Produces cleaner audio (higher signal-to-noise ratio)</string>
+ <string name="pref_wm8994_dac_osr128_summary">Digital-to-analogue converter 128x oversampling — cleaner sound when playing music</string>
+ <string name="pref_wm8994_adc_osr128_summary">Analogue-to-digital converter 128x oversampling — increases quality of recordings</string>
+ <string name="help_text"><b>What is DSP Manager?</b>
+\n\n
+DSP Manager is a per-output audio adjustment app. <i>DSP</i> stands for
+Digital Signal Processing, and the <i>Manager</i> part refers to the fact that the
+DSP is actually not run inside the app itself; the manager can only
+enable it for apps which are compliant with Android\'s audio effect
+specification, i.e. most music players.
+\n\n\n
+<b>Philosophy</b>
+\n\n
+CyanogenMod\'s audio processing supports three different output categories:
+wired headset, phone speaker and bluetooth headset. There is a separate
+configuration panel for each output category. DSP Manager\'s philosophy is to
+correct each audio output\'s particular deficiencies in order to reach the most
+optimal listening experience with each.
+\n\n
+Unlike with AOSP audio effects, there are no per-app settings. This is
+a deliberate design choice: it is the output we care about, not which
+app generates the audio for DSP Manager to work with.
+\n\n\n
+<b>Features</b>
+\n\n
+1. <b>Dynamic range compression (DRC)</b>
+\n\n
+This effect estimates the loudness of the audio as perceived by an average
+listener and drives a gain control based on this estimate. The primary use case
+is with noisy environments such as in cars or on street, where quiet parts of
+music are in risk of being drowned out by background noise.
+\n\n
+The sole tunable determines how hard DSP Manager will try to maintain audio
+loudness at the target level. There is no AOSP equivalent for this DSP effect.
+\n\n\n
+2. <b>Bass boost</b>
+\n\n
+The bass boost is a simple low-pass filter which can be used to add an emphasis
+at 55 Hz and lower frequencies. The boost is around 6 dB, and modified by the
+\'strength\' parameter, which adds filter resonance at the 55 Hz band, giving
+that frequency extra emphasis. The effect is designed to combat loss of bass
+frequency common with small speakers and supra-aural headsets which do not
+couple tightly with user\'s ear canal.
+\n\n\n
+3. <b>Equaliser</b>
+\n\n
+This is a 6-band equaliser with bands at 16, 64, 250, 1000, 4000 and 16000 Hz.
+Some common presets are provided, and the frequency response can also be
+customised by tapping on the equaliser graph. The effect should be used to tune
+the frequency response to user\'s personal taste, or to the particular
+capabilities of the available headset or speakers.
+\n\n
+Equaliser also contains a loudness compensation filter, which equalises the
+changes in ear frequency response based on the sound pressure level which
+reaches the user\'s ear. Use of a wired headset is required, and the strength
+parameter value must be tuned correctly before the effect will work as
+designed.
+\n\n
+To select the right value for the compensation strength, use the quietest music
+volume, and choose some wide-spectrum noisy music such as rock or metal. Try
+to find a setting where the bass is boosted back into audibility and seems
+balanced with the rest of the material. After the compensation has been
+correctly configured, bass should remain at the same level relative to the
+other instruments regardless of the listening level. On the other hand, if
+music starts to sound bass heavy at higher listening levels, the compensation
+is probably set too strong, and should be reduced.
+\n\n
+The compensation is added to the user\'s chosen adjustments. If only compensation
+is desired, the equaliser should be left at the \'Flat\' setting.
+\n\n\n
+4. <b>Headset Filter</b>
+\n\n
+The headset filter is a crossfeed design inspired by the famous bs2b analogue
+circuit. The effect passes mono sound unchanged, and adjusts the difference
+signal through a low-pass filter which approximates both head shadow and
+interaural delay at once, giving right kind of psychoacoustic clues for user\'s
+ears. The intention is to prevent listener fatigue arising from the
+implausible stereo separation inherent with all headsets. The effect should be
+enabled whenever using stereo headsets.
+\n\n
+Because the mixing reduces the stereo separation somewhat, there is a
+Haas-effect reverb, which can be used to increase the perceived stereo image
+width. This is controlled by the \'Room type\' control.</string>
+</resources>
diff --git a/res/values-es-rXA/arrays.xml b/res/values-es-rXA/arrays.xml
new file mode 100644
index 0000000..239f5da
--- /dev/null
+++ b/res/values-es-rXA/arrays.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2014 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>Orixinal</item>
+ <item>Equilibráu</item>
+ <item>Alta sensibilidá</item>
+ <item>Entornu ruidosu</item>
+ </string-array>
+
+ <string-array name="headphone_modes">
+ <item>Estudiu</item>
+ <item>Habitación</item>
+ <item>Gran habitación</item>
+ <item>Escenariu</item>
+ </string-array>
+
+ <string-array name="equalizer_loudness_modes">
+ <item>Deshabilitada</item>
+ <item>Mui feble</item>
+ <item>Feble</item>
+ <item>Llixera</item>
+ <item>Moderada</item>
+ <item>Fuerte</item>
+ <item>Mui fuerte</item>
+ </string-array>
+
+ <string-array name="compression_modes">
+ <item>Llixeru</item>
+ <item>Moderáu</item>
+ <item>Fuerte</item>
+ </string-array>
+
+ <string-array name="bassboost_modes">
+ <item>Llixeru</item>
+ <item>Moderáu</item>
+ <item>Fuerte</item>
+ </string-array>
+
+ <string-array name="wm8994_bassboost_modes">
+ <item>Estándar</item>
+ <item>Altavoces pequeños</item>
+ </string-array>
+
+</resources>
diff --git a/res/values-es-rXA/strings.xml b/res/values-es-rXA/strings.xml
new file mode 100644
index 0000000..c1ffecb
--- /dev/null
+++ b/res/values-es-rXA/strings.xml
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2014 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name">Ecualizador</string>
+ <string name="select_configuration_title">Esbillar configuración a editar</string>
+ <string name="headset_title">Auriculares</string>
+ <string name="speaker_title">Altavoz</string>
+ <string name="bluetooth_title">Bluetooth</string>
+ <string name="usb_title">USB/Base</string>
+ <string name="audio_effects">Filtros d\'audio</string>
+ <string name="pref_unavailable">Funcionalidá non disponible pal preséu</string>
+ <string name="dsp_settings_headset">Axustes - Auriculares</string>
+ <string name="dsp_settings_speaker">Axustes - Altavoces</string>
+ <string name="dsp_settings_bluetooth">Axustes - Bluetooth</string>
+ <string name="dsp_settings_usb">Axustes - Preséu USB</string>
+ <string name="dsp_settings_wm8994">Axustes - WM8994</string>
+ <string name="pref_dsp_title">Rangu de Compresión Dinámica</string>
+ <string name="pref_dsp_summary_on">Compresión activada</string>
+ <string name="pref_dsp_summary_off">Compresión desactivada</string>
+ <string name="pref_dsp_enable">Habilitar</string>
+ <string name="pref_effect_title">Intensidá del efeutu</string>
+ <string name="dialog_effect">Intensidá del efeutu</string>
+ <string name="pref_equalizer_title">Ecualizador</string>
+ <string name="pref_equalizer_summary_on">Ecualizador activáu</string>
+ <string name="pref_equalizer_summary_off">Ecualizador desactiváu</string>
+ <string name="pref_equalizer_enable">Habilitar</string>
+ <string name="pref_equalizer_preset_title">Predefiníu</string>
+ <string name="pref_equalizer_loudness_title">Compensación sonora</string>
+ <string name="pref_bassboost_title">Bass Boost</string>
+ <string name="pref_bassboost_summary_on">Bass Boost activáu</string>
+ <string name="pref_bassboost_summary_off">Bass Boost desactiváu</string>
+ <string name="pref_bassboost_enable">Habilitar</string>
+ <string name="pref_headset_virtual_title">Efeutos de sala n\'auriculares</string>
+ <string name="pref_headset_virtual_summary_on">Efeutos de sala activaos</string>
+ <string name="pref_headset_virtual_summary_off">Efeutos de sala desactivaos</string>
+ <string name="pref_headset_virtual_enable">Habilitar</string>
+ <string name="pref_room_title">Esbilla tipu d\'habitación</string>
+ <string name="dialog_room">Tipu d\'habitación</string>
+ <string name="menu_reset">Restaurar</string>
+ <string name="eq_preset_acoustic">Acústicu</string>
+ <string name="eq_preset_bass_booster">Potenciar baxos</string>
+ <string name="eq_preset_bass_reducer">Amenorgar baxos</string>
+ <string name="eq_preset_classical">Clásica</string>
+ <string name="eq_preset_deep">Profunda</string>
+ <string name="eq_preset_flat">Plana</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">Rock</string>
+ <string name="eq_preset_small_speakers">Altavoces pequeños</string>
+ <string name="eq_preset_treble_booster">Potenciar agudos</string>
+ <string name="eq_preset_treble_reducer">Amenorgar agudos</string>
+ <string name="eq_preset_vocal_booster">Potenciador vocal</string>
+ <string name="eq_preset_custom">Personalizáu</string>
+ <string name="category_wm8994_internal_speaker">Altavoz</string>
+ <string name="category_wm8994_signal_processing">Procesamientu de señal</string>
+ <string name="category_wm8994_headphone_amp">Auriculares</string>
+ <string name="category_wm8994_codec_optimization">Optimización de códec</string>
+ <string name="category_wm8994_dac_config">Axustes de conversión dixital/analóxicu</string>
+ <string name="category_wm8994_analog_path">Configuración de ruta analóxica</string>
+ <string name="category_wm8994_mic_settings">Axustes de micrófonu</string>
+ <string name="category_wm8994_microphone_recording">Micrófonu</string>
+ <string name="wm8994_settings_title_head">Axustes de soníu</string>
+ <string name="wm8994_settings_title_subhead">Axustes de soníu</string>
+ <string name="wm8994_settings_summary_head">Axustes avanzaos del procesador de soníu WM8994</string>
+ <string name="pref_wm8994_microphone_recording_title">Grabación predefinida</string>
+ <string name="pref_wm8994_headphone_amp_title">Nivel del amplificador</string>
+ <string name="pref_wm8994_headphone_amp_summary">Personalizar ganancia analóxica</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Nivel del amplificador d\'auriculares</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Ganancia analóxica</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Bass Boost</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Axustes avanzaos de Bass Boost</string>
+ <string name="pref_wm8994_bass_boost_title">Rangu Bass Boost</string>
+ <string name="pref_wm8994_bass_boost_summary">Xestión avanzada de rangu dinámicu</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Bass Bost predefiníu</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Bass Boost</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Ganancia</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Rangu Bass Boost</string>
+ <string name="pref_wm8994_control_enable_title">Habilitar axustes WM8994</string>
+ <string name="pref_wm8994_control_enable_summary">Axustes avanzaos del procesador de soníu WM8994</string>
+ <string name="pref_wm8994_speaker_tuning_title">Axustes de música</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Reconfigurar el hardware del ecualizador pa obtener un soníu más baxu y balanceáu</string>
+ <string name="pref_wm8994_mono_downmix_title">Mecer mono</string>
+ <string name="pref_wm8994_mono_downmix_summary">Mecer soníu estereu con mono (pa salides estereu, tales como auriculares)</string>
+ <string name="pref_wm8994_stereo_expansion_title">Espansión estereu</string>
+ <string name="pref_wm8994_stereo_expansion_summary">Espander el soníu estereu al traviés del procesamientu de señales dixitales</string>
+ <string name="pref_wm8994_dac_direct_title">Acceso D/A direutu</string>
+ <string name="pref_wm8994_dac_direct_summary">Acceder conversor dixital/analóxicu direutamente, pasando per alto la canal del entemecedor. Fai un soníu más llimpiu (un mayor ratio de señal-a-soníu)</string>
+ <string name="pref_wm8994_dac_osr128_title">Reproducción Hi-Fi</string>
+ <string name="pref_wm8994_dac_osr128_summary">Sobremuestréu a 128x de conversión dixital-a-analóxicu (llimpia\'l soníu mientres se reproduz música)</string>
+ <string name="pref_wm8994_adc_osr128_title">Grabación Hi-Fi</string>
+ <string name="pref_wm8994_adc_osr128_summary">Sobremuestréu a 128x de conversión analóxicu-a-digital (incrementa la calidá de les grabaciones)</string>
+ <string name="pref_wm8994_fll_tuning_title">Reló d\'audio axustáu</string>
+ <string name="pref_wm8994_fll_tuning_summary">Usar reló d\'audio WM8994 axustáu (meyora la calidá del soníu)</string>
+ <string name="help_title">Ayuda</string>
+ <string name="help_text"><b>¿Qué ye DSP Manager?</b>
+\n\n
+DSP Manager (Ecualizador) ye una aplicación pal axuste del soníu.
+<i>DSP</i> significa Digital Signal Processing (Procesamientu de Señal Dixital),
+y <i>Manager</i> (xestor o alministrador) refierse al fechu de que\'l DSP nun
+funciona anguaño dientro de l\'aplicación en sí mesma, y tendrá de ser el xestor
+el qu\'habilite\'l so usu pa otres aplicaciones que seyan compatibles cola
+especificación d\'audio d\'Android, como por exemplu la mayoría de los
+reproductores de música.
+\n\n\n
+<b>Filosofía</b>
+\n\n
+El procesamientu d\'audio de CyanogenMod soporta cuatro categoríes distintes
+de salida d\'audio: Auriculares cableaos, altavoces internos del teléfonu,
+audio USB y auriculares Bluetooth. Hai un panel de configuración separtáu pa
+cada categoría de salida d\'audio. La filosofía de DSP Manager ye correxir en
+la salida d\'audio les deficiencies particulares, col envís d\'algamar
+la más óptima esperiencia de soníu en cada una d\'elles.
+\n\n
+A diferencia de los efeutos d\'audio AOSP, equí nun esisten axustes por aplicación.
+Esta ye una decisión deliberada: tratar de centrase na salida d\'audio y non
+nes aplicaciones que xeneren audio nes que DSP Manager tenga de funcionar.
+\n\n\n
+<b>Carauterístiques</b>
+\n\n
+El restu d\'esti documentu describe cada efeutu d\'audio y el so usu en cada
+escenariu.
+\n\n
+1. <b>Rangu de compresión dinámica (DRC)</b>
+\n\n
+Esti efeutu estima la reducción de ruíu percibida como una media del oyente
+y remana un control de ganancia basada nesta estimación. L\'usu principal
+ye pa entornos con un altu nivel de ruíu, tales como coches o la cai,
+au les partes con volume baxu de la música tán en riesgu de nun
+percibise pola mor del ruíu de fondu.
+\n\n
+Los axustes van determinar la fuercia cola que DSP Manager va caltener
+la reducción d\'audio nos niveles seleicionaos. Nun esiste equivalente en
+AOSP pa esti efeutu DSP.
+\n\n
+2. <b>Bass Boost</b>
+\n\n
+Bass Boost ye un filtru simple a baxu nivel que pue usase p\'amestar
+énfasis a frecuencies de 55 Hz y menores. La meyora ye d\'alrodiu de 6 dB,
+y modificada pol parámetru \u00ABIntensidá\u00BB, qu\'amiesta un filtru
+de resonancia na banda de 55 Hz, dando a tala frecuencia un énfasis
+adicional. L\'efeutu diséñase pa combatir la perda de la frecuencia de
+baxos nos altavoces y auriculares supra-aurales, que nun s\'acoplen
+dafechu col canal auditivu del usuariu.
+\n\n
+3. <b>Ecualizador</b>
+\n\n
+Esti ye un ecualizador a seis bandes, con bandes a 16, 64, 250, 1000, 4000
+y 16000 Hz. Apúrrense dalgunos axustes predeterminaos, y la frecuencia de
+rempuesta pue personalizase tamién, tocando sobre\'l gráficu del
+ecualizador. L\'efeutu tien d\'usase p\'axustar la frecuencia de rempuesta
+según el gustu personal del usuariu, o p\'axustase a les carauterístiques
+y capacidaes de los auriculares y altavoces disponibles.
+\n\n
+L\'ecualizador tamién contién un filtru de compensación sonora, qu\'iguala\'l
+cambéu na frecuencia de rempuesta nel oyíu, basáu nel nivel
+presión del soníu xeneráu nel oyíu del usuariu. L\'usu d\'auriculares
+cableaos ye necesariu, y el valor de la so intensidá va axustase
+correutamente pa que l\'efeutu pueda trabayar talo y como foi diseñáu.
+\n\n
+Pa seleicionar el valor correutu na compensación sonora, escucha
+música con un nivel de volume baxu, y escueyi dalgún tipu de música con un
+ampliu espectru de soníu, como\'l rock o\'l metal. Prueba entós a alcontrar
+un axuste au los baxos seyan potenciaos de nueves a niveles audibles y paezan
+balanceaos col restu de soníos. Dempués de que la compensación s\'heba
+configurao correcho, los baxos tendríen de tar nos mesmos
+niveles rellativos al del restu d\'otros instrumentos, independientemente del
+nivel de soníu. Per otru llau, si la música entama a oyise con frecuencies
+baxes enforma fuertes en niveles altos de soníu, dablemente la
+compensación s\'afitare mui fuerte, y tendrá d\'amenorgase.
+\n\n
+La compensación amestóse dientro de los axustes d\'usuariu. Si namái se
+quier usar compensación, entós l\'ecualizador tien d\'afitase
+al tipu d\'axuste \u00ABPlanu\u00BB.
+\n\n
+4. <b>Filtru d\'auriculares</b>
+\n\n
+El filtru d\'auriculares ye un diseñu inspiráu nel afamáu circuitu
+analóxicu \u00ABbs2b\u00BB. L\'efeutu dexa ensin cambeos el soníu mono, y axusta
+la diferencia de señal al traviés del filtru de baxu nivel, qu\'avera
+tanto l\'audio na tiesta como\'l retardu interaural al empar, dando\'l
+correutu efeutu psicoacústicu al oyíu del usuariu. La intención ye prevenir
+la creciente fatiga auditiva pola increíble separtación estereu, inherente
+a tolos auriculares. L\'efeutu tien d\'habilitase cuando s\'usen
+auriculares estereu.
+\n\n
+A consecuencia del entemecíu, amenórgase daqué la separtación estereu, teniendo
+un efeutu de reverberación Haas, que pue usase pa incrementar
+l\'anchu de la imaxe estereu percibida. Esto remánase pol
+axuste \u00ABTipu d\'habitación\u00BB.\n</string>
+</resources>
diff --git a/res/values-es/arrays.xml b/res/values-es/arrays.xml
new file mode 100644
index 0000000..42e7056
--- /dev/null
+++ b/res/values-es/arrays.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>Original</item>
+ <item>Equilibrado</item>
+ <item>Alta sensibilidad</item>
+ <item>Entorno ruidoso</item>
+ </string-array>
+
+ <string-array name="headphone_modes">
+ <item>Estudio</item>
+ <item>Habitación</item>
+ <item>Gran habitación</item>
+ <item>Escenario</item>
+ </string-array>
+
+ <string-array name="equalizer_loudness_modes">
+ <item>Deshabilitada</item>
+ <item>Muy débil</item>
+ <item>Débil</item>
+ <item>Ligera</item>
+ <item>Moderada</item>
+ <item>Fuerte</item>
+ <item>Muy fuerte</item>
+ </string-array>
+
+ <string-array name="compression_modes">
+ <item>Ligero</item>
+ <item>Moderado</item>
+ <item>Fuerte</item>
+ </string-array>
+
+ <string-array name="bassboost_modes">
+ <item>Ligero</item>
+ <item>Moderado</item>
+ <item>Fuerte</item>
+ </string-array>
+
+ <string-array name="wm8994_bassboost_modes">
+ <item>Estándar</item>
+ <item>Altavoces pequeños</item>
+ </string-array>
+
+</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
new file mode 100644
index 0000000..a2e1022
--- /dev/null
+++ b/res/values-es/strings.xml
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name">Ecualizador</string>
+ <string name="select_configuration_title">Seleccionar configuración a editar</string>
+ <string name="headset_title">Auriculares</string>
+ <string name="speaker_title">Altavoz</string>
+ <string name="bluetooth_title">Bluetooth</string>
+ <string name="usb_title">USB/Base</string>
+ <string name="audio_effects">Filtros de audio</string>
+ <string name="pref_unavailable">Funcionalidad no disponible para el dispositivo</string>
+ <string name="dsp_settings_headset">Ajustes - Auriculares</string>
+ <string name="dsp_settings_speaker">Ajustes - Altavoces</string>
+ <string name="dsp_settings_bluetooth">Ajustes - Bluetooth</string>
+ <string name="dsp_settings_usb">Ajustes - Dispositivo USB</string>
+ <string name="dsp_settings_wm8994">Ajustes - WM8994</string>
+ <string name="pref_dsp_title">Rango de Compresión Dinámica</string>
+ <string name="pref_dsp_summary_on">Compresión activada</string>
+ <string name="pref_dsp_summary_off">Compresión desactivada</string>
+ <string name="pref_dsp_enable">Habilitar</string>
+ <string name="pref_effect_title">Intensidad del efecto</string>
+ <string name="dialog_effect">Intensidad del efecto</string>
+ <string name="pref_equalizer_title">Ecualizador</string>
+ <string name="pref_equalizer_summary_on">Ecualizador activado</string>
+ <string name="pref_equalizer_summary_off">Ecualizador desactivado</string>
+ <string name="pref_equalizer_enable">Habilitar</string>
+ <string name="pref_equalizer_preset_title">Predefinido</string>
+ <string name="pref_equalizer_loudness_title">Compensación sonora</string>
+ <string name="pref_bassboost_title">Bass Boost</string>
+ <string name="pref_bassboost_summary_on">Bass Boost activado</string>
+ <string name="pref_bassboost_summary_off">Bass Boost desactivado</string>
+ <string name="pref_bassboost_enable">Habilitar</string>
+ <string name="pref_headset_virtual_title">Efectos de sala en auriculares</string>
+ <string name="pref_headset_virtual_summary_on">Efectos de sala activados</string>
+ <string name="pref_headset_virtual_summary_off">Efectos de sala desactivados</string>
+ <string name="pref_headset_virtual_enable">Habilitar</string>
+ <string name="pref_room_title">Seleccionar tipo de habitación</string>
+ <string name="dialog_room">Tipo de habitación</string>
+ <string name="menu_reset">Restaurar</string>
+ <string name="eq_preset_acoustic">Acústico</string>
+ <string name="eq_preset_bass_booster">Potenciar bajos</string>
+ <string name="eq_preset_bass_reducer">Reducir bajos</string>
+ <string name="eq_preset_classical">Clásica</string>
+ <string name="eq_preset_deep">Profunda</string>
+ <string name="eq_preset_flat">Plana</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">Rock</string>
+ <string name="eq_preset_small_speakers">Altavoces pequeños</string>
+ <string name="eq_preset_treble_booster">Potenciar agudos</string>
+ <string name="eq_preset_treble_reducer">Reducir agudos</string>
+ <string name="eq_preset_vocal_booster">Potenciador vocal</string>
+ <string name="eq_preset_custom">Personalizado</string>
+ <string name="category_wm8994_internal_speaker">Altavoz</string>
+ <string name="category_wm8994_signal_processing">Procesamiento de señal</string>
+ <string name="category_wm8994_headphone_amp">Auriculares</string>
+ <string name="category_wm8994_codec_optimization">Optimización de códec</string>
+ <string name="category_wm8994_dac_config">Ajustes de conversión digital/analógico</string>
+ <string name="category_wm8994_analog_path">Configuración de ruta analógica</string>
+ <string name="category_wm8994_mic_settings">Ajustes de micrófono</string>
+ <string name="category_wm8994_microphone_recording">Micrófono</string>
+ <string name="wm8994_settings_title_head">Ajustes de sonido</string>
+ <string name="wm8994_settings_title_subhead">Ajustes de sonido</string>
+ <string name="wm8994_settings_summary_head">Ajustes avanzados del procesador de sonido WM8994</string>
+ <string name="pref_wm8994_microphone_recording_title">Grabación predefinida</string>
+ <string name="pref_wm8994_headphone_amp_title">Nivel del amplificador</string>
+ <string name="pref_wm8994_headphone_amp_summary">Personalizar ganancia analógica</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Nivel del amplificador de auriculares</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Ganancia analógica</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Bass Boost</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Ajustes avanzados de Bass Boost</string>
+ <string name="pref_wm8994_bass_boost_title">Rango Bass Boost</string>
+ <string name="pref_wm8994_bass_boost_summary">Gestión avanzada de rango dinámico</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Bass Bost predefinido</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Bass Boost</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Ganancia</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Rango Bass Boost</string>
+ <string name="pref_wm8994_control_enable_title">Habilitar ajustes WM8994</string>
+ <string name="pref_wm8994_control_enable_summary">Ajustes avanzados del procesador de sonido WM8994</string>
+ <string name="pref_wm8994_speaker_tuning_title">Ajustes de música</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Reconfigurar el hardware del ecualizador para obtener un sonido más bajo y balanceado</string>
+ <string name="pref_wm8994_mono_downmix_title">Mezclar mono</string>
+ <string name="pref_wm8994_mono_downmix_summary">Mezclar sonido estéreo con mono (para salidas estéreo, tales como auriculares)</string>
+ <string name="pref_wm8994_stereo_expansion_title">Expansión estéreo</string>
+ <string name="pref_wm8994_stereo_expansion_summary">Expandir el sonido estéreo a través del procesamiento de señales digitales</string>
+ <string name="pref_wm8994_dac_direct_title">Acceso D/A directo</string>
+ <string name="pref_wm8994_dac_direct_summary">Acceder conversor digital/analógico directamente, pasando por alto el canal mezclador. Produce un sonido más limpio (un mayor ratio de señal-a-sonido)</string>
+ <string name="pref_wm8994_dac_osr128_title">Reproducción Hi-Fi</string>
+ <string name="pref_wm8994_dac_osr128_summary">Sobremuestreo a 128x de conversión digital-a-analógico (limpia el sonido mientras se reproduce música)</string>
+ <string name="pref_wm8994_adc_osr128_title">Grabación Hi-Fi</string>
+ <string name="pref_wm8994_adc_osr128_summary">Sobremuestreo a 128x de conversión analógico-a-digital (incrementa la calidad de las grabaciones)</string>
+ <string name="pref_wm8994_fll_tuning_title">Reloj de audio ajustado</string>
+ <string name="pref_wm8994_fll_tuning_summary">Usar reloj de audio WM8994 ajustado (mejora la calidad del sonido)</string>
+ <string name="help_title">Ayuda</string>
+ <string name="help_text"><b>¿Qué es DSP Manager?</b>
+\n\n
+DSP Manager (Ecualizador) es una aplicación para el ajuste del sonido.
+<i>DSP</i> significa Digital Signal Processing (Procesamiento de Señal Digital),
+y <i>Manager</i> (gestor o administrador) se refiere al hecho de que el DSP no
+funciona actualmente dentro de la aplicación en sí misma, y deberá ser el gestor
+el que habilite su uso para otras aplicaciones que sean compatibles con la
+especificación de audio de Android, como por ejemplo la mayoría de los
+reproductores de música.
+\n\n\n
+<b>Filosofía</b>
+\n\n
+El procesamiento de audio de CyanogenMod soporta cuatro categorías diferentes
+de salida de audio: Auriculares cableados, altavoces internos del teléfono,
+audio USB y auriculares Bluetooth. Hay un panel de configuración separado para
+cada categoría de salida de audio. La filosofía de DSP Manager es corregir en
+la salida de audio las deficiencias particulares, con objeto de conseguir
+la más óptima experiencia de sonido en cada una de ellas.
+\n\n
+A diferencia de los efectos de audio AOSP, aquí no existen ajustes por aplicación.
+Esta es una decisión deliberada: tratar de centrarse en la salida de audio y no
+en las aplicaciones que generan audio en las que DSP Manager deba funcionar.
+\n\n\n
+<b>Características</b>
+\n\n
+El resto de este documento describe cada efecto de audio y su uso en cada
+escenario.
+\n\n
+1. <b>Rango de compresión dinámica (DRC)</b>
+\n\n
+Este efecto estima la reducción de ruido percibida como una media del oyente
+y dirige un control de ganancia basada en esta estimación. El uso principal
+es para entornos con un alto nivel de ruido, tales como coches o la calle,
+donde las partes con volumen bajo de la música están en riesgo de no ser
+percibidas debido al ruido de fondo.
+\n\n
+Los ajustes determinarán la fuerza con la que DSP Manager tratará de mantener
+la reducción de audio en los niveles seleccionados. No existe equivalente en
+AOSP para este efecto DSP.
+\n\n
+2. <b>Bass Boost</b>
+\n\n
+Bass Boost es un filtro simple a bajo nivel que puede ser usado para agregar
+énfasis a frecuencias de 55 Hz y menores. La mejora es del alrededor de 6 dB,
+y modificada por el parámetro \u00ABIntensidad\u00BB, el cual añade un filtro
+de resonancia en la banda de 55 Hz, dando a dicha frecuencia un énfasis
+adicional. El efecto es diseñado para combatir la pérdida de la frecuencia de
+bajos en los altavoces y auriculares supra-aurales, los cuales no se acoplan
+totalmente con canal auditivo del usuario.
+\n\n
+3. <b>Ecualizador</b>
+\n\n
+Este es un ecualizador a seis bandas, con bandas a 16, 64, 250, 1000, 4000
+y 16000 Hz. Se proveen algunos ajustes predeterminados, y la frecuencia de
+respuesta puede ser personalizada también, tocando sobre el gráfico del
+ecualizador. El efecto debe ser usado para ajustar la frecuencia de respuesta
+según el gusto personal del usuario, o para ajustarse a las características
+y capacidades de los auriculares y altavoces disponibles.
+\n\n
+El ecualizador también contiene un filtro de compensación sonora, que iguala
+el cambio en la frecuencia de respuesta en el oído, basado en el nivel
+presión del sonido generado en el oído del usuario. El uso de auriculares
+cableados es necesario, y el valor de su intensidad deberá ser ajustado
+correctamente para que el efecto pueda trabajar tal y como fue diseñado.
+\n\n
+Para seleccionar el valor correcto en la compensación sonora, escucha
+música con un nivel de volumen bajo, y escoge algún tipo de música con un
+amplio espectro de sonido, como el rock o el metal. Prueba entonces a encontrar
+un ajuste donde los bajos sean potenciados de nuevo a niveles audibles y parezcan
+balanceados con el resto de sonidos. Después de que la compensación haya sido
+correctamente configurada los bajos deberían permanecer en los mismos
+niveles relativos al del resto de otros instrumentos, independientemente del
+nivel de sonido. Por otra parte, si la música comienza a oírse con frecuencias
+bajas excesivamente fuertes en niveles altos de sonido, probablemente la
+compensación haya sido establecida demasiado fuerte, y deberá ser reducida.
+\n\n
+La compensación ha sido añadida dentro de los ajustes de usuario. Si solo se
+desea utilizar compensación, entonces el ecualizador debe ser establecido
+al tipo de ajuste \u00ABPlano\u00BB.
+\n\n
+4. <b>Filtro de auriculares</b>
+\n\n
+El filtro de auriculares es un diseño inspirado en el famoso circuito
+analógico \u00ABbs2b\u00BB. El efecto deja sin cambios el sonido mono, y ajusta
+la diferencia de señal a través del filtro de bajo nivel, el cual aproxima
+tanto el audio en la cabeza como el retardo interaural a la vez, dando el
+correcto efecto psicoacústico al oído del usuario. La intención es prevenir
+la creciente fatiga auditiva por la increíble separación estéreo, inherente
+a todos los auriculares. El efecto debe de ser habilitado cuando se utilicen
+auriculares estéreo.
+\n\n
+A consecuencia del mezclado, se reduce algo la separación estéreo, teniendo
+un efecto de reverberación Haas, el cual puede ser utilizado para incrementar
+el ancho de la imagen estéreo percibida. Esto es controlado por el
+ajuste \u00ABTipo de habitación\u00BB.\n</string>
+</resources>
diff --git a/res/values-fi/arrays.xml b/res/values-fi/arrays.xml
new file mode 100644
index 0000000..e839659
--- /dev/null
+++ b/res/values-fi/arrays.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="headphone_modes">
+ <item>Studio</item>
+ <item>Huone</item>
+ <item>Iso huone</item>
+ <item>Lava</item>
+ </string-array>
+
+ <string-array name="equalizer_loudness_modes">
+ <item>Pois käytöstä</item>
+ <item>Heikoin</item>
+ <item>Heikompi</item>
+ <item>Heikko</item>
+ <item>Vahva</item>
+ <item>Vahvempi</item>
+ <item>Vahvin</item>
+ </string-array>
+
+ <string-array name="compression_modes">
+ <item>Kevyt</item>
+ <item>Keskitaso</item>
+ <item>Vahva</item>
+ </string-array>
+
+ <string-array name="bassboost_modes">
+ <item>Kevyt</item>
+ <item>Keskitaso</item>
+ <item>Vahva</item>
+ </string-array>
+</resources>
\ No newline at end of file
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
new file mode 100644
index 0000000..b566937
--- /dev/null
+++ b/res/values-fi/strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="select_configuration_title">Valitse muokattava asetus</string>
+ <string name="headset_title">Kuulokkeet</string>
+ <string name="speaker_title">Kaiutin</string>
+ <string name="bluetooth_title">Bluetooth-laite</string>
+ <string name="audio_effects">Audio Effects</string>
+ <string name="dsp_settings_headset">DSP Asetukset - Kuulokkeet</string>
+ <string name="dsp_settings_speaker">DSP Asetukset - Puhelimen kaiutin</string>
+ <string name="dsp_settings_bluetooth">DSP Asetukset - Bluetooth-laite</string>
+ <string name="pref_dsp_title">Kompressointi</string>
+ <string name="pref_dsp_summary_on">Kompressointi päällä</string>
+ <string name="pref_dsp_summary_off">Kompressointi pois päältä</string>
+ <string name="pref_dsp_enable">Käytössä</string>
+ <string name="pref_effect_title">Valitse voimakkuus</string>
+ <string name="dialog_effect">Efektin voimakkuus</string>
+ <string name="pref_equalizer_title">Taajuuskorjain</string>
+ <string name="pref_equalizer_summary_on">Taajuuskorjain päällä</string>
+ <string name="pref_equalizer_summary_off">Taajuuskorjain pois päältä</string>
+ <string name="pref_equalizer_enable">Käytössä</string>
+ <string name="pref_equalizer_preset_title">Valitse asetus</string>
+ <string name="pref_equalizer_loudness_title">Äänentason kompensointi</string>
+ <string name="pref_bassboost_title">Basson korostus</string>
+ <string name="pref_bassboost_summary_on">Basson korostus päällä</string>
+ <string name="pref_bassboost_summary_off">Basson korostus pois päältä</string>
+ <string name="pref_bassboost_enable">Käytössä</string>
+ <string name="pref_headset_virtual_title">Kuulokkeiden virtuaalihuone-efekti</string>
+ <string name="pref_headset_virtual_summary_on">Kuulokkeiden virtuaalihuone-efekti päällä</string>
+ <string name="pref_headset_virtual_summary_off">Kuulokkeiden virtuaalihuone-efekti pois päältä</string>
+ <string name="pref_headset_virtual_enable">Käytössä</string>
+ <string name="pref_room_title">Valitse huonetyyppi</string>
+ <string name="dialog_room">Huonetyyppi</string>
+ <string name="menu_reset">Palauta oletukset</string>
+
+ <string name="eq_preset_acoustic">Akustinen</string>
+ <string name="eq_preset_bass_booster">Basson korostus</string>
+ <string name="eq_preset_bass_reducer">Basson vaimennus</string>
+ <string name="eq_preset_classical">Klassinen</string>
+ <string name="eq_preset_deep">Syvä</string>
+ <string name="eq_preset_flat">Neutraali</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">Rock</string>
+ <string name="eq_preset_small_speakers">Pienet kaiuttimet</string>
+ <string name="eq_preset_treble_booster">Diskantin korostus</string>
+ <string name="eq_preset_treble_reducer">Diskantin vaimennus</string>
+ <string name="eq_preset_vocal_booster">Laulun korostus</string>
+ <string name="eq_preset_custom">Muokattu</string>
+</resources>
diff --git a/res/values-fr/arrays.xml b/res/values-fr/arrays.xml
new file mode 100644
index 0000000..2536b4a
--- /dev/null
+++ b/res/values-fr/arrays.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+ <string-array name="microphone_recording_presets">
+ <item>Original</item>
+ <item>Equilibré</item>
+ <item>Haute sensibilité</item>
+ <item>Environnement bruyant</item>
+ </string-array>
+
+ <string-array name="headphone_modes">
+ <item>Studio</item>
+ <item>Chambre</item>
+ <item>Grande chambre</item>
+ <item>Scène</item>
+ </string-array>
+
+ <string-array name="equalizer_loudness_modes">
+ <item>Désactivé</item>
+ <item>Le plus faible</item>
+ <item>Plus faible</item>
+ <item>Faible</item>
+ <item>Fort</item>
+ <item>Plus fort</item>
+ <item>Le plus fort</item>
+ </string-array>
+
+ <string-array name="compression_modes">
+ <item>Léger</item>
+ <item>Moyen</item>
+ <item>Extrême</item>
+ </string-array>
+
+ <string-array name="bassboost_modes">
+ <item>Léger</item>
+ <item>Moyen</item>
+ <item>Extrême</item>
+ </string-array>
+
+ <string-array name="wm8994_bassboost_modes">
+ <item>Standard</item>
+ <item>Petit haut-parleur</item>
+ </string-array>
+
+</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
new file mode 100644
index 0000000..8334efa
--- /dev/null
+++ b/res/values-fr/strings.xml
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name">Effets audio</string>
+ <string name="select_configuration_title">Choisir la configuration à éditer</string>
+ <string name="headset_title">Casque</string>
+ <string name="speaker_title">Haut-parleur du téléphone</string>
+ <string name="bluetooth_title">Périphérique Bluetooth</string>
+ <string name="usb_title">USB/Station d\'accueil</string>
+ <string name="audio_effects">Autres effets audio</string>
+ <string name="pref_unavailable">Fonctionnalité non disponible pour votre appareil</string>
+ <string name="dsp_settings_headset">Paramètres DSP - Casque</string>
+ <string name="dsp_settings_speaker">Paramètres DSP - Haut-parleur</string>
+ <string name="dsp_settings_bluetooth">Paramètres DSP - Bluetooth</string>
+ <string name="dsp_settings_usb">Paramètres DSP - Appareil USB</string>
+ <string name="dsp_settings_wm8994">Paramètres DSP - WM8994</string>
+ <string name="pref_dsp_title">Compresseur audio dynamique</string>
+ <string name="pref_dsp_summary_on">La compression est activée</string>
+ <string name="pref_dsp_summary_off">La compression est désactivée</string>
+ <string name="pref_dsp_enable">Activer</string>
+ <string name="pref_effect_title">Choisir la force de l\'effet</string>
+ <string name="dialog_effect">Force de l\'effet</string>
+ <string name="pref_equalizer_title">Égaliseur</string>
+ <string name="pref_equalizer_summary_on">L\'égaliseur est activé</string>
+ <string name="pref_equalizer_summary_off">L\'égaliseur est désactivé</string>
+ <string name="pref_equalizer_enable">Activer</string>
+ <string name="pref_equalizer_preset_title">Profil audio</string>
+ <string name="pref_equalizer_loudness_title">Compenser les graves</string>
+ <string name="pref_bassboost_title">Amplification des basses</string>
+ <string name="pref_bassboost_summary_on">L\'amplification des basses est activée</string>
+ <string name="pref_bassboost_summary_off">L\'amplification des basses est désactivée</string>
+ <string name="pref_bassboost_enable">Activer</string>
+ <string name="pref_headset_virtual_title">Effet chambre virtuelle</string>
+ <string name="pref_headset_virtual_summary_on">L\'effet chambre virtuelle est activé</string>
+ <string name="pref_headset_virtual_summary_off">L\'effet chambre virtuelle est désactivé</string>
+ <string name="pref_headset_virtual_enable">Activer</string>
+ <string name="pref_room_title">Type de chambre</string>
+ <string name="dialog_room">Type de chambre</string>
+ <string name="menu_reset">Remise à zéro</string>
+ <string name="eq_preset_acoustic">Acoustique</string>
+ <string name="eq_preset_bass_booster">Amplification des basses</string>
+ <string name="eq_preset_bass_reducer">Réduction des basses</string>
+ <string name="eq_preset_classical">Classique</string>
+ <string name="eq_preset_deep">Profond</string>
+ <string name="eq_preset_flat">Plat</string>
+ <string name="eq_preset_r_and_b">RnB</string>
+ <string name="eq_preset_rock">Rock</string>
+ <string name="eq_preset_small_speakers">Petits haut-parleurs</string>
+ <string name="eq_preset_treble_booster">Amplification des aiguës</string>
+ <string name="eq_preset_treble_reducer">Réduction des aiguës</string>
+ <string name="eq_preset_vocal_booster">Amplification de la voix</string>
+ <string name="eq_preset_custom">Personnalisé</string>
+ <string name="category_wm8994_internal_speaker">Haut-parleur</string>
+ <string name="category_wm8994_signal_processing">Traitement du signal</string>
+ <string name="category_wm8994_headphone_amp">Casque</string>
+ <string name="category_wm8994_codec_optimization">Optimisation des Codecs</string>
+ <string name="category_wm8994_dac_config">Paramètre de convertion Digital/Analog</string>
+ <string name="category_wm8994_analog_path">Configuration du chemin analogique</string>
+ <string name="category_wm8994_mic_settings">Paramètre du microphone</string>
+ <string name="category_wm8994_microphone_recording">Microphone</string>
+ <string name="wm8994_settings_title_head">Paramètres audio</string>
+ <string name="wm8994_settings_title_subhead">Paramètres audio</string>
+ <string name="wm8994_settings_summary_head">Contrôles avancés du processeur audio WM8994</string>
+ <string name="pref_wm8994_microphone_recording_title">Réglages d\'enregistrement</string>
+ <string name="pref_wm8994_headphone_amp_title">Niveau d\'amplification</string>
+ <string name="pref_wm8994_headphone_amp_summary">Définir le gain analogique</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Niveau d\'amplification du casque</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Gain analogique</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Amplification des basses</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Contrôles avancés de l\'amplification des basses</string>
+ <string name="pref_wm8994_bass_boost_title">Gamme d\'amplification des basses</string>
+ <string name="pref_wm8994_bass_boost_summary">Gestion avancée de la plage dynamique</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Amplification prédéfinie des basses</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Amplification des basses</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Gain</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Gamme d\'amplification des basses</string>
+ <string name="pref_wm8994_control_enable_title">Activer le contrôleur WM8994</string>
+ <string name="pref_wm8994_control_enable_summary">Contrôles avancés du processeur audio WM8994</string>
+ <string name="pref_wm8994_speaker_tuning_title">Réglages pour la musique</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Configurer l\'égaliseur matériel pour plus de basses et un son équilibré</string>
+ <string name="pref_wm8994_mono_downmix_title">Encodage mono</string>
+ <string name="pref_wm8994_mono_downmix_summary">Encoder le son stéréo en son mono (pour les sorties stéréo, comme les casques)</string>
+ <string name="pref_wm8994_stereo_expansion_title">Extension stéréo</string>
+ <string name="pref_wm8994_stereo_expansion_summary">\'Étendre\' le son stéréo via le signal digital du processeur audio</string>
+ <string name="pref_wm8994_dac_direct_title">D/AC direct</string>
+ <string name="pref_wm8994_dac_direct_summary">Accès direct au convertisseur digital/analogique, contourne le mixeur. Produit un son pur (Rapport signal/bruit supérieur)</string>
+ <string name="pref_wm8994_dac_osr128_title">Lecture Hi-fi</string>
+ <string name="pref_wm8994_dac_osr128_summary">Convertisseur digital vers analogique, suréchantillonnage de 128x — son net pour la lecture de la musique</string>
+ <string name="pref_wm8994_adc_osr128_title">Enregistrement Hi-fi</string>
+ <string name="pref_wm8994_adc_osr128_summary">Convertisseur analogique vers digital, suréchantillonnage de 128x — augmente la qualité des enregistrements</string>
+ <string name="pref_wm8994_fll_tuning_title">Horloge audio personalisée</string>
+ <string name="pref_wm8994_fll_tuning_summary">Utiliser une horloge audio pour WM8994 personnalisée — améliore la qualité du son</string>
+ <string name="help_title">Guide utilisateur</string>
+ <string name="help_text"><b>Qu\'est-ce que DSP Manager ?</b>
+\n
+\nDSP Manager est une application d\'ajustement de sortie audio. <i>DSP</i> signifie Digital Signal Processing, et <i>Manager</i> signifie qu\'il n\'est pas intégré dans les applications tierces; il ne peut fonctionner qu\'avec les applications compatibles avec les spécifications audio d\'Android, c\'est à dire la plupart des lecteurs audio.
+\n
+\n<b>Philosophie</b>
+\n
+\nLe traitement audio de CyanogenMod prend en charge quatre types de sortie différents : casque filaire, haut parleur, casque bluetooth et l\'audio via USB. Il y a un panneau de configuration pour chaque sortie. La philosophie de DSP Manager est de corriger les lacunes de chaque type de sortie de manière différente afin d\'obtenir l\'expérience utilisateur optimum.
+\n
+\nContrairement aux effets audio AOSP, il n\'existe pas de paramètres pour chaque application. C\'est un choix de conception délibérée: c\'est la sortie qui nous intéresse, pas l\'application avec laquelle doit travailler DSP Manager.
+\n
+\n<b>Fonctionnalités</b>
+\n
+\nLe reste de ce document décrit chaque effet audio et son usage.
+\n
+\n1. <b>Compression audio dynamique</b>
+\n
+\nCet effet fait une estimation du niveau sonore du signal audio tel qu\'il est perçu par un auditeur moyen et corrige le gain sur la base de cette estimation. La principale utilisation sera dans les environnements bruyants comme dans les voitures ou dans la rue, là où les parties calmes de la musique risquent d\'être noyées par le bruit de fond.
+\n
+\nLe paramètre détermine avec quelle force le DSP Manager va essayer de maintenir l\'intensité sonore. Il n\'existe aucun équivalent AOSP à cet effet.
+\n
+\n2. <b>Bass Boost</b>
+\n
+\nL\'accentuation des graves est un filtre passe-bas simple qui peut être utilisé pour accentuer les fréquences à partir de 55 Hz et les plus basses fréquences. L\'augmentation est d\'environ 6 dB, et est modifiable par le paramètre dit de “Force”. Cela ajoute de la résonance au filtre de bande des 55 Hz, ce qui met un accent supplémentaire sur ces fréquences. L\'effet est conçu pour lutter contre la perte des basses fréquences avec de petits haut-parleurs ou des casques supra-auraux, qui ne se colle pas correctement avec le conduit auditif de l\'utilisateur.
+\n
+\n3. <b>Égaliseur</b>
+\n
+\nIl s\'agit d\'un égaliseur 6 bandes positionnées à 16, 64, 250, 1000, 4000 et 16000 Hz. Certaines présélections sont disponibles, et une personnalisation des fréquences peut également être faites en appuyant sur le graphique de l\'égaliseur. Cet effet peut être utilisé pour ajuster les fréquences à ces goûts personnels, ou aux capacités des écouteurs ou des haut-parleurs utilisés.
+\n
+\nL\'égaliseur contient également un filtre de compensation du volume qui égalise les variations de fréquence dans l\'oreille en fonction du niveau de pression acoustique qui est atteint à l\'intérieur de l\'oreille de l\'utilisateur. L\'utilisation d\'un casque filaire est requis, et la valeur du paramètre de force doit être réglée correctement avant pour que l\'effet fonctionne comme voulu.
+\n
+\nPour sélectionner la bonne valeur pour la force de compensation, utilisez un volume bas pour la musique, et choisissez de la musique à large spectre comme du rock ou du métal. Essayez de trouver un réglage où les basses sont augmentées et semblent équilibrées avec le reste des instruments. Après que la compensation ai été correctement configurée, les basses doivent rester au même niveau que les aux autres instruments quel que soit le niveau d\'écoute. D\'autre part, si la musique commence à sonner avec des basses lourdes à des niveaux plus élevés d\'écoute, la compensation est probablement trop forte, et elle devrait être réduite.
+\n
+\nLa compensation est ajoutée aux ajustements choisis par l\'utilisateur. Si aucune compensation n\'est désirée, l\'égaliseur doit être paramétré avec le réglage “Plat”.
+\n
+\n4. <b>Filtre du casque</b>
+\n
+\nLe filtre du casque est un modèle d\'intercommunication inspiré du célèbre circuit analogique bs2b. L\'effet passe le son en mono sans le changer, et ajuste les différents signaux à travers un filtre passe-bas puis le renvoi au coté opposé à la fois en arrière plan et avec un retard inter-aural, ce qui donne un bon indice psychoacoustique pour les oreilles de l\'utilisateur. Le but est de prévenir la fatigue d\'écoute résultant de la séparation de la stéréo inhérente à tous les casques. L\'effet devrait être activé lorsque vous utilisez des écouteurs stéréo.
+\n
+\nL\'égaliseur réduit un peu la séparation stéréo, vous pouvez utiliser un effet de réverbération Haas pour augmenter la largeur de stéréo perçue. Ceci est contrôlé avec le paramètre “Type de chambre”.
+ </string>
+</resources>
diff --git a/res/values-hu/arrays.xml b/res/values-hu/arrays.xml
new file mode 100644
index 0000000..7a84c88
--- /dev/null
+++ b/res/values-hu/arrays.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 The CyanogenMod Project
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version 2
+ of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ MA 02110-1301, USA.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>Eredeti</item>
+ <item>Kiegyensúlyozott</item>
+ <item>Nagy érzékenységű</item>
+ <item>Hangos környezet</item>
+ </string-array>
+
+ <string-array name="headphone_modes">
+ <item>Stúdió</item>
+ <item>Szoba</item>
+ <item>Nagy szoba</item>
+ <item>Színpad</item>
+ </string-array>
+
+ <string-array name="equalizer_loudness_modes">
+ <item>Kikapcsolva</item>
+ <item>Leggyengébb</item>
+ <item>Gyengébb</item>
+ <item>Gyenge</item>
+ <item>Erős</item>
+ <item>Erősebb</item>
+ <item>Legerősebb</item>
+ </string-array>
+
+ <string-array name="compression_modes">
+ <item>Enyhe</item>
+ <item>Mérsékelt</item>
+ <item>Extrém</item>
+ </string-array>
+
+ <string-array name="bassboost_modes">
+ <item>Enyhe</item>
+ <item>Mérsékelt</item>
+ <item>Extrém</item>
+ </string-array>
+
+ <string-array name="wm8994_bassboost_modes">
+ <item>Általános</item>
+ <item>Kis hangszórók</item>
+ </string-array>
+
+</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
new file mode 100644
index 0000000..c868974
--- /dev/null
+++ b/res/values-hu/strings.xml
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 The CyanogenMod Project
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version 2
+ of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ MA 02110-1301, USA.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name">DSP Beállítások</string>
+ <string name="select_configuration_title">Konfiguráció kiválasztása szerkesztésre</string>
+ <string name="headset_title">Fejhallgató</string>
+ <string name="speaker_title">Telefon hangszóró</string>
+ <string name="bluetooth_title">Bluetooth-eszköz</string>
+ <string name="usb_title">USB/Dokkoló</string>
+ <string name="audio_effects">Hangeffektek</string>
+ <string name="pref_unavailable">A funkció nem elérhető ezen az eszközön.</string>
+ <string name="dsp_settings_headset">DSP Beállítások - Fejhallgató</string>
+ <string name="dsp_settings_speaker">DSP Beállítások - Telefon hangszóró</string>
+ <string name="dsp_settings_bluetooth">DSP Beállítások - Bluetooth-eszköz</string>
+ <string name="dsp_settings_usb">DSP Beállítások - USB eszköz</string>
+ <string name="dsp_settings_wm8994">DSP Beállítások - WM8994</string>
+ <string name="pref_dsp_title">Dinamikus Tömörítési Tartomány</string>
+ <string name="pref_dsp_summary_on">Tömörítés engedélyezve</string>
+ <string name="pref_dsp_summary_off">Tömörítés letiltva</string>
+ <string name="pref_dsp_enable">Engedélyezés</string>
+ <string name="pref_effect_title">Effekt erősség választása</string>
+ <string name="dialog_effect">Effekt erősség</string>
+ <string name="pref_equalizer_title">Hangszínszabályzó</string>
+ <string name="pref_equalizer_summary_on">Hangszínszabályzó engedélyezve</string>
+ <string name="pref_equalizer_summary_off">Hangszínszabályzó letiltva</string>
+ <string name="pref_equalizer_enable">Engedélyezés</string>
+ <string name="pref_equalizer_preset_title">Válassz profilt</string>
+ <string name="pref_equalizer_loudness_title">Hangerő kompenzáció</string>
+ <string name="pref_bassboost_title">Mélyhang kiemelése</string>
+ <string name="pref_bassboost_summary_on">Mélyhangkiemelés engedélyezve</string>
+ <string name="pref_bassboost_summary_off">Mélyhangkiemelés letiltva</string>
+ <string name="pref_bassboost_enable">Engedélyezés</string>
+ <string name="pref_headset_virtual_title">Fejhallgató virtuális szoba-hatás</string>
+ <string name="pref_headset_virtual_summary_on">Fejhallgató virtuális szoba-hatás engedélyezve</string>
+ <string name="pref_headset_virtual_summary_off">Fejhallgató virtuális szoba-hatás letiltva</string>
+ <string name="pref_headset_virtual_enable">Engedélyezés</string>
+ <string name="pref_room_title">Szoba típusának kiválasztása</string>
+ <string name="dialog_room">Szoba típusa</string>
+ <string name="menu_reset">Visszaállítás</string>
+
+ <string name="eq_preset_acoustic">Akusztikus</string>
+ <string name="eq_preset_bass_booster">Mély kiemelés</string>
+ <string name="eq_preset_bass_reducer">Mély csökkentés</string>
+ <string name="eq_preset_classical">Klasszikus</string>
+ <string name="eq_preset_deep">Mély</string>
+ <string name="eq_preset_flat">Lapos</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">Rock</string>
+ <string name="eq_preset_small_speakers">Kis hangszórók</string>
+ <string name="eq_preset_treble_booster">Magas kiemelés</string>
+ <string name="eq_preset_treble_reducer">Magas csökkentés</string>
+ <string name="eq_preset_vocal_booster">Ének kiemelés</string>
+ <string name="eq_preset_custom">Egyéni</string>
+
+ <!-- WM8994 -->
+ <!-- Categories -->
+ <string name="category_wm8994_internal_speaker">Hangszóró</string>
+ <string name="category_wm8994_signal_processing">Jelfeldolgozás</string>
+ <string name="category_wm8994_headphone_amp">Fülhallgató</string>
+ <string name="category_wm8994_codec_optimization">Kodek optimalizálás</string>
+ <string name="category_wm8994_dac_config">Digitális/Analóg átalakító beállítások</string>
+ <string name="category_wm8994_analog_path">Analóg útvonal beállítások</string>
+ <string name="category_wm8994_mic_settings">Mikrofonbeállítások</string>
+ <string name="category_wm8994_microphone_recording">Mikrofon</string>
+ <!-- Titles/Summaries -->
+ <string name="wm8994_settings_title_head">Hangbeállítások</string>
+ <string name="wm8994_settings_title_subhead">Hangbeállítások</string>
+ <string name="wm8994_settings_summary_head">WM8994 hangfeldolgozó részletes beállításai</string>
+ <string name="pref_wm8994_microphone_recording_title">Felvételi profil</string>
+ <string name="pref_wm8994_headphone_amp_title">Erősítő szint</string>
+ <string name="pref_wm8994_headphone_amp_summary">Analóg erősítés beállítása</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Fülhallgató erősítő szint</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Analóg erősítés</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Mélyhang-kiemelés</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Mélyhangkiemelés részletes beállításai</string>
+ <string name="pref_wm8994_bass_boost_title">Mélyhangkiemelés tartománya</string>
+ <string name="pref_wm8994_bass_boost_summary">Részletes dinamikus tartománykezelés</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Mélyhangkiemelési profil</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Mélyhangkiemelés</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Erősítés</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Mélyhangkiemelés tartománya</string>
+ <string name="pref_wm8994_control_enable_title">WM8994 szabályozás engedélyezése</string>
+ <string name="pref_wm8994_control_enable_summary">WM8994 hangfeldolgozó szabályozása</string>
+ <string name="pref_wm8994_speaker_tuning_title">Zenére hangolás</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Átállítja a hardveres hangszínszabályzót több mélyhangért és kiegyensúlyozottabb hangzásért.</string>
+ <string name="pref_wm8994_mono_downmix_title">Egy hangsávra keverés</string>
+ <string name="pref_wm8994_mono_downmix_summary">Kettőről egy hangsávra kever (Sztereó kimenetekhez, mint például fülhallgatók)</string>
+ <string name="pref_wm8994_stereo_expansion_title">Sztereó kiterjesztés</string>
+ <string name="pref_wm8994_stereo_expansion_summary">“Kiterjeszti” a sztereó hangzást digitális jelfeldolgozási eszközökkel</string>
+ <string name="pref_wm8994_dac_direct_title">Közvetlen D/A átalakítás</string>
+ <string name="pref_wm8994_dac_direct_summary">Digitális/analóg átalakító közvetlen elérése megkerülve a sávkeverőt. Tisztább hangot (kevesebb zajt) eredményez</string>
+ <string name="pref_wm8994_dac_osr128_title">Hi-Fi lejátszás</string>
+ <string name="pref_wm8994_dac_osr128_summary">Digitális-analóg átalakító 128x túlmintavételezés — tisztább hangok zene lejátszásakor</string>
+ <string name="pref_wm8994_adc_osr128_title">Hi-Fi felvétel</string>
+ <string name="pref_wm8994_adc_osr128_summary">Analóg-digitális átalakító 128x túlmintavételezés — javítja a felvételek minőségét</string>
+ <string name="pref_wm8994_fll_tuning_title">Hangolt audió órajel</string>
+ <string name="pref_wm8994_fll_tuning_summary">Hangolt WM8994 audió órajelforrás használata — javítja a hang minőségét</string>
+
+ <string name="help_title">Felhasználói segédlet</string>
+ <string name="help_text"><b>Mi is a DSP Manager?</b>
+\n
+\nA DSP Manager egy alkalmazás, ami a kiadott hangok módosítására szolgál. A <i>DSP</i> a
+Digital Signal Processing, vagyis digitális jelfeldolgozás rövidítése, a <i>Manager</i>
+(kezelő) rész pedig arra utal, hogy a DSP valójában nem az alkalmazásban fut - a kezelő
+csak engedélyezni tudja olyan alkalmazások számára, melyek képesek együttműködni az Android
+hangeffekt-specifikációjával. Ilyenek például a különféle zenelejátszók.
+\n
+\n<b>Célok</b>
+\n
+\nA CyanogenMod hangfeldolgozó programja három különböző kimenetet támogat:
+vezetékes fejhallgatókat, az eszköz beépített hangszóróit, valamint Bluetooth hangeszközöket
+(autós kihangosító, headset, stb.). Mindegyik eszköztípus számára külön vezérlőpanel
+áll rendelkezésre. A DSP Manager célja ezen eszközök sajátos hibáinak kiküszöbölése az optimális
+zenehallgatási élmény elérése érdekében.
+\n
+\nAz AOSP hangeffektektől eltérően nincsenek alkalmazásokhoz rendelhető beállítások. Ez szándékos
+tervezés eredménye: nem az számít, hogy mi adja ki a hangot, hanem az a lényeges, hogy a kiadott
+hang jól szóljon.
+\n
+\n<b>Funkciók</b>
+\n
+\nA segédlet további fejezetei leírják az egyes hangeffektek funkcióját és azok felhasználási
+területeit.
+\n
+\n1. <b>Dinamikus tömörítési tartomány (DRC)</b>
+\n
+\nEz az effekt megpróbálja megbecsülni azt a hangosságot, amit egy átlagos hallgató
+érzékel és az erősítés szabályozását ennek megfelelően végzi. Elsősorban zajos környezetben,
+például autóban, vagy utcán érdemes használni, ahol a zene halk részeit a környező zaj elnyomhatja.
+\n
+\nAz egyetlen beállítási lehetőség azt adja meg, hogy a DSP Manager milyen erősen
+próbálja a hangosságot szinten tartani. Ennek az effektnek nincs AOSP megfelelője.
+\n
+\n2. <b>Mélyhangkiemelés</b>
+\n
+\nA mélyhangkiemelés technikailag egy egyszerű aluláteresztő szűrő, amit az 55 Hz és az alatti frekvenciájú
+hangok nyomatékosítására lehet használni. A kiemelés nagyjából 6 dB értékű és hat rá az “erősség”
+paraméter, ami szűrési rezonanciát ad az 55 Hz-es sávnak, így az a frekvencia még inkább kiemelésre
+kerül. Az effektet arra tervezték, hogy a kis hangszórókra és fülön ülő fejhallgatókra (melyek a
+hallgató hallójáratához nem illeszkednek szorosan) jellemző gyenge mélyhangokat élvezhető szintűre erősítse.
+\n
+\n3. <b>Hangszínszabályzó</b>
+\n
+\nEz egy hatsávos hangszínszabályzó, melynek sávjai 16, 64, 250, 1000, 4000 és 16000 Hz-nél vannak.
+Adott néhány gyakori hangprofil, valamint a frekvenciaválasz (a különféle magasságú hangok erőssége)
+személyre szabható a szabályzó grafikonját megérintve. Az effekt arra lett tervezve, hogy a kiadott
+zene hangzása megfeleljen a felhasználó ízlésének és a fejhallgató vagy hangszóró
+képességeinek.
+\n
+\nA hangszínszabályzó tartalmaz még egy hangosságkompenzáló szűrőt is, ami a felhasználó fülét elérő
+hangnyomásból származó hatásokat küszöböli ki. Használatához vezetékes fejhallgatóra van szükség,
+a paraméter értékét pedig helyesen kell beállítani ahhoz, hogy a tervezett hatást elérhesse.
+\n
+\nA kompenzáció helyes értékének kiválasztásához használja a leghalkabb hangerőt és hozzá valami
+széles spektrumú, zajos zenét, pl. rock, vagy metál zenét. Próbáljon meg olyan beállítást találni,
+ami a mélyhangokat hallható szintre viszi vissza és azok az anyag többi részével egyensúlyba kerülnek.
+Miután a kompenzációt helyesen beállította, a mélyhangoknak a többi hangszerhez képest a hangerőtől
+függetlenül azonos szinten kell lennie. Amennyiben hangosabbra állítva a zenében túl erőssé válnának a
+mélyhangok, a kompenzáció valószínűleg túl erős, azt csökkenteni kell.
+\n
+\nA kompenzáció hozzáadódik a felhasználó beállításaihoz. Ha csak a kompenzációt kívánja alkalmazni,
+a hangszínszabályzót állítsa “Lapos” profilra.
+\n
+\n4. <b>Fejhallgató szűrő</b>
+\n
+\nA fejhallgató szűrő crossfeed tervezésű, melyet a híres bs2b analóg áramkör ihletett.
+Az effekt a mono hangot változatlanul hagyja és a sztereó hang sávjainak különbségét egy aluláteresztő
+szűrőn engedi át, ami mind a fej árnyékolását, mind a hallójáratok késleltetését közelíti, így a felhasználó
+fülei számára egy természetesebb hangzást biztosít. A szűrő célja megelőzni a hallgató kifáradását,
+ami a valószínűtlen, a két különböző hangsáv okozta hanghatásokból fakadhat. Ezek a hatások a
+fejhallgatók velejárói, így az effektet ajánlott mindig bekapcsolni, amikor sztereó fejhallgatót használ.
+\n
+\nMivel a keverés valamelyest csökkenti a sztereó sávok szétválasztását, Haas-visszhang alakul ki, melyet
+fel lehet használni az érzékelt sztereó hatás “szélességének” növelésére. Ezt a “Szoba típusa” beállítással
+lehet módosítani.
+ </string>
+
+</resources>
diff --git a/res/values-it/arrays.xml b/res/values-it/arrays.xml
new file mode 100644
index 0000000..9a2033b
--- /dev/null
+++ b/res/values-it/arrays.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright 2012 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>Originale</item>
+ <item>Bilanciato</item>
+ <item>Alta Sensibilità</item>
+ <item>Ambiente Rumoroso</item>
+ </string-array>
+ <string-array name="headphone_modes">
+ <item>Studio</item>
+ <item>Sala</item>
+ <item>Sala grande</item>
+ <item>Palco</item>
+ </string-array>
+ <string-array name="equalizer_loudness_modes">
+ <item>Non attivo</item>
+ <item>Molto debole</item>
+ <item>Più debole</item>
+ <item>Debole</item>
+ <item>Forte</item>
+ <item>Più forte</item>
+ <item>Molto forte</item>
+ </string-array>
+ <string-array name="compression_modes">
+ <item>Lieve</item>
+ <item>Moderato</item>
+ <item>Estremo</item>
+ </string-array>
+ <string-array name="bassboost_modes">
+ <item>Lieve</item>
+ <item>Moderato</item>
+ <item>Estremo</item>
+ </string-array>
+ <string-array name="wm8994_bassboost_modes">
+ <item>Standard</item>
+ <item>Altoparlanti piccoli</item>
+ </string-array>
+</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
new file mode 100644
index 0000000..3b45e38
--- /dev/null
+++ b/res/values-it/strings.xml
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2012 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name">DSP Manager</string>
+ <string name="select_configuration_title">Seleziona configurazione da modificare</string>
+ <string name="headset_title">Cuffie</string>
+ <string name="speaker_title">Altoparlante telefono</string>
+ <string name="bluetooth_title">Dispositivo bluetooth</string>
+ <string name="usb_title">Dispositivo USB/Dock</string>
+ <string name="audio_effects">Effetti audio</string>
+ <string name="pref_unavailable">Funzionalità non disponibile sul tuo dispositivo</string>
+ <string name="dsp_settings_headset">Impostazioni DSP - Cuffie</string>
+ <string name="dsp_settings_speaker">Impostazioni DSP - Altoparlante Telefono</string>
+ <string name="dsp_settings_bluetooth">Impostazioni DSP - Dispositivo Bluetooth</string>
+ <string name="dsp_settings_usb">Impostazioni DSP - Dispositivo USB</string>
+ <string name="dsp_settings_wm8994">Impostazioni DSP - WM8994</string>
+ <string name="pref_dsp_title">Dynamic Range Compression</string>
+ <string name="pref_dsp_summary_on">Compressione attiva</string>
+ <string name="pref_dsp_summary_off">Compressione non attiva</string>
+ <string name="pref_dsp_enable">Attiva</string>
+ <string name="pref_effect_title">Seleziona potenza effetto</string>
+ <string name="dialog_effect">Potenza effetto</string>
+ <string name="pref_equalizer_title">Equalizzatore</string>
+ <string name="pref_equalizer_summary_on">Equalizzatore attivo</string>
+ <string name="pref_equalizer_summary_off">Equalizzatore non attivo</string>
+ <string name="pref_equalizer_enable">Attiva</string>
+ <string name="pref_equalizer_preset_title">Seleziona modello</string>
+ <string name="pref_equalizer_loudness_title">Compensazione rumorosità</string>
+ <string name="pref_bassboost_title">Amplificazione bassi</string>
+ <string name="pref_bassboost_summary_on">Amplificazione bassi attivata</string>
+ <string name="pref_bassboost_summary_off">Amplificazione bassi non attivata</string>
+ <string name="pref_bassboost_enable">Attiva</string>
+ <string name="pref_headset_virtual_title">Effetto stanza virtuale</string>
+ <string name="pref_headset_virtual_summary_on">Effetto stanza virtuale attivato</string>
+ <string name="pref_headset_virtual_summary_off">Effetto stanza virtuale non attivato</string>
+ <string name="pref_headset_virtual_enable">Attiva</string>
+ <string name="pref_room_title">Seleziona stanza</string>
+ <string name="dialog_room">Tipo di stanza</string>
+ <string name="menu_reset">Ripristina</string>
+ <string name="eq_preset_acoustic">Acustica</string>
+ <string name="eq_preset_bass_booster">Amplificazione bassi</string>
+ <string name="eq_preset_bass_reducer">Riduzione bassi</string>
+ <string name="eq_preset_classical">Classica</string>
+ <string name="eq_preset_deep">Intenso</string>
+ <string name="eq_preset_flat">Uniforme</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">Rock</string>
+ <string name="eq_preset_small_speakers">Altoparlanti piccoli</string>
+ <string name="eq_preset_treble_booster">Amplificazione alti</string>
+ <string name="eq_preset_treble_reducer">Riduzione alti</string>
+ <string name="eq_preset_vocal_booster">Amplificazione voce</string>
+ <string name="eq_preset_custom">Manuale</string>
+ <string name="category_wm8994_internal_speaker">Configurazione speaker interno</string>
+ <string name="category_wm8994_signal_processing">Elaborazione segnale</string>
+ <string name="category_wm8994_headphone_amp">Amplificatore cuffie</string>
+ <string name="category_wm8994_codec_optimization">Ottimizzazione codec</string>
+ <string name="category_wm8994_dac_config">Impostazioni del convertitore digitale/analogico</string>
+ <string name="category_wm8994_analog_path">Configurazione del percorso analogico</string>
+ <string name="category_wm8994_mic_settings">Impostazioni microfono</string>
+ <string name="category_wm8994_microphone_recording">Microfono</string>
+ <string name="wm8994_settings_title_head">Impostazioni audio</string>
+ <string name="wm8994_settings_title_subhead">Impostazioni audio</string>
+ <string name="wm8994_settings_summary_head">Controllo avanzato del processore audio hardware WM8994</string>
+ <string name="pref_wm8994_microphone_recording_title">Registrazione</string>
+ <string name="pref_wm8994_headphone_amp_title">Livello amplificatore</string>
+ <string name="pref_wm8994_headphone_amp_summary">Personalizza il miglioramento analogico</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Livello amplificatore cuffie</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Miglioramento analogico</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Amplificazione bassi</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Controlli avanzati dell\'amplificazione Bassi</string>
+ <string name="pref_wm8994_bass_boost_title">Intervallo amplificazione bassi</string>
+ <string name="pref_wm8994_bass_boost_summary">Gestione avanzata dynamic range</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Effetto amplificazione bassi</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Amplificazione bassi</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Miglioramento</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Intervallo amplificazione bassi</string>
+ <string name="pref_wm8994_control_enable_title">Abilita il controllo di WM8994</string>
+ <string name="pref_wm8994_control_enable_summary">Abilita i controlli avanzati per il processore audio hardware WM8994</string>
+ <string name="pref_wm8994_speaker_tuning_title">Regola altoparlante</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Riconfigura l\'equalizzatore hardware per ottenere maggiori bassi ed un suono bilanciato</string>
+ <string name="pref_wm8994_mono_downmix_title">Mono</string>
+ <string name="pref_wm8994_mono_downmix_summary">Rendi mono il suono di tipo stereo (per le uscite stereo, come le cuffie)</string>
+ <string name="pref_wm8994_stereo_expansion_title">Espansione stereo</string>
+ <string name="pref_wm8994_stereo_expansion_summary">“Espandi” il suono stereo attraverso l\'elaborazione digitale del segnale</string>
+ <string name="pref_wm8994_dac_direct_title">D/AC diretto</string>
+ <string name="pref_wm8994_dac_direct_summary">Accedi al convertitore digitale/analogico direttamente, aggirando il canale del mixer — Produce audio più pulito (rapporto segnale-rumore maggiore)</string>
+ <string name="pref_wm8994_dac_osr128_title">Riproduzione Hi-Fi</string>
+ <string name="pref_wm8994_dac_osr128_summary">Convertitore digitale-analogico con sovracampionamento a 128x — Suoni più puliti quando si riproduce musica</string>
+ <string name="pref_wm8994_adc_osr128_title">Registrazione Hi-Fi</string>
+ <string name="pref_wm8994_adc_osr128_summary">Convertitore analogico-digitale con sovracampionamento a 128x — Incrementa la qualità delle registrazioni</string>
+ <string name="pref_wm8994_fll_tuning_title">Regola clock audio</string>
+ <string name="pref_wm8994_fll_tuning_summary">Usa il clock regolato della sorgente audio WM8994 — Migliora la qualità del suono</string>
+ <string name="help_title">Manuale d\'uso</string>
+ <string name="help_text"><b>Che cos\'è DSP Manager?</b>
+\n
+\nDSP Manager è un\'applicazione per la regolazione dell\'audio in uscita
+<i>DSP</i> sta per Digital Signal Processing, mentre <i>Manager</i> si riferisce
+al fatto che l\'elaborazione del segnale digitale non viene effettivamente
+eseguita all\'interno della stessa applicazione, il gestore può solo attivarla
+per le applicazioni che sono compatibili con le specifiche degli effetti audio di
+Android, vale a dire la maggior parte dei lettori musicali.
+\n
+\n<b>Filosofia</b>
+\n
+\nL\'elaborazione audio CyanogenMod supporta quattro diverse categorie di uscita:
+auricolare, vivavoce, auricolare bluetooth e audio USB. Vi è un pannello di configurazione
+per ciascuna categoria di uscita. La filosofia di DSP Manager è quella di
+correggere le particolari carenze di ogni uscita audio per raggiungere la più
+ottimale esperienza d\'ascolto.
+\n
+\nA differenza degli effetti audio AOSP, non ci sono impostazioni per ogni
+applicazione. Questa è una scelta di progettazione: è l\'output che ci interessa,
+non quale applicazione lo genera.
+\n
+\n<b>Funzionalità</b>
+\n
+\nIl resto di questo documento descrive ogni effetto audio e il relativo utilizzo
+previsto in uno scenario.
+\n
+\n1. <b>Dynamic range compression (DRC)</b>
+\n
+\nQuesto effetto valuta la qualità dell\'audio percepito da un ascoltatore medio e
+guida un controllo di guadagno basato su questa stima. Il caso di uso principale
+è in ambienti rumorosi come in macchine o su strada, dove la parte meno intensa
+di una traccia musicale può essere coperta dal rumore di fondo.
+\n
+\n2. <b>Bass Boost</b>
+\n
+\nIl bass boost è un semplice filtro passabasso che può essere utilizzato per
+aggiungere un\'enfasi ai 55 Hz e alle frequenze più basse. L\'incremento è di
+circa 6 dB, e modificato dal parametro “forza”, che aggiunge la risonanza del
+filtro alla banda dei 55 Hz, dando enfasi aggiuntiva a questa frequenza.
+L\'effetto è stato progettato per combattere la perdita dei bassi frequente con
+piccoli altoparlanti e cuffie.
+\n
+\n3. <b>Equalizzatore</b>
+\n
+\nSi tratta di un equalizzatore a 6 bande con bande a 16, 64, 250, 1000, 4000 e
+16000 Hz. Alcuni dei più comuni effetti sono già inseriti, e la frequenza può anche
+essere personalizzata toccando l\'equalizzatore grafico. L\'effetto può essere
+utilizzato per soddisfare i gusti personali dell\'ascoltatore, o per meglio ridefinire
+le capacità di auticolari o altoparlanti.
+\n
+\nL\'equalizzatore contiene anche un filtro che compensa i cambiamenti della risposta
+dell\'orecchio in base al livello di pressione sonora che lo raggiunge. E\' richiesto
+l\'uso di una cuffia, e la “forza” è il parametro che deve essere sintonizzato
+correttamente prima che l\'effetto funzioni come dovuto.
+\n
+\nPer selezionare il giusto valore per la resistenza di compensazione, si consiglia di
+utilizzare musica ad ampio spettro come il rock o metal a basso volume. Provare a trovare
+una regolazione in cui i bassi vengono incrementati e la sonorità sembri bilanciata con
+il resto della musica. Se la configurazione è corretta, i bassi dovrebbero essere allo
+stesso livello degli altri strumenti, indipendentemente dal livello di ascolto.
+Altrimenti, se i bassi ad un volume alto sono troppo forti, la compensazione probabilmente
+è troppo forte, e deve essere ridotta.
+\n
+\nLa compensazione viene aggiunta alle regolazioni scelte dell\'utente.Se si desidera solo
+la compensazione, l\'equalizzatore dovrebbe essere impostato sul modello “Uniforme”.
+\n
+\n4. <b>Filtro cuffie</b>
+\n
+\nIl filtro auricolare è un progetto ispirato dal famoso circuito bs2b analogico. L\'effetto
+lascia il suono mono invariato, e regola la differenza di segnale attraverso un filtro
+passa-basso che approssima sia ombre acustiche sia ritardo interaurale contemporaneamente,
+dando il giusto tipo di indizi psicoacustici per all\'orecchio dell\'utente. L\'intento è
+quello di prevenire l\' affaticamento d\'ascolto derivante dall\'inverosimile separazione
+stereo insita in tutte le cuffie. L\'effetto dovrebbe essere attivato quando si utilizzano
+auricolari stereo.
+\n
+\nPoiché la miscelazione riduce la separazione leggermente, vi è un effetto che può essere
+usato per aumentare la larghezza dell\'immagine stereo percepita, quest\'impostazione è
+“Tipo di stanza”.
+ </string>
+</resources>
diff --git a/res/values-ja/arrays.xml b/res/values-ja/arrays.xml
new file mode 100644
index 0000000..03f56ac
--- /dev/null
+++ b/res/values-ja/arrays.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+ <string-array name="headphone_modes">
+ <item>スタジオ</item>
+ <item>部屋</item>
+ <item>広い部屋</item>
+ <item>ステージ</item>
+ </string-array>
+
+ <string-array name="compression_modes">
+ <item>スライト</item>
+ <item>モデレート</item>
+ <item>エクストリーム</item>
+ </string-array>
+
+ <string-array name="bassboost_modes">
+ <item>スライト</item>
+ <item>モデレート</item>
+ <item>エクストリーム</item>
+ </string-array>
+
+ <string-array name="equalizer_loudness_modes">
+ <item>無効</item>
+ <item>最弱</item>
+ <item>より弱</item>
+ <item>弱</item>
+ <item>強</item>
+ <item>より強</item>
+ <item>最強</item>
+ </string-array>
+
+</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
new file mode 100644
index 0000000..2b1d355
--- /dev/null
+++ b/res/values-ja/strings.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="select_configuration_title">編集する設定を選択</string>
+ <string name="headset_title">ヘッドセット</string>
+ <string name="speaker_title">スピーカー</string>
+ <string name="bluetooth_title">Bluetoothデバイス</string>
+ <string name="dsp_settings_headset">DSP 設定 - ヘッドフォン</string>
+ <string name="dsp_settings_speaker">DSP 設定 - スピーカー</string>
+ <string name="dsp_settings_bluetooth">DSP 設定 - Bluetooth デバイス</string>
+ <string name="pref_dsp_title">ダイナミックレンジコンプレッション</string>
+ <string name="pref_dsp_summary_on">コンプレッションは有効</string>
+ <string name="pref_dsp_summary_off">コンプレッションは無効</string>
+ <string name="pref_dsp_enable">有効にする</string>
+ <string name="pref_effect_title">エフェクトの強度を選択</string>
+ <string name="dialog_effect">エフェクト強度</string>
+ <string name="pref_bassboost_title">ベースブースト</string>
+ <string name="pref_bassboost_summary_on">ベースブーストは有効</string>
+ <string name="pref_bassboost_summary_off">ベースブーストは無効</string>
+ <string name="pref_bassboost_enable">有効にする</string>
+ <string name="pref_equalizer_preset_title">プリセット選択</string>
+ <string name="pref_equalizer_title">イコライザ</string>
+ <string name="pref_equalizer_summary_on">イコライザは有効</string>
+ <string name="pref_equalizer_summary_off">イコライザは無効</string>
+ <string name="pref_equalizer_enable">有効にする</string>
+ <string name="pref_equalizer_loudness_title">ラウドネス補正</string>
+ <string name="pref_headset_virtual_title">ヘッドセットバーチャルルームエフェクト</string>
+ <string name="pref_headset_virtual_summary_on">ヘッドセットバーチャルルームエフェクトは有効</string>
+ <string name="pref_headset_virtual_summary_off">ヘッドセットバーチャルルームエフェクトは無効</string>
+ <string name="pref_headset_virtual_enable">有効にする</string>
+ <string name="pref_room_title">部屋のタイプを選択</string>
+ <string name="dialog_room">部屋のタイプ</string>
+ <string name="menu_reset">リセット</string>
+
+
+ <string name="eq_preset_acoustic">アコースティック</string>
+ <string name="eq_preset_bass_booster">ベースブースト</string>
+ <string name="eq_preset_bass_reducer">ベースリデュース</string>
+ <string name="eq_preset_classical">クラシカル</string>
+ <string name="eq_preset_deep">ディープ</string>
+ <string name="eq_preset_flat">フラット</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">ロック</string>
+ <string name="eq_preset_small_speakers">小さいスピーカー</string>
+ <string name="eq_preset_treble_booster">トレブルブースト</string>
+ <string name="eq_preset_treble_reducer">トレブルリデュース</string>
+ <string name="eq_preset_vocal_booster">ボーカルブースター</string>
+ <string name="eq_preset_custom">カスタム</string>
+
+</resources>
diff --git a/res/values-lt/arrays.xml b/res/values-lt/arrays.xml
new file mode 100644
index 0000000..8954e8b
--- /dev/null
+++ b/res/values-lt/arrays.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>Originalas</item>
+ <item>Balansas</item>
+ <item>Didelis jautrumas</item>
+ <item>Garsi aplinka</item>
+ </string-array>
+ <string-array name="headphone_modes">
+ <item>Studija</item>
+ <item>Kambarys</item>
+ <item>Didelis kambarys</item>
+ <item>Scena</item>
+ </string-array>
+ <string-array name="equalizer_loudness_modes">
+ <item>Išjungta</item>
+ <item>Silpniausia</item>
+ <item>Silpnesnė</item>
+ <item>Silpna</item>
+ <item>Stipri</item>
+ <item>Stipresnė</item>
+ <item>Stipriausia</item>
+ </string-array>
+ <string-array name="compression_modes">
+ <item>Silpnas</item>
+ <item>Vidutinis</item>
+ <item>Stiprus</item>
+ </string-array>
+ <string-array name="bassboost_modes">
+ <item>Silpnas</item>
+ <item>Vidutinis</item>
+ <item>Stiprus</item>
+ </string-array>
+ <string-array name="wm8994_bassboost_modes">
+ <item>Standartinis</item>
+ <item>Maži garsiakalbiai</item>
+ </string-array>
+</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
new file mode 100644
index 0000000..b18b7c8
--- /dev/null
+++ b/res/values-lt/strings.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <string name="app_name">DSP Manager</string>
+ <string name="select_configuration_title">Pasirinkite redaguoti norimą konfigūraciją</string>
+ <string name="headset_title">Laisvų rankų įranga</string>
+ <string name="speaker_title">Garsiakalbis</string>
+ <string name="bluetooth_title">Bluetooth</string>
+ <string name="usb_title">USB / Dokas</string>
+ <string name="audio_effects">Garso efektai</string>
+ <string name="pref_unavailable">Funkcija negalima jūsų prietaise</string>
+ <string name="dsp_settings_headset">DSP nustatymai - Laisvų rankų įranga</string>
+ <string name="dsp_settings_speaker">DSP nustatymai - Telefono garsiakalbis</string>
+ <string name="dsp_settings_bluetooth">"DSP nustatymai - „Bluetooth“ prietaisas"</string>
+ <string name="dsp_settings_usb">DSP nustatymai - USB prietaisas</string>
+ <string name="dsp_settings_wm8994">DSP nustatymai - WM8994</string>
+ <string name="pref_dsp_title">Dinaminė diapazono kompresija</string>
+ <string name="pref_dsp_summary_on">Dinaminė diapazono kompresija įjungta</string>
+ <string name="pref_dsp_summary_off">Dinaminė diapazono kompresija išjungta</string>
+ <string name="pref_dsp_enable">Įjungti</string>
+ <string name="pref_effect_title">Pasirinkite efekto stiprumą</string>
+ <string name="dialog_effect">Efekto stiprumas</string>
+ <string name="pref_equalizer_title">Ekvalaizeris</string>
+ <string name="pref_equalizer_summary_on">Ekvalaizeris įjungtas</string>
+ <string name="pref_equalizer_summary_off">Ekvalaizeris išjungtas</string>
+ <string name="pref_equalizer_enable">Įjungti</string>
+ <string name="pref_equalizer_preset_title">Išankstiniai nustatymai</string>
+ <string name="pref_equalizer_loudness_title">Garsumo kompensacija</string>
+ <string name="pref_bassboost_title">Žemų dažnių stiprintuvas</string>
+ <string name="pref_bassboost_summary_on">Žemų dažnių stiprintuvas įjungtas</string>
+ <string name="pref_bassboost_summary_off">Žemų dažnių stiprintuvas išjungtas</string>
+ <string name="pref_bassboost_enable">Įjungti</string>
+ <string name="pref_headset_virtual_title">Laisvų rankų įrangos virtualaus kambario efektas</string>
+ <string name="pref_headset_virtual_summary_on">Laisvų rankų įrangos virtualaus kambario efektas įjungtas</string>
+ <string name="pref_headset_virtual_summary_off">Laisvų rankų įrangos virtualaus kambario efektas išjungtas</string>
+ <string name="pref_headset_virtual_enable">Įjungti</string>
+ <string name="pref_room_title">Pasirinkite kambario tipą</string>
+ <string name="dialog_room">Kambario tipas</string>
+ <string name="menu_reset">Atkurti</string>
+ <string name="eq_preset_acoustic">Akustinis</string>
+ <string name="eq_preset_bass_booster">Žemų dažnių stiprintuvas</string>
+ <string name="eq_preset_bass_reducer">Žemų dažnių mažintuvas</string>
+ <string name="eq_preset_classical">Klasikinis</string>
+ <string name="eq_preset_deep">Gilus</string>
+ <string name="eq_preset_flat">Lygus</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">Rokas</string>
+ <string name="eq_preset_small_speakers">Maži garsiakalbiai</string>
+ <string name="eq_preset_treble_booster">Aukštų dažnių stiprintuvas</string>
+ <string name="eq_preset_treble_reducer">Aukštų dažnių mažintuvas</string>
+ <string name="eq_preset_vocal_booster">Vokalo stiprintuvas</string>
+ <string name="eq_preset_custom">Individualus</string>
+ <string name="category_wm8994_internal_speaker">Garsiakalbis</string>
+ <string name="category_wm8994_signal_processing">Signalo apdorojimas</string>
+ <string name="category_wm8994_headphone_amp">Laisvų rankų įranga</string>
+ <string name="category_wm8994_codec_optimization">Kodeko optimizavimas</string>
+ <string name="category_wm8994_dac_config">Skaitmeninio / analoginio keitiklio nustatymai</string>
+ <string name="category_wm8994_analog_path">Analoginio kanalo konfigūracija</string>
+ <string name="category_wm8994_mic_settings">Mikrofono nustatymai</string>
+ <string name="category_wm8994_microphone_recording">Mikrofonas</string>
+ <string name="wm8994_settings_title_head">Garso nustatymai</string>
+ <string name="wm8994_settings_title_subhead">Garso nustatymai</string>
+ <string name="wm8994_settings_summary_head">Išplėstinė WM8994 garso procesoriaus kontrolė</string>
+ <string name="pref_wm8994_microphone_recording_title">Išankstiniai nustatymai</string>
+ <string name="pref_wm8994_headphone_amp_title">Stiprintuvo lygis</string>
+ <string name="pref_wm8994_headphone_amp_summary">Redaguoti analoginį stiprintuvą</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Laisvų rankų įrangos stiprintuvo lygis</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Analoginis stiprintuvas</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Žemų dažnių stiprintuvas</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Išplėstinė žemų dažnių stiprintuvo kontrolė</string>
+ <string name="pref_wm8994_bass_boost_title">Žemų dažnių diapazonas</string>
+ <string name="pref_wm8994_bass_boost_summary">Išplėstinis dinaminio diapazono valdymas</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Išankstiniai nustatymai</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Žemi dažniai</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Stiprintuvas</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Žemų dažnių diapazonas</string>
+ <string name="pref_wm8994_control_enable_title">Įjungti WM8994 valdymą</string>
+ <string name="pref_wm8994_control_enable_summary">Išplėstinė WM8994 garso procesoriaus kontrolė</string>
+ <string name="pref_wm8994_speaker_tuning_title">Muzikos derinimas</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Perkonfiguruoja systemos ekvalaizerį, siekiant išgauti daugiau boso ir subalansuoto garso</string>
+ <string name="pref_wm8994_mono_downmix_title">Mono konvertavimas</string>
+ <string name="pref_wm8994_mono_downmix_summary">Konvertuoti stereo garsą į mono (stereo išėjimams, pavyzdžiui, ausinėms)</string>
+ <string name="pref_wm8994_stereo_expansion_title">Stereo plėtra</string>
+ <string name="pref_wm8994_stereo_expansion_summary">"„Išplėsti“ stereo garsą naudojant skaitmeninio signalo apdorojimą"</string>
+ <string name="pref_wm8994_dac_direct_title">Tiesioginis D / AC</string>
+ <string name="pref_wm8994_dac_direct_summary">Prieiga prie skaitmeninio / analoginio keitiklio tiesiogiai, apeinant kanalų mikserį. Gamina aiškesnį garsą (didesnis signalo / triukšmo santykis)</string>
+ <string name="pref_wm8994_dac_osr128_title">"„Hi-Fi“ atkūrimas"</string>
+ <string name="pref_wm8994_dac_osr128_summary">Skaitmeninis / analoginis keitiklis, 128x perviršinė atskaita - aiškesnis garsas, kai groja muzika</string>
+ <string name="pref_wm8994_adc_osr128_title">"„Hi-Fi“ įrašymas"</string>
+ <string name="pref_wm8994_adc_osr128_summary">Analoginis / skaitmeninis keitiklis, 128x perviršinė atskaita - pagerina įrašų kokybę</string>
+ <string name="pref_wm8994_fll_tuning_title">Suderintas garso dažnis</string>
+ <string name="pref_wm8994_fll_tuning_summary">Naudokite suderintą WM8994 garso dažnį - pagerina garso kokybę</string>
+ <string name="help_title">Pagalba</string>
+</resources>
diff --git a/res/values-lv/arrays.xml b/res/values-lv/arrays.xml
new file mode 100644
index 0000000..752b922
--- /dev/null
+++ b/res/values-lv/arrays.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="headphone_modes">
+ <item>Studija</item>
+ <item>Istaba</item>
+ <item>Liela istaba</item>
+ <item>Arēna</item>
+ </string-array>
+
+ <string-array name="equalizer_loudness_modes">
+ <item>Izslēgts</item>
+ <item>Visvājākā</item>
+ <item>Vājāka</item>
+ <item>Vāja</item>
+ <item>Stipra</item>
+ <item>Stiprāka</item>
+ <item>Visstiprākā</item>
+ </string-array>
+
+ <string-array name="compression_modes">
+ <item>Vājš</item>
+ <item>Mērens</item>
+ <item>Ekstremāls</item>
+ </string-array>
+
+ <string-array name="bassboost_modes">
+ <item>Vājš</item>
+ <item>Mērens</item>
+ <item>Ekstremāls</item>
+ </string-array>
+</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
new file mode 100644
index 0000000..878da90
--- /dev/null
+++ b/res/values-lv/strings.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <string name="select_configuration_title">Izvēlies konfigurāciju labošanai</string>
+ <string name="headset_title">Austiņas</string>
+ <string name="speaker_title">Skaļrunis</string>
+ <string name="bluetooth_title">Bluetooth</string>
+ <string name="dsp_settings_headset">DSP iestatījumi - Austiņas</string>
+ <string name="dsp_settings_speaker">DSP iestatījumi - Skaļrunis</string>
+ <string name="dsp_settings_bluetooth">DSP iestatījumi - Bluetooth</string>
+ <string name="audio_effects">Audio efekti</string>
+ <string name="pref_dsp_title">Dinamiskā diapazona saspiešana</string>
+ <string name="pref_dsp_summary_on">Saspiešana ieslēgta</string>
+ <string name="pref_dsp_summary_off">Saspiešana izslēgta</string>
+ <string name="pref_dsp_enable">Ieslēgt</string>
+ <string name="pref_effect_title">Izvēlies efekta stiprumu</string>
+ <string name="dialog_effect">Efekta stiprums</string>
+ <string name="pref_equalizer_title">Ekvalaizers</string>
+ <string name="pref_equalizer_summary_on">Ekvalaizers ieslēgts</string>
+ <string name="pref_equalizer_summary_off">Ekvalaizers izslēgts</string>
+ <string name="pref_equalizer_enable">Ieslēgt</string>
+ <string name="pref_equalizer_preset_title">Izvēlies režīmu</string>
+ <string name="pref_equalizer_loudness_title">Skaļuma kompensācija</string>
+ <string name="pref_bassboost_title">Basu pastiprināšana</string>
+ <string name="pref_bassboost_summary_on">Basu pastiprināšana ieslēgta</string>
+ <string name="pref_bassboost_summary_off">Basu pastiprināšana izslēgta</string>
+ <string name="pref_bassboost_enable">Ieslēgt</string>
+ <string name="pref_headset_virtual_title">Virtuālās istabas efekts</string>
+ <string name="pref_headset_virtual_summary_on">Virtuālās istabas efekts ieslēgts</string>
+ <string name="pref_headset_virtual_summary_off">Virtuālās istabas efekts izslēgts</string>
+ <string name="pref_headset_virtual_enable">Ieslēgt</string>
+ <string name="pref_room_title">Izvēlies istabas tipu</string>
+ <string name="dialog_room">Istabas tips</string>
+ <string name="menu_reset">Nodzēst</string>
+
+ <string name="eq_preset_acoustic">Akustika</string>
+ <string name="eq_preset_bass_booster">Basu pastiprināšana</string>
+ <string name="eq_preset_bass_reducer">Basu pazemināšana</string>
+ <string name="eq_preset_classical">Klasika</string>
+ <string name="eq_preset_deep">Dziļums</string>
+ <string name="eq_preset_flat">Istaba</string>
+ <string name="eq_preset_rock">Roks</string>
+ <string name="eq_preset_small_speakers">Mazi skaļruņi</string>
+ <string name="eq_preset_treble_booster">Smalko skaņu pastiprināšana</string>
+ <string name="eq_preset_treble_reducer">Smalko skaņu pazemināšana</string>
+ <string name="eq_preset_vocal_booster">Vokāla pastiprināšana</string>
+ <string name="eq_preset_custom">Pielāgots režīms</string>
+</resources>
diff --git a/res/values-nl/arrays.xml b/res/values-nl/arrays.xml
new file mode 100644
index 0000000..996d741
--- /dev/null
+++ b/res/values-nl/arrays.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>Origineel</item>
+ <item>Gebalanceerd</item>
+ <item>Zeer gevoelig</item>
+ <item>Luide omgeving</item>
+ </string-array>
+ <string-array name="headphone_modes">
+ <item>Studio</item>
+ <item>Ruimte</item>
+ <item>Grote ruimte</item>
+ <item>Podium</item>
+ </string-array>
+ <string-array name="equalizer_loudness_modes">
+ <item>Uitgeschakeld</item>
+ <item>Zwakst</item>
+ <item>Zwakker</item>
+ <item>Zwak</item>
+ <item>Sterk</item>
+ <item>Sterker</item>
+ <item>Sterkst</item>
+ </string-array>
+ <string-array name="compression_modes">
+ <item>Licht</item>
+ <item>Normaal</item>
+ <item>Extreem</item>
+ </string-array>
+ <string-array name="bassboost_modes">
+ <item>Licht</item>
+ <item>Normaal</item>
+ <item>Extreem</item>
+ </string-array>
+ <string-array name="wm8994_bassboost_modes">
+ <item>Standaard</item>
+ <item>Kleine speakers</item>
+ </string-array>
+</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
new file mode 100644
index 0000000..8825a25
--- /dev/null
+++ b/res/values-nl/strings.xml
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name">DSP Manager</string>
+ <string name="select_configuration_title">Kies configuratie om te bewerken</string>
+ <string name="headset_title">Headset</string>
+ <string name="speaker_title">Speaker</string>
+ <string name="bluetooth_title">Bluetooth</string>
+ <string name="usb_title">USB/dock</string>
+ <string name="audio_effects">Geluidseffecten</string>
+ <string name="pref_unavailable">Functionaliteit is niet beschikbaar voor uw apparaat</string>
+ <string name="dsp_settings_headset">DSP-instellingen - Headset</string>
+ <string name="dsp_settings_speaker">DSP-instellingen - Telefoonspeaker</string>
+ <string name="dsp_settings_bluetooth">DSP-instellingen - Bluetoothapparaat</string>
+ <string name="dsp_settings_usb">DSP-instellingen - USB-apparaat</string>
+ <string name="dsp_settings_wm8994">DSP-instellingen - WM8994</string>
+ <string name="pref_dsp_title">Dynamisch bereikcompressie</string>
+ <string name="pref_dsp_summary_on">Dynamisch bereikcompressie ingeschakeld</string>
+ <string name="pref_dsp_summary_off">Dynamisch bereikcompressie uitgeschakeld</string>
+ <string name="pref_dsp_enable">Inschakelen</string>
+ <string name="pref_effect_title">Effectsterkte</string>
+ <string name="dialog_effect">Effectsterkte</string>
+ <string name="pref_equalizer_title">Equalizer</string>
+ <string name="pref_equalizer_summary_on">Equalizer ingeschakeld</string>
+ <string name="pref_equalizer_summary_off">Equalizer uitgeschakeld</string>
+ <string name="pref_equalizer_enable">Inschakelen</string>
+ <string name="pref_equalizer_preset_title">Kies preset</string>
+ <string name="pref_equalizer_loudness_title">Luidheidscompensatie</string>
+ <string name="pref_bassboost_title">Basversterker</string>
+ <string name="pref_bassboost_summary_on">Basversterker ingeschakeld</string>
+ <string name="pref_bassboost_summary_off">Basversterker uitgeschakeld</string>
+ <string name="pref_bassboost_enable">Inschakelen</string>
+ <string name="pref_headset_virtual_title">Headset in virtuele ruimte-effect</string>
+ <string name="pref_headset_virtual_summary_on">\'Headset in virtuele ruimte-effect\' ingeschakeld</string>
+ <string name="pref_headset_virtual_summary_off">\'Headset in virtuele ruimte-effect\' uitgeschakeld</string>
+ <string name="pref_headset_virtual_enable">Inschakelen</string>
+ <string name="pref_room_title">Type ruimte</string>
+ <string name="dialog_room">Type ruimte</string>
+ <string name="menu_reset">Herstellen</string>
+
+ <string name="eq_preset_acoustic">Akoestiek</string>
+ <string name="eq_preset_bass_booster">Basversterker</string>
+ <string name="eq_preset_bass_reducer">Basverzwakker</string>
+ <string name="eq_preset_classical">Klassiek</string>
+ <string name="eq_preset_deep">Diep</string>
+ <string name="eq_preset_flat">Vlak</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">Rock</string>
+ <string name="eq_preset_small_speakers">Kleine speakers</string>
+ <string name="eq_preset_treble_booster">Hoge tonenversterker</string>
+ <string name="eq_preset_treble_reducer">Hoge tonenverzwakker</string>
+ <string name="eq_preset_vocal_booster">Stemversterker</string>
+ <string name="eq_preset_custom">Aangepast</string>
+
+ <string name="category_wm8994_internal_speaker">Speaker</string>
+ <string name="category_wm8994_signal_processing">Signaalverwerking</string>
+ <string name="category_wm8994_headphone_amp">Headset</string>
+ <string name="category_wm8994_codec_optimization">Codecoptimalisatie</string>
+ <string name="category_wm8994_dac_config">Digitaal/analoog-conversie-instellingen</string>
+ <string name="category_wm8994_analog_path">Analoge padenconfiguratie</string>
+ <string name="category_wm8994_mic_settings">Microfooninstellingen</string>
+ <string name="category_wm8994_microphone_recording">Microfoon</string>
+
+ <string name="wm8994_settings_title_head">Geluidsinstellingen</string>
+ <string name="wm8994_settings_title_subhead">Geluidsinstellingen</string>
+ <string name="wm8994_settings_summary_head">Geavanceerd beheer van de WM8994-geluidsprocessor</string>
+ <string name="pref_wm8994_microphone_recording_title">Preset voor opnemen</string>
+ <string name="pref_wm8994_headphone_amp_title">Versterkerniveau</string>
+ <string name="pref_wm8994_headphone_amp_summary">Analoge gain wijzigen</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Headsetversterkerniveau</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Analoge gain</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Basversterker</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Geavanceerd beheer van basversterker</string>
+ <string name="pref_wm8994_bass_boost_title">Bereik basversterker</string>
+ <string name="pref_wm8994_bass_boost_summary">Geavanceerd beheer van dynamisch bereik</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Preset voor basversterker</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Basversterker</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Gain</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Bereik van basversterker</string>
+ <string name="pref_wm8994_control_enable_title">WM8994-beheer inschakelen</string>
+ <string name="pref_wm8994_control_enable_summary">Geavanceerde instellingen voor de WM8994-geluidsprocessor</string>
+ <string name="pref_wm8994_speaker_tuning_title">Muziektoon</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Hardware-EQ herconfigureren voor meer bas en een evenwichtig klankbeeld</string>
+ <string name="pref_wm8994_mono_downmix_title">Downmixen naar mono</string>
+ <string name="pref_wm8994_mono_downmix_summary">Stereo- naar monogeluid downmixen (voor stereo-uitvoer, zoals headsets)</string>
+ <string name="pref_wm8994_stereo_expansion_title">Stereo-uitbreiding</string>
+ <string name="pref_wm8994_stereo_expansion_summary">Stereogeluid \'uitbreiden\u2019 d.m.v. digitale geluidsverwerking</string>
+ <string name="pref_wm8994_dac_direct_title">Directe digitaal/analoog-omzetter</string>
+ <string name="pref_wm8994_dac_direct_summary">Direct toegang verkrijgen tot de digitaal/analoog-omzetter en de kanalenmixer omzeilen voor helderder geluid (lagere signaal-ruisverhouding)</string>
+ <string name="pref_wm8994_dac_osr128_title">Hifi afspelen</string>
+ <string name="pref_wm8994_dac_osr128_summary">Digitaal-naar-analoog-omzetter 128 keer overbemonsteren (zuiverder geluid bij het afspelen van muziek)</string>
+ <string name="pref_wm8994_adc_osr128_title">Hifi opnemen</string>
+ <string name="pref_wm8994_adc_osr128_summary">Analoog-naar-digitaal-omzetter 128 keer overbemonsteren (verbetert opnamekwaliteit)</string>
+ <string name="pref_wm8994_fll_tuning_title">Afgestemde geluidsklok</string>
+ <string name="pref_wm8994_fll_tuning_summary">Gebruik afgestemde bron van WM8994-geluidsklok (verbetert geluidskwaliteit)</string>
+
+ <string name="help_title">Help</string>
+ <string name="help_text"><b>Wat is DSP Manager?</b>
+\n
+\nDSP Manager is een geluidsmanipulatie-app. <i>DSP</i> staat
+voor \'Digital Signal Processing\' (digitale signalenverwerking) en het
+<i>\'Manager\'</i>-deel staat voor het feit dat de verwerking niet
+gebeurt in de app zelf; de beheerder kan dit alleen inschakelen voor apps die
+compatibel zijn met de geluidseffectenspecificaties van Android, zoals de meeste
+muziekspelers.
+\n
+\n<b>Filosofie</b>
+\n
+\nDe mogelijkheden van het geluidsverwerkingssysteem van CyanogenMod biedt
+ondersteuning voor vier uitvoersoorten: bedrade headset,
+telefoonluidspreker, USB-apparaat en bluetoothheadset. Voor elke categorie bestaat er
+een configuratiepaneel. De filosofie van DSP Manager is om de geluidsuitvoer zo
+te manipuleren, dat het geluid het best beleefd kan worden.
+\n
+\nIn tegenstelling tot de standaard geluidseffecten van Android zijn er geen aparte
+instellingen per app. Dit is opzettelijk gedaan: het is de uitvoer die belangrijk
+is, niet welke app geluid maakt.
+\n
+\n<b>Functies</b>
+\n
+\nDe rest van dit document beschrijft elk geluidseffect en de situatie waarvoor
+het bedoeld is.
+\n
+\n1. <b>Dynamisch bereik compressie (DRC)</b>
+\n
+\nDit effect schat het geluidsniveau van het geluid in zoals door de gemiddelde
+luisteraar gehoord zou worden en stuurt een geluidsversterker aan die gebaseerd is op
+die inschatting. Dit wordt meestal gebruikt in luidruchtige omgevingen zoals bij
+auto\'s op de weg, waarbij rustige delen van het geluid overstemd zouden kunnen
+worden door de geluiden op de achtergrond.
+\n
+\n
+Het enige wat handmatig gewijzigd kan worden is hoe hard DSP Manager moet
+proberen om het geluidsniveau te behouden op het beoogde niveau. Iets soortgelijks
+van Google is niet beschikbaar.
+\n
+\n2. <b>Basversterker</b>
+\n
+\nDe basversterker is een simpel laagdoorlatend filter dat gebruikt kan worden om de
+nadruk te leggen op frequenties tot 55 Hz. De versterking is ongeveer 6 dB en kan
+worden aangepast met de \'sterkte\'-parameter, die bijdraagt aan de respons beneden de
+55 Hz, waardoor deze frequenties extra benadrukt worden. Het effect is ontworpen om
+het verlies van lage frequenties te bestrijden zoals dat optreedt bij kleine
+luidsprekers en in-oor headsets die niet goed aansluiten op het gehoorkanaal van
+de gebruiker.
+\n
+\n3. <b>Equalizer</b>
+\n
+\nDit is een 6-bands equalizer met banden op 16, 64, 250, 1000, 4000 en 16000 Hz.
+Enkele veel voorkomende instellingen zijn kant-en-klaar beschikbaar, maar de
+frequentierespons kan ook op maat worden ingesteld door te tikken op de
+equalizergrafiek. Het effect wordt gebruikt voor het afstemmen van de frequentie
+naar de wens van de gebruiker of de specifieke mogelijkheden van de beschikbare
+headset/luidsprekers.
+\n
+\nDe equalizer bevat ook een luidheidscompensatiefilter, dat veranderingen van de
+frequentie in het oor egaliseert op basis van de geluidsdruk die het oor van de
+gebruiker bereikt. Het gebruik van een bedrade headset is noodzakelijk en de
+compensatiewaarde moet correct worden afgestemd voordat het effect werkt zoals
+ontworpen.
+\n
+\nOm de luidheidscompensatie correct af te stemmen, dient u het laagste muziekvolume
+te kiezen en breed-spectrum lawaaierige muziek, zoals rock of metal, af te spelen.
+Probeer een compensatie-instelling te vinden waarbij de bas voldoende is versterkt om
+hoorbaar te zijn en waarbij de muziek goed in balans lijkt te zijn. De compensatiewaarde
+is correct afgestemd indien de bas op hetzelfde niveau ten opzichte van de andere
+instrumenten ligt, ongeacht het volumeniveau. Als muziek een te sterke bas heeft bij hoge
+niveaus, is de compensatiewaarde waarschijnlijk te sterk en moet deze worden verminderd.
+\n
+\nDe ingestelde compensatie wordt toegevoegd aan de gekozen instelling van de
+equalizer. Als enkel compensatie nodig is, moet de equalizer op \'vlak\' blijven ingesteld.
+\n
+\n4. <b>Headsetfilter</b>
+\n
+\nHet headsetfilter is een crossfeed-ontwerp, geïnspireerd door het beroemde bs2b
+analoge circuit. Het filter laat monogeluid ongewijzigd door en laat het
+verschil in signaal door een laagdoorlaatfilter gaan dat zowel hoofdschaduw als
+in-oor-vertraging nabootst, wat het juiste psychologische effect voor de oren van de
+gebruiker oplevert. Het is de bedoeling te voorkomen dat de luisteraar vermoeid wordt
+als gevolg van de onwaarschijnlijke stereoscheiding die inherent is aan alle headsets.
+Het effect moet worden ingeschakeld indien een stereoheadset wordt gebruikt.
+\n
+\nOmdat het mengen het stereobeeld enigszins vermindert, kan er een Haas-effect
+galm ontstaan, die kan worden gebruikt om de waargenomen breedte van het stereobeeld te
+verhogen. Dit kan worden afgestemd door de \'Type ruimte\'-instelling.
+ </string>
+</resources>
diff --git a/res/values-pl/arrays.xml b/res/values-pl/arrays.xml
new file mode 100644
index 0000000..48a688a
--- /dev/null
+++ b/res/values-pl/arrays.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>Oryginalne</item>
+ <item>Zbalansowane</item>
+ <item>Wysoka czułość</item>
+ <item>Głośne tło</item>
+ </string-array>
+
+ <string-array name="headphone_modes">
+ <item>Studio</item>
+ <item>Pokój</item>
+ <item>Duży pokój</item>
+ <item>Scena</item>
+ </string-array>
+
+ <string-array name="equalizer_loudness_modes">
+ <item>Wyłączona</item>
+ <item>Najsłabsza</item>
+ <item>Słabsza</item>
+ <item>Słaba</item>
+ <item>Silna</item>
+ <item>Silniejsza</item>
+ <item>Najsilniejsza</item>
+ </string-array>
+
+ <string-array name="compression_modes">
+ <item>Lekka</item>
+ <item>Umiarkowana</item>
+ <item>Silna</item>
+ </string-array>
+
+ <string-array name="bassboost_modes">
+ <item>Lekkie</item>
+ <item>Umiarkowane</item>
+ <item>Silne</item>
+ </string-array>
+
+ <string-array name="wm8994_bassboost_modes">
+ <item>Standardowe</item>
+ <item>Małe głośniki</item>
+ </string-array>
+</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
new file mode 100644
index 0000000..f0d3a66
--- /dev/null
+++ b/res/values-pl/strings.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name">Menedżer DSP</string>
+ <string name="select_configuration_title">Wybierz konfigurację do edycji</string>
+ <string name="headset_title">Zestaw słuchawkowy</string>
+ <string name="speaker_title">Głośnik</string>
+ <string name="bluetooth_title">Urządzenie Bluetooth</string>
+ <string name="usb_title">USB/Stacja dokująca</string>
+ <string name="audio_effects">Efekty dźwiękowe</string>
+ <string name="pref_unavailable">Funkcjonalność niedostępna dla urządzenia</string>
+ <string name="dsp_settings_headset">Ustawienia DSP - Zestaw słuchawkowy</string>
+ <string name="dsp_settings_speaker">Ustawienia DSP - Głośnik</string>
+ <string name="dsp_settings_bluetooth">Ustawienia DSP - Bluetooth</string>
+ <string name="dsp_settings_usb">Ustawienia DSP - Urządzenie USB</string>
+ <string name="dsp_settings_wm8994">Ustawienia DSP - WM8994</string>
+ <string name="pref_dsp_title">Kompresja zakresu dynamiki</string>
+ <string name="pref_dsp_summary_on">Kompresja jest włączona</string>
+ <string name="pref_dsp_summary_off">Kompresja jest wyłączona</string>
+ <string name="pref_dsp_enable">Włącz</string>
+ <string name="pref_effect_title">Wybierz siłę efektu</string>
+ <string name="dialog_effect">Siła efektu</string>
+ <string name="pref_equalizer_title">Equalizer</string>
+ <string name="pref_equalizer_summary_on">Equalizer jest aktywny</string>
+ <string name="pref_equalizer_summary_off">Equalizer jest nieaktywny</string>
+ <string name="pref_equalizer_enable">Włącz</string>
+ <string name="pref_equalizer_preset_title">Wybierz ustawienie</string>
+ <string name="pref_equalizer_loudness_title">Kompensacja głośności</string>
+ <string name="pref_bassboost_title">Podbicie basu</string>
+ <string name="pref_bassboost_summary_on">Podbicie basu jest włączone</string>
+ <string name="pref_bassboost_summary_off">Podbicie basu jest wyłączone</string>
+ <string name="pref_bassboost_enable">Włącz</string>
+ <string name="pref_headset_virtual_title">Efekt wirtualnego pokoju</string>
+ <string name="pref_headset_virtual_summary_on">Efekt wirtualnego pokoju jest włączony</string>
+ <string name="pref_headset_virtual_summary_off">Efekt wirtualnego pokoju jest wyłączony</string>
+ <string name="pref_headset_virtual_enable">Włącz</string>
+ <string name="pref_room_title">Wybierz typ pokoju</string>
+ <string name="dialog_room">Typ pokoju</string>
+ <string name="menu_reset">Przywróć domyślne</string>
+
+ <string name="eq_preset_acoustic">Akustyczna</string>
+ <string name="eq_preset_bass_booster">Podbicie basu</string>
+ <string name="eq_preset_bass_reducer">Redukcja basu</string>
+ <string name="eq_preset_classical">Klasyczna</string>
+ <string name="eq_preset_deep">Głęboko</string>
+ <string name="eq_preset_flat">Płasko</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">Rock</string>
+ <string name="eq_preset_small_speakers">Małe głośniki</string>
+ <string name="eq_preset_treble_booster">Podbicie tonów wysokich</string>
+ <string name="eq_preset_treble_reducer">Redukcja tonów wysokich</string>
+ <string name="eq_preset_vocal_booster">Podbicie wokalu</string>
+ <string name="eq_preset_custom">Własne</string>
+
+ <!-- WM8994 -->
+ <!-- Categories -->
+ <string name="category_wm8994_internal_speaker">Głośnik</string>
+ <string name="category_wm8994_signal_processing">Przetwarzanie sygnału</string>
+ <string name="category_wm8994_headphone_amp">Zestaw słuchawkowy</string>
+ <string name="category_wm8994_codec_optimization">Optymalizacja kodeka</string>
+ <string name="category_wm8994_dac_config">Ustawienia przetwornika cyfrowo-analogowego</string>
+ <string name="category_wm8994_analog_path">Konfiguracja ścieżki analogowej</string>
+ <string name="category_wm8994_mic_settings">Ustawienia mikrofonu</string>
+ <string name="category_wm8994_microphone_recording">Mikrofon</string>
+ <!-- Titles/Summaries -->
+ <string name="wm8994_settings_title_head">Ustawienia dźwięku</string>
+ <string name="wm8994_settings_title_subhead">Ustawienia dźwięku</string>
+ <string name="wm8994_settings_summary_head">Zaawansowane ustawienia przetwornika WM8994</string>
+ <string name="pref_wm8994_microphone_recording_title">Ustawienie nagrywania</string>
+ <string name="pref_wm8994_headphone_amp_title">Poziom wzmacniacza</string>
+ <string name="pref_wm8994_headphone_amp_summary">Dopasuj wzmocnienie analogowe</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Poziom wzmacniacza słuchawek</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Wzmocnienie analogowe</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Podbicie basu</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Zaawansowane ustawienia podbicia basu</string>
+ <string name="pref_wm8994_bass_boost_title">Zakres podbicia basu</string>
+ <string name="pref_wm8994_bass_boost_summary">Zaawansowane zarządzanie zakresem dynamiki</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Ustawienie podbicia basu</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Podbicie basu</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Wzmocnienie</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Zakres podbicia basu</string>
+ <string name="pref_wm8994_control_enable_title">Włącz regulację WM8994</string>
+ <string name="pref_wm8994_control_enable_summary">Zaawansowane ustawienia przetwornika WM8994</string>
+ <string name="pref_wm8994_speaker_tuning_title">Wyreguluj dla muzyki</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Ustawia sprzętowy equalizer dla zbalansowania dźwięku i zwiększenia basu</string>
+ <string name="pref_wm8994_mono_downmix_title">Dźwięk mono</string>
+ <string name="pref_wm8994_mono_downmix_summary">Konwertuj dźwięk stereo do mono</string>
+ <string name="pref_wm8994_stereo_expansion_title">Poszerzenie stereo</string>
+ <string name="pref_wm8994_stereo_expansion_summary">“Poszerza” dźwięk stereo przetwarzając go cyfrowo</string>
+ <string name="pref_wm8994_dac_direct_title">Bezpośredni dostęp do przetwornika</string>
+ <string name="pref_wm8994_dac_direct_summary">Uzyskaj bezpośredni dostęp do przetwornika cyfrowo-analogowego, pomijając mikser kanałów. Daje czystszy dźwięk (niższy stosunek sygnału do szumu)</string>
+ <string name="pref_wm8994_dac_osr128_title">Odtwarzanie hi-fi</string>
+ <string name="pref_wm8994_dac_osr128_summary">128-krotne nadpróbkowanie przetwornika cyfrowo-analogowego - poprawia jakość odtwarzania</string>
+ <string name="pref_wm8994_adc_osr128_title">Nagrywanie hi-fi</string>
+ <string name="pref_wm8994_adc_osr128_summary">128-krotne nadpróbkowanie przetwornika analogowo-cyfrowego - poprawia jakość nagrywania</string>
+ <string name="pref_wm8994_fll_tuning_title">Regulacja zegara przetwornika</string>
+ <string name="pref_wm8994_fll_tuning_summary">Użyj wyregulowanych źródeł zegara WM8994 - poprawia jakość dźwięku</string>
+ <string name="help_title">Pomoc</string>
+</resources>
diff --git a/res/values-pt-rPT/arrays.xml b/res/values-pt-rPT/arrays.xml
new file mode 100644
index 0000000..05decfc
--- /dev/null
+++ b/res/values-pt-rPT/arrays.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="headphone_modes">
+ <item>Estúdio</item>
+ <item>Quarto</item>
+ <item>Quarto grande</item>
+ <item>Palco</item>
+ </string-array>
+
+ <string-array name="compression_modes">
+ <item>Pouco</item>
+ <item>Moderado</item>
+ <item>Extremo</item>
+ </string-array>
+
+ <string-array name="bassboost_modes">
+ <item>Pouco</item>
+ <item>Moderado</item>
+ <item>Extremo</item>
+ </string-array>
+</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000..90c13f0
--- /dev/null
+++ b/res/values-pt-rPT/strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="select_configuration_title">Seleccione a Configuração Para Editar</string>
+ <string name="headset_title">Auriculares</string>
+ <string name="speaker_title">Coluna do Telemóvel</string>
+ <string name="bluetooth_title">Dispositivo Bluetooth</string>
+ <string name="audio_effects">Filtros de áudio</string>
+ <string name="pref_dsp_title">Compressão da Faixa Dinâmica</string>
+ <string name="pref_dsp_summary_on">Compressão está activada</string>
+ <string name="pref_dsp_summary_off">Compressão está desactivada</string>
+ <string name="pref_dsp_enable">Activar</string>
+ <string name="pref_effect_title">Seleccionar Intensidade do Efeito</string>
+ <string name="dialog_effect">Intensidade do Efeito</string>
+ <string name="pref_equalizer_title">Equalizador</string>
+ <string name="pref_equalizer_summary_on">Equalizador está activado</string>
+ <string name="pref_equalizer_summary_off">Equalizador está desactivado</string>
+ <string name="pref_equalizer_enable">Activar</string>
+ <string name="pref_bassboost_title">Aumento dos Baixos</string>
+ <string name="pref_bassboost_summary_on">Aumento dos baixos está activado</string>
+ <string name="pref_bassboost_summary_off">Aumento dos baixos está desactivado</string>
+ <string name="pref_bassboost_enable">Activar</string>
+ <string name="pref_headset_virtual_title">Efeito de Auriculares Quarto Virtual</string>
+ <string name="pref_headset_virtual_summary_on">Efeito de Auriculares Quarto Virtual está activado</string>
+ <string name="pref_headset_virtual_summary_off">Efeito de Auriculares Quarto Virtual está desactivado</string>
+ <string name="pref_headset_virtual_enable">Activar</string>
+ <string name="pref_room_title">Seleccionar Tipo de Quarto</string>
+ <string name="dialog_room">Tipo de Quarto</string>
+ <string name="menu_reset">Restaurar</string>
+</resources>
diff --git a/res/values-pt/arrays.xml b/res/values-pt/arrays.xml
new file mode 100644
index 0000000..2abee2b
--- /dev/null
+++ b/res/values-pt/arrays.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string-array name="headphone_modes">
+ <item>Estúdio</item>
+ <item>Sala</item>
+ <item>Salão</item>
+ <item>Teatro</item>
+ </string-array>
+ <string-array name="compression_modes">
+ <item>Leve</item>
+ <item>Moderado</item>
+ <item>Extremo</item>
+ </string-array>
+ <string-array name="bassboost_modes">
+ <item>Leve</item>
+ <item>Moderado</item>
+ <item>Extremo</item>
+ </string-array>
+ <string-array name="microphone_recording_presets">
+ <item>Original</item>
+ <item>Balanceado</item>
+ <item>Alta Sensitividade</item>
+ <item>Ambiente Barulhento</item>
+ </string-array>
+ <string-array name="equalizer_loudness_modes">
+ <item>Desativado</item>
+ <item>Fraquíssimo</item>
+ <item>Muito Fraco</item>
+ <item>Fraco</item>
+ <item>Forte</item>
+ <item>Muito Forte</item>
+ <item>Fortíssimo</item>
+ </string-array>
+ <string-array name="wm8994_bassboost_modes">
+ <item>Padrão</item>
+ <item>Caixas de Som Pequenas</item>
+ </string-array>
+</resources>
\ No newline at end of file
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
new file mode 100644
index 0000000..865655d
--- /dev/null
+++ b/res/values-pt/strings.xml
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="app_name">Equalizador</string>
+ <string name="select_configuration_title">Selecione o tipo de dispositivo</string>
+ <string name="headset_title">Fones de ouvido</string>
+ <string name="speaker_title">Auto-falantes do aparelho</string>
+ <string name="bluetooth_title">Dispositivos bluetooth</string>
+ <string name="pref_dsp_title">Compressão de volume</string>
+ <string name="pref_dsp_summary_on">A compressão está ativada</string>
+ <string name="pref_dsp_summary_off">A compressão está desativada</string>
+ <string name="pref_dsp_enable">Ativar</string>
+ <string name="pref_effect_title">Potência do efeito</string>
+ <string name="dialog_effect">Potência do efeito</string>
+ <string name="pref_equalizer_title">Equalização</string>
+ <string name="pref_equalizer_summary_on">O equalizador está ativado</string>
+ <string name="pref_equalizer_summary_off">O equalizador está desativado</string>
+ <string name="pref_equalizer_enable">Ativar</string>
+ <string name="pref_bassboost_title">Ganho de Grave</string>
+ <string name="pref_bassboost_summary_on">Ganho de Grave está habilitado</string>
+ <string name="pref_bassboost_summary_off">Ganho de Grave está desabilitado</string>
+ <string name="pref_bassboost_enable">Habilitado</string>
+ <string name="pref_headset_virtual_title">Simulação de ambiente</string>
+ <string name="pref_headset_virtual_summary_on">A simulação está ativada</string>
+ <string name="pref_headset_virtual_summary_off">A simulação está desativada</string>
+ <string name="pref_headset_virtual_enable">Ativar</string>
+ <string name="pref_room_title">Selecione o ambiente</string>
+ <string name="dialog_room">Simulação de Ambiente</string>
+ <string name="menu_reset">Resetar</string>
+ <string name="dsp_settings_headset">Configurações Equalizador - Fone de Ouvido</string>
+ <string name="dsp_settings_speaker">Configurações Equalizador - Alto-falante</string>
+ <string name="dsp_settings_bluetooth">Configurações Equalizador - Dispositivo Bluetooth</string>
+ <string name="pref_equalizer_preset_title">Selecionar Predifinidos</string>
+ <string name="eq_preset_acoustic">Acústico</string>
+ <string name="eq_preset_bass_booster">Ganho de Grave</string>
+ <string name="eq_preset_bass_reducer">Redução de Grave</string>
+ <string name="eq_preset_classical">Clássico</string>
+ <string name="eq_preset_custom">Personalizado</string>
+ <string name="eq_preset_vocal_booster">Ganho de Voz</string>
+ <string name="eq_preset_treble_reducer">Redução de Agudo</string>
+ <string name="eq_preset_treble_booster">Ganho de Agudo</string>
+ <string name="eq_preset_small_speakers">Alto-falantes Pequenos</string>
+ <string name="eq_preset_rock">Rock</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="pref_equalizer_loudness_title">Compensação de ruído</string>
+ <string name="eq_preset_deep">Profundo</string>
+ <string name="eq_preset_flat">Plano</string>
+ <string name="audio_effects">Efeitos de Áudio</string>
+ <string name="pref_unavailable">Funcionalidade não está disponível em seu dispositivo</string>
+ <string name="category_wm8994_internal_speaker">Alto-falante</string>
+ <string name="category_wm8994_signal_processing">Processamento de sinal</string>
+ <string name="category_wm8994_headphone_amp">Fone</string>
+ <string name="category_wm8994_codec_optimization">Optimização de codec</string>
+ <string name="category_wm8994_dac_config">Conf. de conversor Digital/Analógico</string>
+ <string name="category_wm8994_analog_path">Conf. do trajeto analógico</string>
+ <string name="category_wm8994_mic_settings">Conf. de Microfone</string>
+ <string name="category_wm8994_microphone_recording">Microfone</string>
+ <string name="wm8994_settings_title_head">Conf. de Som</string>
+ <string name="wm8994_settings_title_subhead">Conf. de Som</string>
+ <string name="wm8994_settings_summary_head">Controle avançado do processador de som WM8994</string>
+ <string name="pref_wm8994_microphone_recording_title">Predefinição de gravação</string>
+ <string name="pref_wm8994_headphone_amp_title">Nível de amplicador</string>
+ <string name="pref_wm8994_headphone_amp_summary">Personalizar o ganho analógico</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Nível de amplificação do fone</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Ganho do analógico</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Ganho do grave</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Controles avançados p/ ganho de grave</string>
+ <string name="pref_wm8994_bass_boost_title">Variação do ganho do grave</string>
+ <string name="pref_wm8994_bass_boost_summary">Controle da variação dinânmica avançada</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Predefinição do ganho de grave</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Ganho de grave</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Ganho</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Variação do ganho do grave</string>
+ <string name="pref_wm8994_control_enable_title">Ativar Controle WM8994</string>
+ <string name="pref_wm8994_control_enable_summary">Controle avançado para o processador de som VM8994</string>
+ <string name="pref_wm8994_speaker_tuning_title">Sintonização p/ música</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Reconfigura o hardware EQ para mais grave e som balanceado</string>
+ <string name="pref_wm8994_mono_downmix_title">Remixar mono</string>
+ <string name="pref_wm8994_mono_downmix_summary">Remixar som estéreo para mono (para saída estéreo, tipo fones de ouvido)</string>
+ <string name="pref_wm8994_stereo_expansion_title">Expanção estéreo</string>
+ <string name="pref_wm8994_stereo_expansion_summary">“Expandir” som estéreo com processamento de sinal digital</string>
+ <string name="pref_wm8994_dac_direct_title">D/AC direto</string>
+ <string name="pref_wm8994_dac_direct_summary">Acessar conversor digital/analógico diretamente, ignorando o equalizador de canais. Produz audio mais limpo (diminui razão de sinal-para-ruído)</string>
+ <string name="pref_wm8994_dac_osr128_title">Reprodução hi-fi</string>
+ <string name="pref_wm8994_dac_osr128_summary">Conversor digital-para-analógico 128x de sobreamostragem — som mais limpo quando tocando música</string>
+ <string name="pref_wm8994_adc_osr128_title">Gravação hi-fi</string>
+ <string name="pref_wm8994_adc_osr128_summary">Conversor digital-para-analógico 128x de sobreamostragem — aumenta a qualidade das gravações</string>
+ <string name="pref_wm8994_fll_tuning_title">Tempo do audio sintonizado</string>
+ <string name="pref_wm8994_fll_tuning_summary">Usar fonte de tempo de audio WM8994 sintonizado — melhora qualidade do som</string>
+ <string name="dsp_settings_wm8994">Configurações DSP - WM8994</string>
+ <string name="help_title">Ajuda</string>
+ <string name="help_text"><b>O que é o Equalizador??</b>
+\n
+\nEqualizador é uma aplicação para ajuste de áudio por canal. <i>Equalizador</i>
+usa Processamento de áudio digital. O equalizador não é executado dentro da
+applicação; O equalizador somente funciona para aplicações que está de acordo
+com a especificação de efeito de áudio do Android. Ex. maioria dos tocadores
+de música.
+\n
+\n<b>Filosofia</b>
+\n
+\nO processamento de aúdio do CyanogenMod suporta quatro diferentes cantegorias de
+saídas: fone de ouvido com fio, áudio USB, alto-falante do telefone e fone bluetooth. Existe
+um painel de configuração separado para cada categoria de saída. A filosofia do
+Equalizador é para corrigir cada saída de áudio das deficiências para conseguir a
+maior eficiência para ouvir som de cada saída.
+\n
+\nAo contrário dos efeitos de áudio do projeto oficial do Android, não existe
+configurações por aplicações. Isto foi uma escolha intencional: nós preocupamos
+com a saída em si, e não qual aplicação gera o áudio para o Equalizador
+manipulá-lo.
+\n
+\n<b>Características</b>
+\n
+\nO resto deste documento descreve cada efeito de áudio e seu uso pretendido em
+cada cenário.
+\n
+\n1. <b>Compressão dinâmica de faixa (CDF)</b>
+\n
+\nEste efeito estima o volume do áudio como pode ser percibido por um ouvinte
+comum e configura o controle de ganho baseado nesta estimativa. O caso de uso
+primário é para ambientes barulhentos como dentro de carros ou na rua, onde
+partes da música com som baixo tem o risco de ser sobreposto pelo som
+ambiente.
+\n
+\nO ajuste determina o quanto o Equalizador vai tentar manter o volume de áudio
+no nível desejado. Não há nenhum equivalente no projeto oficial do Android
+para este efeito de equalização.
+\n
+\n2. <b>Reforço de Grave</b>
+\n
+\nO reforço de grave é um simples filtro passa-baixo que pode ser usado para
+adicionar uma ênfase aos 55 Hz ou frequências mais baixas. O ganho é em média 6 dB,
+e modificado pelo parâmetro força, no qual adiciona filtro de ressonância
+na faixa de 55 Hz, dando ênfase extra a aquela frequência. O efeito foi criado para
+combater a perda de frequência de grave que é comum em alto-falantes pequenos e
+fones de ouvidos quem não acomodam perfeitamente no ouvido do usuário.
+\n
+\n3. <b>Equalizador</b>
+\n
+\nIsto é um equalizador de 6 faixas que são: 16, 64, 250, 1000, 4000 e 16000 Hz.
+Algumas predefinições comuns são fornecidas, e a frequência de reposta também pode
+ser personalizada ao tocar no gráfico do equalizador. O efeito deve ser usado para
+ajustar a frequência de resposta ao gosto do usuário, ou para as capacidades
+particulares dos alto-falantes ou fones de ouvido disponíveis.
+\n
+\nO Equalizador também contém um filtro de compensação de ruído, que equaliza as
+alterações nas frequências de resposta do ouvido baseadas no nível de pressão do som
+no qual chega ao ouvido do usuário. O uso de fone de ouvido com fio é necessário, e
+o valor do parâmetro força deve ser ajustado corretamente antes do efeito funcionar
+corretamente.
+\n
+\nPara selecionar o valor correto para a compensação de força, use o volume mais
+baixo da música, e escolha algum espectro amplo de música barulhenta como rock ou
+metal. Tente encontrar a configuração em que o grave tenha aumentado até chegar de
+volta à audibilidade e pareça balanceado com o resto da música. Depois da compensação
+ser configurada corretamente, o grave deve permanecer ao mesmo nível relativo aos
+outros instrumentos independente do nível do volume. Por outro lado, se a música
+começar a soar com muito grave em níveis de volume alto, a compensação provavelmentem
+definida muito forte, e deve ser reduzida.
+\n
+\nA compensação é adicionada aos ajustes escolhidos do usuário. Se somente a
+compensação é desejada, o equalizador deve ser deixado na configuração “Plano”.
+\n
+\n4. <b>Filtro de Fone de Ouvido</b>
+\n
+\nO filtro de fone de ouvido é um projeto de alimentação cruzada inspirado no famoso
+circuito analógico bs2b. O efeito passa o som mono inalterado, e ajusta a diferença de
+sinal através de um filtro passa-baixo que aproxima que aproxima tanto sombra da
+cabeça e atraso interaural de uma só vez, dando o tipo certo de pistas psicoacústicas
+para os ouvidos do usuário. A intenção é previnir a fadiga do ouvinte decorrente da
+separação estéreo implausível inerente a todos fones de ouvido. O efeito deve ser
+ativado quando usando fones de ouvido estéreo.
+\n
+\nDevido à mistura reduzir um pouco a separação estéreo, existe um efeito de
+reverbação Haas, que pode ser usado aumentar a largura de imagem estéreo percebida.
+Isto é controlado pelo controle “Simulação de Ambiente”.
+ </string>
+ <string name="usb_title">USB/Dock</string>
+ <string name="dsp_settings_usb">Configurações Equalizador - Dispositivo USB</string>
+</resources>
\ No newline at end of file
diff --git a/res/values-ro/arrays.xml b/res/values-ro/arrays.xml
new file mode 100644
index 0000000..9b7373a
--- /dev/null
+++ b/res/values-ro/arrays.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string-array name="microphone_recording_presets">
+ <item>Original</item>
+ <item>Echilibrat</item>
+ <item>Sensibilitate Înaltă</item>
+ <item>Mediu Zgomotos</item>
+ </string-array>
+ <string-array name="headphone_modes">
+ <item>Studiou</item>
+ <item>Cameră</item>
+ <item>Cameră mare</item>
+ <item>Stadion</item>
+ </string-array>
+ <string-array name="equalizer_loudness_modes">
+ <item>Dezactivat</item>
+ <item>Cel mai slab</item>
+ <item>Mai slab</item>
+ <item>Slab</item>
+ <item>Puternic</item>
+ <item>Mai puternic</item>
+ <item>Cel mai puternic</item>
+ </string-array>
+ <string-array name="compression_modes">
+ <item>Slab</item>
+ <item>Moderat</item>
+ <item>Extrem</item>
+ </string-array>
+ <string-array name="bassboost_modes">
+ <item>Slab</item>
+ <item>Moderat</item>
+ <item>Extrem</item>
+ </string-array>
+ <string-array name="wm8994_bassboost_modes">
+ <item>Standard</item>
+ <item>Boxe Mici</item>
+ </string-array>
+</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
new file mode 100644
index 0000000..b609eec
--- /dev/null
+++ b/res/values-ro/strings.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="select_configuration_title">Selectaţi Configurarea pentru Editare</string>
+ <string name="headset_title">Set cu cască</string>
+ <string name="speaker_title">Difuzor</string>
+ <string name="bluetooth_title">Bluetooth</string>
+ <string name="audio_effects">Efecte Audio</string>
+ <string name="pref_unavailable">Funcţionalitate indisponibilă pentru dispozitivul dvs.</string>
+ <string name="dsp_settings_headset">Setări DSP - Setul cu cască</string>
+ <string name="dsp_settings_speaker">Setări DSP - Difuzorul Telefonului</string>
+ <string name="dsp_settings_bluetooth">Setări DSP - Dispozitiv Bluetooth</string>
+ <string name="dsp_settings_wm8994">Setări DSP - WM8994</string>
+ <string name="pref_dsp_title">Compresie Diapazon Dinamic</string>
+ <string name="pref_dsp_summary_on">Compresie activată</string>
+ <string name="pref_dsp_summary_off">Compresie dezactivată</string>
+ <string name="pref_dsp_enable">Activare</string>
+ <string name="pref_effect_title">Selectaţi Puterea Efectului</string>
+ <string name="dialog_effect">Putera Efectului</string>
+ <string name="pref_equalizer_title">Egalizator</string>
+ <string name="pref_equalizer_summary_on">Egalizator activat</string>
+ <string name="pref_equalizer_summary_off">Egalizator dezactivat</string>
+ <string name="pref_equalizer_enable">Activare</string>
+ <string name="pref_equalizer_preset_title">Selectaţi Presetarea</string>
+ <string name="pref_equalizer_loudness_title">Compensare intensitate</string>
+ <string name="pref_bassboost_title">Amplificare Bas</string>
+ <string name="pref_bassboost_summary_on">Amplificare Bas activată</string>
+ <string name="pref_bassboost_summary_off">Amplificare Bas dezactivată</string>
+ <string name="pref_bassboost_enable">Activare</string>
+ <string name="pref_headset_virtual_title">Efectul Cameră Virtuală pentru Setul cu cască</string>
+ <string name="pref_headset_virtual_summary_on">Cameră Virtuală activată</string>
+ <string name="pref_headset_virtual_summary_off">Cameră Virtuală dezactivată</string>
+ <string name="pref_headset_virtual_enable">Activare</string>
+ <string name="pref_room_title">Selectaţi Tipul Camerei</string>
+ <string name="dialog_room">Tip Cameră</string>
+ <string name="menu_reset">Resetaţi</string>
+ <string name="eq_preset_acoustic">Acustic</string>
+ <string name="eq_preset_bass_booster">Amplificare Bas</string>
+ <string name="eq_preset_bass_reducer">Reducere Bas</string>
+ <string name="eq_preset_classical">Clasic</string>
+ <string name="eq_preset_deep">Adânc</string>
+ <string name="eq_preset_flat">Plat</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">Rock</string>
+ <string name="eq_preset_small_speakers">Boxe Mici</string>
+ <string name="eq_preset_treble_booster">Amplificare Frecv. Înalte</string>
+ <string name="eq_preset_treble_reducer">Reducere Frecv. Înalte</string>
+ <string name="eq_preset_vocal_booster">Amplificare Voce</string>
+ <string name="eq_preset_custom">Particularizat</string>
+ <string name="category_wm8994_internal_speaker">Difuzor</string>
+ <string name="category_wm8994_signal_processing">Procesare Semnal</string>
+ <string name="category_wm8994_headphone_amp">Setul cu cască</string>
+ <string name="category_wm8994_codec_optimization">Optimizare Codec</string>
+ <string name="category_wm8994_dac_config">Setări Convertor Digital/Analogic</string>
+ <string name="category_wm8994_analog_path">Configurare Cale Analogică</string>
+ <string name="category_wm8994_mic_settings">Setări Microfon</string>
+ <string name="category_wm8994_microphone_recording">Microfon</string>
+ <string name="wm8994_settings_title_head">Setări Sunet</string>
+ <string name="wm8994_settings_title_subhead">Setări Sunet</string>
+ <string name="wm8994_settings_summary_head">Controlul avansat al procesorul de sunet WM8994</string>
+ <string name="pref_wm8994_microphone_recording_title">Presetare Înregistrare</string>
+ <string name="pref_wm8994_headphone_amp_title">Nivel amplificator</string>
+ <string name="pref_wm8994_headphone_amp_summary">Particularizare amplificare analogică</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Nivel amplificator pentru setul cu cască</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Amplificare analogică</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Amplificare bas</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Controalele avansate pentru amplificare bas</string>
+ <string name="pref_wm8994_bass_boost_title">Diapazon amplificare bas</string>
+ <string name="pref_wm8994_bass_boost_summary">Management avansat al diapazonului dinamic</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Presetare amplificare bas</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Amplificare bas</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Amplificare</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Diapazon amplificare bas</string>
+ <string name="pref_wm8994_control_enable_title">Activaţi Controlul WM8994</string>
+ <string name="pref_wm8994_control_enable_summary">Controale avansate pentru procesorul de sunet WM8994</string>
+ <string name="pref_wm8994_speaker_tuning_title">Acordat pentru muzică</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Reconfiguraţi egalizatorul pentru mai mult bas şi sunet echilibrat</string>
+ <string name="pref_wm8994_mono_downmix_title">Mono downmix</string>
+ <string name="pref_wm8994_mono_downmix_summary">Downmix sunet stereo la mono (pentru iesiri stereo, cum ar fi căşti)</string>
+ <string name="pref_wm8994_stereo_expansion_title">Expansiune stereo</string>
+ <string name="pref_wm8994_stereo_expansion_summary">Expansiune sunet stereo prin intermediul procesării semnalului digital</string>
+ <string name="pref_wm8994_dac_direct_title">D/AC directă</string>
+ <string name="pref_wm8994_dac_direct_summary">Accesare directă a convertorului digital/analogic, ocolind mixer-ul canalului. Produce sunet mai clar (raport semnal-zgomot mai mare)</string>
+ <string name="pref_wm8994_dac_osr128_title">Redare Hi-Fi</string>
+ <string name="pref_wm8994_dac_osr128_summary">Convertor digital-analogic 128x supraeşantionare - sunet mai clar în timpul redării muzicii</string>
+ <string name="pref_wm8994_adc_osr128_title">Înregistrare Hi-Fi</string>
+ <string name="pref_wm8994_adc_osr128_summary">Convertor analogic-digital 128x supraeşantionare - creşte calitatea înregistrării</string>
+ <string name="pref_wm8994_fll_tuning_title">Ceas audio ajustat</string>
+ <string name="pref_wm8994_fll_tuning_summary">Utilizaţi sursa de ceas audio WM8994 ajustat - îmbunătăţeşte calitatea sunetului</string>
+ <string name="help_title">Ghid Utilizator</string>
+</resources>
diff --git a/res/values-ru/arrays.xml b/res/values-ru/arrays.xml
new file mode 100644
index 0000000..7de0b77
--- /dev/null
+++ b/res/values-ru/arrays.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>Оригинальный</item>
+ <item>Сбалансированный</item>
+ <item>Выс. чувствительность</item>
+ <item>Шумная обстановка</item>
+ </string-array>
+ <string-array name="headphone_modes">
+ <item>Студия</item>
+ <item>Комната</item>
+ <item>Большая комната</item>
+ <item>Арена</item>
+ </string-array>
+ <string-array name="compression_modes">
+ <item>Слабый</item>
+ <item>Умеренный</item>
+ <item>Экстремальный</item>
+ </string-array>
+ <string-array name="bassboost_modes">
+ <item>Слабый</item>
+ <item>Умеренный</item>
+ <item>Экстремальный</item>
+ </string-array>
+ <string-array name="equalizer_loudness_modes">
+ <item>Откл.</item>
+ <item>Слабейшая</item>
+ <item>Слабее</item>
+ <item>Слабая</item>
+ <item>Сильная</item>
+ <item>Сильнее</item>
+ <item>Сильнейшая</item>
+ </string-array>
+ <string-array name="wm8994_bassboost_modes">
+ <item>Стандартный</item>
+ <item>Маленькие динамики</item>
+ </string-array>
+</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
new file mode 100644
index 0000000..920cc10
--- /dev/null
+++ b/res/values-ru/strings.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="app_name">Эквалайзер</string>
+ <string name="select_configuration_title">Выберите конфигурацию для редактирования</string>
+ <string name="headset_title">Наушники</string>
+ <string name="speaker_title">Динамик</string>
+ <string name="bluetooth_title">Устройства Bluetooth</string>
+ <string name="usb_title">USB/Док-станция</string>
+ <string name="audio_effects">Аудио эффекты</string>
+ <string name="pref_unavailable">Данная функция не поддерживается на вашем устройстве</string>
+ <string name="dsp_settings_headset">Настройки DSP — Наушники</string>
+ <string name="dsp_settings_speaker">Настройки DSP — Динамик</string>
+ <string name="dsp_settings_bluetooth">Настройки DSP — Устройства Bluetooth</string>
+ <string name="dsp_settings_usb">Настройки DSP — USB-устройства</string>
+ <string name="dsp_settings_wm8994">Настройки DSP — WM8994</string>
+ <string name="pref_dsp_title">Сжатие динамического диапазона</string>
+ <string name="pref_dsp_summary_on">Сжатие включено</string>
+ <string name="pref_dsp_summary_off">Сжатие выключено</string>
+ <string name="pref_dsp_enable">Включить</string>
+ <string name="pref_effect_title">Сила эффекта</string>
+ <string name="dialog_effect">Сила эффекта</string>
+ <string name="pref_equalizer_title">Эквалайзер</string>
+ <string name="pref_equalizer_summary_on">Эквалайзер включен</string>
+ <string name="pref_equalizer_summary_off">Эквалайзер выключен</string>
+ <string name="pref_equalizer_enable">Включить</string>
+ <string name="pref_equalizer_preset_title">Выбор предустановок</string>
+ <string name="pref_equalizer_loudness_title">Тонкомпенсация</string>
+ <string name="pref_bassboost_title">Низкие частоты</string>
+ <string name="pref_bassboost_summary_on">Низкие частоты включены</string>
+ <string name="pref_bassboost_summary_off">Низкие частоты выключены</string>
+ <string name="pref_bassboost_enable">Включить</string>
+ <string name="pref_headset_virtual_title">Эффект виртуальной комнаты</string>
+ <string name="pref_headset_virtual_summary_on">Эффект включен</string>
+ <string name="pref_headset_virtual_summary_off">Эффект выключен</string>
+ <string name="pref_headset_virtual_enable">Включить</string>
+ <string name="pref_room_title">Тип эффекта</string>
+ <string name="dialog_room">Тип эффекта</string>
+ <string name="menu_reset">Сброс</string>
+
+ <string name="eq_preset_acoustic">Акустика</string>
+ <string name="eq_preset_bass_booster">Усиленные НЧ</string>
+ <string name="eq_preset_bass_reducer">Пониженные НЧ</string>
+ <string name="eq_preset_classical">Классика</string>
+ <string name="eq_preset_deep">Глубина</string>
+ <string name="eq_preset_flat">Плоско</string>
+ <string name="eq_preset_r_and_b">Ритм-н-блюз</string>
+ <string name="eq_preset_rock">Рок</string>
+ <string name="eq_preset_small_speakers">Маленькие динамики</string>
+ <string name="eq_preset_treble_booster">Усиленные ВЧ</string>
+ <string name="eq_preset_treble_reducer">Пониженные ВЧ</string>
+ <string name="eq_preset_vocal_booster">Усиленный вокал</string>
+ <string name="eq_preset_custom">Пользовательские настройки</string>
+
+ <!-- WM8994 -->
+ <!-- Categories -->
+ <string name="category_wm8994_internal_speaker">Динамик</string>
+ <string name="category_wm8994_signal_processing">Обработка сигнала</string>
+ <string name="category_wm8994_headphone_amp">Наушники</string>
+ <string name="category_wm8994_codec_optimization">Оптимизация кодека</string>
+ <string name="category_wm8994_dac_config">Настройки ЦАП</string>
+ <string name="category_wm8994_analog_path">Настройки аналогового пути</string>
+ <string name="category_wm8994_mic_settings">Настройки микрофона</string>
+ <string name="category_wm8994_microphone_recording">Микрофон</string>
+ <!-- Titles/Summaries -->
+ <string name="wm8994_settings_title_head">Настройки звука</string>
+ <string name="wm8994_settings_title_subhead">Настройки звука</string>
+ <string name="wm8994_settings_summary_head">Расширенные настройки звукового процессора WM8994</string>
+ <string name="pref_wm8994_microphone_recording_title">Предустановки записи</string>
+ <string name="pref_wm8994_headphone_amp_title">Уровень усилителя</string>
+ <string name="pref_wm8994_headphone_amp_summary">Настройка аналогового усиления</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Уровень усилителя наушников</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Аналоговое усиление</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Усиление НЧ</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Расширенные настройки усиления НЧ</string>
+ <string name="pref_wm8994_bass_boost_title">Диапазон усиления НЧ</string>
+ <string name="pref_wm8994_bass_boost_summary">Расширенные настройки динамического диапазона</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Предустановки усиления НЧ</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Усиление НЧ</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Усиление</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Диапазон усиления НЧ</string>
+ <string name="pref_wm8994_control_enable_title">Включить управление WM8994</string>
+ <string name="pref_wm8994_control_enable_summary">Расширенные настройки звукового процессора WM8994</string>
+ <string name="pref_wm8994_speaker_tuning_title">Настройки для музыки</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Перенастраивает аппаратный эквалайзер для больших НЧ и сбалансированного звука</string>
+ <string name="pref_wm8994_mono_downmix_title">Перевод в моно</string>
+ <string name="pref_wm8994_mono_downmix_summary">Переводит стерео в моно (для стерео вывода, напр. наушников)</string>
+ <string name="pref_wm8994_stereo_expansion_title">Расширение стерео</string>
+ <string name="pref_wm8994_stereo_expansion_summary">«Расширение» стерео благодаря цифровой обработке сигнала</string>
+ <string name="pref_wm8994_dac_direct_title">Прямой доступ к ЦАП</string>
+ <string name="pref_wm8994_dac_direct_summary">Прямой доступ к цифро-аналоговому преобразователю, минуя канальный микшер. Достигается чистый звук (более низкое соотношение сигнал-шум)</string>
+ <string name="pref_wm8994_dac_osr128_title">Hi-fi воспроизведение</string>
+ <string name="pref_wm8994_dac_osr128_summary">128-передискретизация цифрово-аналогового преобразователя - чистый звук при воспроизведении музыки</string>
+ <string name="pref_wm8994_adc_osr128_title">Hi-fi запись</string>
+ <string name="pref_wm8994_adc_osr128_summary">128-передискретизация аналого-цифрового преобразователя - повышает качество записи</string>
+ <string name="pref_wm8994_fll_tuning_title">Настройка аудио-частот</string>
+ <string name="pref_wm8994_fll_tuning_summary">Использовать настроенные аудио-частоты WM8994 - улучшает качество звука</string>
+
+ <string name="help_title">Руководство пользователя</string>
+ <string name="help_text"><b>Что такое DSP Manager?</b>
+\n
+\nDSP Manager — это приложение, предназначенное для настройки каждого из звуковых выводов. Название приложения состоит из двух частей: «DSP» и «Manager». <i>DSP</i> является аббревиатурой Digital Signal Processing, что в переводе означает «Цифровая обработка сигнала». <i>Manager</i> означает, что обработка производится не внутри данного приложения, оно лишь является интерфейсом для настройки. DSP Manager позволяет настроить и включить обработку звука для приложений, совместимых со спецификациями звуковых эффектов в системе Android, то есть для большинства музыкальных проигрывателей.
+\n
+\n<b>Философия</b>
+\n
+\nЗвуковая обработка в CyanogenMod поддерживается для четырёх звуковых выводов: проводных наушников (разъёма mini-jack), USB-устройств, динамика и беспроводной гарнитуры bluetooth. Для каждого из них предусмотрена своя панель настроек. Философия DSP Manager заключается в том, чтобы корректировать недостатки, присущие конкретным выводам, для достижения максимального качества звучания на каждом из них.
+\n
+\nВ отличие от «звуковых эффектов» в оригинальных исходных кодах Android (AOSP), в DSP Manager нет настроек для конкретных приложений, установленных в системе. Это принципиальный выбор: нам важны конкретные звуковые выводы, а не создающие звуковой поток приложения.
+\n
+\n<b>Возможности</b>
+\n
+\nДалее приводится описание каждого из звуковых эффектов и предполагаемый сценарий их использования.
+\n
+\n1. <b>Сжатие динамического диапазона (DRC)</b>
+\n
+\nДанный эффект оценивает громкость звука как среднестатистический слушатель и управляет усилением на основе данной оценки. Основной сценарий использования данного эффекта — шумные места, где тихие звуки могут заглушаться окружающим шумом.
+\n
+\nСила эффекта определяет, насколько упорно DSP Manager будет стараться поддерживать громкость на заданном уровне. В AOSP нет подобного звукового эффекта.
+\n
+\n2. <b>Усиление баса</b>
+\n
+\nУсилитель баса — это простой фильтр низких частот, использующийся для добавления акцента на 55 Гц и более низких частотах. Уровень усиления примерно равен 6 дБ и регулируется параметом «Сила эффекта», который добавляет резонанс в полосе 55 Гц, что дополнительно акцентирует данную частоту. Эффект «Усиление баса» призван бороться с потерей басов в следствие использования динамиков малых размеров или неплотно прилегающих наушников.
+\n
+\n3. <b>Эквалайзер</b>
+\n
+\nЭто 6-полосной эквалайзер с полосами на 16, 64, 250, 1000, 4000 и 16000 Гц и несколькими наиболее популярными предустановками. Частотная характеристика может быть изменена с помощью нажатия на график эквалайзера. Эквалайзер предназначен для настройки звучания в соответствии с предпочтениями конкретного слушателя или возможностями используемых наушников (динамиков).
+\n
+\nЭквалайзер также содержит фильтр тонкомпенсации, который компенсирует кажущийся недостаток низких и высоких частот, изменяя частотную характеристику звука на основывании уровня звукового давления на ухо слушателя.
+\n
+\nДля правильной настройки силы эффекта тонкомпенсации, необходимо включить шумную музыку с широким спектром частот (например, рок или металл) на минимальной громкости. Далее необходимо найти такое значение силы эффекта фильтра, при котором басы будут отчетливо слышны и сбалансированы с остальными частотами музыкальной композиции. Если фильтр настроен правильно, басы будут оставаться на неизменной громкости по отношению к остальным инструментам в независимости от уровня громкости прослушивания. Если же при росте громкости прослушивания басы перекрывают остальные частоты композиции, фильтр настроен неправильно, сила его эффекта должна быть уменьшена.
+\n
+\nСила эффекта тонкомпенсации сохраняется вместе с пользовательской предустановкой эквалайзера. Если необходимо использовать только фильтр тонкомпенсации, выберите предустановку эквалайзера «Плоско».
+\n
+\n4. <b>Фильтр для наушников</b>
+\n
+\nЭффект «Фильтр для наушников» использует алгоритмы знаменитой аналоговой микросхемы bs2b (Bauer stereophonic-to-binaural DSP). Изначально музыкальные композиции предназначаются для прослушивания на стереосистемах, при использовании которых звуки каждого из каналов звучания слышны каждому из ушей, однако с разной силой и задержкой. При прослушивании композиций с использованием наушников данное явление отсутствует («суперстерео-эффект»), что приводит к усталости слушателя. Принцип работы эффекта такой: моно-составляющая музыкальной композиции, одинаковая для обоих каналов звучания, не затрагивается фильтром, а различия в левом и правом каналах звучания изменяются посредством частотного фильтра, одновременно рассчитывающего акустическую тень головы и внутриушную задержку прохождения сигнала. Результатом работы фильтра является создание правильной психоакустической модели для слушателя. Данный эффект должен быть включен каждый раз при использовании стереонаушников для прослушивания музыки.
+\n
+\nОперация микширования уменьшает степень разделения левого и правого каналов. Для расширения воспринимаемой стерео картины добавлен эффект ревербации Хааса. Работа эффекта настраивается опцией «Тип комнаты».
+ </string>
+</resources>
\ No newline at end of file
diff --git a/res/values-sk/arrays.xml b/res/values-sk/arrays.xml
new file mode 100644
index 0000000..0a0bbd1
--- /dev/null
+++ b/res/values-sk/arrays.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>Originál</item>
+ <item>Vyvážené</item>
+ <item>Vysoká citlivosť</item>
+ <item>Hlučné prostredie</item>
+ </string-array>
+ <string-array name="headphone_modes">
+ <item>Štúdio</item>
+ <item>Miestnosť</item>
+ <item>Veľká miestnosť</item>
+ <item>Javisko</item>
+ </string-array>
+ <string-array name="equalizer_loudness_modes">
+ <item>Zakázané</item>
+ <item>Najslabšia</item>
+ <item>Slabšia</item>
+ <item>Slabá</item>
+ <item>Silná</item>
+ <item>Silnejšia</item>
+ <item>Najsilnejšia</item>
+ </string-array>
+ <string-array name="compression_modes">
+ <item>Nepatrná</item>
+ <item>Stredná</item>
+ <item>Extrémna</item>
+ </string-array>
+ <string-array name="bassboost_modes">
+ <item>Nepatrná</item>
+ <item>Stredná</item>
+ <item>Extrémna</item>
+ </string-array>
+ <string-array name="wm8994_bassboost_modes">
+ <item>Štandardné</item>
+ <item>Malé reproduktory</item>
+ </string-array>
+</resources>
\ No newline at end of file
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
new file mode 100644
index 0000000..f341ec8
--- /dev/null
+++ b/res/values-sk/strings.xml
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="app_name">DSP Správca</string>
+ <string name="select_configuration_title">Vyberte konfiguráciu pre upravenie</string>
+ <string name="headset_title">Slúchadlá</string>
+ <string name="speaker_title">Reproduktor</string>
+ <string name="bluetooth_title">Bluetooth</string>
+ <string name="usb_title">USB/Dok</string>
+ <string name="audio_effects">Zvukové efekty</string>
+ <string name="pref_unavailable">Funkcia nie je k dispozícii na Vašom zariadení</string>
+ <string name="dsp_settings_headset">Nastavenia DSP - Slúchadlá</string>
+ <string name="dsp_settings_speaker">Nastavenia DSP - Reproduktor zariadenia</string>
+ <string name="dsp_settings_bluetooth">Nastavenia DSP - Bluetooth zariadenie</string>
+ <string name="dsp_settings_usb">Nastavenia DSP - USB zariadenie</string>
+ <string name="dsp_settings_wm8994">Nastavenia DSP - WM8994</string>
+ <string name="pref_dsp_title">Dynamická kompresia rozsahu</string>
+ <string name="pref_dsp_summary_on">Kompresia je povolená</string>
+ <string name="pref_dsp_summary_off">Kompresia je zakázaná</string>
+ <string name="pref_dsp_enable">Povoliť</string>
+ <string name="pref_effect_title">Vyberte silu efektu</string>
+ <string name="dialog_effect">Sila efektu</string>
+ <string name="pref_equalizer_title">Ekvalizér</string>
+ <string name="pref_equalizer_summary_on">Ekvalizér je povolený</string>
+ <string name="pref_equalizer_summary_off">Ekvalizér je zakázaný</string>
+ <string name="pref_equalizer_enable">Povoliť</string>
+ <string name="pref_equalizer_preset_title">Vyberte predvoľbu</string>
+ <string name="pref_equalizer_loudness_title">Kompenzácia hlasitosti</string>
+ <string name="pref_bassboost_title">Zosilnenie basov</string>
+ <string name="pref_bassboost_summary_on">Zosilnenie basov je povolené</string>
+ <string name="pref_bassboost_summary_off">Zosilnenie basov je zakázané</string>
+ <string name="pref_bassboost_enable">Povoliť</string>
+ <string name="pref_headset_virtual_title">Efekt virtuálnej miestnosti pre slúchadlá</string>
+ <string name="pref_headset_virtual_summary_on">Efekt virtuálnej miestnosti je povolený</string>
+ <string name="pref_headset_virtual_summary_off">Efekt virtuálnej miestnosti je zakázaný</string>
+ <string name="pref_headset_virtual_enable">Povoliť</string>
+ <string name="pref_room_title">Vyberte typ miestnosti</string>
+ <string name="dialog_room">Typ miestnosti</string>
+ <string name="menu_reset">Obnoviť</string>
+
+ <string name="eq_preset_acoustic">Akustika</string>
+ <string name="eq_preset_bass_booster">Zosilnenie basov</string>
+ <string name="eq_preset_bass_reducer">Zoslabenie basov</string>
+ <string name="eq_preset_classical">Klasika</string>
+ <string name="eq_preset_deep">Hĺbka</string>
+ <string name="eq_preset_flat">Plocha</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">Rock</string>
+ <string name="eq_preset_small_speakers">Malé reproduktory</string>
+ <string name="eq_preset_treble_booster">Zosilnenie výšok</string>
+ <string name="eq_preset_treble_reducer">Zoslabenie výšok</string>
+ <string name="eq_preset_vocal_booster">Zosilnenie hlasu</string>
+ <string name="eq_preset_custom">Vlastný</string>
+
+ <string name="category_wm8994_internal_speaker">Reproduktor</string>
+ <string name="category_wm8994_signal_processing">Spracovávanie signálu</string>
+ <string name="category_wm8994_headphone_amp">Slúchadlá</string>
+ <string name="category_wm8994_codec_optimization">Optimalizácia kodeku</string>
+ <string name="category_wm8994_dac_config">Nastavenia digitálne/analógového prevodníku</string>
+ <string name="category_wm8994_analog_path">Konfigurácia analógovej cesty</string>
+ <string name="category_wm8994_mic_settings">Nastavenia mikrofónu</string>
+ <string name="category_wm8994_microphone_recording">Mikrofón</string>
+
+ <string name="wm8994_settings_title_head">Nastavenia zvuku</string>
+ <string name="wm8994_settings_title_subhead">Nastavenia zvuku</string>
+ <string name="wm8994_settings_summary_head">Pokročilé ovládanie zvukového procesora WM8994</string>
+ <string name="pref_wm8994_microphone_recording_title">Predvoľba nahrávania</string>
+ <string name="pref_wm8994_headphone_amp_title">Úroveň zosilňovača</string>
+ <string name="pref_wm8994_headphone_amp_summary">Upraviť analógové zvyšovanie</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Úroveň zosilňovača pre slúchadlá</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Analógové zvyšovanie</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Zosilnenie basov</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Pokročilé ovládanie pre zosilnenie basov</string>
+ <string name="pref_wm8994_bass_boost_title">Rozsah zosilnenia basov</string>
+ <string name="pref_wm8994_bass_boost_summary">Pokročilá správa dynamického rozsahu</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Predvoľba zosilnenia basov</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Zosilnenie basov</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Zvyšovanie</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Rozsah zosilnenia basov</string>
+ <string name="pref_wm8994_control_enable_title">Povoliť ovládanie WM8994</string>
+ <string name="pref_wm8994_control_enable_summary">Pokročilé ovládanie zvukového procesora WM8994</string>
+ <string name="pref_wm8994_speaker_tuning_title">Ladenie pre hudbu</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Prenastaví hardvérový ekvalizér pre viac basov a vyváženie zvuku</string>
+ <string name="pref_wm8994_mono_downmix_title">Prevod na mono</string>
+ <string name="pref_wm8994_mono_downmix_summary">Prevedie stereo zvuk na mono (pre stereo výstupy, ako napríklad slúchatká)</string>
+ <string name="pref_wm8994_stereo_expansion_title">Rozšírenie sterea</string>
+ <string name="pref_wm8994_stereo_expansion_summary">\'Rozšíriť\' stereo zvuk cez digitálne spracovanie signálu</string>
+ <string name="pref_wm8994_dac_direct_title">Priamy prístup k D/AC</string>
+ <string name="pref_wm8994_dac_direct_summary">Pristupovať k digitálne/analógovému prevodníku priamo, obchádzať mixér kanálov. Produkuje čistejší zvuk (vyšší pomer signál/šum)</string>
+ <string name="pref_wm8994_dac_osr128_title">Hi-fi prehrávanie</string>
+ <string name="pref_wm8994_dac_osr128_summary">128x prevzorkovanie prevodníku digitálu na analóg — čistejší zvuk pri prehrávaní hudby</string>
+ <string name="pref_wm8994_adc_osr128_title">Hi-fi nahrávanie</string>
+ <string name="pref_wm8994_adc_osr128_summary">128x prevzorkovanie prevodníku analógu na digitál — zvýši kvalitu nahrávania</string>
+ <string name="pref_wm8994_fll_tuning_title">Vylepšené zvukové hodiny</string>
+ <string name="pref_wm8994_fll_tuning_summary">Použiť vyladený zdroj zvukových hodín WM8994 — a zlepšiť kvalitu zvuku</string>
+
+ <string name="help_title">Pomocník</string>
+ <string name="help_text"><b>Čo je DSP Správca?</b>
+\n\n
+DSP Manager je aplikácia na úpravu zvuku pre každý zvukový výstup. <i>DSP</i> znamená
+Digital signal processing (spracovávanie digitálneho signálu), a časť <i>Správca</i>
+odkazuje na skutočnosť, že DSP vlastne nebeží v aplikácii samotnej; Správca môže DSP
+povoliť pre aplikácie, ktoré sú v súlade s Android špecifikáciou zvukových efektov,
+t.j. väčšina hudobných prehrávačov.
+\n\n\n
+<b>Filozofia</b>
+\n\n
+CyanogenMod spracovávanie zvuku podporuje štyri odlišné kategórie výstupu:
+slúchadlá, USB zvuk, reproduktor zariadenia a bluetooth slúchadlá. Pre každú kategóriu
+výstupu je dostupný vlastný konfiguračný panel. Filozofia DSP Správcu je napraviť
+nedostatky daného zvukového výstupu s cieľom dosiahnuť optimálny zážitok z počúvania
+s každým zvukovým výstupom.
+\n\n
+Narozdiel od AOSP zvukových efektov, tu nie sú nastavenia pre každú aplikáciu zvlášť.
+Jedná sa o úmyselný dizajnový výber: je to práve výstup, na čom nám záleží,
+nie aplikácie, ktoré vytvárajú zvuk.
+\n\n\n
+<b>Funkcie</b>
+\n\n
+1. <b>Kompresia dynamického rozsahu (DRC)</b>
+\n\n
+Tento efekt odhaduje hlasitosť zvuku tak ako je vnímaná priemerným poslucháčom a
+vykonáva ovládanie zvýšenia zvuku na základe tohto odhadu. Primárny prípad použitia
+je v hlučnom prostredí, ako sú oblasti s automobilmi, alebo na ulici, kde je Vaša hudba
+v ohrození, že ju prehluší hluk v pozadí.
+\n\n
+DSP Správca sa bude vždy snažiť udržiavať hlasitosť zvuku na čo najlepšej úrovni. Neexistuje AOSP
+ekvivalent pre tento DSP efekt.
+\n\n\n
+2. <b>Zosilnenie basov</b>
+\n\n
+Zosilnenie basov (Bass Boost) je jednoduchý filter, ktoré môže byť použitý k dodaniu dôrazu
+pre frekvencie 55 Hz a nižšie. Zvýšenie je okolo 6 dB a je upravené parametrom \'sila\',
+ktorý pridáva filter rezonancie na pásmo 55 Hz, dajúc tejto frekvencií osobitý dôraz. Efekt
+je navrhnutý tak, aby bojoval proti strate frekvencie basov zapríčinenej malými reproduktormi
+a slúchadlami, ktoré nie sú spojené tesne so zvukovodom užívateľa.
+\n\n\n
+3. <b>Ekvalizér</b>
+\n\n
+Toto je 6-pásmový ekvalizér s pásmami na 16, 64, 250, 1000, 4000 a 16000 Hz.
+Niektoré bežné predvoľby sú poskytované a frekvenčná odozva môže byť tiež prispôsobená,
+a to kliknutím na graf ekvalizéra. Efekt by mal byť použitý pre vylepšenie frekvenčnej
+odozvy podľa osobnej chuti užívateľa, alebo s ohľadom na konkrétne schopnosti dostupných
+slúchadiel alebo reproduktorov.
+\n\n
+Ekvalizér obsahuje tiež kompenzačný filter hlasitosti, ktorý vyrovnáva zmeny v frekvenčnej
+odozve v uchu na základe hladiny akustického tlaku, ktorá dosahuje ucho užívateľa.
+Je nutné použitie slúchadiel a hodnota parametra pre silu musí byť správne vyladená, aby
+všetko fungovalo správne a presne tak, ako bolo navrhnuté.
+\n\n
+Ak chcete zvoliť správnu hodnotu pre silu kompenzácie, použite najtichšiu úroveň hlasitosti
+hudby a vyberte si nejakú širokospektrálnu hlučnú hudbu ako napríklad rock alebo metal Pokúste
+sa nájsť nastavenie kde sú basy zosilnené späť do počuteľnosti a sú v rovnováhe so zvyškom
+materiálu. Po správnom nastavení kompenzácie, basy by mali zostať na rovnakej úrovni v porovnaní
+s inými nástrojmi, bez ohľadu na úroveň počúvania. Na druhej strane, ak hudba začne znieť
+moc basovo pri vyšších úrovniach hlasitosti, kompenzácia je pravdepodobne príliš silná a mala
+by byť znížená.
+\n\n
+Kompenzácia je pridaná užívateľom vybraných úprav. Ak je žiadaná len kompenzácia,
+ekvalizér by mal byť ponechaný v nastavení \'Plocha\'.
+\n\n\n
+4. <b>Slúchadlový filter</b>
+\n\n
+Slúchadlový filter je priečne dizajnovaný a inšpirovaný slávnym analógovým obvodom bs2b.
+Efekt prechádza mono zvuk bezo zmeny a upraví rozdiel signálu cez filter, ktorý zaokrúhľuje
+tieň hlavy a interauralne meškanie naraz, čím dáva správny druh psychoakustického vodítka
+pre používateľove uši. Zámerom je, aby sa zabránilo únave poslucháča vyplývajúce z
+nepravdepodobnej separácie sterea vo všetkých slúchadlách. Efekt by mal byť povolený,
+ak používate stereo slúchadlá.
+\n\n
+Vzhľadom k tomu, že miešanie znižuje oddelenie sterea, je dostupný
+Haas efekt reverb, ktorý môže byť použitý na zvýšenie vnímanej stereo šírky obrazu.
+Pre ručné ovládanie je dostupné nastavenie \'Typ miestnosti\'.</string>
+</resources>
diff --git a/res/values-sv/arrays.xml b/res/values-sv/arrays.xml
new file mode 100644
index 0000000..6898fc9
--- /dev/null
+++ b/res/values-sv/arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="headphone_modes">
+ <item>Studio</item>
+ <item>Rum</item>
+ <item>Stort rum</item>
+ <item>Scen</item>
+ </string-array>
+ <string-array name="equalizer_loudness_modes">
+ <item>Inaktiverad</item>
+ <item>Svagast</item>
+ <item>Svagare</item>
+ <item>Svag</item>
+ <item>Stark</item>
+ <item>Starkare</item>
+ <item>Starkast</item>
+ </string-array>
+ <string-array name="compression_modes">
+ <item>Lätt</item>
+ <item>Måttlig</item>
+ <item>Extrem</item>
+ </string-array>
+ <string-array name="bassboost_modes">
+ <item>Lätt</item>
+ <item>Måttlig</item>
+ <item>Extrem</item>
+ </string-array>
+</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
new file mode 100644
index 0000000..9b48860
--- /dev/null
+++ b/res/values-sv/strings.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="select_configuration_title">Välj konfiguration att ändra</string>
+ <string name="headset_title">Headset</string>
+ <string name="speaker_title">Telefonhögtalare</string>
+ <string name="bluetooth_title">Bluetooth-enhet</string>
+ <string name="dsp_settings_headset">DSP-Inställningar - Headset</string>
+ <string name="dsp_settings_speaker">DSP-Inställningar - Telefonhögtalare</string>
+ <string name="dsp_settings_bluetooth">DSP-Inställningar - Bluetooth-enhet</string>
+ <string name="pref_dsp_title">Dynamikkompression</string>
+ <string name="pref_dsp_summary_on">Kompression är aktiverat</string>
+ <string name="pref_dsp_summary_off">Kompression är inaktiverat</string>
+ <string name="pref_dsp_enable">Aktivera</string>
+ <string name="pref_effect_title">Välj effektstyrka</string>
+ <string name="dialog_effect">Effektstyrka</string>
+ <string name="pref_equalizer_title">Equalizer</string>
+ <string name="pref_equalizer_summary_on">Equalizern är aktiverad</string>
+ <string name="pref_equalizer_summary_off">Equalizern är inaktiverad</string>
+ <string name="pref_equalizer_enable">Aktivera</string>
+ <string name="pref_equalizer_preset_title">Välj förinställning</string>
+ <string name="pref_equalizer_loudness_title">Kompensering för ljudstyrka</string>
+ <string name="pref_bassboost_title">Basförstärkning</string>
+ <string name="pref_bassboost_summary_on">Basförstärkning är aktiverat</string>
+ <string name="pref_bassboost_summary_off">Basförstärkning är inaktiverat</string>
+ <string name="pref_bassboost_enable">Aktivera</string>
+ <string name="pref_headset_virtual_title">Virtuell rumseffekt för headset</string>
+ <string name="pref_headset_virtual_summary_on">Virtuell rumseffekt är aktiverad</string>
+ <string name="pref_headset_virtual_summary_off">Virtuell rumseffekt är inaktiverad</string>
+ <string name="pref_headset_virtual_enable">Aktivera</string>
+ <string name="pref_room_title">Välj rumstyp</string>
+ <string name="dialog_room">Rumstyp</string>
+ <string name="menu_reset">Återställ</string>
+ <string name="eq_preset_acoustic">Akustisk</string>
+ <string name="eq_preset_bass_booster">Basförstärkare</string>
+ <string name="eq_preset_bass_reducer">Basreducerare</string>
+ <string name="eq_preset_classical">Klassisk</string>
+ <string name="eq_preset_deep">Djup</string>
+ <string name="eq_preset_flat">Platt</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">Rock</string>
+ <string name="eq_preset_small_speakers">Små högtalare</string>
+ <string name="eq_preset_treble_booster">Diskantförstärkare</string>
+ <string name="eq_preset_treble_reducer">Diskantreducerare</string>
+ <string name="eq_preset_vocal_booster">Sångförstärkare</string>
+ <string name="eq_preset_custom">Anpassad</string>
+</resources>
diff --git a/res/values-th/arrays.xml b/res/values-th/arrays.xml
new file mode 100644
index 0000000..fc5232c
--- /dev/null
+++ b/res/values-th/arrays.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>ดั้งเดิม</item>
+ <item>สมดุล</item>
+ <item>อ่อนไหว</item>
+ <item>สภาพแวดล้อมดัง</item>
+ </string-array>
+ <string-array name="headphone_modes">
+ <item>สตูดิโอ</item>
+ <item>ห้อง</item>
+ <item>ห้องใหญ่</item>
+ <item>เวที</item>
+ </string-array>
+ <string-array name="equalizer_loudness_modes">
+ <item>ปิด</item>
+ <item>อ่อนที่สุด</item>
+ <item>อ่อนมาก</item>
+ <item>อ่อน</item>
+ <item>แรง</item>
+ <item>แรงมาก</item>
+ <item>แรงที่สุด</item>
+ </string-array>
+ <string-array name="compression_modes">
+ <item>เงียบ</item>
+ <item>ปานกลาง</item>
+ <item>สุดขีด</item>
+ </string-array>
+ <string-array name="bassboost_modes">
+ <item>เงียบ</item>
+ <item>ปานกลาง</item>
+ <item>สุดขีด</item>
+ </string-array>
+ <string-array name="wm8994_bassboost_modes">
+ <item>มาตราฐาย</item>
+ <item>ลำโพงเล็ก</item>
+ </string-array>
+</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
new file mode 100644
index 0000000..b7acdce
--- /dev/null
+++ b/res/values-th/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <string name="select_configuration_title">เลือกการตั้งค่าเพื่อจะแก้ไข</string>
+ <string name="headset_title">หูฟัง</string>
+ <string name="speaker_title">ลำโพง</string>
+ <string name="bluetooth_title">บลูทูธ</string>
+ <string name="usb_title">USB/แท่น</string>
+ <string name="audio_effects">เอฟเฟคเสียง</string>
+ <string name="pref_unavailable">ฟังก์ชันนี้ไม่สามารถใช้ได้บนอุปกรณ์ของคุณ</string>
+ <string name="dsp_settings_headset">DSP settings - หูฟัง</string>
+ <string name="dsp_settings_speaker">DSP settings - ลำโพง</string>
+ <string name="dsp_settings_bluetooth">DSP settings - อุปกรณ์บลูทูธ</string>
+ <string name="dsp_settings_usb">DSP settings - อุปกรณ์ USB</string>
+ <string name="pref_dsp_title">การบีบอัดแบบ Dynamic range</string>
+ <string name="pref_dsp_summary_on">เปิดการบีบอัด</string>
+ <string name="pref_dsp_summary_off">ปิดการบีบอัด</string>
+ <string name="pref_dsp_enable">เปิด</string>
+ <string name="pref_effect_title">เลือกความแรงของเอฟเฟค</string>
+ <string name="dialog_effect">ความแรงเอฟเฟค</string>
+ <string name="pref_equalizer_summary_on">เปิด Equalizer แล้ว</string>
+ <string name="pref_equalizer_summary_off">Equalizer ปิดอยู่</string>
+ <string name="pref_equalizer_enable">เปิด</string>
+ <string name="pref_equalizer_preset_title">เลือก preset</string>
+ <string name="pref_equalizer_loudness_title">ชดเชยเสียงดัง</string>
+ <string name="pref_bassboost_title">เพิ่มเสียงเบส</string>
+ <string name="pref_bassboost_summary_on">เปิดเพิ่มเสียงเบสแล้ว</string>
+ <string name="pref_bassboost_summary_off">เพิ่มเสียงเบสปิดอยู่</string>
+ <string name="pref_bassboost_enable">เปิด</string>
+ <string name="pref_headset_virtual_title">ใช้หูฟังจำลองห้องเสมือนจริง</string>
+ <string name="pref_headset_virtual_summary_on">เปิดใช้หูฟังจำลองห้องเสมือนจริงแล้ว</string>
+ <string name="pref_headset_virtual_summary_off">ใช้หูฟังจำลองห้องเสมือนจริงปิดอยู่</string>
+ <string name="pref_headset_virtual_enable">เปิด</string>
+ <string name="pref_room_title">เลือกประเภทห้อง</string>
+ <string name="dialog_room">ประเภทห้อง</string>
+ <string name="menu_reset">รีเซ็ต</string>
+ <string name="eq_preset_acoustic">อะคูสติก</string>
+ <string name="eq_preset_bass_booster">เพิ่มเสียงเบส</string>
+ <string name="eq_preset_bass_reducer">ลดเสียงเบส</string>
+ <string name="eq_preset_classical">คลาสสิก</string>
+ <string name="eq_preset_deep">นุ่มลึก</string>
+ <string name="eq_preset_flat">ราบเรียบ</string>
+ <string name="eq_preset_rock">ร็อค</string>
+ <string name="eq_preset_small_speakers">ลำโพงเล็ก</string>
+ <string name="eq_preset_vocal_booster">เพิ่มเสียงร้อง</string>
+ <string name="eq_preset_custom">ตั้งค่าเอง</string>
+ <string name="category_wm8994_internal_speaker">ลำโพง</string>
+ <string name="category_wm8994_signal_processing">ประมวลผลสัญญาณ</string>
+ <string name="category_wm8994_headphone_amp">หูฟัง</string>
+ <string name="category_wm8994_codec_optimization">ปรับแต่งการเข้ารหัส</string>
+ <string name="category_wm8994_dac_config">ตั้งค่าการแปลงสัญญาณ ดิจิตอล/อนาล็อก</string>
+ <string name="category_wm8994_analog_path">ตั้งค่าส่วนอนาล็อก</string>
+ <string name="category_wm8994_mic_settings">ตั้งค่าไมโครโฟน</string>
+ <string name="category_wm8994_microphone_recording">ไมโครโฟน</string>
+ <string name="wm8994_settings_title_head">ตั้งค่าเสียง</string>
+ <string name="wm8994_settings_title_subhead">ตั้งค่าเสียง</string>
+ <string name="wm8994_settings_summary_head">ตั้งค่าหน่วนประมวลผลเสียง WM8994 ขั้นสูง</string>
+ <string name="pref_wm8994_microphone_recording_title">กำลังบันทึก preset</string>
+ <string name="pref_wm8994_headphone_amp_title">ระดับขยายเสียง</string>
+ <string name="pref_wm8994_headphone_amp_summary">ปรับแต่ง analog gain</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">ระดับขยายเสียงหูฟัง</string>
+ <string name="pref_wm8994_bass_boost_enable_title">เพิ่มเสียงเบส</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">ตั้งค่าเพิ่มเสียงเบสขั้นสูง</string>
+ <string name="pref_wm8994_bass_boost_title">ขอบเขตการเพิ่มเสียงเบส</string>
+ <string name="pref_wm8994_bass_boost_summary">จัดการ dynamic range ขั้นสูง</string>
+ <string name="pref_wm8994_bass_boost_preset_title">เพิ่มเสียงเบส preset</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">เพิ่มเสียงเบส</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Gain</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">ขอบเขตเพิ่มเสียงเบส</string>
+ <string name="pref_wm8994_control_enable_title">เปิดควบคุม WM8994</string>
+ <string name="pref_wm8994_control_enable_summary">ตั้งค่าขั้นสูงสำหรับตัวประมวลผลเสียง WM8994</string>
+ <string name="pref_wm8994_speaker_tuning_title">ปรับสำหรับเพลง</string>
+ <string name="pref_wm8994_speaker_tuning_summary">ตั้งค่าการใช้ฮาร์ดแวร์เข้ารหัสอีกครั้งสำหรับเบสที่มากกว่าและเสียงที่สมดุล</string>
+ <string name="pref_wm8994_mono_downmix_title">โมโนดาวน์มิกซ์</string>
+ <string name="pref_wm8994_mono_downmix_summary">ดาวน์มิกซ์ เสียงสเตอริโอเป็นโมโน (สำหรับออกเป็นสเตอริโอ เช่น หูฟัง)</string>
+ <string name="pref_wm8994_stereo_expansion_title">การขยายตัวสเตอริโอ</string>
+ <string name="pref_wm8994_stereo_expansion_summary">\'ขยาย\' เสียงสเตอริโอจากการเข้ารหัสสัญญาณดิจิตอล</string>
+ <string name="pref_wm8994_dac_direct_summary">เข้าถึงตัวแปลง ดิจิตอล/อนาล็อกโดยตรง,เพื่อหลบ channel mixer, ช่วยให้มีเสียงที่บริสุทธิขึ้น (อัตราส่วน สัญญาณ-ต่อ-การรบกวน ที่มากกว่า)</string>
+ <string name="pref_wm8994_dac_osr128_title">การเล่น Hi-fi </string>
+ <string name="pref_wm8994_dac_osr128_summary">ตัวแปลงดิจิตอล-ไป-อนาล็อก 128x oversampling — เสียงที่บริสุทธิกว่าเมื่อเล่นเพลง</string>
+ <string name="pref_wm8994_adc_osr128_title">กำลังบันทึก Hi-fi</string>
+ <string name="pref_wm8994_adc_osr128_summary">ตัวแปลง อนาล็อก-ไป-ดิจิตอล 128x oversampling —เพิ่มคุณภาพของการบันทึก</string>
+ <string name="pref_wm8994_fll_tuning_title">ปรับนาฬิกาเสียง</string>
+ <string name="pref_wm8994_fll_tuning_summary">ใช้การปรับนาฬิกาเสียง WM8994 — เพิ่มคุณภาพเสียง</string>
+ <string name="help_title">ช่วยเหลือ</string>
+</resources>
diff --git a/res/values-tr/arrays.xml b/res/values-tr/arrays.xml
new file mode 100644
index 0000000..bef450c
--- /dev/null
+++ b/res/values-tr/arrays.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>Orijinal</item>
+ <item>Dengeli</item>
+ <item>Yüksek Hassasiyet</item>
+ <item>Gürültülü Ortam</item>
+ </string-array>
+ <string-array name="headphone_modes">
+ <item>Stüdyo</item>
+ <item>Oda</item>
+ <item>Geniş Oda</item>
+ <item>Sahne</item>
+ </string-array>
+ <string-array name="equalizer_loudness_modes">
+ <item>Etkin Değil</item>
+ <item>En güçsüz</item>
+ <item>Daha güçsüz</item>
+ <item>Güçsüz</item>
+ <item>Güçlü</item>
+ <item>Daha güçlü</item>
+ <item>En güçlü</item>
+ </string-array>
+ <string-array name="compression_modes">
+ <item>Az</item>
+ <item>Orta</item>
+ <item>Çok Yüksek</item>
+ </string-array>
+ <string-array name="bassboost_modes">
+ <item>Az</item>
+ <item>Orta</item>
+ <item>Çok Yüksek</item>
+ </string-array>
+ <string-array name="wm8994_bassboost_modes">
+ <item>Standart</item>
+ <item>Küçük Hoparlörler</item>
+ </string-array>
+
+</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
new file mode 100644
index 0000000..9afcb4b
--- /dev/null
+++ b/res/values-tr/strings.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name">Ses Yöneticisi</string>
+ <string name="select_configuration_title">Düzenlemek için yapılandırma seçin</string>
+ <string name="headset_title">Kulaklık</string>
+ <string name="speaker_title">Hoparlör</string>
+ <string name="bluetooth_title">Bluetooth</string>
+ <string name="usb_title">USB/Dock</string>
+ <string name="audio_effects">Ses efektleri</string>
+ <string name="pref_unavailable">Bu işlevsellik cihazınızda desteklenmiyor</string>
+ <string name="dsp_settings_headset">Ses Yöneticisi Ayarları - Kulaklık</string>
+ <string name="dsp_settings_speaker">Ses Yöneticisi Ayarları - Telefon Hoparlörü</string>
+ <string name="dsp_settings_bluetooth">Ses Yöneticisi Ayarları - Bluetooth Aygıtı</string>
+ <string name="dsp_settings_usb">Ses Yöneticisi Ayarları - USB Aygıtı</string>
+ <string name="dsp_settings_wm8994">Ses Yöneticisi Ayarları - WM8994</string>
+ <string name="pref_dsp_title">Dinamik alan sıkıştırması</string>
+ <string name="pref_dsp_summary_on">Sıkıştırma etkin</string>
+ <string name="pref_dsp_summary_off">Sıkıştırma etkin değil</string>
+ <string name="pref_dsp_enable">Etkinleştir</string>
+ <string name="pref_effect_title">Efekt şiddetini seçin</string>
+ <string name="dialog_effect">Efekt şiddeti</string>
+ <string name="pref_equalizer_title">Equalizer</string>
+ <string name="pref_equalizer_summary_on">Equalizer etkin</string>
+ <string name="pref_equalizer_summary_off">Equalizer etkin değil</string>
+ <string name="pref_equalizer_enable">Etkinleştir</string>
+ <string name="pref_equalizer_preset_title">Ön ayar seçin</string>
+ <string name="pref_equalizer_loudness_title">Ses şiddeti dengeleyicisi</string>
+ <string name="pref_bassboost_title">Bas yükseltici</string>
+ <string name="pref_bassboost_summary_on">Bas yükseltici etkin</string>
+ <string name="pref_bassboost_summary_off">Bas yükseltici etkin değil</string>
+ <string name="pref_bassboost_enable">Etkinleştir</string>
+ <string name="pref_headset_virtual_title">Kulaklık sanal oda efekti</string>
+ <string name="pref_headset_virtual_summary_on">Kulaklık sanal oda efekti etkin</string>
+ <string name="pref_headset_virtual_summary_off">Kulaklık sanal oda efekti etkin değil</string>
+ <string name="pref_headset_virtual_enable">Etkinleştir</string>
+ <string name="pref_room_title">Oda tipini seçin</string>
+ <string name="dialog_room">Oda tipi</string>
+ <string name="menu_reset">Sıfırla</string>
+ <string name="eq_preset_acoustic">Akustik</string>
+ <string name="eq_preset_bass_booster">Bas yükseltici</string>
+ <string name="eq_preset_bass_reducer">Bas azaltıcı</string>
+ <string name="eq_preset_classical">Klasik</string>
+ <string name="eq_preset_deep">Derin</string>
+ <string name="eq_preset_flat">Düz</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">Rock</string>
+ <string name="eq_preset_small_speakers">Küçük hoparlörler</string>
+ <string name="eq_preset_treble_booster">Tiz yükseltici</string>
+ <string name="eq_preset_treble_reducer">Tiz azaltıcı</string>
+ <string name="eq_preset_vocal_booster">Vokal yükseltici</string>
+ <string name="eq_preset_custom">Özel</string>
+ <string name="category_wm8994_internal_speaker">Hoparlör</string>
+ <string name="category_wm8994_signal_processing">Sinyal işleme</string>
+ <string name="category_wm8994_headphone_amp">Kulaklık</string>
+ <string name="category_wm8994_codec_optimization">Codec optimizasyonu</string>
+ <string name="category_wm8994_dac_config">Dijital/Analog dönüştürücü ayarları</string>
+ <string name="category_wm8994_analog_path">Analog kanal yapılandırması</string>
+ <string name="category_wm8994_mic_settings">Mikrofon ayarları</string>
+ <string name="category_wm8994_microphone_recording">Mikrofon</string>
+ <string name="wm8994_settings_title_head">Ses ayarları</string>
+ <string name="wm8994_settings_title_subhead">Ses ayarları</string>
+ <string name="wm8994_settings_summary_head">WM8994 ses işlemcisinin gelişmiş ayarları</string>
+ <string name="pref_wm8994_microphone_recording_title">Kaydetme ön ayarı</string>
+ <string name="pref_wm8994_headphone_amp_title">Yükseltici seviyesi</string>
+ <string name="pref_wm8994_headphone_amp_summary">Analog yükselticiyi özelleştir</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Kulaklık yükseltici seviyesi</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Analog yükseltici</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Bas yükseltici</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Bas yükseltme için gelişmiş ayarlar</string>
+ <string name="pref_wm8994_bass_boost_title">Bas yükseltme aralığı</string>
+ <string name="pref_wm8994_bass_boost_summary">Gelişmiş dinamik alan yönetimi</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Bas yükseltici ön ayarı</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Bas yükseltici</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Yükselt</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Bas yükseltme aralığı</string>
+ <string name="pref_wm8994_control_enable_title">WM8994 kontrolünü etkinleştir</string>
+ <string name="pref_wm8994_control_enable_summary">WM8994 ses işlemcisi için gelişmiş kontroller</string>
+ <string name="pref_wm8994_speaker_tuning_title">Müzik için ayarla</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Daha fazla bas ve dengeli ses için donanım EQ\'sunu ayarla</string>
+ <string name="pref_wm8994_mono_downmix_title">Mono çevrimi</string>
+ <string name="pref_wm8994_mono_downmix_summary">Stereo sesi monoya çevir (kulaklık gibi stereo çıkışlar içindir)</string>
+ <string name="pref_wm8994_stereo_expansion_title">Stereo genişletme</string>
+ <string name="pref_wm8994_stereo_expansion_summary">Dijital sinyal işleyicisi ile stereo sesi “Genişlet”</string>
+ <string name="pref_wm8994_dac_direct_title">D/AC direct</string>
+ <string name="pref_wm8994_dac_direct_summary">Kanal karıştırıcıyı es geçip direkt dijital/analog dönüştürücüye eriş. Daha temiz ses üretir (daha düşük sinyal-gürültü oranı)</string>
+ <string name="pref_wm8994_dac_osr128_title">Hi-fi yürütme</string>
+ <string name="pref_wm8994_dac_osr128_summary">128x örnekleme ile dijitalden-analoga dönüştürücü — müzik çalarken daha temiz ses</string>
+ <string name="pref_wm8994_adc_osr128_title">Hi-fi kaydetme</string>
+ <string name="pref_wm8994_adc_osr128_summary">128x örnekleme ile analogdan-dijitale dönüştürücü — kaydedilen seslerin kalitesini arttırır</string>
+ <string name="pref_wm8994_fll_tuning_title">Ayarlı ses frekansı</string>
+ <string name="pref_wm8994_fll_tuning_summary">Ayarlı WM8994 ses frekans kaynağını kullan — sesin kalitesini arttırır</string>
+ <string name="help_title">Yardım</string>
+ <string name="help_text"><b>Ses Yöneticisi (DSP Manager) Nedir?</b>\n\n\n\nSes Yöneticisi (DSP Manager) çıkış bazlı bir ses ayarlama uygulamasıdır. <i>DSP</i> Dijital Sinyal işleme anlamına gelmektedir. DSP aslına bu uygulama içerisinde çalışmamaktadır. Bu uygulama, Android\'in ses efekt spesifikasyonu uyan uygulamalar -örneğin bir çok müzik çalıcı- için DSP özelliklerini etkinleştirmektedir.\n\n\n\n\n<b>Felsefe</b>\n\n\n\nCyanogenMod\'un ses işlemcisi dört farklı kategoride çıkışı desteklemektedir:\nKabloluz kulaklık, USB ses çıkışı, telefon haporlörleri ve bluetooth kulaklık. Her bir çıkış kategorisi için ayrı ayar paneli bulunmaktadır. Ses Yöneticisi\'nin felsefesi, her bir çıkışta o çıkışın kendi özelliklerine göre optimal dinleme deneyimini sunmaktır. \n\n\n\nAndroid Açık Kaynak Projesinin aksine, her bir uygulama için farklı ayar seçeneği sunmuyoruz. Bunu bilerek yapmıyoruz: Önemsediğimiz şey çıkışlar, hangi uygulamanın DSP\'nin üzerinde çalışması için ses ürettiği değil. \n\n\n\n\n<b>Özellikler</b>\n\n\n\n1. <b>Dinamik Alan Sıkıştırması (DRC)</b>\n\n\n\nBu efekt, sesin yüksekliğinin ortalama bir dinleyeci tarafından nasıl algılandığını tahmin ederek bu tahmin üzerinden arttırma kontrolü uygular. Birincil kullanım alanı müziğin düşük sesli kısımlarının arkaplan sesi tarafından bastırılabilme riski olduğu araba içi ya da cadde gibi gürültülü ortamlardır. \n\n\nAna ayar sesin Ses Yöneticisi tarafından hangi hedef düzeyde arttırılmaya çalışılacağını belirler. Bu DSP efektinin benzeri Android Açık Kaynak Projesi\'nde bulunmamaktadır.\n\n\n\n\n2. <b>Bass Arttırma</b>\n\n\n\nBass arttırma, 55 Hz ve altındaki frekansları vurgulamak için kullanılabilecek basit bir alçak frekans geçirimi (lowpass) filtresidir. Bu arttırma yaklaşık olarak 6dB\'dir ve 55 Hz bandına rezonans filtresi uygulayarak bu frekanslara ekstra vurgu sağlayan \'güç\' parametresi kullanılarak düzenlenebilir. Efekt küçük haporlörler ya da kulak kanalına tam oturmayan supra-aural tarzı kulaklıklardaki bass frekansların kaybolmasını önlemek için tasarlanmıştır.\n\n\n\n\n3. <b>Equalizer</b>\n\n\n\n16, 64, 250, 1000, 4000 ve 16000 Hz bandlarında çalışan 6 band bir equalizerdır.\nBazı yaygın ön ayarlar sağlanmıştır ve frekans tepkisi equalizer grafiğine dokunarak ayarlanabilir. Bu efekt kullancının kendi dinleme zevkine ve kullanılan kulaklık ya da haporlörlere göre ayarlanabilir.\n\n\n\nEqualizer aynı zamanda bir ses şiddeti dengeleyici filtresi de içermektedir. Bu da kullanıcının kulağına ulaşan ses basınç düzeyinden yola çıkarak kulağın frekans tepkisini eşitlemeye çalışır. Bu özelliğin tasarlandığı şekilde çalışması için kablolu kulaklık kullanılması ve güç değerinin düzgün ayarlanması gerekmektedir.\n\n\n\nDengeleme gücü için doğru değeri seçmek için, en düşük ses düzeyini kullanarak rock ya da metal gibi geniş spektrumlu, gürültülü bir müzik dinleyin. Bass\'ın duyulabilir ve diğer meteryalle dengeli olduğu bir noktaya ayarlandığından emin olun. Bu ayar düzgün ayarlandıktan sonra bass dinleme düzeyinden bağımsız olarak diğer enstrümanlara göre dengeli kalmalıdır. Eğer yüksek düzeylerde ses çok basslı geliyorsa ayar muhtemelen olması gerekenden daha güçlü bir değere ayarlanmıştır ve düşürülmesi gereklidir.\n\n\n\nDengeleme kullanıcı seçimli ayar olarak eklenmiştir. Sadece dengeleyici kullanmak istiyorsanız equalizer\'ı \'Düz\' moduna getirebilirsiniz.\n\n\n\n4. <b>Kulaklık Filtresi</b>\n\n\n\nKulaklık filtresi ünlü bs2b analog devresinden esinlenilmiş crossfeed bir tasarımdır.\nEfekt, mono sesi olduğu gibi geçirir ve fark sinyalini kafa içi ses emilimi ve kulaklar arası gecikme farkını bir arada değerlendiren alçak frekans geçirimi (lowpass) filtresi aracılığıyla düzenleyerek kullanıcının kulağına doğru türde psikoakustik işaretleri verir. Bunun amacı her kulaklığın doğasında olan mantıksız stereo ayrıştırma sonucu kullanıcıda oluşan yorgunluk hissini engellemektir. Efekt stereo kulaklık kullanıldığında aktif edilmelidir. \n\n\nBu karıştırma işlemi, stereo ayrıştırmayı azalttığı için stereo algılama genişliğini arttırmakta kullanılabilecek bir Haas efekti* yankısı oluşturulur. Bu da \'Oda türü\' seçeneğiyle kontrol edilir.\n\n\n* Haas efekti, insanların sesin iki kulaktan birine daha geç gelmesi sonucu sesin yönünü ve konumunu belirlemekte kullandıkları psikoakustik bir yanılgıdır.\n\n<i>Çevirenin notu: Yukarıdaki teknik kısımları anladığım kadarıyla şu şekilde özetleyebilirim: Stereo müziklerdeki sağ ve sol kulaklık arasındaki farklılıklar bir süre sonra kulağınızı yorabileceğinden oda efektlerinden birini kullanmak daha doğal, dolayısıyla daha rahat bir dinleme sunabilir. Bu kişiden kişiye değişebilen bir olgu olduğundan kendi zevklerinize göre en uygununu seçmek ya da bu özelliği tamamen kapatmak size kalmış.</i></string>
+
+</resources>
diff --git a/res/values-ug/arrays.xml b/res/values-ug/arrays.xml
new file mode 100644
index 0000000..98223dc
--- /dev/null
+++ b/res/values-ug/arrays.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>ئەسلى</item>
+ <item>تەڭپۇڭ</item>
+ <item>يۇقىرى سەزگۈرلۈك</item>
+ <item>ۋاراڭ-چۇرۇڭ مۇھىت</item>
+ </string-array>
+
+ <string-array name="headphone_modes">
+ <item>ئىشخانا</item>
+ <item>ئۆي</item>
+ <item>چوڭ ئۆي</item>
+ <item>سەھنە</item>
+ </string-array>
+
+ <string-array name="equalizer_loudness_modes">
+ <item>چەكلەنگەن</item>
+ <item>ئەڭ ئاجىز</item>
+ <item>ئاجىزراق</item>
+ <item>ئاجىز</item>
+ <item>كۈچلۈك</item>
+ <item>كۈچلۈكرەك</item>
+ <item>ئەڭ كۈچلۈك</item>
+ </string-array>
+
+ <string-array name="compression_modes">
+ <item>يىنىك</item>
+ <item>ئوتتۇراھال</item>
+ <item>كەسكىن</item>
+ </string-array>
+
+ <string-array name="bassboost_modes">
+ <item>يىنىك</item>
+ <item>ئوتتۇراھال</item>
+ <item>كەسكىن</item>
+ </string-array>
+
+ <string-array name="wm8994_bassboost_modes">
+ <item>ئۆلچەملىك</item>
+ <item>كىچىك ياڭراتقۇلار</item>
+ </string-array>
+
+</resources>
\ No newline at end of file
diff --git a/res/values-ug/strings.xml b/res/values-ug/strings.xml
new file mode 100644
index 0000000..33bd751
--- /dev/null
+++ b/res/values-ug/strings.xml
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <string name="app_name">DSP باشقۇرغۇچ</string>
+ <string name="select_configuration_title">تەھرىرلەيدىغان سەپلىمە ھۆججەتنى تاللاڭ</string>
+ <string name="headset_title">تىڭشىغۇچ</string>
+ <string name="speaker_title">ياڭراتقۇ</string>
+ <string name="bluetooth_title">كۆكچىش</string>
+ <string name="usb_title">USB/لەڭگەر</string>
+
+ <string name="audio_effects">ئاۋاز ئۈنۈملىرى</string>
+ <string name="pref_unavailable">ئۈسكۈنىڭىزدە ئىقتىدارنى ئىشلەتكىلى بولمايدۇ</string>
+ <string name="dsp_settings_headset">DSP تەڭشەكلەر - تىڭشىغۇچ</string>
+ <string name="dsp_settings_speaker">DSP تەڭشەكلەر - تېلېفون ياڭراتقۇ</string>
+ <string name="dsp_settings_bluetooth">DSP تەڭشەكلەر - كۆكچىش ئۈسكۈنە</string>
+ <string name="dsp_settings_usb">DSP تەڭشەكلەر - USB ئۈسكۈنە</string>
+ <string name="dsp_settings_wm8994">DSP تەڭشەكلەر - WM8994</string>
+ <string name="pref_dsp_title">ھەرىكەتچان دائىرىنى پىرىسلاش</string>
+ <string name="pref_dsp_summary_on">پىرىسلاش قوزغىتىلدى</string>
+ <string name="pref_dsp_summary_off">پىرىسلاش چەكلەندى</string>
+ <string name="pref_dsp_enable">قوزغات</string>
+ <string name="pref_effect_title">ئۈنۈم كۈچلۈكلۈكىنى تاللاڭ</string>
+ <string name="dialog_effect">ئۈنۈم كۈچلۈكلۈكى</string>
+ <string name="pref_equalizer_title">تەڭشىگۈچ</string>
+ <string name="pref_equalizer_summary_on">تەڭشىگۈچ قوزغىتىلدى</string>
+ <string name="pref_equalizer_summary_off">تەڭشىگۈچ چەكلەندى</string>
+ <string name="pref_equalizer_enable">قوزغات</string>
+ <string name="pref_equalizer_preset_title">ئالدىن ئورۇنلاشتۇرۇشنى تاللاڭ</string>
+ <string name="pref_equalizer_loudness_title">ياڭراقلىق تولۇقلاش</string>
+ <string name="pref_bassboost_title">تۆۋەن ئاۋازنى يۇقىرىلىتىش</string>
+ <string name="pref_bassboost_summary_on">تۆۋەن ئاۋازنى يۇقىرىلىتىش قوزغىتىلغان</string>
+ <string name="pref_bassboost_summary_off">تۆۋەن ئاۋازنى يۇقىرىلىتىش چەكلەنگەن</string>
+ <string name="pref_bassboost_enable">قوزغات</string>
+ <string name="pref_headset_virtual_title">تىڭشىغۇچنىڭ مەۋھۇم بوشلۇقتىكى ئۈنۈمى</string>
+ <string name="pref_headset_virtual_summary_on">تىڭشىغۇچنىڭ مەۋھۇم بوشلۇقى قوزغىتىلغان</string>
+ <string name="pref_headset_virtual_summary_off">تىڭشىغۇچنىڭ مەۋھۇم بوشلۇقى چەكلەنگەن</string>
+ <string name="pref_headset_virtual_enable">قوزغات</string>
+ <string name="pref_room_title">ئۆي تىپىنى تاللاڭ</string>
+ <string name="dialog_room">ئۆي تىپى</string>
+ <string name="menu_reset">ئەسلىگە قايتۇر</string>
+
+ <string name="eq_preset_acoustic">توكسىز مۇزىكا</string>
+ <string name="eq_preset_bass_booster">تۆۋەن ئاۋازنى يۇقىرىلاتقۇچ</string>
+ <string name="eq_preset_bass_reducer">تۆۋەن ئاۋازنى پەسەيتكۇچ</string>
+ <string name="eq_preset_classical">كىلاسسىك</string>
+ <string name="eq_preset_deep">تۆۋەن</string>
+ <string name="eq_preset_flat">تەكشىلىك</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">تولغىما ئۇسسۇل</string>
+ <string name="eq_preset_small_speakers">كىچىك ياڭراتقۇلار</string>
+ <string name="eq_preset_treble_booster">ئاۋازنى ئۈچ ھەسسە يۇقىرىلاتقۇچ</string>
+ <string name="eq_preset_treble_reducer">ئاۋازنى ئۈچ ھەسسە پەسەيتكۈچ</string>
+ <string name="eq_preset_vocal_booster">ئاۋاز يۇقىرىلاتقۇچ</string>
+ <string name="eq_preset_custom">ئىختىيارى</string>
+
+ <!-- WM8994 -->
+ <!-- Categories -->
+ <string name="category_wm8994_internal_speaker">ياڭراتقۇ</string>
+ <string name="category_wm8994_signal_processing">سىگنال بىر تەرەپ قىلغۇچ</string>
+ <string name="category_wm8994_headphone_amp">تىڭشىغۇچ</string>
+ <string name="category_wm8994_codec_optimization">كودلىغۇچ كود يەشكۈچ ئەلالاشتۇرۇش</string>
+ <string name="category_wm8994_dac_config">رەقەملىك/تەقلىد ئالماشتۇرغۇچ تەڭشەكلىرى</string>
+ <string name="category_wm8994_analog_path">تەقلىد يول سەپلىمىسى</string>
+ <string name="category_wm8994_mic_settings">مىكفورون تەڭشەكلىرى:</string>
+ <string name="category_wm8994_microphone_recording">مىكروفون</string>
+
+ <!-- Titles/Summaries -->
+ <string name="wm8994_settings_title_head">ئاۋاز تەڭشەكلىرى</string>
+ <string name="wm8994_settings_title_subhead">ئاۋاز تەڭشەكلىرى</string>
+ <string name="wm8994_settings_summary_head">WM8994 ئاۋاز بىر تەرەپ قىلغۇچ نىڭ ئالىي تىزگىنلىرى</string>
+ <string name="pref_wm8994_microphone_recording_title">ئاۋاز ئېلىشنىڭ ئالدىن تەڭشەكلىرى</string>
+ <string name="pref_wm8994_headphone_amp_title">ئاۋاز كۈچەيتىش دەرىجىسى</string>
+ <string name="pref_wm8994_headphone_amp_summary">ئىختىيارىي تەقلىد ئېشىش قۇۋۋىتى</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">تىڭشىغۇچ ئاۋاز كۈچەيتىش دەرىجىسى</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">تەقلىد ئېشىش قۇۋۋىتى</string>
+ <string name="pref_wm8994_bass_boost_enable_title">تۆۋەن ئاۋازنى يۇقىرىلىتىش</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">تۆۋەن ئاۋازنى يۇقىرىلىتىشنىڭ ئالىي تىزگىنلىرى</string>
+ <string name="pref_wm8994_bass_boost_title">تۆۋەن ئاۋازنى يۇقىرىلىتىش دائىرىسى</string>
+ <string name="pref_wm8994_bass_boost_summary">ئالىي ھەرىكەتچان دائىرە باشقۇرۇش</string>
+ <string name="pref_wm8994_bass_boost_preset_title">تۆۋەن ئاۋازنى يۇقىرىلىتىشنىڭ ئالدىن تەڭشىكى</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">تۆۋەن ئاۋازنى يۇقىرىلىتىش</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">ئېشىش</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">تۆۋەن ئاۋازنى يۇقىرىلىتىش دائىرىسى</string>
+ <string name="pref_wm8994_control_enable_title">WM8994 تىزگىننى قوزغات</string>
+ <string name="pref_wm8994_control_enable_summary">WM8994 ئاۋاز بىر تەرەپ قىلغۇچنىڭ ئالىي تىزگىنلىرى</string>
+ <string name="pref_wm8994_speaker_tuning_title">نەغمە تەڭشەش</string>
+ <string name="pref_wm8994_speaker_tuning_summary">قاتتىق دېتال تەڭپۇڭلاشتۇرغۇچنى قايتا تەڭشەپ تېخىمۇ تۆۋەن ئاۋاز ۋە تەڭپۇڭلاشتۇرۇش ئۈنۈمىگە ئېرىشىدۇ</string>
+ <string name="pref_wm8994_mono_downmix_title">يەككە يول ئاۋازنى ئارىلاشتۇرۇش</string>
+ <string name="pref_wm8994_mono_downmix_summary">سىتېرېئو ئاۋازنى يەككە يوللۇق ئاۋازغا بىرلەشتۈرىدۇ (تىڭشىغۇچقا ئوخشاش ئۈسكۈنىگە ستېرېئو ئاۋاز چىقىرىشقا ئىشلىتىدۇ)</string>
+ <string name="pref_wm8994_stereo_expansion_title">سىتېرېئو ئاۋازنى كېڭەيتىش</string>
+ <string name="pref_wm8994_stereo_expansion_summary">سىگنالنى بىر تەرەپ قىلىش ئارقىلىق سىتېرېئو ئاۋازنى كېڭەيتىدۇ</string>
+ <string name="pref_wm8994_dac_direct_title">بىۋاستە رەقەم/تەقلىد ئالماشتۇرۇش</string>
+ <string name="pref_wm8994_dac_direct_summary">قانال ئارىلاشتۇرغۇچتىن ئايلىنىپ ئۆتۈپ بىۋاستە رەقەم/تەقلىد ئالماشتۇرغۇچنى زىيارەت قىلىپ، تېخىمۇ ئېنىق ئاۋاز شەكىللەندۈرىدۇ (سىگنال كۈچلۈك شاۋقۇن تۆۋەن)</string>
+ <string name="pref_wm8994_dac_osr128_title">Hi-fi چال</string>
+ <string name="pref_wm8994_dac_osr128_summary">رەقەم/تەقلىد ئالماشتۇرغۇچ 128 ھەسسە زىچ ئۆرنەك ئېلىپ، نەغمە چالغاندا ئاۋاز سۈپىتى تېخىمۇ ئېنىق</string>
+ <string name="pref_wm8994_adc_osr128_title">Hi-fi ئاۋاز ئېلىش</string>
+ <string name="pref_wm8994_adc_osr128_summary">تەقلىد/رەقەم ئالماشتۇرغۇچ 128 ھەسسە زىچ ئۆرنەك ئېلىپ، ئاۋازغا ئېلىش سۈپىتىنى ئۆستۈرىدۇ</string>
+ <string name="pref_wm8994_fll_tuning_title">ئاۋازلىق سائەت تەڭشەش</string>
+ <string name="pref_wm8994_fll_tuning_summary">تەڭشەلگەن WM8994 ئاۋاز مەنبەسى ئارقىلىق ئاۋاز سۈپىتىنى ئۆستۈرىدۇ</string>
+
+ <string name="help_title">ياردەم</string>
+ <string name="help_text"><b>DSP باشقۇرغۇچ دېگەن نېمە؟</b>
+\n
+\nDSP باشقۇرغۇچ ئۈن تەڭشەيدىغان ئەپ.<i>“DSP”</i> - \'Digital Signal Processing\'، ياكى رەقەملىك سىگنال بىر تەرەپ قىلغۇچنىڭ قىسقارتىلمىسى.<i>“باشقۇرغۇچ”</i> DSP گە ۋەكىللىك قىلىدۇ ھەمدە ئۇ بىر ئەپنىڭ ئىچىدە ئىجرا بولمايدۇ؛ بۇ باشقۇرغۇچ پەقەت Android ئاۋاز ئۈنۈمى ئۆلچىمىگە ماس كېلىدىغان زور كۆپ قىسىم نەغمە چالغۇچ ئەپلىرى بىلەن ماسلىشىپ ئىجرا قىلىنىپ تەڭشەيدۇ.
+\n
+\n<b>نىشان</b>
+\n
+\nCyanogenMod ئاۋاز بىر تەرەپ قىلىشى 4 خىل چىقىرىش شەكلىنى قوللايدۇ: سىملىق تىڭشىغۇچ، USB ئۈن، ياڭراتقۇ ۋە كۆكچىش تىڭشىغۇچ. ھەر بىر خىل چىقىرىش شەكلىنىڭ ئۆزىگە خاس تاختىسى بار. DSP باشقۇرغۇچنىڭ نىشانى ھەر بىر خىل چىقىرىش شەكلىنىڭ كەمتۈكلىرىنى تۈزىتىپ، ئەڭ ياخشى ئاۋاز ئۈنۈمى كەچمىشى ئېلىپ كېلىش ئۈچۈندۇر.
+\n
+\n AOSP ئاۋاز ئۈنۈمى بىلەن ئوخشىمايدىغان بىر تەرىپى ھەر بىر ئەپكە ئايرىم تەڭشەك ئىقتىدارى تەمىنلىمىگەن. بۇ ئاتايىن لايىھەلەنگەن؛ بىز پەقەت ئاۋازنىڭ چىقىشىغا كۆڭۈل بۆلىمىز، DSP باشقۇرغۇچ بىلەن ماسلىشىدىغان ئەپكە ئەمەس.
+
+\n
+\n<b>ئىقتىدار</b>
+\n
+\nبۇ قوللانمىنىڭ قالغان قىسىملىرى ھەر بىر ئاۋاز ئۈنۈمى ۋە ئۇنى قانداق ئىشلىتىشنى چۈشەندۈرىدۇ.
+\n
+\n1. <b>ھەرىكەتچان دائىرىنى پىرىسلاش</b>
+\n
+\nبۇ ئۈنۈم بىر ئادەمنىڭ ئاۋازىنىڭ قانچىلىكلىكىنى مۆلچەرلەپ ھەمدە مۇشۇ مۆلچەرنى ئىشلىتىپ ئاشقان قۇۋۋەتنى تىزگىنلەيدۇ. بۇ ئىقتىدارنىڭ ئاساسلىق مىسالى ۋاراڭ-چۇرۇڭ مۇھىتتا، نەغمىنىڭ تىنچ بۆلىكى ئەتراپتىكى ئاۋاز بىلەن قاپلىنىپ كېتىشى مۇمكىن.
+\n
+\nبىردىنبىر تەڭشىگىلى بولىدىغان سىگنال DSP باشقۇرغۇچنىڭ قانداق قىلىپ ئامالنىڭ بارىچە نەغمىنىڭ ياڭراقلىقىنىڭ تەڭشەلگەن دەرىجىسىنى ساقلايدىغانلىقىنى بىلدۈرىدۇ. بۇ DSP ئۈنۈمى AOSP بىلەن دەستىلەنمەيدۇ.
+\n
+\n2. <b>تۆۋەن ئاۋازنى كۈچەيتىش</b>
+\n
+\nتۆۋەن ئاۋازنى كۈچەيتىش بىر خىل ئاددىي بولغان تۆۋەن ئۆتكۈزگۈچلۈك دولقۇن سۈزگۈچ، 55 Hz ياكى تېخىمۇ تۆۋەن چاستوتىنى كۈچەيتىشكە ئىشلىتىلىدۇ. تۆۋەن ئاۋازنى كۈچەيتىش 6 dB ئەتراپىدا ھەمدە كۈچلۈكلۈك تەڭشىكى ئارقىلىق تەڭشىگىلى بولىدۇ. بۇ بىرلا ۋاقىتتا يەنە چاستوتا بەلبېغى قوشۇپ دولقۇن سۈزگۈچ رېزونانس بولۇپ، چاستوتانى ئالاھىدە كۈچەيتىدۇ. بۇ ئۈنۈم ئاساسلىقى كىچىك ياڭراتقۇ ئىشلەتكەنلىكنى تولۇقلايدۇ ياكى قۇلاقلىق تاقىغان ۋاقىتتىكى تۆۋەن ئاۋاز خورىشىنى تولۇقلايدۇ.
+\n
+\n3. <b>تەڭپۇڭلاشتۇرغۇچ</b>
+\n
+\nبۇ بىر خىل 6 چاستوتىلىق تەڭپۇڭلاشتۇرغۇچ بولۇپ، 16، 64، 250، 1000، 4000 ۋە 16000 Hz چاستوتىنى تەڭشىيەلەيدۇ. ئادەتتە كۆپ ئىشلىتىلىدىغان ئالدىن تەڭشەكلەر سىزگە تەمىنلەنگەن، سىز تەڭپۇڭلاشتۇرغۇچ دىئاگراممىسى ئارقىلىق چاستوتا ئىنكاسىنى ئىختىيارىي بەلگىلىيەلەيسىز. بۇ ئۈنۈملەر ئىشلەتكۈچىلەرنىڭ چاستوتا ئىنكاسىنى ئۆزى ياقتۇرىدىغان ھالەتكە تەڭشىيەلەيدۇ ياكى ياڭراتقۇ ياكى تىڭشىغۇچ ئىشلىتىش ئىقتىدارىغا ئېرىشەلەيدۇ.
+\n
+\nشۇنىڭ بىلەن بىللە تەڭپۇڭلاشتۇرغۇچ ياڭراقلىق تولۇقلاش سۈزگۈچى بولۇپ، ئىشلەتكۈچىنىڭ قۇلىقىغا كىرگەن ئاۋاز بېسىمىغا ئاساسەن چاستوتا ئىنكاسىنى ئۆزگەرتىدۇ. بۇ ئۈنۈم ئۈچۈن سىملىق تىڭشىغۇچ ئىشلىتىش كېرەك ھەمدە كۈچلۈكلۈك تەڭشىكىنى توغرا تەڭشىگەندە ئاندىن ئەڭ ياخشى ئۈنۈمگە ئېرىشكىلى بولىدۇ.\n
+\nياڭراقلىق دەرىجىسىنى تولۇقلاش قىممىتىنى تاللىغاندا، ئالدى بىلەن ئەڭ تىنچ نەغمە ئاۋاز مىقدارىنى ئىشلىتىڭ، ئاندىن بىر قىسىم كەڭ سپېكتر ياكى ولغىما ئۇسۇل ياكى مېتال نەغمىلىرىگە ئوخشاش شاۋقۇنلۇق نەغمەلەرنى تاللاڭ. نۆۋەن ئاۋازنى قېپقالغان ئاۋازنى تەڭپۇڭلاشتۇرالايدىغان تەڭشەك تولۇقلاش قىممىتىگە توغرىلىغاندىن كېيىن، تۆۋەن ئاۋاز ھەممە خىلدىكى نەغمىدە ۋە ھەممە ئاۋاز دەرىجىسىدە مۇشۇنداق بىر خىل سەۋىيەدە تۇرىدۇ. ئەگەر ئاۋازى يۇقىرى نەغمىلەردە تۆۋەن ئاۋاز بەك ئېغىرلىقىنى بايقىسىڭىز، تولۇقلىما تەڭشەكنى بەك يۇقىرى مۆلچەرلىۋېتىپسىز، تۆۋەنلىتىڭ.
+\n
+\nبۇ تولۇقلىما ئىشلەتكۈچىنىڭ تەڭشىشى ئارقىلىق قوشۇلىدۇ. ئەگەر پەقەتلا تولۇقلىماقچى بولسىڭىز، تەڭپۇڭلاشتۇرغۇچتىن يېنىك دەپ تەڭشەڭ.
+\n
+\n4. <b>تىڭشىغۇچ سۈزگۈچ</b>
+\n
+\nتىڭشىغۇچ سۈزگۈچ داڭلىق بولغان bs2b تەقلىدىي توك يولىدىن ئېلھاملىنىپ لايىھەلەنگەن. بۇ ئۈنۈمدە تاق يوللۇق ئاۋازنى ئۆزگەرتمەي، پەرقلىق سىگنالنى ئاۋازنى مۆلچەرلىيەلەيدىغان، ئىككى قۇلاق ئارىسىدىكى تۆۋەن ئۆتكۈزگۈچلۈك دولقۇن سۈزگۈچ ئارقىلىق تەڭشەيدۇ. بۇنىڭ بىلەن سىزگە توغرا بولغان پىسخوئاكۇستىكا ئېلىپ كېلىپ، ستېرېئو ئاۋازنىڭ ئايرىلىپ كېتىپ تىڭشاپ ھېرىپ كېتىشنىڭ ئالدىنى ئېلىش نىشانىغا يېتىدۇ. بۇ ئۈنۈم ستېرېئو ئاۋازلىق تىڭشىغۇچ ئىشلەتكەندە قوزغىتىلىدۇ.
+\n
+\nچاستوتىنى ئارىلاشتۇرۇش ستېرېئو ئاۋاز ئايرىلىپ كېتىشنى ئازايتىش ئۈنۈمى ئېلىپ كېلىدۇ، شۇنىڭ بىلەن بىللە خائاس ئۈنۈمىنىڭ ئەكىس ساداسىنى كەلتۈرۈپ چىقىرىدۇ. بىز بۇ ئۈنۈم ئارقىلىق ستېرېئو ئاۋازنىڭ ياڭراقلىقىنى كۈچەيتەلەيمىز. بۇ ئۈنۈمنى «بوشلۇق تىپى» تەڭشىكى ئارقىلىق تىزگىنلىگىلى بولىدۇ.</string>
+</resources>
diff --git a/res/values-uk/arrays.xml b/res/values-uk/arrays.xml
new file mode 100644
index 0000000..3072fe9
--- /dev/null
+++ b/res/values-uk/arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="headphone_modes">
+ <item>Студія</item>
+ <item>Кімната</item>
+ <item>Велика кімната</item>
+ <item>Сцена</item>
+ </string-array>
+ <string-array name="equalizer_loudness_modes">
+ <item>Вимкнена</item>
+ <item>Найслабкіша</item>
+ <item>Слабкіша</item>
+ <item>Слабка</item>
+ <item>Сильна</item>
+ <item>Сильніша</item>
+ <item>Найсильніша</item>
+ </string-array>
+ <string-array name="compression_modes">
+ <item>Слабке</item>
+ <item>Помірне</item>
+ <item>Надмірне</item>
+ </string-array>
+ <string-array name="bassboost_modes">
+ <item>Слабка</item>
+ <item>Помірна</item>
+ <item>Надмірна</item>
+ </string-array>
+</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
new file mode 100644
index 0000000..1800629
--- /dev/null
+++ b/res/values-uk/strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<resources>
+ <string name="app_name">Менеджер ЦОС</string>
+ <string name="select_configuration_title">Виберіть конфігурацію для редагування</string>
+ <string name="headset_title">Гарнітура</string>
+ <string name="speaker_title">Динамік телефону</string>
+ <string name="bluetooth_title">Пристрій Bluetooth</string>
+ <string name="dsp_settings_headset">Налаштування ЦОС гарнітури</string>
+ <string name="dsp_settings_speaker">Налаштування ЦОС динаміка телефону</string>
+ <string name="dsp_settings_bluetooth">Налаштування ЦОС пристрою Bluetooth</string>
+ <string name="audio_effects">Аудіо ефекти</string>
+ <string name="pref_dsp_title">Стиснення динамічного діапазону</string>
+ <string name="pref_dsp_summary_on">Стиснення ввімкнено</string>
+ <string name="pref_dsp_summary_off">Стиснення вимкнено</string>
+ <string name="pref_dsp_enable">Увімкнути</string>
+ <string name="pref_effect_title">Інтенсивність ефекту</string>
+ <string name="dialog_effect">Інтенсивність ефекту</string>
+ <string name="pref_equalizer_title">Еквалайзер</string>
+ <string name="pref_equalizer_summary_on">Еквалайзер увімкнено</string>
+ <string name="pref_equalizer_summary_off">Еквалайзер вимкнено</string>
+ <string name="pref_equalizer_enable">Увімкнути</string>
+ <string name="pref_equalizer_preset_title">Напередзадані налаштування</string>
+ <string name="pref_equalizer_loudness_title">Тонкомпенсація</string>
+ <string name="pref_bassboost_title">Підсилення НЧ</string>
+ <string name="pref_bassboost_summary_on">Підсилення НЧ увімкнено</string>
+ <string name="pref_bassboost_summary_off">Підсилення НЧ вимкнено</string>
+ <string name="pref_bassboost_enable">Увімкнути</string>
+ <string name="pref_headset_virtual_title">Ефект віртуального оточення</string>
+ <string name="pref_headset_virtual_summary_on">Ефект віртуального оточення увімкнено</string>
+ <string name="pref_headset_virtual_summary_off">Ефект віртуального оточення вимкнено</string>
+ <string name="pref_headset_virtual_enable">Увімкнути</string>
+ <string name="pref_room_title">Віртуальне оточення</string>
+ <string name="dialog_room">Віртуальне оточення</string>
+ <string name="menu_reset">Скинути</string>
+ <string name="eq_preset_acoustic">Акустика</string>
+ <string name="eq_preset_bass_booster">Підсилені НЧ</string>
+ <string name="eq_preset_bass_reducer">Послаблені НЧ</string>
+ <string name="eq_preset_classical">Класика</string>
+ <string name="eq_preset_deep">Глибина</string>
+ <string name="eq_preset_flat">Оригінал</string>
+ <string name="eq_preset_rock">Рок</string>
+ <string name="eq_preset_small_speakers">Маленькі динаміки</string>
+ <string name="eq_preset_treble_booster">Підсилені ВЧ</string>
+ <string name="eq_preset_treble_reducer">Послаблені ВЧ</string>
+ <string name="eq_preset_vocal_booster">Підсилений вокал</string>
+ <string name="eq_preset_custom">Користувацьке налаштування</string>
+</resources>
diff --git a/res/values-zh-rCN/arrays.xml b/res/values-zh-rCN/arrays.xml
new file mode 100644
index 0000000..b8dc158
--- /dev/null
+++ b/res/values-zh-rCN/arrays.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>原始的</item>
+ <item>均衡的</item>
+ <item>高敏感度</item>
+ <item>吵闹环境</item>
+ </string-array>
+
+ <string-array name="headphone_modes">
+ <item>工作室</item>
+ <item>房间</item>
+ <item>大房间</item>
+ <item>舞台</item>
+ </string-array>
+
+ <string-array name="equalizer_loudness_modes">
+ <item>禁用</item>
+ <item>最弱</item>
+ <item>更弱</item>
+ <item>弱</item>
+ <item>强</item>
+ <item>更强</item>
+ <item>最强</item>
+ </string-array>
+
+ <string-array name="compression_modes">
+ <item>轻微</item>
+ <item>中等</item>
+ <item>极致</item>
+ </string-array>
+
+ <string-array name="bassboost_modes">
+ <item>轻微</item>
+ <item>中等</item>
+ <item>极致</item>
+ </string-array>
+
+ <string-array name="wm8994_bassboost_modes">
+ <item>标准</item>
+ <item>小喇叭</item>
+ </string-array>
+
+</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000..6556072
--- /dev/null
+++ b/res/values-zh-rCN/strings.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="app_name">DSP 管理器</string>
+ <string name="select_configuration_title">选择配置即可编辑</string>
+ <string name="headset_title">耳机</string>
+ <string name="speaker_title">扬声器</string>
+ <string name="bluetooth_title">蓝牙</string>
+ <string name="usb_title">USB/底座</string>
+ <string name="audio_effects">音效</string>
+ <string name="pref_unavailable">此功能在您的设备上不可用</string>
+ <string name="dsp_settings_headset">DSP 设置 - 耳机</string>
+ <string name="dsp_settings_speaker">DSP 设置 - 电话扬声器</string>
+ <string name="dsp_settings_bluetooth">DSP 设置 - 蓝牙设备</string>
+ <string name="dsp_settings_usb">DSP 设置 - USB 设备</string>
+ <string name="dsp_settings_wm8994">DSP设置 - WM8994</string>
+ <string name="pref_dsp_title">动态范围压缩</string>
+ <string name="pref_dsp_summary_on">启用压缩</string>
+ <string name="pref_dsp_summary_off">禁用压缩</string>
+ <string name="pref_dsp_enable">启用</string>
+ <string name="pref_effect_title">选择效果强度</string>
+ <string name="dialog_effect">效果强度</string>
+ <string name="pref_equalizer_title">均衡器</string>
+ <string name="pref_equalizer_summary_on">启用均衡器</string>
+ <string name="pref_equalizer_summary_off">禁用均衡器</string>
+ <string name="pref_equalizer_enable">启用</string>
+ <string name="pref_equalizer_preset_title">选择预设</string>
+ <string name="pref_equalizer_loudness_title">响度补偿</string>
+ <string name="pref_bassboost_title">低音增强</string>
+ <string name="pref_bassboost_summary_on">开启低音增强</string>
+ <string name="pref_bassboost_summary_off">禁用低音增强</string>
+ <string name="pref_bassboost_enable">启用</string>
+ <string name="pref_headset_virtual_title">耳机虚拟空间效果</string>
+ <string name="pref_headset_virtual_summary_on">启用耳机虚拟空间</string>
+ <string name="pref_headset_virtual_summary_off">禁用耳机虚拟空间</string>
+ <string name="pref_headset_virtual_enable">启用</string>
+ <string name="pref_room_title">选择空间类型</string>
+ <string name="dialog_room">空间类型</string>
+ <string name="menu_reset">重置</string>
+
+ <string name="eq_preset_acoustic">原音音乐</string>
+ <string name="eq_preset_bass_booster">低音强化</string>
+ <string name="eq_preset_bass_reducer">低音弱化</string>
+ <string name="eq_preset_classical">古典音乐</string>
+ <string name="eq_preset_deep">深沉</string>
+ <string name="eq_preset_flat">平淡</string>
+ <string name="eq_preset_r_and_b">节奏怨曲</string>
+ <string name="eq_preset_rock">摇滚音乐</string>
+ <string name="eq_preset_small_speakers">小型喇叭</string>
+ <string name="eq_preset_treble_booster">高音强化</string>
+ <string name="eq_preset_treble_reducer">高音弱化</string>
+ <string name="eq_preset_vocal_booster">人声强化</string>
+ <string name="eq_preset_custom">自定义</string>
+
+ <string name="category_wm8994_internal_speaker">扬声器</string>
+ <string name="category_wm8994_signal_processing">信号处理</string>
+ <string name="category_wm8994_headphone_amp">耳机</string>
+ <string name="category_wm8994_codec_optimization">信号编解码器优化</string>
+ <string name="category_wm8994_dac_config">数模转换器设置</string>
+ <string name="category_wm8994_analog_path">模拟路径设置</string>
+ <string name="category_wm8994_mic_settings">麦克风设置</string>
+ <string name="category_wm8994_microphone_recording">麦克风</string>
+
+ <string name="wm8994_settings_title_head">音效设置</string>
+ <string name="wm8994_settings_title_subhead">音效设置</string>
+ <string name="wm8994_settings_summary_head">WM8994 音效处理器硬件高级控制</string>
+ <string name="pref_wm8994_microphone_recording_title">录音预先调整</string>
+ <string name="pref_wm8994_headphone_amp_title">扩音级别</string>
+ <string name="pref_wm8994_headphone_amp_summary">自定义模拟增益</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">耳机扩音级别</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">模拟增益</string>
+ <string name="pref_wm8994_bass_boost_enable_title">低音强化</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">低音强化高级控制</string>
+ <string name="pref_wm8994_bass_boost_title">低音强化范围</string>
+ <string name="pref_wm8994_bass_boost_summary">高级动态范围管理</string>
+ <string name="pref_wm8994_bass_boost_preset_title">低音强化预先调整</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">低音强化</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">增益</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">低音强化范围</string>
+ <string name="pref_wm8994_control_enable_title">开启 WM8994 控制</string>
+ <string name="pref_wm8994_control_enable_summary">开启 WM8994 音效处理器高级控制</string>
+ <string name="pref_wm8994_speaker_tuning_title">音乐调整</string>
+ <string name="pref_wm8994_speaker_tuning_summary">重新设置硬件均衡器来获取更加低音及均衡的音效</string>
+ <string name="pref_wm8994_mono_downmix_title">单声道混合</string>
+ <string name="pref_wm8994_mono_downmix_summary">将立体声道混合成单声道 (用于立体声道输出,例如耳机)</string>
+ <string name="pref_wm8994_stereo_expansion_title">立体声道扩展</string>
+ <string name="pref_wm8994_stereo_expansion_summary">通过信号处理来“扩展”立体声</string>
+ <string name="pref_wm8994_dac_direct_title">直接数模转换</string>
+ <string name="pref_wm8994_dac_direct_summary">绕过频道混音器,直接访问数模转换器,来产生更清晰的音频 (较高的信噪比)</string>
+ <string name="pref_wm8994_dac_osr128_title">Hi-Fi 回放</string>
+ <string name="pref_wm8994_dac_osr128_summary">数模转换器 128 倍过密采样,使播放音乐时的音质更加清晰</string>
+ <string name="pref_wm8994_adc_osr128_title">Hi-Fi 录音</string>
+ <string name="pref_wm8994_adc_osr128_summary">数模转换器 128 倍过密采样,提高录音品质</string>
+ <string name="pref_wm8994_fll_tuning_title">调整音频时钟</string>
+ <string name="pref_wm8994_fll_tuning_summary">使用调整过的 WM8994 音频时钟源,改善音效品质</string>
+
+ <string name="help_title">用户手册</string>
+ <string name="help_text"><b>什么是 DSP 管理器?</b>
+\n
+\nDSP 管理器是一个进行音频调整的程序。<i>“DSP”</i> 是 \'Digital Signal Processing\',或数字信号处理的缩写。<i>“管理器”</i>代表着 DSP 并不是在一个程序内运行;此管理器只与符合 Android 音频效果规格的程序 (例如大部分音乐播放器) 协作运行并进行调整。
+\n
+\n<b>目标</b>
+\n
+\nCyanogenMod 的音频处理支持四种输出类别:有线耳机、USB 音频、扬声器与蓝牙耳机。每一个输出类别拥有自己特定的面板。DSP 管理器的目标是为了纠正每个输出类别拥有的缺陷,以便带来最好的音效体验。
+\n
+\n与 AOSP 音效不同的一点就是这里没有给每个程序单独设置的功能。这是一个刻意的设计:我们仅关心音频的输出,不关心与 DSP 管理器协作的程序。
+
+\n
+\n<b>功能</b>
+\n
+\n本手册的其余部分将描述每一个音频效果以及应该如何使用。
+\n
+\n1. <b>动态范围压缩</b>
+\n
+\n此效果将估计音频对一个平常人有多大声并使用此估计进行一个增益控制。此功能的主要案例是在吵闹的环境下,音乐安静的部分可能被外围声音所淹没。
+\n
+\n唯一可调信号将定制 DSP 管理器如何尽力的保持音乐响度在设定的等级。此 DSP 效果与 AOSP 无重叠。
+\n
+\n2. <b>低音增强</b>
+\n
+\n低音增强是一个简单的低通滤波器,用于增强在 55 Hz 或更低的频率。低音的增强是 6 dB 左右,并可以使用“强度”设置进行调整。这同时也会在 55 Hz 频带加入滤波器谐振,使此频率被特别增强。此效果主要用于弥补使用小音箱或贴耳式耳机可能带来的低音损失。
+\n
+\n3. <b>均衡器</b>
+\n
+\n这是一个 6 频率均衡器,拥有 16、64、250、1000、4000 和 16000 Hz 的频率调整。一些常用的预设已为您提供,您可以通过均衡器的图表自定义频率响应。这些效果可以让用户把频率响应调整为自己的喜好或可用音响/耳机的能力。
+\n
+\n同时均衡器也包括一个响度补偿过滤器,根据进入用户耳朵的声压对频率响应进行改变。此效果需要您使用有线耳机并对强度设置进行正确的调整才能够达到最佳效果。
+\n
+\n在选择响度补偿强度值时,先使用最安静的音乐音量,然后选择一些宽波谱与嘈杂的音乐 (例如摇滚乐或重金属音乐)。尝试选择一个能够将低音增强到与剩下的音频达到平衡的设置。补偿设置被正确的调整后,低音应该在所有类型的音乐内与所有音量等级上停留在比较一致的等级上。如果在较高音量的音乐上发现低音过重,补偿设置估计太强了,需要降低。
+\n
+\n此补偿是通过用户调整而加入的。如果您只想要补偿的话,均衡器选择应该设为“平淡”。
+\n
+\n4. <b>耳机过滤器</b>
+\n
+\n耳机过滤器是从著名的 bs2b 模拟电路得到启发的交输设计。此效果不改变单声道,而把有差异的信号通过一个能够估计声影与两耳间的延迟的低通滤波器进行调整。这将为您带来正确的心理声学,达到防止立体声分离而导致听觉疲劳的目标。此效果适用于使用立体声耳机时启用。
+\n
+\n混频带来减少立体声分离的效果,同时也会导致哈斯效应回响。我们可以通过此效应而增加立体声声象。此效应可以通过“空间类型”设置进行控制。
+ </string>
+
+</resources>
diff --git a/res/values-zh-rTW/arrays.xml b/res/values-zh-rTW/arrays.xml
new file mode 100644
index 0000000..fbf4900
--- /dev/null
+++ b/res/values-zh-rTW/arrays.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>原音</item>
+ <item>平衡</item>
+ <item>高靈敏度</item>
+ <item>吵鬧環境</item>
+ </string-array>
+ <string-array name="headphone_modes">
+ <item>工作室</item>
+ <item>房間</item>
+ <item>大房間</item>
+ <item>舞台</item>
+ </string-array>
+ <string-array name="equalizer_loudness_modes">
+ <item>停用</item>
+ <item>最弱</item>
+ <item>更弱</item>
+ <item>弱</item>
+ <item>強</item>
+ <item>更強</item>
+ <item>最強</item>
+ </string-array>
+ <string-array name="compression_modes">
+ <item>輕微</item>
+ <item>中等</item>
+ <item>極端</item>
+ </string-array>
+ <string-array name="bassboost_modes">
+ <item>輕微</item>
+ <item>中等</item>
+ <item>極端</item>
+ </string-array>
+ <string-array name="wm8994_bassboost_modes">
+ <item>標準</item>
+ <item>小型喇叭</item>
+ </string-array>
+</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
new file mode 100644
index 0000000..bce026c
--- /dev/null
+++ b/res/values-zh-rTW/strings.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="app_name">DSP 總管</string>
+ <string name="select_configuration_title">選擇要編輯的設置</string>
+ <string name="headset_title">有線耳機</string>
+ <string name="speaker_title">手機喇叭</string>
+ <string name="bluetooth_title">藍牙裝置</string>
+ <string name="usb_title">USB/座架</string>
+ <string name="audio_effects">音訊效果</string>
+ <string name="pref_unavailable">此功能不可用於您的裝置上</string>
+ <string name="dsp_settings_headset">數位訊號處理(DSP)設定-有線耳機</string>
+ <string name="dsp_settings_speaker">數位訊號處理(DSP)設定-手機喇叭</string>
+ <string name="dsp_settings_bluetooth">數位訊號處理(DSP)設定-藍牙裝置</string>
+ <string name="dsp_settings_usb">數位訊號處理(DSP)設定-USB裝置</string>
+ <string name="dsp_settings_wm8994">數位訊號處理(DSP)設定-WM8994</string>
+ <string name="pref_dsp_title">動態範圍壓縮(DRC)</string>
+ <string name="pref_dsp_summary_on">已啟用壓縮</string>
+ <string name="pref_dsp_summary_off">已停用壓縮</string>
+ <string name="pref_dsp_enable">使用壓縮</string>
+ <string name="pref_effect_title">選擇效果程度</string>
+ <string name="dialog_effect">效果程度</string>
+ <string name="pref_equalizer_title">等化器</string>
+ <string name="pref_equalizer_summary_on">已啟用等化器</string>
+ <string name="pref_equalizer_summary_off">已停用等化器</string>
+ <string name="pref_equalizer_enable">使用等化器</string>
+ <string name="pref_equalizer_preset_title">選擇設置</string>
+ <string name="pref_equalizer_loudness_title">響度補償</string>
+ <string name="pref_bassboost_title">低音強化</string>
+ <string name="pref_bassboost_summary_on">已啟用低音強化</string>
+ <string name="pref_bassboost_summary_off">已停用低音強化</string>
+ <string name="pref_bassboost_enable">使用低音強化</string>
+ <string name="pref_headset_virtual_title">耳機虛擬室內效果</string>
+ <string name="pref_headset_virtual_summary_on">已啟用耳機虛擬室內</string>
+ <string name="pref_headset_virtual_summary_off">已停用耳機虛擬室內</string>
+ <string name="pref_headset_virtual_enable">使用耳機虛擬室內</string>
+ <string name="pref_room_title">選擇房間種類</string>
+ <string name="dialog_room">房間種類</string>
+ <string name="menu_reset">重設</string>
+
+ <string name="eq_preset_acoustic">原音音樂</string>
+ <string name="eq_preset_bass_booster">低音強化</string>
+ <string name="eq_preset_bass_reducer">低音弱化</string>
+ <string name="eq_preset_classical">古典音樂</string>
+ <string name="eq_preset_deep">深沉</string>
+ <string name="eq_preset_flat">平淡</string>
+ <string name="eq_preset_r_and_b">R&B</string>
+ <string name="eq_preset_rock">搖滾音樂</string>
+ <string name="eq_preset_small_speakers">小型喇叭</string>
+ <string name="eq_preset_treble_booster">高音強化</string>
+ <string name="eq_preset_treble_reducer">高音弱化</string>
+ <string name="eq_preset_vocal_booster">人聲強化</string>
+ <string name="eq_preset_custom">自訂</string>
+
+ <string name="category_wm8994_internal_speaker">手機喇叭</string>
+ <string name="category_wm8994_signal_processing">訊號處理</string>
+ <string name="category_wm8994_headphone_amp">有線耳機</string>
+ <string name="category_wm8994_codec_optimization">編解碼器優化</string>
+ <string name="category_wm8994_dac_config">數字/類比轉換器(DAC)設置</string>
+ <string name="category_wm8994_analog_path">類比路徑設定</string>
+ <string name="category_wm8994_mic_settings">麥克風設定</string>
+ <string name="category_wm8994_microphone_recording">麥克風</string>
+
+ <string name="wm8994_settings_title_head">聲音設定</string>
+ <string name="wm8994_settings_title_subhead">聲音設定</string>
+ <string name="wm8994_settings_summary_head">WM8994 聲音處理器進階管理</string>
+ <string name="pref_wm8994_microphone_recording_title">錄音設置</string>
+ <string name="pref_wm8994_headphone_amp_title">擴音器水平</string>
+ <string name="pref_wm8994_headphone_amp_summary">自訂類比增益</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">有線耳機擴音器水平</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">類比增益</string>
+ <string name="pref_wm8994_bass_boost_enable_title">低音強化</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">低音強化進階管理</string>
+ <string name="pref_wm8994_bass_boost_title">低音強化範圍</string>
+ <string name="pref_wm8994_bass_boost_summary">進階動態範圍管理</string>
+ <string name="pref_wm8994_bass_boost_preset_title">低音強化設置</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">低音強化</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">增益</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">低音強化範圍</string>
+ <string name="pref_wm8994_control_enable_title">啟用 WM8994 控制</string>
+ <string name="pref_wm8994_control_enable_summary">啟用 WM8994 聲音處理器進階管理</string>
+ <string name="pref_wm8994_speaker_tuning_title">音樂調整</string>
+ <string name="pref_wm8994_speaker_tuning_summary">為更低音和平衡的聲音重新設置硬體 EQ</string>
+ <string name="pref_wm8994_mono_downmix_title">單聲道縮混(Downmix)</string>
+ <string name="pref_wm8994_mono_downmix_summary">把立體聲縮混(Downmix)為單聲道(使用於立體聲輸出,例如有線耳機)</string>
+ <string name="pref_wm8994_stereo_expansion_title">立體聲擴展</string>
+ <string name="pref_wm8994_stereo_expansion_summary">透過數位訊號處理 \'擴展\' 立體聲</string>
+ <string name="pref_wm8994_dac_direct_title">直接數字/類比轉換</string>
+ <string name="pref_wm8994_dac_direct_summary">繞過頻道混音器(Channel Mixer),直接存取數字/類比轉換器(DAC),去產生更清澈的聲音(較高訊號噪聲比)</string>
+ <string name="pref_wm8994_dac_osr128_title">Hi-fi 回放</string>
+ <string name="pref_wm8994_dac_osr128_summary">數字/類比轉換器(DAC) 128倍 超取樣(Oversampling) — 使播放音樂時擁有更清澈的聲音</string>
+ <string name="pref_wm8994_adc_osr128_title">Hi-fi 錄音</string>
+ <string name="pref_wm8994_adc_osr128_summary">類比/數字轉換器(ADC) 128倍 超取樣(Oversampling) — 提高錄音品質</string>
+ <string name="pref_wm8994_fll_tuning_title">調整音訊時脈</string>
+ <string name="pref_wm8994_fll_tuning_summary">使用已調整的音訊時脈源 — 改善聲音品質</string>
+
+ <string name="help_title">說明</string>
+ <string name="help_text"><b>什麼是DSP 總管?</b>
+\n\n
+DSP 總管是一個進行音訊調整的應用程式。 <i>DSP</i> 是
+\'Digital Signal Processing\',或數位訊號處理的縮寫,同時 <i>總管</i> 部分代表事實上 DSP 並不是於此應用程式內運行,此總管只與符合 Android 的音訊效果規格的應用程式(例如大部分音樂播放器)上啟用。
+\n\n\n
+<b>原理</b>
+\n\n
+CyanogenMod 的音訊處理支持四種輸出類別:
+有線耳機,USB音訊,手機喇叭和藍牙耳機。每個輸出類別分別有一個
+設定面板。DSP 總管\ 的原理是修正每個輸出類別擁有的缺陷,以帶來最好的聆聽體驗。
+\n\n
+不同於 AOSP 音訊效果,這裡沒有單獨應用程式設定。這是一個別出心裁的設計:我們僅關心於音訊輸出,而不是於和 DSP 總管共同運行的應用程式上。
+\n\n\n
+<b>功能</b>
+\n\n
+1. <b>動態範圍壓縮(DRC)</b>
+\n\n
+此效果將計量聆聽者所感覺到的音訊響度並基於此估計進行一個增益控制。此功能的主要案例是用於吵鬧的環境下,當音樂安靜的部分被背景聲音所淹沒的情況。
+\n\n
+唯一可調訊號會判斷 DSP 總管應保持的音樂響度,以作維持音訊於設定的水平。此 DSP 的效果與 AOSP 的沒有重疊。
+\n\n\n
+2. <b>低音強化</b>
+\n\n
+低音強化是一個簡單的低通濾波器(Lowpass Filter),用於增強在55赫茲或更低的頻率。低音增強於6分貝左右,並可以使用
+\'強度\' 參數進行調整。同時間也會在55赫茲頻帶加入濾波器諧振(Resonance),使此頻率被特別增強。此效果用於彌補使用小型喇叭或貼耳式耳機普遍
+帶來的低音損失。
+\n\n\n
+3. <b>等化器</b>
+\n\n
+這是一個6頻率等化器,擁有16,64,250,1000,4000,和16000赫茲的頻率可供調整。等化器已經提供一些常用預置,同時間您可以透過等化器的圖表自訂頻率響應(frequency Response)。這可以讓使用者按自己的喜好或可用耳機/喇叭的能力調整頻率響應。
+\n\n
+等化器也包括一個響度補償過濾器(Loudness Compensation Filter),它會根據進入使用者耳朵的聲壓(Sound Pressure)對頻率響應進行等化。此效果需要您使用有線耳機並對強度參數進行正確調整才能夠達到最佳效果。
+\n\n
+在選擇響度補償強度值時, 先使用最安靜的音樂音量, 然後選擇一些寬波譜與嘈雜的音樂 (例如搖滾樂或重金屬音樂)。 嘗試選擇一個能將低音強化到與剩下的音訊達到平衡的設定。 補償設定被正確調整後, 低音應該停留於一個與所有其他類型音樂的音量等級一致的水平上。 如果在較高音量的音樂上發現低音過重, 補償設定估計過強,則需要被降低。
+\n\n
+補償是通過使用者選擇的調整而加入。 如果您只需要補償的話, 等化器選擇應該設為 \'平淡\'。
+\n\n\n
+4. <b>耳機過濾器(Headset Filter)</b>
+\n\n
+耳機過濾器(Headset Filter)是由著名的 bs2b 類比電路得到啟發的交輸設計。 此效果不改變通過的單聲道, 而把有差異的信號通過一個能夠計量聲影(Head Shadow)與兩耳間延遲的低通濾波器(Lowpass Filter)進行調整。 這將帶來正確的心理聲學暗示, 達到防止立體聲分離而導致聽覺疲勞的功效。 此效果應適用於使用啟用立體聲耳機時。
+\n\n
+因為混音可以減少立體聲分離,所以同時也會導致 Haas 效應迴響。我們可以通過此效應而增加立體聲聲象。此效應可以通過 \'房間種類\' 控制。</string>
+
+</resources>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
new file mode 100644
index 0000000..27f57e8
--- /dev/null
+++ b/res/values/arrays.xml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2010-2014 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="microphone_recording_presets">
+ <item>Original</item>
+ <item>Balanced</item>
+ <item>High Sensitivity</item>
+ <item>Loud Environment</item>
+ </string-array>
+
+ <string-array name="microphone_recording_presets_values" translatable="false">
+ <item>0</item>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ </string-array>
+
+ <string-array name="headphone_modes">
+ <item>Studio</item>
+ <item>Room</item>
+ <item>Large room</item>
+ <item>Stage</item>
+ </string-array>
+
+ <string-array name="headphone_modes_values" translatable="false">
+ <item>0</item>
+ <item>333</item>
+ <item>666</item>
+ <item>1000</item>
+ </string-array>
+
+ <string-array name="equalizer_preset_modes" translatable="false">
+ <item>@string/eq_preset_acoustic</item>
+ <item>@string/eq_preset_bass_booster</item>
+ <item>@string/eq_preset_bass_reducer</item>
+ <item>@string/eq_preset_classical</item>
+ <item>@string/eq_preset_deep</item>
+ <item>@string/eq_preset_flat</item>
+ <item>@string/eq_preset_r_and_b</item>
+ <item>@string/eq_preset_rock</item>
+ <item>@string/eq_preset_small_speakers</item>
+ <item>@string/eq_preset_treble_booster</item>
+ <item>@string/eq_preset_treble_reducer</item>
+ <item>@string/eq_preset_vocal_booster</item>
+ <item>@string/eq_preset_custom</item>
+ </string-array>
+
+ <string-array name="equalizer_preset_values" translatable="false">
+ <item>4.5;4.5;3.5;1.75;3.5;2.5;</item> <!-- Acoustic -->
+ <item>6.5;6.5;4.0;0.0;0.0;0.0;</item> <!-- Bass Booster -->
+ <item>-6.5;-6.5;-4.0;0.0;0.0;0.0;</item> <!-- Bass Reducer -->
+ <item>4.0;4.0;3.25;-0.5;2.0;3.5;</item> <!-- Classical -->
+ <item>4.0;4.0;0.5;1.5;-4.0;-4.5;</item> <!-- Deep -->
+ <item>0.0;0.0;0.0;0.0;0.0;0.0;</item> <!-- Flat -->
+ <item>5.5;5.5;3.5;-1.75;1.5;2.5;</item> <!-- R&B -->
+ <item>4.5;4.5;2.75;-0.5;2.75;4.0;</item> <!-- Rock -->
+ <item>6.5;6.5;4.0;0.0;-6.5;-4.0;</item> <!-- Small Speakers -->
+ <item>0.0;0.0;0.0;0.0;4.0;6.5;</item> <!-- Treble Booster -->
+ <item>0.0;0.0;0.0;0.0;-6.5;-4.0;</item> <!-- Treble Reducer -->
+ <item>-2.5;-2.5;0.0;3.5;1.5;-2.0;</item> <!-- Vocal Booster -->
+ <item>custom</item> <!-- Custom -->
+ </string-array>
+
+ <string-array name="equalizer_loudness_modes">
+ <item>Disabled</item>
+ <item>Weakest</item>
+ <item>Weaker</item>
+ <item>Weak</item>
+ <item>Strong</item>
+ <item>Stronger</item>
+ <item>Strongest</item>
+ </string-array>
+
+ <string-array name="equalizer_loudness_values" translatable="false">
+ <item>10000</item>
+ <item>5000</item>
+ <item>4500</item>
+ <item>4000</item>
+ <item>3500</item>
+ <item>3000</item>
+ <item>2500</item>
+ </string-array>
+
+ <string-array name="compression_modes">
+ <item>Slight</item>
+ <item>Moderate</item>
+ <item>Extreme</item>
+ </string-array>
+
+ <string-array name="compression_modes_values" translatable="false">
+ <item>50</item>
+ <item>100</item>
+ <item>300</item>
+ </string-array>
+
+ <string-array name="bassboost_modes">
+ <item>Slight</item>
+ <item>Moderate</item>
+ <item>Extreme</item>
+ </string-array>
+
+ <string-array name="bassboost_modes_values" translatable="false">
+ <item>0</item>
+ <item>500</item>
+ <item>1000</item>
+ </string-array>
+
+ <string-array name="wm8994_bassboost_modes">
+ <item>Standard</item>
+ <item>Small Speakers</item>
+ </string-array>
+
+ <string-array name="wm8994_bassboost_modes_values" translatable="false">
+ <item>0</item>
+ <item>-1</item>
+ </string-array>
+</resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
new file mode 100644
index 0000000..335b437
--- /dev/null
+++ b/res/values/colors.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <color name="white">#ffffffff</color>
+ <color name="off_white">#ffdedede</color>
+ <color name="black">#ff000000</color>
+ <color name="grid_lines">#22ffffff</color>
+ <color name="cb">#88bbffff</color>
+ <color name="freq_hl">#2000ddff</color>
+ <color name="freq_hl2">#4033b5e5</color>
+ <color name="eq_red">#80ff0000</color>
+ <color name="eq_yellow">#80f0ff00</color>
+ <color name="eq_holo_bright">#8000ddff</color>
+ <color name="eq_holo_blue">#8033b5e5</color>
+ <color name="eq_holo_dark">#800099cc</color>
+ <color name="cb_shader">#ffccffff</color>
+ <color name="cb_shader_alpha">#44ccffff</color>
+ <color name="action_bar_color">#ff0d0d0d</color>
+</resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
new file mode 100644
index 0000000..4c5c3ea
--- /dev/null
+++ b/res/values/dimens.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <dimen name="bar_width">7dp</dimen>
+</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
new file mode 100644
index 0000000..cdc2dce
--- /dev/null
+++ b/res/values/strings.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2010-2014 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <string name="app_name">DSP Manager</string>
+ <string name="select_configuration_title">Select configuration to edit</string>
+ <string name="headset_title">Headset</string>
+ <string name="speaker_title">Speaker</string>
+ <string name="bluetooth_title">Bluetooth</string>
+ <string name="usb_title">USB/Dock</string>
+ <string name="wm8994_title" translatable="false">WM8994</string>
+ <string name="audio_effects">Audio effects</string>
+ <string name="pref_unavailable">Functionality is not available on your device</string>
+ <string name="dsp_settings_headset">DSP settings - Headset</string>
+ <string name="dsp_settings_speaker">DSP settings - Phone speaker</string>
+ <string name="dsp_settings_bluetooth">DSP settings - Bluetooth device</string>
+ <string name="dsp_settings_usb">DSP settings - USB device</string>
+ <string name="dsp_settings_wm8994">DSP settings - WM8994</string>
+ <string name="pref_dsp_title">Dynamic range compression</string>
+ <string name="pref_dsp_summary_on">Compression is enabled</string>
+ <string name="pref_dsp_summary_off">Compression is disabled</string>
+ <string name="pref_dsp_enable">Enable</string>
+ <string name="pref_effect_title">Select effect strength</string>
+ <string name="dialog_effect">Effect strength</string>
+ <string name="pref_equalizer_title">Equalizer</string>
+ <string name="pref_equalizer_summary_on">Equalizer is enabled</string>
+ <string name="pref_equalizer_summary_off">Equalizer is disabled</string>
+ <string name="pref_equalizer_enable">Enable</string>
+ <string name="pref_equalizer_preset_title">Select preset</string>
+ <string name="pref_equalizer_loudness_title">Loudness compensation</string>
+ <string name="pref_bassboost_title">Bass boost</string>
+ <string name="pref_bassboost_summary_on">Bass boost is enabled</string>
+ <string name="pref_bassboost_summary_off">Bass boost is disabled</string>
+ <string name="pref_bassboost_enable">Enable</string>
+ <string name="pref_headset_virtual_title">Headset Virtual Room Effect</string>
+ <string name="pref_headset_virtual_summary_on">Headset virtual room is enabled</string>
+ <string name="pref_headset_virtual_summary_off">Headset virtual room is disabled</string>
+ <string name="pref_headset_virtual_enable">Enable</string>
+ <string name="pref_room_title">Select room type</string>
+ <string name="dialog_room">Room type</string>
+ <string name="menu_reset">Reset</string>
+
+ <string name="eq_preset_acoustic">Acoustic</string>
+ <string name="eq_preset_bass_booster">Bass booster</string>
+ <string name="eq_preset_bass_reducer">Bass reducer</string>
+ <string name="eq_preset_classical">Classical</string>
+ <string name="eq_preset_deep">Deep</string>
+ <string name="eq_preset_flat">Flat</string>
+ <string name="eq_preset_r_and_b">R\u0026B</string>
+ <string name="eq_preset_rock">Rock</string>
+ <string name="eq_preset_small_speakers">Small speakers</string>
+ <string name="eq_preset_treble_booster">Treble booster</string>
+ <string name="eq_preset_treble_reducer">Treble reducer</string>
+ <string name="eq_preset_vocal_booster">Vocal booster</string>
+ <string name="eq_preset_custom">Custom</string>
+
+ <!-- WM8994 -->
+ <!-- Categories -->
+ <string name="category_wm8994_internal_speaker">Speaker</string>
+ <string name="category_wm8994_signal_processing">Signal processing</string>
+ <string name="category_wm8994_headphone_amp">Headset</string>
+ <string name="category_wm8994_codec_optimization">Codec optimization</string>
+ <string name="category_wm8994_dac_config">Digital/Analog converter settings</string>
+ <string name="category_wm8994_analog_path">Analog path configuration</string>
+ <string name="category_wm8994_mic_settings">Microphone settings</string>
+ <string name="category_wm8994_microphone_recording">Microphone</string>
+
+ <!-- Titles/Summaries -->
+ <string name="wm8994_settings_title_head">Sound settings</string>
+ <string name="wm8994_settings_title_subhead">Sound settings</string>
+ <string name="wm8994_settings_summary_head">Advanced control of the WM8994 sound processor</string>
+ <string name="pref_wm8994_microphone_recording_title">Recording preset</string>
+ <string name="pref_wm8994_headphone_amp_title">Amplifier level</string>
+ <string name="pref_wm8994_headphone_amp_summary">Customize the analog gain</string>
+ <string name="pref_wm8994_headphone_amp_dlg_title">Headset amplifier level</string>
+ <string name="pref_wm8994_headphone_amp_dlg_desc">Analog gain</string>
+ <string name="pref_wm8994_bass_boost_enable_title">Bass boost</string>
+ <string name="pref_wm8994_bass_boost_enable_summary">Advanced controls for bass boost</string>
+ <string name="pref_wm8994_bass_boost_title">Bass boost range</string>
+ <string name="pref_wm8994_bass_boost_summary">Advanced dynamic range management</string>
+ <string name="pref_wm8994_bass_boost_preset_title">Bass boost preset</string>
+ <string name="pref_wm8994_bass_boost_dlg_title">Bass boost</string>
+ <string name="pref_wm8994_bass_boost_gain_dlg_desc">Gain</string>
+ <string name="pref_wm8994_bass_boost_range_dlg_desc">Bass boost range</string>
+ <string name="pref_wm8994_control_enable_title">Enable WM8994 Control</string>
+ <string name="pref_wm8994_control_enable_summary">Advanced controls for the WM8994 sound processor</string>
+ <string name="pref_wm8994_speaker_tuning_title">Tune for music</string>
+ <string name="pref_wm8994_speaker_tuning_summary">Reconfigures the hardware EQ for more bass and balanced sound</string>
+ <string name="pref_wm8994_mono_downmix_title">Mono downmix</string>
+ <string name="pref_wm8994_mono_downmix_summary">Downmix stereo sound to mono (for stereo outputs, such as headphones)</string>
+ <string name="pref_wm8994_stereo_expansion_title">Stereo expansion</string>
+ <string name="pref_wm8994_stereo_expansion_summary">\'Expand\' stereo sound via digital signal processing</string>
+ <string name="pref_wm8994_dac_direct_title">D/AC direct</string>
+ <string name="pref_wm8994_dac_direct_summary">Access digital/analog converter directly, bypassing the channel mixer. Produces cleaner audio (higher signal-to-noise ratio)</string>
+ <string name="pref_wm8994_dac_osr128_title">Hi-fi playback</string>
+ <string name="pref_wm8994_dac_osr128_summary">Digital-to-analog converter 128x oversampling \u2014 cleaner sound when playing music</string>
+ <string name="pref_wm8994_adc_osr128_title">Hi-fi recording</string>
+ <string name="pref_wm8994_adc_osr128_summary">Analog-to-digital converter 128x oversampling \u2014 increases quality of recordings</string>
+ <string name="pref_wm8994_fll_tuning_title">Tuned audio clock</string>
+ <string name="pref_wm8994_fll_tuning_summary">Use tuned WM8994 audio clock source \u2014 improves quality of sound</string>
+
+ <string name="help_title">Help</string>
+ <string name="help_text"><b>What is DSP Manager?</b>\n\nDSP Manager is a per-output audio adjustment app. <i>DSP</i> stands for Digital signal processing, and the <i>Manager</i> part refers to the fact that the DSP is actually not run inside the app itself; the manager can only enable it for apps which are compliant with Android\u2018s audio effect specification, i.e. most music players.\n\n\n<b>Philosophy</b>\n\nCyanogenMod\u2018s audio processing supports four different output categories: wired headset, USB audio, phone speaker and bluetooth headset. There is a separate configuration panel for each output category. DSP Manager\u2018s philosophy is to correct each audio output\u2018s particular deficiencies in order to reach the most optimal listening experience with each.\n\nUnlike with AOSP audio effects, there are no per-app settings. This is a deliberate design choice: it is the output we care about, not which app generates the audio for DSP Manager to work with.\n\n\n<b>Features</b>\n\n1. <b>Dynamic range compression (DRC)</b>\n\nThis effect estimates the loudness of the audio as perceived by an average listener and drives a gain control based on this estimate. The primary use case is with noisy environments such as in cars or on street, where quiet parts of music are in risk of being drowned out by background noise.\n\nThe sole tunable determines how hard DSP Manager will try to maintain audio loudness at the target level. There is no AOSP equivalent for this DSP effect.\n\n\n2. <b>Bass boost</b>\n\nThe bass boost is a simple lowpass filter which can be used to add an emphasis at 55 Hz and lower frequencies. The boost is around 6 dB, and modified by the \u2018strength\u2019 parameter, which adds filter resonance at the 55 Hz band, giving that frequency extra emphasis. The effect is designed to combat loss of bass frequency common with small speakers and supra-aural headsets which do not couple tightly with user\u2018s ear canal.\n\n\n3. <b>Equalizer</b>\n\nThis is a 6-band equalizer with bands at 16, 64, 250, 1000, 4000 and 16000 Hz. Some common presets are provided, and the frequency response can also be customized by tapping on the equalizer graph. The effect should be used to tune the frequency response to user\u2018s personal taste, or to the particular capabilities of the available headset or speakers.\n\n Equalizer also contains a loudness compensation filter, which equalizes the changes in ear frequency response based on the sound pressure level which reaches the user\u2018s ear. Use of a wired headset is required, and the strength parameter value must be tuned correctly before the effect will work as designed.\n\nTo select the right value for the compensation strength, use the quietest music volume, and choose some wide-spectrum noisy music such as rock or metal. Try to find a setting where the bass is boosted back into audibility and seems balanced with the rest of the material. After the compensation has been correctly configured, bass should remain at the same level relative to the other instruments regardless of the listening level. On the other hand, if music starts to sound bass heavy at higher listening levels, the compensation is probably set too strong, and should be reduced.\n\nThe compensation is added to the user\u2018s chosen adjustments. If only compensation is desired, the equalizer should be left in the \u2018Flat\u2019 setting.\n\n\n4. <b>Headset Filter</b>\n\nThe headset filter is a crossfeed design inspired by the famous bs2b analog circuit. The effect passes mono sound unchanged, and adjusts the difference signal through a lowpass filter which approximates both head shadow and interaural delay at once, giving right kind of psychoacoustic clues for user\u2018s ears. The intention is to prevent listener fatigue arising from the implausible stereo separation inherent with all headsets. The effect should be enabled whenever using stereo headsets.\n\nBecause the mixing reduces the stereo separation somewhat, there is a Haas effect reverb, which can be used to increase the perceived stereo image width. This is controlled by the \u2018Room type\u2019 control.</string>
+</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
new file mode 100644
index 0000000..17bab44
--- /dev/null
+++ b/res/values/styles.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <style name="action_bar_style" parent="android:Widget.ActionBar">
+ <item name="android:background">@color/action_bar_color</item>
+ </style>
+</resources>
diff --git a/res/values/themes.xml b/res/values/themes.xml
new file mode 100644
index 0000000..7ea0570
--- /dev/null
+++ b/res/values/themes.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012-2013 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <style name="AppTheme" parent="android:Theme.Holo">
+ <item name="android:actionBarStyle">@style/action_bar_style</item>
+ </style>
+</resources>
+
diff --git a/res/xml/bluetooth_preferences.xml b/res/xml/bluetooth_preferences.xml
new file mode 100644
index 0000000..b5a966d
--- /dev/null
+++ b/res/xml/bluetooth_preferences.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <PreferenceCategory
+ android:title="@string/pref_dsp_title">
+
+ <CheckBoxPreference
+ android:key="dsp.compression.enable"
+ android:summaryOn="@string/pref_dsp_summary_on"
+ android:summaryOff="@string/pref_dsp_summary_off"
+ android:disableDependentsState="false"
+ android:title="@string/pref_dsp_enable" />
+
+ <com.bel.android.dspmanager.preference.SummariedListPreference
+ android:key="0"
+ android:dialogTitle="@string/dialog_effect"
+ android:entries="@array/compression_modes"
+ android:defaultValue="50"
+ android:title="@string/pref_effect_title"
+ android:entryValues="@array/compression_modes_values" />
+
+ </PreferenceCategory>
+
+ <PreferenceCategory
+ android:title="@string/pref_bassboost_title">
+
+ <CheckBoxPreference
+ android:key="dsp.bass.enable"
+ android:summaryOn="@string/pref_bassboost_summary_on"
+ android:summaryOff="@string/pref_bassboost_summary_off"
+ android:disableDependentsState="false"
+ android:title="@string/pref_bassboost_enable" />
+
+ <com.bel.android.dspmanager.preference.SummariedListPreference
+ android:key="dsp.bass.mode"
+ android:entries="@array/bassboost_modes"
+ android:dialogTitle="@string/dialog_effect"
+ android:defaultValue="0"
+ android:title="@string/pref_effect_title"
+ android:entryValues="@array/bassboost_modes_values"/>
+
+ </PreferenceCategory>
+
+ <PreferenceCategory
+ android:title="@string/pref_equalizer_title">
+
+ <CheckBoxPreference
+ android:key="dsp.tone.enable"
+ android:summaryOn="@string/pref_equalizer_summary_on"
+ android:summaryOff="@string/pref_equalizer_summary_off"
+ android:disableDependentsState="false"
+ android:title="@string/pref_equalizer_enable" />
+
+ <com.bel.android.dspmanager.preference.SummariedListPreference
+ android:key="dsp.tone.eq"
+ android:entries="@array/equalizer_preset_modes"
+ android:dialogTitle="@string/pref_equalizer_preset_title"
+ android:defaultValue="0.0;0.0;0.0;0.0;0.0;"
+ android:title="@string/pref_equalizer_preset_title"
+ android:entryValues="@array/equalizer_preset_values"/>
+
+ <com.bel.android.dspmanager.preference.EqualizerPreference
+ android:key="dsp.tone.eq.custom" />
+
+ <com.bel.android.dspmanager.preference.SummariedListPreference
+ android:key="dsp.tone.loudness"
+ android:entries="@array/equalizer_loudness_modes"
+ android:dialogTitle="@string/pref_equalizer_loudness_title"
+ android:defaultValue="10000"
+ android:title="@string/pref_equalizer_loudness_title"
+ android:entryValues="@array/equalizer_loudness_values"/>
+
+ </PreferenceCategory>
+
+ <PreferenceCategory
+ android:title="@string/pref_headset_virtual_title">
+
+ <CheckBoxPreference
+ android:key="dsp.headphone.enable"
+ android:summaryOn="@string/pref_headset_virtual_summary_on"
+ android:summaryOff="@string/pref_headset_virtual_summary_off"
+ android:disableDependentsState="false"
+ android:title="@string/pref_headset_virtual_enable" />
+
+ <com.bel.android.dspmanager.preference.SummariedListPreference
+ android:key="dsp.headphone.mode"
+ android:dialogTitle="@string/dialog_room"
+ android:entryValues="@array/headphone_modes_values"
+ android:title="@string/pref_room_title"
+ android:defaultValue="0"
+ android:entries="@array/headphone_modes" />
+
+ </PreferenceCategory>
+
+</PreferenceScreen>
diff --git a/res/xml/headset_preferences.xml b/res/xml/headset_preferences.xml
new file mode 100644
index 0000000..c7a654c
--- /dev/null
+++ b/res/xml/headset_preferences.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <PreferenceCategory
+ android:title="@string/pref_dsp_title">
+
+ <CheckBoxPreference
+ android:key="dsp.compression.enable"
+ android:summaryOn="@string/pref_dsp_summary_on"
+ android:summaryOff="@string/pref_dsp_summary_off"
+ android:disableDependentsState="false"
+ android:title="@string/pref_dsp_enable" />
+
+ <com.bel.android.dspmanager.preference.SummariedListPreference
+ android:key="dsp.compression.mode"
+ android:entries="@array/compression_modes"
+ android:dialogTitle="@string/dialog_effect"
+ android:defaultValue="50"
+ android:title="@string/pref_effect_title"
+ android:entryValues="@array/compression_modes_values"/>
+
+ </PreferenceCategory>
+
+ <PreferenceCategory
+ android:title="@string/pref_bassboost_title">
+
+ <CheckBoxPreference
+ android:key="dsp.bass.enable"
+ android:summaryOn="@string/pref_bassboost_summary_on"
+ android:summaryOff="@string/pref_bassboost_summary_off"
+ android:disableDependentsState="false"
+ android:title="@string/pref_bassboost_enable" />
+
+ <com.bel.android.dspmanager.preference.SummariedListPreference
+ android:key="dsp.bass.mode"
+ android:entries="@array/bassboost_modes"
+ android:dialogTitle="@string/dialog_effect"
+ android:defaultValue="0"
+ android:title="@string/pref_effect_title"
+ android:entryValues="@array/bassboost_modes_values" />
+ </PreferenceCategory>
+
+ <PreferenceCategory
+ android:title="@string/pref_equalizer_title">
+
+ <CheckBoxPreference
+ android:key="dsp.tone.enable"
+ android:summaryOn="@string/pref_equalizer_summary_on"
+ android:summaryOff="@string/pref_equalizer_summary_off"
+ android:disableDependentsState="false"
+ android:title="@string/pref_equalizer_enable" />
+
+ <com.bel.android.dspmanager.preference.SummariedListPreference
+ android:key="dsp.tone.eq"
+ android:entries="@array/equalizer_preset_modes"
+ android:dialogTitle="@string/pref_equalizer_preset_title"
+ android:defaultValue="0.0;0.0;0.0;0.0;0.0;"
+ android:title="@string/pref_equalizer_preset_title"
+ android:entryValues="@array/equalizer_preset_values" />
+
+ <com.bel.android.dspmanager.preference.EqualizerPreference
+ android:key="dsp.tone.eq.custom" />
+
+ <com.bel.android.dspmanager.preference.SummariedListPreference
+ android:key="dsp.tone.loudness"
+ android:entries="@array/equalizer_loudness_modes"
+ android:dialogTitle="@string/pref_equalizer_loudness_title"
+ android:defaultValue="10000"
+ android:title="@string/pref_equalizer_loudness_title"
+ android:entryValues="@array/equalizer_loudness_values"/>
+
+ </PreferenceCategory>
+
+ <PreferenceCategory
+ android:title="@string/pref_headset_virtual_title">
+
+ <CheckBoxPreference
+ android:key="dsp.headphone.enable"
+ android:summaryOn="@string/pref_headset_virtual_summary_on"
+ android:summaryOff="@string/pref_headset_virtual_summary_off"
+ android:disableDependentsState="false"
+ android:title="@string/pref_headset_virtual_enable" />
+
+ <com.bel.android.dspmanager.preference.SummariedListPreference
+ android:key="dsp.headphone.mode"
+ android:defaultValue="0"
+ android:dialogTitle="@string/dialog_room"
+ android:entries="@array/headphone_modes"
+ android:entryValues="@array/headphone_modes_values"
+ android:title="@string/pref_room_title" />
+
+ </PreferenceCategory>
+
+</PreferenceScreen>
diff --git a/res/xml/speaker_preferences.xml b/res/xml/speaker_preferences.xml
new file mode 100644
index 0000000..6a63cf2
--- /dev/null
+++ b/res/xml/speaker_preferences.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <PreferenceCategory
+ android:title="@string/pref_bassboost_title">
+
+ <CheckBoxPreference
+ android:key="dsp.bass.enable"
+ android:disableDependentsState="false"
+ android:summaryOn="@string/pref_bassboost_summary_on"
+ android:summaryOff="@string/pref_bassboost_summary_off"
+ android:title="@string/pref_bassboost_enable" />
+
+ <com.bel.android.dspmanager.preference.SummariedListPreference
+ android:key="dsp.bass.mode"
+ android:entries="@array/bassboost_modes"
+ android:dialogTitle="@string/dialog_effect"
+ android:defaultValue="0"
+ android:title="@string/pref_effect_title"
+ android:entryValues="@array/bassboost_modes_values" />
+
+ </PreferenceCategory>
+
+ <PreferenceCategory
+ android:title="@string/pref_equalizer_title">
+
+ <CheckBoxPreference
+ android:key="dsp.tone.enable"
+ android:disableDependentsState="false"
+ android:summaryOn="@string/pref_equalizer_summary_on"
+ android:summaryOff="@string/pref_equalizer_summary_off"
+ android:title="@string/pref_equalizer_enable" />
+
+ <com.bel.android.dspmanager.preference.SummariedListPreference
+ android:key="dsp.tone.eq"
+ android:entries="@array/equalizer_preset_modes"
+ android:dialogTitle="@string/pref_equalizer_preset_title"
+ android:defaultValue="0.0;0.0;0.0;0.0;0.0;"
+ android:title="@string/pref_equalizer_preset_title"
+ android:entryValues="@array/equalizer_preset_values" />
+
+ <com.bel.android.dspmanager.preference.EqualizerPreference
+ android:key="dsp.tone.eq.custom" />
+
+ </PreferenceCategory>
+
+</PreferenceScreen>
diff --git a/res/xml/usb_preferences.xml b/res/xml/usb_preferences.xml
new file mode 100644
index 0000000..b2c72c8
--- /dev/null
+++ b/res/xml/usb_preferences.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <PreferenceCategory
+ android:title="@string/pref_dsp_title">
+
+ <CheckBoxPreference
+ android:key="dsp.compression.enable"
+ android:summaryOn="@string/pref_dsp_summary_on"
+ android:summaryOff="@string/pref_dsp_summary_off"
+ android:disableDependentsState="false"
+ android:title="@string/pref_dsp_enable" />
+
+ <com.bel.android.dspmanager.preference.SummariedListPreference
+ android:key="0"
+ android:dialogTitle="@string/dialog_effect"
+ android:entries="@array/compression_modes"
+ android:defaultValue="50"
+ android:title="@string/pref_effect_title"
+ android:entryValues="@array/compression_modes_values" />
+
+ </PreferenceCategory>
+
+ <PreferenceCategory
+ android:title="@string/pref_bassboost_title">
+
+ <CheckBoxPreference
+ android:key="dsp.bass.enable"
+ android:disableDependentsState="false"
+ android:summaryOn="@string/pref_bassboost_summary_on"
+ android:summaryOff="@string/pref_bassboost_summary_off"
+ android:title="@string/pref_bassboost_enable" />
+
+ <com.bel.android.dspmanager.preference.SummariedListPreference
+ android:key="dsp.bass.mode"
+ android:entries="@array/bassboost_modes"
+ android:dialogTitle="@string/dialog_effect"
+ android:defaultValue="0"
+ android:title="@string/pref_effect_title"
+ android:entryValues="@array/bassboost_modes_values" />
+
+ </PreferenceCategory>
+
+ <PreferenceCategory
+ android:title="@string/pref_equalizer_title">
+
+ <CheckBoxPreference
+ android:key="dsp.tone.enable"
+ android:disableDependentsState="false"
+ android:summaryOn="@string/pref_equalizer_summary_on"
+ android:summaryOff="@string/pref_equalizer_summary_off"
+ android:title="@string/pref_equalizer_enable" />
+
+ <com.bel.android.dspmanager.preference.SummariedListPreference
+ android:key="dsp.tone.eq"
+ android:entries="@array/equalizer_preset_modes"
+ android:dialogTitle="@string/pref_equalizer_preset_title"
+ android:defaultValue="0.0;0.0;0.0;0.0;0.0;"
+ android:title="@string/pref_equalizer_preset_title"
+ android:entryValues="@array/equalizer_preset_values" />
+
+ <com.bel.android.dspmanager.preference.EqualizerPreference
+ android:key="dsp.tone.eq.custom" />
+
+ <com.bel.android.dspmanager.preference.SummariedListPreference
+ android:key="dsp.tone.loudness"
+ android:entries="@array/equalizer_loudness_modes"
+ android:dialogTitle="@string/pref_equalizer_loudness_title"
+ android:defaultValue="10000"
+ android:title="@string/pref_equalizer_loudness_title"
+ android:entryValues="@array/equalizer_loudness_values" />
+
+ </PreferenceCategory>
+
+ <PreferenceCategory
+ android:title="@string/pref_headset_virtual_title">
+
+ <CheckBoxPreference
+ android:key="dsp.headphone.enable"
+ android:disableDependentsState="false"
+ android:summaryOn="@string/pref_headset_virtual_summary_on"
+ android:summaryOff="@string/pref_headset_virtual_summary_off"
+ android:title="@string/pref_headset_virtual_enable" />
+
+ <com.bel.android.dspmanager.preference.SummariedListPreference
+ android:key="dsp.headphone.mode"
+ android:dialogTitle="@string/dialog_room"
+ android:entryValues="@array/headphone_modes_values"
+ android:title="@string/pref_room_title"
+ android:defaultValue="0"
+ android:entries="@array/headphone_modes" />
+
+ </PreferenceCategory>
+
+</PreferenceScreen>
diff --git a/res/xml/wm8994_preferences.xml b/res/xml/wm8994_preferences.xml
new file mode 100644
index 0000000..463a59f
--- /dev/null
+++ b/res/xml/wm8994_preferences.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <!-- Speaker options -->
+ <PreferenceCategory
+ android:key="wm8994_internal_speaker_category"
+ android:title="@string/category_wm8994_internal_speaker">
+
+ <CheckBoxPreference
+ android:key="pref_wm8994_speaker_tuning"
+ android:title="@string/pref_wm8994_speaker_tuning_title"
+ android:summary="@string/pref_wm8994_speaker_tuning_summary" />
+
+ </PreferenceCategory>
+
+ <!-- Headset options -->
+ <PreferenceCategory
+ android:key="wm8994_headphone_amp_category"
+ android:title="@string/category_wm8994_headphone_amp">
+
+ <com.bel.android.dspmanager.preference.HeadsetAmplifierPreference
+ android:key="headphone_amp"
+ android:title="@string/pref_wm8994_headphone_amp_title"
+ android:summary="@string/pref_wm8994_headphone_amp_summary"
+ android:dialogTitle="@string/pref_wm8994_headphone_amp_dlg_title" />
+
+ </PreferenceCategory>
+
+ <!-- Microphone recording options -->
+ <PreferenceCategory
+ android:key="wm8994_microphone_recording_category"
+ android:title="@string/category_wm8994_microphone_recording">
+
+ <com.bel.android.dspmanager.preference.SummariedListPreference
+ android:key="dsp.wm8994.microphone.recording"
+ android:entries="@array/microphone_recording_presets"
+ android:dialogTitle="@string/pref_wm8994_microphone_recording_title"
+ android:defaultValue="0"
+ android:title="@string/pref_wm8994_microphone_recording_title"
+ android:entryValues="@array/microphone_recording_presets_values" />
+
+ </PreferenceCategory>
+
+ <!-- Signal Processing -->
+ <PreferenceCategory
+ android:key="wm8994_signal_processing_category"
+ android:title="@string/category_wm8994_signal_processing">
+
+ <CheckBoxPreference
+ android:key="dsp.wm8994.bassboost.enable"
+ android:title="@string/pref_wm8994_bass_boost_enable_title"
+ android:summary="@string/pref_wm8994_bass_boost_enable_summary" />
+
+ <com.bel.android.dspmanager.preference.SummariedListPreference
+ android:key="dsp.wm8994.bassboost.preset"
+ android:entries="@array/wm8994_bassboost_modes"
+ android:dialogTitle="@string/pref_wm8994_bass_boost_preset_title"
+ android:defaultValue="0"
+ android:title="@string/pref_wm8994_bass_boost_preset_title"
+ android:entryValues="@array/wm8994_bassboost_modes_values" />
+
+ <com.bel.android.dspmanager.preference.BassBoostPreference
+ android:key="dsp.wm8994.bassboost.gainrange"
+ android:title="@string/pref_wm8994_bass_boost_title"
+ android:summary="@string/pref_wm8994_bass_boost_summary"
+ android:dialogTitle="@string/pref_wm8994_bass_boost_title" />
+
+ <CheckBoxPreference
+ android:key="pref_wm8994_mono_downmix"
+ android:title="@string/pref_wm8994_mono_downmix_title"
+ android:summary="@string/pref_wm8994_mono_downmix_summary" />
+
+ <CheckBoxPreference
+ android:key="pref_wm8994_stereo_expansion"
+ android:title="@string/pref_wm8994_stereo_expansion_title"
+ android:summary="@string/pref_wm8994_stereo_expansion_summary" />
+
+ </PreferenceCategory>
+
+ <!-- D/AC, A/DC -->
+ <PreferenceCategory
+ android:key="wm8994_dac_config_category"
+ android:title="@string/category_wm8994_dac_config">
+
+ <CheckBoxPreference android:key="pref_wm8994_dac_direct"
+ android:title="@string/pref_wm8994_dac_direct_title"
+ android:summary="@string/pref_wm8994_dac_direct_summary" />
+
+ <CheckBoxPreference android:key="pref_wm8994_dac_osr128"
+ android:title="@string/pref_wm8994_dac_osr128_title"
+ android:summary="@string/pref_wm8994_dac_osr128_summary" />
+
+ <CheckBoxPreference android:key="pref_wm8994_adc_osr128"
+ android:title="@string/pref_wm8994_adc_osr128_title"
+ android:summary="@string/pref_wm8994_adc_osr128_summary" />
+
+ </PreferenceCategory>
+
+ <!-- Codec settings -->
+ <PreferenceCategory
+ android:key="wm8994_codec_optimization_category"
+ android:title="@string/category_wm8994_codec_optimization">
+
+ <CheckBoxPreference
+ android:key="pref_wm8994_fll_tuning"
+ android:title="@string/pref_wm8994_fll_tuning_title"
+ android:summary="@string/pref_wm8994_fll_tuning_summary" />
+
+ </PreferenceCategory>
+
+</PreferenceScreen>
diff --git a/src/com/bel/android/dspmanager/activity/DSPManager.java b/src/com/bel/android/dspmanager/activity/DSPManager.java
new file mode 100644
index 0000000..11d880d
--- /dev/null
+++ b/src/com/bel/android/dspmanager/activity/DSPManager.java
@@ -0,0 +1,186 @@
+
+package com.bel.android.dspmanager.activity;
+
+import android.app.ActionBar;
+import android.app.DialogFragment;
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.support.v13.app.FragmentPagerAdapter;
+import android.support.v4.app.FragmentActivity;
+import android.support.v4.view.PagerTabStrip;
+import android.support.v4.view.ViewPager;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.bel.android.dspmanager.R;
+import com.bel.android.dspmanager.service.HeadsetService;
+
+import java.util.ArrayList;
+
+/**
+ * Setting utility for CyanogenMod's DSP capabilities. This page is displays the
+ * top-level configurations menu.
+ *
+ * @author alankila@gmail.com
+ */
+public final class DSPManager extends FragmentActivity {
+ public static final String SHARED_PREFERENCES_BASENAME = "com.bel.android.dspmanager";
+ public static final String ACTION_UPDATE_PREFERENCES = "com.bel.android.dspmanager.UPDATE";
+
+ protected MyAdapter pagerAdapter;
+ protected ActionBar actionBar;
+ protected ViewPager viewPager;
+ protected PagerTabStrip pagerTabStrip;
+
+ public static class HelpFragment extends DialogFragment {
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle state) {
+ View v = inflater.inflate(R.layout.help, null);
+ TextView tv = (TextView) v.findViewById(R.id.help);
+ tv.setText(R.string.help_text);
+ return v;
+ }
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.top);
+
+ pagerAdapter = new MyAdapter(getFragmentManager(), this);
+ actionBar = getActionBar();
+ viewPager = (ViewPager) findViewById(R.id.viewPager);
+ pagerTabStrip = (PagerTabStrip) findViewById(R.id.pagerTabStrip);
+
+ Intent serviceIntent = new Intent(this, HeadsetService.class);
+ startService(serviceIntent);
+
+ actionBar.setDisplayShowTitleEnabled(true);
+
+ viewPager.setAdapter(pagerAdapter);
+
+ pagerTabStrip.setDrawFullUnderline(true);
+ pagerTabStrip.setTabIndicatorColor(
+ getResources().getColor(android.R.color.holo_blue_light));
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ ServiceConnection connection = new ServiceConnection() {
+ @Override
+ public void onServiceConnected(ComponentName name, IBinder binder) {
+ HeadsetService service = ((HeadsetService.LocalBinder) binder).getService();
+ String routing = service.getAudioOutputRouting();
+ String[] entries = pagerAdapter.getEntries();
+ for (int i = 0; i < entries.length; i++) {
+ if (routing.equals(entries[i])) {
+ viewPager.setCurrentItem(i);
+ break;
+ }
+ }
+ unbindService(this);
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName name) {
+ }
+ };
+ Intent serviceIntent = new Intent(this, HeadsetService.class);
+ bindService(serviceIntent, connection, 0);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ MenuInflater inflater = getMenuInflater();
+ inflater.inflate(R.menu.menu, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ int choice = item.getItemId();
+ switch (choice) {
+ case R.id.help:
+ DialogFragment df = new HelpFragment();
+ df.setStyle(DialogFragment.STYLE_NO_TITLE, 0);
+ df.show(getFragmentManager(), "help");
+ return true;
+ default:
+ return false;
+ }
+ }
+}
+
+class MyAdapter extends FragmentPagerAdapter {
+ private final ArrayList<String> tmpEntries;
+ private final ArrayList<String> tmpTitles;
+ private final String[] entries;
+ private final String[] titles;
+
+ public MyAdapter(FragmentManager fm, Context context) {
+ super(fm);
+ Resources res = context.getResources();
+ tmpEntries = new ArrayList<String>();
+ tmpEntries.add("headset");
+ tmpEntries.add("speaker");
+ tmpEntries.add("bluetooth");
+ tmpEntries.add("usb");
+
+ tmpTitles = new ArrayList<String>();
+ tmpTitles.add(res.getString(R.string.headset_title).toUpperCase());
+ tmpTitles.add(res.getString(R.string.speaker_title).toUpperCase());
+ tmpTitles.add(res.getString(R.string.bluetooth_title).toUpperCase());
+ tmpTitles.add(res.getString(R.string.usb_title).toUpperCase());
+
+ // Determine if WM8994 is supported
+ if (WM8994.isSupported(context)) {
+ tmpEntries.add(WM8994.NAME);
+ tmpTitles.add(res.getString(R.string.wm8994_title).toUpperCase());
+ }
+
+ entries = (String[]) tmpEntries.toArray(new String[tmpEntries.size()]);
+ titles = (String[]) tmpTitles.toArray(new String[tmpTitles.size()]);
+ }
+
+ @Override
+ public CharSequence getPageTitle(int position) {
+ return titles[position];
+ }
+
+ public String[] getEntries() {
+ return entries;
+ }
+
+ @Override
+ public int getCount() {
+ return entries.length;
+ }
+
+ @Override
+ public Fragment getItem(int position) {
+
+ // Determine if fragment is WM8994
+ if (entries[position].equals(WM8994.NAME)) {
+ return new WM8994();
+ } else {
+ final DSPScreen dspFragment = new DSPScreen();
+ Bundle b = new Bundle();
+ b.putString("config", entries[position]);
+ dspFragment.setArguments(b);
+ return dspFragment;
+ }
+ }
+}
diff --git a/src/com/bel/android/dspmanager/activity/DSPScreen.java b/src/com/bel/android/dspmanager/activity/DSPScreen.java
new file mode 100644
index 0000000..102e2eb
--- /dev/null
+++ b/src/com/bel/android/dspmanager/activity/DSPScreen.java
@@ -0,0 +1,100 @@
+package com.bel.android.dspmanager.activity;
+
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
+import android.os.Bundle;
+import android.preference.PreferenceFragment;
+import android.preference.PreferenceManager;
+
+import com.bel.android.dspmanager.R;
+import com.bel.android.dspmanager.preference.EqualizerPreference;
+import com.bel.android.dspmanager.preference.SummariedListPreference;
+import com.bel.android.dspmanager.service.HeadsetService;
+
+/**
+ * This class implements a general PreferencesActivity that we can use to
+ * adjust DSP settings. It adds a menu to clear the preferences on this page,
+ * and a listener that ensures that our {@link HeadsetService} is running if
+ * required.
+ *
+ * @author alankila
+ */
+public final class DSPScreen extends PreferenceFragment {
+ protected static final String TAG = DSPScreen.class.getSimpleName();
+
+ public static final String PREF_KEY_EQ = "dsp.tone.eq";
+ public static final String PREF_KEY_CUSTOM_EQ = "dsp.tone.eq.custom";
+
+ public static final String EQ_VALUE_CUSTOM = "custom";
+
+ private final OnSharedPreferenceChangeListener listener =
+ new OnSharedPreferenceChangeListener() {
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+ /* If the listpref is updated, copy the changed setting to the eq. */
+ if (PREF_KEY_EQ.equals(key)) {
+ String newValue = prefs.getString(key, null);
+ if (!EQ_VALUE_CUSTOM.equals(newValue)) {
+ prefs.edit().putString(PREF_KEY_CUSTOM_EQ, newValue).commit();
+
+ /* Now tell the equalizer that it must display something else. */
+ EqualizerPreference eq =
+ (EqualizerPreference) findPreference(PREF_KEY_CUSTOM_EQ);
+ eq.refreshFromPreference();
+ }
+ }
+
+ /* If the equalizer surface is updated, select matching pref entry or "custom". */
+ if (PREF_KEY_CUSTOM_EQ.equals(key)) {
+ String newValue = prefs.getString(key, null);
+
+ String desiredValue = EQ_VALUE_CUSTOM;
+ SummariedListPreference preset =
+ (SummariedListPreference) findPreference(PREF_KEY_EQ);
+
+ for (CharSequence entry : preset.getEntryValues()) {
+ if (entry.equals(newValue)) {
+ desiredValue = newValue;
+ break;
+ }
+ }
+
+ /* Tell listpreference that it must display something else. */
+ if (!desiredValue.equals(preset.getEntry())) {
+ prefs.edit().putString(PREF_KEY_EQ, desiredValue).commit();
+ preset.refreshFromPreference();
+ }
+ }
+
+ getActivity().sendBroadcast(new Intent(DSPManager.ACTION_UPDATE_PREFERENCES));
+ }
+ };
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ String config = getArguments().getString("config");
+ PreferenceManager prefMgr = getPreferenceManager();
+
+ prefMgr.setSharedPreferencesName(DSPManager.SHARED_PREFERENCES_BASENAME + "." + config);
+
+ try {
+ int xmlId = R.xml.class.getField(config + "_preferences").getInt(null);
+ addPreferencesFromResource(xmlId);
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException(e);
+ } catch (NoSuchFieldException e) {
+ throw new RuntimeException(e);
+ }
+
+ prefMgr.getSharedPreferences().registerOnSharedPreferenceChangeListener(listener);
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ PreferenceManager prefMgr = getPreferenceManager();
+ prefMgr.getSharedPreferences().unregisterOnSharedPreferenceChangeListener(listener);
+ }
+}
diff --git a/src/com/bel/android/dspmanager/activity/Utils.java b/src/com/bel/android/dspmanager/activity/Utils.java
new file mode 100644
index 0000000..858768e
--- /dev/null
+++ b/src/com/bel/android/dspmanager/activity/Utils.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2011 The CyanogenMod Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bel.android.dspmanager.activity;
+
+import android.util.Log;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.SyncFailedException;
+
+public class Utils {
+ protected static final String TAG = DSPManager.class.getSimpleName();
+ private static final String TAG_READ = TAG + "_Read";
+ private static final String TAG_WRITE = TAG + "_Write";
+
+ /**
+ * Write a string value to the specified file.
+ *
+ * @param filename The filename
+ * @param value The value
+ */
+ public static void writeValue(String filename, String value) {
+ FileOutputStream fos = null;
+ try {
+ fos = new FileOutputStream(new File(filename), false);
+ fos.write(value.getBytes());
+ fos.flush();
+ } catch (FileNotFoundException ex) {
+ Log.w(TAG, "File " + filename + " not found: " + ex);
+ } catch (SyncFailedException ex) {
+ Log.w(TAG, "File " + filename + " sync failed: " + ex);
+ } catch (IOException ex) {
+ Log.w(TAG, "IOException trying to sync " + filename + ": " + ex);
+ } catch (RuntimeException ex) {
+ Log.w(TAG, "RuntimeException while syncing file: ", ex);
+ } finally {
+ if (fos != null) {
+ try {
+ Log.w(TAG_WRITE, "File " + filename + ": " + value);
+ fos.close();
+ } catch (IOException ex) {
+ Log.w(TAG, "IOException while closing synced file: ", ex);
+ } catch (RuntimeException ex) {
+ Log.w(TAG, "RuntimeException while closing file: ", ex);
+ }
+ }
+ }
+
+ }
+
+ /**
+ * Write a string value to the specified file.
+ *
+ * @param filename The filename
+ * @param value The value
+ */
+ public static void writeValue(String filename, boolean value) {
+ writeValue(filename, value ? "1" : "0");
+ }
+
+ /**
+ * Write the "color value" to the specified file. The value is scaled from
+ * an integer to an unsigned integer by multiplying by 2.
+ *
+ * @param filename The filename
+ * @param value The value of max value Integer.MAX
+ */
+ public static void writeColor(String filename, int value) {
+ writeValue(filename, String.valueOf((long) value * 2));
+ }
+
+ /**
+ * Check if the specified file exists.
+ *
+ * @param filename The filename
+ * @return Whether the file exists or not
+ */
+ public static boolean fileExists(String filename) {
+ return new File(filename).exists();
+ }
+
+ // Read value from sysfs interface
+ public static String readOneLine(String sFile) {
+ BufferedReader brBuffer;
+ String sLine = null;
+
+ try {
+ brBuffer = new BufferedReader(new FileReader(sFile), 512);
+ try {
+ sLine = brBuffer.readLine();
+ } finally {
+ Log.w(TAG_READ, "File " + sFile + ": " + sLine);
+ brBuffer.close();
+ }
+ } catch (Exception e) {
+ Log.e(TAG_READ, "Exception when reading /sys/ file", e);
+ }
+ return sLine;
+ }
+}
diff --git a/src/com/bel/android/dspmanager/activity/WM8994.java b/src/com/bel/android/dspmanager/activity/WM8994.java
new file mode 100644
index 0000000..e9a8273
--- /dev/null
+++ b/src/com/bel/android/dspmanager/activity/WM8994.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2011 The CyanogenMod Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bel.android.dspmanager.activity;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.os.Bundle;
+import android.preference.CheckBoxPreference;
+import android.preference.Preference;
+import android.preference.PreferenceCategory;
+import android.preference.PreferenceFragment;
+import android.preference.PreferenceManager;
+import android.preference.PreferenceScreen;
+import android.util.Log;
+
+import com.bel.android.dspmanager.R;
+import com.bel.android.dspmanager.preference.BassBoostPreference;
+import com.bel.android.dspmanager.preference.HeadsetAmplifierPreference;
+
+public class WM8994 extends PreferenceFragment implements Preference.OnPreferenceChangeListener {
+ protected static final String TAG = WM8994.class.getSimpleName();
+
+ public static final String NAME = "wm8994";
+ public static final String WM8994_ENABLE_FILE = "/sys/class/misc/voodoo_sound_control/enable";
+ public static final String VOODOO_SOUND_PACKAGE = "org.projectvoodoo.controlapp";
+
+ public static final String BASS_BOOST_ENABLE_PREF = "dsp.wm8994.bassboost.enable";
+ public static final String BASS_BOOST_PRESET_PREF = "dsp.wm8994.bassboost.preset";
+ public static final String BASS_BOOST_GAIN_RANGE_PREF = "dsp.wm8994.bassboost.gainrange";
+ public static final String BASS_BOOST_ENABLE_FILE = "/sys/class/misc/voodoo_sound/headphone_eq";
+
+ public static final String[][] OPTION_CONTROLS = {
+ {"/sys/class/misc/voodoo_sound/speaker_tuning", "pref_wm8994_speaker_tuning"},
+ {"/sys/class/misc/voodoo_sound/mono_downmix", "pref_wm8994_mono_downmix"},
+ {"/sys/class/misc/voodoo_sound/stereo_expansion", "pref_wm8994_stereo_expansion"},
+ {"/sys/class/misc/voodoo_sound/dac_direct", "pref_wm8994_dac_direct"},
+ {"/sys/class/misc/voodoo_sound/dac_osr128", "pref_wm8994_dac_osr128"},
+ {"/sys/class/misc/voodoo_sound/adc_osr128", "pref_wm8994_adc_osr128"},
+ {"/sys/class/misc/voodoo_sound/fll_tuning", "pref_wm8994_fll_tuning"},
+ {BASS_BOOST_ENABLE_FILE, BASS_BOOST_ENABLE_PREF},
+ };
+
+ public static final String MIC_REC_PRESET[][] = {
+ {"/sys/class/misc/voodoo_sound/recording_preset", "dsp.wm8994.microphone.recording"}
+ };
+
+ private static final String PREF_ENABLED = "1";
+ private static final String PREF_DISABLED = "0";
+
+ private CheckBoxPreference mPreferences[] = new CheckBoxPreference[OPTION_CONTROLS.length];
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ addPreferencesFromResource(R.xml.wm8994_preferences);
+
+ PreferenceScreen prefSet = getPreferenceScreen();
+
+ for (int i = 0; i < OPTION_CONTROLS.length;i++) {
+ String fileName = OPTION_CONTROLS[i][0];
+ mPreferences[i] = (CheckBoxPreference) prefSet.findPreference(OPTION_CONTROLS[i][1]);
+ if (Utils.fileExists(fileName)) {
+ mPreferences[i].setChecked(PREF_ENABLED.equals(Utils.readOneLine(fileName)));
+ mPreferences[i].setOnPreferenceChangeListener(this);
+ } else {
+ mPreferences[i].setSummary(R.string.pref_unavailable);
+ mPreferences[i].setEnabled(false);
+ }
+ }
+
+ if (Utils.fileExists(HeadsetAmplifierPreference.FILE_PATH)) {
+ prefSet.findPreference("headphone_amp").setOnPreferenceChangeListener(this);
+ } else {
+ Preference category = prefSet.findPreference("wm8994_headphone_amp_category");
+ prefSet.removePreference(category);
+ }
+
+ if (Utils.fileExists(MIC_REC_PRESET[0][0])) {
+ prefSet.findPreference(MIC_REC_PRESET[0][1]).setOnPreferenceChangeListener(this);
+ } else {
+ Preference category = prefSet.findPreference("wm8994_microphone_recording_category");
+ prefSet.removePreference(category);
+ }
+
+ Preference bassBoostPreset = prefSet.findPreference(BASS_BOOST_PRESET_PREF);
+ Preference bassBoostGainRange = prefSet.findPreference(BASS_BOOST_GAIN_RANGE_PREF);
+ if (Utils.fileExists(BASS_BOOST_ENABLE_FILE)) {
+ bassBoostPreset.setOnPreferenceChangeListener(this);
+ bassBoostGainRange.setOnPreferenceChangeListener(this);
+ } else {
+ PreferenceCategory bassBoostCategory =
+ (PreferenceCategory) prefSet.findPreference("wm8994_signal_processing_category");
+ bassBoostCategory.removePreference(bassBoostPreset);
+ bassBoostCategory.removePreference(bassBoostGainRange);
+ }
+ }
+
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ String key = preference.getKey();
+
+ if (MIC_REC_PRESET[0][1].equals(key)) {
+ Utils.writeValue(MIC_REC_PRESET[0][0], (String) newValue);
+ } else if (BASS_BOOST_PRESET_PREF.equals(key)) {
+ BassBoostPreference.writeBassBoost(getActivity(), (String) newValue);
+ } else {
+ for (String[] pair : OPTION_CONTROLS) {
+ if (pair[1].equals(key)) {
+ if ((Boolean) newValue) {
+ Utils.writeValue(pair[0], PREF_ENABLED);
+ } else {
+ Utils.writeValue(pair[0], PREF_DISABLED);
+ }
+ }
+ }
+ }
+
+ return true; // true for automatic update in preference file
+ }
+
+ /**
+ * Check if WM8994 is supported on this phone
+ */
+ public static boolean isSupported(Context context) {
+ boolean hasVoodoo = true;
+
+ // Try to detect presence of Voodoo Sound app and disable our control
+ // to prevent conflict.
+ try {
+ PackageManager pm = context.getPackageManager();
+ pm.getPackageInfo(VOODOO_SOUND_PACKAGE, 0);
+ } catch (NameNotFoundException e) {
+ hasVoodoo = false;
+ }
+
+ return !hasVoodoo && Utils.fileExists(WM8994_ENABLE_FILE);
+ }
+
+ public static void restore(Context context) {
+ SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
+
+ for (String[] pair : OPTION_CONTROLS) {
+ if (Utils.fileExists(pair[0])) {
+ Log.d(TAG, "Does " + pair[1] + " exist == " + sharedPrefs.contains(pair[1]));
+ Utils.writeValue(pair[0], sharedPrefs.getBoolean(pair[1],
+ PREF_ENABLED.equals(Utils.readOneLine(pair[0]))));
+ }
+ }
+
+ if (Utils.fileExists(MIC_REC_PRESET[0][0])) {
+ Log.d(TAG,"Does " + MIC_REC_PRESET[0][1] + " exist == " +
+ sharedPrefs.contains(MIC_REC_PRESET[0][1]));
+ Utils.writeValue(MIC_REC_PRESET[0][0], sharedPrefs.getString(MIC_REC_PRESET[0][1],
+ Utils.readOneLine(MIC_REC_PRESET[0][0])));
+ }
+
+ if (Utils.fileExists(BASS_BOOST_ENABLE_FILE)) {
+ BassBoostPreference.restore(context);
+ }
+
+ HeadsetAmplifierPreference.restore(context);
+ }
+}
diff --git a/src/com/bel/android/dspmanager/preference/BassBoostPreference.java b/src/com/bel/android/dspmanager/preference/BassBoostPreference.java
new file mode 100644
index 0000000..93ab926
--- /dev/null
+++ b/src/com/bel/android/dspmanager/preference/BassBoostPreference.java
@@ -0,0 +1,209 @@
+
+package com.bel.android.dspmanager.preference;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.Editor;
+import android.preference.DialogPreference;
+import android.preference.PreferenceManager;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.View;
+import android.widget.SeekBar;
+import android.widget.TextView;
+
+import com.bel.android.dspmanager.R;
+import com.bel.android.dspmanager.activity.Utils;
+import com.bel.android.dspmanager.activity.WM8994;
+
+public class BassBoostPreference extends DialogPreference {
+
+ private static final String TAG = "BassBoostPreference";
+
+ public static final int MAX_VALUE_GAIN = 12;
+ public static final int MAX_VALUE_RANGE = 5;
+
+ public static final String BASS_BOOST_PREF_GAIN = "dsp.wm8994.bassboost.gain";
+ public static final String BASS_BOOST_PREF_RANGE = "dsp.wm8994.bassboost.range";
+ public static final String[] BASS_BOOST_FILES = new String[] {
+ "/sys/class/misc/voodoo_sound/digital_gain",
+ "/sys/class/misc/voodoo_sound/headphone_eq_b1_gain",
+ "/sys/class/misc/voodoo_sound/headphone_eq_b2_gain",
+ };
+
+ public static final String[] BASS_BOOST_PREFS = {
+ BASS_BOOST_PREF_GAIN,
+ BASS_BOOST_PREF_RANGE,
+ };
+ private static final int[] SEEKBAR_ID = {
+ R.id.bass_boost_gain_seekbar,
+ R.id.bass_boost_range_seekbar,
+ };
+ private static final int[] VALUE_DISPLAY_ID = {
+ R.id.bass_boost_gain_value,
+ R.id.bass_boost_range_value,
+ };
+ private static final int[] SEEKBAR_MAX_VALUE = {
+ MAX_VALUE_GAIN,
+ MAX_VALUE_RANGE,
+ };
+ private static final String[] SEEKBAR_UOM = {
+ "dB",
+ "%",
+ };
+
+ private BassBoostSeekBar[] mSeekBars = new BassBoostSeekBar[2];
+
+ private static int sInstances = 0;
+
+ // Intermediate values for writing bass value while sliding
+ private int mGain;
+ private int mRange;
+ private String mPreset;
+
+ public BassBoostPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ setDialogLayoutResource(R.layout.preference_dialog_bass_boost);
+
+ SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
+ mPreset = sharedPrefs.getString(WM8994.BASS_BOOST_PRESET_PREF, "0");
+ }
+
+ @Override
+ protected void onBindDialogView(View view) {
+ super.onBindDialogView(view);
+
+ sInstances++;
+
+ Log.d(TAG, "onBindDialogView");
+ for (int i = 0; i < SEEKBAR_ID.length; i++) {
+ SeekBar seekBar = (SeekBar) view.findViewById(SEEKBAR_ID[i]);
+ TextView valueDisplay = (TextView) view.findViewById(VALUE_DISPLAY_ID[i]);
+ mSeekBars[i] = new BassBoostSeekBar(seekBar, valueDisplay,
+ BASS_BOOST_PREFS[i], SEEKBAR_MAX_VALUE[i], SEEKBAR_UOM[i]);
+ }
+ }
+
+ @Override
+ protected void onDialogClosed(boolean positiveResult) {
+ super.onDialogClosed(positiveResult);
+
+ sInstances--;
+
+ if (positiveResult) {
+ for (BassBoostSeekBar csb : mSeekBars) {
+ csb.save();
+ }
+ } else if (sInstances == 0) {
+ BassBoostPreference.writeBassBoost(getContext());
+ }
+ }
+
+ public static void restore(Context context) {
+ Log.d(TAG, "restore");
+ writeBassBoost(context);
+ }
+
+ public static void writeBassBoost(Context context) {
+ SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
+ int gain = sharedPrefs.getInt(BASS_BOOST_PREF_GAIN, MAX_VALUE_GAIN);
+ int range = sharedPrefs.getInt(BASS_BOOST_PREF_RANGE, MAX_VALUE_RANGE);
+ String preset = sharedPrefs.getString(WM8994.BASS_BOOST_PRESET_PREF, "0");
+ writeBassBoost(gain, range, preset);
+ }
+
+ public static void writeBassBoost(Context context, String preset) {
+ SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
+ int gain = sharedPrefs.getInt(BASS_BOOST_PREF_GAIN, MAX_VALUE_GAIN);
+ int range = sharedPrefs.getInt(BASS_BOOST_PREF_RANGE, MAX_VALUE_RANGE);
+ writeBassBoost(gain, range, preset);
+ }
+
+ public static void writeBassBoost(int gain, int range, String preset) {
+ int mGain1 = 1;
+ int mGain2 = 1;
+ if (preset.equals("0")) {
+ mGain2 = 0;
+ } else {
+ mGain1 = -1;
+ }
+
+ double digitalGain = (range / 5) * (gain * 1000);
+ Log.d(TAG, "mDigitalGain == " + digitalGain);
+ Utils.writeValue(BASS_BOOST_FILES[0], String.valueOf(digitalGain * -1));
+ Utils.writeValue(BASS_BOOST_FILES[1], String.valueOf(gain * mGain1));
+ Utils.writeValue(BASS_BOOST_FILES[2], String.valueOf(gain * mGain2));
+ Log.d(TAG, "writeBassBoost");
+
+ }
+
+ class BassBoostSeekBar implements SeekBar.OnSeekBarChangeListener {
+
+ private String mPref;
+ private int mOriginal;
+ private SeekBar mSeekBar;
+ private TextView mValueDisplay;
+ private int mSeekbarMax;
+ private String mSeekbarUnit;
+
+ public BassBoostSeekBar(SeekBar seekBar, TextView valueDisplay,
+ String pref, int maxValue, String uom) {
+ mSeekBar = seekBar;
+ mValueDisplay = valueDisplay;
+ mPref = pref;
+ mSeekbarMax = maxValue;
+ mSeekbarUnit = uom;
+
+ SharedPreferences sharedPreferences = getSharedPreferences();
+ mOriginal = sharedPreferences.getInt(mPref, mSeekbarMax);
+
+ mSeekBar.setMax(mSeekbarMax);
+ mSeekBar.setProgress(mOriginal);
+ updateValue(mOriginal, false);
+
+ mSeekBar.setOnSeekBarChangeListener(this);
+ }
+
+ public void save() {
+ Log.d(TAG, "save");
+
+ int value = mSeekBar.getProgress();
+ Editor editor = getEditor();
+ editor.putInt(mPref, value);
+ editor.commit();
+ }
+
+ @Override
+ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+ updateValue(progress, true);
+ }
+
+ @Override
+ public void onStartTrackingTouch(SeekBar seekBar) {
+ // Do nothing
+ }
+
+ @Override
+ public void onStopTrackingTouch(SeekBar seekBar) {
+ // Do nothing
+ }
+
+ private void updateValue(int progress, boolean write) {
+ double mProgress = (double) progress;
+
+ if (mPref.equals(BASS_BOOST_PREF_RANGE)) {
+ mProgress = (mProgress / 5) * 100;
+ mRange = progress;
+ } else{
+ mGain = progress;
+ }
+
+ if (write) {
+ BassBoostPreference.writeBassBoost(mGain, mRange, mPreset);
+ }
+
+ mValueDisplay.setText(String.format("%d", (int) mProgress) + mSeekbarUnit);
+ }
+
+ }
+}
diff --git a/src/com/bel/android/dspmanager/preference/Biquad.java b/src/com/bel/android/dspmanager/preference/Biquad.java
new file mode 100644
index 0000000..c8158e1
--- /dev/null
+++ b/src/com/bel/android/dspmanager/preference/Biquad.java
@@ -0,0 +1,31 @@
+package com.bel.android.dspmanager.preference;
+
+/**
+ * Evaluate transfer functions of biquad filters in direct form 1.
+ *
+ * @author alankila
+ */
+class Biquad {
+ private Complex mB0, mB1, mB2, mA0, mA1, mA2;
+
+ protected void setHighShelf(double centerFrequency, double samplingFrequency,
+ double dbGain, double slope) {
+ double w0 = 2 * Math.PI * centerFrequency / samplingFrequency;
+ double a = Math.pow(10, dbGain/40);
+ double alpha = Math.sin(w0) / 2 * Math.sqrt((a + 1 / a) * (1 / slope - 1) + 2);
+
+ mB0 = new Complex(a*((a+1) + (a-1) *Math.cos(w0) + 2*Math.sqrt(a)*alpha), 0);
+ mB1 = new Complex(-2*a*((a-1) + (a+1)*Math.cos(w0)), 0);
+ mB2 = new Complex(a*((a+1) + (a-1) *Math.cos(w0) - 2*Math.sqrt(a)*alpha), 0);
+ mA0 = new Complex((a+1) - (a-1) *Math.cos(w0) + 2*Math.sqrt(a)*alpha, 0);
+ mA1 = new Complex(2*((a-1) - (a+1) *Math.cos(w0)), 0);
+ mA2 = new Complex((a+1) - (a-1) *Math.cos(w0) - 2*Math.sqrt(a)*alpha, 0);
+ }
+
+ protected Complex evaluateTransfer(Complex z) {
+ Complex zSquared = z.mul(z);
+ Complex nom = mB0.add(mB1.div(z)).add(mB2.div(zSquared));
+ Complex den = mA0.add(mA1.div(z)).add(mA2.div(zSquared));
+ return nom.div(den);
+ }
+}
diff --git a/src/com/bel/android/dspmanager/preference/Complex.java b/src/com/bel/android/dspmanager/preference/Complex.java
new file mode 100644
index 0000000..a8f19ee
--- /dev/null
+++ b/src/com/bel/android/dspmanager/preference/Complex.java
@@ -0,0 +1,94 @@
+package com.bel.android.dspmanager.preference;
+
+/**
+ * Java support for complex numbers.
+ *
+ * @author alankila
+ */
+class Complex {
+ private final double mReal, mIm;
+
+ protected Complex(double real, double im) {
+ mReal = real;
+ mIm = im;
+ }
+
+ /**
+ * Length of complex number
+ *
+ * @return length
+ */
+ protected double rho() {
+ return Math.sqrt(mReal * mReal + mIm * mIm);
+ }
+
+ /**
+ * Argument of complex number
+ *
+ * @return angle in radians
+ */
+ protected double theta() {
+ return Math.atan2(mIm, mReal);
+ }
+
+ /**
+ * Complex conjugate
+ *
+ * @return conjugate
+ */
+ protected Complex con() {
+ return new Complex(mReal, -mIm);
+ }
+
+ /**
+ * Complex addition
+ *
+ * @param other
+ * @return sum
+ */
+ protected Complex add(Complex other) {
+ return new Complex(mReal + other.mReal, mIm + other.mIm);
+ }
+
+ /**
+ * Complex multipply
+ *
+ * @param other
+ * @return multiplication result
+ */
+ protected Complex mul(Complex other) {
+ return new Complex(mReal * other.mReal - mIm * other.mIm,
+ mReal * other.mIm + mIm * other.mReal);
+ }
+
+ /**
+ * Complex multiply with real value
+ *
+ * @param a
+ * @return multiplication result
+ */
+ protected Complex mul(double a) {
+ return new Complex(mReal * a, mIm * a);
+ }
+
+ /**
+ * Complex division
+ *
+ * @param other
+ * @return division result
+ */
+ protected Complex div(Complex other) {
+ double lengthSquared = other.mReal * other.mReal + other.mIm * other.mIm;
+ return mul(other.con()).div(lengthSquared);
+ }
+
+ /**
+ * Complex division with real value
+ *
+ * @param a
+ * @return division result
+ */
+ protected Complex div(double a) {
+ return new Complex(mReal / a, mIm / a);
+ }
+}
diff --git a/src/com/bel/android/dspmanager/preference/EqualizerPreference.java b/src/com/bel/android/dspmanager/preference/EqualizerPreference.java
new file mode 100644
index 0000000..fc0caa0
--- /dev/null
+++ b/src/com/bel/android/dspmanager/preference/EqualizerPreference.java
@@ -0,0 +1,141 @@
+package com.bel.android.dspmanager.preference;
+
+import java.util.Locale;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+import android.preference.DialogPreference;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.View.OnTouchListener;
+
+import com.bel.android.dspmanager.R;
+import com.bel.android.dspmanager.service.HeadsetService;
+
+public class EqualizerPreference extends DialogPreference {
+ protected static final String TAG = EqualizerPreference.class.getSimpleName();
+
+ protected EqualizerSurface mListEqualizer, mDialogEqualizer;
+ private HeadsetService mHeadsetService;
+
+ private final ServiceConnection mConnectionForDialog = new ServiceConnection() {
+ @Override
+ public void onServiceConnected(ComponentName name, IBinder binder) {
+ Log.i(TAG, "Acquiring connection to headsetservice");
+ mHeadsetService = ((HeadsetService.LocalBinder) binder).getService();
+ updateDspFromDialogEqualizer();
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName name) {
+ mHeadsetService = null;
+ }
+ };
+
+ public EqualizerPreference(Context context, AttributeSet attributeSet) {
+ super(context, attributeSet);
+ setLayoutResource(R.layout.equalizer);
+ setDialogLayoutResource(R.layout.equalizer_popup);
+ }
+
+ protected void updateDspFromDialogEqualizer() {
+ if (mHeadsetService != null) {
+ float[] levels = new float[6];
+ for (int i = 0; i < levels.length; i ++) {
+ levels[i] = mDialogEqualizer.getBand(i);
+ }
+ mHeadsetService.setEqualizerLevels(levels);
+ }
+ }
+
+ private void updateListEqualizerFromValue() {
+ String value = getPersistedString(null);
+ if (value != null && mListEqualizer != null) {
+ String[] levelsStr = value.split(";");
+ for (int i = 0; i < 6; i ++) {
+ mListEqualizer.setBand(i, Float.valueOf(levelsStr[i]));
+ }
+ }
+ }
+
+ @Override
+ protected void onBindDialogView(View view) {
+ super.onBindDialogView(view);
+
+ mDialogEqualizer = (EqualizerSurface) view.findViewById(R.id.FrequencyResponse);
+ mDialogEqualizer.setOnTouchListener(new OnTouchListener() {
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ float x = event.getX();
+ float y = event.getY();
+
+ /* Which band is closest to the position user pressed? */
+ int band = mDialogEqualizer.findClosest(x);
+
+ int wy = v.getHeight();
+ float level = (y / wy) * (EqualizerSurface.MIN_DB - EqualizerSurface.MAX_DB)
+ - EqualizerSurface.MIN_DB;
+ if (level < EqualizerSurface.MIN_DB) {
+ level = EqualizerSurface.MIN_DB;
+ } else if (level > EqualizerSurface.MAX_DB) {
+ level = EqualizerSurface.MAX_DB;
+ }
+
+ mDialogEqualizer.setBand(band, level);
+ updateDspFromDialogEqualizer();
+ return true;
+ }
+ });
+
+ if (mListEqualizer != null) {
+ for (int i = 0; i < 6; i ++) {
+ mDialogEqualizer.setBand(i, mListEqualizer.getBand(i));
+ }
+ }
+
+ Intent serviceIntent = new Intent(getContext(), HeadsetService.class);
+ getContext().bindService(serviceIntent, mConnectionForDialog, 0);
+ }
+
+ @Override
+ protected void onDialogClosed(boolean positiveResult) {
+ if (positiveResult) {
+ StringBuilder value = new StringBuilder();
+ for (int i = 0; i < 6; i ++) {
+ value.append(String.format(Locale.ROOT, "%.1f", mDialogEqualizer.getBand(i)));
+ value.append(';');
+ }
+ persistString(value.toString());
+ updateListEqualizerFromValue();
+ }
+
+ if (mHeadsetService != null) {
+ mHeadsetService.setEqualizerLevels(null);
+ }
+ getContext().unbindService(mConnectionForDialog);
+ }
+
+ @Override
+ protected void onBindView(View view) {
+ super.onBindView(view);
+ mListEqualizer = (EqualizerSurface) view.findViewById(R.id.FrequencyResponse);
+ updateListEqualizerFromValue();
+ }
+
+ @Override
+ protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
+ String value = restorePersistedValue ? getPersistedString(null) : (String) defaultValue;
+ if (shouldPersist()) {
+ persistString(value);
+ }
+ }
+
+ public void refreshFromPreference() {
+ onSetInitialValue(true, null);
+ }
+}
diff --git a/src/com/bel/android/dspmanager/preference/EqualizerSurface.java b/src/com/bel/android/dspmanager/preference/EqualizerSurface.java
new file mode 100644
index 0000000..2893faf
--- /dev/null
+++ b/src/com/bel/android/dspmanager/preference/EqualizerSurface.java
@@ -0,0 +1,324 @@
+package com.bel.android.dspmanager.preference;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Canvas;
+import android.graphics.LinearGradient;
+import android.graphics.Paint;
+import android.graphics.Paint.Cap;
+import android.graphics.Paint.Style;
+import android.graphics.Path;
+import android.graphics.Shader;
+import android.os.Bundle;
+import android.os.Parcelable;
+import android.util.AttributeSet;
+import android.view.SurfaceView;
+import android.view.View;
+
+import com.bel.android.dspmanager.R;
+
+public class EqualizerSurface extends SurfaceView {
+ private static int MIN_FREQ = 10;
+ private static int MAX_FREQ = 21000;
+ private static int SAMPLING_RATE = 44100;
+ public static int MIN_DB = -12;
+ public static int MAX_DB = 12;
+
+ private int mWidth;
+ private int mHeight;
+
+ /* Fixme: generalize with frequencies read from equalizer object */
+ private float[] mLevels = new float[6];
+ private final Paint mWhite, mGridLines, mControlBarText, mControlBar, mControlBarKnob;
+ private final Paint mFrequencyResponseBg;
+ private final Paint mFrequencyResponseHighlight, mFrequencyResponseHighlight2;
+
+ public EqualizerSurface(Context context, AttributeSet attributeSet) {
+ super(context, attributeSet);
+ setWillNotDraw(false);
+
+ mWhite = new Paint();
+ mWhite.setColor(getResources().getColor(R.color.white));
+ mWhite.setStyle(Style.STROKE);
+ mWhite.setTextSize(13);
+ mWhite.setAntiAlias(true);
+
+ mGridLines = new Paint();
+ mGridLines.setColor(getResources().getColor(R.color.grid_lines));
+ mGridLines.setStyle(Style.STROKE);
+
+ mControlBarText = new Paint(mWhite);
+ mControlBarText.setTextAlign(Paint.Align.CENTER);
+ mControlBarText.setShadowLayer(2, 0, 0, getResources().getColor(R.color.cb));
+
+ mControlBar = new Paint();
+ mControlBar.setStyle(Style.STROKE);
+ mControlBar.setColor(getResources().getColor(R.color.cb));
+ mControlBar.setAntiAlias(true);
+ mControlBar.setStrokeCap(Cap.ROUND);
+ mControlBar.setShadowLayer(2, 0, 0, getResources().getColor(R.color.black));
+
+ mControlBarKnob = new Paint();
+ mControlBarKnob.setStyle(Style.FILL);
+ mControlBarKnob.setColor(getResources().getColor(R.color.white));
+ mControlBarKnob.setAntiAlias(true);
+
+ mFrequencyResponseBg = new Paint();
+ mFrequencyResponseBg.setStyle(Style.FILL);
+ mFrequencyResponseBg.setAntiAlias(true);
+
+ mFrequencyResponseHighlight = new Paint();
+ mFrequencyResponseHighlight.setStyle(Style.STROKE);
+ mFrequencyResponseHighlight.setStrokeWidth(6);
+ mFrequencyResponseHighlight.setColor(getResources().getColor(R.color.freq_hl));
+ mFrequencyResponseHighlight.setAntiAlias(true);
+
+ mFrequencyResponseHighlight2 = new Paint();
+ mFrequencyResponseHighlight2.setStyle(Style.STROKE);
+ mFrequencyResponseHighlight2.setStrokeWidth(3);
+ mFrequencyResponseHighlight2.setColor(getResources().getColor(R.color.freq_hl2));
+ mFrequencyResponseHighlight2.setAntiAlias(true);
+ }
+
+ @Override
+ protected Parcelable onSaveInstanceState() {
+ Bundle b = new Bundle();
+ b.putParcelable("super", super.onSaveInstanceState());
+ b.putFloatArray("levels", mLevels);
+ return b;
+ }
+
+ @Override
+ protected void onRestoreInstanceState(Parcelable p) {
+ Bundle b = (Bundle) p;
+ super.onRestoreInstanceState(b.getBundle("super"));
+ mLevels = b.getFloatArray("levels");
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+
+ setLayerType(View.LAYER_TYPE_HARDWARE, null);
+ buildLayer();
+ }
+
+ /**
+ * Returns a color that is assumed to be blended against black background,
+ * assuming close to sRGB behavior of screen (gamma 2.2 approximation).
+ *
+ * @param intensity desired physical intensity of color component
+ * @param alpha alpha value of color component
+ */
+ private static int gamma(float intensity, float alpha) {
+ /* intensity = (component * alpha)^2.2
+ * <=>
+ * intensity^(1/2.2) / alpha = component
+ */
+
+ double gamma = Math.round(255 * Math.pow(intensity, 1 / 2.2) / alpha);
+ return (int) Math.min(255, Math.max(0, gamma));
+ }
+
+ @Override
+ protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+ super.onLayout(changed, left, top, right, bottom);
+
+ final Resources res = getResources();
+ mWidth = right - left;
+ mHeight = bottom - top;
+
+ float barWidth = res.getDimension(R.dimen.bar_width);
+ mControlBar.setStrokeWidth(barWidth);
+ mControlBarKnob.setShadowLayer(barWidth * 0.5f, 0, 0, res.getColor(R.color.off_white));
+
+ /**
+ * red > +7
+ * yellow > +3
+ * holo_blue_bright > 0
+ * holo_blue < 0
+ * holo_blue_dark < 3
+ */
+ int[] responseColors = new int[] {
+ res.getColor(R.color.eq_red),
+ res.getColor(R.color.eq_yellow),
+ res.getColor(R.color.eq_holo_bright),
+ res.getColor(R.color.eq_holo_blue),
+ res.getColor(R.color.eq_holo_dark)
+ };
+ float[] responsePositions = new float[] {
+ 0, 0.2f, 0.45f, 0.6f, 1f
+ };
+
+ mFrequencyResponseBg.setShader(new LinearGradient(0, 0, 0, mHeight,
+ responseColors, responsePositions, Shader.TileMode.CLAMP));
+
+ int[] barColors = new int[] {
+ res.getColor(R.color.cb_shader),
+ res.getColor(R.color.cb_shader_alpha)
+ };
+ float[] barPositions = new float[] {
+ 0, 1
+ };
+
+ mControlBar.setShader(new LinearGradient(0, 0, 0, mHeight,
+ barColors, barPositions, Shader.TileMode.CLAMP));
+ }
+
+ public void setBand(int i, float value) {
+ mLevels[i] = value;
+ postInvalidate();
+ }
+
+ public float getBand(int i) {
+ return mLevels[i];
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ /* clear canvas */
+ canvas.drawRGB(0, 0, 0);
+
+ Biquad[] biquads = new Biquad[] {
+ new Biquad(),
+ new Biquad(),
+ new Biquad(),
+ new Biquad(),
+ new Biquad(),
+ };
+
+ /* The filtering is realized with 2nd order high shelf filters, and each band
+ * is realized as a transition relative to the previous band. The center point for
+ * each filter is actually between the bands.
+ *
+ * 1st band has no previous band, so it's just a fixed gain.
+ */
+ double gain = Math.pow(10, mLevels[0] / 20);
+ for (int i = 0; i < biquads.length; i ++) {
+ double freq = 15.625 * Math.pow(4, i);
+ biquads[i].setHighShelf(freq * 2, SAMPLING_RATE, mLevels[i + 1] - mLevels[i], 1);
+ }
+
+ Path freqResponse = new Path();
+ for (int i = 0; i < 71; i ++) {
+ double freq = reverseProjectX(i / 70f);
+ double omega = freq / SAMPLING_RATE * Math.PI * 2;
+ Complex z = new Complex(Math.cos(omega), Math.sin(omega));
+
+ /* Evaluate the response at frequency z */
+
+ /* Complex z1 = z.mul(gain); */
+ Complex z2 = biquads[0].evaluateTransfer(z);
+ Complex z3 = biquads[1].evaluateTransfer(z);
+ Complex z4 = biquads[2].evaluateTransfer(z);
+ Complex z5 = biquads[3].evaluateTransfer(z);
+ Complex z6 = biquads[4].evaluateTransfer(z);
+
+ /* Magnitude response, dB */
+ double dB = lin2dB(gain * z2.rho() * z3.rho() * z4.rho() * z5.rho() * z6.rho());
+ float x = projectX(freq) * mWidth;
+ float y = projectY(dB) * mHeight;
+
+ /* Set starting point at first point */
+ if (i == 0) {
+ freqResponse.moveTo(x, y);
+ } else {
+ freqResponse.lineTo(x, y);
+ }
+ }
+
+ Path freqResponseBg = new Path();
+ freqResponseBg.addPath(freqResponse);
+ freqResponseBg.offset(0, -4);
+ freqResponseBg.lineTo(mWidth, mHeight);
+ freqResponseBg.lineTo(0, mHeight);
+ freqResponseBg.close();
+ canvas.drawPath(freqResponseBg, mFrequencyResponseBg);
+
+ canvas.drawPath(freqResponse, mFrequencyResponseHighlight);
+ canvas.drawPath(freqResponse, mFrequencyResponseHighlight2);
+
+ /* Set the width of the bars according to canvas size */
+ canvas.drawRect(0, 0, mWidth-1, mHeight-1, mWhite);
+
+ /* draw vertical lines */
+ for (int freq = MIN_FREQ; freq < MAX_FREQ;) {
+ float x = projectX(freq) * mWidth;
+ canvas.drawLine(x, 0, x, mHeight - 1, mGridLines);
+ if (freq < 100) {
+ freq += 10;
+ } else if (freq < 1000) {
+ freq += 100;
+ } else if (freq < 10000) {
+ freq += 1000;
+ } else {
+ freq += 10000;
+ }
+ }
+
+ /* draw horizontal lines */
+ for (int dB = MIN_DB + 3; dB <= MAX_DB - 3; dB += 3) {
+ float y = projectY(dB) * mHeight;
+ canvas.drawLine(0, y, mWidth - 1, y, mGridLines);
+ canvas.drawText(String.format("%+d", dB), 1, (y - 1), mWhite);
+ }
+
+ for (int i = 0; i < mLevels.length; i ++) {
+ double freq = 15.625 * Math.pow(4, i);
+ float x = projectX(freq) * mWidth;
+ float y = projectY(mLevels[i]) * mHeight;
+ String frequencyText = String.format(freq < 1000 ? "%.0f" : "%.0fk",
+ freq < 1000 ? freq : freq / 1000);
+
+ canvas.drawLine(x, mHeight, x, y, mControlBar);
+ canvas.drawCircle(x, y, mControlBar.getStrokeWidth() * 0.66f, mControlBarKnob);
+ canvas.drawText(String.format("%+1.1f", mLevels[i]), x, mHeight - 2, mControlBarText);
+ canvas.drawText(frequencyText, x, mWhite.getTextSize(), mControlBarText);
+ }
+ }
+
+ private float projectX(double freq) {
+ double pos = Math.log(freq);
+ double minPos = Math.log(MIN_FREQ);
+ double maxPos = Math.log(MAX_FREQ);
+ return (float) ((pos - minPos) / (maxPos - minPos));
+ }
+
+ private double reverseProjectX(float pos) {
+ double minPos = Math.log(MIN_FREQ);
+ double maxPos = Math.log(MAX_FREQ);
+ return Math.exp(pos * (maxPos - minPos) + minPos);
+ }
+
+ private float projectY(double dB) {
+ double pos = (dB - MIN_DB) / (MAX_DB - MIN_DB);
+ return (float) (1 - pos);
+ }
+
+ private double lin2dB(double rho) {
+ return rho != 0 ? Math.log(rho) / Math.log(10) * 20 : -99.9;
+ }
+
+ /**
+ * Find the closest control to given horizontal pixel for adjustment
+ *
+ * @param px
+ * @return index of best match
+ */
+ public int findClosest(float px) {
+ int idx = 0;
+ float best = 1e9f;
+ for (int i = 0; i < mLevels.length; i ++) {
+ double freq = 15.625 * Math.pow(4, i);
+ float cx = projectX(freq) * mWidth;
+ float distance = Math.abs(cx - px);
+
+ if (distance < best) {
+ idx = i;
+ best = distance;
+ }
+ }
+
+ return idx;
+ }
+}
diff --git a/src/com/bel/android/dspmanager/preference/HeadsetAmplifierPreference.java b/src/com/bel/android/dspmanager/preference/HeadsetAmplifierPreference.java
new file mode 100644
index 0000000..fe3d4d6
--- /dev/null
+++ b/src/com/bel/android/dspmanager/preference/HeadsetAmplifierPreference.java
@@ -0,0 +1,131 @@
+package com.bel.android.dspmanager.preference;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.Editor;
+import android.preference.DialogPreference;
+import android.preference.PreferenceManager;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.View;
+import android.widget.SeekBar;
+import android.widget.TextView;
+
+import com.bel.android.dspmanager.R;
+import com.bel.android.dspmanager.activity.Utils;
+
+public class HeadsetAmplifierPreference extends DialogPreference {
+ private static final String TAG = "HeadsetAmplifierPreference";
+
+ private static final int MAX_VALUE = 62;
+ private static final int OFFSET_VALUE = 57;
+
+ public static final String FILE_PATH = "/sys/class/misc/voodoo_sound/headphone_amplifier_level";
+
+ private static int sInstances = 0;
+
+ private HeadsetAmplifierSeekBar mSeekBar;
+
+ public HeadsetAmplifierPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+
+ setDialogLayoutResource(R.layout.preference_dialog_headphone_amplifier_level);
+ }
+
+ @Override
+ protected void onBindDialogView(View view) {
+ super.onBindDialogView(view);
+
+ sInstances++;
+
+ SeekBar seekBar = (SeekBar) view.findViewById(R.id.headphone_amplifier_level_seekbar);
+ TextView valueDisplay = (TextView) view.findViewById(R.id.headphone_amplifier_level_value);
+ mSeekBar = new HeadsetAmplifierSeekBar(seekBar, valueDisplay, FILE_PATH);
+ }
+
+ @Override
+ protected void onDialogClosed(boolean positiveResult) {
+ super.onDialogClosed(positiveResult);
+
+ sInstances--;
+
+ if (positiveResult) {
+ mSeekBar.save();
+ } else if (sInstances == 0) {
+ mSeekBar.reset();
+ }
+ }
+
+ public static void restore(Context context) {
+ if (!isSupported()) {
+ return;
+ }
+
+ SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
+ Log.d(TAG, "restore");
+ String sDefaultValue = Utils.readOneLine(FILE_PATH);
+ int value = sharedPrefs.getInt(FILE_PATH, Integer.valueOf(sDefaultValue));
+ Utils.writeValue(FILE_PATH, String.valueOf(value));
+ }
+
+ public static boolean isSupported() {
+ return Utils.fileExists(FILE_PATH);
+ }
+
+ private class HeadsetAmplifierSeekBar implements SeekBar.OnSeekBarChangeListener {
+ private String mFilePath;
+ private int mOriginal;
+ private SeekBar mSeekBar;
+ private TextView mValueDisplay;
+
+ public HeadsetAmplifierSeekBar(SeekBar seekBar, TextView valueDisplay, String filePath) {
+ mSeekBar = seekBar;
+ mValueDisplay = valueDisplay;
+ mFilePath = filePath;
+
+ // Read original value
+ SharedPreferences prefs = getSharedPreferences();
+ mOriginal = prefs.getInt(mFilePath, Integer.valueOf(Utils.readOneLine(mFilePath)));
+
+ mSeekBar.setMax(MAX_VALUE);
+ reset();
+ mSeekBar.setOnSeekBarChangeListener(this);
+ }
+
+ public void reset() {
+ Log.d(TAG, "reset");
+
+ mSeekBar.setProgress(mOriginal);
+ updateValue(mOriginal);
+ }
+
+ public void save() {
+ Log.d(TAG, "save");
+
+ int value = mSeekBar.getProgress();
+ Editor editor = getEditor();
+ editor.putInt(mFilePath, value);
+ editor.commit();
+ }
+
+ @Override
+ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+ Utils.writeValue(FILE_PATH, String.valueOf(progress));
+ updateValue(progress);
+ }
+
+ @Override
+ public void onStartTrackingTouch(SeekBar seekBar) {
+ // Do nothing
+ }
+
+ @Override
+ public void onStopTrackingTouch(SeekBar seekBar) {
+ // Do nothing
+ }
+
+ private void updateValue(int progress) {
+ mValueDisplay.setText((progress - OFFSET_VALUE) + " dB");
+ }
+ }
+}
diff --git a/src/com/bel/android/dspmanager/preference/SummariedListPreference.java b/src/com/bel/android/dspmanager/preference/SummariedListPreference.java
new file mode 100644
index 0000000..44b27d0
--- /dev/null
+++ b/src/com/bel/android/dspmanager/preference/SummariedListPreference.java
@@ -0,0 +1,29 @@
+package com.bel.android.dspmanager.preference;