<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010-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.
-->

<resources>
    <string name="app_name">MusicFX</string>

    <!-- ControlPanelMusic strings -->
    <string name="no_effects">Effects not available</string>
    <string name="main_toggle_effects_title">Audio effects</string>
    <string name="eq_dialog_title">Equalizer</string>
    <string name="headset_plug">Please plug headphones for these effects</string>
    <string name="bass_boost_strength">Bass boost</string>
    <string name="virtualizer_strength">3D effect</string>
    <string name="pr_title">Reverb:</string>
    <string name="pr_summary">Additional room reverberation effects</string>
    <string name="pr_dialog_title">Reverb Preset</string>
    <string name="setup">Setup</string>
    <string name="ci_extreme">FX Booster</string>
    <string name="user">User</string>

    <!-- title of control panel picker dialog [CHAR LIMIT=30] -->
    <string name="picker_title">Music effects control panel"</string>
</resources>
