diff -Nru audacious-plugins-4.1/.github/actions/install-dependencies/action.yml audacious-plugins-4.3.1/.github/actions/install-dependencies/action.yml --- audacious-plugins-4.1/.github/actions/install-dependencies/action.yml 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/.github/actions/install-dependencies/action.yml 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,35 @@ +name: 'Install dependencies' +description: 'Install dependencies based on the runner''s OS and build system' +author: 'Audacious developers' + +inputs: + os: + description: 'The operating system to use (like ubuntu-22.04)' + required: True + build-system: + description: 'The build system to use (autotools or meson)' + required: True + +runs: + using: "composite" + steps: + - run: '$GITHUB_ACTION_PATH/install-dependencies.sh "${{ inputs.os }}" "${{ inputs.build-system }}"' + if: (!startsWith(inputs.os, 'windows')) + shell: bash + + - uses: msys2/setup-msys2@v2 + if: startsWith(inputs.os, 'windows') + with: + msystem: MINGW32 + update: true + install: >- + mingw-w64-i686-autotools mingw-w64-i686-faad2 mingw-w64-i686-ffmpeg + mingw-w64-i686-flac mingw-w64-i686-fluidsynth mingw-w64-i686-gcc + mingw-w64-i686-gtk2 mingw-w64-i686-lame mingw-w64-i686-libbs2b + mingw-w64-i686-libcdio-paranoia mingw-w64-i686-libcue + mingw-w64-i686-libmodplug mingw-w64-i686-libopenmpt + mingw-w64-i686-libsamplerate mingw-w64-i686-libsidplayfp + mingw-w64-i686-libsoxr mingw-w64-i686-libvorbis mingw-w64-i686-meson + mingw-w64-i686-mpg123 mingw-w64-i686-neon mingw-w64-i686-opusfile + mingw-w64-i686-pkg-config mingw-w64-i686-qt5-base mingw-w64-i686-SDL2 + mingw-w64-i686-wavpack diff -Nru audacious-plugins-4.1/.github/actions/install-dependencies/install-dependencies.sh audacious-plugins-4.3.1/.github/actions/install-dependencies/install-dependencies.sh --- audacious-plugins-4.1/.github/actions/install-dependencies/install-dependencies.sh 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/.github/actions/install-dependencies/install-dependencies.sh 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,69 @@ +#!/usr/bin/env bash + +# --- Dependency configuration --- +# +# ubuntu-20.04: Qt 5 + GTK2 +# ubuntu-22.04: Qt 5 + GTK3 +# Windows: Qt 5 + GTK2 +# macOS (Autotools): Qt 5 - GTK +# macOS (Meson): Qt 6 - GTK + +os=$(tr '[:upper:]' '[:lower:]' <<< "$1") +build_system=$(tr '[:upper:]' '[:lower:]' <<< "$2") + +if [ -z "$os" ] || [ -z "$build_system" ]; then + echo 'Invalid or missing input parameters' + exit 1 +fi + +ubuntu_packages='gettext libadplug-dev libasound2-dev libavformat-dev + libbinio-dev libbs2b-dev libcddb2-dev libcdio-cdda-dev + libcue-dev libcurl4-gnutls-dev libdbus-glib-1-dev + libfaad-dev libflac-dev libfluidsynth-dev libgl1-mesa-dev + libjack-jackd2-dev liblircclient-dev libmms-dev libmodplug-dev + libmp3lame-dev libmpg123-dev libneon27-gnutls-dev libnotify-dev + libopenmpt-dev libopusfile-dev libpulse-dev libqt5opengl5-dev + libqt5x11extras5-dev libsamplerate0-dev libsdl2-dev + libsidplayfp-dev libsndfile1-dev libsndio-dev libsoxr-dev + libvorbis-dev libwavpack-dev libxml2-dev qtbase5-dev + qtmultimedia5-dev' + +macos_packages='adplug faad2 ffmpeg libbs2b libcue libmms libmodplug libnotify + libopenmpt libsamplerate libsoxr neon sdl2 wavpack' + +case "$os" in + ubuntu-20.04) + if [ "$build_system" = 'meson' ]; then + sudo apt-get -qq update && sudo apt-get install $ubuntu_packages libgtk2.0-dev meson + else + sudo apt-get -qq update && sudo apt-get install $ubuntu_packages libgtk2.0-dev + fi + ;; + + ubuntu*) + if [ "$build_system" = 'meson' ]; then + sudo apt-get -qq update && sudo apt-get install $ubuntu_packages libgtk-3-dev libpipewire-0.3-dev meson + else + sudo apt-get -qq update && sudo apt-get install $ubuntu_packages libgtk-3-dev libpipewire-0.3-dev + fi + ;; + + macos*) + if [ "$build_system" = 'meson' ]; then + brew install $macos_packages qt@6 meson + else + brew install $macos_packages qt@5 automake + fi + ;; + + windows*) + # - Nothing to do here - + # Packages are installed with the MSYS2 setup in the action.yml file + # and by making use of 'paccache'. + ;; + + *) + echo "Unsupported OS: $os" + exit 1 + ;; +esac diff -Nru audacious-plugins-4.1/.github/actions/run-action/action.yml audacious-plugins-4.3.1/.github/actions/run-action/action.yml --- audacious-plugins-4.1/.github/actions/run-action/action.yml 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/.github/actions/run-action/action.yml 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,25 @@ +name: 'Run action' +description: 'Run a build action based on the runner''s OS and build system' +author: 'Audacious developers' + +inputs: + action: + description: 'The build action to run (configure, build or install)' + required: True + os: + description: 'The operating system to use (like ubuntu-22.04)' + required: True + build-system: + description: 'The build system to use (autotools or meson)' + required: True + +runs: + using: "composite" + steps: + - run: '$GITHUB_ACTION_PATH/run-action.sh "${{ inputs.action }}" "${{ inputs.os }}" "${{ inputs.build-system }}"' + if: (!startsWith(inputs.os, 'windows')) + shell: bash + + - run: '$GITHUB_ACTION_PATH/run-action.sh "${{ inputs.action }}" "${{ inputs.os }}" "${{ inputs.build-system }}"' + if: startsWith(inputs.os, 'windows') + shell: msys2 {0} diff -Nru audacious-plugins-4.1/.github/actions/run-action/run-action.sh audacious-plugins-4.3.1/.github/actions/run-action/run-action.sh --- audacious-plugins-4.1/.github/actions/run-action/run-action.sh 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/.github/actions/run-action/run-action.sh 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,82 @@ +#!/usr/bin/env bash + +# --- Build configuration --- +# +# ubuntu-20.04: Qt 5 + GTK2 +# ubuntu-22.04: Qt 5 + GTK3 +# Windows: Qt 5 + GTK2 +# macOS (Autotools): Qt 5 - GTK +# macOS (Meson): Qt 6 - GTK + +action=$(tr '[:upper:]' '[:lower:]' <<< "$1") +os=$(tr '[:upper:]' '[:lower:]' <<< "$2") +build_system=$(tr '[:upper:]' '[:lower:]' <<< "$3") + +if [ -z "$action" ] || [ -z "$os" ] || [ -z "$build_system" ]; then + echo 'Invalid or missing input parameters' + exit 1 +fi + +if [[ "$os" != windows* ]]; then + _sudo='sudo' +fi + +case "$action" in + configure) + case "$os" in + ubuntu-20.04 | windows*) + if [ "$build_system" = 'meson' ]; then + meson setup build + else + ./autogen.sh && ./configure + fi + ;; + + ubuntu*) + if [ "$build_system" = 'meson' ]; then + meson setup build -D gtk3=true + else + ./autogen.sh && ./configure --enable-gtk3 + fi + ;; + + macos*) + if [ "$build_system" = 'meson' ]; then + meson setup build -D qt6=true -D gtk=false -D mac-media-keys=true + else + export PATH="/usr/local/opt/qt@5/bin:$PATH" + export PKG_CONFIG_PATH="/usr/local/opt/qt@5/lib/pkgconfig:$PKG_CONFIG_PATH" + ./autogen.sh && ./configure --disable-gtk --enable-mac-media-keys + fi + ;; + + *) + echo "Unsupported OS: $os" + exit 1 + ;; + esac + ;; + + build) + if [ "$build_system" = 'meson' ]; then + ninja -C build + elif [[ "$os" == macos* ]]; then + make -j$(sysctl -n hw.logicalcpu) + else + make -j$(nproc) + fi + ;; + + install) + if [ "$build_system" = 'meson' ]; then + $_sudo meson install -C build + else + $_sudo make install + fi + ;; + + *) + echo "Unsupported action: $action" + exit 1 + ;; +esac diff -Nru audacious-plugins-4.1/.github/workflows/c-cpp.yml audacious-plugins-4.3.1/.github/workflows/c-cpp.yml --- audacious-plugins-4.1/.github/workflows/c-cpp.yml 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/.github/workflows/c-cpp.yml 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,74 @@ +name: C/C++ CI + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + strategy: + matrix: + os: ['ubuntu-20.04', 'ubuntu-22.04', 'macos-12', 'windows-2022'] + build-system: ['autotools', 'meson'] + fail-fast: false + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout audacious-plugins + uses: actions/checkout@v3 + + - name: Checkout audacious + uses: actions/checkout@v3 + with: + repository: audacious-media-player/audacious + path: audacious + + - name: Install dependencies + uses: ./.github/actions/install-dependencies + with: + os: ${{ matrix.os }} + build-system: ${{ matrix.build-system }} + + - name: Configure audacious + uses: ./audacious/.github/actions/run-action + with: + action: 'configure' + os: ${{ matrix.os }} + build-system: ${{ matrix.build-system }} + + - name: Build audacious + uses: ./audacious/.github/actions/run-action + with: + action: 'build' + os: ${{ matrix.os }} + build-system: ${{ matrix.build-system }} + + - name: Install audacious + uses: ./audacious/.github/actions/run-action + with: + action: 'install' + os: ${{ matrix.os }} + build-system: ${{ matrix.build-system }} + + - name: Configure audacious-plugins + uses: ./.github/actions/run-action + with: + action: 'configure' + os: ${{ matrix.os }} + build-system: ${{ matrix.build-system }} + + - name: Build audacious-plugins + uses: ./.github/actions/run-action + with: + action: 'build' + os: ${{ matrix.os }} + build-system: ${{ matrix.build-system }} + + - name: Install audacious-plugins + uses: ./.github/actions/run-action + with: + action: 'install' + os: ${{ matrix.os }} + build-system: ${{ matrix.build-system }} diff -Nru audacious-plugins-4.1/.travis.yml audacious-plugins-4.3.1/.travis.yml --- audacious-plugins-4.1/.travis.yml 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/.travis.yml 1970-01-01 00:00:00.000000000 +0000 @@ -1,31 +0,0 @@ -language: - - cpp -compiler: - - gcc - - clang -before_install: - - sudo apt-get -qq update - - sudo apt-get install libgtk2.0-dev qtbase5-dev qtmultimedia5-dev - - sudo apt-get install libasound2-dev libavformat-dev libbinio-dev libbs2b-dev - - sudo apt-get install libcddb2-dev libcdio-cdda-dev libcue-dev libcurl4-gnutls-dev - - sudo apt-get install libdbus-glib-1-dev libfaad-dev libflac-dev libfluidsynth-dev - - sudo apt-get install libgl1-mesa-dev libjack-jackd2-dev liblircclient-dev - - sudo apt-get install libmms-dev libmodplug-dev libmp3lame-dev libmpg123-dev - - sudo apt-get install libneon27-gnutls-dev libnotify-dev libpulse-dev - - sudo apt-get install libsamplerate0-dev libsdl1.2-dev libsidplayfp-dev - - sudo apt-get install libsndfile1-dev libsoxr-dev libvorbis-dev libwavpack-dev - - sudo apt-get install libxml2-dev libadplug-dev libqt5opengl5-dev - - sudo apt-get install libarchive-dev -install: - - git clone git://github.com/audacious-media-player/audacious.git audacious - - cd audacious - - ./autogen.sh - - ./configure --prefix=/opt/aud --enable-gtk - - make - - sudo make install - - cd .. -script: - - export PKG_CONFIG_PATH=/opt/aud/lib/pkgconfig - - ./autogen.sh - - ./configure --prefix=/opt/aud --enable-gtk - - make diff -Nru audacious-plugins-4.1/COPYING audacious-plugins-4.3.1/COPYING --- audacious-plugins-4.1/COPYING 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/COPYING 2023-04-29 20:17:32.000000000 +0000 @@ -1,6 +1,6 @@ The build system and framework for installing and managing plugins is: -Copyright © 2001-2016 Audacious developers +Copyright © 2001-2023 Audacious developers Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff -Nru audacious-plugins-4.1/acinclude.m4 audacious-plugins-4.3.1/acinclude.m4 --- audacious-plugins-4.1/acinclude.m4 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/acinclude.m4 2023-04-29 20:17:32.000000000 +0000 @@ -167,7 +167,7 @@ AC_PATH_PROG([CP], [cp]) AC_PATH_TOOL([AR], [ar]) AC_PATH_TOOL([RANLIB], [ranlib]) -AC_PATH_TOOL([WINDRES], [windres]) +AC_PATH_TOOL([RC], [windres]) dnl Check for POSIX threads dnl ======================= @@ -184,11 +184,23 @@ dnl GTK+ support dnl ============= +AC_ARG_ENABLE(gtk3, + AS_HELP_STRING(--enable-gtk3, [Use GTK3 instead of GTK2 (default=disabled)]), + USE_GTK3=$enableval, USE_GTK3=no) + +if test $USE_GTK3 = yes ; then + PKG_CHECK_MODULES(GTK, gtk+-3.0 >= 3.22) + AC_DEFINE(USE_GTK, 1, [Define if GTK+ support enabled]) + AC_DEFINE(USE_GTK3, 1, [Define if GTK3+ support enabled]) +fi + +AC_SUBST(USE_GTK3) + AC_ARG_ENABLE(gtk, AS_HELP_STRING(--disable-gtk, [Disable GTK+ support (default=enabled)]), USE_GTK=$enableval, USE_GTK=yes) -if test $USE_GTK = yes ; then +if test $USE_GTK = yes -a $USE_GTK3 = no ; then PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.24) AC_DEFINE([USE_GTK], [1], [Define if GTK+ support enabled]) fi diff -Nru audacious-plugins-4.1/buildsys.mk.in audacious-plugins-4.3.1/buildsys.mk.in --- audacious-plugins-4.1/buildsys.mk.in 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/buildsys.mk.in 2023-04-29 20:17:32.000000000 +0000 @@ -1,6 +1,6 @@ # # Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, -# 2017, 2018, 2020 +# 2017, 2018, 2020, 2021, 2022 # Jonathan Schleifer # # https://fossil.nil.im/buildsys @@ -56,6 +56,7 @@ LIB_LDFLAGS_INSTALL_NAME = @LIB_LDFLAGS_INSTALL_NAME@ LIB_PREFIX = @LIB_PREFIX@ LIB_SUFFIX = @LIB_SUFFIX@ +LINK_LIB = @LINK_LIB@ AMIGA_LIB_CFLAGS = @AMIGA_LIB_CFLAGS@ AMIGA_LIB_LDFLAGS = @AMIGA_LIB_LDFLAGS@ PLUGIN_CFLAGS = @PLUGIN_CFLAGS@ @@ -80,7 +81,7 @@ JAVAC = @JAVAC@ JAVACFLAGS = @JAVACFLAGS@ JAR = @JAR@ -WINDRES = @WINDRES@ +RC = @RC@ BUILD_AND_HOST_ARE_DARWIN = @BUILD_AND_HOST_ARE_DARWIN@ prefix = @prefix@ exec_prefix = @exec_prefix@ @@ -149,7 +150,8 @@ depend: pre-depend : >.deps - for i in ${DEPS}; do \ + for i in "" ${DEPS}; do \ + test x"$$i" = x"" && continue; \ echo "-include \$${.CURDIR}/$$i" >>.deps; \ done @@ -183,7 +185,7 @@ ${SHARED_LIB} ${SHARED_LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA} ${LINK_STATUS} out="$@"; \ - if ${LD} -o $@ ${LIB_OBJS} ${LIB_OBJS_EXTRA} ${LIB_LDFLAGS} ${LIB_LDFLAGS_INSTALL_NAME} ${LDFLAGS} ${LIBS}; then \ + if ${LD} -o $@ ${LIB_OBJS} ${LIB_OBJS_EXTRA} ${LIB_LDFLAGS} ${LIB_LDFLAGS_INSTALL_NAME} ${LDFLAGS} ${LIBS} ${LINK_LIB}; then \ ${LINK_OK}; \ else \ ${LINK_FAILED}; \ @@ -210,7 +212,7 @@ if test x"${includesubdir}" = x"${COPY_HEADERS_IF_SUBDIR}"; then \ for i in "" ${INCLUDES}; do \ test x"$$i" = x"" && continue; \ - ${MKDIR_P} ${COPY_HEADERS_DESTINATION} || exit $$?; \ + ${MKDIR_P} $$(dirname ${COPY_HEADERS_DESTINATION}/$$i) || exit $$?; \ ${INSTALL} -m 644 $$i ${COPY_HEADERS_DESTINATION}/$$i || exit $$?; \ done \ fi @@ -249,12 +251,12 @@ ars=""; \ for i in ${OBJS} ${OBJS_EXTRA}; do \ case $$i in \ - *.a) \ - ars="$$ars $$i" \ - ;; \ - *.o) \ - objs="$$objs $$i" \ - ;; \ + *.a) \ + ars="$$ars $$i" \ + ;; \ + *.o) \ + objs="$$objs $$i" \ + ;; \ esac \ done; \ for i in $$ars; do \ @@ -296,12 +298,12 @@ ars=""; \ for i in ${LIB_OBJS} ${LIB_OBJS_EXTRA}; do \ case $$i in \ - *.a) \ - ars="$$ars $$i" \ - ;; \ - *.o) \ - objs="$$objs $$i" \ - ;; \ + *.a) \ + ars="$$ars $$i" \ + ;; \ + *.o) \ + objs="$$objs $$i" \ + ;; \ esac \ done; \ for i in $$ars; do \ @@ -335,12 +337,12 @@ ars=""; \ for i in ${AMIGA_LIB_OBJS} ${AMIGA_LIB_OBJS_EXTRA}; do \ case $$i in \ - *.a) \ - ars="$$ars $$i" \ - ;; \ - *.o) \ - objs="$$objs $$i" \ - ;; \ + *.a) \ + ars="$$ars $$i" \ + ;; \ + *.o) \ + objs="$$objs $$i" \ + ;; \ esac \ done; \ for i in $$ars; do \ @@ -577,7 +579,7 @@ ${COMPILE_STATUS} in="$<"; \ out="$@"; \ - if ${WINDRES} -J rc -O coff -o $@ $<; then \ + if ${RC} ${RCFLAGS} -J rc -O coff -o $@ $<; then \ ${COMPILE_OK}; \ else \ ${COMPILE_FAILED}; \ @@ -731,7 +733,7 @@ for i in "" ${INCLUDES}; do \ test x"$$i" = x"" && continue; \ ${INSTALL_STATUS}; \ - if ${MKDIR_P} ${DESTDIR}${includedir}/${includesubdir} && ${INSTALL} -m 644 $$i ${DESTDIR}${includedir}/${includesubdir}/$$i; then \ + if ${MKDIR_P} $$(dirname ${DESTDIR}${includedir}/${includesubdir}/$$i) && ${INSTALL} -m 644 $$i ${DESTDIR}${includedir}/${includesubdir}/$$i; then \ ${INSTALL_OK}; \ else \ ${INSTALL_FAILED}; \ @@ -771,7 +773,7 @@ for i in "" ${SHARED_LIB}; do \ test x"$$i" = x"" && continue; \ - if test -f ${DESTDIR}${libdir}/$$i; then \ + if test -f ${DESTDIR}${libdir}/$$i -o -f ${DESTDIR}${bindir}/$$i; then \ if : @UNINSTALL_LIB@; then \ ${DELETE_OK}; \ else \ @@ -886,7 +888,7 @@ : >.deps - for i in "" ${DEPS} ${OBJS} ${OBJS_EXTRA} ${LIB_OBJS} ${LIB_OBJS_EXTRA} ${AMIGA_LIB_OBJS} ${AMIGA_LIB_OBJS_EXTRA} ${PLUGIN_OBJS} ${PROG} ${PROG_NOINST} ${SHARED_LIB} ${SHARED_LIB_NOINST} ${AMIGA_LIB} ${AMIGA_LIB_NOINST} ${STATIC_LIB} ${STATIC_LIB_NOINST} ${STATIC_PIC_LIB} ${STATIC_PIC_LIB_NOINST} ${STATIC_AMIGA_LIB} ${STATIC_AMIGA_LIB_NOINST} ${FRAMEWORK} ${PLUGIN} ${PLUGIN_NOINST} ${CLEAN_LIB} ${MO_FILES} ${CLEAN}; do \ + for i in "" ${DEPS} ${OBJS} ${OBJS_EXTRA} ${LIB_OBJS} ${LIB_OBJS_EXTRA} ${AMIGA_LIB_OBJS} ${AMIGA_LIB_OBJS_START} ${AMIGA_LIB_OBJS_EXTRA} ${PLUGIN_OBJS} ${PROG} ${PROG_NOINST} ${SHARED_LIB} ${SHARED_LIB_NOINST} ${AMIGA_LIB} ${AMIGA_LIB_NOINST} ${STATIC_LIB} ${STATIC_LIB_NOINST} ${STATIC_PIC_LIB} ${STATIC_PIC_LIB_NOINST} ${STATIC_AMIGA_LIB} ${STATIC_AMIGA_LIB_NOINST} ${FRAMEWORK} ${PLUGIN} ${PLUGIN_NOINST} ${CLEAN_LIB} ${MO_FILES} ${CLEAN}; do \ test x"$$i" = x"" && continue; \ if test -f $$i -o -d $$i; then \ if rm -fr $$i; then \ diff -Nru audacious-plugins-4.1/config.h.in audacious-plugins-4.3.1/config.h.in --- audacious-plugins-4.1/config.h.in 2021-02-01 23:53:25.000000000 +0000 +++ audacious-plugins-4.3.1/config.h.in 2023-04-29 20:18:21.000000000 +0000 @@ -43,9 +43,6 @@ */ #undef HAVE_DCGETTEXT -/* Define if using FFmpeg */ -#undef HAVE_FFMPEG - /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT @@ -55,18 +52,12 @@ /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H -/* Define if using libav */ -#undef HAVE_LIBAV - /* Define if libcue version is >= 2.0 */ #undef HAVE_LIBCUE2 /* Define to 1 if you have the header file. */ #undef HAVE_LIRC_LIRC_CLIENT_H -/* Define to 1 if you have the header file. */ -#undef HAVE_SOUNDCARD_H - /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H @@ -129,6 +120,9 @@ /* Define if GTK+ support enabled */ #undef USE_GTK +/* Define if GTK3+ support enabled */ +#undef USE_GTK3 + /* Define if Qt support enabled */ #undef USE_QT diff -Nru audacious-plugins-4.1/configure audacious-plugins-4.3.1/configure --- audacious-plugins-4.1/configure 2021-02-01 23:53:25.000000000 +0000 +++ audacious-plugins-4.3.1/configure 2023-04-29 20:18:21.000000000 +0000 @@ -1,15 +1,16 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.70 for audacious-plugins 4.1. +# Generated by GNU Autoconf 2.71 for audacious-plugins 4.3.1. # # -# Copyright (C) 1992-1996, 1998-2017, 2020 Free Software Foundation, Inc. +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # -# Copyright (C) 2001-2021 Audacious developers and others +# Copyright (C) 2001-2023 Audacious developers and others ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## @@ -609,8 +610,8 @@ # Identity of this package. PACKAGE_NAME='audacious-plugins' PACKAGE_TARNAME='audacious-plugins' -PACKAGE_VERSION='4.1' -PACKAGE_STRING='audacious-plugins 4.1' +PACKAGE_VERSION='4.3.1' +PACKAGE_STRING='audacious-plugins 4.3.1' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -683,8 +684,6 @@ FILEWRITER_CFLAGS SDL_LIBS SDL_CFLAGS -FFMPEG_LIBS -FFMPEG_CFLAGS QTX11EXTRAS_LIBS QTX11EXTRAS_CFLAGS QTOPENGL_LIBS @@ -711,8 +710,12 @@ NEON_CFLAGS CUE_LIBS CUE_CFLAGS +SNDIO_LIBS +SNDIO_CFLAGS PULSE_LIBS PULSE_CFLAGS +PIPEWIRE_LIBS +PIPEWIRE_CFLAGS OSS_CFLAGS JACK_LIBS JACK_CFLAGS @@ -732,12 +735,16 @@ MODPLUG_CFLAGS SNDFILE_LIBS SNDFILE_CFLAGS +FFMPEG_LIBS +FFMPEG_CFLAGS WAVPACK_LIBS WAVPACK_CFLAGS MPG123_LIBS MPG123_CFLAGS FLUIDSYNTH_LIBS FLUIDSYNTH_CFLAGS +OPUS_LIBS +OPUS_CFLAGS VORBIS_LIBS VORBIS_CFLAGS LIBFLAC_LIBS @@ -769,28 +776,30 @@ USE_NLS SED MKDIR_P -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM SET_MAKE -CLEAN_LIB UNINSTALL_PLUGIN INSTALL_PLUGIN -UNINSTALL_LIB -INSTALL_LIB LINK_PLUGIN PLUGIN_SUFFIX PLUGIN_LDFLAGS PLUGIN_CFLAGS +CLEAN_LIB +UNINSTALL_LIB +INSTALL_LIB LDFLAGS_RPATH +LINK_LIB LIB_SUFFIX LIB_PREFIX LIB_LDFLAGS_INSTALL_NAME LIB_LDFLAGS LIB_CFLAGS +CODESIGN EGREP GREP CPP +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM BUILD_AND_HOST_ARE_DARWIN USE_QT QT_LIBS @@ -801,6 +810,7 @@ GIO_LIBS GIO_CFLAGS USE_GTK +USE_GTK3 GTK_LIBS GTK_CFLAGS GMODULE_LIBS @@ -810,7 +820,7 @@ PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG -WINDRES +RC RANLIB AR CP @@ -894,11 +904,12 @@ ac_user_opts=' enable_option_checking enable_largefile +enable_gtk3 enable_gtk enable_qt +enable_rpath enable_nls with_gnu_ld -enable_rpath with_libiconv_prefix with_libintl_prefix with_system_libxml2 @@ -906,10 +917,12 @@ enable_cdaudio enable_flac enable_vorbis +enable_opus enable_amidiplug enable_mpg123 enable_aac enable_wavpack +enable_ffaudio enable_sndfile enable_modplug enable_openmpt @@ -922,6 +935,7 @@ enable_alsa enable_jack enable_oss4 +enable_pipewire enable_pulse enable_sndio enable_cue @@ -941,7 +955,6 @@ enable_qtglspectrum enable_qthotkey enable_coreaudio -with_ffmpeg with_libsdl enable_sdlout enable_filewriter @@ -994,12 +1007,16 @@ LIBFLAC_LIBS VORBIS_CFLAGS VORBIS_LIBS +OPUS_CFLAGS +OPUS_LIBS FLUIDSYNTH_CFLAGS FLUIDSYNTH_LIBS MPG123_CFLAGS MPG123_LIBS WAVPACK_CFLAGS WAVPACK_LIBS +FFMPEG_CFLAGS +FFMPEG_LIBS SNDFILE_CFLAGS SNDFILE_LIBS MODPLUG_CFLAGS @@ -1018,8 +1035,12 @@ ALSA_LIBS JACK_CFLAGS JACK_LIBS +PIPEWIRE_CFLAGS +PIPEWIRE_LIBS PULSE_CFLAGS PULSE_LIBS +SNDIO_CFLAGS +SNDIO_LIBS CUE_CFLAGS CUE_LIBS NEON_CFLAGS @@ -1044,8 +1065,6 @@ QTOPENGL_LIBS QTX11EXTRAS_CFLAGS QTX11EXTRAS_LIBS -FFMPEG_CFLAGS -FFMPEG_LIBS SDL_CFLAGS SDL_LIBS' @@ -1596,7 +1615,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures audacious-plugins 4.1 to adapt to many kinds of systems. +\`configure' configures audacious-plugins 4.3.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1664,7 +1683,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of audacious-plugins 4.1:";; + short | recursive ) echo "Configuration of audacious-plugins 4.3.1:";; esac cat <<\_ACEOF @@ -1673,18 +1692,22 @@ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-largefile omit support for large files + --enable-gtk3 Use GTK3 instead of GTK2 (default=disabled) --disable-gtk Disable GTK+ support (default=enabled) --disable-qt Disable Qt support (default=enabled) + --disable-rpath do not use rpath --disable-nls do not use Native Language Support --disable-rpath do not hardcode runtime library paths --enable-adplug enable AdLib support (default=auto) --enable-cdaudio enable audio CD support (default=auto) --enable-flac enable FLAC support (default=yes) --enable-vorbis enable Ogg Vorbis support (default=yes) + --enable-opus enable Opus support (default=yes) --enable-amidiplug enable MIDI synthesizer (default=auto) --enable-mpg123 enable MP3 support (default=yes) --enable-aac enable AAC support (default=auto) --enable-wavpack enable WavPack support (default=yes) + --enable-ffaudio enable FFmpeg decoder (default=auto) --enable-sndfile enable libsndfile decoder (default=auto) --enable-modplug enable ModPlug (default=auto) --enable-openmpt enable libopenmpt (default=auto) @@ -1697,6 +1720,7 @@ --enable-alsa enable ALSA output (default=auto) --enable-jack enable JACK output (default=auto) --enable-oss4 enable OSS output (default=auto) + --enable-pipewire enable PipeWire output (default=auto) --enable-pulse enable PulseAudio output (default=auto) --enable-sndio enable Sndio output (default=auto) --enable-cue enable cue sheet support (default=auto) @@ -1732,9 +1756,6 @@ --without-libintl-prefix don't search for libintl in includedir and libdir --with-system-libxml2=yes,no Use system version of libxml2 (default=yes) - --with-ffmpeg=ffmpeg,libav,none - choose between FFmpeg, libav, or neither - (default=ffmpeg) --with-libsdl=1,2 select which SDL version to use (default=auto) Some influential environment variables: @@ -1793,6 +1814,8 @@ VORBIS_CFLAGS C compiler flags for VORBIS, overriding pkg-config VORBIS_LIBS linker flags for VORBIS, overriding pkg-config + OPUS_CFLAGS C compiler flags for OPUS, overriding pkg-config + OPUS_LIBS linker flags for OPUS, overriding pkg-config FLUIDSYNTH_CFLAGS C compiler flags for FLUIDSYNTH, overriding pkg-config FLUIDSYNTH_LIBS @@ -1804,6 +1827,9 @@ C compiler flags for WAVPACK, overriding pkg-config WAVPACK_LIBS linker flags for WAVPACK, overriding pkg-config + FFMPEG_CFLAGS + C compiler flags for FFMPEG, overriding pkg-config + FFMPEG_LIBS linker flags for FFMPEG, overriding pkg-config SNDFILE_CFLAGS C compiler flags for SNDFILE, overriding pkg-config SNDFILE_LIBS @@ -1832,9 +1858,16 @@ ALSA_LIBS linker flags for ALSA, overriding pkg-config JACK_CFLAGS C compiler flags for JACK, overriding pkg-config JACK_LIBS linker flags for JACK, overriding pkg-config + PIPEWIRE_CFLAGS + C compiler flags for PIPEWIRE, overriding pkg-config + PIPEWIRE_LIBS + linker flags for PIPEWIRE, overriding pkg-config PULSE_CFLAGS C compiler flags for PULSE, overriding pkg-config PULSE_LIBS linker flags for PULSE, overriding pkg-config + SNDIO_CFLAGS + C compiler flags for SNDIO, overriding pkg-config + SNDIO_LIBS linker flags for SNDIO, overriding pkg-config CUE_CFLAGS C compiler flags for CUE, overriding pkg-config CUE_LIBS linker flags for CUE, overriding pkg-config NEON_CFLAGS C compiler flags for NEON, overriding pkg-config @@ -1872,9 +1905,6 @@ C compiler flags for QTX11EXTRAS, overriding pkg-config QTX11EXTRAS_LIBS linker flags for QTX11EXTRAS, overriding pkg-config - FFMPEG_CFLAGS - C compiler flags for FFMPEG, overriding pkg-config - FFMPEG_LIBS linker flags for FFMPEG, overriding pkg-config SDL_CFLAGS C compiler flags for SDL, overriding pkg-config SDL_LIBS linker flags for SDL, overriding pkg-config @@ -1945,14 +1975,14 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -audacious-plugins configure 4.1 -generated by GNU Autoconf 2.70 +audacious-plugins configure 4.3.1 +generated by GNU Autoconf 2.71 -Copyright (C) 2020 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. -Copyright (C) 2001-2021 Audacious developers and others +Copyright (C) 2001-2023 Audacious developers and others _ACEOF exit fi @@ -2410,8 +2440,8 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by audacious-plugins $as_me 4.1, which was -generated by GNU Autoconf 2.70. Invocation command line was +It was created by audacious-plugins $as_me 4.3.1, which was +generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -4361,7 +4391,10 @@ CFLAGS= fi fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : @@ -4385,28 +4418,28 @@ done rm -f conftest.$ac_ext CC=$ac_save_CC - fi -# AC_CACHE_VAL -ac_prog_cc_stdc_options= -case "x$ac_cv_prog_cc_c11" in #( - x) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } ;; #( - xno) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } ;; #( - *) : - ac_prog_cc_stdc_options=" $ac_cv_prog_cc_c11" - CC="$CC$ac_prog_cc_stdc_options" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 -printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c11" != xno + +if test "x$ac_cv_prog_cc_c11" = xno then : - ac_prog_cc_stdc=c11 - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} @@ -4417,9 +4450,9 @@ ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_c_conftest_c89_program +$ac_c_conftest_c99_program _ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc1x -qlanglvl=extc99 +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" @@ -4431,28 +4464,28 @@ done rm -f conftest.$ac_ext CC=$ac_save_CC - fi -# AC_CACHE_VAL -ac_prog_cc_stdc_options= -case "x$ac_cv_prog_cc_c99" in #( - x) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } ;; #( - xno) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } ;; #( - *) : - ac_prog_cc_stdc_options=" $ac_cv_prog_cc_c99" - CC="$CC$ac_prog_cc_stdc_options" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c99" != xno + +if test "x$ac_cv_prog_cc_c99" = xno then : - ac_prog_cc_stdc=c99 - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} @@ -4465,8 +4498,7 @@ /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" @@ -4478,34 +4510,25 @@ done rm -f conftest.$ac_ext CC=$ac_save_CC - fi -# AC_CACHE_VAL -ac_prog_cc_stdc_options= -case "x$ac_cv_prog_cc_c89" in #( - x) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } ;; #( - xno) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } ;; #( - *) : - ac_prog_cc_stdc_options=" $ac_cv_prog_cc_c89" - CC="$CC$ac_prog_cc_stdc_options" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno + +if test "x$ac_cv_prog_cc_c89" = xno then : - ac_prog_cc_stdc=c89 - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } else $as_nop - ac_prog_cc_stdc=no - ac_cv_prog_cc_stdc=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" fi - + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 fi - fi ac_ext=c @@ -4789,19 +4812,22 @@ CXXFLAGS= fi fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 +ac_prog_cxx_stdcxx=no +if test x$ac_prog_cxx_stdcxx = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 printf %s "checking for $CXX option to enable C++11 features... " >&6; } -if test ${ac_cv_prog_cxx_cxx11+y} +if test ${ac_cv_prog_cxx_11+y} then : printf %s "(cached) " >&6 else $as_nop - ac_cv_prog_cxx_cxx11=no + ac_cv_prog_cxx_11=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx11_program _ACEOF -for ac_arg in '' -std=gnu++11 -std=c++11 -std=gnu++0x -std=c++0x -qlanglvl=extended0x -AA +for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" @@ -4813,36 +4839,35 @@ done rm -f conftest.$ac_ext CXX=$ac_save_CXX - fi -# AC_CACHE_VAL -ac_prog_cxx_stdcxx_options= -case "x$ac_cv_prog_cxx_cxx11" in #( - x) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } ;; #( - xno) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } ;; #( - *) : - ac_prog_cxx_stdcxx_options=" $ac_cv_prog_cxx_cxx11" - CXX=$CXX$ac_prog_cxx_stdcxx_options - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 -printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } ;; -esac -if test "x$ac_cv_prog_cxx_cxx11" != xno + +if test "x$ac_cv_prog_cxx_cxx11" = xno then : - ac_prog_cxx_stdcxx=cxx11 - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 - ac_cv_prog_cxx_cxx98=$ac_cv_prog_cxx_cxx11 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cxx_cxx11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } + CXX="$CXX $ac_cv_prog_cxx_cxx11" +fi + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 + ac_prog_cxx_stdcxx=cxx11 +fi +fi +if test x$ac_prog_cxx_stdcxx = xno +then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 printf %s "checking for $CXX option to enable C++98 features... " >&6; } -if test ${ac_cv_prog_cxx_cxx98+y} +if test ${ac_cv_prog_cxx_98+y} then : printf %s "(cached) " >&6 else $as_nop - ac_cv_prog_cxx_cxx98=no + ac_cv_prog_cxx_98=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -4860,32 +4885,25 @@ done rm -f conftest.$ac_ext CXX=$ac_save_CXX - fi -# AC_CACHE_VAL -ac_prog_cxx_stdcxx_options= -case "x$ac_cv_prog_cxx_cxx98" in #( - x) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } ;; #( - xno) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } ;; #( - *) : - ac_prog_cxx_stdcxx_options=" $ac_cv_prog_cxx_cxx98" - CXX=$CXX$ac_prog_cxx_stdcxx_options - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 -printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } ;; -esac -if test "x$ac_cv_prog_cxx_cxx98" != xno + +if test "x$ac_cv_prog_cxx_cxx98" = xno then : - ac_prog_cxx_stdcxx=cxx98 - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cxx_cxx98" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } else $as_nop - ac_prog_cxx_stdcxx=no - ac_cv_prog_cxx_stdcxx=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } + CXX="$CXX $ac_cv_prog_cxx_cxx98" +fi + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 + ac_prog_cxx_stdcxx=cxx98 fi - fi ac_ext=c @@ -7123,13 +7141,13 @@ set dummy ${ac_tool_prefix}windres; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_WINDRES+y} +if test ${ac_cv_path_RC+y} then : printf %s "(cached) " >&6 else $as_nop - case $WINDRES in + case $RC in [\\/]* | ?:[\\/]*) - ac_cv_path_WINDRES="$WINDRES" # Let the user override the test with a path. + ac_cv_path_RC="$RC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -7143,7 +7161,7 @@ esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_WINDRES="$as_dir$ac_word$ac_exec_ext" + ac_cv_path_RC="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi @@ -7154,10 +7172,10 @@ ;; esac fi -WINDRES=$ac_cv_path_WINDRES -if test -n "$WINDRES"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5 -printf "%s\n" "$WINDRES" >&6; } +RC=$ac_cv_path_RC +if test -n "$RC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RC" >&5 +printf "%s\n" "$RC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } @@ -7165,19 +7183,19 @@ fi -if test -z "$ac_cv_path_WINDRES"; then - ac_pt_WINDRES=$WINDRES +if test -z "$ac_cv_path_RC"; then + ac_pt_RC=$RC # Extract the first word of "windres", so it can be a program name with args. set dummy windres; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_WINDRES+y} +if test ${ac_cv_path_ac_pt_RC+y} then : printf %s "(cached) " >&6 else $as_nop - case $ac_pt_WINDRES in + case $ac_pt_RC in [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_WINDRES="$ac_pt_WINDRES" # Let the user override the test with a path. + ac_cv_path_ac_pt_RC="$ac_pt_RC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -7191,7 +7209,7 @@ esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_WINDRES="$as_dir$ac_word$ac_exec_ext" + ac_cv_path_ac_pt_RC="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi @@ -7202,17 +7220,17 @@ ;; esac fi -ac_pt_WINDRES=$ac_cv_path_ac_pt_WINDRES -if test -n "$ac_pt_WINDRES"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_WINDRES" >&5 -printf "%s\n" "$ac_pt_WINDRES" >&6; } +ac_pt_RC=$ac_cv_path_ac_pt_RC +if test -n "$ac_pt_RC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_RC" >&5 +printf "%s\n" "$ac_pt_RC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi - if test "x$ac_pt_WINDRES" = x; then - WINDRES="" + if test "x$ac_pt_RC" = x; then + RC="" else case $cross_compiling:$ac_tool_warned in yes:) @@ -7220,10 +7238,10 @@ printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac - WINDRES=$ac_pt_WINDRES + RC=$ac_pt_RC fi else - WINDRES="$ac_cv_path_WINDRES" + RC="$ac_cv_path_RC" fi @@ -7476,6 +7494,117 @@ +# Check whether --enable-gtk3 was given. +if test ${enable_gtk3+y} +then : + enableval=$enable_gtk3; USE_GTK3=$enableval +else $as_nop + USE_GTK3=no +fi + + +if test $USE_GTK3 = yes ; then + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GTK" >&5 +printf %s "checking for GTK... " >&6; } + +if test -n "$GTK_CFLAGS"; then + pkg_cv_GTK_CFLAGS="$GTK_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-3.0 >= 3.22\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gtk+-3.0 >= 3.22") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-3.0 >= 3.22" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GTK_LIBS"; then + pkg_cv_GTK_LIBS="$GTK_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-3.0 >= 3.22\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gtk+-3.0 >= 3.22") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtk+-3.0 >= 3.22" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk+-3.0 >= 3.22" 2>&1` + else + GTK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk+-3.0 >= 3.22" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GTK_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (gtk+-3.0 >= 3.22) were not met: + +$GTK_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables GTK_CFLAGS +and GTK_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables GTK_CFLAGS +and GTK_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details" "$LINENO" 5; } +else + GTK_CFLAGS=$pkg_cv_GTK_CFLAGS + GTK_LIBS=$pkg_cv_GTK_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +fi + +printf "%s\n" "#define USE_GTK 1" >>confdefs.h + + +printf "%s\n" "#define USE_GTK3 1" >>confdefs.h + +fi + + + # Check whether --enable-gtk was given. if test ${enable_gtk+y} then : @@ -7485,7 +7614,7 @@ fi -if test $USE_GTK = yes ; then +if test $USE_GTK = yes -a $USE_GTK3 = no ; then pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GTK" >&5 @@ -8013,18 +8142,131 @@ + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + + + # Check whether --enable-rpath was given. +if test ${enable_rpath+y} +then : + enableval=$enable_rpath; +fi + case "$build_os" in + darwin*) + case "$host_os" in darwin*) - case "$host_os" in - darwin*) - BUILD_AND_HOST_ARE_DARWIN=yes + BUILD_AND_HOST_ARE_DARWIN=yes - ;; - esac ;; + esac + ;; + esac + + + case "$INSTALL" in + ./build-aux/install-sh*) + INSTALL="$PWD/$INSTALL" + ;; esac @@ -8306,170 +8548,283 @@ case "$host_os" in - darwin*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether host is iOS" >&5 + darwin*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether host is iOS" >&5 printf %s "checking whether host is iOS... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include + #include - #if (defined(TARGET_OS_IPHONE) && \ - TARGET_OS_IPHONE) || \ - (defined(TARGET_OS_SIMULATOR) && \ - TARGET_OS_SIMULATOR) - yes - #endif + #if (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) || \ + (defined(TARGET_OS_SIMULATOR) && \ + TARGET_OS_SIMULATOR) + yes + #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1 then : - host_is_ios="yes" + host_is_ios="yes" else $as_nop - host_is_ios="no" + host_is_ios="no" fi rm -rf conftest* - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $host_is_ios" >&5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $host_is_ios" >&5 printf "%s\n" "$host_is_ios" >&6; } - ;; + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}codesign", so it can be a program name with args. +set dummy ${ac_tool_prefix}codesign; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CODESIGN+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CODESIGN"; then + ac_cv_prog_CODESIGN="$CODESIGN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CODESIGN="${ac_tool_prefix}codesign" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CODESIGN=$ac_cv_prog_CODESIGN +if test -n "$CODESIGN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CODESIGN" >&5 +printf "%s\n" "$CODESIGN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CODESIGN"; then + ac_ct_CODESIGN=$CODESIGN + # Extract the first word of "codesign", so it can be a program name with args. +set dummy codesign; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CODESIGN+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CODESIGN"; then + ac_cv_prog_ac_ct_CODESIGN="$ac_ct_CODESIGN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CODESIGN="codesign" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CODESIGN=$ac_cv_prog_ac_ct_CODESIGN +if test -n "$ac_ct_CODESIGN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CODESIGN" >&5 +printf "%s\n" "$ac_ct_CODESIGN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CODESIGN" = x; then + CODESIGN="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CODESIGN=$ac_ct_CODESIGN + fi +else + CODESIGN="$ac_cv_prog_CODESIGN" +fi + + ;; esac - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library system" >&5 -printf %s "checking for shared library system... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library type" >&5 +printf %s "checking for shared library type... " >&6; } - case "$host_os" in - darwin*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5 + case "$host" in + *-*-darwin*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5 printf "%s\n" "Darwin" >&6; } - LIB_CFLAGS='-fPIC -DPIC' - LIB_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}' - LIB_LDFLAGS_INSTALL_NAME='-Wl,-install_name,${libdir}/$${out%.dylib}.${LIB_MAJOR}.dylib' - LIB_PREFIX='lib' - LIB_SUFFIX='.dylib' - LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CFLAGS='-fPIC -DPIC' - PLUGIN_LDFLAGS='-bundle ${PLUGIN_LDFLAGS_BUNDLE_LOADER}' - PLUGIN_SUFFIX='.bundle' - if test x"$host_is_ios" = x"yes" + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}' + LIB_LDFLAGS_INSTALL_NAME='-Wl,-install_name,${libdir}/$${out%.dylib}.${LIB_MAJOR}.dylib' + LIB_PREFIX='lib' + LIB_SUFFIX='.dylib' + if test x"$enable_rpath" != x"no" then : - LINK_PLUGIN='rm -fr $$out && ${MKDIR_P} $$out && if test -f Info.plist; then ${INSTALL} -m 644 Info.plist $$out/Info.plist; fi && ${LD} -o $$out/$${out%${PLUGIN_SUFFIX}} ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS} && ${CODESIGN} -fs ${CODESIGN_IDENTITY} --timestamp=none $$out' - -else $as_nop - - LINK_PLUGIN='rm -fr $$out && ${MKDIR_P} $$out/Contents/MacOS && if test -f Info.plist; then ${INSTALL} -m 644 Info.plist $$out/Contents/Info.plist; fi && ${LD} -o $$out/Contents/MacOS/$${out%${PLUGIN_SUFFIX}} ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS} && ${CODESIGN} -fs ${CODESIGN_IDENTITY} --timestamp=none $$out' + LDFLAGS_RPATH='-Wl,-rpath,${libdir}' fi - INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$$i' - UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib' - INSTALL_PLUGIN='&& rm -fr ${DESTDIR}${plugindir}/$$i && cp -R $$i ${DESTDIR}${plugindir}/' - UNINSTALL_PLUGIN='&& rm -fr ${DESTDIR}${plugindir}/$$i' - CLEAN_LIB='' - ;; - mingw* | cygwin*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: MinGW / Cygwin" >&5 + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$$i' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib' + CLEAN_LIB='' + ;; + *-*-mingw* | *-*-cygwin*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: MinGW / Cygwin" >&5 printf "%s\n" "MinGW / Cygwin" >&6; } - LIB_CFLAGS='' - LIB_LDFLAGS='-shared -Wl,--export-all-symbols,--out-implib,lib${SHARED_LIB}.a' - LIB_LDFLAGS_INSTALL_NAME='' - LIB_PREFIX='' - LIB_SUFFIX='.dll' - LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CFLAGS='' - PLUGIN_LDFLAGS='-shared' - PLUGIN_SUFFIX='.dll' - LINK_PLUGIN='${LD} -o $$out ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}' - INSTALL_LIB='&& ${MKDIR_P} ${DESTDIR}${bindir} && ${INSTALL} -m 755 $$i ${DESTDIR}${bindir}/$$i && ${INSTALL} -m 755 lib$$i.a ${DESTDIR}${libdir}/lib$$i.a' - UNINSTALL_LIB='&& rm -f ${DESTDIR}${bindir}/$$i ${DESTDIR}${libdir}/lib$$i.a' - INSTALL_PLUGIN='&& ${INSTALL} -m 755 $$i ${DESTDIR}${plugindir}/$$i' - UNINSTALL_PLUGIN='&& rm -f ${DESTDIR}${plugindir}/$$i' - CLEAN_LIB='${SHARED_LIB}.a' - ;; - openbsd* | mirbsd*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: OpenBSD" >&5 + LIB_CFLAGS='' + LIB_LDFLAGS='-shared -Wl,--export-all-symbols' + LIB_LDFLAGS_INSTALL_NAME='' + LIB_PREFIX='' + LIB_SUFFIX='${LIB_MAJOR}.dll' + LINK_LIB='&& rm -f lib$${out%${LIB_SUFFIX}}.dll.a && ${LN_S} $$out lib$${out%${LIB_SUFFIX}}.dll.a' + INSTALL_LIB='&& ${MKDIR_P} ${DESTDIR}${bindir} && ${INSTALL} -m 755 $$i ${DESTDIR}${bindir}/$$i && ${INSTALL} -m 755 lib$${i%${LIB_SUFFIX}}.dll.a ${DESTDIR}${libdir}/lib$${i%${LIB_SUFFIX}}.dll.a' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${bindir}/$$i ${DESTDIR}${libdir}/lib$${i%${LIB_SUFFIX}}.dll.a' + CLEAN_LIB='${SHARED_LIB}.a ${SHARED_LIB_NOINST}.a' + ;; + *-*-openbsd* | *-*-mirbsd*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: OpenBSD" >&5 printf "%s\n" "OpenBSD" >&6; } - LIB_CFLAGS='-fPIC -DPIC' - LIB_LDFLAGS='-shared' - LIB_LDFLAGS_INSTALL_NAME='' - LIB_PREFIX='lib' - LIB_SUFFIX='.so.${LIB_MAJOR}.${LIB_MINOR}' + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-shared' + LIB_LDFLAGS_INSTALL_NAME='' + LIB_PREFIX='lib' + LIB_SUFFIX='.so.${LIB_MAJOR}.${LIB_MINOR}' + if test x"$enable_rpath" != x"no" +then : + LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CFLAGS='-fPIC -DPIC' - PLUGIN_LDFLAGS='-shared' - PLUGIN_SUFFIX='.so' - LINK_PLUGIN='${LD} -o $$out ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}' - INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i' - UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i' - INSTALL_PLUGIN='&& ${INSTALL} -m 755 $$i ${DESTDIR}${plugindir}/$$i' - UNINSTALL_PLUGIN='&& rm -f ${DESTDIR}${plugindir}/$$i' - CLEAN_LIB='' - ;; - solaris*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Solaris" >&5 + +fi + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i' + CLEAN_LIB='' + ;; + *-*-solaris*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Solaris" >&5 printf "%s\n" "Solaris" >&6; } - LIB_CFLAGS='-fPIC -DPIC' - LIB_LDFLAGS='-shared -Wl,-soname=${SHARED_LIB}.${LIB_MAJOR}.${LIB_MINOR}' - LIB_LDFLAGS_INSTALL_NAME='' - LIB_PREFIX='lib' - LIB_SUFFIX='.so' + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-shared -Wl,-soname=$$out.${LIB_MAJOR}.${LIB_MINOR}' + LIB_LDFLAGS_INSTALL_NAME='' + LIB_PREFIX='lib' + LIB_SUFFIX='.so' + if test x"$enable_rpath" != x"no" +then : + LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CFLAGS='-fPIC -DPIC' - PLUGIN_LDFLAGS='-shared' - PLUGIN_SUFFIX='.so' - LINK_PLUGIN='${LD} -o $$out ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}' - INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR} && rm -f ${DESTDIR}${libdir}/$$i && ${LN_S} $$i.${LIB_MAJOR}.${LIB_MINOR} ${DESTDIR}${libdir}/$$i' - UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}' - INSTALL_PLUGIN='&& ${INSTALL} -m 755 $$i ${DESTDIR}${plugindir}/$$i' - UNINSTALL_PLUGIN='&& rm -f ${DESTDIR}${plugindir}/$$i' - CLEAN_LIB='' - ;; - *-android*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Android" >&5 + +fi + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR} && rm -f ${DESTDIR}${libdir}/$$i && ${LN_S} $$i.${LIB_MAJOR}.${LIB_MINOR} ${DESTDIR}${libdir}/$$i' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}' + CLEAN_LIB='' + ;; + *-*-android*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Android" >&5 printf "%s\n" "Android" >&6; } - LIB_CFLAGS='-fPIC -DPIC' - LIB_LDFLAGS='-shared -Wl,-soname=${SHARED_LIB}.${LIB_MAJOR}' - LIB_LDFLAGS_INSTALL_NAME='' - LIB_PREFIX='lib' - LIB_SUFFIX='.so' - LDFLAGS_RPATH='' - PLUGIN_CFLAGS='-fPIC -DPIC' - PLUGIN_LDFLAGS='-shared' - PLUGIN_SUFFIX='.so' - LINK_PLUGIN='${LD} -o $$out ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}' - INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0 && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i' - UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0' - INSTALL_PLUGIN='&& ${INSTALL} -m 755 $$i ${DESTDIR}${plugindir}/$$i' - UNINSTALL_PLUGIN='&& rm -f ${DESTDIR}${plugindir}/$$i' - CLEAN_LIB='' - ;; - *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ELF" >&5 + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-shared -Wl,-soname=$$out.${LIB_MAJOR}' + LIB_LDFLAGS_INSTALL_NAME='' + LIB_PREFIX='lib' + LIB_SUFFIX='.so' + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0 && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0' + CLEAN_LIB='' + ;; + hppa*-*-hpux*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: HP-UX (PA-RISC)" >&5 +printf "%s\n" "HP-UX (PA-RISC)" >&6; } + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-shared -Wl,+h,$$out' + LIB_LDFLAGS_INSTALL_NAME='' + LIB_PREFIX='lib' + LIB_SUFFIX='.${LIB_MAJOR}' + LINK_LIB='&& rm -f $${out%%.*}.sl && ${LN_S} $$out $${out%%.*}.sl' + if test x"$enable_rpath" != x"no" +then : + + LDFLAGS_RPATH='-Wl,+b,${libdir}' + +fi + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i && ${LN_S} -f $$i ${DESTDIR}${libdir}/$${i%%.*}.sl' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$${i%%.*}.sl' + CLEAN_LIB='' + ;; + ia64*-*-hpux*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: HP-UX (Itanium)" >&5 +printf "%s\n" "HP-UX (Itanium)" >&6; } + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-shared -Wl,+h,$$out' + LIB_LDFLAGS_INSTALL_NAME='' + LIB_PREFIX='lib' + LIB_SUFFIX='.${LIB_MAJOR}' + LINK_LIB='&& rm -f $${out%%.*}.so && ${LN_S} $$out $${out%%.*}.so' + if test x"$enable_rpath" != x"no" +then : + + LDFLAGS_RPATH='-Wl,+b,${libdir}' + +fi + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i && ${LN_S} -f $$i ${DESTDIR}${libdir}/$${i%%.*}.so' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$${i%%.*}.so' + CLEAN_LIB='' + ;; + *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ELF" >&5 printf "%s\n" "ELF" >&6; } - LIB_CFLAGS='-fPIC -DPIC' - LIB_LDFLAGS='-shared -Wl,-soname=${SHARED_LIB}.${LIB_MAJOR}' - LIB_LDFLAGS_INSTALL_NAME='' - LIB_PREFIX='lib' - LIB_SUFFIX='.so' + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-shared -Wl,-soname=$$out.${LIB_MAJOR}' + LIB_LDFLAGS_INSTALL_NAME='' + LIB_PREFIX='lib' + LIB_SUFFIX='.so' + if test x"$enable_rpath" != x"no" +then : + LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CFLAGS='-fPIC -DPIC' - PLUGIN_LDFLAGS='-shared' - PLUGIN_SUFFIX='.so' - LINK_PLUGIN='${LD} -o $$out ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}' - INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0 && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i' - UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0' - INSTALL_PLUGIN='&& ${INSTALL} -m 755 $$i ${DESTDIR}${plugindir}/$$i' - UNINSTALL_PLUGIN='&& rm -f ${DESTDIR}${plugindir}/$$i' - CLEAN_LIB='' - ;; + +fi + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0 && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0' + CLEAN_LIB='' + ;; esac @@ -8486,6 +8841,66 @@ + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for plugin type" >&5 +printf %s "checking for plugin type... " >&6; } + + case "$host" in + *-*-darwin*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5 +printf "%s\n" "Darwin" >&6; } + PLUGIN_CFLAGS='-fPIC -DPIC' + PLUGIN_LDFLAGS='-bundle ${PLUGIN_LDFLAGS_BUNDLE_LOADER}' + PLUGIN_SUFFIX='.bundle' + if test x"$host_is_ios" = x"yes" +then : + + LINK_PLUGIN='rm -fr $$out && ${MKDIR_P} $$out && if test -f Info.plist; then ${INSTALL} -m 644 Info.plist $$out/Info.plist; fi && ${LD} -o $$out/$${out%${PLUGIN_SUFFIX}} ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS} && ${CODESIGN} -fs ${CODESIGN_IDENTITY} --timestamp=none $$out' + +else $as_nop + + LINK_PLUGIN='rm -fr $$out && ${MKDIR_P} $$out/Contents/MacOS && if test -f Info.plist; then ${INSTALL} -m 644 Info.plist $$out/Contents/Info.plist; fi && ${LD} -o $$out/Contents/MacOS/$${out%${PLUGIN_SUFFIX}} ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS} && ${CODESIGN} -fs ${CODESIGN_IDENTITY} --timestamp=none $$out' + +fi + INSTALL_PLUGIN='&& rm -fr ${DESTDIR}${plugindir}/$$i && cp -R $$i ${DESTDIR}${plugindir}/' + UNINSTALL_PLUGIN='&& rm -fr ${DESTDIR}${plugindir}/$$i' + ;; + *-*-mingw* | *-*-cygwin*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: MinGW / Cygwin" >&5 +printf "%s\n" "MinGW / Cygwin" >&6; } + PLUGIN_CFLAGS='' + PLUGIN_LDFLAGS='-shared -Wl,--export-all-symbols' + PLUGIN_SUFFIX='.dll' + LINK_PLUGIN='${LD} -o $$out ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}' + INSTALL_PLUGIN='&& ${INSTALL} -m 755 $$i ${DESTDIR}${plugindir}/$$i' + UNINSTALL_PLUGIN='&& rm -f ${DESTDIR}${plugindir}/$$i' + ;; + hppa*-*-hpux*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: HP-UX (PA-RISC)" >&5 +printf "%s\n" "HP-UX (PA-RISC)" >&6; } + PLUGIN_CFLAGS='-fPIC -DPIC' + PLUGIN_LDFLAGS='-shared' + PLUGIN_SUFFIX='.sl' + LINK_PLUGIN='${LD} -o $$out ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}' + INSTALL_PLUGIN='&& ${INSTALL} -m 755 $$i ${DESTDIR}${plugindir}/$$i' + UNINSTALL_PLUGIN='&& rm -f ${DESTDIR}${plugindir}/$$i' + ;; + *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ELF" >&5 +printf "%s\n" "ELF" >&6; } + PLUGIN_CFLAGS='-fPIC -DPIC' + PLUGIN_LDFLAGS='-shared' + PLUGIN_SUFFIX='.so' + LINK_PLUGIN='${LD} -o $$out ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}' + INSTALL_PLUGIN='&& ${INSTALL} -m 755 $$i ${DESTDIR}${plugindir}/$$i' + UNINSTALL_PLUGIN='&& rm -f ${DESTDIR}${plugindir}/$$i' + ;; + esac + + + + + + @@ -8522,105 +8937,6 @@ fi - # Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -printf %s "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if test ${ac_cv_path_install+y} -then : - printf %s "(cached) " >&6 -else $as_nop - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - # Account for fact that we put trailing slashes in our PATH walk. -case $as_dir in #(( - ./ | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test ${ac_cv_path_install+y}; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -printf "%s\n" "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then @@ -9173,7 +9489,7 @@ *-*-aix*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#if defined __powerpc64__ || defined _ARCH_PPC64 +#if defined __powerpc64__ || defined __LP64__ int ok; #else error fail @@ -9464,7 +9780,7 @@ # be generating 64-bit code. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#if defined __powerpc64__ || defined _ARCH_PPC64 +#if defined __powerpc64__ || defined __LP64__ int ok; #else error fail @@ -9571,7 +9887,7 @@ else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef __ELF__ +#if defined __ELF__ || (defined __linux__ && defined __EDG__) Extensible Linking Format #endif @@ -9589,7 +9905,7 @@ fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_elf" >&5 printf "%s\n" "$gl_cv_elf" >&6; } - if test $gl_cv_elf; then + if test $gl_cv_elf = yes; then # Extract the ELF class of a file (5th byte) in decimal. # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header if od -A x < /dev/null >/dev/null 2>/dev/null; then @@ -9606,19 +9922,22 @@ echo } fi + # Use 'expr', not 'test', to compare the values of func_elfclass, because on + # Solaris 11 OpenIndiana and Solaris 11 OmniOS, the result is 001 or 002, + # not 1 or 2. case $HOST_CPU_C_ABI_32BIT in yes) # 32-bit ABI. acl_is_expected_elfclass () { - test "`func_elfclass | sed -e 's/[ ]//g'`" = 1 + expr "`func_elfclass | sed -e 's/[ ]//g'`" = 1 > /dev/null } ;; no) # 64-bit ABI. acl_is_expected_elfclass () { - test "`func_elfclass | sed -e 's/[ ]//g'`" = 2 + expr "`func_elfclass | sed -e 's/[ ]//g'`" = 2 > /dev/null } ;; *) @@ -10148,7 +10467,14 @@ fi ;; -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + dep=`echo "X$dep" | sed -e 's/^X-l//'` + if test "X$dep" != Xc \ + || case $host_os in + linux* | gnu* | k*bsd*-gnu) false ;; + *) true ;; + esac; then + names_next_round="$names_next_round $dep" + fi ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` @@ -10510,8 +10836,9 @@ main (void) { int result = 0; - /* Test against AIX 5.1 bug: Failures are not distinguishable from successful - returns. */ + /* Test against AIX 5.1...7.2 bug: Failures are not distinguishable from + successful returns. This is even documented in + */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) @@ -11093,7 +11420,14 @@ fi ;; -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + dep=`echo "X$dep" | sed -e 's/^X-l//'` + if test "X$dep" != Xc \ + || case $host_os in + linux* | gnu* | k*bsd*-gnu) false ;; + *) true ;; + esac; then + names_next_round="$names_next_round $dep" + fi ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` @@ -11359,12 +11693,12 @@ pkg_cv_AUDACIOUS_CFLAGS="$AUDACIOUS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"audacious >= 4.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "audacious >= 4.1") 2>&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"audacious >= 4.3\""; } >&5 + ($PKG_CONFIG --exists --print-errors "audacious >= 4.3") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_AUDACIOUS_CFLAGS=`$PKG_CONFIG --cflags "audacious >= 4.1" 2>/dev/null` + pkg_cv_AUDACIOUS_CFLAGS=`$PKG_CONFIG --cflags "audacious >= 4.3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -11376,12 +11710,12 @@ pkg_cv_AUDACIOUS_LIBS="$AUDACIOUS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"audacious >= 4.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "audacious >= 4.1") 2>&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"audacious >= 4.3\""; } >&5 + ($PKG_CONFIG --exists --print-errors "audacious >= 4.3") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_AUDACIOUS_LIBS=`$PKG_CONFIG --libs "audacious >= 4.1" 2>/dev/null` + pkg_cv_AUDACIOUS_LIBS=`$PKG_CONFIG --libs "audacious >= 4.3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -11402,19 +11736,19 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - AUDACIOUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "audacious >= 4.1" 2>&1` + AUDACIOUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "audacious >= 4.3" 2>&1` else - AUDACIOUS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "audacious >= 4.1" 2>&1` + AUDACIOUS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "audacious >= 4.3" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$AUDACIOUS_PKG_ERRORS" >&5 - as_fn_error $? "Cannot find Audacious 4.1; have you installed Audacious yet?" "$LINENO" 5 + as_fn_error $? "Cannot find Audacious 4.3; have you installed Audacious yet?" "$LINENO" 5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - as_fn_error $? "Cannot find Audacious 4.1; have you installed Audacious yet?" "$LINENO" 5 + as_fn_error $? "Cannot find Audacious 4.3; have you installed Audacious yet?" "$LINENO" 5 else AUDACIOUS_CFLAGS=$pkg_cv_AUDACIOUS_CFLAGS @@ -11634,7 +11968,7 @@ INPUT_PLUGINS="metronom psf tonegen vtx xsf" OUTPUT_PLUGINS="" -EFFECT_PLUGINS="compressor crossfade crystalizer mixer silence-removal stereo_plugin voice_removal echo_plugin" +EFFECT_PLUGINS="bitcrusher compressor crossfade crystalizer mixer silence-removal stereo_plugin voice_removal echo_plugin" GENERAL_PLUGINS="" VISUALIZATION_PLUGINS="" CONTAINER_PLUGINS="asx asx3 audpl m3u pls xspf" @@ -11642,7 +11976,7 @@ if test "x$USE_GTK" = "xyes" ; then EFFECT_PLUGINS="$EFFECT_PLUGINS ladspa" - GENERAL_PLUGINS="$GENERAL_PLUGINS alarm albumart playlist-manager search-tool statusicon" + GENERAL_PLUGINS="$GENERAL_PLUGINS albumart playlist-manager search-tool statusicon" GENERAL_PLUGINS="$GENERAL_PLUGINS gtkui skins" VISUALIZATION_PLUGINS="$VISUALIZATION_PLUGINS blur_scope cairo-spectrum" fi @@ -12157,6 +12491,110 @@ + # Check whether --enable-opus was given. +if test ${enable_opus+y} +then : + enableval=$enable_opus; enable_opus=$enableval +else $as_nop + enable_opus=yes +fi + + + have_opus=no + check_allowed opus $enable_opus + if test $enable_opus != no -a $plugin_allowed = yes ; then + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OPUS" >&5 +printf %s "checking for OPUS... " >&6; } + +if test -n "$OPUS_CFLAGS"; then + pkg_cv_OPUS_CFLAGS="$OPUS_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"opus >= 1.0.1 opusfile >= 0.4\""; } >&5 + ($PKG_CONFIG --exists --print-errors "opus >= 1.0.1 opusfile >= 0.4") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_OPUS_CFLAGS=`$PKG_CONFIG --cflags "opus >= 1.0.1 opusfile >= 0.4" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$OPUS_LIBS"; then + pkg_cv_OPUS_LIBS="$OPUS_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"opus >= 1.0.1 opusfile >= 0.4\""; } >&5 + ($PKG_CONFIG --exists --print-errors "opus >= 1.0.1 opusfile >= 0.4") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_OPUS_LIBS=`$PKG_CONFIG --libs "opus >= 1.0.1 opusfile >= 0.4" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + OPUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "opus >= 1.0.1 opusfile >= 0.4" 2>&1` + else + OPUS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "opus >= 1.0.1 opusfile >= 0.4" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$OPUS_PKG_ERRORS" >&5 + + + if test $enable_opus = yes ; then + as_fn_error $? "Missing dependency for Opus support: opus >= 1.0.1 opusfile >= 0.4" "$LINENO" 5 + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Opus support disabled due to missing dependency: opus >= 1.0.1 opusfile >= 0.4" >&5 +printf "%s\n" "$as_me: WARNING: Opus support disabled due to missing dependency: opus >= 1.0.1 opusfile >= 0.4" >&2;} + fi + +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + + if test $enable_opus = yes ; then + as_fn_error $? "Missing dependency for Opus support: opus >= 1.0.1 opusfile >= 0.4" "$LINENO" 5 + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Opus support disabled due to missing dependency: opus >= 1.0.1 opusfile >= 0.4" >&5 +printf "%s\n" "$as_me: WARNING: Opus support disabled due to missing dependency: opus >= 1.0.1 opusfile >= 0.4" >&2;} + fi + +else + OPUS_CFLAGS=$pkg_cv_OPUS_CFLAGS + OPUS_LIBS=$pkg_cv_OPUS_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + + have_opus=yes + INPUT_PLUGINS="$INPUT_PLUGINS opus" + +fi + fi + + + # Check whether --enable-amidiplug was given. if test ${enable_amidiplug+y} then : @@ -12547,6 +12985,110 @@ + # Check whether --enable-ffaudio was given. +if test ${enable_ffaudio+y} +then : + enableval=$enable_ffaudio; enable_ffaudio=$enableval +else $as_nop + enable_ffaudio=auto +fi + + + have_ffaudio=no + check_allowed ffaudio $enable_ffaudio + if test $enable_ffaudio != no -a $plugin_allowed = yes ; then + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for FFMPEG" >&5 +printf %s "checking for FFMPEG... " >&6; } + +if test -n "$FFMPEG_CFLAGS"; then + pkg_cv_FFMPEG_CFLAGS="$FFMPEG_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavcodec >= 56.60.100 libavformat >= 56.40.101 libavutil >= 54.31.100\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libavcodec >= 56.60.100 libavformat >= 56.40.101 libavutil >= 54.31.100") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_FFMPEG_CFLAGS=`$PKG_CONFIG --cflags "libavcodec >= 56.60.100 libavformat >= 56.40.101 libavutil >= 54.31.100" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$FFMPEG_LIBS"; then + pkg_cv_FFMPEG_LIBS="$FFMPEG_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavcodec >= 56.60.100 libavformat >= 56.40.101 libavutil >= 54.31.100\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libavcodec >= 56.60.100 libavformat >= 56.40.101 libavutil >= 54.31.100") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_FFMPEG_LIBS=`$PKG_CONFIG --libs "libavcodec >= 56.60.100 libavformat >= 56.40.101 libavutil >= 54.31.100" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + FFMPEG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libavcodec >= 56.60.100 libavformat >= 56.40.101 libavutil >= 54.31.100" 2>&1` + else + FFMPEG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libavcodec >= 56.60.100 libavformat >= 56.40.101 libavutil >= 54.31.100" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$FFMPEG_PKG_ERRORS" >&5 + + + if test $enable_ffaudio = yes ; then + as_fn_error $? "Missing dependency for FFmpeg decoder: libavcodec >= 56.60.100 libavformat >= 56.40.101 libavutil >= 54.31.100" "$LINENO" 5 + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: FFmpeg decoder disabled due to missing dependency: libavcodec >= 56.60.100 libavformat >= 56.40.101 libavutil >= 54.31.100" >&5 +printf "%s\n" "$as_me: WARNING: FFmpeg decoder disabled due to missing dependency: libavcodec >= 56.60.100 libavformat >= 56.40.101 libavutil >= 54.31.100" >&2;} + fi + +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + + if test $enable_ffaudio = yes ; then + as_fn_error $? "Missing dependency for FFmpeg decoder: libavcodec >= 56.60.100 libavformat >= 56.40.101 libavutil >= 54.31.100" "$LINENO" 5 + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: FFmpeg decoder disabled due to missing dependency: libavcodec >= 56.60.100 libavformat >= 56.40.101 libavutil >= 54.31.100" >&5 +printf "%s\n" "$as_me: WARNING: FFmpeg decoder disabled due to missing dependency: libavcodec >= 56.60.100 libavformat >= 56.40.101 libavutil >= 54.31.100" >&2;} + fi + +else + FFMPEG_CFLAGS=$pkg_cv_FFMPEG_CFLAGS + FFMPEG_LIBS=$pkg_cv_FFMPEG_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + + have_ffaudio=yes + INPUT_PLUGINS="$INPUT_PLUGINS ffaudio" + +fi + fi + + + # Check whether --enable-sndfile was given. if test ${enable_sndfile+y} then : @@ -12880,12 +13422,12 @@ pkg_cv_SIDPLAYFP_CFLAGS="$SIDPLAYFP_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsidplayfp >= 1.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libsidplayfp >= 1.0") 2>&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsidplayfp >= 2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsidplayfp >= 2.0") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_SIDPLAYFP_CFLAGS=`$PKG_CONFIG --cflags "libsidplayfp >= 1.0" 2>/dev/null` + pkg_cv_SIDPLAYFP_CFLAGS=`$PKG_CONFIG --cflags "libsidplayfp >= 2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -12897,12 +13439,12 @@ pkg_cv_SIDPLAYFP_LIBS="$SIDPLAYFP_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsidplayfp >= 1.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libsidplayfp >= 1.0") 2>&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsidplayfp >= 2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsidplayfp >= 2.0") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_SIDPLAYFP_LIBS=`$PKG_CONFIG --libs "libsidplayfp >= 1.0" 2>/dev/null` + pkg_cv_SIDPLAYFP_LIBS=`$PKG_CONFIG --libs "libsidplayfp >= 2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -12923,19 +13465,19 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - SIDPLAYFP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libsidplayfp >= 1.0" 2>&1` + SIDPLAYFP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libsidplayfp >= 2.0" 2>&1` else - SIDPLAYFP_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libsidplayfp >= 1.0" 2>&1` + SIDPLAYFP_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libsidplayfp >= 2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$SIDPLAYFP_PKG_ERRORS" >&5 if test $enable_sid = yes ; then - as_fn_error $? "Missing dependency for Commodore 64 audio: libsidplayfp >= 1.0" "$LINENO" 5 + as_fn_error $? "Missing dependency for Commodore 64 audio: libsidplayfp >= 2.0" "$LINENO" 5 else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Commodore 64 audio disabled due to missing dependency: libsidplayfp >= 1.0" >&5 -printf "%s\n" "$as_me: WARNING: Commodore 64 audio disabled due to missing dependency: libsidplayfp >= 1.0" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Commodore 64 audio disabled due to missing dependency: libsidplayfp >= 2.0" >&5 +printf "%s\n" "$as_me: WARNING: Commodore 64 audio disabled due to missing dependency: libsidplayfp >= 2.0" >&2;} fi elif test $pkg_failed = untried; then @@ -12943,10 +13485,10 @@ printf "%s\n" "no" >&6; } if test $enable_sid = yes ; then - as_fn_error $? "Missing dependency for Commodore 64 audio: libsidplayfp >= 1.0" "$LINENO" 5 + as_fn_error $? "Missing dependency for Commodore 64 audio: libsidplayfp >= 2.0" "$LINENO" 5 else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Commodore 64 audio disabled due to missing dependency: libsidplayfp >= 1.0" >&5 -printf "%s\n" "$as_me: WARNING: Commodore 64 audio disabled due to missing dependency: libsidplayfp >= 1.0" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Commodore 64 audio disabled due to missing dependency: libsidplayfp >= 2.0" >&5 +printf "%s\n" "$as_me: WARNING: Commodore 64 audio disabled due to missing dependency: libsidplayfp >= 2.0" >&2;} fi else @@ -13776,15 +14318,12 @@ OLD_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $OSS_CFLAGS" have_oss4=no - for ac_header in sys/soundcard.h soundcard.h + for ac_header in sys/soundcard.h do : - as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes" + ac_fn_c_check_header_compile "$LINENO" "sys/soundcard.h" "ac_cv_header_sys_soundcard_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_soundcard_h" = xyes then : - cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF + printf "%s\n" "#define HAVE_SYS_SOUNDCARD_H 1" >>confdefs.h have_oss4=yes break @@ -13821,6 +14360,110 @@ + # Check whether --enable-pipewire was given. +if test ${enable_pipewire+y} +then : + enableval=$enable_pipewire; enable_pipewire=$enableval +else $as_nop + enable_pipewire=auto +fi + + + have_pipewire=no + check_allowed pipewire $enable_pipewire + if test $enable_pipewire != no -a $plugin_allowed = yes ; then + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PIPEWIRE" >&5 +printf %s "checking for PIPEWIRE... " >&6; } + +if test -n "$PIPEWIRE_CFLAGS"; then + pkg_cv_PIPEWIRE_CFLAGS="$PIPEWIRE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpipewire-0.3 >= 0.3.26 libspa-0.2 >= 0.2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libpipewire-0.3 >= 0.3.26 libspa-0.2 >= 0.2") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PIPEWIRE_CFLAGS=`$PKG_CONFIG --cflags "libpipewire-0.3 >= 0.3.26 libspa-0.2 >= 0.2" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$PIPEWIRE_LIBS"; then + pkg_cv_PIPEWIRE_LIBS="$PIPEWIRE_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpipewire-0.3 >= 0.3.26 libspa-0.2 >= 0.2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libpipewire-0.3 >= 0.3.26 libspa-0.2 >= 0.2") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PIPEWIRE_LIBS=`$PKG_CONFIG --libs "libpipewire-0.3 >= 0.3.26 libspa-0.2 >= 0.2" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + PIPEWIRE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libpipewire-0.3 >= 0.3.26 libspa-0.2 >= 0.2" 2>&1` + else + PIPEWIRE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libpipewire-0.3 >= 0.3.26 libspa-0.2 >= 0.2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$PIPEWIRE_PKG_ERRORS" >&5 + + + if test $enable_pipewire = yes ; then + as_fn_error $? "Missing dependency for PipeWire output: libpipewire-0.3 >= 0.3.26 libspa-0.2 >= 0.2" "$LINENO" 5 + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: PipeWire output disabled due to missing dependency: libpipewire-0.3 >= 0.3.26 libspa-0.2 >= 0.2" >&5 +printf "%s\n" "$as_me: WARNING: PipeWire output disabled due to missing dependency: libpipewire-0.3 >= 0.3.26 libspa-0.2 >= 0.2" >&2;} + fi + +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + + if test $enable_pipewire = yes ; then + as_fn_error $? "Missing dependency for PipeWire output: libpipewire-0.3 >= 0.3.26 libspa-0.2 >= 0.2" "$LINENO" 5 + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: PipeWire output disabled due to missing dependency: libpipewire-0.3 >= 0.3.26 libspa-0.2 >= 0.2" >&5 +printf "%s\n" "$as_me: WARNING: PipeWire output disabled due to missing dependency: libpipewire-0.3 >= 0.3.26 libspa-0.2 >= 0.2" >&2;} + fi + +else + PIPEWIRE_CFLAGS=$pkg_cv_PIPEWIRE_CFLAGS + PIPEWIRE_LIBS=$pkg_cv_PIPEWIRE_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + + have_pipewire=yes + OUTPUT_PLUGINS="$OUTPUT_PLUGINS pipewire" + +fi + fi + + + # Check whether --enable-pulse was given. if test ${enable_pulse+y} then : @@ -13924,51 +14567,6 @@ fi -test_sndio () { - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sio_open in -lsndio" >&5 -printf %s "checking for sio_open in -lsndio... " >&6; } -if test ${ac_cv_lib_sndio_sio_open+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsndio $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char sio_open (); -int -main (void) -{ -return sio_open (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_sndio_sio_open=yes -else $as_nop - ac_cv_lib_sndio_sio_open=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sndio_sio_open" >&5 -printf "%s\n" "$ac_cv_lib_sndio_sio_open" >&6; } -if test "x$ac_cv_lib_sndio_sio_open" = xyes -then : - have_sndio=yes -else $as_nop - have_sndio=no -fi - -} - # Check whether --enable-sndio was given. if test ${enable_sndio+y} @@ -13982,15 +14580,94 @@ have_sndio=no check_allowed sndio $enable_sndio if test $enable_sndio != no -a $plugin_allowed = yes ; then - test_sndio - if test $have_sndio = yes ; then - OUTPUT_PLUGINS="$OUTPUT_PLUGINS sndio" - elif test $enable_sndio = yes ; then - as_fn_error $? "Missing dependency for Sndio output" "$LINENO" 5 + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SNDIO" >&5 +printf %s "checking for SNDIO... " >&6; } + +if test -n "$SNDIO_CFLAGS"; then + pkg_cv_SNDIO_CFLAGS="$SNDIO_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndio\""; } >&5 + ($PKG_CONFIG --exists --print-errors "sndio") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SNDIO_CFLAGS=`$PKG_CONFIG --cflags "sndio" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$SNDIO_LIBS"; then + pkg_cv_SNDIO_LIBS="$SNDIO_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndio\""; } >&5 + ($PKG_CONFIG --exists --print-errors "sndio") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SNDIO_LIBS=`$PKG_CONFIG --libs "sndio" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + SNDIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "sndio" 2>&1` else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Sndio output disabled due to missing dependency" >&5 -printf "%s\n" "$as_me: WARNING: Sndio output disabled due to missing dependency" >&2;} + SNDIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "sndio" 2>&1` fi + # Put the nasty error message in config.log where it belongs + echo "$SNDIO_PKG_ERRORS" >&5 + + + if test $enable_sndio = yes ; then + as_fn_error $? "Missing dependency for Sndio output: sndio" "$LINENO" 5 + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Sndio output disabled due to missing dependency: sndio" >&5 +printf "%s\n" "$as_me: WARNING: Sndio output disabled due to missing dependency: sndio" >&2;} + fi + +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + + if test $enable_sndio = yes ; then + as_fn_error $? "Missing dependency for Sndio output: sndio" "$LINENO" 5 + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Sndio output disabled due to missing dependency: sndio" >&5 +printf "%s\n" "$as_me: WARNING: Sndio output disabled due to missing dependency: sndio" >&2;} + fi + +else + SNDIO_CFLAGS=$pkg_cv_SNDIO_CFLAGS + SNDIO_LIBS=$pkg_cv_SNDIO_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + + have_sndio=yes + OUTPUT_PLUGINS="$OUTPUT_PLUGINS sndio" + +fi fi @@ -14715,7 +15392,6 @@ - # Check whether --enable-scrobbler2 was given. if test ${enable_scrobbler2+y} then : @@ -14819,6 +15495,7 @@ fi + test_glspectrum () { if test $HAVE_DARWIN = yes ; then have_glspectrum=no @@ -14900,6 +15577,12 @@ fi +if test "x$USE_GTK3" = "xyes"; then + GDK_X11_DEP=gdk-x11-3.0 +else + GDK_X11_DEP=gdk-x11-2.0 +fi + # Check whether --enable-hotkey was given. if test ${enable_hotkey+y} @@ -14922,12 +15605,12 @@ pkg_cv_GDKX11_CFLAGS="$GDKX11_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdk-x11-2.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "gdk-x11-2.0") 2>&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$GDK_X11_DEP\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$GDK_X11_DEP") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_GDKX11_CFLAGS=`$PKG_CONFIG --cflags "gdk-x11-2.0" 2>/dev/null` + pkg_cv_GDKX11_CFLAGS=`$PKG_CONFIG --cflags "$GDK_X11_DEP" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -14939,12 +15622,12 @@ pkg_cv_GDKX11_LIBS="$GDKX11_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdk-x11-2.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "gdk-x11-2.0") 2>&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$GDK_X11_DEP\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$GDK_X11_DEP") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_GDKX11_LIBS=`$PKG_CONFIG --libs "gdk-x11-2.0" 2>/dev/null` + pkg_cv_GDKX11_LIBS=`$PKG_CONFIG --libs "$GDK_X11_DEP" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -14965,19 +15648,19 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GDKX11_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gdk-x11-2.0" 2>&1` + GDKX11_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$GDK_X11_DEP" 2>&1` else - GDKX11_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gdk-x11-2.0" 2>&1` + GDKX11_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$GDK_X11_DEP" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GDKX11_PKG_ERRORS" >&5 if test $enable_hotkey = yes ; then - as_fn_error $? "Missing dependency for global hotkeys (X11): gdk-x11-2.0" "$LINENO" 5 + as_fn_error $? "Missing dependency for global hotkeys (X11): $GDK_X11_DEP" "$LINENO" 5 else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: global hotkeys (X11) disabled due to missing dependency: gdk-x11-2.0" >&5 -printf "%s\n" "$as_me: WARNING: global hotkeys (X11) disabled due to missing dependency: gdk-x11-2.0" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: global hotkeys (X11) disabled due to missing dependency: $GDK_X11_DEP" >&5 +printf "%s\n" "$as_me: WARNING: global hotkeys (X11) disabled due to missing dependency: $GDK_X11_DEP" >&2;} fi elif test $pkg_failed = untried; then @@ -14985,10 +15668,10 @@ printf "%s\n" "no" >&6; } if test $enable_hotkey = yes ; then - as_fn_error $? "Missing dependency for global hotkeys (X11): gdk-x11-2.0" "$LINENO" 5 + as_fn_error $? "Missing dependency for global hotkeys (X11): $GDK_X11_DEP" "$LINENO" 5 else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: global hotkeys (X11) disabled due to missing dependency: gdk-x11-2.0" >&5 -printf "%s\n" "$as_me: WARNING: global hotkeys (X11) disabled due to missing dependency: gdk-x11-2.0" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: global hotkeys (X11) disabled due to missing dependency: $GDK_X11_DEP" >&5 +printf "%s\n" "$as_me: WARNING: global hotkeys (X11) disabled due to missing dependency: $GDK_X11_DEP" >&2;} fi else @@ -15703,169 +16386,6 @@ -# Check whether --with-ffmpeg was given. -if test ${with_ffmpeg+y} -then : - withval=$with_ffmpeg; ffmpeg_variant=$withval -else $as_nop - ffmpeg_variant=ffmpeg -fi - - -if test $ffmpeg_variant = ffmpeg ; then - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for FFMPEG" >&5 -printf %s "checking for FFMPEG... " >&6; } - -if test -n "$FFMPEG_CFLAGS"; then - pkg_cv_FFMPEG_CFLAGS="$FFMPEG_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavcodec >= 53.40.0 libavformat >= 53.25.0 libavutil >= 51.27.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libavcodec >= 53.40.0 libavformat >= 53.25.0 libavutil >= 51.27.0") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FFMPEG_CFLAGS=`$PKG_CONFIG --cflags "libavcodec >= 53.40.0 libavformat >= 53.25.0 libavutil >= 51.27.0" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$FFMPEG_LIBS"; then - pkg_cv_FFMPEG_LIBS="$FFMPEG_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavcodec >= 53.40.0 libavformat >= 53.25.0 libavutil >= 51.27.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libavcodec >= 53.40.0 libavformat >= 53.25.0 libavutil >= 51.27.0") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FFMPEG_LIBS=`$PKG_CONFIG --libs "libavcodec >= 53.40.0 libavformat >= 53.25.0 libavutil >= 51.27.0" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - FFMPEG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libavcodec >= 53.40.0 libavformat >= 53.25.0 libavutil >= 51.27.0" 2>&1` - else - FFMPEG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libavcodec >= 53.40.0 libavformat >= 53.25.0 libavutil >= 51.27.0" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$FFMPEG_PKG_ERRORS" >&5 - - as_fn_error $? "FFmpeg is not installed or too old (required: libavcodec 53.40.0, libavformat 53.25.0, libavutil 51.27.0). Use --with-ffmpeg=none to disable the ffaudio plugin or --with-ffmpeg=libav to use libav instead." "$LINENO" 5 -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - as_fn_error $? "FFmpeg is not installed or too old (required: libavcodec 53.40.0, libavformat 53.25.0, libavutil 51.27.0). Use --with-ffmpeg=none to disable the ffaudio plugin or --with-ffmpeg=libav to use libav instead." "$LINENO" 5 -else - FFMPEG_CFLAGS=$pkg_cv_FFMPEG_CFLAGS - FFMPEG_LIBS=$pkg_cv_FFMPEG_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - INPUT_PLUGINS="$INPUT_PLUGINS ffaudio" - -printf "%s\n" "#define HAVE_FFMPEG 1" >>confdefs.h - -fi -elif test $ffmpeg_variant = libav ; then - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for FFMPEG" >&5 -printf %s "checking for FFMPEG... " >&6; } - -if test -n "$FFMPEG_CFLAGS"; then - pkg_cv_FFMPEG_CFLAGS="$FFMPEG_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavcodec >= 53.25.0 libavformat >= 53.17.0 libavutil >= 51.18.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libavcodec >= 53.25.0 libavformat >= 53.17.0 libavutil >= 51.18.0") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FFMPEG_CFLAGS=`$PKG_CONFIG --cflags "libavcodec >= 53.25.0 libavformat >= 53.17.0 libavutil >= 51.18.0" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$FFMPEG_LIBS"; then - pkg_cv_FFMPEG_LIBS="$FFMPEG_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavcodec >= 53.25.0 libavformat >= 53.17.0 libavutil >= 51.18.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libavcodec >= 53.25.0 libavformat >= 53.17.0 libavutil >= 51.18.0") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FFMPEG_LIBS=`$PKG_CONFIG --libs "libavcodec >= 53.25.0 libavformat >= 53.17.0 libavutil >= 51.18.0" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - FFMPEG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libavcodec >= 53.25.0 libavformat >= 53.17.0 libavutil >= 51.18.0" 2>&1` - else - FFMPEG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libavcodec >= 53.25.0 libavformat >= 53.17.0 libavutil >= 51.18.0" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$FFMPEG_PKG_ERRORS" >&5 - - as_fn_error $? "libav is not installed or too old (required: libavcodec 53.25.0, libavformat 53.17.0, libavutil 51.18.0)." "$LINENO" 5 -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - as_fn_error $? "libav is not installed or too old (required: libavcodec 53.25.0, libavformat 53.17.0, libavutil 51.18.0)." "$LINENO" 5 -else - FFMPEG_CFLAGS=$pkg_cv_FFMPEG_CFLAGS - FFMPEG_LIBS=$pkg_cv_FFMPEG_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - INPUT_PLUGINS="$INPUT_PLUGINS ffaudio" - -printf "%s\n" "#define HAVE_LIBAV 1" >>confdefs.h - -fi -fi - - - # Check whether --with-libsdl was given. if test ${with_libsdl+y} then : @@ -16557,10 +17077,10 @@ case "$build_os" in - morphos*) - ;; - *) - # Extract the first word of "tput", so it can be a program name with args. + morphos*) + ;; + *) + # Extract the first word of "tput", so it can be a program name with args. set dummy tput; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } @@ -16605,7 +17125,7 @@ fi - ;; + ;; esac if test x"$TPUT" != x"" @@ -17062,8 +17582,8 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by audacious-plugins $as_me 4.1, which was -generated by GNU Autoconf 2.70. Invocation command line was +This file was extended by audacious-plugins $as_me 4.3.1, which was +generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -17130,11 +17650,11 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -audacious-plugins config.status 4.1 -configured by $0, generated by GNU Autoconf 2.70, +audacious-plugins config.status 4.3.1 +configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" -Copyright (C) 2020 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -17911,7 +18431,9 @@ # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in - "$presentlang"*) useit=yes;; + "$presentlang" | "$presentlang"_* | "$presentlang".* | "$presentlang"@*) + useit=yes + ;; esac done if test $useit = yes; then @@ -17993,6 +18515,7 @@ echo " Audio CD: $have_cdaudio" echo " Free Lossless Audio Codec: $have_flac" echo " Ogg Vorbis: $have_vorbis" +echo " Opus: $have_opus" echo " MIDI (via FluidSynth): $have_amidiplug" echo " MPEG-1 Layer I/II/III (via mpg123): $have_mpg123" echo " MPEG-2/4 AAC: $have_aac" @@ -18000,7 +18523,7 @@ echo echo " External Decoders" echo " -----------------" -echo " FFmpeg/Libav: $ffmpeg_variant" +echo " FFmpeg: $have_ffaudio" echo " libsndfile: $have_sndfile" echo echo " Chiptunes" @@ -18022,6 +18545,7 @@ echo " Effects" echo " -------" echo " Bauer stereophonic-to-binaural (bs2b): $have_bs2b" +echo " Bitcrusher: yes" echo " Channel Mixer: yes" echo " Crystalizer: yes" echo " Dynamic Range Compressor: yes" @@ -18039,6 +18563,7 @@ echo " Advanced Linux Sound Architecture: $have_alsa" echo " Jack Audio Connection Kit: $have_jack" echo " Open Sound System: $have_oss4" +echo " PipeWire: $have_pipewire" echo " PulseAudio: $have_pulse" echo " Simple DirectMedia Layer: $have_sdlout" echo " Sndio: $have_sndio" @@ -18065,7 +18590,6 @@ echo echo " General" echo " -------" -echo " Alarm (requires GTK+): $USE_GTK" echo " Ampache browser (requires Qt): $have_ampache" echo " Delete Files: $USE_GTK_OR_QT" echo " libnotify OSD: $have_notify" diff -Nru audacious-plugins-4.1/configure.ac audacious-plugins-4.3.1/configure.ac --- audacious-plugins-4.1/configure.ac 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/configure.ac 2023-04-29 20:17:32.000000000 +0000 @@ -5,8 +5,8 @@ dnl Initialize dnl ========== AC_PREREQ([2.59]) -AC_INIT([audacious-plugins], [4.1]) -AC_COPYRIGHT([Copyright (C) 2001-2021 Audacious developers and others]) +AC_INIT([audacious-plugins], [4.3.1]) +AC_COPYRIGHT([Copyright (C) 2001-2023 Audacious developers and others]) AC_DEFINE_UNQUOTED([PACKAGE], "$PACKAGE_NAME", [Name of package]) AC_DEFINE_UNQUOTED([VERSION], "$PACKAGE_VERSION", [Version number of package]) @@ -19,6 +19,7 @@ BUILDSYS_INIT BUILDSYS_SHARED_LIB +BUILDSYS_PLUGIN dnl gettext dnl ======= @@ -33,9 +34,9 @@ dnl Check for Audacious dnl =================== -PKG_CHECK_MODULES(AUDACIOUS, [audacious >= 4.1], +PKG_CHECK_MODULES(AUDACIOUS, [audacious >= 4.3], [], - [AC_MSG_ERROR([Cannot find Audacious 4.1; have you installed Audacious yet?])] + [AC_MSG_ERROR([Cannot find Audacious 4.3; have you installed Audacious yet?])] ) CPPFLAGS="$CPPFLAGS $AUDACIOUS_CFLAGS" @@ -67,7 +68,7 @@ INPUT_PLUGINS="metronom psf tonegen vtx xsf" OUTPUT_PLUGINS="" -EFFECT_PLUGINS="compressor crossfade crystalizer mixer silence-removal stereo_plugin voice_removal echo_plugin" +EFFECT_PLUGINS="bitcrusher compressor crossfade crystalizer mixer silence-removal stereo_plugin voice_removal echo_plugin" GENERAL_PLUGINS="" VISUALIZATION_PLUGINS="" CONTAINER_PLUGINS="asx asx3 audpl m3u pls xspf" @@ -75,7 +76,7 @@ if test "x$USE_GTK" = "xyes" ; then EFFECT_PLUGINS="$EFFECT_PLUGINS ladspa" - GENERAL_PLUGINS="$GENERAL_PLUGINS alarm albumart playlist-manager search-tool statusicon" + GENERAL_PLUGINS="$GENERAL_PLUGINS albumart playlist-manager search-tool statusicon" GENERAL_PLUGINS="$GENERAL_PLUGINS gtkui skins" VISUALIZATION_PLUGINS="$VISUALIZATION_PLUGINS blur_scope cairo-spectrum" fi @@ -225,6 +226,13 @@ VORBIS, ogg >= 1.0 vorbis >= 1.0 vorbisenc >= 1.0 vorbisfile >= 1.0) +ENABLE_PLUGIN_WITH_DEP(opus, + Opus support, + yes, + INPUT, + OPUS, + opus >= 1.0.1 opusfile >= 0.4) + ENABLE_PLUGIN_WITH_DEP(amidiplug, MIDI synthesizer, auto, @@ -256,6 +264,13 @@ WAVPACK, wavpack >= 4.31) +ENABLE_PLUGIN_WITH_DEP(ffaudio, + FFmpeg decoder, + auto, + INPUT, + FFMPEG, + libavcodec >= 56.60.100 libavformat >= 56.40.101 libavutil >= 54.31.100) + ENABLE_PLUGIN_WITH_DEP(sndfile, libsndfile decoder, auto, @@ -282,7 +297,7 @@ auto, INPUT, SIDPLAYFP, - libsidplayfp >= 1.0) + libsidplayfp >= 2.0) test_console () { AC_CHECK_HEADERS(zlib.h, have_console=yes, have_console=no) @@ -350,7 +365,7 @@ OLD_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $OSS_CFLAGS" have_oss4=no - AC_CHECK_HEADERS(sys/soundcard.h soundcard.h, [ + AC_CHECK_HEADERS(sys/soundcard.h, [ have_oss4=yes break ]) @@ -362,6 +377,13 @@ auto, OUTPUT) +ENABLE_PLUGIN_WITH_DEP(pipewire, + PipeWire output, + auto, + OUTPUT, + PIPEWIRE, + libpipewire-0.3 >= 0.3.26 libspa-0.2 >= 0.2) + ENABLE_PLUGIN_WITH_DEP(pulse, PulseAudio output, auto, @@ -369,14 +391,12 @@ PULSE, libpulse >= 0.9.5) -test_sndio () { - AC_CHECK_LIB(sndio, sio_open, have_sndio=yes, have_sndio=no) -} - -ENABLE_PLUGIN_WITH_TEST(sndio, +ENABLE_PLUGIN_WITH_DEP(sndio, Sndio output, auto, - OUTPUT) + OUTPUT, + SNDIO, + sndio) test_cue () { PKG_CHECK_MODULES(CUE, libcue >= 2.0, [ @@ -449,9 +469,6 @@ auto, GENERAL) -dnl Optional plugins (GTK-only) -dnl =========================== - ENABLE_PLUGIN_WITH_DEP(scrobbler2, Scrobbler 2, auto, @@ -459,6 +476,9 @@ CURL, libcurl >= 7.9.7) +dnl Optional plugins (GTK-only) +dnl =========================== + test_glspectrum () { if test $HAVE_DARWIN = yes ; then have_glspectrum=no @@ -479,12 +499,18 @@ auto, VISUALIZATION) +if test "x$USE_GTK3" = "xyes"; then + GDK_X11_DEP=gdk-x11-3.0 +else + GDK_X11_DEP=gdk-x11-2.0 +fi + ENABLE_PLUGIN_WITH_DEP(hotkey, global hotkeys (X11), auto, GENERAL, GDKX11, - gdk-x11-2.0) + $GDK_X11_DEP) ENABLE_PLUGIN_WITH_DEP(aosd, X11 OSD, @@ -566,24 +592,6 @@ AC_MSG_RESULT([*** CoreAudio output plugin disabled per user request ***]) fi -dnl *** FFaudio - -AC_ARG_WITH([ffmpeg], - AS_HELP_STRING([--with-ffmpeg=ffmpeg,libav,none], [choose between FFmpeg, libav, or neither (default=ffmpeg)]), - [ffmpeg_variant=$withval], [ffmpeg_variant=ffmpeg]) - -if test $ffmpeg_variant = ffmpeg ; then - PKG_CHECK_MODULES([FFMPEG], [libavcodec >= 53.40.0 libavformat >= 53.25.0 libavutil >= 51.27.0], - [INPUT_PLUGINS="$INPUT_PLUGINS ffaudio" - AC_DEFINE([HAVE_FFMPEG], [1], [Define if using FFmpeg])], - [AC_MSG_ERROR([FFmpeg is not installed or too old (required: libavcodec 53.40.0, libavformat 53.25.0, libavutil 51.27.0). Use --with-ffmpeg=none to disable the ffaudio plugin or --with-ffmpeg=libav to use libav instead.])]) -elif test $ffmpeg_variant = libav ; then - PKG_CHECK_MODULES([FFMPEG], [libavcodec >= 53.25.0 libavformat >= 53.17.0 libavutil >= 51.18.0], - [INPUT_PLUGINS="$INPUT_PLUGINS ffaudio" - AC_DEFINE([HAVE_LIBAV], [1], [Define if using libav])], - [AC_MSG_ERROR([libav is not installed or too old (required: libavcodec 53.25.0, libavformat 53.17.0, libavutil 51.18.0).])]) -fi - dnl SDL Output dnl ========== @@ -741,6 +749,7 @@ echo " Audio CD: $have_cdaudio" echo " Free Lossless Audio Codec: $have_flac" echo " Ogg Vorbis: $have_vorbis" +echo " Opus: $have_opus" echo " MIDI (via FluidSynth): $have_amidiplug" echo " MPEG-1 Layer I/II/III (via mpg123): $have_mpg123" echo " MPEG-2/4 AAC: $have_aac" @@ -748,7 +757,7 @@ echo echo " External Decoders" echo " -----------------" -echo " FFmpeg/Libav: $ffmpeg_variant" +echo " FFmpeg: $have_ffaudio" echo " libsndfile: $have_sndfile" echo echo " Chiptunes" @@ -770,6 +779,7 @@ echo " Effects" echo " -------" echo " Bauer stereophonic-to-binaural (bs2b): $have_bs2b" +echo " Bitcrusher: yes" echo " Channel Mixer: yes" echo " Crystalizer: yes" echo " Dynamic Range Compressor: yes" @@ -787,6 +797,7 @@ echo " Advanced Linux Sound Architecture: $have_alsa" echo " Jack Audio Connection Kit: $have_jack" echo " Open Sound System: $have_oss4" +echo " PipeWire: $have_pipewire" echo " PulseAudio: $have_pulse" echo " Simple DirectMedia Layer: $have_sdlout" echo " Sndio: $have_sndio" @@ -813,7 +824,6 @@ echo echo " General" echo " -------" -echo " Alarm (requires GTK+): $USE_GTK" echo " Ampache browser (requires Qt): $have_ampache" echo " Delete Files: $USE_GTK_OR_QT" echo " libnotify OSD: $have_notify" diff -Nru audacious-plugins-4.1/debian/changelog audacious-plugins-4.3.1/debian/changelog --- audacious-plugins-4.1/debian/changelog 2022-10-28 03:39:45.000000000 +0000 +++ audacious-plugins-4.3.1/debian/changelog 2023-12-07 01:46:56.000000000 +0000 @@ -1,27 +1,45 @@ -audacious-plugins (4.1-2build3+20.04.sav0) focal; urgency=medium +audacious-plugins (4.3.1-1~20.04.sav0) focal; urgency=medium * Backport to Focal + * Revert "Drop depends on deprecated dbus-glib" * Revert "Bump debhelper from old 12 to 13" (restore --fail-missing) - -- Rob Savoury Thu, 27 Oct 2022 20:39:45 -0700 + -- Rob Savoury Wed, 06 Dec 2023 17:46:56 -0800 -audacious-plugins (4.1-2build3) jammy; urgency=medium +audacious-plugins (4.3.1-1) unstable; urgency=medium - * Rebuild against new old libsndio7.0. + * Add libqt5x11extras5-dev to B-D. (Closes: #1010564) + * Bump Standards-Version to 4.6.2. + * Upload to unstable. + * Drop depends on deprecated dbus-glib. (Closes: #955875) - -- Gianfranco Costamagna Sun, 13 Mar 2022 13:16:11 +0100 + -- Mateusz Łukasik Mon, 31 Jul 2023 22:45:18 +0200 -audacious-plugins (4.1-2build2) jammy; urgency=medium +audacious-plugins (4.3.1-1~exp1) experimental; urgency=medium - * Rebuild against new old libsndio7.0. + * New upstream release + * Bump versioned depencencies. + * Use GTK3. (Closes: #967262) + * Switch buildsystem to meson. + * Add pipeline support. - -- Gianfranco Costamagna Sat, 12 Mar 2022 05:59:59 +0100 + -- Mateusz Łukasik Fri, 12 May 2023 22:05:21 +0200 -audacious-plugins (4.1-2build1) jammy; urgency=medium +audacious-plugins (4.2-1) unstable; urgency=medium - * Rebuild against new libsndio7.1. + * New upstream release: + + Drop patch for fix FTBFS with ffmpeg 5.0. + * Bump Standards-Version to 4.6.1. + * Bump versioned depencencies. + * Update d/copyright. - -- Gianfranco Costamagna Mon, 07 Mar 2022 12:12:20 +0100 + -- Mateusz Łukasik Fri, 28 Oct 2022 18:38:15 +0200 + +audacious-plugins (4.1-3) unstable; urgency=medium + + * Add upstream patch for fix FTBFS with ffmpeg 5.0. (Closes: #1004788) + + -- Mateusz Łukasik Sat, 25 Jun 2022 20:47:30 +0200 audacious-plugins (4.1-2) unstable; urgency=medium diff -Nru audacious-plugins-4.1/debian/control audacious-plugins-4.3.1/debian/control --- audacious-plugins-4.1/debian/control 2022-10-28 03:39:45.000000000 +0000 +++ audacious-plugins-4.3.1/debian/control 2023-12-07 01:46:56.000000000 +0000 @@ -7,52 +7,57 @@ Alf Gaida , Mateusz Łukasik Build-Depends: - audacious-dev (>= 4.1~), + audacious-dev (>= 4.3.1~), + meson, debhelper-compat (= 12), libarchive-dev, - libasound2-dev (>= 1.0) [linux-any], - libavcodec-dev (>= 4:0.6.1), - libavformat-dev (>= 4:0.6.1), - libavutil-dev (>= 4:0.6.1), - libbinio-dev (>= 1.4), + libasound2-dev [linux-any], + libavcodec-dev, + libavformat-dev, + libavutil-dev, + libbinio-dev, libbs2b-dev, - libcairo2-dev (>= 1.2.4), - libcddb2-dev (>= 1.2.1), - libcdio-cdda-dev (>= 0.70), + libcairo2-dev, + libcddb2-dev, + libcdio-cdda-dev, libcue-dev, libcurl4-gnutls-dev, libdbus-glib-1-dev, libfaad-dev, - libflac-dev (>= 1.2.1), - libfluidsynth-dev (>= 1.0.6) [linux-any], - libgtk2.0-dev, + libflac-dev, + libfluidsynth-dev [linux-any], + libgtk-3-dev, libjack-dev, liblircclient-dev, - libmms-dev (>= 0.3), + libmms-dev, libmodplug-dev, libmp3lame-dev, libmpg123-dev, - libneon27-gnutls-dev (>= 0.26), + libneon27-gnutls-dev, libnotify-dev, - libogg-dev (>= 1.0), - libopenmpt-dev (>= 0.2), - libpulse-dev (>= 0.9) [linux-any], + libogg-dev, + libopenmpt-dev, + libopus-dev, + libopusfile-dev, + libpipewire-0.3-dev, + libpulse-dev [linux-any], libqt5opengl5-dev, - libsamplerate0-dev (>= 0.0.15), + libqt5x11extras5-dev, + libsamplerate0-dev, libsdl2-dev, libsidplayfp-dev, - libsndfile1-dev (>= 0.19), + libsndfile1-dev, libsndio-dev, libsoxr-dev, - libtagc0-dev (>= 1.4), - libvorbis-dev (>= 1.1), - libwavpack-dev (>= 4.31), + libtagc0-dev, + libvorbis-dev, + libwavpack-dev, libxcomposite-dev, libxml2-dev, oss4-dev [!linux-any], qtbase5-dev, qtmultimedia5-dev, -Standards-Version: 4.6.0 +Standards-Version: 4.6.2 Homepage: https://www.audacious-media-player.org/ Vcs-Browser: https://salsa.debian.org/multimedia-team/audacious-plugins Vcs-Git: https://salsa.debian.org/multimedia-team/audacious-plugins.git diff -Nru audacious-plugins-4.1/debian/copyright audacious-plugins-4.3.1/debian/copyright --- audacious-plugins-4.1/debian/copyright 2022-01-02 13:17:15.000000000 +0000 +++ audacious-plugins-4.3.1/debian/copyright 2023-07-31 20:45:18.000000000 +0000 @@ -342,6 +342,8 @@ 2010, Benjamin Drung 2010, Chris Taylor 2006-2009, Adam Cécile (Le_Vert) + 2016-2022, Mateusz Łukasik + 2018-2022, Andrej Shadura License: GPL-2+ Files: debian/skins/Debian/* diff -Nru audacious-plugins-4.1/debian/rules audacious-plugins-4.3.1/debian/rules --- audacious-plugins-4.1/debian/rules 2022-10-28 03:39:45.000000000 +0000 +++ audacious-plugins-4.3.1/debian/rules 2023-12-07 00:29:38.000000000 +0000 @@ -2,30 +2,25 @@ include /usr/share/dpkg/architecture.mk -ifeq ($(DEB_HOST_ARCH),i386) -additional_confflags := --disable-sse2 -endif - ifeq ($(DEB_HOST_ARCH),armel) -additional_confflags := --disable-qtglspectrum +additional_confflags := -Dgl-spectrum=false endif ifeq ($(DEB_HOST_ARCH),armhf) -additional_confflags := --disable-qtglspectrum +additional_confflags := -Dgl-spectrum=false endif export DEB_BUILD_MAINT_OPTIONS=hardening=+bindnow %: - dh $@ + dh $@ --buildsystem=meson override_dh_auto_configure: dh_auto_configure -- $(additional_confflags) \ - --disable-rpath --enable-gtk + -Dgtk3=true override_dh_auto_clean: -dh_auto_clean - override_dh_missing: dh_missing --fail-missing diff -Nru audacious-plugins-4.1/extra.mk.in audacious-plugins-4.3.1/extra.mk.in --- audacious-plugins-4.1/extra.mk.in 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/extra.mk.in 2023-04-29 20:17:32.000000000 +0000 @@ -66,7 +66,11 @@ NOTIFY_LIBS ?= @NOTIFY_LIBS@ OPENMPT_CFLAGS ?= @OPENMPT_CFLAGS@ OPENMPT_LIBS ?= @OPENMPT_LIBS@ +OPUS_CFLAGS ?= @OPUS_CFLAGS@ +OPUS_LIBS ?= @OPUS_LIBS@ OSS_CFLAGS ?= @OSS_CFLAGS@ +PIPEWIRE_CFLAGS ?= @PIPEWIRE_CFLAGS@ +PIPEWIRE_LIBS ?= @PIPEWIRE_LIBS@ SAMPLERATE_CFLAGS ?= @SAMPLERATE_CFLAGS@ SAMPLERATE_LIBS ?= @SAMPLERATE_LIBS@ SDL_CFLAGS ?= @SDL_CFLAGS@ diff -Nru audacious-plugins-4.1/m4/buildsys.m4 audacious-plugins-4.3.1/m4/buildsys.m4 --- audacious-plugins-4.1/m4/buildsys.m4 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/m4/buildsys.m4 2023-04-29 20:17:32.000000000 +0000 @@ -1,6 +1,6 @@ dnl dnl Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016, 2017, -dnl 2018, 2020 +dnl 2018, 2020, 2021, 2022, 2023 dnl Jonathan Schleifer dnl dnl https://fossil.nil.im/buildsys @@ -26,14 +26,24 @@ AC_REQUIRE([AC_CANONICAL_BUILD]) AC_REQUIRE([AC_CANONICAL_HOST]) + AC_ARG_ENABLE(rpath, + AS_HELP_STRING([--disable-rpath], [do not use rpath])) + case "$build_os" in + darwin*) + case "$host_os" in darwin*) - case "$host_os" in - darwin*) - AC_SUBST(BUILD_AND_HOST_ARE_DARWIN, yes) - ;; - esac + AC_SUBST(BUILD_AND_HOST_ARE_DARWIN, yes) ;; + esac + ;; + esac + + AC_PROG_INSTALL + case "$INSTALL" in + ./build-aux/install-sh*) + INSTALL="$PWD/$INSTALL" + ;; esac AC_CONFIG_COMMANDS_PRE([ @@ -50,16 +60,15 @@ AC_SUBST(AMIGA_LIB_LDFLAGS) case "$build_os" in - morphos*) - dnl Don't use tput on MorphOS: The colored - dnl output is quite unreadable and in some - dnl MorphOS versions, the output from tput is - dnl not 8-bit safe, with awk (for AC_SUBST) - dnl failing as a result. - ;; - *) - AC_PATH_PROG(TPUT, tput) - ;; + morphos*) + dnl Don't use tput on MorphOS: The colored output is + dnl quite unreadable and in some MorphOS versions the + dnl output from tput is not 8-bit safe, with awk (for + dnl AC_SUBST) failing as a result. + ;; + *) + AC_PATH_PROG(TPUT, tput) + ;; esac AS_IF([test x"$TPUT" != x""], [ @@ -123,24 +132,24 @@ AC_DEFUN([BUILDSYS_CHECK_IOS], [ case "$host_os" in - darwin*) - AC_MSG_CHECKING(whether host is iOS) - AC_EGREP_CPP(yes, [ - #include - - #if (defined(TARGET_OS_IPHONE) && \ - TARGET_OS_IPHONE) || \ - (defined(TARGET_OS_SIMULATOR) && \ - TARGET_OS_SIMULATOR) - yes - #endif - ], [ - host_is_ios="yes" - ], [ - host_is_ios="no" - ]) - AC_MSG_RESULT($host_is_ios) - ;; + darwin*) + AC_MSG_CHECKING(whether host is iOS) + AC_EGREP_CPP(yes, [ + #include + + #if (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) || \ + (defined(TARGET_OS_SIMULATOR) && \ + TARGET_OS_SIMULATOR) + yes + #endif + ], [ + host_is_ios="yes" + ], [ + host_is_ios="no" + ]) + AC_MSG_RESULT($host_is_ios) + AC_CHECK_TOOL(CODESIGN, codesign) + ;; esac ]) @@ -148,16 +157,16 @@ AC_REQUIRE([AC_CANONICAL_HOST]) AC_MSG_CHECKING(whether we need an implib) case "$host_os" in - cygwin* | mingw*) - AC_MSG_RESULT(yes) - PROG_IMPLIB_NEEDED='yes' - PROG_IMPLIB_LDFLAGS='-Wl,--export-all-symbols,--out-implib,lib${PROG}.a' - ;; - *) - AC_MSG_RESULT(no) - PROG_IMPLIB_NEEDED='no' - PROG_IMPLIB_LDFLAGS='' - ;; + cygwin* | mingw*) + AC_MSG_RESULT(yes) + PROG_IMPLIB_NEEDED='yes' + PROG_IMPLIB_LDFLAGS='-Wl,--export-all-symbols,--out-implib,lib${PROG}.a' + ;; + *) + AC_MSG_RESULT(no) + PROG_IMPLIB_NEEDED='no' + PROG_IMPLIB_LDFLAGS='' + ;; esac AC_SUBST(PROG_IMPLIB_NEEDED) @@ -167,121 +176,118 @@ AC_DEFUN([BUILDSYS_SHARED_LIB], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([BUILDSYS_CHECK_IOS]) - AC_MSG_CHECKING(for shared library system) + AC_MSG_CHECKING(for shared library type) - case "$host_os" in - darwin*) - AC_MSG_RESULT(Darwin) - LIB_CFLAGS='-fPIC -DPIC' - LIB_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}' - LIB_LDFLAGS_INSTALL_NAME='-Wl,-install_name,${libdir}/$${out%.dylib}.${LIB_MAJOR}.dylib' - LIB_PREFIX='lib' - LIB_SUFFIX='.dylib' - LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CFLAGS='-fPIC -DPIC' - PLUGIN_LDFLAGS='-bundle ${PLUGIN_LDFLAGS_BUNDLE_LOADER}' - PLUGIN_SUFFIX='.bundle' - AS_IF([test x"$host_is_ios" = x"yes"], [ - LINK_PLUGIN='rm -fr $$out && ${MKDIR_P} $$out && if test -f Info.plist; then ${INSTALL} -m 644 Info.plist $$out/Info.plist; fi && ${LD} -o $$out/$${out%${PLUGIN_SUFFIX}} ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS} && ${CODESIGN} -fs ${CODESIGN_IDENTITY} --timestamp=none $$out' - ], [ - LINK_PLUGIN='rm -fr $$out && ${MKDIR_P} $$out/Contents/MacOS && if test -f Info.plist; then ${INSTALL} -m 644 Info.plist $$out/Contents/Info.plist; fi && ${LD} -o $$out/Contents/MacOS/$${out%${PLUGIN_SUFFIX}} ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS} && ${CODESIGN} -fs ${CODESIGN_IDENTITY} --timestamp=none $$out' - ]) - INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$$i' - UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib' - INSTALL_PLUGIN='&& rm -fr ${DESTDIR}${plugindir}/$$i && cp -R $$i ${DESTDIR}${plugindir}/' - UNINSTALL_PLUGIN='&& rm -fr ${DESTDIR}${plugindir}/$$i' - CLEAN_LIB='' - ;; - mingw* | cygwin*) - AC_MSG_RESULT(MinGW / Cygwin) - LIB_CFLAGS='' - LIB_LDFLAGS='-shared -Wl,--export-all-symbols,--out-implib,lib${SHARED_LIB}.a' - LIB_LDFLAGS_INSTALL_NAME='' - LIB_PREFIX='' - LIB_SUFFIX='.dll' + case "$host" in + *-*-darwin*) + AC_MSG_RESULT(Darwin) + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}' + LIB_LDFLAGS_INSTALL_NAME='-Wl,-install_name,${libdir}/$${out%.dylib}.${LIB_MAJOR}.dylib' + LIB_PREFIX='lib' + LIB_SUFFIX='.dylib' + AS_IF([test x"$enable_rpath" != x"no"], [ LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CFLAGS='' - PLUGIN_LDFLAGS='-shared' - PLUGIN_SUFFIX='.dll' - LINK_PLUGIN='${LD} -o $$out ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}' - INSTALL_LIB='&& ${MKDIR_P} ${DESTDIR}${bindir} && ${INSTALL} -m 755 $$i ${DESTDIR}${bindir}/$$i && ${INSTALL} -m 755 lib$$i.a ${DESTDIR}${libdir}/lib$$i.a' - UNINSTALL_LIB='&& rm -f ${DESTDIR}${bindir}/$$i ${DESTDIR}${libdir}/lib$$i.a' - INSTALL_PLUGIN='&& ${INSTALL} -m 755 $$i ${DESTDIR}${plugindir}/$$i' - UNINSTALL_PLUGIN='&& rm -f ${DESTDIR}${plugindir}/$$i' - CLEAN_LIB='${SHARED_LIB}.a' - ;; - openbsd* | mirbsd*) - AC_MSG_RESULT(OpenBSD) - LIB_CFLAGS='-fPIC -DPIC' - LIB_LDFLAGS='-shared' - LIB_LDFLAGS_INSTALL_NAME='' - LIB_PREFIX='lib' - LIB_SUFFIX='.so.${LIB_MAJOR}.${LIB_MINOR}' + ]) + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$$i' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib' + CLEAN_LIB='' + ;; + *-*-mingw* | *-*-cygwin*) + AC_MSG_RESULT(MinGW / Cygwin) + LIB_CFLAGS='' + LIB_LDFLAGS='-shared -Wl,--export-all-symbols' + LIB_LDFLAGS_INSTALL_NAME='' + LIB_PREFIX='' + LIB_SUFFIX='${LIB_MAJOR}.dll' + LINK_LIB='&& rm -f lib$${out%${LIB_SUFFIX}}.dll.a && ${LN_S} $$out lib$${out%${LIB_SUFFIX}}.dll.a' + INSTALL_LIB='&& ${MKDIR_P} ${DESTDIR}${bindir} && ${INSTALL} -m 755 $$i ${DESTDIR}${bindir}/$$i && ${INSTALL} -m 755 lib$${i%${LIB_SUFFIX}}.dll.a ${DESTDIR}${libdir}/lib$${i%${LIB_SUFFIX}}.dll.a' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${bindir}/$$i ${DESTDIR}${libdir}/lib$${i%${LIB_SUFFIX}}.dll.a' + CLEAN_LIB='${SHARED_LIB}.a ${SHARED_LIB_NOINST}.a' + ;; + *-*-openbsd* | *-*-mirbsd*) + AC_MSG_RESULT(OpenBSD) + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-shared' + LIB_LDFLAGS_INSTALL_NAME='' + LIB_PREFIX='lib' + LIB_SUFFIX='.so.${LIB_MAJOR}.${LIB_MINOR}' + AS_IF([test x"$enable_rpath" != x"no"], [ LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CFLAGS='-fPIC -DPIC' - PLUGIN_LDFLAGS='-shared' - PLUGIN_SUFFIX='.so' - LINK_PLUGIN='${LD} -o $$out ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}' - INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i' - UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i' - INSTALL_PLUGIN='&& ${INSTALL} -m 755 $$i ${DESTDIR}${plugindir}/$$i' - UNINSTALL_PLUGIN='&& rm -f ${DESTDIR}${plugindir}/$$i' - CLEAN_LIB='' - ;; - solaris*) - AC_MSG_RESULT(Solaris) - LIB_CFLAGS='-fPIC -DPIC' - LIB_LDFLAGS='-shared -Wl,-soname=${SHARED_LIB}.${LIB_MAJOR}.${LIB_MINOR}' - LIB_LDFLAGS_INSTALL_NAME='' - LIB_PREFIX='lib' - LIB_SUFFIX='.so' + ]) + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i' + CLEAN_LIB='' + ;; + *-*-solaris*) + AC_MSG_RESULT(Solaris) + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-shared -Wl,-soname=$$out.${LIB_MAJOR}.${LIB_MINOR}' + LIB_LDFLAGS_INSTALL_NAME='' + LIB_PREFIX='lib' + LIB_SUFFIX='.so' + AS_IF([test x"$enable_rpath" != x"no"], [ LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CFLAGS='-fPIC -DPIC' - PLUGIN_LDFLAGS='-shared' - PLUGIN_SUFFIX='.so' - LINK_PLUGIN='${LD} -o $$out ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}' - INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR} && rm -f ${DESTDIR}${libdir}/$$i && ${LN_S} $$i.${LIB_MAJOR}.${LIB_MINOR} ${DESTDIR}${libdir}/$$i' - UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}' - INSTALL_PLUGIN='&& ${INSTALL} -m 755 $$i ${DESTDIR}${plugindir}/$$i' - UNINSTALL_PLUGIN='&& rm -f ${DESTDIR}${plugindir}/$$i' - CLEAN_LIB='' - ;; - *-android*) - AC_MSG_RESULT(Android) - LIB_CFLAGS='-fPIC -DPIC' - LIB_LDFLAGS='-shared -Wl,-soname=${SHARED_LIB}.${LIB_MAJOR}' - LIB_LDFLAGS_INSTALL_NAME='' - LIB_PREFIX='lib' - LIB_SUFFIX='.so' - LDFLAGS_RPATH='' - PLUGIN_CFLAGS='-fPIC -DPIC' - PLUGIN_LDFLAGS='-shared' - PLUGIN_SUFFIX='.so' - LINK_PLUGIN='${LD} -o $$out ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}' - INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0 && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i' - UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0' - INSTALL_PLUGIN='&& ${INSTALL} -m 755 $$i ${DESTDIR}${plugindir}/$$i' - UNINSTALL_PLUGIN='&& rm -f ${DESTDIR}${plugindir}/$$i' - CLEAN_LIB='' - ;; - *) - AC_MSG_RESULT(ELF) - LIB_CFLAGS='-fPIC -DPIC' - LIB_LDFLAGS='-shared -Wl,-soname=${SHARED_LIB}.${LIB_MAJOR}' - LIB_LDFLAGS_INSTALL_NAME='' - LIB_PREFIX='lib' - LIB_SUFFIX='.so' + ]) + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR} && rm -f ${DESTDIR}${libdir}/$$i && ${LN_S} $$i.${LIB_MAJOR}.${LIB_MINOR} ${DESTDIR}${libdir}/$$i' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}' + CLEAN_LIB='' + ;; + *-*-android*) + AC_MSG_RESULT(Android) + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-shared -Wl,-soname=$$out.${LIB_MAJOR}' + LIB_LDFLAGS_INSTALL_NAME='' + LIB_PREFIX='lib' + LIB_SUFFIX='.so' + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0 && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0' + CLEAN_LIB='' + ;; + hppa*-*-hpux*) + AC_MSG_RESULT([HP-UX (PA-RISC)]) + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-shared -Wl,+h,$$out' + LIB_LDFLAGS_INSTALL_NAME='' + LIB_PREFIX='lib' + LIB_SUFFIX='.${LIB_MAJOR}' + LINK_LIB='&& rm -f $${out%%.*}.sl && ${LN_S} $$out $${out%%.*}.sl' + AS_IF([test x"$enable_rpath" != x"no"], [ + LDFLAGS_RPATH='-Wl,+b,${libdir}' + ]) + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i && ${LN_S} -f $$i ${DESTDIR}${libdir}/$${i%%.*}.sl' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$${i%%.*}.sl' + CLEAN_LIB='' + ;; + ia64*-*-hpux*) + AC_MSG_RESULT([HP-UX (Itanium)]) + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-shared -Wl,+h,$$out' + LIB_LDFLAGS_INSTALL_NAME='' + LIB_PREFIX='lib' + LIB_SUFFIX='.${LIB_MAJOR}' + LINK_LIB='&& rm -f $${out%%.*}.so && ${LN_S} $$out $${out%%.*}.so' + AS_IF([test x"$enable_rpath" != x"no"], [ + LDFLAGS_RPATH='-Wl,+b,${libdir}' + ]) + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i && ${LN_S} -f $$i ${DESTDIR}${libdir}/$${i%%.*}.so' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$${i%%.*}.so' + CLEAN_LIB='' + ;; + *) + AC_MSG_RESULT(ELF) + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-shared -Wl,-soname=$$out.${LIB_MAJOR}' + LIB_LDFLAGS_INSTALL_NAME='' + LIB_PREFIX='lib' + LIB_SUFFIX='.so' + AS_IF([test x"$enable_rpath" != x"no"], [ LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CFLAGS='-fPIC -DPIC' - PLUGIN_LDFLAGS='-shared' - PLUGIN_SUFFIX='.so' - LINK_PLUGIN='${LD} -o $$out ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}' - INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0 && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i' - UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0' - INSTALL_PLUGIN='&& ${INSTALL} -m 755 $$i ${DESTDIR}${plugindir}/$$i' - UNINSTALL_PLUGIN='&& rm -f ${DESTDIR}${plugindir}/$$i' - CLEAN_LIB='' - ;; + ]) + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0 && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0' + CLEAN_LIB='' + ;; esac AC_SUBST(LIB_CFLAGS) @@ -289,15 +295,10 @@ AC_SUBST(LIB_LDFLAGS_INSTALL_NAME) AC_SUBST(LIB_PREFIX) AC_SUBST(LIB_SUFFIX) + AC_SUBST(LINK_LIB) AC_SUBST(LDFLAGS_RPATH) - AC_SUBST(PLUGIN_CFLAGS) - AC_SUBST(PLUGIN_LDFLAGS) - AC_SUBST(PLUGIN_SUFFIX) - AC_SUBST(LINK_PLUGIN) AC_SUBST(INSTALL_LIB) AC_SUBST(UNINSTALL_LIB) - AC_SUBST(INSTALL_PLUGIN) - AC_SUBST(UNINSTALL_PLUGIN) AC_SUBST(CLEAN_LIB) ]) @@ -306,23 +307,77 @@ AC_REQUIRE([BUILDSYS_CHECK_IOS]) AC_REQUIRE([BUILDSYS_SHARED_LIB]) - AC_CHECK_TOOL(CODESIGN, codesign) - case "$host_os" in - darwin*) - AS_IF([test x"$host_is_ios" = x"yes"], [ - FRAMEWORK_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}' - FRAMEWORK_LDFLAGS_INSTALL_NAME='-Wl,-install_name,@executable_path/Frameworks/$$out/$${out%.framework}' - ], [ - FRAMEWORK_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}' - FRAMEWORK_LDFLAGS_INSTALL_NAME='-Wl,-install_name,@executable_path/../Frameworks/$$out/$${out%.framework}' - ]) - - AC_SUBST(FRAMEWORK_LDFLAGS) - AC_SUBST(FRAMEWORK_LDFLAGS_INSTALL_NAME) - AC_SUBST(FRAMEWORK_LIBS) + darwin*) + AS_IF([test x"$host_is_ios" = x"yes"], [ + FRAMEWORK_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}' + FRAMEWORK_LDFLAGS_INSTALL_NAME='-Wl,-install_name,@executable_path/Frameworks/$$out/$${out%.framework}' + ], [ + FRAMEWORK_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}' + FRAMEWORK_LDFLAGS_INSTALL_NAME='-Wl,-install_name,@executable_path/../Frameworks/$$out/$${out%.framework}' + ]) - $1 - ;; + AC_SUBST(FRAMEWORK_LDFLAGS) + AC_SUBST(FRAMEWORK_LDFLAGS_INSTALL_NAME) + AC_SUBST(FRAMEWORK_LIBS) + + $1 + ;; esac ]) + +AC_DEFUN([BUILDSYS_PLUGIN], [ + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([BUILDSYS_CHECK_IOS]) + AC_MSG_CHECKING(for plugin type) + + case "$host" in + *-*-darwin*) + AC_MSG_RESULT(Darwin) + PLUGIN_CFLAGS='-fPIC -DPIC' + PLUGIN_LDFLAGS='-bundle ${PLUGIN_LDFLAGS_BUNDLE_LOADER}' + PLUGIN_SUFFIX='.bundle' + AS_IF([test x"$host_is_ios" = x"yes"], [ + LINK_PLUGIN='rm -fr $$out && ${MKDIR_P} $$out && if test -f Info.plist; then ${INSTALL} -m 644 Info.plist $$out/Info.plist; fi && ${LD} -o $$out/$${out%${PLUGIN_SUFFIX}} ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS} && ${CODESIGN} -fs ${CODESIGN_IDENTITY} --timestamp=none $$out' + ], [ + LINK_PLUGIN='rm -fr $$out && ${MKDIR_P} $$out/Contents/MacOS && if test -f Info.plist; then ${INSTALL} -m 644 Info.plist $$out/Contents/Info.plist; fi && ${LD} -o $$out/Contents/MacOS/$${out%${PLUGIN_SUFFIX}} ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS} && ${CODESIGN} -fs ${CODESIGN_IDENTITY} --timestamp=none $$out' + ]) + INSTALL_PLUGIN='&& rm -fr ${DESTDIR}${plugindir}/$$i && cp -R $$i ${DESTDIR}${plugindir}/' + UNINSTALL_PLUGIN='&& rm -fr ${DESTDIR}${plugindir}/$$i' + ;; + *-*-mingw* | *-*-cygwin*) + AC_MSG_RESULT(MinGW / Cygwin) + PLUGIN_CFLAGS='' + PLUGIN_LDFLAGS='-shared -Wl,--export-all-symbols' + PLUGIN_SUFFIX='.dll' + LINK_PLUGIN='${LD} -o $$out ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}' + INSTALL_PLUGIN='&& ${INSTALL} -m 755 $$i ${DESTDIR}${plugindir}/$$i' + UNINSTALL_PLUGIN='&& rm -f ${DESTDIR}${plugindir}/$$i' + ;; + hppa*-*-hpux*) + AC_MSG_RESULT([HP-UX (PA-RISC)]) + PLUGIN_CFLAGS='-fPIC -DPIC' + PLUGIN_LDFLAGS='-shared' + PLUGIN_SUFFIX='.sl' + LINK_PLUGIN='${LD} -o $$out ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}' + INSTALL_PLUGIN='&& ${INSTALL} -m 755 $$i ${DESTDIR}${plugindir}/$$i' + UNINSTALL_PLUGIN='&& rm -f ${DESTDIR}${plugindir}/$$i' + ;; + *) + AC_MSG_RESULT(ELF) + PLUGIN_CFLAGS='-fPIC -DPIC' + PLUGIN_LDFLAGS='-shared' + PLUGIN_SUFFIX='.so' + LINK_PLUGIN='${LD} -o $$out ${PLUGIN_OBJS} ${PLUGIN_OBJS_EXTRA} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}' + INSTALL_PLUGIN='&& ${INSTALL} -m 755 $$i ${DESTDIR}${plugindir}/$$i' + UNINSTALL_PLUGIN='&& rm -f ${DESTDIR}${plugindir}/$$i' + ;; + esac + + AC_SUBST(PLUGIN_CFLAGS) + AC_SUBST(PLUGIN_LDFLAGS) + AC_SUBST(PLUGIN_SUFFIX) + AC_SUBST(LINK_PLUGIN) + AC_SUBST(INSTALL_PLUGIN) + AC_SUBST(UNINSTALL_PLUGIN) +]) diff -Nru audacious-plugins-4.1/meson.build audacious-plugins-4.3.1/meson.build --- audacious-plugins-4.1/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -1,14 +1,14 @@ project('audacious-plugins', 'c', 'cpp', - version: '4.1', - meson_version: '>= 0.46', + version: '4.3.1', + meson_version: '>= 0.51', default_options: [ 'c_std=gnu99', - 'cpp_std=gnu++11', + 'cpp_std=gnu++17', 'warning_level=1' ]) -copyright = 'Copyright (C) 2001-2021 Audacious developers and others' +copyright = 'Copyright (C) 2001-2023 Audacious developers and others' have_darwin = host_machine.system() == 'darwin' @@ -26,70 +26,63 @@ endif -glib_req = '>= 2.32' -glib_dep = dependency('glib-2.0', version: glib_req, required: true) -gmodule_dep = dependency('gmodule-2.0', version: glib_req, required: true) - - -zlib_dep = dependency('zlib', required: true) - - -audacious_req = '>= 4.1' +audacious_req = '>= 4.3' audacious_dep = dependency('audacious', version: audacious_req, required: true) # XXX - make this its own .pc file audtag_dep = declare_dependency(link_args: [ - '-L@0@'.format(audacious_dep.get_pkgconfig_variable('lib_dir')), + '-L@0@'.format(audacious_dep.get_variable(pkgconfig: 'lib_dir')), '-laudtag' ]) # XXX - make this its own .pc file audqt_dep = declare_dependency(link_args: [ - '-L@0@'.format(audacious_dep.get_pkgconfig_variable('lib_dir')), + '-L@0@'.format(audacious_dep.get_variable(pkgconfig: 'lib_dir')), '-laudqt' ]) # XXX - make this its own .pc file audgui_dep = declare_dependency(link_args: [ - '-L@0@'.format(audacious_dep.get_pkgconfig_variable('lib_dir')), + '-L@0@'.format(audacious_dep.get_variable(pkgconfig: 'lib_dir')), '-laudgui' ]) +glib_req = '>= 2.32' +glib_dep = dependency('glib-2.0', version: glib_req, required: true) +gmodule_dep = dependency('gmodule-2.0', version: glib_req, required: true) +zlib_dep = dependency('zlib', required: true) + +math_dep = cxx.find_library('m', required: false) +samplerate_dep = dependency('samplerate', required: false) xml_dep = dependency('libxml-2.0', required: false) if get_option('qt') - qt_req = '>= 5.2' - qt_dep = dependency('qt5', version: qt_req, required: true, modules: ['Core', 'Widgets', 'Gui']) + if get_option('qt6') + qt_req = '>= 6.0' + qt_dep = dependency('qt6', version: qt_req, required: true, modules: ['Core', 'Widgets', 'Gui']) + else + qt_req = '>= 5.2' + qt_dep = dependency('qt5', version: qt_req, required: true, modules: ['Core', 'Widgets', 'Gui']) + endif endif if get_option('gtk') - gtk_req = '>= 2.24' - gtk_dep = dependency('gtk+-2.0', version: gtk_req, required: true) -endif - - -have_cdaudio = false -if get_option('cdaudio') - libcdio_dep = dependency('libcdio', version: '>= 0.70', required: false) - libcdio_cdda_dep = dependency('libcdio_cdda', version: '>= 0.70', required: false) - libcddb_dep = dependency('libcddb', version: '>= 1.2.1', required: false) - - if libcdio_dep.found() and libcdio_cdda_dep.found() and libcddb_dep.found() - have_cdaudio = true + if get_option('gtk3') + gtk_req = '>= 3.22' + gtk_dep = dependency('gtk+-3.0', version: gtk_req, required: true) + else + gtk_req = '>= 2.24' + gtk_dep = dependency('gtk+-2.0', version: gtk_req, required: true) endif endif -math_dep = cxx.find_library('m', required: false) -samplerate_dep = dependency('samplerate', required: false) - - if cc.get_id() in ['gcc', 'clang'] common_flags = [ '-ffast-math', @@ -145,17 +138,25 @@ endif -# XXX - why do we have to define this manually? -if (cxx.has_header('libintl.h')) - add_project_arguments('-DHAVE_GETTEXT', language: ['c', 'cpp']) - - if have_darwin or have_windows - add_project_link_arguments('-lintl', language: ['c', 'cpp']) +if meson.version().version_compare('>= 0.59') + intl_dep = dependency('intl', required: false) + intl_found = intl_dep.found() +else + if cxx.has_function('ngettext', prefix: '#include ') + intl_dep = dependency('', required: false) + intl_found = true + else + intl_dep = cxx.find_library('intl', required: false) + intl_found = intl_dep.found() endif endif +if intl_found + conf.set10('HAVE_GETTEXT', true) +endif + -install_plugindir = audacious_dep.get_pkgconfig_variable('plugin_dir') +install_plugindir = audacious_dep.get_variable(pkgconfig: 'plugin_dir') conf.set_quoted('INSTALL_PLUGINDIR', install_plugindir) @@ -178,6 +179,9 @@ if get_option('gtk') conf.set10('USE_GTK', true) + if get_option('gtk3') + conf.set10('USE_GTK3', true) + endif endif @@ -199,14 +203,17 @@ }, section: 'Directories') summary({ - 'Qt support': conf.has('USE_QT'), - 'GTK support': conf.has('USE_GTK'), + 'Qt 5 support': get_option('qt') and not get_option('qt6'), + 'Qt 6 support': get_option('qt6'), + 'GTK2 support': get_option('gtk') and not get_option('gtk3'), + 'GTK3 support': get_option('gtk3'), }, section: 'GUI Toolkits') summary({ 'Audio CD': get_variable('have_cdaudio', false), 'Free Lossless Audio Codec': get_variable('have_flac', false), 'Ogg Vorbis': get_variable('have_vorbis', false), + 'Opus': get_variable('have_opus', false), 'MIDI (via FluidSynth)': get_variable('have_amidiplug', false), 'MPEG-1 Layer I/II/III (via mpg123)': get_variable('have_mpg123', false), 'MPEG-2/4 AAC': get_variable('have_aac', false), @@ -214,7 +221,7 @@ }, section: 'Audio Formats') summary({ - 'FFmpeg/Libav': get_variable('have_ffaudio', false), + 'FFmpeg': get_variable('have_ffaudio', false), 'Libsndfile': get_variable('have_sndfile', false), }, section: 'External Decoders') @@ -236,6 +243,7 @@ summary({ 'Bauer stereophonic-to-binaural (bs2b)': get_variable('have_bs2b', false), + 'Bitcrusher': true, 'Channel Mixer': true, 'Crystalizer': true, 'Dynamic Range Compressor': true, @@ -253,6 +261,7 @@ 'Advanced Linux Sound Architecture': get_variable('have_alsa', false), 'Jack Audio Connection Kit': get_variable('have_jack', false), 'Open Sound System': get_variable('have_oss4', false), + 'PipeWire': get_variable('have_pipewire', false), 'PulseAudio': get_variable('have_pulse', false), 'Simple DirectMedia Layer': get_variable('have_sdlout', false), 'Sndio': get_variable('have_sndio', false), @@ -279,7 +288,6 @@ }, section: 'Transports') summary({ - 'Alarm (requires GTK)': conf.has('USE_GTK'), 'Ampache browser (requires Qt)': get_variable('have_ampache', false), 'Delete Files': conf.has('USE_GTK_OR_QT'), 'Libnotify OSD': get_variable('have_notify', false), diff -Nru audacious-plugins-4.1/meson_options.txt audacious-plugins-4.3.1/meson_options.txt --- audacious-plugins-4.1/meson_options.txt 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/meson_options.txt 2023-04-29 20:17:32.000000000 +0000 @@ -1,8 +1,12 @@ # GUI toolkits option('gtk', type: 'boolean', value: true, description: 'Whether GTK support is enabled') +option('gtk3', type: 'boolean', value: false, + description: 'Whether GTK3 support is enabled') option('qt', type: 'boolean', value: true, description: 'Whether Qt support is enabled') +option('qt6', type: 'boolean', value: false, + description: 'Whether Qt 6 support is enabled') # container plugins @@ -28,8 +32,8 @@ description: 'Whether CD audio support is enabled') option('console', type: 'boolean', value: true, description: 'Whether Game Music Emu support is enabled') -option('ffaudio', type: 'combo', choices: ['ffmpeg', 'libav', 'disabled'], - description: 'Choose between ffmpeg, libav or disabled') +option('ffaudio', type: 'boolean', value: true, + description: 'Whether FFmpeg support is enabled') option('flac', type: 'boolean', value: true, description: 'Whether FLAC support is enabled') option('modplug', type: 'boolean', value: true, @@ -38,6 +42,8 @@ description: 'Whether MPG123 support is enabled') option('openmpt', type: 'boolean', value: true, description: 'Whether OpenMPT support is enabled') +option('opus', type: 'boolean', value: true, + description: 'Whether Opus support is enabled') option('sid', type: 'boolean', value: true, description: 'Whether SID emulation support is enabled') option('sndfile', type: 'boolean', value: true, @@ -65,6 +71,8 @@ description: 'Whether JACK support is enabled') option('oss', type: 'boolean', value: true, description: 'Whether OSS support is enabled') +option('pipewire', type: 'boolean', value: true, + description: 'Whether PipeWire support is enabled') option('pulse', type: 'boolean', value: true, description: 'Whether PulseAudio support is enabled') option('qtaudio', type: 'boolean', value: true, diff -Nru audacious-plugins-4.1/po/LINGUAS audacious-plugins-4.3.1/po/LINGUAS --- audacious-plugins-4.1/po/LINGUAS 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/LINGUAS 2023-04-29 20:17:32.000000000 +0000 @@ -1,3 +1,4 @@ +af ar be bg @@ -12,6 +13,8 @@ es_MX es et +eu +fa_IR fi fr gl @@ -28,6 +31,7 @@ pl pt_BR pt_PT +ro ru si sk @@ -39,5 +43,6 @@ ta tr uk +uz zh_CN zh_TW diff -Nru audacious-plugins-4.1/po/Makefile audacious-plugins-4.3.1/po/Makefile --- audacious-plugins-4.1/po/Makefile 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/Makefile 2023-04-29 20:17:32.000000000 +0000 @@ -7,7 +7,8 @@ # have been introduced, and then continue with 'make update-po' or # 'make update-pot' respectively. # -LOCALES = ar.po \ +LOCALES = af.po \ + ar.po \ be.po \ bg.po \ ca.po \ @@ -21,6 +22,8 @@ es_MX.po \ es.po \ et.po \ + eu.po \ + fa_IR.po \ fi.po \ fr.po \ gl.po \ @@ -37,6 +40,7 @@ pl.po \ pt_BR.po \ pt_PT.po \ + ro.po \ ru.po \ si.po \ sk.po \ @@ -48,6 +52,7 @@ ta.po \ tr.po \ uk.po \ + uz.po \ zh_CN.po \ zh_TW.po diff -Nru audacious-plugins-4.1/po/POTFILES.in audacious-plugins-4.3.1/po/POTFILES.in --- audacious-plugins-4.1/po/POTFILES.in 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/POTFILES.in 2023-04-29 20:17:32.000000000 +0000 @@ -1,8 +1,6 @@ # Please don't update this file manually - use ./update-potfiles.sh instead! src/aac/aac.cc src/adplug/adplug-xmms.cc -src/alarm/alarm.cc -src/alarm/interface.cc src/albumart/albumart.cc src/albumart-qt/albumart.cc src/alsa/alsa.h @@ -20,6 +18,7 @@ src/asx3/asx3.cc src/asx/asx.cc src/audpl/audpl.cc +src/bitcrusher/bitcrusher.cc src/blur_scope/blur_scope.cc src/blur_scope-qt/blur_scope.cc src/bs2b/plugin.cc @@ -129,8 +128,10 @@ src/notify/osd.cc src/openmpt/mpt.cc src/openmpt/mptwrap.h +src/opus/opus.cc src/oss4/oss.h src/oss4/plugin.cc +src/pipewire/pipewire.cc src/playlist-manager/playlist-manager.cc src/playlist-manager-qt/playlist-manager-qt.cc src/pls/pls.cc @@ -159,7 +160,9 @@ src/search-tool/library.cc src/search-tool-qt/library.cc src/search-tool-qt/search-model.cc +src/search-tool-qt/search-model.h src/search-tool-qt/search-tool-qt.cc +src/search-tool/search-model.h src/search-tool/search-tool.cc src/sid/xmms-sid.cc src/sid/xs_config.cc @@ -178,6 +181,7 @@ src/skins-qt/playlist-widget.cc src/skins-qt/playlistwin.cc src/skins-qt/plugin.cc +src/skins-qt/search-select.cc src/skins-qt/skins_cfg.cc src/skins-qt/skinselector.cc src/skins/search-select.cc @@ -198,6 +202,8 @@ src/streamtuner/streamtuner.cc src/tonegen/tonegen.cc src/ui-common/dialogs-qt.cc +src/ui-common/menu-ops-gtk.cc +src/ui-common/menu-ops-qt.cc src/voice_removal/voice_removal.cc src/vorbis/vorbis.cc src/vorbis/vorbis.h @@ -207,6 +213,8 @@ src/vumeter-qt/vumeter_qt.h src/waveout/waveout.cc src/wavpack/wavpack.cc +src/xsf/desmume/arm_instructions.cc +src/xsf/desmume/PACKED.h src/xsf/desmume/types.h src/xsf/plugin.cc src/xspf/xspf.cc diff -Nru audacious-plugins-4.1/po/af.po audacious-plugins-4.3.1/po/af.po --- audacious-plugins-4.1/po/af.po 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/po/af.po 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,4785 @@ +# Afrikaans translation for Audacious Plugins +# Copyright (C) Audacious translators +# This file is distributed under the same license as the Audacious Plugins package. +# +# Translators: +# Reynier West, 2022-2023 +msgid "" +msgstr "" +"Project-Id-Version: Audacious Plugins\n" +"Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Reynier West, 2022-2023\n" +"Language-Team: Afrikaans (http://app.transifex.com/audacious/audacious/" +"language/af/)\n" +"Language: af\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/aac/aac.cc:19 +msgid "AAC (Raw) Decoder" +msgstr "AAC (Rou) Dekodeerder" + +#: src/adplug/adplug-xmms.cc:70 +msgid "AdPlug (AdLib Player)" +msgstr "AdPlug (AdLib Speler)" + +#: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 +msgid "sequenced" +msgstr "gerangskik" + +#: src/adplug/adplug-xmms.cc:349 src/sid/xs_config.cc:61 +msgid "Output" +msgstr "Uitsette" + +#: src/adplug/adplug-xmms.cc:350 +msgid "OPL Emulator:" +msgstr "OPL Emuleerder:" + +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Monstertempo:" + +#: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 +#: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 +#: src/modplug/plugin_main.cc:77 src/resample/resample.cc:201 +#: src/resample/resample.cc:207 src/resample/resample.cc:211 +#: src/resample/resample.cc:215 src/resample/resample.cc:219 +#: src/resample/resample.cc:223 src/resample/resample.cc:227 +#: src/resample/resample.cc:231 src/resample/resample.cc:235 +#: src/resample/resample.cc:239 src/resample/resample.cc:243 +#: src/sid/xs_config.cc:67 src/soxr/sox-resampler.cc:205 +msgid "Hz" +msgstr "Hz" + +#: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 +#: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 +msgid "Miscellaneous" +msgstr "Allerlei" + +#: src/adplug/adplug-xmms.cc:356 +msgid "Repeat song in endless loop" +msgstr "Herhaal liedjie in eindelose lus" + +#: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 +msgid "Album Art" +msgstr "Albumkuns" + +#: src/alsa/alsa.h:64 +msgid "ALSA Output" +msgstr "ALSA Uitset" + +#: src/alsa/config.cc:28 +msgid "" +"ALSA Output Plugin for Audacious\n" +"Copyright 2009-2012 John Lindgren\n" +"\n" +"My thanks to William Pitcock, author of the ALSA Output Plugin NG, whose " +"code served as a reference when the ALSA manual was not enough." +msgstr "" +"ALSA Uitset Inprop vir Audacious\n" +"Kopiereg 2009-2012 John Lindgren\n" +"\n" +"My dank aan William Pitcock, skrywer van die ALSA Uitset Inprop NG, wie se " +"kode as 'n verwysing gedien het toe die ALSA handleiding nie genoeg was nie." + +#: src/alsa/config.cc:61 +msgid "(no description)" +msgstr "(geen beskrywing)" + +#: src/alsa/config.cc:166 +msgid "Default PCM device" +msgstr "Verstek PCM toestel" + +#: src/alsa/config.cc:188 +msgid "Default mixer device" +msgstr "Verstek menger toestel" + +#: src/alsa/config.cc:296 +msgid "PCM device:" +msgstr "PCM toestel:" + +#: src/alsa/config.cc:299 +msgid "Mixer device:" +msgstr "Menger toestel:" + +#: src/alsa/config.cc:302 +msgid "Mixer element:" +msgstr "Menger element" + +#: src/amidiplug/amidi-plug.cc:42 +msgid "AMIDI-Plug (MIDI Player)" +msgstr "AMIDI-Plug (MIDI Speler)" + +#: src/amidiplug/amidi-plug.cc:445 +msgid "" +"AMIDI-Plug\n" +"modular MIDI music player\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"written by Giacomo Lozito\n" +"\n" +"\n" +"special thanks to...\n" +"\n" +"Clemens Ladisch and Jaroslav Kysela\n" +"for their cool programs aplaymidi and amixer; those\n" +"were really useful, along with alsa-lib docs, in order\n" +"to learn more about the ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"for the nice midi keyboard logo\n" +"\n" +"Tony Vroon\n" +"for the good help with alpha testing" +msgstr "" +"AMIDI-Plug\n" +"modulêre MIDI-musiekspeler\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"geskryf deur Giacomo Lozito\n" +"\n" +"\n" +"spesiale dank aan...\n" +"\n" +"Clemens Ladisch en Jaroslav Kysela\n" +"vir hulle kwaai programme aplaymidi en amixer; hulle\n" +"was regtig nuttig, saam met die alsa-lib doks, om\n" +"meer te leer van die ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"vir die mooi midi-sleutelbord logo\n" +"\n" +"Tony Vroon\n" +"vir die goeie hulp met alpha-toetsing" + +#: src/amidiplug/i_configure.cc:94 +msgid "Override default gain:" +msgstr "Oorskryf verstek versterking:" + +#: src/amidiplug/i_configure.cc:102 +msgid "Override default polyphony:" +msgstr "Oorskryf verstek polifonie:" + +#: src/amidiplug/i_configure.cc:110 +msgid "Override default reverb:" +msgstr "Oorskryf verstek galm:" + +#: src/amidiplug/i_configure.cc:112 src/amidiplug/i_configure.cc:120 +msgid "On" +msgstr "Aan" + +#: src/amidiplug/i_configure.cc:118 +msgid "Override default chorus:" +msgstr "Oorskryf verstek koor:" + +#: src/amidiplug/i_configure.cc:128 src/console/plugin.cc:29 +msgid "Playback" +msgstr "Terugspeel" + +#: src/amidiplug/i_configure.cc:129 +msgid "Transpose:" +msgstr "Transponeer:" + +#: src/amidiplug/i_configure.cc:131 src/speedpitch/speed-pitch.cc:257 +msgid "semitones" +msgstr "halftone" + +#: src/amidiplug/i_configure.cc:132 +msgid "Drum shift:" +msgstr "Dromme skuif:" + +#: src/amidiplug/i_configure.cc:134 +msgid "note numbers" +msgstr "noot nommers" + +#: src/amidiplug/i_configure.cc:135 +msgid "Skip leading silence" +msgstr "Slaan leiende stilte oor" + +#: src/amidiplug/i_configure.cc:137 +msgid "Skip trailing silence" +msgstr "Slaan agterstilte oor" + +#: src/amidiplug/i_configure.cc:141 +msgid "SoundFont" +msgstr "SoundFont" + +#: src/amidiplug/i_configure.cc:148 +msgid "Synthesizer" +msgstr "Sintetiseerder" + +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 +msgid "AMIDI-Plug - select SoundFont file" +msgstr "AMIDI-Plug - kies SoundFont lêer" + +#: src/amidiplug/i_configure-fluidsynth.cc:61 +msgid "_Cancel" +msgstr "_Kanselleer" + +#: src/amidiplug/i_configure-fluidsynth.cc:62 +msgid "_Open" +msgstr "_Oop" + +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 +msgid "File name" +msgstr "Lêer naam" + +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 +msgid "Size (bytes)" +msgstr "Grote (grepe)" + +#: src/amidiplug/i_fileinfo.cc:184 +msgid "Name:" +msgstr "Naam:" + +#: src/amidiplug/i_fileinfo.cc:202 +msgid " MIDI Info " +msgstr "MIDI Info" + +#: src/amidiplug/i_fileinfo.cc:216 +msgid "Format:" +msgstr "Formaat:" + +#: src/amidiplug/i_fileinfo.cc:219 +msgid "Length (msec):" +msgstr "Lengte (msek):" + +#: src/amidiplug/i_fileinfo.cc:222 +msgid "No. of Tracks:" +msgstr "Aantal Snitte:" + +#: src/amidiplug/i_fileinfo.cc:228 +msgid "variable" +msgstr "veranderlik" + +#: src/amidiplug/i_fileinfo.cc:230 +msgid "BPM:" +msgstr "SPM:" + +#: src/amidiplug/i_fileinfo.cc:238 +msgid "BPM (wavg):" +msgstr "SPM (ggem):" + +#: src/amidiplug/i_fileinfo.cc:241 +msgid "Time Div:" +msgstr "Tydverdeling:" + +#: src/amidiplug/i_fileinfo.cc:252 +msgid " MIDI Comments and Lyrics " +msgstr "MIDI Kommentaar en Lirieke" + +#: src/amidiplug/i_fileinfo.cc:299 +msgid "* no comments available in this MIDI file *" +msgstr "* geen kommentaar beskikbaar in hierdie MIDI lêer nie *" + +#: src/amidiplug/i_fileinfo.cc:311 +msgid "* no lyrics available in this MIDI file *" +msgstr "* geen lirieke beskikbaar in hierdie MIDI lêer nie *" + +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 +msgid "_Close" +msgstr "_Toe" + +#: src/amidiplug/i_fileinfo.cc:346 +msgid " (invalid UTF-8)" +msgstr "(ongeldige UTF-8)" + +#: src/ampache/ampache.cc:33 +msgid "Ampache Browser" +msgstr "Ampache Blaaier" + +#: src/ampache/ampache.cc:46 +msgid "" +"Ampache Browser for Audacious\n" +"http://ampache-browser.org/\n" +"\n" +"Copyright (C) Róbert Čerňanský and John Lindgren\n" +"License: GNU GPLv3" +msgstr "" +"Ampache Blaaier vir Audacious\n" +"http://ampache-browser.org/\n" +"\n" +"Kopiereg (K) Róbert Čerňanský en John Lindgren\n" +"Lisensie: GNU GPLv3" + +#: src/aosd/aosd.cc:31 +msgid "" +"Audacious OSD\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"\n" +"Written by Giacomo Lozito \n" +"\n" +"Based in part on Evan Martin's Ghosd library:\n" +"http://neugierig.org/software/ghosd/" +msgstr "" +"Audacious OSD\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"\n" +"Geskryf deur Giacomo Lozito \n" +"\n" +"Gedeeltelik gebaseer op Evan Martin se Ghosd biblioteek:\n" +"http://neugierig.org/software/ghosd/" + +#: src/aosd/aosd.h:37 +msgid "AOSD (On-Screen Display)" +msgstr "AOSD (Op-Skerm-Vertoon)" + +#: src/aosd/aosd_style.cc:54 +msgid "Rectangle" +msgstr "Reghoek" + +#: src/aosd/aosd_style.cc:59 +msgid "Rounded Rectangle" +msgstr "Geronde reghoek" + +#: src/aosd/aosd_style.cc:64 +msgid "Concave Rectangle" +msgstr "Konkawe reghoek" + +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 +msgid "None" +msgstr "Geen" + +#: src/aosd/aosd_trigger.cc:49 +msgid "Playback Start" +msgstr "Begin Terugspeel" + +#: src/aosd/aosd_trigger.cc:50 +msgid "Triggers OSD when a playlist entry is played." +msgstr "Aktiveer OSV wanneer 'n snitlys item gespeel word." + +#: src/aosd/aosd_trigger.cc:55 +msgid "Title Change" +msgstr "Titel verandering" + +#: src/aosd/aosd_trigger.cc:56 +msgid "Triggers OSD when the song title changes (for internet streams)." +msgstr "Aktiveer OSV wanneer die lied se titel verander (vir internet strome)" + +#: src/aosd/aosd_trigger.cc:61 +msgid "Pause On" +msgstr "Pouse Aan" + +#: src/aosd/aosd_trigger.cc:62 +msgid "Triggers OSD when playback is paused." +msgstr "Aktiveer OSV wanneer terugspeel pouse aan geskakel word." + +#: src/aosd/aosd_trigger.cc:67 +msgid "Pause Off" +msgstr "Pouse Af" + +#: src/aosd/aosd_trigger.cc:68 +msgid "Triggers OSD when playback is unpaused." +msgstr "Aktiveer OSV wanneer terugspeel pouse af geskakel word." + +#: src/aosd/aosd_ui.cc:204 +msgid "Placement" +msgstr "Plasing" + +#: src/aosd/aosd_ui.cc:241 +msgid "Relative X offset:" +msgstr "Relatiewe X verreken:" + +#: src/aosd/aosd_ui.cc:245 +msgid "Relative Y offset:" +msgstr "Relatiewe Y verreken:" + +#: src/aosd/aosd_ui.cc:249 +msgid "Max OSD width:" +msgstr "Maks. OSV wydte:" + +#: src/aosd/aosd_ui.cc:281 +msgid "Multi-Monitor options" +msgstr "Multi-Skerm opsies" + +#: src/aosd/aosd_ui.cc:285 +msgid "Display OSD using:" +msgstr "Vertoon OSV met:" + +#: src/aosd/aosd_ui.cc:287 +msgid "all monitors" +msgstr "alle skerms" + +#: src/aosd/aosd_ui.cc:290 +#, c-format +msgid "monitor %i" +msgstr "skerm %i" + +#: src/aosd/aosd_ui.cc:342 +msgid "Timing (ms)" +msgstr "Tydsberekening (ms)" + +#: src/aosd/aosd_ui.cc:347 +msgid "Display:" +msgstr "Vertoon:" + +#: src/aosd/aosd_ui.cc:352 +msgid "Fade in:" +msgstr "Vervaag in:" + +#: src/aosd/aosd_ui.cc:357 +msgid "Fade out:" +msgstr "Vervaag uit:" + +#: src/aosd/aosd_ui.cc:442 +msgid "Fonts" +msgstr "Lettertipes" + +#: src/aosd/aosd_ui.cc:449 +#, c-format +msgid "Font %i:" +msgstr "Lettertipe %i:" + +#: src/aosd/aosd_ui.cc:466 +msgid "Shadow" +msgstr "Skaduwee" + +#: src/aosd/aosd_ui.cc:589 +msgid "Render Style" +msgstr "Lewer styl" + +#: src/aosd/aosd_ui.cc:605 +msgid "Colors" +msgstr "Kleure" + +#: src/aosd/aosd_ui.cc:616 +#, c-format +msgid "Color %i:" +msgstr "Kleur %i:" + +#: src/aosd/aosd_ui.cc:714 +msgid "Enable trigger" +msgstr "Aktiveer sneller" + +#: src/aosd/aosd_ui.cc:741 +msgid "Event" +msgstr "Gebeurtenis" + +#: src/aosd/aosd_ui.cc:768 +msgid "Composite manager detected" +msgstr "Saamgestelde bestuurder bespeur" + +#: src/aosd/aosd_ui.cc:775 +msgid "" +"Composite manager not detected;\n" +"unless you know that you have one running, please activate a composite " +"manager otherwise the OSD won't work properly" +msgstr "" +"Saamgestelde bestuurder nie bespeur nie;\n" +"tensy jy weet dat jy een het wat hardloop, aktiveer een asseblief anders sal " +"die OSV nie reg werk nie" + +#: src/aosd/aosd_ui.cc:783 +msgid "Composite manager not required for fake transparency" +msgstr "Saamgestelde bestuurder word nie vereis vir vals deursigtigheid nie" + +#: src/aosd/aosd_ui.cc:820 +msgid "Transparency" +msgstr "Deursigtigheid " + +#: src/aosd/aosd_ui.cc:826 +msgid "Fake transparency" +msgstr "Vals deursigtigheid" + +#: src/aosd/aosd_ui.cc:828 +msgid "Real transparency (requires X Composite Ext.)" +msgstr "Egte deursigtigheid (vereis X Composite Ext.)" + +#: src/aosd/aosd_ui.cc:875 +msgid "Composite extension not loaded" +msgstr "Saamgestelde uitbreiding nie gelaai nie" + +#: src/aosd/aosd_ui.cc:892 +#, c-format +msgid "Audacious OSD" +msgstr "Audacious OSV" + +#: src/aosd/aosd_ui.cc:955 +msgid "Position" +msgstr "Posisie" + +#: src/aosd/aosd_ui.cc:960 +msgid "Animation" +msgstr "Animasie" + +#: src/aosd/aosd_ui.cc:965 +msgid "Text" +msgstr "Teks" + +#: src/aosd/aosd_ui.cc:970 +msgid "Decoration" +msgstr "Versiering" + +#: src/aosd/aosd_ui.cc:975 +msgid "Trigger" +msgstr "Sneller" + +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 +msgid "Misc" +msgstr "Allerlei" + +#: src/aosd/aosd_ui.cc:989 +msgid "Test" +msgstr "Toets" + +#: src/asx3/asx3.cc:35 +msgid "ASXv3 Playlists" +msgstr "ASXv3 Snitlyste" + +#: src/asx/asx.cc:33 +msgid "ASXv1/ASXv2 Playlists" +msgstr "ASXv1/ASXv2 Snitlyste" + +#: src/audpl/audpl.cc:33 +msgid "Audacious Playlists (audpl)" +msgstr "Audacious Snitlyste (audpl)" + +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Bis diepte:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Monster afskaal verhouding:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 +msgid "Color" +msgstr "Kleur" + +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 +msgid "Blur Scope" +msgstr "Vervaag Skoop" + +#: src/bs2b/plugin.cc:38 +msgid "Bauer Stereophonic-to-Binaural (BS2B)" +msgstr "Bauer Stereofonies-tot-Binauraal (BS2B)" + +#: src/bs2b/plugin.cc:129 +msgid "Presets:" +msgstr "Voorinstellings" + +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Verstek" + +#: src/bs2b/plugin.cc:136 +msgid "Feed level:" +msgstr "Voervlak:" + +#: src/bs2b/plugin.cc:138 +msgid "x1/10 dB" +msgstr "x1/10 dB" + +#: src/bs2b/plugin.cc:139 +msgid "Cut frequency:" +msgstr "Uitsny frekwensie:" + +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 +msgid "Spectrum Analyzer" +msgstr "Spektrum ontleder" + +#: src/cdaudio/cdaudio-ng.cc:71 +msgid "Audio CD Plugin" +msgstr "Oudio CD Inprop" + +#: src/cdaudio/cdaudio-ng.cc:118 +msgid "" +"Copyright (C) 2007-2012 Calin Crisan and others.\n" +"\n" +"Many thanks to libcdio developers \n" +"and to libcddb developers .\n" +"\n" +"Also thank you to Tony Vroon for mentoring and guiding me.\n" +"\n" +"This was a Google Summer of Code 2007 project." +msgstr "" +"Kopiereg (K) 2007-2012 Calin Crisan en ander.\n" +"\n" +"Baie dank aan die libcdio onwikkelaars \n" +"en aan die libcddb ontwikkelaars.\n" +"\n" +"Ook, dankie aan Tony Vroon vir my mentorskap en leiding.\n" +"\n" +"Dit was 'n Google Summer of Code 2007 projek." + +#: src/cdaudio/cdaudio-ng.cc:134 +msgid "Device" +msgstr "Toestel" + +#: src/cdaudio/cdaudio-ng.cc:135 +msgid "Read speed:" +msgstr "Lees spoed:" + +#: src/cdaudio/cdaudio-ng.cc:138 +msgid "Override device:" +msgstr "Oorheers toestel:" + +#: src/cdaudio/cdaudio-ng.cc:140 +msgid "Metadata" +msgstr "Metadata" + +#: src/cdaudio/cdaudio-ng.cc:141 +msgid "Use CD-Text" +msgstr "Gebruik CD-Teks" + +#: src/cdaudio/cdaudio-ng.cc:143 +msgid "Use CDDB" +msgstr "Gebruik CDDB" + +#: src/cdaudio/cdaudio-ng.cc:145 +msgid "Use HTTP instead of CDDBP" +msgstr "Gebruik HTTP inplaas van CDDBP" + +#: src/cdaudio/cdaudio-ng.cc:148 +msgid "Server:" +msgstr "Bediener:" + +#: src/cdaudio/cdaudio-ng.cc:152 +msgid "Path:" +msgstr "Pad:" + +#: src/cdaudio/cdaudio-ng.cc:156 +msgid "Port:" +msgstr "Poort:" + +#: src/cdaudio/cdaudio-ng.cc:220 +msgid "Failed to initialize cdio subsystem." +msgstr "Kon nie die CDIO-substelsel inisialiseer nie." + +#: src/cdaudio/cdaudio-ng.cc:250 +#, c-format +msgid "Invalid URI %s." +msgstr "Ongeldige URI %s." + +#: src/cdaudio/cdaudio-ng.cc:252 +#, c-format +msgid "Track %d not found." +msgstr "Snit %d nie gevind nie." + +#: src/cdaudio/cdaudio-ng.cc:254 +#, c-format +msgid "Track %d is a data track." +msgstr "Snit %d is 'n data baan." + +#: src/cdaudio/cdaudio-ng.cc:329 +msgid "Error reading audio CD." +msgstr "Fout met die lees van die oudio-CD." + +#: src/cdaudio/cdaudio-ng.cc:398 +msgid "Audio CD" +msgstr "Oudio-CD" + +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 +#, c-format +msgid "Failed to open CD device %s." +msgstr "Kon nie CD-toestel %s oopmaak nie." + +#: src/cdaudio/cdaudio-ng.cc:446 +msgid "No audio capable CD drive found." +msgstr "Geen oudio-bekwame CD-aandrywer gevind nie." + +#: src/cdaudio/cdaudio-ng.cc:469 +msgid "Drive is empty." +msgstr "Aandrywer is leeg." + +#: src/cdaudio/cdaudio-ng.cc:471 +msgid "Unsupported disk type." +msgstr "Onondersteunde skyftipe." + +#: src/cdaudio/cdaudio-ng.cc:495 +msgid "Failed to finish initializing opened CD drive." +msgstr "Kon nie die inisialisering van geopende CD-aandrywer voltooi nie." + +#: src/cdaudio/cdaudio-ng.cc:508 +msgid "Failed to retrieve first/last track number." +msgstr "Kon nie eerste/laaste snitnommer herwin nie." + +#: src/cdaudio/cdaudio-ng.cc:529 +#, c-format +msgid "Cannot read start/end LSN for track %d." +msgstr "Kan nie begin/ einde LSN vir snit %d lees nie." + +#: src/cdaudio/cdaudio-ng.cc:611 +msgid "Failed to create the CDDB connection." +msgstr "Kon nie die CDDB-verbinding skep nie." + +#: src/cdaudio/cdaudio-ng.cc:677 +msgid "Failed to query the CDDB server" +msgstr "Navraag by die CDDB-bediener het misluk" + +#: src/cdaudio/cdaudio-ng.cc:679 +#, c-format +msgid "Failed to query the CDDB server: %s" +msgstr "Navraag het misluk by die CDDB-bediener: %s" + +#: src/cdaudio/cdaudio-ng.cc:703 +#, c-format +msgid "Failed to read the CDDB info: %s" +msgstr "Lees het misluk by die CDDB-bediener: %s" + +#: src/cd-menu-items/cd-menu-items.cc:33 +msgid "Audio CD Menu Items" +msgstr "Oudio-CD kieslysitems" + +#: src/cd-menu-items/cd-menu-items.cc:45 +msgid "Pla_y CD" +msgstr "Speel CD" + +#: src/cd-menu-items/cd-menu-items.cc:45 +msgid "_Add CD" +msgstr "Voeg CD by" + +#: src/compressor/compressor.cc:45 +msgid "Compression" +msgstr "Kompressie" + +#: src/compressor/compressor.cc:46 +msgid "Center volume:" +msgstr "Sentrale volume:" + +#: src/compressor/compressor.cc:49 +msgid "Dynamic range:" +msgstr "Dinamiese reikwydte:" + +#: src/compressor/compressor.cc:57 +msgid "" +"Dynamic Range Compression Plugin for Audacious\n" +"Copyright 2010-2014 John Lindgren" +msgstr "" +"Dinamiese Reikwydte Kompressie Inprop vir Audacious\n" +"Kopiereg 2010-2014 John Lindgren" + +#: src/compressor/compressor.cc:64 +msgid "Dynamic Range Compressor" +msgstr "Dinamiese reeks kompressor" + +#: src/console/plugin.cc:15 +msgid "" +"Console music decoder engine based on Game_Music_Emu 0.5.2\n" +"Supported formats: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"\n" +"Audacious plugin by:\n" +"William Pitcock \n" +"Shay Green " +msgstr "" +"Konsole musiek dekodeerder enjin gebaseer op Game_Music_Emu 0.5.2\n" +"Ondersteunde formate: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"\n" +"Audacious inprop deur:\n" +"William Pitcock \n" +"Shay Green " + +#: src/console/plugin.cc:30 +msgid "Bass:" +msgstr "Bas:" + +#: src/console/plugin.cc:33 +msgid "Treble:" +msgstr "Sopraan:" + +#: src/console/plugin.cc:36 +msgid "Echo:" +msgstr "Eggo:" + +#: src/console/plugin.cc:39 +msgid "Default song length:" +msgstr "Verstek lied lengte:" + +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "sekondes" + +#: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 +msgid "Resampling" +msgstr "Hermonster" + +#: src/console/plugin.cc:43 +msgid "Enable audio resampling" +msgstr "Aktiveer oudi-hermonstering" + +#: src/console/plugin.cc:49 +msgid "SPC" +msgstr "SPC" + +#: src/console/plugin.cc:50 +msgid "Ignore length from SPC tags" +msgstr "Ignoreer lengte van SPC-etikette" + +#: src/console/plugin.cc:52 +msgid "Increase reverb" +msgstr "Verhoog galm" + +#: src/console/plugin.h:26 +msgid "Game Console Music Decoder" +msgstr "Speletjies Konsole Musiek Dekodeerder" + +#: src/coreaudio/coreaudio.cc:53 +msgid "CoreAudio output" +msgstr "CoreAudio uitset" + +#: src/coreaudio/coreaudio.cc:155 +msgid "" +"CoreAudio Output Plugin for Audacious\n" +"Copyright 2014 William Pitcock\n" +"Copyright 2017,18 René J.V. Bertin\n" +" (original code and code adapted from\n" +" Apple examples, (C) Apple 2013)\n" +"\n" +"Based on SDL Output Plugin for Audacious\n" +"Copyright 2010 John Lindgren" +msgstr "" +"CoreAudio-uitvoer-inprop vir Audacious\n" +"Kopiereg 2014 William Pitcock\n" +"Kopiereg 2017/2018 René J.V. Bertin\n" +"(oorspronklike kode en kode aangepas vanaf\n" +"Apple voorbeelde, (K) Apple 2013)\n" +"\n" +"Gebaseer op SDL Output Plugin vir Audacious\n" +"Kopiereg 2010 John Lindgren" + +#: src/coreaudio/coreaudio.cc:171 +msgid "Use exclusive mode" +msgstr "Gebruik eksklusiewe modus" + +#: src/coreaudio/coreaudio.cc:173 +msgid "Use bit perfect audio (adapt device sampling rate)" +msgstr "Gebruik bis perfekte oudio (pas toestelmonstertempo aan)" + +#: src/crossfade/crossfade.cc:43 +msgid "" +"Crossfade Plugin for Audacious\n" +"Copyright 2010-2014 John Lindgren" +msgstr "" +"Kruisvervaag Inprop vir Audacious\n" +"Kopiereg 2010-2014 John Lindgren" + +#: src/crossfade/crossfade.cc:47 +msgid "Crossfade" +msgstr "Kruisvervaag" + +#: src/crossfade/crossfade.cc:48 +msgid "On automatic song change" +msgstr "Op outomatiese lied verander" + +#: src/crossfade/crossfade.cc:50 src/crossfade/crossfade.cc:56 +msgid "Overlap:" +msgstr "Oorvleuel:" + +#: src/crossfade/crossfade.cc:54 +msgid "On seek or manual song change" +msgstr "Op soek of handmatige liedjieverandering" + +#: src/crossfade/crossfade.cc:60 +msgid "Tip" +msgstr "Wenk" + +#: src/crossfade/crossfade.cc:61 +msgid "" +"For better crossfading, enable\n" +"the Silence Removal effect." +msgstr "" +"Vir beter kruisvervaag, aktiveer \n" +"die Stilte-Verwyder effek." + +#: src/crossfade/crossfade.cc:71 +msgid "Crossfade" +msgstr "Kruisvervaag" + +#: src/crystalizer/crystalizer.cc:31 +msgid "Crystalizer" +msgstr "Kristaliseerder" + +#: src/crystalizer/crystalizer.cc:32 src/stereo_plugin/stereo.cc:45 +msgid "Intensity:" +msgstr "Intensiteit:" + +#: src/crystalizer/crystalizer.cc:43 +msgid "Crystalizer" +msgstr "Kristaliseerder" + +#: src/cue/cue.cc:42 +msgid "Cue Sheet Plugin" +msgstr "Tou Blad Inprop" + +#: src/delete-files/delete-files.cc:53 src/delete-files/delete-files.cc:215 +#: src/delete-files/delete-files.cc:230 +msgid "Delete Files" +msgstr "Skrap lêers" + +#: src/delete-files/delete-files.cc:120 +msgid "No files are selected." +msgstr "Geen lêers was geselekteer nie." + +#: src/delete-files/delete-files.cc:125 +#, c-format +msgid "Do you want to move %s to the trash?" +msgstr "Wil jy %s na die drom skuif?" + +#: src/delete-files/delete-files.cc:126 +#, c-format +msgid "Do you want to permanently delete %s?" +msgstr "Wil jy %s permanent skrap?" + +#: src/delete-files/delete-files.cc:133 +#, c-format +msgid "Do you want to move %d files to the trash?" +msgstr "Wil jy %dlêers na die drom skuif?" + +#: src/delete-files/delete-files.cc:134 +#, c-format +msgid "Do you want to permanently delete %d files?" +msgstr "Wil jy permanent %d lêers skrap?" + +#: src/delete-files/delete-files.cc:146 +msgid "Move to trash" +msgstr "Skuif na drom" + +#: src/delete-files/delete-files.cc:146 +msgid "Delete" +msgstr "Skrap" + +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 +msgid "Cancel" +msgstr "Kanselleer" + +#: src/delete-files/delete-files.cc:267 +msgid "Delete Selected Files" +msgstr "Skrap geselekteerde lêers" + +#: src/delete-files/delete-files.cc:287 +msgid "Delete Method" +msgstr "Skrap Metode" + +#: src/delete-files/delete-files.cc:288 +msgid "Move to trash instead of deleting immediately" +msgstr "Skuif na drom inplaas van skrap onmiddelik" + +#: src/echo_plugin/echo.cc:9 +msgid "" +"Echo Plugin\n" +"By Johan Levin, 1999\n" +"Surround echo by Carl van Schaik, 1999\n" +"Updated for Audacious by William Pitcock and John Lindgren, 2010-2014" +msgstr "" +"Echo-inprop \n" +"Deur Johan Levin, 1999 \n" +"Omringende eggo deur Carl van Schaik, 1999\n" +"Opgedateer vir Audacious deur William Pitcock en John Lindgren, 2010-2014" + +#: src/echo_plugin/echo.cc:21 +msgid "Echo" +msgstr "Eggo" + +#: src/echo_plugin/echo.cc:22 src/modplug/plugin_main.cc:72 +#: src/modplug/plugin_main.cc:82 +msgid "Delay:" +msgstr "Vertraag:" + +#: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 +msgid "ms" +msgstr "ms" + +#: src/echo_plugin/echo.cc:25 +msgid "Feedback:" +msgstr "Terugvoer:" + +#: src/echo_plugin/echo.cc:28 src/modplug/plugin_main.cc:86 +msgid "Volume:" +msgstr "Volume:" + +#: src/echo_plugin/echo.cc:39 +msgid "Echo" +msgstr "Eggo" + +#: src/ffaudio/ffaudio-core.cc:50 +msgid "FFmpeg Plugin" +msgstr "FFmpeg Inprop" + +#: src/ffaudio/ffaudio-core.cc:650 +msgid "" +"Multi-format audio decoding plugin for Audacious using\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"\n" +"Audacious plugin by:\n" +"William Pitcock \n" +"Matti Hämäläinen " +msgstr "" +"Multi-formaat klank dekodering inprop vir Audacious, \n" +"wat gebruik maak van FFmpeg multimedia-raamwerk \n" +"(http://www.ffmpeg.org/)\n" +"\n" +"Audacious inprop deur:\n" +"William Pitcock \n" +"Matti Hämäläinen " + +#: src/filewriter/filewriter.cc:48 +msgid "FileWriter Plugin" +msgstr "Lêerskrywer-inprop" + +#: src/filewriter/filewriter.cc:316 +#, c-format +msgid "" +"Error opening %s:\n" +"%s" +msgstr "" +"Fout tydens oopmaak van %s:\n" +"%s" + +#: src/filewriter/filewriter.cc:358 +msgid "" +"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.\n" +"\n" +"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.\n" +"\n" +"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." +msgstr "" +"Hierdie program is gratis sagteware; jy kan dit herverdeel en/of wysig onder " +"die bepalings van die GNU General Public License soos gepubliseer deur die " +"Free Software Foundation; óf weergawe 2 van die lisensie, óf (na jou keuse) " +"enige latere weergawe.\n" +"\n" +"Hierdie program word versprei in die hoop dat dit nuttig sal wees, maar " +"SONDER ENIGE WAARBORG; selfs sonder die stilswyende waarborg van " +"VERHANDELBAARHEID of GESKIKTHEID VIR 'N SPESIFIEKE DOEL. Sien die GNU " +"General Public License vir meer besonderhede.\n" +"\n" +"Jy moes 'n afskrif van die GNU General Public License saam met hierdie " +"program ontvang het; indien nie, skryf aan die Free Software Foundation, " +"Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, VSA." + +#: src/filewriter/filewriter.cc:385 +msgid "Output file format:" +msgstr "Uitset lêer formaat:" + +#: src/filewriter/filewriter.cc:389 +msgid "Save into original directory" +msgstr "Stoor in oorspronklike gids" + +#: src/filewriter/filewriter.cc:392 +msgid "Save into custom directory:" +msgstr "Stoor in pasgemaakte gids:" + +#: src/filewriter/filewriter.cc:400 +msgid "Generate file name from:" +msgstr "Genereer lêernaam vanaf:" + +#: src/filewriter/filewriter.cc:401 +msgid "Original file name" +msgstr "Oorspronklike lêernaam" + +#: src/filewriter/filewriter.cc:404 +msgid "Original file name (no suffix)" +msgstr "Oorspronklike lêernaam (geen agtervoegsel)" + +#: src/filewriter/filewriter.cc:407 +msgid "Original file tag" +msgstr "Oorspronklike lêeretiket" + +#: src/filewriter/filewriter.cc:411 +msgid "Prepend track number to file name" +msgstr "Las snitnommer voor aan lêernaam" + +#: src/filewriter/filewriter.cc:417 src/filewriter/filewriter.cc:449 +msgid "Auto" +msgstr "Outo" + +#: src/filewriter/filewriter.cc:418 +msgid "8000 Hz" +msgstr "8000 Hz" + +#: src/filewriter/filewriter.cc:419 +msgid "11025 Hz" +msgstr "11025 Hz" + +#: src/filewriter/filewriter.cc:420 +msgid "12000 Hz" +msgstr "12000 Hz" + +#: src/filewriter/filewriter.cc:421 +msgid "16000 Hz" +msgstr "16000 Hz" + +#: src/filewriter/filewriter.cc:422 +msgid "22050 Hz" +msgstr "22050 Hz" + +#: src/filewriter/filewriter.cc:423 +msgid "24000 Hz" +msgstr "24000 Hz" + +#: src/filewriter/filewriter.cc:424 +msgid "32000 Hz" +msgstr "32000 Hz" + +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 +msgid "44100 Hz" +msgstr "44100 Hz" + +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 +msgid "48000 Hz" +msgstr "48000 Hz" + +#: src/filewriter/filewriter.cc:430 +msgid "8 kbit/s" +msgstr "8 kbps" + +#: src/filewriter/filewriter.cc:431 +msgid "16 kbit/s" +msgstr "16 kbps" + +#: src/filewriter/filewriter.cc:432 +msgid "32 kbit/s" +msgstr "32 kbps" + +#: src/filewriter/filewriter.cc:433 +msgid "40 kbit/s" +msgstr "40 kbps" + +#: src/filewriter/filewriter.cc:434 +msgid "48 kbit/s" +msgstr "48 kbps" + +#: src/filewriter/filewriter.cc:435 +msgid "56 kbit/s" +msgstr "56 kbps" + +#: src/filewriter/filewriter.cc:436 +msgid "64 kbit/s" +msgstr "64 kbps" + +#: src/filewriter/filewriter.cc:437 +msgid "80 kbit/s" +msgstr "80 kbps" + +#: src/filewriter/filewriter.cc:438 +msgid "96 kbit/s" +msgstr "96 kbps" + +#: src/filewriter/filewriter.cc:439 +msgid "112 kbit/s" +msgstr "112 kbps" + +#: src/filewriter/filewriter.cc:440 +msgid "128 kbit/s" +msgstr "128 kbps" + +#: src/filewriter/filewriter.cc:441 +msgid "160 kbit/s" +msgstr "160 kbps" + +#: src/filewriter/filewriter.cc:442 +msgid "192 kbit/s" +msgstr "192 kbps" + +#: src/filewriter/filewriter.cc:443 +msgid "224 kbit/s" +msgstr "224 kbps" + +#: src/filewriter/filewriter.cc:444 +msgid "256 kbit/s" +msgstr "256 kbps" + +#: src/filewriter/filewriter.cc:445 +msgid "320 kbit/s" +msgstr "320 kbps" + +#: src/filewriter/filewriter.cc:450 +msgid "Joint Stereo" +msgstr "Gesamentlike stereo" + +#: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 +#: src/mpg123/mpg123.cc:259 +msgid "Stereo" +msgstr "Stereo" + +#: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 +#: src/mpg123/mpg123.cc:260 +msgid "Mono" +msgstr "Mono" + +#: src/filewriter/filewriter.cc:456 +msgid "VBR" +msgstr "VBT" + +#: src/filewriter/filewriter.cc:457 +msgid "ABR" +msgstr "ABT" + +#: src/filewriter/filewriter.cc:478 +msgid "Algorithm quality:" +msgstr "Algoritme kwaliteit:" + +#: src/filewriter/filewriter.cc:484 +msgid "Bitrate:" +msgstr "Bistempo:" + +#: src/filewriter/filewriter.cc:491 +msgid "Compression ratio:" +msgstr "Kompressieverhouding:" + +#: src/filewriter/filewriter.cc:498 +msgid "Audio mode:" +msgstr "Oudio modus:" + +#: src/filewriter/filewriter.cc:501 +msgid "Enforce strict ISO compliance" +msgstr "Handhaaf streng ISO-nakoming" + +#: src/filewriter/filewriter.cc:503 +msgid "Error protection" +msgstr "Foutbeskerming" + +#: src/filewriter/filewriter.cc:508 +msgid "Enable VBR/ABR" +msgstr "Aktiveer VBT/ABT" + +#: src/filewriter/filewriter.cc:510 +msgid "Type:" +msgstr "Tipe:" + +#: src/filewriter/filewriter.cc:514 +msgid "Minimum bitrate:" +msgstr "Minimum bistempo:" + +#: src/filewriter/filewriter.cc:518 +msgid "Maximum bitrate:" +msgstr "Maksimum bistempo:" + +#: src/filewriter/filewriter.cc:522 +msgid "Average bitrate:" +msgstr "Gemiddelde bistempo:" + +#: src/filewriter/filewriter.cc:526 +msgid "VBR quality level:" +msgstr "VBT kwaliteit vlak:" + +#: src/filewriter/filewriter.cc:530 +msgid "Strictly enforce minimum bitrate" +msgstr "Handhaaf streng minimum bistempo" + +#: src/filewriter/filewriter.cc:533 +msgid "Omit Xing VBR header" +msgstr "Laat Xing VBT kopskrif weg" + +#: src/filewriter/filewriter.cc:539 +msgid "Frame Headers" +msgstr "Raam Kopskrif" + +#: src/filewriter/filewriter.cc:540 +msgid "Mark as copyright" +msgstr "Merk as kopiereg" + +#: src/filewriter/filewriter.cc:542 +msgid "Mark as original" +msgstr "Merk as oorspronklik" + +#: src/filewriter/filewriter.cc:544 +msgid "ID3 Tags" +msgstr "ID3-etikette" + +#: src/filewriter/filewriter.cc:545 +msgid "Force addition of version 2 tag" +msgstr "Forseer toevoeging van weergawe 2 etiket" + +#: src/filewriter/filewriter.cc:547 +msgid "Only add v1 tag" +msgstr "Voeg slegs v1 etiket by" + +#: src/filewriter/filewriter.cc:549 +msgid "Only add v2 tag" +msgstr "Voeg slegs v2 etiket by" + +#: src/filewriter/filewriter.cc:554 +msgid "Quality" +msgstr "Kwaliteit" + +#: src/filewriter/filewriter.cc:555 +msgid "VBR/ABR" +msgstr "VBT/ABT" + +#: src/filewriter/filewriter.cc:556 +msgid "Tags" +msgstr "Etikette" + +#: src/filewriter/filewriter.cc:566 +msgid "Quality (0-1):" +msgstr "Kwaliteit (0-1):" + +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 +#: src/skins/skins_cfg.cc:285 +msgid "General" +msgstr "Algemeen" + +#: src/flac/flacng.h:36 +msgid "FLAC Decoder" +msgstr "FLAC Dekodeerder" + +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 +msgid "lossless" +msgstr "verliesvry" + +#: src/flac/plugin.cc:214 +msgid "" +"Original code by\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" +msgstr "" +"Oorspronklike kode deur\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" + +#: src/gio/gio.cc:34 +msgid "" +"GIO Plugin for Audacious\n" +"Copyright 2009-2012 John Lindgren" +msgstr "" +"GIO Inprop vir Audacious\n" +"Kopiereg 2009-2012 John Lindgren" + +#: src/gio/gio.cc:42 +msgid "GIO Plugin" +msgstr "GIO Inprop" + +#: src/gio/gio.cc:152 +msgid "Read-and-append mode not supported" +msgstr "Lees-en-byvoeg modus word nie ondersteun nie" + +#: src/gio/gio.cc:165 +msgid "Invalid open mode" +msgstr "Ongeldige oop modus" + +#: src/glspectrum/gl-spectrum.cc:52 +msgid "" +"OpenGL Spectrum Analyzer for Audacious\n" +"Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" +"\n" +"Based on the XMMS plugin:\n" +"Copyright 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, and " +"4Front Technologies\n" +"\n" +"License: GPLv2+" +msgstr "" +"OpenGL Spektrum Ontleder vir Audacious\n" +"Kopiereg 2013 Christophe Budé, John Lindgren en Carlo Bramini\n" +"\n" +"Gebaseer op die XMMS-inprop:\n" +"Kopiereg 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson en " +"4Front Technologies\n" +"\n" +"Lisensie: GPLv2+" + +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 +msgid "OpenGL Spectrum Analyzer" +msgstr "OpenGL Spektrum Ontleder" + +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "Inskrywingsnommer" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 +#: src/moonstone/playlist_selection.cc:62 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 +#: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 +msgid "Title" +msgstr "Titel" + +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/qtui/playlist_model.cc:33 +msgid "Artist" +msgstr "Kunstenaar" + +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/qtui/playlist_model.cc:33 +msgid "Year" +msgstr "Jaar" + +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 +#: src/qtui/playlist_model.cc:34 +msgid "Album" +msgstr "Album" + +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr "Album Kunstenaar" + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Track" +msgstr "Snit" + +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 +#: src/streamtuner/shoutcast-model.cc:125 +#: src/streamtuner/shoutcast-model.cc:236 +msgid "Genre" +msgstr "Genre" + +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "Tou Posisie" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Length" +msgstr "Lengte" + +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "Lêer Pad" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Lêer Naam" + +#: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Pas gemaakte titel" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 +#: src/streamtuner/shoutcast-model.cc:134 +msgid "Bitrate" +msgstr "Bistempo" + +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 +#: src/qtui/playlist_model.cc:36 +msgid "Comment" +msgstr "Kommentaar" + +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "Uitgewer" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "Katalogusnommer" + +#: src/gtkui/columns.cc:322 +msgid "Available columns" +msgstr "Beskikbare kolomme" + +#: src/gtkui/columns.cc:348 +msgid "Displayed columns" +msgstr "Vertoonde kolomme" + +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 +msgid "Search Tool" +msgstr "Soek gereedskap" + +#: src/gtkui/layout.cc:170 +msgid "Dock at Left" +msgstr "Dok aan Linkerkant" + +#: src/gtkui/layout.cc:170 +msgid "Dock at Right" +msgstr "Dok aan Regterkant" + +#: src/gtkui/layout.cc:171 +msgid "Dock at Top" +msgstr "Dok aan Bokant" + +#: src/gtkui/layout.cc:171 +msgid "Dock at Bottom" +msgstr "Dok aan Onderkant" + +#: src/gtkui/layout.cc:171 +msgid "Undock" +msgstr "Ontdok" + +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 +msgid "Disable" +msgstr "Deaktiveer" + +#: src/gtkui/menus.cc:79 src/qtui/menus.cc:107 +#: src/statusicon-qt/statusicon.cc:112 src/statusicon/statusicon.cc:282 +msgid "_Open Files ..." +msgstr "Maak Lêers _Oop ..." + +#: src/gtkui/menus.cc:80 src/qtui/menus.cc:111 +msgid "Open _URL ..." +msgstr "Maak _URL Oop ..." + +#: src/gtkui/menus.cc:81 src/qtui/menus.cc:113 +msgid "_Add Files ..." +msgstr "Voeg Lêers By ..." + +#: src/gtkui/menus.cc:82 src/qtui/menus.cc:118 +msgid "Add U_RL ..." +msgstr "Voeg U_RL By ..." + +#: src/gtkui/menus.cc:84 src/qtui/menus.cc:120 +msgid "Search _Library" +msgstr "Deursoek Biblioteek " + +#: src/gtkui/menus.cc:86 src/qtui/menus.cc:123 +msgid "A_bout ..." +msgstr "Aangaande ..." + +#: src/gtkui/menus.cc:87 src/qtui/menus.cc:125 +msgid "_Settings ..." +msgstr "_Stellings ..." + +#: src/gtkui/menus.cc:88 src/qtui/menus.cc:131 +#: src/statusicon-qt/statusicon.cc:114 src/statusicon/statusicon.cc:284 +msgid "_Quit" +msgstr "Verlaat" + +#: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 +#: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 +#: src/statusicon/statusicon.cc:276 +msgid "_Play" +msgstr "_Speel" + +#: src/gtkui/menus.cc:93 src/qtui/menus.cc:137 +#: src/statusicon-qt/statusicon.cc:107 src/statusicon/statusicon.cc:277 +msgid "Paus_e" +msgstr "Pous_eer" + +#: src/gtkui/menus.cc:94 src/qtui/menus.cc:139 +#: src/statusicon-qt/statusicon.cc:108 src/statusicon/statusicon.cc:278 +msgid "_Stop" +msgstr "_Stop" + +#: src/gtkui/menus.cc:95 src/qtui/menus.cc:141 +#: src/statusicon-qt/statusicon.cc:109 src/statusicon/statusicon.cc:279 +msgid "Pre_vious" +msgstr "Vorige" + +#: src/gtkui/menus.cc:96 src/qtui/menus.cc:143 +#: src/statusicon-qt/statusicon.cc:110 src/statusicon/statusicon.cc:280 +msgid "_Next" +msgstr "Volgende" + +#: src/gtkui/menus.cc:97 src/qtui/menus.cc:145 src/skins/menus.cc:114 +#: src/skins-qt/menus.cc:105 +msgid "Previous Album" +msgstr "Vorige Album" + +#: src/gtkui/menus.cc:98 src/qtui/menus.cc:146 src/skins/menus.cc:115 +#: src/skins-qt/menus.cc:106 +msgid "Next Album" +msgstr "Volgende Album" + +#: src/gtkui/menus.cc:100 src/qtui/menus.cc:148 +msgid "_Repeat" +msgstr "Herhaal" + +#: src/gtkui/menus.cc:101 src/qtui/menus.cc:150 +msgid "S_huffle" +msgstr "Skommel" + +#: src/gtkui/menus.cc:102 src/qtui/menus.cc:152 +msgid "Shuffle by Albu_m" +msgstr "Skoffel volgens Albu_ms" + +#: src/gtkui/menus.cc:103 src/qtui/menus.cc:155 +msgid "N_o Playlist Advance" +msgstr "Geen Snitlys Outo-vordering Nie" + +#: src/gtkui/menus.cc:104 src/qtui/menus.cc:157 +msgid "Stop A_fter This Song" +msgstr "Stop Na Hierdie Lied" + +#: src/gtkui/menus.cc:106 src/gtkui/menus.cc:208 src/qtui/menus.cc:162 +#: src/qtui/menus.cc:292 +msgid "Song _Info ..." +msgstr "Lied _Info ..." + +#: src/gtkui/menus.cc:107 +msgid "Jump to _Time ..." +msgstr "Spring tot _Tyd ..." + +#: src/gtkui/menus.cc:108 +msgid "_Jump to Song ..." +msgstr "Spring tot Lied ..." + +#: src/gtkui/menus.cc:110 src/qtui/menus.cc:165 +msgid "Set Repeat Point _A" +msgstr "Stel Herhaal Punt _A" + +#: src/gtkui/menus.cc:111 src/qtui/menus.cc:167 +msgid "Set Repeat Point _B" +msgstr "Stel Herhaal Punt _B" + +#: src/gtkui/menus.cc:112 src/qtui/menus.cc:169 +msgid "_Clear Repeat Points" +msgstr "Maak herhalingspunte skoon" + +#: src/gtkui/menus.cc:116 src/gtkui/menus.cc:123 src/gtkui/menus.cc:140 +#: src/qtui/menus.cc:173 src/qtui/menus.cc:180 src/qtui/menus.cc:197 +msgid "By _Title" +msgstr "Volgens _Titel" + +#: src/gtkui/menus.cc:117 src/qtui/menus.cc:174 +msgid "By _File Name" +msgstr "Volgens Lêer Naam" + +#: src/gtkui/menus.cc:118 src/qtui/menus.cc:175 +msgid "By File _Path" +msgstr "Volgens Lêer Pad" + +#: src/gtkui/menus.cc:122 src/gtkui/menus.cc:139 src/qtui/menus.cc:179 +#: src/qtui/menus.cc:196 +msgid "By Track _Number" +msgstr "Volgens Snit _Nommer" + +#: src/gtkui/menus.cc:124 src/gtkui/menus.cc:141 src/qtui/menus.cc:181 +#: src/qtui/menus.cc:198 +msgid "By _Artist" +msgstr "Volgens Kunstenaar" + +#: src/gtkui/menus.cc:125 src/gtkui/menus.cc:142 src/qtui/menus.cc:182 +#: src/qtui/menus.cc:199 +msgid "By Al_bum" +msgstr "Volgens Al_bum" + +#: src/gtkui/menus.cc:126 src/gtkui/menus.cc:143 src/qtui/menus.cc:183 +#: src/qtui/menus.cc:200 +msgid "By Albu_m Artist" +msgstr "Volgens Albu_m Kunstenaar" + +#: src/gtkui/menus.cc:127 src/gtkui/menus.cc:144 src/qtui/menus.cc:184 +#: src/qtui/menus.cc:201 +msgid "By Release _Date" +msgstr "Volgens Vrystelling _Datum" + +#: src/gtkui/menus.cc:128 src/gtkui/menus.cc:145 src/qtui/menus.cc:185 +#: src/qtui/menus.cc:202 +msgid "By _Genre" +msgstr "Volgens _Genre" + +#: src/gtkui/menus.cc:129 src/gtkui/menus.cc:146 src/qtui/menus.cc:186 +#: src/qtui/menus.cc:203 +msgid "By _Length" +msgstr "Volgens _Lengte" + +#: src/gtkui/menus.cc:130 src/gtkui/menus.cc:147 src/qtui/menus.cc:187 +#: src/qtui/menus.cc:204 +msgid "By _File Path" +msgstr "Volgens Lêer Pad" + +#: src/gtkui/menus.cc:131 src/gtkui/menus.cc:148 src/qtui/menus.cc:188 +#: src/qtui/menus.cc:205 +msgid "By _Custom Title" +msgstr "By Pasgemaakte Titel" + +#: src/gtkui/menus.cc:132 src/gtkui/menus.cc:149 src/qtui/menus.cc:189 +#: src/qtui/menus.cc:206 +msgid "By C_omment" +msgstr "By K_ommentaar" + +#: src/gtkui/menus.cc:134 src/gtkui/menus.cc:151 src/qtui/menus.cc:191 +#: src/qtui/menus.cc:208 +msgid "R_everse Order" +msgstr "Omg_ekeerde Volgorde" + +#: src/gtkui/menus.cc:135 src/gtkui/menus.cc:152 src/qtui/menus.cc:193 +#: src/qtui/menus.cc:210 +msgid "_Random Order" +msgstr "Ewekansige Volgorde" + +#: src/gtkui/menus.cc:156 src/qtui/menus.cc:214 +msgid "_Play/Resume" +msgstr "Speel/Hervat" + +#: src/gtkui/menus.cc:157 src/qtui/menus.cc:216 +msgid "_Refresh" +msgstr "Verfris" + +#: src/gtkui/menus.cc:159 src/qtui/menus.cc:220 +msgid "_Sort" +msgstr "_Sorteer" + +#: src/gtkui/menus.cc:160 src/qtui/menus.cc:221 +msgid "Sort Se_lected" +msgstr "Sorteer Seleksie" + +#: src/gtkui/menus.cc:161 src/qtui/menus.cc:223 +msgid "Remove _Duplicates" +msgstr "Verwyder _Duplikate" + +#: src/gtkui/menus.cc:162 src/qtui/menus.cc:224 +msgid "Remove _Unavailable Files" +msgstr "Verwyder Onbeskikbare Lêers" + +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 +msgid "_New" +msgstr "_Nuwe" + +#: src/gtkui/menus.cc:165 src/qtui/menus.cc:228 +msgid "Ren_ame ..." +msgstr "Hernoem ..." + +#: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 +#: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 +#: src/qtui/playlist_tabs.cc:335 +msgid "Remo_ve" +msgstr "Verwyder" + +#: src/gtkui/menus.cc:168 src/qtui/menus.cc:231 +msgid "_Import ..." +msgstr "Voer in ..." + +#: src/gtkui/menus.cc:169 src/qtui/menus.cc:232 +msgid "_Export ..." +msgstr "Voer uit ..." + +#: src/gtkui/menus.cc:171 src/qtui/menus.cc:235 +msgid "Playlist _Manager ..." +msgstr "Snitlys Bestuurder ..." + +#: src/gtkui/menus.cc:172 src/qtui/menus.cc:237 +msgid "_Queue Manager ..." +msgstr "Tou Bestuurder ..." + +#: src/gtkui/menus.cc:176 src/qtui/menus.cc:241 +msgid "Volume _Up" +msgstr "Volume Op" + +#: src/gtkui/menus.cc:177 src/qtui/menus.cc:243 +msgid "Volume _Down" +msgstr "Volume Af" + +#: src/gtkui/menus.cc:179 src/qtui/menus.cc:247 +msgid "_Equalizer ..." +msgstr "Gelykmaker ..." + +#: src/gtkui/menus.cc:180 src/qtui/menus.cc:249 +msgid "E_ffects ..." +msgstr "E_ffekte ..." + +#: src/gtkui/menus.cc:182 +msgid "_Record Stream" +msgstr "Neem Stroom Op" + +#: src/gtkui/menus.cc:183 +msgid "Audio _Settings ..." +msgstr "Oudio _Stellings ..." + +#: src/gtkui/menus.cc:187 src/qtui/menus.cc:258 +msgid "Show _Menu Bar" +msgstr "Wys kieslysbalk" + +#: src/gtkui/menus.cc:188 src/qtui/menus.cc:260 +msgid "Show I_nfo Bar" +msgstr "Wys Infobalk" + +#: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 +msgid "Show Info Bar _Album Art" +msgstr "Wys Infobalk _Album Kuns" + +#: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 +msgid "Show Info Bar Vis_ualization" +msgstr "Wys Infobalk Vis_ualisering" + +#: src/gtkui/menus.cc:191 src/qtui/menus.cc:266 +msgid "Show _Status Bar" +msgstr "Wys _Status Balk" + +#: src/gtkui/menus.cc:193 src/qtui/menus.cc:270 +msgid "Show _Remaining Time" +msgstr "Wys Oorblywende Tyd" + +#: src/gtkui/menus.cc:195 src/qtui/menus.cc:274 src/skins/menus.cc:157 +#: src/skins-qt/menus.cc:152 +msgid "_Visualizations ..." +msgstr "_Visualiserings ..." + +#: src/gtkui/menus.cc:199 src/qtui/menus.cc:278 +msgid "_File" +msgstr "Lêer ..." + +#: src/gtkui/menus.cc:200 src/qtui/menus.cc:279 +msgid "_Playback" +msgstr "Terugspeel" + +#: src/gtkui/menus.cc:201 src/qtui/menus.cc:280 +msgid "P_laylist" +msgstr "Snit_lys" + +#: src/gtkui/menus.cc:202 src/gtkui/menus.cc:220 src/qtui/menus.cc:281 +#: src/qtui/menus.cc:310 +msgid "_Services" +msgstr "Dienste" + +#: src/gtkui/menus.cc:203 src/qtui/menus.cc:282 +msgid "_Output" +msgstr "Uitset" + +#: src/gtkui/menus.cc:204 src/qtui/menus.cc:283 +msgid "_View" +msgstr "Aansig" + +#: src/gtkui/menus.cc:209 src/qtui/menus.cc:294 +msgid "_Queue/Unqueue" +msgstr "Tou/Ontou" + +#: src/gtkui/menus.cc:211 src/qtui/menus.cc:297 +msgid "_Open Containing Folder" +msgstr "Maak Bevattende Gids _Oop" + +#: src/gtkui/menus.cc:212 src/qtui/menus.cc:299 +msgid "_Refresh Selected" +msgstr "Verfris Seleksie" + +#: src/gtkui/menus.cc:214 src/qtui/menus.cc:302 +msgid "Cu_t" +msgstr "Sny" + +#: src/gtkui/menus.cc:215 src/qtui/menus.cc:303 +msgid "_Copy" +msgstr "Kopie" + +#: src/gtkui/menus.cc:216 src/qtui/menus.cc:304 +msgid "_Paste" +msgstr "_Plak" + +#: src/gtkui/menus.cc:217 src/qtui/menus.cc:305 +msgid "Paste at _End" +msgstr "Plak op _Einde" + +#: src/gtkui/menus.cc:218 src/qtui/menus.cc:307 +msgid "Select _All" +msgstr "Selekteer _Alles" + +#: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 +#: src/qtui/playlist_tabs.cc:333 +msgid "_Rename ..." +msgstr "Hernoem ..." + +#: src/gtkui/settings.cc:35 src/qtui/settings.cc:63 +msgid "Playlist Tabs" +msgstr "Snitlys Oortjies" + +#: src/gtkui/settings.cc:36 +msgid "Always show tabs" +msgstr "Wys oortjies altyd" + +#: src/gtkui/settings.cc:38 src/qtui/settings.cc:68 +msgid "Show entry counts" +msgstr "Wys item tellings" + +#: src/gtkui/settings.cc:40 src/qtui/settings.cc:71 +msgid "Show close buttons" +msgstr "Wys maak toe knoppies" + +#: src/gtkui/settings.cc:42 src/qtui/settings.cc:74 +msgid "Playlist Columns" +msgstr "Snitlys Kolomme" + +#: src/gtkui/settings.cc:44 src/qtui/settings.cc:76 +msgid "Show column headers" +msgstr "Wys kolom opskrifte" + +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "Gebruik simboliese ikone in die nutsbalk" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 +msgid "Scroll on song change" +msgstr "Rollees op lied verandering" + +#: src/gtkui/ui_gtk.cc:81 +msgid "GTK Interface" +msgstr "GTK Koppelvlak" + +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 +#, c-format +msgid "%s - Audacious" +msgstr "%s - Audacious" + +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 +msgid "Buffering ..." +msgstr "Buffer tans..." + +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 +msgid "Audacious" +msgstr "Audacious" + +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 +#: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 +#: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 +msgid "Play" +msgstr "Speel" + +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 +#: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 +#: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 +msgid "Pause" +msgstr "Pouseer" + +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +msgid "Search Library" +msgstr "Deursoek Biblioteek" + +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 +msgid "Open Files" +msgstr "Maak Lêers Oop" + +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 +msgid "Add Files" +msgstr "Voeg Lêers By" + +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +msgid "Previous" +msgstr "Vorige" + +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 +#: src/skins-qt/menus.cc:102 +msgid "Stop" +msgstr "Stop" + +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +msgid "Next" +msgstr "Volgende" + +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/skins-qt/menus.cc:69 +msgid "Record Stream" +msgstr "Neem Stroom Op" + +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +msgid "Repeat" +msgstr "Herhaal" + +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +msgid "Shuffle" +msgstr "Skoffel" + +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 +msgid "Menu" +msgstr "Kieslys" + +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 +msgid "mono" +msgstr "mono" + +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 +msgid "stereo" +msgstr "stereo" + +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d kanaal" +msgstr[1] "%d kanale" + +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 +#, c-format +msgid "%d kHz" +msgstr "%d kHz" + +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 +#, c-format +msgid "%d kbit/s" +msgstr "%d kbps" + +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 +msgid "Single mode." +msgstr "Enkel modus." + +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 +msgid "Playlist mode." +msgstr "Snitlys modus." + +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 +msgid "Stopping after song." +msgstr "Gaan stop na lied." + +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 +msgid "Previous track" +msgstr "Vorige snit" + +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 +msgid "Pause/Resume" +msgstr "Pouseer/Hervat" + +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 +msgid "Next track" +msgstr "Volgende snit" + +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 +msgid "Step forward" +msgstr "Tree voorwaarts" + +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 +msgid "Step backward" +msgstr "Tree terugwaarts" + +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 +msgid "Mute" +msgstr "Demp" + +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 +msgid "Volume up" +msgstr "Volume op" + +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 +msgid "Volume down" +msgstr "Volume af" + +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 +msgid "Jump to file" +msgstr "Spring tot lêer" + +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 +msgid "Toggle player window(s)" +msgstr "Wissel speler venster(s)" + +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 +msgid "Show On-Screen-Display" +msgstr "Wys Op-Skerm-Vertoon" + +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 +msgid "Toggle repeat" +msgstr "Wissel herhaal" + +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 +msgid "Toggle shuffle" +msgstr "Wissel skoffel" + +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 +msgid "Toggle stop after current" +msgstr "Wissel stop na huidige" + +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 +msgid "Raise player window(s)" +msgstr "Lig speler venster(s) op" + +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 +msgid "(none)" +msgstr "(geen)" + +#: src/hotkey/gui.cc:261 +msgid "" +"It is not recommended to bind the primary mouse buttons without modifiers.\n" +"\n" +"Do you want to continue?" +msgstr "" +"Dit word nie aanbeveel om die primêre muisknoppies te sonder wysigers te " +"bind nie.\n" +"\n" +"Wil jy voortgaan?" + +#: src/hotkey/gui.cc:264 +msgid "Binding mouse buttons" +msgstr "Binding van muisknoppies" + +#: src/hotkey/gui.cc:434 +msgid "" +"Press a key combination inside a text field.\n" +"You can also bind mouse buttons." +msgstr "" +"Druk 'n sleutelkombinasie binne 'n teksveld.\n" +"Jy kan ook muisknoppies bind." + +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 +msgid "Hotkeys:" +msgstr "Snelsleutels:" + +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 +msgid "Action:" +msgstr "Aksie:" + +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 +msgid "Key Binding:" +msgstr "Sleutel Binding:" + +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 +msgid "_Add" +msgstr "Voeg by" + +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 +msgid "Global Hotkeys" +msgstr "Globale Snelsleutels" + +#: src/hotkey/plugin.cc:76 +msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributors include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " +msgstr "" +"Globale Snelsleutel Inprop\n" +"Beheer die speler met globale sleutelkombinasies of multimediasleutels.\n" +"\n" +"Kopiereg (K) 2007-2008 Sascha Hlusiak \n" +"\n" +"Bydraers sluit in:\n" +"Kopiereg (K) 2006-2007 Vladimir Paskov \n" +"Kopiereg (K) 2000-2002 Ville Syrjälä ,\n" +"Bryn Davies ,\n" +"Jonathan A. Davis ,\n" +"Jeremy Tan " + +#: src/jack/jack-ng.cc:54 +msgid "JACK Output" +msgstr "JACK Uitset" + +#: src/jack/jack-ng.cc:126 +msgid "Client name:" +msgstr "Kliënt naam:" + +#: src/jack/jack-ng.cc:128 +msgid "Automatically connect to output ports" +msgstr "Konnekteer outomaties aan uitset poorte" + +#: src/jack/jack-ng.cc:130 +msgid "Filter ports (regex, use any port if blank):" +msgstr "Filtreer poorte (regex, gebruik enige poort as leeg):" + +#: src/jack/jack-ng.cc:136 +msgid "Connect to physical ports only" +msgstr "Koppel slegs aan fisiese poorte" + +#: src/jack/jack-ng.cc:139 +msgid "Upmix to" +msgstr "\"Upmix\" na" + +#: src/jack/jack-ng.cc:141 +msgid "ports if input has fewer channels" +msgstr "poorte as inset minder kanale het" + +#: src/jack/jack-ng.cc:143 +msgid "Ignore insufficient number of ports" +msgstr "Ignoreer onvoldoende aantal poorte" + +#: src/jack/jack-ng.cc:181 +msgid "No JACK output ports were found. Please check settings." +msgstr "Geen JACK uitset poorte was gevind nie. Hersien asseblief stellings." + +#: src/jack/jack-ng.cc:195 +#, c-format +msgid "Only %d JACK output ports were found but %d are required." +msgstr "Slegs %dJACK uitset poorte was gevind maar %dword benodig." + +#: src/jack/jack-ng.cc:210 +#, c-format +msgid "Failed to connect to JACK port %s." +msgstr "Kon nie aan JACK-poort %s koppel nie." + +#: src/jack/jack-ng.cc:230 +msgid "" +"JACK supports only floating-point audio. You must change the output bit " +"depth to floating-point in Audacious settings." +msgstr "" +"JACK ondersteun slegs drywende-punt-klank. Jy moet die uitset bisdiepte na " +"drywende-punt in Audacious-instellings verander." + +#: src/jack/jack-ng.cc:245 +msgid "Failed to connect to the JACK server; is it running?" +msgstr "Kon nie aan JACK-bediener koppel nie; Hardloop dit?" + +#: src/jack/jack-ng.cc:321 +#, c-format +msgid "" +"The JACK server requires a sample rate of %d Hz, but Audacious is playing at " +"%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." +msgstr "" +"Die JACK-bediener vereis 'n monstertempo van %d Hz, maar Audacious speel " +"teen %d Hz. Gebruik asseblief die MonsterTempoOmsitter-effek om die " +"wanpassing reg te stel." + +#: src/ladspa/plugin.cc:416 +#, c-format +msgid "%s Settings" +msgstr "%s Stellings" + +#: src/ladspa/plugin.cc:482 +msgid "Module paths:" +msgstr "Module paaie:" + +#: src/ladspa/plugin.cc:487 +msgid "" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." +msgstr "" +"Skei verskeie paaie met 'n dubbelpunt.\n" +"Hierdie paaie, so wel as LADSPA_PATH, word deursoek.\n" +"Nadat u nuwe paaie bygevoeg het, druk Enter om vir nuwe inproppe te soek." + +#: src/ladspa/plugin.cc:508 +msgid "Available plugins:" +msgstr "Beskikbare inproppe:" + +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 +#: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 +#: src/modplug/plugin_main.cc:100 +msgid "Enable" +msgstr "Aktiveer" + +#: src/ladspa/plugin.cc:527 +msgid "Enabled plugins:" +msgstr "Aktiveer inproppe:" + +#: src/ladspa/plugin.cc:543 +msgid "Settings" +msgstr "Stellings" + +#: src/ladspa/plugin.cc:560 +msgid "" +"LADSPA Host for Audacious\n" +"Copyright 2011 John Lindgren" +msgstr "" +"LADSPA Gasheer vir Audacious\n" +"Kopiereg 2011 John Lindgren" + +#: src/ladspa/plugin.h:78 +msgid "LADSPA Host" +msgstr "LADSPA Gasheer" + +#: src/lirc/lirc.cc:55 +msgid "LIRC Plugin" +msgstr "LIRC Inprop" + +#: src/lirc/lirc.cc:379 +msgid "" +"A simple plugin to control Audacious using the LIRC remote control daemon\n" +"\n" +"Adapted for Audacious by:\n" +"Tony Vroon \n" +"Joonas Harjumäki \n" +"\n" +"Based on the XMMS LIRC plugin by:\n" +"Carl van Schaik \n" +"Christoph Bartelmus \n" +"Andrew O. Shadoura \n" +"\n" +"For more information about LIRC, see http://lirc.org." +msgstr "" +"'n Eenvoudige inprop om Audacious te beheer deur die LIRC-afstandbeheer " +"damonion te gebruik\n" +"\n" +"Aangepas vir Audacious deur:\n" +"Tony Vroon \n" +"Joonas Harjumäki \n" +"\n" +"Gebaseer op die XMMS LIRC-inprop deur:\n" +"Carl van Schaik \n" +"Christoph Bartelmus \n" +"Andrew O. Shadoura \n" +"\n" +"Vir meer inligting oor LIRC, sien http://lirc.org." + +#: src/lirc/lirc.cc:390 +msgid "Connection" +msgstr "Konneksie" + +#: src/lirc/lirc.cc:391 +msgid "Reconnect to LIRC server" +msgstr "Herkoppel aan LIRC-bediener" + +#: src/lirc/lirc.cc:393 +msgid "Wait before reconnecting:" +msgstr "Wag voor herkoppel:" + +#: src/lyricwiki-qt/lyricwiki.cc:90 +msgid "Lyrics" +msgstr "Lirieke" + +#: src/lyricwiki-qt/lyricwiki.cc:118 +msgid "Nowhere" +msgstr "Nêrens nie" + +#: src/lyricwiki-qt/lyricwiki.cc:119 +msgid "lyrics.ovh" +msgstr "lyrics.ovh" + +#: src/lyricwiki-qt/lyricwiki.cc:123 +msgid "Artist is truncated at the start, Title -- at the end" +msgstr "" +"Kunstenaar word aan die begin afgekap, Titel -- aan die einde" + +#: src/lyricwiki-qt/lyricwiki.cc:124 +msgid "Chars to truncate on:" +msgstr "Karakters om af te kap:" + +#: src/lyricwiki-qt/lyricwiki.cc:128 +msgid "Chars are ORed in RegExp, surrounded by whitespace" +msgstr "Karakters word ge-OF in RegExp, omring deur witspasie" + +#: src/lyricwiki-qt/lyricwiki.cc:129 +msgid "Chars to split on:" +msgstr "Karakters om op te verdeel:" + +#: src/lyricwiki-qt/lyricwiki.cc:130 +msgid "Further truncate those on chars" +msgstr "Knip dié op karakters verder af" + +#: src/lyricwiki-qt/lyricwiki.cc:136 +msgid "General" +msgstr "Algemeen" + +#: src/lyricwiki-qt/lyricwiki.cc:137 +msgid "Split title into artist and title on chars" +msgstr "Verdeel titel, in kunstenaar en titel op, volgens karakters" + +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "Bronne" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "Gebruik ingebedde lirieke (vanaf Lyrics etiket)" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "Gaan haal lirieke van die internet af:" + +#: src/lyricwiki-qt/lyricwiki.cc:146 +msgid "Store fetched lyrics in local cache" +msgstr "Stoor afgehaalde lirieke in plaaslike kas" + +#: src/lyricwiki-qt/lyricwiki.cc:148 +msgid "Local Storage" +msgstr "Plaaslike Berging" + +#: src/lyricwiki-qt/lyricwiki.cc:149 +msgid "Load lyric files (.lrc) from local storage" +msgstr "Laai lirieklêers (.lrc) vanaf plaaslike berging" + +#: src/lyricwiki-qt/lyricwiki.cc:360 +#, c-format +msgid "Unable to fetch %s" +msgstr "Kan nie %s gaan haal nie" + +#: src/lyricwiki-qt/lyricwiki.cc:369 +#, c-format +msgid "Unable to parse %s" +msgstr "Kan nie %s ontleed nie" + +#: src/lyricwiki-qt/lyricwiki.cc:407 +msgid "Looking for lyrics ..." +msgstr "Soek vir lirieke ..." + +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 +msgid "Error" +msgstr "Fout" + +#: src/lyricwiki-qt/lyricwiki.cc:437 +msgid "Lyrics could not be found." +msgstr "Lirieke kon nie gevind word nie." + +#: src/lyricwiki-qt/lyricwiki.cc:518 +msgid "Missing title and/or artist." +msgstr "Titel en/of kunstenaar ontbreek." + +#: src/lyricwiki-qt/lyricwiki.cc:576 +msgid "Save Locally" +msgstr "Stoor Plaaslik" + +#: src/lyricwiki-qt/lyricwiki.cc:584 +msgid "Refresh" +msgstr "Verfris" + +#: src/m3u/m3u.cc:33 +msgid "M3U Playlists" +msgstr "M3U Snitlyste" + +#: src/metronom/metronom.cc:44 +msgid "Tact Generator" +msgstr "Tact Generator" + +#: src/metronom/metronom.cc:145 +#, c-format +msgid "Tact generator: %d bpm" +msgstr "Tact generator: %d spm" + +#: src/metronom/metronom.cc:147 +#, c-format +msgid "Tact generator: %d bpm %d/%d" +msgstr "Tact generator: %d spm %d/%d" + +#: src/metronom/metronom.cc:235 +msgid "" +"A Tact Generator by Martin Strauss \n" +"\n" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" +msgstr "" +"A Tact Generator deur Martin Strauss \n" +"\n" +"Om dit te gebruik, voeg 'n URL by: tact://beats*num/den\n" +"bv. tact://77 om 77 slae per minuut te speel\n" +"of tact://60*3/4 om 60 spm in 3/4 takte te speel" + +#: src/mixer/mixer.cc:43 +msgid "Channel Mixer" +msgstr "Kanaal Menger" + +#: src/mixer/mixer.cc:255 +msgid "" +"Channel Mixer Plugin for Audacious\n" +"Copyright 2011-2012 John Lindgren and Michał Lipski" +msgstr "" +"Kanaal Menger Inprop vir Audacious\n" +"Kopiereg 2011-2012 John Lindgren en Michał Lipski" + +#: src/mixer/mixer.cc:259 +msgid "Channel Mixer" +msgstr "Kanaal Menger" + +#: src/mixer/mixer.cc:260 +msgid "Output channels:" +msgstr "Uitset kanale:" + +#: src/mms/mms.cc:35 +msgid "MMS Plugin" +msgstr "MMS Inprop" + +#: src/mms/mms.cc:82 +msgid "Error connecting to MMS server" +msgstr "Kon nie aan MMS bediener koppel nie" + +#: src/modplug/modplugbmp.h:57 +msgid "ModPlug (Module Player)" +msgstr "ModPlug (Module Speler)" + +#: src/modplug/plugin_main.cc:55 +msgid "Channels" +msgstr "Kanale" + +#: src/modplug/plugin_main.cc:59 +msgid "Nearest (fastest)" +msgstr "Naaste (vinnigste)" + +#: src/modplug/plugin_main.cc:60 +msgid "Linear (fast)" +msgstr "Lineêr (vinnig)" + +#: src/modplug/plugin_main.cc:61 +msgid "Spline (good)" +msgstr "Spline (goed)" + +#: src/modplug/plugin_main.cc:62 +msgid "Polyphase (best)" +msgstr "Polifase (beste)" + +#: src/modplug/plugin_main.cc:63 +msgid "Sample rate" +msgstr "Monstertempo" + +#: src/modplug/plugin_main.cc:64 +msgid "22 kHz" +msgstr "22 kHz" + +#: src/modplug/plugin_main.cc:65 +msgid "44 kHz" +msgstr "44 kHz" + +#: src/modplug/plugin_main.cc:66 +msgid "48 kHz" +msgstr "48 kHz" + +#: src/modplug/plugin_main.cc:67 +msgid "96 kHz" +msgstr "96 kHz" + +#: src/modplug/plugin_main.cc:71 src/modplug/plugin_main.cc:76 +#: src/modplug/plugin_main.cc:81 +msgid "Level:" +msgstr "Vlak:" + +#: src/modplug/plugin_main.cc:77 +msgid "Cutoff:" +msgstr "Afsnypunt:" + +#: src/modplug/plugin_main.cc:90 +msgid "Reverb" +msgstr "Weerklank" + +#: src/modplug/plugin_main.cc:93 +msgid "Bass Boost" +msgstr "Basversterking" + +#: src/modplug/plugin_main.cc:96 +msgid "Surround" +msgstr "Omring" + +#: src/modplug/plugin_main.cc:99 +msgid "Preamp" +msgstr "Voorversterk" + +#: src/modplug/plugin_main.cc:106 +msgid "Oversample" +msgstr "Oormonster" + +#: src/modplug/plugin_main.cc:107 +msgid "Noise reduction" +msgstr "Geraas vermindering" + +#: src/modplug/plugin_main.cc:108 +msgid "Play Amiga MODs" +msgstr "Speel Amiga MODs" + +#: src/modplug/plugin_main.cc:109 +msgid "Repeat" +msgstr "Herhaal" + +#: src/modplug/plugin_main.cc:110 +msgid "Repeat count:" +msgstr "Herhaal telling:" + +#: src/modplug/plugin_main.cc:111 +msgid "To repeat forever, set the repeat count to -1." +msgstr "Om vir ewig te herhaal, stel die herhalingtelling op -1." + +#: src/modplug/plugin_main.cc:124 src/sid/xs_config.cc:106 +msgid "These settings will take effect when Audacious is restarted." +msgstr "" +"Hierdie instellings sal in werking tree wanneer Audacious herbegin word." + +#: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 +#: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 +msgid "Stop After This Song" +msgstr "Stop na hierdie lied" + +#: src/moonstone/moonstone.cc:39 +msgid "Moonstone" +msgstr "Maansteen" + +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 +msgid "Reset to Defaults" +msgstr "Stel terug na verstek waardes" + +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 +msgid "Now Playing" +msgstr "Speel nou" + +#: src/moonstone/playlist_selection.cc:64 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 +msgid "Entries" +msgstr "Inskrywings" + +#: src/mpg123/mpg123.cc:54 +msgid "MPG123 Plugin" +msgstr "MPG123 Inprop" + +#: src/mpg123/mpg123.cc:81 +msgid "Advanced" +msgstr "Gevorderd" + +#: src/mpg123/mpg123.cc:82 +msgid "Use accurate length calculation (slow)" +msgstr "Gebruik akkurate lengte berekeninge (stadig)" + +#: src/mpg123/mpg123.cc:260 +msgid "Surround" +msgstr "Omsingel" + +#: src/mpris2/plugin.cc:38 +msgid "MPRIS 2 Server" +msgstr "MPRIS 2 Bediener" + +#: src/neon/neon.cc:97 +msgid "Neon HTTP/HTTPS Plugin" +msgstr "Neon HTTP/HTTPS Inprop" + +#: src/neon/neon.cc:526 +msgid "Error parsing redirect" +msgstr "Kon nie herleiding ontleed nie" + +#: src/neon/neon.cc:540 +msgid "Unknown HTTP error" +msgstr "Onbekende HTTP fout" + +#: src/neon/neon.cc:590 +msgid "Error parsing URL" +msgstr "Kon nie URL ontleed nie" + +#: src/neon/neon.cc:660 +msgid "Too many redirects" +msgstr "Te veel herleidings" + +#: src/notify/event.cc:97 +msgid "Stopped" +msgstr "Gestop" + +#: src/notify/event.cc:97 +msgid "Audacious is not playing." +msgstr "Audacious is nie besig om te speel nie." + +#: src/notify/notify.cc:39 +msgid "Desktop Notifications" +msgstr "Werkskermkennisgewings" + +#: src/notify/notify.cc:57 +msgid "" +"Desktop Notifications Plugin for Audacious\n" +"Copyright (C) 2010 Maximilian Bogner\n" +"Copyright (C) 2011-2013 John Lindgren and Jean-Alexandre Anglès d'Auriac\n" +"\n" +"This plugin 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 3 of the License, or (at your option) " +"any later version.\n" +"\n" +"This plugin 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.\n" +"\n" +"You should have received a copy of the GNU General Public License along with " +"this program. If not, see ." +msgstr "" +"Werkskermkennisgewings-inprop vir Audacious\n" +"Kopiereg (C) 2010 Maximilian Bogner\n" +"Kopiereg (C) 2011-2013 John Lindgren en Jean-Alexandre Anglès d'Auriac\n" +"\n" +"Hierdie inprop is gratis sagteware: jy kan dit herverdeel en/of wysig onder " +"die bepalings van die GNU General Public License soos gepubliseer deur die " +"Free Software Foundation, óf weergawe 3 van die lisensie, óf (na jou keuse) " +"enige latere weergawe.\n" +"\n" +"Hierdie inprop word versprei in die hoop dat dit nuttig sal wees, maar " +"SONDER ENIGE WAARBORG; selfs sonder die stilswyende waarborg van " +"VERHANDELBAARHEID of GESKIKTHEID VIR 'N SPESIFIEKE DOEL. Sien die GNU " +"General Public License vir meer besonderhede.\n" +"\n" +"Jy moes 'n afskrif van die GNU General Public License saam met hierdie " +"program ontvang het. Indien nie, sien ." + +#: src/notify/notify.cc:104 +msgid "Show playback controls" +msgstr "Wys terugspeel kontroles" + +#: src/notify/notify.cc:106 +msgid "Always show notification" +msgstr "Wys altyd 'n kennisgewing" + +#: src/notify/notify.cc:108 +msgid "Include album name in notification" +msgstr "Sluit album naam in kennisgewing in" + +#: src/notify/notify.cc:110 +msgid "Custom notification duration:" +msgstr "Pas gemaakte kennisgewingsduur:" + +#: src/notify/osd.cc:74 +msgid "Show" +msgstr "Wys" + +#: src/openmpt/mpt.cc:50 +msgid "OpenMPT (Module Player)" +msgstr "OpenMPT (Module Speler)" + +#: src/openmpt/mpt.cc:132 +msgid "" +"Module player based on libopenmpt\n" +"\n" +"Written by: Chris Spiegel " +msgstr "" +"Module speler gebaseer op libopenmpt\n" +"\n" +"Geskryf deur: Chris Spiegel " + +#: src/openmpt/mpt.cc:151 +msgid "Stereo separation:" +msgstr "Stereo skeiding:" + +#: src/openmpt/mpt.cc:153 +msgid "%" +msgstr "%" + +#: src/openmpt/mpt.cc:157 +msgid "Interpolation:" +msgstr "Interpolasie:" + +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 +msgid "Linear" +msgstr "Lineêr" + +#: src/openmpt/mptwrap.h:52 +msgid "Cubic" +msgstr "Kubies" + +#: src/openmpt/mptwrap.h:53 +msgid "Windowed sinc" +msgstr "Venster sink" + +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "Opus Dekodeerder" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" +"Opus Dekodeerder Inprop vir Audacious\n" +"Kopiereg 2022 Thomas Lange" + +#: src/oss4/oss.h:70 +msgid "OSS4 Output" +msgstr "OSS4 Uitset" + +#: src/oss4/oss.h:72 +msgid "OSS3 Output" +msgstr "OSS3 Uitset" + +#: src/oss4/plugin.cc:35 +msgid "Default device" +msgstr "Verstek toestel" + +#: src/oss4/plugin.cc:78 +msgid "Audio device:" +msgstr "Oudio toestel:" + +#: src/oss4/plugin.cc:81 +msgid "Use alternate device:" +msgstr "Gebruik alternatiewe toestel:" + +#: src/oss4/plugin.cc:85 +msgid "Save volume between sessions." +msgstr "Berg volume tussen sessies." + +#: src/oss4/plugin.cc:87 +msgid "Enable format conversions made by the OSS software." +msgstr "Aktiveer formaatomskakelings wat deur die OSS-sagteware gemaak word." + +#: src/oss4/plugin.cc:89 +msgid "Enable exclusive mode to prevent virtual mixing." +msgstr "Aktiveer eksklusiewe modus om virtuele menging te voorkom." + +#: src/oss4/plugin.cc:101 +msgid "" +"OSS4 Output Plugin for Audacious\n" +"Copyright 2010-2012 Michał Lipski\n" +"\n" +"I would like to thank people on #audacious, especially Tony Vroon and John " +"Lindgren and of course the authors of the previous OSS plugin." +msgstr "" +"OSS4-uitvoerinprop vir Audacious\n" +"Kopiereg 2010-2012 Michał Lipski\n" +"\n" +"Ek wil graag mense op #audacious bedank, veral Tony Vroon en John Lindgren " +"en natuurlik die skrywers van die vorige OSS-inprop." + +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "PipeWire Uitset" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" +"PipeWire Uitset Inprop vir Audacious\n" +"Kopiereg 2022 Thomas Lange\n" +"\n" +"Gebaseer op die PipeWire Uitset Inprop vir Qmmp\n" +"Kopiereg 2021 Ilya Kotov" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Terugspeel" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 +msgid "Playlist Manager" +msgstr "Snitlys Bestuurder" + +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 +msgid "_Remove" +msgstr "_Verwyder" + +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 +msgid "Ren_ame" +msgstr "Hernoem" + +#: src/pls/pls.cc:35 +msgid "PLS Playlists" +msgstr "PLS Snilyste" + +#: src/psf/plugin.cc:53 +msgid "OpenPSF PSF1/PSF2 Decoder" +msgstr "OpenPSF PSF1/PSF2 Dekodeerder" + +#: src/psf/plugin.cc:270 +msgid "OpenPSF Configuration" +msgstr "OpenPSF Konfigurasie" + +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 +msgid "Ignore length from file" +msgstr "Ignoreer lengte van lêer" + +#: src/pulse/pulse_audio.cc:42 +msgid "PulseAudio Output" +msgstr "PulseAudio Uitset" + +#: src/pulse/pulse_audio.cc:72 +msgid "Context name:" +msgstr "Konteksnaam:" + +#: src/pulse/pulse_audio.cc:74 +msgid "Stream name:" +msgstr "Stroom naam:" + +#: src/pulse/pulse_audio.cc:575 +msgid "" +"Audacious PulseAudio Output Plugin\n" +"\n" +"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.\n" +"\n" +"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.\n" +"\n" +"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." +msgstr "" +"Audacious PulseAudio Uitset-inprop\n" +"\n" +"Hierdie program is gratis sagteware; jy kan dit herverdeel en/of wysig onder " +"die bepalings van die GNU General Public License soos gepubliseer deur die " +"Free Software Foundation; óf weergawe 2 van die lisensie, óf (na jou keuse) " +"enige latere weergawe.\n" +"\n" +"Hierdie program word versprei in die hoop dat dit nuttig sal wees, maar " +"SONDER ENIGE WAARBORG; selfs sonder die stilswyende waarborg van " +"VERHANDELBAARHEID of GESKIKTHEID VIR 'N SPESIFIEKE DOEL. Sien die GNU " +"General Public License vir meer besonderhede.\n" +"\n" +"Jy moes 'n afskrif van die GNU General Public License saam met hierdie " +"program ontvang het; indien nie, skryf aan die Free Software Foundation, " +"Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, VSA." + +#: src/qtaudio/qtaudio.cc:44 +msgid "QtMultimedia Output" +msgstr "QtMultimedia Uitset" + +#: src/qtaudio/qtaudio.cc:72 +msgid "" +"QtMultimedia Audio Output Plugin for Audacious\n" +"Copyright 2014 William Pitcock\n" +"\n" +"Based on SDL Output Plugin for Audacious\n" +"Copyright 2010 John Lindgren" +msgstr "" +"QtMultimedia oudio-uitvoer-inprop vir Audacious\n" +"Kopiereg 2014 William Pitcock\n" +"\n" +"Gebaseer op SDL Output Plugin vir Audacious\n" +"Kopiereg 2010 John Lindgren" + +#: src/qtglspectrum/gl-spectrum.cc:41 +msgid "" +"OpenGL Spectrum Analyzer for Audacious\n" +"Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" +"Copyright 2014, 2020 Ariadne Conill\n" +"\n" +"Based on the XMMS plugin:\n" +"Copyright 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, and " +"4Front Technologies\n" +"\n" +"License: GPLv2+" +msgstr "" +"OpenGL Spectrum Analyzer vir Audacious\n" +"Kopiereg 2013 Christophe Budé, John Lindgren en Carlo Bramini\n" +"Kopiereg 2014, 2020 Ariadne Conill\n" +"\n" +"Gebaseer op die XMMS-inprop:\n" +"Kopiereg 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson en " +"4Front Technologies\n" +"\n" +"Lisensie: GPLv2+" + +#: src/qthotkey/gui.cc:177 +msgid "Press a key combination inside a text field." +msgstr "Druk 'n sleutelkombinasie binne 'n teksveld." + +#: src/qthotkey/plugin.cc:107 +msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2020 i.Dark_Templar \n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributors include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " +msgstr "" +"Global Hotkey Plugin\n" +"Beheer die speler met globale sleutelkombinasies of multimediasleutels.\n" +"\n" +"Kopiereg (C) 2020 i.Dark_Templar \n" +"Kopiereg (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Bydraers sluit in:\n" +"Kopiereg (C) 2006-2007 Vladimir Paskov \n" +"Kopiereg (C) 2000-2002 Ville Syrjälä ,\n" +"Bryn Davies ,\n" +"Jonathan A. Davis ,\n" +"Jeremy Tan " + +#: src/qtui/menus.cc:109 +msgid "_Open Folder ..." +msgstr "Maak vouer oop..." + +#: src/qtui/menus.cc:115 +msgid "_Add Folder ..." +msgstr "Voeg vouer by..." + +#: src/qtui/menus.cc:128 +msgid "_Log Inspector ..." +msgstr "_Log inspekteur..." + +#: src/qtui/menus.cc:218 +msgid "_Find ..." +msgstr "Vind..." + +#: src/qtui/menus.cc:254 src/skins/menus.cc:80 src/skins-qt/menus.cc:70 +msgid "Audio Settings ..." +msgstr "Oudio Instellings..." + +#: src/qtui/playlist_model.cc:188 +msgid "Q#" +msgstr "T#" + +#: src/qtui/playlist_model.cc:190 +msgid "T#" +msgstr "S#" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "C#" + +#: src/qtui/qtui.cc:40 +msgid "Qt Interface" +msgstr "Qt-Kopperlvlak" + +#: src/qtui/search_bar.cc:46 +msgid "Search playlist" +msgstr "Deursoek snitlys" + +#: src/qtui/settings.cc:58 +msgid "Always" +msgstr "Altyd" + +#: src/qtui/settings.cc:59 +msgid "Auto-hide" +msgstr "Versteek outomaties" + +#: src/qtui/settings.cc:60 +msgid "Never" +msgstr "Nooit" + +#: src/qtui/settings.cc:64 +msgid "Show playlist tabs:" +msgstr "Wys snitlys oortjies:" + +#: src/qtui/settings.cc:78 +msgid "Use bold font for column headers" +msgstr "Gebruik vetdruk vir kolomopskrifte" + +#: src/resample/resample.cc:43 +msgid "Sample Rate Converter" +msgstr "Monstertempo Omskakelaar" + +#: src/resample/resample.cc:183 +msgid "" +"Sample Rate Converter Plugin for Audacious\n" +"Copyright 2010-2012 John Lindgren" +msgstr "" +"Monstertempo Omskakelaar Inprop vir Audacious\n" +"Kopiereg 2010-2012 John Lindgren" + +#: src/resample/resample.cc:187 +msgid "Skip/repeat samples" +msgstr "Slaan oor/herhaal monsters" + +#: src/resample/resample.cc:188 +msgid "Linear interpolation" +msgstr "Lineêre interpolasie" + +#: src/resample/resample.cc:189 +msgid "Fast sinc interpolation" +msgstr "Vinnige sinc interpolasie" + +#: src/resample/resample.cc:190 +msgid "Medium sinc interpolation" +msgstr "Medium sinc interpolasie" + +#: src/resample/resample.cc:191 +msgid "Best sinc interpolation" +msgstr "Beste sinc interpolasie" + +#: src/resample/resample.cc:195 +msgid "Conversion" +msgstr "Omskakeling" + +#: src/resample/resample.cc:196 +msgid "Method:" +msgstr "Metode:" + +#: src/resample/resample.cc:199 src/soxr/sox-resampler.cc:203 +msgid "Rate:" +msgstr "Tempo:" + +#: src/resample/resample.cc:202 +msgid "Rate Mappings" +msgstr "Tempo Karterings" + +#: src/resample/resample.cc:203 +msgid "Use rate mappings" +msgstr "Gebruik tempo karterings" + +#: src/resample/resample.cc:205 +msgid "8 kHz:" +msgstr "8 kHz:" + +#: src/resample/resample.cc:209 +msgid "16 kHz:" +msgstr "16 kHz:" + +#: src/resample/resample.cc:213 +msgid "22.05 kHz:" +msgstr "22.05 kHz:" + +#: src/resample/resample.cc:217 +msgid "32.0 kHz:" +msgstr "32.0 kHz:" + +#: src/resample/resample.cc:221 +msgid "44.1 kHz:" +msgstr "44.1 kHz:" + +#: src/resample/resample.cc:225 +msgid "48 kHz:" +msgstr "48 kHz:" + +#: src/resample/resample.cc:229 +msgid "88.2 kHz:" +msgstr "88.2 kHz:" + +#: src/resample/resample.cc:233 +msgid "96 kHz:" +msgstr "96 kHz:" + +#: src/resample/resample.cc:237 +msgid "176.4 kHz:" +msgstr "176.4 kHz:" + +#: src/resample/resample.cc:241 +msgid "192 kHz:" +msgstr "192 kHz:" + +#: src/scrobbler2/config_window.cc:19 +msgid "Checking Last.fm access ..." +msgstr "Gaan Last.fm-toegang na ..." + +#: src/scrobbler2/config_window.cc:27 +msgid "" +"Your scrobbles are being saved on your computer temporarily. They will be " +"submitted as soon as Audacious is allowed access." +msgstr "" +"Jou scrobbles word tydelik op jou rekenaar gestoor. Dit sal ingedien word " +"sodra Audacious toegang kry." + +#: src/scrobbler2/config_window.cc:33 +#, c-format +msgid "Permission granted. Scrobbling for user %s." +msgstr "Toestemming verleen. Scrobbling vir gebruiker %s." + +#: src/scrobbler2/config_window.cc:37 +msgid "" +"Permission denied. Open the following URL in a browser, allow Audacious " +"access to your account, and then click 'Check Permission' again:" +msgstr "" +"Toestemming geweier. Maak die volgende URL in 'n blaaier oop, laat Audacious " +"toegang tot jou rekening toe, en klik dan weer 'Kontroleer toestemming':" + +#: src/scrobbler2/config_window.cc:47 +msgid "There was a problem contacting Last.fm." +msgstr "Daar was 'n probleem om Last.fm te kontak." + +#: src/scrobbler2/config_window.cc:86 +msgid "Check Permission" +msgstr "Gaan toestemming na" + +#: src/scrobbler2/config_window.cc:87 +msgid "Revoke Permission" +msgstr "Herroep toestemming" + +#: src/scrobbler2/config_window.cc:91 +msgid "You need to allow Audacious to scrobble tracks to your Last.fm account." +msgstr "" +"Jy moet Audacious toelaat om snitte na jou Last.fm-rekening te scrobble." + +#: src/scrobbler2/scrobbler.cc:29 +msgid "Scrobbler 2.0" +msgstr "Scrobbler 2.0" + +#: src/scrobbler2/scrobbler.cc:226 +msgid "" +"The Scrobbler plugin could not be started.\n" +"There might be a problem with your installation." +msgstr "" +"Die Scrobbler-inprop kon nie begin word nie.\n" +"Daar is dalk 'n probleem met jou installasie." + +#: src/scrobbler2/scrobbler.cc:291 +msgid "" +"Audacious Scrobbler Plugin 2.0 by Pitxyoki,\n" +"\n" +"Copyright © 2012-2013 Luís M. Picciochi Oliveira \n" +"\n" +"Thanks to John Lindgren for giving me a hand at the beginning of this " +"project.\n" +"\n" +msgstr "" +"Audacious Scrobbler Plugin 2.0 deur Pitxyoki,\n" +"\n" +"Kopiereg © 2012-2013 Luís M. Picciochi Oliveira \n" +"\n" +"Dankie aan John Lindgren wat my 'n hand gegee het aan die begin van hierdie " +"projek.\n" +"\n" + +#: src/scrobbler2/scrobbler_communication.cc:663 +msgid "" +"Audacious is now using an improved version of the Last.fm Scrobbler.\n" +"Please check the Preferences for the Scrobbler plugin." +msgstr "" +"Audacious gebruik nou 'n verbeterde weergawe van die Last.fm Scrobbler.\n" +"Gaan asseblief die Voorkeure vir die Scrobbler-inprop na." + +#: src/sdlout/sdlout.cc:43 +msgid "SDL Output" +msgstr "SDL-uitset" + +#: src/sdlout/sdlout.cc:72 +msgid "" +"SDL Output Plugin for Audacious\n" +"Copyright 2010 John Lindgren" +msgstr "" +"SDL-uitvoerinprop vir Audacious\n" +"Kopiereg 2010 John Lindgren" + +#: src/search-tool/library.cc:35 src/search-tool/library.cc:46 +#: src/search-tool-qt/library.cc:35 src/search-tool-qt/library.cc:46 +msgid "Library" +msgstr "Biblioteek" + +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 +#, c-format +msgid "%d song" +msgid_plural "%d songs" +msgstr[0] "%dlied" +msgstr[1] "%dliedjies" + +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 +msgid "of this genre" +msgstr "van hierdie genre" + +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 +msgid "on" +msgstr "op" + +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 +msgid "by" +msgstr "deur" + +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 +msgid "Number of results to show:" +msgstr "Aantal resultate om te wys:" + +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 +msgid "Rescan library at startup" +msgstr "Skandeer biblioteek weer gedurende begin" + +#: src/search-tool-qt/search-tool-qt.cc:170 +msgid "Monitor library for changes" +msgstr "Monitor biblioteek vir veranderinge" + +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 +msgid "" +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." +msgstr "" +"Om jou musiekbiblioteek in Audacious in te voer, kies 'n vouer en klik dan " +"op die \"herlaai\"-ikoon." + +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 +msgid "Please wait ..." +msgstr "Wag asseblief ..." + +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 +msgid "Choose Folder" +msgstr "Kies Omslag" + +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 +msgid "Search library" +msgstr "Deursoek biblioteek" + +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 +#, c-format +msgid "%d of %d result shown" +msgid_plural "%d of %d results shown" +msgstr[0] "%d of %d resultaat word gewys" +msgstr[1] "%d van %d resultate word gewys" + +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 +#, c-format +msgid "%d result" +msgid_plural "%d results" +msgstr[0] "%d resultaat" +msgstr[1] "%d resultate" + +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 +msgid "_Create Playlist" +msgstr "Maak Snitlys" + +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 +msgid "_Add to Playlist" +msgstr "Voeg Snitlys by" + +#: src/sid/xmms-sid.cc:43 +msgid "SID Player" +msgstr "SID Speler" + +#: src/sid/xs_config.cc:62 +msgid "Channels:" +msgstr "Kanale:" + +#: src/sid/xs_config.cc:68 +msgid "Emulation" +msgstr "Emulasie" + +#: src/sid/xs_config.cc:69 +msgid "Emulate MOS 8580 (default: MOS 6581)" +msgstr "Emuleer MOS 8580 (verstek: MOS 6581)" + +#: src/sid/xs_config.cc:71 +msgid "Do not automatically select chip model" +msgstr "Moenie outomaties skyfiemodel kies nie" + +#: src/sid/xs_config.cc:73 +msgid "Emulate filter" +msgstr "Emulasie filtreerder" + +#: src/sid/xs_config.cc:75 +msgid "Clock speed:" +msgstr "Klokspoed:" + +#: src/sid/xs_config.cc:78 +msgid "Do not automatically select clock speed" +msgstr "Moenie outomaties klokspoed kies nie" + +#: src/sid/xs_config.cc:80 +msgid "Playback time" +msgstr "Terugspeel tyd" + +#: src/sid/xs_config.cc:81 +msgid "Set maximum playback time:" +msgstr "Stel maksimum terugspeel tyd:" + +#: src/sid/xs_config.cc:87 +msgid "Use only when song length is unknown" +msgstr "Gebruik slegs wanneer die lengte van die liedjie onbekend is" + +#: src/sid/xs_config.cc:90 +msgid "Set minimum playback time:" +msgstr "Stel minimum speeltyd:" + +#: src/sid/xs_config.cc:96 +msgid "Subtunes" +msgstr "Subtunes" + +#: src/sid/xs_config.cc:97 +msgid "Enable subtunes" +msgstr "Aktiveer subtunes" + +#: src/sid/xs_config.cc:99 +msgid "Ignore subtunes shorter than:" +msgstr "Ignoreer subtunes korter as:" + +#: src/sid/xs_config.cc:105 +msgid "Note" +msgstr "Nota" + +#: src/silence-removal/silence-removal.cc:39 +msgid "Silence Removal" +msgstr "Stilte verwydering" + +#: src/silence-removal/silence-removal.cc:58 +msgid "" +"Silence Removal Plugin for Audacious\n" +"Copyright 2014 John Lindgren" +msgstr "" +"Stilte Verwydering Inprop vir Audacious\n" +"Kopiereg 2014 John Lindgren" + +#: src/silence-removal/silence-removal.cc:67 +msgid "Silence Removal" +msgstr "Stilte Verwydering" + +#: src/silence-removal/silence-removal.cc:68 +msgid "Threshold:" +msgstr "Drempel:" + +#: src/silence-removal/silence-removal.cc:70 +msgid "dB" +msgstr "dB" + +#: src/skins/actions.cc:45 src/skins-qt/actions.cc:43 +msgid "Repeat points cleared." +msgstr "Herhaal punte uitgevee." + +#: src/skins/actions.cc:60 src/skins-qt/actions.cc:58 +msgid "Repeat point A set." +msgstr "Herhaal punt A gestel." + +#: src/skins/actions.cc:65 src/skins-qt/actions.cc:63 +msgid "Repeat point B set." +msgstr "Herhaal punt B gestel." + +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 +msgid "Preamp" +msgstr "Voorversterker" + +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 +msgid "31 Hz" +msgstr "31 Hz" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "63 Hz" +msgstr "63 Hz" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "125 Hz" +msgstr "125 Hz" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "250 Hz" +msgstr "250 Hz" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "500 Hz" +msgstr "500 Hz" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "1 kHz" +msgstr "1 kHz" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "2 kHz" +msgstr "2 kHz" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "4 kHz" +msgstr "4 kHz" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "8 kHz" +msgstr "8 kHz" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "16 kHz" +msgstr "16 kHz" + +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 +msgid "Audacious Equalizer" +msgstr "Audacious-gelykmaker" + +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 +msgid "Recording on" +msgstr "Opname aan" + +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 +msgid "Recording off" +msgstr "Opname af" + +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 +#, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "Soek tot %d:%-2.2d / %d:%-2.2d" + +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 +#, c-format +msgid "Volume: %d%%" +msgstr "Volume: %d%%" + +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 +#, c-format +msgid "Balance: %d%% left" +msgstr "Balans: %d%% links" + +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 +msgid "Balance: center" +msgstr "Balans: middel" + +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 +#, c-format +msgid "Balance: %d%% right" +msgstr "Balans: %d%% regs" + +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 +msgid "Options Menu" +msgstr "Opsieskieslys" + +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 +msgid "Disable 'Always On Top'" +msgstr "Deaktiveer 'Altyd bo-op'" + +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 +msgid "Enable 'Always On Top'" +msgstr "Aktiveer 'Altyd bo-op'" + +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 +msgid "File Info Box" +msgstr "Lêer inligtingskassie" + +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 +#: src/skins-qt/menus.cc:142 +msgid "Double Size" +msgstr "Dubbel grootte" + +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 +msgid "Visualizations" +msgstr "Visualisasies" + +#: src/skins/menus.cc:74 src/skins-qt/menus.cc:64 +msgid "Volume Up" +msgstr "Volume Op" + +#: src/skins/menus.cc:75 src/skins-qt/menus.cc:65 +msgid "Volume Down" +msgstr "Volume Af" + +#: src/skins/menus.cc:77 src/skins-qt/menus.cc:67 +msgid "Effects ..." +msgstr "Effekte ..." + +#: src/skins/menus.cc:84 src/skins-qt/menus.cc:74 +msgid "Open Files ..." +msgstr "Maak lêers oop ..." + +#: src/skins/menus.cc:85 src/skins-qt/menus.cc:76 +msgid "Open URL ..." +msgstr "Maak URL oop ..." + +#: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 +msgid "Playlist" +msgstr "Snitlys" + +#: src/skins/menus.cc:90 src/skins-qt/menus.cc:81 +msgid "Output" +msgstr "Uitset" + +#: src/skins/menus.cc:91 src/skins-qt/menus.cc:82 +msgid "View" +msgstr "Aansig" + +#: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 +#: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 +msgid "Services" +msgstr "Dienste" + +#: src/skins/menus.cc:95 src/skins-qt/menus.cc:86 +msgid "About ..." +msgstr "Aangaande ..." + +#: src/skins/menus.cc:96 src/skins-qt/menus.cc:87 +msgid "Settings ..." +msgstr "Stellings ..." + +#: src/skins/menus.cc:97 src/skins-qt/menus.cc:88 +msgid "Quit" +msgstr "Verlaat" + +#: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 +#: src/skins-qt/menus.cc:229 +msgid "Song Info ..." +msgstr "Lied Info ..." + +#: src/skins/menus.cc:105 src/skins-qt/menus.cc:96 +msgid "Shuffle by Album" +msgstr "Skommel volgens Album" + +#: src/skins/menus.cc:106 src/skins-qt/menus.cc:97 +msgid "No Playlist Advance" +msgstr "Geen Snitlys Bevordering nie" + +#: src/skins/menus.cc:117 src/skins-qt/menus.cc:108 +msgid "Set A-B Repeat" +msgstr "Stel A-B Herhaal" + +#: src/skins/menus.cc:118 src/skins-qt/menus.cc:109 +msgid "Clear A-B Repeat" +msgstr "Verwyder A-B Herhaal" + +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 +msgid "Jump to Song ..." +msgstr "Spring tot Lied ..." + +#: src/skins/menus.cc:121 src/skins-qt/menus.cc:113 +msgid "Jump to Time ..." +msgstr "Spring tot Tyd ..." + +#: src/skins/menus.cc:125 src/skins-qt/menus.cc:118 +msgid "Play/Resume" +msgstr "Speel/Hervat" + +#: src/skins/menus.cc:127 src/skins-qt/menus.cc:120 +msgid "New Playlist" +msgstr "Nuwe Snitlys" + +#: src/skins/menus.cc:128 src/skins-qt/menus.cc:121 +msgid "Rename Playlist ..." +msgstr "Hernoem Snitlys ..." + +#: src/skins/menus.cc:129 src/skins-qt/menus.cc:122 +msgid "Remove Playlist" +msgstr "Verwyder Snitlys" + +#: src/skins/menus.cc:131 src/skins-qt/menus.cc:124 +msgid "Previous Playlist" +msgstr "Vorige Snitlys" + +#: src/skins/menus.cc:132 src/skins-qt/menus.cc:125 +msgid "Next Playlist" +msgstr "Volgende Snitlys" + +#: src/skins/menus.cc:134 src/skins-qt/menus.cc:127 +msgid "Import Playlist ..." +msgstr "Voer Snitlys in ..." + +#: src/skins/menus.cc:135 src/skins-qt/menus.cc:128 +msgid "Export Playlist ..." +msgstr "Voer Snitlys uit ..." + +#: src/skins/menus.cc:137 src/skins-qt/menus.cc:130 +msgid "Playlist Manager ..." +msgstr "Snitlys Bestuurder ..." + +#: src/skins/menus.cc:138 src/skins-qt/menus.cc:131 +msgid "Queue Manager ..." +msgstr "Tou Bestuurder ..." + +#: src/skins/menus.cc:140 src/skins-qt/menus.cc:133 +msgid "Refresh Playlist" +msgstr "Verfris Snitlys" + +#: src/skins/menus.cc:144 src/skins-qt/menus.cc:137 +msgid "Show Playlist Editor" +msgstr "Wys Snitlys Redigeerder" + +#: src/skins/menus.cc:145 src/skins-qt/menus.cc:138 +msgid "Show Equalizer" +msgstr "Wys Gelykmaker" + +#: src/skins/menus.cc:147 src/skins-qt/menus.cc:140 +msgid "Show Remaining Time" +msgstr "Wys Oorblywende Tyd" + +#: src/skins/menus.cc:150 src/skins-qt/menus.cc:143 +msgid "Always on Top" +msgstr "Altyd Bo-op" + +#: src/skins/menus.cc:151 src/skins-qt/menus.cc:145 +msgid "On All Workspaces" +msgstr "Op Alle Werkskerms" + +#: src/skins/menus.cc:153 src/skins-qt/menus.cc:148 +msgid "Roll Up Player" +msgstr "Rol Speler Op" + +#: src/skins/menus.cc:154 src/skins-qt/menus.cc:149 +msgid "Roll Up Playlist Editor" +msgstr "Rol Snitlys Redigeerder Op" + +#: src/skins/menus.cc:155 src/skins-qt/menus.cc:150 +msgid "Roll Up Equalizer" +msgstr "Rol Gelykmaker Op" + +#: src/skins/menus.cc:163 src/skins-qt/menus.cc:158 +msgid "Add URL ..." +msgstr "Voeg URL by ..." + +#: src/skins/menus.cc:164 src/skins-qt/menus.cc:160 +msgid "Add Files ..." +msgstr "Voeg Lêers by ..." + +#: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 +msgid "By Title" +msgstr "Volgens Titel" + +#: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 +msgid "By File Name" +msgstr "Volgens Lêer Naam" + +#: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 +msgid "By File Path" +msgstr "Volgens Lêer Pad" + +#: src/skins/menus.cc:176 src/skins-qt/menus.cc:172 +msgid "Remove All" +msgstr "Verwyder Alles" + +#: src/skins/menus.cc:177 src/skins-qt/menus.cc:173 +msgid "Clear Queue" +msgstr "Vee tou uit" + +#: src/skins/menus.cc:179 src/skins-qt/menus.cc:175 +msgid "Remove Unavailable Files" +msgstr "Verwyder onbeskikbare lêers" + +#: src/skins/menus.cc:180 src/skins-qt/menus.cc:176 +msgid "Remove Duplicates" +msgstr "Verwyder Duplikate" + +#: src/skins/menus.cc:182 src/skins-qt/menus.cc:178 +msgid "Remove Unselected" +msgstr "Verwyder Ongekiesdes" + +#: src/skins/menus.cc:183 src/skins-qt/menus.cc:179 +msgid "Remove Selected" +msgstr "Verwyder Gekiesdes" + +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 +msgid "Search and Select" +msgstr "Soek en kies" + +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 +msgid "Invert Selection" +msgstr "Keer Seleksie Om" + +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 +msgid "Select None" +msgstr "Kies Geen" + +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 +msgid "Select All" +msgstr "Kies Alles" + +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 +msgid "By Track Number" +msgstr "Volgens Snit Nommer" + +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 +msgid "By Artist" +msgstr "Volgens Kunstenaar" + +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 +msgid "By Album" +msgstr "Volgens Album" + +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 +msgid "By Album Artist" +msgstr "Volgens Album Kunstenaar" + +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 +msgid "By Release Date" +msgstr "Volgens Vrystellingsdatum" + +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 +msgid "By Genre" +msgstr "Volgens Genre" + +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 +msgid "By Length" +msgstr "Volgens Lengte" + +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 +msgid "By Custom Title" +msgstr "Volgens Pasgemaakte Titel" + +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 +msgid "By Comment" +msgstr "Volgens Kommentaar" + +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 +msgid "Randomize List" +msgstr "Maak Lys Ewekansig" + +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 +msgid "Reverse List" +msgstr "Keer Lys Om" + +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 +msgid "Sort Selected" +msgstr "Sorteer Gekiesdes" + +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 +msgid "Sort List" +msgstr "Sorteer lys" + +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 +msgid "Open Containing Folder" +msgstr "Maak Bevat-vouer oop" + +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 +msgid "Cut" +msgstr "Sny" + +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 +msgid "Copy" +msgstr "Kopieer" + +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 +msgid "Paste" +msgstr "Plak" + +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 +msgid "Paste at End" +msgstr "Plak op Einde" + +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 +msgid "Queue/Unqueue" +msgstr "Sit in Tou/Haal uit Tou" + +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 +#, c-format +msgid "%s (%d of %d)" +msgstr "%s (%d of %d)" + +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 +msgid "Audacious Playlist Editor" +msgstr "Audacious Snitlys Redigeerder" + +#: src/skins/plugin.cc:49 src/skins-qt/plugin.cc:64 +msgid "Winamp Classic Interface" +msgstr "Winamp Klassieke Koppelvlak" + +#: src/skins-qt/menus.cc:75 +msgid "Open Folder ..." +msgstr "Maak Vouer Oop ..." + +#: src/skins-qt/menus.cc:159 +msgid "Add Folder ..." +msgstr "Voeg Vouer By ..." + +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Soek inskrywings in aktiewe snitlys" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Kies inskrywings in snitlys deur een of meer velde in te vul. Velde gebruik " +"gewone uitdrukkings sintaksis, hoofletter-onsensitief. As jy nie weet hoe " +"gereelde uitdrukkings werk nie, voeg eenvoudig dan 'n letterlike gedeelte in " +"van waarna jy soek." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Titel:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Album:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Kunstenaar:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Lêer Naam:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Vee vorige keuse uit voordat jy soek" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Wissel outomaties tou vir bypassende inskrywings" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Skep 'n nuwe snitlys met bypassende inskrywings" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Soek" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 +msgid "Player:" +msgstr "Speler:" + +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 +msgid "Select main player window font:" +msgstr "Kies hoof speler venster lettertipe:" + +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 +msgid "Playlist:" +msgstr "Snitlys:" + +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 +msgid "Select playlist font:" +msgstr "Kies snitlys lettertipe:" + +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 +msgid "Skin" +msgstr "Vel" + +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "Vertoon aktiewe titelbalk wanneer enige venster gefokus is" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 +msgid "Fonts" +msgstr "Lettertipes" + +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "Gebruik bitmap-lettertipes (ondersteun slegs ASCII)" + +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 +msgid "Scroll song title" +msgstr "Rollees liedjie titel" + +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 +msgid "Scroll song title in both directions" +msgstr "Rollees liedjie titel in beide rigtings" + +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 +msgid "Analyzer" +msgstr "Ontleder" + +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 +msgid "Scope" +msgstr "Skoop" + +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 +msgid "Voiceprint / VU meter" +msgstr "Stemafdruk / VU meter" + +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 +msgid "Off" +msgstr "Af" + +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 +#: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 +msgid "Normal" +msgstr "Normaal" + +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 +#: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 +msgid "Fire" +msgstr "Vuur" + +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 +msgid "Vertical lines" +msgstr "Vertikale lyne" + +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 +msgid "Lines" +msgstr "Lyne" + +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 +msgid "Bars" +msgstr "Balke" + +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 +msgid "Slowest" +msgstr "Stadigste" + +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 +msgid "Slow" +msgstr "Stadig" + +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 +#: src/soxr/sox-resampler.cc:180 +msgid "Medium" +msgstr "Medium" + +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 +msgid "Fast" +msgstr "Vinnig" + +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 +msgid "Fastest" +msgstr "Vinnigste" + +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 +msgid "Dots" +msgstr "Kolletjies" + +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 +msgid "Line" +msgstr "Lyne" + +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 +msgid "Solid" +msgstr "Solied" + +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 +msgid "Ice" +msgstr "Ys" + +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 +msgid "Smooth" +msgstr "Glad" + +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 +msgid "Coloring:" +msgstr "Kleur:" + +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 +msgid "Style:" +msgstr "Style:" + +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 +msgid "Falloff:" +msgstr "Daling:" + +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 +msgid "Peak falloff:" +msgstr "Piek daling:" + +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 +msgid "Scope Style:" +msgstr "Skoop styl:" + +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 +msgid "Voiceprint Coloring:" +msgstr "Stemafdruk Kleur:" + +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 +msgid "VU Meter Style:" +msgstr "VU Meter Styl:" + +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 +msgid "Type" +msgstr "Tipe" + +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 +msgid "Visualization type:" +msgstr "Visualisering tipe:" + +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 +msgid "Analyzer" +msgstr "Ontleder" + +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 +msgid "Show peaks" +msgstr "Wys pieke:" + +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 +msgid "Visualization" +msgstr "Visualisering" + +#: src/skins-qt/skinselector.cc:98 src/skins/skinselector.cc:111 +msgid "Archived Winamp 2.x skin" +msgstr "Geargiveer Winamp 2.x vel" + +#: src/skins-qt/skinselector.cc:102 src/skins/skinselector.cc:115 +msgid "Unarchived Winamp 2.x skin" +msgstr "Gedeargiveerde Winamp 2.x vel" + +#: src/sndfile/plugin.cc:38 +msgid "Sndfile Plugin" +msgstr "Sndfile Inprop" + +#: src/sndfile/plugin.cc:372 +msgid "" +"Based on the xmms_sndfile plugin:\n" +"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" +"\n" +"Adapted for Audacious by Tony Vroon \n" +"\n" +"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.\n" +"\n" +"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.\n" +"\n" +"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." +msgstr "" +"Gebaseer op die xmms_sndfile-inprop:\n" +"Kopiereg (C) 2000, 2002 Erik de Castro Lopo\n" +"\n" +"Aangepas vir Audacious deur Tony Vroon \n" +"\n" +"Hierdie program is gratis sagteware; jy kan dit herverdeel en/of wysig onder " +"die bepalings van die GNU General Public License soos gepubliseer deur die " +"Free Software Foundation; óf weergawe 2 van die lisensie, óf (na jou keuse) " +"enige latere weergawe.\n" +"\n" +"Hierdie program word versprei in die hoop dat dit nuttig sal wees, maar " +"SONDER ENIGE WAARBORG; selfs sonder die stilswyende waarborg van " +"VERHANDELBAARHEID of GESKIKTHEID VIR 'N SPESIFIEKE DOEL. Sien die GNU " +"General Public License vir meer besonderhede.\n" +"\n" +"Jy moes 'n afskrif van die GNU General Public License saam met hierdie " +"program ontvang het; indien nie, skryf aan die Free Software Foundation, " +"Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, VSA." + +#: src/sndio/sndio.cc:43 +msgid "Sndio Output" +msgstr "Sndio Uitset" + +#: src/sndio/sndio.cc:98 +msgid "Device (blank for default):" +msgstr "Toestel (leeg vir verstek):" + +#: src/sndio/sndio.cc:100 +msgid "Save and restore volume:" +msgstr "Stoor en herstel volume:" + +#: src/sndio/sndio.cc:181 +#, c-format +msgid "Sndio error: Unsupported audio format (%d)" +msgstr "Sndio-fout: ongesteunde oudioformaat (%d)" + +#: src/sndio/sndio.cc:192 +msgid "Sndio error: sio_open() failed" +msgstr "Sndio-fout: sio_open() het misluk" + +#: src/sndio/sndio.cc:221 +msgid "Sndio error: sio_setpar() failed" +msgstr "Sndio-fout: sio_setpar() het misluk" + +#: src/sndio/sndio.cc:233 +msgid "Sndio error: sio_start() failed" +msgstr "Sndio-fout: sio_start() het misluk" + +#: src/songchange/song_change.cc:30 +msgid "Song Change" +msgstr "Lied Verander" + +#: src/songchange/song_change.cc:245 +msgid "Commands" +msgstr "Bevele" + +#: src/songchange/song_change.cc:247 +msgid "Command to run when starting a new song:" +msgstr "Bevel om te hardloop wanneer 'n nuwe lied begin:" + +#: src/songchange/song_change.cc:250 +msgid "Command to run at the end of a song:" +msgstr "Bevel om te hardloop na die einde van 'n lied:" + +#: src/songchange/song_change.cc:253 +msgid "Command to run at the end of the playlist:" +msgstr "Bevel om te hardloop na die einde van die snitlys:" + +#: src/songchange/song_change.cc:256 +msgid "Command to run when song title changes (for network streams):" +msgstr "" +"Bevel om uit te voer wanneer liedjietitel verander (vir netwerkstrome):" + +#: src/songchange/song_change.cc:259 +msgid "" +"You can use the following format codes, which will be replaced before " +"running the command (not all are useful for the end-of-playlist command):" +msgstr "" +"Jy kan die volgende formaatkodes gebruik, wat vervang sal word voordat die " +"bevel uitgevoer word (nie almal is nuttig vir die einde-van-snitlys-opdrag " +"nie):" + +#: src/songchange/song_change.cc:262 +msgid "" +"%a: Artist\n" +"%b: Album\n" +"%c: Number of channels\n" +"%f: File name (full path)\n" +"%F: Frequency (Hertz)\n" +"%l: Length (milliseconds)\n" +"%n or %s: Formatted title (see playlist settings)\n" +"%p: Currently playing (1 or 0)\n" +"%r: Rate (bits per second)\n" +"%t: Playlist position\n" +"%T: Title (unformatted)" +msgstr "" +"%a: Kunstenaar\n" +"%b: Album\n" +"%c: Aantal kanale\n" +"%f: Lêernaam (volledige pad)\n" +"%F: Frekwensie (Hertz)\n" +"%l: Lengte (millisekondes)\n" +"%n of %s: Geformateerde titel (sien snitlys instellings)\n" +"%p: Speel tans (1 of 0)\n" +"%r: Koers (bisse per sekonde)\n" +"%t: Snitlys Posisie\n" +"%T: Titel (ongeformateer)" + +#: src/songchange/song_change.cc:273 +msgid "" +"Parameters passed to the shell should be enclosed in quotation marks. " +"Unquoted parameters may lead to unexpected results." +msgstr "" +"Parameters wat na die dop oorgedra word, moet tussen aanhalingstekens " +"ingesluit word. Onaangehaalde parameters kan tot onverwagte resultate lei." + +#: src/song-info-qt/song-info.cc:30 +msgid "Song Info" +msgstr "Lied Info" + +#: src/soxr/sox-resampler.cc:44 +msgid "SoX Resampler" +msgstr "SoX Hermonster" + +#: src/soxr/sox-resampler.cc:172 +msgid "" +"SoX Resampler Plugin for Audacious\n" +"Copyright 2013 Michał Lipski\n" +"\n" +"Based on Sample Rate Converter Plugin:\n" +"Copyright 2010-2012 John Lindgren" +msgstr "" +"SoX Hermonster Inprop vir Audacious\n" +"Kopiereg 2013 Michał Lipski\n" +"\n" +"Gebaseer op Sample Rate Converter Plugin:\n" +"Kopiereg 2010-2012 John Lindgren" + +#: src/soxr/sox-resampler.cc:178 +msgid "Quick" +msgstr "Vinnig" + +#: src/soxr/sox-resampler.cc:179 +msgid "Low" +msgstr "Laag" + +#: src/soxr/sox-resampler.cc:181 +msgid "High" +msgstr "Hoog" + +#: src/soxr/sox-resampler.cc:182 +msgid "Very High" +msgstr "Baie Hoog" + +#: src/soxr/sox-resampler.cc:183 +msgid "Ultra High" +msgstr "Ultra Hoog" + +#: src/soxr/sox-resampler.cc:187 +msgid "Minimum" +msgstr "Minimum" + +#: src/soxr/sox-resampler.cc:188 +msgid "Intermediate" +msgstr "Intermediêr" + +#: src/soxr/sox-resampler.cc:193 +msgid "Quality:" +msgstr "Kwaliteit:" + +#: src/soxr/sox-resampler.cc:196 +msgid "Phase:" +msgstr "Fase:" + +#: src/soxr/sox-resampler.cc:200 +msgid "Allow aliasing" +msgstr "Laat aliasering toe" + +#: src/soxr/sox-resampler.cc:202 +msgid "Use steep filter" +msgstr "Gebruik steil filtreerder" + +#: src/speedpitch/speed-pitch.cc:54 +msgid "Speed and Pitch" +msgstr "Spoed en Toonhoogte" + +#: src/speedpitch/speed-pitch.cc:247 +msgid "Speed" +msgstr "Spoed" + +#: src/speedpitch/speed-pitch.cc:248 +msgid "Decouple from pitch" +msgstr "Ontkoppel van Toonhoogte" + +#: src/speedpitch/speed-pitch.cc:250 src/speedpitch/speed-pitch.cc:258 +msgid "Multiplier:" +msgstr "Vermenigvuldiger:" + +#: src/speedpitch/speed-pitch.cc:254 +msgid "Pitch" +msgstr "Toonhoogte" + +#: src/statusicon-qt/statusicon.cc:44 src/statusicon/statusicon.cc:47 +msgid "Status Icon" +msgstr "Status Ikoon" + +#: src/statusicon-qt/statusicon.cc:65 +msgid "" +"Status Icon Plugin (partial port for Qt interface)\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 Michał Lipski \n" +"Copyright 2015 Eugene Paskevich \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager." +msgstr "" +"Status Ikoon Inprop (gedeeltelike poort vir Qt-koppelvlak)\n" +"\n" +"Kopiereg 2005-2007 Giacomo Lozito \n" +"Kopiereg 2010 Michał Lipski \n" +"Kopiereg 2015 Eugene Paskevich \n" +"\n" +"Hierdie inprop verskaf 'n status ikoon, geplaas in\n" +"die sisteem laai area van die venster bestuurder." + +#: src/statusicon-qt/statusicon.cc:86 src/statusicon/statusicon.cc:380 +msgid "Mouse Scroll Action" +msgstr "Muis Rollees Aksie" + +#: src/statusicon-qt/statusicon.cc:87 src/statusicon/statusicon.cc:381 +msgid "Change volume" +msgstr "Verander volume" + +#: src/statusicon-qt/statusicon.cc:90 src/statusicon/statusicon.cc:384 +msgid "Change playing song" +msgstr "Verander spelende lied" + +#: src/statusicon-qt/statusicon.cc:93 src/statusicon/statusicon.cc:387 +msgid "Other Settings" +msgstr "Ander Stellings" + +#: src/statusicon-qt/statusicon.cc:94 src/statusicon/statusicon.cc:388 +msgid "Disable the popup window" +msgstr "Deaktiveer die opspring venster" + +#: src/statusicon-qt/statusicon.cc:96 src/statusicon/statusicon.cc:390 +msgid "Close to the system tray" +msgstr "Maak toe na die sisteem laai" + +#: src/statusicon-qt/statusicon.cc:98 src/statusicon/statusicon.cc:392 +msgid "Advance in playlist when scrolling upward" +msgstr "Bevorder die snitlys wanneer jy rollees opwaarts" + +#: src/statusicon-qt/statusicon.cc:113 src/statusicon/statusicon.cc:283 +msgid "Se_ttings ..." +msgstr "S_tellings ..." + +#: src/statusicon/statusicon.cc:373 +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 Michał Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager." +msgstr "" +"Status-ikoon-inprop\n" +"\n" +"Kopiereg 2005-2007 Giacomo Lozito \n" +"Kopiereg 2010 Michał Lipski \n" +"\n" +"Hierdie inprop verskaf 'n statusikoon, geplaas in\n" +"die system tray area van die vensterbestuurder." + +#: src/stereo_plugin/stereo.cc:19 +msgid "Extra Stereo" +msgstr "Ekstra Stereo" + +#: src/stereo_plugin/stereo.cc:36 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin, 1999" +msgstr "" +"Ekstra Stereo Inprop\n" +"\n" +"Deur Johan Levin, 1999" + +#: src/stereo_plugin/stereo.cc:44 +msgid "Extra Stereo" +msgstr "Ekstra Stereo" + +#: src/streamtuner/icecast-model.cc:126 src/streamtuner/shoutcast-model.cc:131 +msgid "Type" +msgstr "Tipe" + +#: src/streamtuner/icecast-model.cc:132 +msgid "Current Song" +msgstr "Huidige Lied" + +#: src/streamtuner/icecast-model.cc:164 +msgid "Other" +msgstr "Ander" + +#: src/streamtuner/ihr-model.cc:63 +msgid "Market" +msgstr "Mark" + +#: src/streamtuner/ihr-model.cc:156 +msgid "Call Letters" +msgstr "Roep Letters" + +#: src/streamtuner/ihr-model.cc:162 +msgid "Description" +msgstr "Beskrywing" + +#: src/streamtuner/shoutcast-model.cc:128 +msgid "Listeners" +msgstr "Luisteraars" + +#: src/streamtuner/shoutcast-model.cc:188 +msgid "Top 500 Stations" +msgstr "Top 500 Stasies" + +#: src/streamtuner/shoutcast-model.cc:189 +msgid "Alternative" +msgstr "Alternatief" + +#: src/streamtuner/shoutcast-model.cc:190 +msgid "Blues" +msgstr "Blues" + +#: src/streamtuner/shoutcast-model.cc:191 +msgid "Classical" +msgstr "Klassieke" + +#: src/streamtuner/shoutcast-model.cc:192 +msgid "Country" +msgstr "Country" + +#: src/streamtuner/shoutcast-model.cc:193 +msgid "Decades" +msgstr "Dekades" + +#: src/streamtuner/shoutcast-model.cc:194 +msgid "Easy Listening" +msgstr "Gemaklike Luister" + +#: src/streamtuner/shoutcast-model.cc:195 +msgid "Electronic" +msgstr "Elektronies" + +#: src/streamtuner/shoutcast-model.cc:196 +msgid "Folk" +msgstr "Volk" + +#: src/streamtuner/shoutcast-model.cc:197 +msgid "Inspirational" +msgstr "Inspirerend" + +#: src/streamtuner/shoutcast-model.cc:198 +msgid "International" +msgstr "Internasionaal" + +#: src/streamtuner/shoutcast-model.cc:199 +msgid "Jazz" +msgstr "Jazz" + +#: src/streamtuner/shoutcast-model.cc:200 +msgid "Latin" +msgstr "Latyns" + +#: src/streamtuner/shoutcast-model.cc:201 +msgid "Metal" +msgstr "Metal" + +#: src/streamtuner/shoutcast-model.cc:203 +msgid "New Age" +msgstr "Nuwe Era" + +#: src/streamtuner/shoutcast-model.cc:204 +msgid "Pop" +msgstr "Pop" + +#: src/streamtuner/shoutcast-model.cc:205 +msgid "Public Radio" +msgstr "Publieke Radio" + +#: src/streamtuner/shoutcast-model.cc:206 +msgid "R&B and Urban" +msgstr "R&B en Urban" + +#: src/streamtuner/shoutcast-model.cc:207 +msgid "Rap" +msgstr "Rap" + +#: src/streamtuner/shoutcast-model.cc:208 +msgid "Reggae" +msgstr "Reggae" + +#: src/streamtuner/shoutcast-model.cc:209 +msgid "Rock" +msgstr "Rock" + +#: src/streamtuner/shoutcast-model.cc:210 +msgid "Seasonal and Holiday" +msgstr "Seisoenale en Vakansie" + +#: src/streamtuner/shoutcast-model.cc:211 +msgid "Soundtracks" +msgstr "Klankbane" + +#: src/streamtuner/shoutcast-model.cc:212 +msgid "Talk" +msgstr "Praat" + +#: src/streamtuner/shoutcast-model.cc:213 +msgid "Themes" +msgstr "Temas" + +#: src/streamtuner/streamtuner.cc:59 +msgid "Shoutcast" +msgstr "Shoutcast" + +#: src/streamtuner/streamtuner.cc:60 +msgid "Icecast" +msgstr "Icecast" + +#: src/streamtuner/streamtuner.cc:71 +msgid "Stream Tuner" +msgstr "Stroom Stemmer" + +#: src/tonegen/tonegen.cc:45 +msgid "Tone Generator" +msgstr "Toongenerator" + +#: src/tonegen/tonegen.cc:92 +#, c-format +msgid "%s %.1f Hz" +msgstr "%s %.1f Hz" + +#: src/tonegen/tonegen.cc:92 +msgid "Tone Generator: " +msgstr "Toongenerator:" + +#: src/tonegen/tonegen.cc:161 +msgid "" +"Sine tone generator by Håvard Kvålen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" +msgstr "" +"Sinustoongenerator deur Håvard Kvålen \n" +"Gewysig deur Daniel J. Peng \n" +"\n" +"Om dit te gebruik, voeg 'n URL by: tone://frekwensie1;frekwensie2;" +"frekwensie3;...\n" +"bv. tone://2000;2005 om 'n 2000 Hz-toon en 'n 2005 Hz-toon te speel" + +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Verdere boodskappe is versteek.)" + +#: src/ui-common/dialogs-qt.cc:52 +msgid "Working ..." +msgstr "In Werking ..." + +#: src/ui-common/dialogs-qt.cc:73 +msgid "Information" +msgstr "Informasie" + +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "Dit blyk dat %s nie 'n geldige vouer is nie." + +#: src/voice_removal/voice_removal.cc:28 +msgid "Voice Removal" +msgstr "Stem Verwydering" + +#: src/vorbis/vorbis.cc:431 +msgid "" +"Audacious Ogg Vorbis Decoder\n" +"\n" +"Based on the Xiph.org Foundation's Ogg Vorbis Plugin:\n" +"http://www.xiph.org/\n" +"\n" +"Original code by:\n" +"Tony Arcieri \n" +"\n" +"Contributions from:\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Håvard Kvålen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin " +msgstr "" +"Audacious Ogg Vorbis Dekodeerder\n" +"\n" +"Gebaseer op die Xiph.org-stigting se Ogg Vorbis-inprop:\n" +"http://www.xiph.org/\n" +"\n" +"Oorspronklike kode deur:\n" +"Tony Arcieri \n" +"\n" +"Bydraes van:\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Håvard Kvålen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin " + +#: src/vorbis/vorbis.h:18 +msgid "Ogg Vorbis Decoder" +msgstr "Ogg Vorbis Dekodeerder" + +#: src/vtx/info.cc:24 +#, c-format +msgid "Details about %s" +msgstr "Besonderhede oor %s" + +#: src/vtx/info.cc:26 +msgid "" +"Title: %t\n" +"Author: %a\n" +"From: %f\n" +"Tracker: %T\n" +"Comment: %C\n" +"Chip type: %c\n" +"Stereo: %s\n" +"Loop: %l\n" +"Chip freq: %F\n" +"Player Freq: %P\n" +"Year: %y" +msgstr "" +"Titel: %t\n" +"Skrywer: %a\n" +"Van: %f\n" +"Spoor: %T\n" +"Kommentaar: %C\n" +"Chip tipe: %c\n" +"Stereo: %s\n" +"Lus: %l\n" +"Chip frekwensie: %F\n" +"Speler frekwensie: %P\n" +"Jaar: %y" + +#: src/vtx/vtx.cc:38 +msgid "VTX Decoder" +msgstr "VTX Dekodeerder" + +#: src/vtx/vtx.cc:178 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Based on in_vtx.dll by Roman Sherbakov \n" +"Audacious plugin by Pavel Vymetalek " +msgstr "" +"Vortex-lêerformaatspeler deur Sashnov Alexander \n" +"Gebaseer op in_vtx.dll deur Roman Sherbakov \n" +"Audacious plugin deur Pavel Vymetalek " + +#: src/vumeter-qt/vumeter_qt.cc:31 +msgid "" +"VU Meter Plugin for Audacious\n" +"Copyright 2017-2019 Marc Sánchez Fauste" +msgstr "" +"VU Meter-inprop vir Audacious\n" +"Kopiereg 2017-2019 Marc Sánchez Faustea" + +#: src/vumeter-qt/vumeter_qt.cc:35 +msgid "VU Meter Settings" +msgstr "VU Meter Stellings" + +#: src/vumeter-qt/vumeter_qt.cc:37 +msgid "Peak hold time:" +msgstr "Piek hou tyd:" + +#: src/vumeter-qt/vumeter_qt.cc:42 +msgid "Fall-off time:" +msgstr "Daling tyd:" + +#: src/vumeter-qt/vumeter_qt.cc:44 +msgid "dB/second" +msgstr "dB/sekonde" + +#: src/vumeter-qt/vumeter_qt.cc:46 +msgid "Display legend" +msgstr "Wys legende" + +#: src/vumeter-qt/vumeter_qt.h:37 +msgid "VU Meter" +msgstr "VU Meter" + +#: src/waveout/waveout.cc:43 +msgid "Win32 waveOut" +msgstr "Win32 waveOut" + +#: src/waveout/waveout.cc:69 +msgid "" +"Win32 waveOut Plugin for Audacious\n" +"Copyright 2016 John Lindgren" +msgstr "" +"Win32 waveOut-inprop vir Audacious\n" +"Kopiereg 2016 John Lindgren" + +#: src/wavpack/wavpack.cc:25 +msgid "WavPack Decoder" +msgstr "WavPack Dekodeerder" + +#: src/wavpack/wavpack.cc:217 +msgid "lossy (hybrid)" +msgstr "verliesagtig (hibriede)" + +#: src/wavpack/wavpack.cc:219 +msgid "lossy" +msgstr "verliesagtig" + +#: src/wavpack/wavpack.cc:259 +msgid "" +"Copyright 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan." +msgstr "" +"Kopiereg 2006 William Pitcock \n" +"\n" +"Sommige van die inpropkode was deur Miles Egan." + +#: src/xsf/plugin.cc:74 +msgid "2SF Decoder" +msgstr "2SF Dekodeerder" + +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Cosinus" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Skerp" + +#: src/xsf/plugin.cc:443 +msgid "XSF Configuration" +msgstr "XSF Konfigurasie" + +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Verstek vervaag tyd:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Interpolasiemodus:" + +#: src/xspf/xspf.cc:95 +msgid "XML Shareable Playlists (XSPF)" +msgstr "XML deelbare snitlyste (XSPF)" + +#~ msgid "Sample rate" +#~ msgstr "Monstertempo" diff -Nru audacious-plugins-4.1/po/ar.po audacious-plugins-4.3.1/po/ar.po --- audacious-plugins-4.1/po/ar.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/ar.po 2023-04-29 20:17:32.000000000 +0000 @@ -5,14 +5,14 @@ # Translators: # abouzakaria kov , 2016 # Rached Noureddine , 2019 -# Riyadh Talal , 2020 +# Riyadh Talal , 2020,2022 msgid "" msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-31 14:24+0000\n" -"Last-Translator: Riyadh Talal \n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Riyadh Talal , 2020,2022\n" "Language-Team: Arabic (http://www.transifex.com/audacious/audacious/language/" "ar/)\n" "Language: ar\n" @@ -31,21 +31,23 @@ msgstr "مكتبة AdPlug (مشغّل AdLib)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "متسلسلة" #: src/adplug/adplug-xmms.cc:349 src/sid/xs_config.cc:61 msgid "Output" -msgstr "مخرج" +msgstr "المُخرَج" #: src/adplug/adplug-xmms.cc:350 msgid "OPL Emulator:" msgstr "محاكي OPL:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "معدَّل العيّنة:" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "معدل العينة:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -61,7 +63,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "متفرقات" @@ -69,259 +71,6 @@ msgid "Repeat song in endless loop" msgstr "كرر المقطوعة بحلقة غير منتهية" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "منبّه" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "ضبط المنبه ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"ملحقة يمكن استخدامها لبدء التشغيل في وقت معين.\n" -"\n" -"كتبها أصلاً Adam Feakin و Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"الوقت\n" -"تنبيه في:\n" -" وقت حلول التنبيه.\n" -"\n" -" الهدوء بعد:\n" -" أوقف المنبه بعد هذا المقدار من الوقت.\n" -" (إذا لم يغلق حوار الإيقاظ)\n" -"\n" -"\n" -"الأيام\n" -" اليوم:\n" -" حدد أيام تنشيط التنبيه.\n" -"\n" -" الوقت:\n" -" اختر وقت التنبيه لكل يوم،\n" -" او حدد زر التبديل لاستخدام الوقت\n" -" المبدئي.\n" -"\n" -"\n" -"العلوّ\n" -" إبهات:\n" -" زد خمود العلوّ لغاية العلوّ المطلوب\n" -" بهذا المقدار من الوقت.\n" -"\n" -" بداية في:\n" -" ابدأ الإبهات من هذا العلوّ.\n" -"\n" -" النهاية:\n" -"العلوّ الذي يتوقف عنده الإبهات. إذا كان\n" -"وقت الإبهات 0 فاجعل العلوّ بهذا المقدار وابدأ\n" -"التشغيل.\n" -"\n" -"\n" -"خيارات:\n" -" أوامر إضافية:\n" -" شغّل هذا الأمر في وقت التنبيه.\n" -"\n" -" قائمة التشغيل:\n" -"حمّل قائمة التشغيل هذه. إذا لم تحدد أية\n" -"قائمة، فتُستخدم الحالية.\n" -"يمكن أن تُدخل هنا رابط\n" -"دفق mp3/ogg أيضاً.\n" -"\n" -" تذكير:\n" -"إعرض تذكيراً عندمايتنحّى المنبّه.\n" -"اكتب التذكير في حقل الإدخال ومكّن\n" -"مربع التأشير إذا اردته أن يظهر." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "هذا هو نداء إيقاظك." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "تذكيرك لهذا اليوم هو ..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "التذكير" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "الإثنين" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "الثلاثاء" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "الأربعاء" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "الخميس" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "الجمعة" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "السبت" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "الأحد" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "وقت" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "التنبيه في (الافتراضي):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "س" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "اصمت بعد:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "ساعات" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "دقائق" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "اختر الأيام التي يأتي فيها التنبيه" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "يوم" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "افتراضي" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "أيام" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "تضاؤل" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "ثواني" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "العلوّ" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "إبدأ في" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "نهائي" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "حالي" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "أمر اضافي" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "تمكين" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "قائمة التشغيل (اختياري)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "حدد قائمة التشغيل" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "خيارات" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "ماذا تعني هذه الخيارات؟" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "مساعدة" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "لوحة الألبوم" @@ -470,87 +219,83 @@ msgid "Synthesizer" msgstr "المزج" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "معدل العينة:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - حدد ملف SoundFont " -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_إلغ" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_افتح" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "إسم الملف" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "حجم(بايت)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "اسم:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " ميدي معلومات" -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "صِيغة:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "طول (مللي ثانية):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "عدد المقاطع:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "متغير" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "الوقت Div:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr "تعليقات MIDI and Lyrics " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* لا يوجد تعليقات متاحة في ملف MIDI *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* لا كلمات متاحة في ملف MIDI *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_اخرج" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (غير صالحة UTF-8)" @@ -606,7 +351,7 @@ msgid "Concave Rectangle" msgstr "مستطيل مقعر" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "لا شيء" @@ -642,94 +387,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "يطلق OSD عندما التشغيل يتم إيقافه مؤقتا." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "الموضع" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "نسبية X أوفسات:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "نسبية Y أوفسات:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "اكبر عرض OSD :" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "خيارات الشاشه المتعددة " -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "عرض OSD باستخدام:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "كل الشاشات" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "شاشة%i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "توقيت (مللي ثانية)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "عرض:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "تتلاشى في:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "تتلاشى خارج:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "خطوط" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "خط %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "ظل" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "نمط الاداء" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "الوان" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "خط %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "تمكين المشغل" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "حدث" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Composite manager عثر على" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -738,56 +483,56 @@ "لم يعثر على Composite manager;\n" "إلا إذا كنت تعرف أن لديك واحد مشغل, الرجاء تنشيط Composite manager " -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "مدير مركب غير مطلوب للشفافية " -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "الشفافية" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "شفافية وهمية" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "الشفافية الحقيقية (تتطلب X Composite Ext.)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Composite extension لم يحمل" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "OSD لأوداشْيَس" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "الموضع" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "الحركة" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "نص" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "زخرفة" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "أثار" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "متفرقات" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "تجربة" @@ -803,11 +548,27 @@ msgid "Audacious Playlists (audpl)" msgstr "قوائم Audacious (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "ماحق البت" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "عمق البت:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "نسبة إنقاص العيّنة" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "ماحق البت" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "لون" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "نطاق الضباب" @@ -819,6 +580,10 @@ msgid "Presets:" msgstr "معادلات:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "افتراضي" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "مستوى التغذية:" @@ -831,7 +596,7 @@ msgid "Cut frequency:" msgstr "قطع التردد:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "محلل الطيف" @@ -926,50 +691,50 @@ msgid "Audio CD" msgstr "صوت CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "خطأ في فتح جهاز CD %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "لم يتم العثور على الصوت محرك الأقراص قادرة." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "القرص فارغ" -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "نوع القرص غير معتمد." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "فشل في إنهاء تهيئة فتح محرك الأقراص." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "فشل في استرداد الأول / آخر عدد المسار." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "لا يمكن قراءة بداية / نهاية LSN للمسار %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "فشل إنشاء اتصال CDDB." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "فشل الاستعلام عن الخادم CDDB" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "فشل الاستعلام عن الخادم CDDB: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "فشلت قراءة معلومات CDDB: %s" @@ -1042,6 +807,13 @@ msgid "Default song length:" msgstr "المدة الافتراضية للقطعة:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "ثواني" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "" @@ -1072,7 +844,7 @@ msgid "CoreAudio output" msgstr "إخراج الصوت الأساسي" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1092,11 +864,11 @@ "مستندة إلى ملحَقة مخرَجات SDL لأوادشيَس\n" "حقوق النشر 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "استخدام وضع خاص" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "استخدم صوت تام البت (يتبنّى معدل نمذجة الجهاز)" @@ -1193,20 +965,20 @@ msgid "Delete" msgstr "حذف" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "إلغ" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "حذف الملفات المحددة" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "طريقة الحذف" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "النقل إلى سلة المهملات بدلا من الحذف الفوري" @@ -1232,7 +1004,7 @@ msgstr "تأخير:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "م ث" @@ -1248,11 +1020,11 @@ msgid "Echo" msgstr "صدى" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "ملحَقة FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1375,89 +1147,89 @@ msgid "32000 Hz" msgstr "32000 هرتز" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 هرتز" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 هرتز" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 كب/ث" +msgid "8 kbit/s" +msgstr "8 ك‌بت/ث" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 كب/ث" +msgid "16 kbit/s" +msgstr "16 ك‌بت/ث" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 كب/ث" +msgid "32 kbit/s" +msgstr "32 ك‌بت/ث" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 كب/ث" +msgid "40 kbit/s" +msgstr "40 ك‌بت/ث" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 كب/ث" +msgid "48 kbit/s" +msgstr "48 ك‌بت/ث" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 كب/ث" +msgid "56 kbit/s" +msgstr "56 ك‌بت/ث" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 كب/ث" +msgid "64 kbit/s" +msgstr "64 ك‌بت/ث" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 كب/ث" +msgid "80 kbit/s" +msgstr "80 ك‌بت/ث" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 كب/ث" +msgid "96 kbit/s" +msgstr "96 ك‌بت/ث" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 كب/ث" +msgid "112 kbit/s" +msgstr "112 ك‌بت/ث" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 كب/ث" +msgid "128 kbit/s" +msgstr "128 ك‌بت/ث" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 كب/ث" +msgid "160 kbit/s" +msgstr "160 ك‌بت/ث" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 كب/ث" +msgid "192 kbit/s" +msgstr "192 ك‌بت/ث" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 كب/ث" +msgid "224 kbit/s" +msgstr "224 ك‌بت/ث" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 كب/ث" +msgid "256 kbit/s" +msgstr "256 ك‌بت/ث" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 كب/ث" +msgid "320 kbit/s" +msgstr "320 ك‌بت/ث" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "صوت مُجَسَّم مشترك" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "صوت مُجَسَّم" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "أحادي" @@ -1569,7 +1341,7 @@ msgid "Quality (0-1):" msgstr "الجودة (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "عامْ" @@ -1578,11 +1350,11 @@ msgid "FLAC Decoder" msgstr "FLAC مفكك" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "lossless" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1614,7 +1386,7 @@ msgid "Invalid open mode" msgstr "وضع الفتح غير صالح" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1634,116 +1406,134 @@ "\n" "الرخصة: GPLv2‪+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "محلل الطيف برنامج OpenGL" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "رقم المدخلة" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "رقم البدأ" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "العنوان" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "المؤدي" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "السَّنة" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "الألبوم" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "ألبوم المؤدي" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "المقطع" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "النوع" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "موقع اضافة قائمة الانتظار" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "موضع القائمة المنتظرة" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "المُدة" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "مسار الملف" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "خصص العنوان" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "اسم الملف" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "عنوان مخصص" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "معدل البت" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "تعليق" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "الأعمدة المتوفرة" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "الأعمدة المعروضة" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "أداة البحث" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "ارساء على اليسار" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "ارساء على اليمين" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "ارساء الى الفوق" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "ارساء الى الاسفل" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "لا ترسي" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "تعطيل" @@ -1783,8 +1573,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "تش‍_‍غيل" @@ -1961,8 +1751,8 @@ msgid "Remove _Unavailable Files" msgstr "إزالة الملفات _غير متوفر" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_جديد" @@ -1972,7 +1762,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "ح_ذف" @@ -2103,7 +1893,7 @@ msgstr "تحديد ال_كل" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_اعد الت_سمية ..." @@ -2131,104 +1921,109 @@ msgid "Show column headers" msgstr "اعرض رؤوس الأعمدة" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "انتقل عند تغير المقطع" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "مظهر GTK " -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "التخزين المؤقت ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "شغل" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "البث" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "مكتبة البحث" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "إفتح ملفات" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "أضف ملفات" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "السابق" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "توقف" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "التالي" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "سجل ستريم" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "تكرار" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "عشوائي" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "القائمة" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "احادي" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "ستيريو" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" @@ -2239,93 +2034,93 @@ msgstr[4] "%d قنوات" msgstr[5] "%d قنوات" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d كيلوهرتز" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d كب/ث" +msgid "%d kbit/s" +msgstr "%d ك‌بت/ث" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "وضع فردي." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "وضع قائمة التشغيل." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "توقف بعد المقطوعة." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "المقطوعة السابقة" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "لبث/استئناف" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "المقطوعة التالية" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "خطوة للأمام" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "خطوة للخلف" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "كتم" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "رفع الصوت" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "خفض الصوت" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "انتقال إلى ملف" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "تبديل نافذة(ت) التشغيل" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "اظهار في شاشة العرض" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "تبديل التكرار" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "تبديل الخلط" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "تبديل التوقف بعد الحالية" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "رفع نافذة التشغيل(s)" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(لا شيئ)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2335,11 +2130,11 @@ "\n" "أتريد الاستمرار؟" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "ربط أزرار الماوس" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2347,23 +2142,23 @@ "اضغط تركيبة مفاتيح داخل حقل النص..\n" "يمكنك أيضا ربط أزرار الماوس." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "المفاتيخ الساخنة:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "أمر:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "مفتاح الربط:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_أضف" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "المفاتيح العامة" @@ -2460,16 +2255,16 @@ "يتطلب خادم جاك معدل عينة من %d هرتز، ولكن يشغل اوداسيو في %d هرتز. يرجى " "استخدام نموذج تأثير محول معدل العينة لتصحيح عدم التوافق." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s إعدادات" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "مسار الموديول:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2479,25 +2274,25 @@ "يُبحَث في هذه المسارات إضافة إلى LADSPA_PATH.\n" "بعد إضافة مسارات جديدة، اضغط مفتاح الإدخال للفحص عن ملحَقات جديدة." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "الملحَقات المتوفرة:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "تمكين" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "الماحَقات النشطة:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "الإعدادات" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2553,101 +2348,105 @@ msgid "Wait before reconnecting:" msgstr "الانتظار حتى إعادةالاتصال:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "Lyrics" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Nowhere" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "الفنان يُقتَطع عند البداية، العنوان -- عند النهاية" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "الحروف التي سيُقتَطع عندها:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "الحروف محكومة بـ OR في التعبير النظامي، محاطة بفراغ" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "الحروف التي سيُقسَم عندها:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "زيادة اقتطاع هذا عند الحروف" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "عمومي" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "اقتطع العنوان إلى فنان و عنوان عند الحروف" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "مصادر الإنترنت" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "جلب الأشعار من:" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "اخزن الأشعار المجلوبة في الذاكرة الخبيئة المحلية" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "الخزن المحلي" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "تحميل ملفات الاشعار (‎.lrc) من الخزن المحلي" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "غير قادر على جلب %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Unable to parse %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "أبحث عن lyrics ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "خطأ" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "لم يُعثر على الأشعار." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "عنوان و/أو فنان مفقود." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "حفظ محلياً" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "إعادة تحميل" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "قوائم M3U" @@ -2809,7 +2608,7 @@ "وهذه الإعدادات نافذة المفعول عند إعادة تشغيل اوداسيو." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "توقف بعد هذا المقطع" @@ -2818,41 +2617,17 @@ msgid "Moonstone" msgstr "Moonstone" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "التصفير إلى القيم الإفتراضية" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "المُشَغّل الأن" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "رقم البدأ" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "ألبوم المؤدي" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "موضع القائمة المنتظرة" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "مسار الملف" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "اسم الملف" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "عنوان مخصص" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "المدخلات" @@ -2868,7 +2643,7 @@ msgid "Use accurate length calculation (slow)" msgstr "استخدام دقة حساب طويل (بطيء)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "إحاطة" @@ -2968,7 +2743,7 @@ msgid "OpenMPT (Module Player)" msgstr "OpenMPT (مشغّل موديول)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -2978,19 +2753,19 @@ "\n" "كتبه: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "فصل الستريو:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" -msgstr "استيفاء:" +msgstr "الاستيفاء:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "خطّيّ" @@ -3002,11 +2777,21 @@ msgid "Windowed sinc" msgstr "دالة sinc محتواة" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4 الناتج" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "OSS3 الناتج" @@ -3048,18 +2833,35 @@ "I would like to thank people on #audacious, especially Tony Vroon and John " "Lindgren and of course the authors of the previous OSS plugin." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "التشغيل" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "مدير قائمة التشغيل" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_حذف" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "اع_د التسمية" @@ -3075,7 +2877,7 @@ msgid "OpenPSF Configuration" msgstr "إعدادات OpenPSF" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "تجاهل الطول من الملف" @@ -3165,11 +2967,11 @@ "\n" "الرخصة: GPLv2‭+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "اضغط تركيبة مفاتيح داخل حقل نص." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3218,14 +3020,18 @@ msgid "Audio Settings ..." msgstr "إعدادات الصوت ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "ط#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "م#" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "مظهر كيوتي" @@ -3276,15 +3082,15 @@ #: src/resample/resample.cc:189 msgid "Fast sinc interpolation" -msgstr "استيفاء sinc السريع" +msgstr "استيفاء سينك sinc السريع" #: src/resample/resample.cc:190 msgid "Medium sinc interpolation" -msgstr "متوسط استيفاء sinc " +msgstr "استيفاء سينك sinc متوسط" #: src/resample/resample.cc:191 msgid "Best sinc interpolation" -msgstr "أفضل الاستيفاء sinc " +msgstr "استيفاء سينك sinc الأفضل" #: src/resample/resample.cc:195 msgid "Conversion" @@ -3444,7 +3250,7 @@ msgid "Library" msgstr "مكتبة" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" @@ -3455,23 +3261,23 @@ msgstr[4] "%d مقطوعات" msgstr[5] "%d مقطوعات" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "من هذا النوع" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "مشغل" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "بواسطة" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "عدد النتائج لإظهارها:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "إعادة فحص المكتبة عند البدء" @@ -3479,7 +3285,7 @@ msgid "Monitor library for changes" msgstr "مراقبة المكتبة عن التغييرات" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3487,19 +3293,19 @@ "لاستيراد مكتبة الموسيقى الخاصة بك إلى أوداشيَس، اختر المجلد ثم انقر أيقونة " "\"التحديث\" ." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "الرجاء الانتظار ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "اختر مجلد" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "مكتبة البحث" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" @@ -3510,7 +3316,7 @@ msgstr[4] "تظهر %d من %d من النتائج" msgstr[5] "تظهر %d من %d من النتائج" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" @@ -3521,11 +3327,11 @@ msgstr[4] "%d نتائج" msgstr[5] "%d النتائج" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_انشاء قائمة" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_اضافة للقائمة" @@ -3629,108 +3435,108 @@ msgid "Repeat point B set." msgstr "كرر النقطة B مجموعة." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Preamp" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 هرتز" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 هرتز" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 هرتز" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 هرتز" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 هرتز" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 هرتز" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 هرتز" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 هرتز" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 هرتز" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 هرتز" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "خالط Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "التسجيل مفعل" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "التسجيل متوقف" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "انتقل الى %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "الصوت: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "توازن: %d%% يسار" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "توازن: وسط" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "توازن: %d%% يمين" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "خيارات القائمة" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "تعطيل 'دائما فوق الكل'" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "تفعيل 'دائما فوق الكل'" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "مربع معلومات الملف" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "ضعف الحجم" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "المرئيات" @@ -3754,10 +3560,6 @@ msgid "Open URL ..." msgstr "إفتح الرابط ..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "التشغيل" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "قائمة التشغيل" @@ -3772,7 +3574,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "خدمات" @@ -3789,7 +3591,7 @@ msgstr "اخرج" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "معلومات المقطع ..." @@ -3809,7 +3611,7 @@ msgid "Clear A-B Repeat" msgstr "مسح تكرار أ-ي" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "إذهب للمقطع ..." @@ -3902,20 +3704,20 @@ msgstr "أضف ملفات ..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "حسب العنوان" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "حسب إسم الملف" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "حسب مسار الملف" @@ -3943,113 +3745,113 @@ msgid "Remove Selected" msgstr "حذف المحددة" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "ابحث و حدد" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "عكس التحديد" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "لا تحدد شيء" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "تحديد الكل" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "حسب رقم المقطع" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "حسب المؤدي" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "حسب الألبوم" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "حسب الالبوم المؤدي" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "حسب تاريخ الإصدار" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "حسب النوع" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "حسب الطول" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "حسب العنوان المخصص" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "حسب التعليق" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "قائمة عشوائية" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "عكس القائمة" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "عرض المحدد" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "عرض القائمة" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "فتح المجلد المحتوي" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "قص" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "نسخ" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "لصق" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "لصق عند الانتهاء" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "اضف/ازل من قائمة الانتظار" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d الى %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "محرر قائمة أوداشيَس" @@ -4065,167 +3867,218 @@ msgid "Add Folder ..." msgstr "اضافة مجلد..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "بحث عن مدخلة في قائمة التشغيل النشطة" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"تحديد إدخالات في قائمة التشغيل عن طريق تعبئة حقل واحد أو أكثر. استخدام " +"تعبيرات تركيب منتظم، تحسس حالة الأحرف. إذا كنت لا تعرف كيفية التعبير " +"العادية ، ببساطة إدراج جزء من الحروف لما تبحث عنه" + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "العنوان:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "الألبوم:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "المؤدي:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "اسم الملف:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "مسح التحديد السابقة قبل البحث" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "تبديل تلقائيا لقائمة الانتظار لمطابقة الإدخالات" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "إنشاء قائمة تشغيل جديدة مع إدخالات مطابقة" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "بحث" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "مشغل:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "حدد الخط الرئيسي لنافذة التشغيل:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "قائمة التشغيل:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "كحدد خط قائمة التشغيل" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "المظهر" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "اعرِض شريط العنوان النشط عندما تكون أية نافذة مستحوِذة" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "خطوط" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "استخدم صورة خطوط (supports ASCII only)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "تمرير عنوان المقطع" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "تمرير عنوان المقطع في كلا الاتجاهين" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "محلل" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "نطاق" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Voiceprint / VU meter" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "إيقاف" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "عادي" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "ناري" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "خطوط افقية" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "خطوط" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "اشرطة" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "أبطأ" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "بطيء" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "متوسطة" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "سرعة" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "أسرع" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "النقاط" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "خط" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "صلب" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "جليد" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "ناعم" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "تلوين:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "نمط:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "سقوط" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "سقوط الذروة:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "نمط النطاق:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "تلوين Voiceprint" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "نمط ميتر" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "النمط" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "نوع مرئيات:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "محلل" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "اظهار القمة" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "مرئيات" @@ -4237,58 +4090,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "إلغاء أرشفة مظهر Winamp 2.x " -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "بحث عن مدخلة في قائمة التشغيل النشطة" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "بحث" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"تحديد إدخالات في قائمة التشغيل عن طريق تعبئة حقل واحد أو أكثر. استخدام " -"تعبيرات تركيب منتظم، تحسس حالة الأحرف. إذا كنت لا تعرف كيفية التعبير " -"العادية ، ببساطة إدراج جزء من الحروف لما تبحث عنه" - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "العنوان:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "الألبوم:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "المؤدي:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "اسم الملف:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "مسح التحديد السابقة قبل البحث" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "تبديل تلقائيا لقائمة الانتظار لمطابقة الإدخالات" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "إنشاء قائمة تشغيل جديدة مع إدخالات مطابقة" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Sndfile اضافة" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4768,19 +4574,32 @@ "To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" "e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(تنبيهات أخرى تم إخفائها.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "جاري العمل..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "معلومات" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "%s لا يبدو مجلداً صحيحًا." + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "إزالة صوت" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4933,14 +4752,38 @@ "\n" "Some of the plugin code was by Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2SF مفكك" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 هرتز" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 هرتز" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "جيب تمام" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "حادّ" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "XSF خيارات" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "وقت التلاشي المبدئي:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "نمط الاستيفاء:" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "قوائم تشغيل XML قابلة للمشاركة (XSPF)" diff -Nru audacious-plugins-4.1/po/audacious-plugins.pot audacious-plugins-4.3.1/po/audacious-plugins.pot --- audacious-plugins-4.1/po/audacious-plugins.pot 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/audacious-plugins.pot 2023-04-29 20:17:32.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -27,7 +27,7 @@ msgstr "" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "" @@ -39,8 +39,10 @@ msgid "OPL Emulator:" msgstr "" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" msgstr "" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 @@ -57,7 +59,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "" @@ -65,209 +67,6 @@ msgid "Repeat song in endless loop" msgstr "" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "" - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "" - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "" - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "" @@ -392,87 +191,83 @@ msgid "Synthesizer" msgstr "" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr "" -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr "" -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr "" @@ -516,7 +311,7 @@ msgid "Concave Rectangle" msgstr "" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "" @@ -552,150 +347,150 @@ msgid "Triggers OSD when playback is unpaused." msgstr "" -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " "manager otherwise the OSD won't work properly" msgstr "" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "" @@ -711,11 +506,27 @@ msgid "Audacious Playlists (audpl)" msgstr "" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "" @@ -727,6 +538,10 @@ msgid "Presets:" msgstr "" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "" @@ -739,7 +554,7 @@ msgid "Cut frequency:" msgstr "" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "" @@ -826,50 +641,50 @@ msgid "Audio CD" msgstr "" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "" @@ -934,6 +749,13 @@ msgid "Default song length:" msgstr "" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "" @@ -962,7 +784,7 @@ msgid "CoreAudio output" msgstr "" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -974,11 +796,11 @@ "Copyright 2010 John Lindgren" msgstr "" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" @@ -1071,20 +893,20 @@ msgid "Delete" msgstr "" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "" @@ -1106,7 +928,7 @@ msgstr "" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "" @@ -1122,11 +944,11 @@ msgid "Echo" msgstr "" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1228,76 +1050,76 @@ msgid "32000 Hz" msgstr "" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" +msgid "8 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" +msgid "16 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" +msgid "32 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" +msgid "40 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" +msgid "48 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" +msgid "56 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" +msgid "64 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" +msgid "80 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" +msgid "96 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" +msgid "112 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" +msgid "128 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" +msgid "160 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" +msgid "192 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" +msgid "224 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" +msgid "256 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" +msgid "320 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:450 @@ -1305,12 +1127,12 @@ msgstr "" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "" @@ -1422,7 +1244,7 @@ msgid "Quality (0-1):" msgstr "" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "" @@ -1431,11 +1253,11 @@ msgid "FLAC Decoder" msgstr "" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1461,7 +1283,7 @@ msgid "Invalid open mode" msgstr "" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1473,116 +1295,134 @@ "License: GPLv2+" msgstr "" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "" -#: src/gtkui/columns.cc:43 -msgid "Queue position" +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" msgstr "" -#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "" -#: src/gtkui/columns.cc:47 -msgid "Custom title" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" msgstr "" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "" @@ -1622,8 +1462,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "" @@ -1800,8 +1640,8 @@ msgid "Remove _Unavailable Files" msgstr "" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "" @@ -1811,7 +1651,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "" @@ -1942,7 +1782,7 @@ msgstr "" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "" @@ -1970,230 +1810,235 @@ msgid "Show column headers" msgstr "" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "" -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "" msgstr[1] "" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" +msgid "%d kbit/s" msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "" -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "" -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "" -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" "Do you want to continue?" msgstr "" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." msgstr "" -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "" @@ -2275,41 +2120,41 @@ "%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." msgstr "" -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" "After adding new paths, press Enter to scan for new plugins." msgstr "" -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2351,101 +2196,105 @@ msgid "Wait before reconnecting:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "" @@ -2596,7 +2445,7 @@ msgstr "" #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "" @@ -2605,41 +2454,17 @@ msgid "Moonstone" msgstr "" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "" @@ -2655,7 +2480,7 @@ msgid "Use accurate length calculation (slow)" msgstr "" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "" @@ -2739,26 +2564,26 @@ msgid "OpenMPT (Module Player)" msgstr "" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "" @@ -2770,11 +2595,21 @@ msgid "Windowed sinc" msgstr "" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "" @@ -2811,18 +2646,35 @@ "Lindgren and of course the authors of the previous OSS plugin." msgstr "" -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "" @@ -2838,7 +2690,7 @@ msgid "OpenPSF Configuration" msgstr "" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "" @@ -2899,11 +2751,11 @@ "License: GPLv2+" msgstr "" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "" -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -2939,14 +2791,18 @@ msgid "Audio Settings ..." msgstr "" -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "" @@ -3144,30 +3000,30 @@ msgid "Library" msgstr "" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "" msgstr[1] "" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "" @@ -3175,43 +3031,43 @@ msgid "Monitor library for changes" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "" msgstr[1] "" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "" msgstr[1] "" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "" @@ -3313,108 +3169,108 @@ msgid "Repeat point B set." msgstr "" -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "" @@ -3438,10 +3294,6 @@ msgid "Open URL ..." msgstr "" -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "" @@ -3456,7 +3308,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "" @@ -3473,7 +3325,7 @@ msgstr "" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "" @@ -3493,7 +3345,7 @@ msgid "Clear A-B Repeat" msgstr "" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "" @@ -3586,20 +3438,20 @@ msgstr "" #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "" @@ -3627,113 +3479,113 @@ msgid "Remove Selected" msgstr "" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "" @@ -3749,167 +3601,215 @@ msgid "Add Folder ..." msgstr "" -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "" @@ -3921,55 +3821,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4388,19 +4244,30 @@ "e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" msgstr "" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "" -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4515,14 +4382,38 @@ "Some of the plugin code was by Miles Egan." msgstr "" -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "" diff -Nru audacious-plugins-4.1/po/be.po audacious-plugins-4.3.1/po/be.po --- audacious-plugins-4.1/po/be.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/be.po 2023-04-29 20:17:32.000000000 +0000 @@ -9,18 +9,18 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Mikalai Udodau , 2012,2017\n" "Language-Team: Belarusian (http://www.transifex.com/audacious/audacious/" "language/be/)\n" "Language: be\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" -"%100>=11 && n%100<=14)? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || " +"(n%100>=11 && n%100<=14)? 2 : 3);\n" #: src/aac/aac.cc:19 msgid "AAC (Raw) Decoder" @@ -31,7 +31,7 @@ msgstr "AdPlug (AdLib Плэер)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "" @@ -43,8 +43,10 @@ msgid "OPL Emulator:" msgstr "" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" msgstr "" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 @@ -61,7 +63,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "" @@ -69,209 +71,6 @@ msgid "Repeat song in endless loop" msgstr "" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Алярм" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "" - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Гэта ваш выклік абуджэння." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "" - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Напамін" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Панядзелак" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Аўторак" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Серада" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Чацвер" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Пятніца" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Субота" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Нядзеля" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Час" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Алярм у час (па-змоўчванню):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "г" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Сцішыць пасля:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "гадзін" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "хвілін" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Абярыце дні для ўжывання алярмаў" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Дзень" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Па-змоўчванню" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Дзён" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Згасанне" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "секунд" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Гучнасць" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Пачаць у" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Фінальны" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Бягучы" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Дадатковы загад" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "уключыць" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Плэйліст (апцыянальны)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Выбраць плэйліст" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Опцыі" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Што азначаюць гэтыя опцыі?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Даведка" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Афармленне альбома" @@ -396,87 +195,83 @@ msgid "Synthesizer" msgstr "" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Скасаваць" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "А_дкрыць" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Імя файла" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Памер (байтаў)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Назва:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " Звесткі па MIDI " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Фармат:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Даўжыня (мсек):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Нум. трэкаў:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "пераменны" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "УЗХ:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "УЗХ (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI Каментары і Лірыка " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr " * у гэтым MIDI-файле каментарыі недаступныя *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* у гэтым MIDI-файле лірыка недаступная *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "Закры_ць" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr "(недапушчальны UTF-8)" @@ -520,7 +315,7 @@ msgid "Concave Rectangle" msgstr "Увагнуты Прамавугольнік" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Няма" @@ -556,94 +351,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Выводзіць OSD калі прайраванне працягваецца з паўзы." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Змяшчэнне" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Зрушэнне адносна X:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Зрушэнне адносна Y:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Максімальная шырыня OSD:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Опцыі для некалькіх манітораў" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Паказваць OSD праз:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "усе маніторы" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "манітор %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Затрымка (мс)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Паказваць:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "З'яўленне:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Знікненне:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Шрыфты" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Шрыфт %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Цень" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Стыль Рэндэру" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Колеры" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Колер %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Уключыць трыгер" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Падзея" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Выяўлены кампазітны менэджар" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -653,56 +448,56 @@ "калі вы не ведаёце, ці запушчаны ён, актывуйце кампазітны менэджар. Інакш " "OSD не будзе працаваць карэктна" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Кампазітны менэджар не патрэбны для імітацыйнай празрыстасці" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Празрыстасць" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Імітацыйная празрыстасць" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Сапраўдная празрыстасць (патрабуе X Composite Ext.)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Кампазітныя пашырэнні не загружаны" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Пазіцыя" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Анімацыя" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Тэкст" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Абрамленне" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Пераключальнік" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Іншае" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Тэст" @@ -718,11 +513,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Плэйлісты Audacious (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Колер" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Размыты асцылограф" @@ -734,6 +545,10 @@ msgid "Presets:" msgstr "Прэсеты:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Па-змоўчванню" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "" @@ -746,7 +561,7 @@ msgid "Cut frequency:" msgstr "" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Спектральны аналізатар" @@ -833,50 +648,50 @@ msgid "Audio CD" msgstr "Audio CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Прывад пусты." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Тып не падтрымліваецца." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "" @@ -941,6 +756,13 @@ msgid "Default song length:" msgstr "Тыповая працягласць песні:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "секунд" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "" @@ -969,7 +791,7 @@ msgid "CoreAudio output" msgstr "" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -981,11 +803,11 @@ "Copyright 2010 John Lindgren" msgstr "" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" @@ -1078,20 +900,20 @@ msgid "Delete" msgstr "Сцерці" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Скасаваць" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "" @@ -1113,7 +935,7 @@ msgstr "Затрымка:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "мс" @@ -1129,11 +951,11 @@ msgid "Echo" msgstr "Рэха" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Плагін FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1237,76 +1059,76 @@ msgid "32000 Hz" msgstr "" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" +msgid "8 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" +msgid "16 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" +msgid "32 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" +msgid "40 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" +msgid "48 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" +msgid "56 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" +msgid "64 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" +msgid "80 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" +msgid "96 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" +msgid "112 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" +msgid "128 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" +msgid "160 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" +msgid "192 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" +msgid "224 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" +msgid "256 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" +msgid "320 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:450 @@ -1314,12 +1136,12 @@ msgstr "Аб'яднанае стэрэа" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Стэрэа" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Мона" @@ -1431,7 +1253,7 @@ msgid "Quality (0-1):" msgstr "" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Агульныя" @@ -1440,11 +1262,11 @@ msgid "FLAC Decoder" msgstr "Дэкодар FLAC" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1470,7 +1292,7 @@ msgid "Invalid open mode" msgstr "" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1482,116 +1304,134 @@ "License: GPLv2+" msgstr "" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "Нумар запіса" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Назва" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Выканаўца" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Год" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Альбом" -#: src/gtkui/columns.cc:40 -msgid "Album artist" -msgstr "" - #: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr "Выканаўца альбома" + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Трэк" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Жанр" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "Пазіцыя ў чарзе" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Працягласць" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "Шлях да файла" - -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Адмысловы загаловак" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Бітрэйт" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Каментар" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Пошукавая прылада" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Стыкаваць Злева" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Стыкаваць Справа" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Стыкаваць Уверсе" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Стыкаваць Долу" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Выключыць" @@ -1631,8 +1471,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Прайграць" @@ -1809,8 +1649,8 @@ msgid "Remove _Unavailable Files" msgstr "Сцерці _недаступныя файлы" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Дадаць" @@ -1820,7 +1660,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "" @@ -1951,7 +1791,7 @@ msgstr "Вылучыць усе" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "П_ерайменаваць ..." @@ -1979,104 +1819,109 @@ msgid "Show column headers" msgstr "" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Інтэрфейс GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Назапашванне ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Граць" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Пауза" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Адкрыць файлы" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Дадаць файлы" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Папярэдні" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Спыніць" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Наступны" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Паўтор" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Уразнабой" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "мона" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "стэрэа" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" @@ -2085,126 +1930,126 @@ msgstr[2] "%d каналаў" msgstr[3] "%d каналаў" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d кб/с" +msgid "%d kbit/s" +msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "" -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Рэжым плэйліста." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Спыненне пасля песні." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Паўза/Працягнуць" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Цішыня" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Паказаць Дысплей на Экране :OSD:" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(няма)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" "Do you want to continue?" msgstr "" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." msgstr "" -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Дзеянне:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "Дадаць" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "" @@ -2286,41 +2131,41 @@ "%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." msgstr "" -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s Настаўленні" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Шлях да модуля:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" "After adding new paths, press Enter to scan for new plugins." msgstr "" -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Даступныя плагіны:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Уключыць" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Уключаныя плагіны:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Настаўленні" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2362,101 +2207,105 @@ msgid "Wait before reconnecting:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Немагчыма атрымаць %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Немагчыма разабраць %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Шукаюцца словы ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Памылка" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "Плэйлісты M3U" @@ -2607,7 +2456,7 @@ msgstr "" #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "" @@ -2616,41 +2465,17 @@ msgid "Moonstone" msgstr "" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Цяпер грае" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Выканаўца альбома" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Запісы" @@ -2666,7 +2491,7 @@ msgid "Use accurate length calculation (slow)" msgstr "" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "" @@ -2750,26 +2575,26 @@ msgid "OpenMPT (Module Player)" msgstr "" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "" @@ -2781,11 +2606,21 @@ msgid "Windowed sinc" msgstr "" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "Вывад OSS4" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "" @@ -2822,18 +2657,35 @@ "Lindgren and of course the authors of the previous OSS plugin." msgstr "" -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Прайграванне" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Кіраўнік плэйлістоў" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Выдаліць" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "Пера_назваць" @@ -2849,7 +2701,7 @@ msgid "OpenPSF Configuration" msgstr "" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "" @@ -2910,11 +2762,11 @@ "License: GPLv2+" msgstr "" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "" -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -2950,14 +2802,18 @@ msgid "Audio Settings ..." msgstr "" -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "" @@ -3155,7 +3011,7 @@ msgid "Library" msgstr "Бібліятэка" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" @@ -3164,23 +3020,23 @@ msgstr[2] "" msgstr[3] "" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "" @@ -3188,25 +3044,25 @@ msgid "Monitor library for changes" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Пачакайце, калі ласка ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Выберыце каталог" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Шукаць у бібліятэцы" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" @@ -3215,7 +3071,7 @@ msgstr[2] "" msgstr[3] "" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" @@ -3224,11 +3080,11 @@ msgstr[2] "" msgstr[3] "" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Стварыць плэйліст" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Дадаць у плэйліст" @@ -3330,108 +3186,108 @@ msgid "Repeat point B set." msgstr "" -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Перадузмацненне" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Гц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Гц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Гц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Гц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Гц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "2 кГц" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 кГц" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 кГц" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 кГц" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 кГц" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Эквалайзер Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Гучнасць: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Баланс: %d%% ўлева" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Баланс: цэнтр" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Баланс: %d%% ўправа" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Меню опцый" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Адключыць 'Заўсёды зверху'" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Уключыць 'Заўсёды зверху'" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "" @@ -3455,10 +3311,6 @@ msgid "Open URL ..." msgstr "" -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Прайграванне" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Плэйліст" @@ -3473,7 +3325,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Сэрвісы" @@ -3490,7 +3342,7 @@ msgstr "" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "" @@ -3510,7 +3362,7 @@ msgid "Clear A-B Repeat" msgstr "" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "" @@ -3603,20 +3455,20 @@ msgstr "" #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Па загалоўку" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "" @@ -3644,113 +3496,113 @@ msgid "Remove Selected" msgstr "Сцерці вылучаныя" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Пошук і вылучэнне" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Інвертаваць вылучэнне" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Зняць вылучэнне" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Вылучыць усе" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Па нумары трэка" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Па выканаўцу" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Па альбому" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Раскідаць спіс" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Спіс наадварот" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Сартаваць вылучаныя" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Сартаваць спіс" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Выразаць" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Капіраваць" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Уставіць" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d з %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Рэдактар плэйлістоў Audacious" @@ -3766,167 +3618,215 @@ msgid "Add Folder ..." msgstr "" -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Шукаць запісы ў бягучым плэйлісце" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Назва:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Альбом:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Выканаўца:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Назва файла:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Ачысціць папярэдняе вылучэнне перад пошукам" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Аўтаматычна пераключыць чаргу для адпаведных запісаў" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Стварыць новы плэйліст з адпаведнымі запісамі" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Вылучыце шрыфт для галоўнага вакна плэера:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Выберыце шрыфт для плэйліста:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Пракручваць назву песні ў абодвух кірунках" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Аналізатар" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Асцылограф" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Выкл" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Норма" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Полымя" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Лініі" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Слупкі" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Наймарудней" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Марудна" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Сярэдне" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Хутка" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Найхутчэй" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Лінія" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Лёд" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Гладка" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Колер:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Стыль:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Візуалізацыя" @@ -3938,55 +3838,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Несціснутая абалонка Winamp 2.x" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Шукаць запісы ў бягучым плэйлісце" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Назва:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Альбом:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Выканаўца:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Назва файла:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Ачысціць папярэдняе вылучэнне перад пошукам" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Аўтаматычна пераключыць чаргу для адпаведных запісаў" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Стварыць новы плэйліст з адпаведнымі запісамі" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Плагін Sndfile" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4405,19 +4261,32 @@ "e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" msgstr "" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Далейшыя паведамленні былі прыхаваныя.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Выконваецца..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Інфармацыя" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Выдаленне голасу" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4532,14 +4401,38 @@ "Some of the plugin code was by Miles Egan." msgstr "" -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "Дэкодар 2SF" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "" diff -Nru audacious-plugins-4.1/po/bg.po audacious-plugins-4.3.1/po/bg.po --- audacious-plugins-4.1/po/bg.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/bg.po 2023-04-29 20:17:32.000000000 +0000 @@ -5,9 +5,10 @@ # Translators: # Ivailo Monev , 2014 # Kiril Kirilov , 2014-2015,2017-2019 -# Myselus, 2016-2017 +# Myselus, 2016-2017,2022 # Pandi3a , 2012 # Pandi3a , 2012 +# Thomas Arlington, 2022 # Радослав Иванов , 2013-2014 # Радослав Иванов , 2013 # Радослав Иванов , 2015-2016 @@ -15,9 +16,9 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Thomas Arlington, 2022\n" "Language-Team: Bulgarian (http://www.transifex.com/audacious/audacious/" "language/bg/)\n" "Language: bg\n" @@ -35,7 +36,7 @@ msgstr "AdPlug (AdLib Плейър)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "подредени" @@ -45,10 +46,12 @@ #: src/adplug/adplug-xmms.cc:350 msgid "OPL Emulator:" -msgstr "" +msgstr "OPL емулатор:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" msgstr "Честота на дискретизация" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 @@ -65,7 +68,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Разни" @@ -73,260 +76,6 @@ msgid "Repeat song in endless loop" msgstr "Повторете песента в безкраен цикъл" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Аларма" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Задаване на Аларма ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Приставка, която може да бъде използвана за\n" -"започване на изпълнение по конкретно време.\n" -"\n" -"Оригинално написана от Adam Feakin и Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Време\n" -"Алармиране в:\n" -"Времето в което ще се включи алармата.\n" -"\n" -"Затишие след:\n" -"Спиране на алармата след този период.\n" -"(ако прозорецът за събуждане не е затворен)\n" -"\n" -"\n" -"Дни\n" -"Ден:\n" -"Избиране на дните, в които да се активира алармата.\n" -"\n" -"Време:\n" -"Избете време на алармата за всеки ден\n" -"или изберете бутона за превключване,\n" -"за избор на стандартното време.\n" -"\n" -"\n" -"Сила на звука\n" -"Затихване:\n" -"Затихване на усилването на звука до избраното,\n" -"за този период от време.\n" -"\n" -"Стартирай от:\n" -"Стартирай затихване от този момент.\n" -"\n" -"Крайно:\n" -"Сила на звука, при което спира затихването. Ако\n" -"времето за затихване е 0, тогава се задава тази\n" -"сила на звука и започва възпроизвежането.\n" -"\n" -"\n" -"Опции:\n" -"Допълнителна команда:\n" -"Стартиране на тази команда с алармата.\n" -"\n" -"Списък:\n" -"Зареждане на този списък. Ако не е избран\n" -"такъв, ще се използва настоящият.\n" -"Тук може да бъде въведен и Интернет адрес\n" -"на mp3/ogg поток.\n" -"\n" -"Напомняне:\n" -"Извеждане на напомняне, когато алармата се изключи.\n" -"Въведете напомнянето в полето за въвеждане и\n" -"отметнете в кутийката, ако искате да бъде показвано." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Това е Вашият сигнал за събуждане." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Вашето напомняне за днес е..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Напомняне" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Понеделник" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Вторник" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Сряда" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Четвъртък" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Петък" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Събота" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Неделя" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Час" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Алармиране в (по подразбиране):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "ч" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Затишие след:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "часове" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "минути" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Избор на дни, в които да се активира алармата" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Ден" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "По подразбиране" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Дни" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Затихване" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "секунди" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Сила на звука" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Начало" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Край" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Текущо" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Допълнителна команда" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "активиране" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Списък за изпълнение (по избор)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Избор на списък" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Опции" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Какво означават тези опции?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Помощ" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Обложка на албум" @@ -476,87 +225,83 @@ msgid "Synthesizer" msgstr "Синтезатор" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Честота на дискретизация" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Контакт - избор на файл за звуково изравняване" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Отказ" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Отваряне" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Име на файла" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Размер (байтове)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Име:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " MIDI информация " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Формат:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Продължителност (милисекунди):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "№ на Записи:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "променливост" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "УВМ:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "УВМ (вълни):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Време Разд.:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI Коментари и лирика " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* няма достъпни коментари за този MIDI файл *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* няма достъпна лирика за този MIDI файл *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Затваряне" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (невалиден UTF-8)" @@ -612,7 +357,7 @@ msgid "Concave Rectangle" msgstr "Вдлъбнат правоъгълник" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Без" @@ -651,94 +396,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Задействане на OSD, когато възпроизвеждането продължи." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Местоположение" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Относителен отстъп за X:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Относителен отстъп за Y:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Максимална ширина на OSD:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Опции за много монитори" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Извеждай OSD, използвайки:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "всички монитори" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "монитор %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Времетраене (мс)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Екран:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Проясняване:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Избледняване:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Шрифтове" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Шрифт %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Сянка" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Създай свой стил" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Цветове" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Цвят %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Активиране на активатора" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Събитие" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Засечен е Композитен мениджър" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -748,56 +493,56 @@ "моля активирайте мениджъра, освен ако вече нямате стартиран, в противен " "случай OSD няма да работи правилно" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Не се изисква композитен мениджър за илюзийна прозрачност" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Прозрачност" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Илюзийна прозрачност" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Истинска прозрачност (изисква разширение за X)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Композитното разширение не е заредено" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Позиция" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Анимация" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Текст" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Декорация" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Активатор" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Разни" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Тест" @@ -813,11 +558,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Audacious Списъци (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Биткръшър" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Дълбочина на битовете:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Коефициент на намаляване на дискретизацията:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Биткръшър" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Цвят" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Размит осцилоскоп" @@ -829,6 +590,10 @@ msgid "Presets:" msgstr "Заготовки:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "По подразбиране" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Ниво на емисия:" @@ -841,7 +606,7 @@ msgid "Cut frequency:" msgstr "Честота на срез:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Анализ на спектъра" @@ -939,50 +704,50 @@ msgid "Audio CD" msgstr "Аудио Диск" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Не може да бъде отворено CD устройство %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Не е намерено Audio CD устройство." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Устройството е празно." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Неподдържан диск." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Неуспешно приключване на обозначаването на отвореното CD устройство." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Неуспех при извличане на първият/последният номер на запис." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Не може да прочете началото/края на LSN за запис %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Неуспешно създаване на CDDB връзка." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Неуспешна заявка към CDDB сървър" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Неуспешна заявка към CDDB сървър: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Неуспешно четене на CDDB информацията: %s" @@ -1055,6 +820,13 @@ msgid "Default song length:" msgstr "Стандартно времетраене за песен:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "секунди" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Преизчисляване" @@ -1083,7 +855,7 @@ msgid "CoreAudio output" msgstr "CoreAudio изход" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1103,11 +875,11 @@ "Базирана на Изходна добавка за Audacious\n" "Авторски права 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Използвай изключителен режим" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" "Използване на битов перфектен звук (адаптиране честотата на дискретизация на " @@ -1206,20 +978,20 @@ msgid "Delete" msgstr "Изтриване" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Отказ" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Изтриване на избраните файлове" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Начин на изтриване" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Премести в коша, вместо незабавно изтриване" @@ -1245,7 +1017,7 @@ msgstr "Забавяне:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "мс" @@ -1261,11 +1033,11 @@ msgid "Echo" msgstr "Ехо" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Приставка за FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1387,89 +1159,89 @@ msgid "32000 Hz" msgstr "32000 Хц" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Хц" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Хц" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 кбвс" +msgid "8 kbit/s" +msgstr "8 kbit/s" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 кбвс" +msgid "16 kbit/s" +msgstr "16 kbit/s" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 кбвс" +msgid "32 kbit/s" +msgstr "32 kbit/s" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 кбвс" +msgid "40 kbit/s" +msgstr "40 kbit/s" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 кбвс" +msgid "48 kbit/s" +msgstr "48 kbit/s" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 кбвс" +msgid "56 kbit/s" +msgstr "56 kbit/s" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 кбвс" +msgid "64 kbit/s" +msgstr "64 kbit/s" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 кбвс" +msgid "80 kbit/s" +msgstr "80 kbit/s" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 кбвс" +msgid "96 kbit/s" +msgstr "96 kbit/s" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 кбвс" +msgid "112 kbit/s" +msgstr "112 kbit/s" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 кбвс" +msgid "128 kbit/s" +msgstr "128 kbit/s" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 кбвс" +msgid "160 kbit/s" +msgstr "160 kbit/s" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 кбвс" +msgid "192 kbit/s" +msgstr "192 kbit/s" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 кбвс" +msgid "224 kbit/s" +msgstr "224 kbit/s" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 кбвс" +msgid "256 kbit/s" +msgstr "256 kbit/s" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 кбвс" +msgid "320 kbit/s" +msgstr "320 kbit/s" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Общо Стерео" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Стерео" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Моно" @@ -1581,7 +1353,7 @@ msgid "Quality (0-1):" msgstr "Качество (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Общи" @@ -1590,11 +1362,11 @@ msgid "FLAC Decoder" msgstr "Разкодиране на FLAC" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "по-малко загуби" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1626,7 +1398,7 @@ msgid "Invalid open mode" msgstr "Неправилен режим на отваряне" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1646,116 +1418,134 @@ "\n" "Лиценз: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL осцилоскоп" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "Номер на запис" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "Номер по ред" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Заглавие" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Изпълнител" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Година" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Албум" -#: src/gtkui/columns.cc:40 -msgid "Album artist" -msgstr "Изпълнител на албум" - #: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr " Изпълнител на Албум" + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Запис" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Жанр" -#: src/gtkui/columns.cc:43 -msgid "Queue position" +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" msgstr "Позиция на опашката" -#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Времетраене" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "Път до файла" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Избрано заглавие" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Име на файла" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Заглавие по подразбиране" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Честота за бит" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Коментар" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Налични колони" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Показване колони" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Инструмент за търсене" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Панел вляво" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Панел вдясно" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Панел отгоре" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Панел отдолу" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Без панел" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Деактивиране" @@ -1795,8 +1585,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "Въ_зпроизвеждане" @@ -1824,12 +1614,12 @@ #: src/gtkui/menus.cc:97 src/qtui/menus.cc:145 src/skins/menus.cc:114 #: src/skins-qt/menus.cc:105 msgid "Previous Album" -msgstr "" +msgstr "Предишен Албум" #: src/gtkui/menus.cc:98 src/qtui/menus.cc:146 src/skins/menus.cc:115 #: src/skins-qt/menus.cc:106 msgid "Next Album" -msgstr "" +msgstr "Следващ Албум" #: src/gtkui/menus.cc:100 src/qtui/menus.cc:148 msgid "_Repeat" @@ -1973,8 +1763,8 @@ msgid "Remove _Unavailable Files" msgstr "Премахване на _липсващите файлове" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Нов" @@ -1984,7 +1774,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "Премах_ване" @@ -2038,7 +1828,7 @@ #: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 msgid "Show Info Bar _Album Art" -msgstr "" +msgstr "Показване на информационна лента _Обложка на албум" #: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 msgid "Show Info Bar Vis_ualization" @@ -2115,7 +1905,7 @@ msgstr "Избор на _всички" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "П_реименуване..." @@ -2143,197 +1933,202 @@ msgid "Show column headers" msgstr "Показване на антетки" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Превъртане при смяна на песента" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "GTK изглед" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Запълване..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Изпълнение" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Временно спиране" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Търсене в библиотеката" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Отваряне на файлове" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Добавяне на файлове" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Предишен" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Спиране" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Следващ" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Запис на поток" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Повторение" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Разбъркване" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" -msgstr "" +msgstr "Меню" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "еднозвучие" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "многозвучие" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d канал" msgstr[1] "%d канали" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d кХц" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d кбвс" +msgid "%d kbit/s" +msgstr "%dkbit/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Режим „Единичен“." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Режим „Списък“." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Спиране след песента." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Предишен запис" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Временно спиране/Възобновяване" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Следващ запис" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" -msgstr "" +msgstr "Придвижване напред" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" -msgstr "" +msgstr "Придвижване назад" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Заглушаване" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Увеличаване на звука" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Намаляване на звука" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Прескачане до файл" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Превключване между прозорците" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Показване на Прозорец върху екрана" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Превключване на повторение" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Превключване на разбъркване" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Превключване на спиране след текущият" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Издигане на прозорците" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(без)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2343,11 +2138,11 @@ "модификатори.\n" "Искате ли да продължите?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Обвързани бутони на мишката" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2355,23 +2150,23 @@ "Наберете комбинация от клавиши в текстовото поле.\n" "Можете да включете и бутони от мишката." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Бързи клавиши:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Действие:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Обвързване на клавиш:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Добавяне" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Общи бързи клавиши" @@ -2389,6 +2184,17 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Приставка за Общи бързи клавиши\n" +"Управление на плеъра с комбинации от общи клавиши или мултимедийни бутони.\n" +"\n" +"Авторски права (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Сътрудници, включително:\n" +"Авторски права (C) 2006-2007 Vladimir Paskov \n" +"Авторски права (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " #: src/jack/jack-ng.cc:54 msgid "JACK Output" @@ -2396,7 +2202,7 @@ #: src/jack/jack-ng.cc:126 msgid "Client name:" -msgstr "" +msgstr "Име на клиента:" #: src/jack/jack-ng.cc:128 msgid "Automatically connect to output ports" @@ -2405,26 +2211,27 @@ #: src/jack/jack-ng.cc:130 msgid "Filter ports (regex, use any port if blank):" msgstr "" +"Филтриране на портове (регулярен израз, ако е празно използва всеки порт):" #: src/jack/jack-ng.cc:136 msgid "Connect to physical ports only" -msgstr "" +msgstr "Свързване само към физически портове" #: src/jack/jack-ng.cc:139 msgid "Upmix to" -msgstr "" +msgstr "Смесване до" #: src/jack/jack-ng.cc:141 msgid "ports if input has fewer channels" -msgstr "" +msgstr "портове ако входа има по-малко канали" #: src/jack/jack-ng.cc:143 msgid "Ignore insufficient number of ports" -msgstr "" +msgstr "Игнориране на недостатъчен брой портове" #: src/jack/jack-ng.cc:181 msgid "No JACK output ports were found. Please check settings." -msgstr "" +msgstr "Не са намерени JACK изходящи портове. Моля проверете настройките." #: src/jack/jack-ng.cc:195 #, c-format @@ -2458,16 +2265,16 @@ "възпроизвежда на %d Хц. Моля, използвайте ефектът за Промяна на честотата на " "дискретизация, за да поправите несъответствията." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s Настройки" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Пътища към модул:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2478,25 +2285,25 @@ "След добавяне на тези пътища, натиснете Ентер за сканиране за нови приставки." "" -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Достъпни приставки:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Активиране" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Активирани приставки:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Настройки" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2553,101 +2360,106 @@ msgid "Wait before reconnecting:" msgstr "Изчакайте преди да опитате повторно свързване:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" -msgstr "" +msgstr "Текстове" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" -msgstr "" +msgstr "Никъде" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" -msgstr "" +msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" +"Изпълнителят е съкратен в началото, заглавието -- в края" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" -msgstr "" +msgstr "Символи за съкращаване:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" -msgstr "" +msgstr "Знаците са ORed в RegExp, заобиколени от интервал" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" -msgstr "" +msgstr "Символи за разделяне:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" -msgstr "" +msgstr "Допълнително съкращение на тези символи" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" -msgstr "" +msgstr "Главни" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" +msgstr "Разделете заглавието на изпълнител и заглавие на символи" + +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" -msgstr "" +msgstr "Съхраняване на извлечените текстове в локалния кеш" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" -msgstr "" +msgstr "Местно пространство" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" -msgstr "" +msgstr "Зареждане на текстови файлове (.lrc) от локално пространство" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Неуспех при извличане на %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Неуспех при разделяне на %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Търсене на текст..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Грешка" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." -msgstr "" +msgstr "Текстът не може да бъде намерен." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." -msgstr "" +msgstr "Липсва заглавие и/или изпълнител." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" -msgstr "" +msgstr "Запазете локално" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" -msgstr "" +msgstr "Опресняване" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "Списък M3U" @@ -2805,50 +2617,26 @@ msgstr "Тези настройки ще влязат в сила, когато Audacious бъде рестартиран." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Спиране след тази песен" #: src/moonstone/moonstone.cc:39 msgid "Moonstone" -msgstr "" +msgstr "Moonstone" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Възстановяване на началните настройки" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Възпроизвежда се" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Номер по ред" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr " Изпълнител на Албум" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Позиция на опашката" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Път до файла" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Име на файла" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Заглавие по подразбиране" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Елементи" @@ -2864,7 +2652,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Използвай точна калкулация на продължителността (бавно)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Обграждащ звук" @@ -2953,7 +2741,7 @@ #: src/notify/notify.cc:110 msgid "Custom notification duration:" -msgstr "" +msgstr "Персонализирана продължителност на известието:" #: src/notify/osd.cc:74 msgid "Show" @@ -2961,44 +2749,57 @@ #: src/openmpt/mpt.cc:50 msgid "OpenMPT (Module Player)" -msgstr "" +msgstr "OpenMPT (Модулен плеър)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" +"Модулен плейър, базиран на libopenmpt\n" +"\n" +"Написано от: Крис Шпигел " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" -msgstr "" +msgstr "Стерео разделяне:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" -msgstr "" +msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" -msgstr "" +msgstr "Интерполация:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Линейно" #: src/openmpt/mptwrap.h:52 msgid "Cubic" -msgstr "" +msgstr "Кубичен" #: src/openmpt/mptwrap.h:53 msgid "Windowed sinc" +msgstr "Windowed sinc" + +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" msgstr "" -#: src/oss4/oss.h:75 +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4 изход" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "OSS3 изход" @@ -3040,18 +2841,35 @@ "Бих искал да благодаря на хората от #audacious, особено на Tony Vroon и John " "Lindgren и, разбира се, на авторите на предишната версия на приставката." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Възпроизвеждане" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Мениджър на списъка" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Премахване" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "Преименуван_е" @@ -3065,9 +2883,9 @@ #: src/psf/plugin.cc:270 msgid "OpenPSF Configuration" -msgstr "" +msgstr "Конфигурация на OpenPSF" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Игнориране на дължината от файла" @@ -3077,11 +2895,11 @@ #: src/pulse/pulse_audio.cc:72 msgid "Context name:" -msgstr "" +msgstr "Име на контекста:" #: src/pulse/pulse_audio.cc:74 msgid "Stream name:" -msgstr "" +msgstr "Име на поток:" #: src/pulse/pulse_audio.cc:575 msgid "" @@ -3146,12 +2964,21 @@ "\n" "License: GPLv2+" msgstr "" +"OpenGL спектрален анализатор за Audacious\n" +"Авторско право 2013 Кристоф Буде, Джон Линдгрен и Карло Брамини\n" +"Авторско право 2014 г., 2020 г. Ariadne Conill\n" +"\n" +"Въз основа на приставката XMMS:\n" +"Авторско право 1998-2000 г. Питър Алм, Микаел Алм, Оле Халнас, Томас Нилсон " +"и 4Front Technologies\n" +"\n" +"Лиценз: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." -msgstr "" +msgstr "Натиснете клавишна комбинация в текстово поле." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3166,6 +2993,20 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Плъгин за глобални клавишни комбинации\n" +"Управлявайте плейъра с глобални клавишни комбинации или мултимедийни " +"клавиши.\n" +"\n" +"Авторско право (C) 2020 i.Dark_Templar \n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Сътрудниците включват:\n" +"Copyright (C) 2006-2007 Владимир Пасков \n" +"Авторско право (C) 2000-2002 Ville Syrjälä ,\n" +"Брин Дейвис ,\n" +"Джонатан А. Дейвис ,\n" +"Джереми Тан " #: src/qtui/menus.cc:109 msgid "_Open Folder ..." @@ -3187,12 +3028,16 @@ msgid "Audio Settings ..." msgstr "Настройки на звук..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" -msgstr "" +msgstr "Q#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" +msgstr "T#" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" msgstr "" #: src/qtui/qtui.cc:40 @@ -3205,23 +3050,23 @@ #: src/qtui/settings.cc:58 msgid "Always" -msgstr "" +msgstr "Винаги" #: src/qtui/settings.cc:59 msgid "Auto-hide" -msgstr "" +msgstr "Автоматично скриване" #: src/qtui/settings.cc:60 msgid "Never" -msgstr "" +msgstr "Никога" #: src/qtui/settings.cc:64 msgid "Show playlist tabs:" -msgstr "" +msgstr "Показване на раздели на плейлист:" #: src/qtui/settings.cc:78 msgid "Use bold font for column headers" -msgstr "" +msgstr "Използване на удебелен шрифт за заглавките на колоните" #: src/resample/resample.cc:43 msgid "Sample Rate Converter" @@ -3414,38 +3259,38 @@ msgid "Library" msgstr "Библиотека" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d песен" msgstr[1] "%d песни" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "на този жанр" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "на" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "от" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Брой на показваните резултати:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Сканиране на библиотеката при стартиране" #: src/search-tool-qt/search-tool-qt.cc:170 msgid "Monitor library for changes" -msgstr "" +msgstr "Наблюдаване на библиотеката за промени" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3453,37 +3298,37 @@ "За да внесете музикална библиотека в Audacious, изберете папка и кликнете на " "бутона \"Опресняване\"." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Моля изчакайте..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Избор на папка" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Търсене в библиотека" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "%d от %d резултат е показан" msgstr[1] "%d от %d резултати са показани" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d резултат" msgstr[1] "%d резултати" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Създай списък" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Добавяне в списък" @@ -3587,108 +3432,108 @@ msgid "Repeat point B set." msgstr "Зададена е крайна точка на повторение." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Предусилвател" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Хц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Хц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Хц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Хц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Хц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 кХц" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 кХц" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 кХц" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 кХц" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 кХц" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Тонкоректор на Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Записване - включено" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Записване - изключено" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Превъртане до %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Сила на звука: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Баланс: %d%% ляво" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Баланс: център" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Баланс: %d%% дясно" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Меню с опции" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Деактивиране на „Винаги отгоре“" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Активиране на „Винаги отгоре“" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Кутийка с информация за файла" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Двоен Размер" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Визуализации" @@ -3712,10 +3557,6 @@ msgid "Open URL ..." msgstr "Отваряне на интернет адрес..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Възпроизвеждане" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Списък за изпълнение" @@ -3730,7 +3571,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Услуги" @@ -3747,7 +3588,7 @@ msgstr "Изход" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Информация за песен..." @@ -3767,7 +3608,7 @@ msgid "Clear A-B Repeat" msgstr "Изчистване на А-Б повторение" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Прескачане до песен..." @@ -3860,20 +3701,20 @@ msgstr "Добавяне на файлове..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "По заглавие" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "По име на файл" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "По път до файл" @@ -3901,113 +3742,113 @@ msgid "Remove Selected" msgstr "Премахване на избраните" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Търсене и избиране" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Обръщане на избраното" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Без избрани" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Избор на всички" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "По номер на записа" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "По изпълнител" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "По Албум" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "По изпълнител на албум" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "По дата на издаване" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "По жанр" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "По времетраене" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "По избрано заглавие" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "По коментар" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Случаен списък" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Обръщане на списъка" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Подреждане на избраното" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Подреждане на списъка" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Отваряне на Съдържащата Папка" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Изрязване" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Копиране" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Поставяне" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Поставяне на Края" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "На опашка/без опашка" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d от %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Audacious Редактор на списъка за изпълнение" @@ -4023,167 +3864,220 @@ msgid "Add Folder ..." msgstr "Добавяне на папка..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Търсене на записи в активния списък" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Избор на записи в списъка, филтрирайки едно или повече полета. Полетата " +"използват синтаксис с препинателни знаци, без значение от размера на " +"буквата. Ако не знаете как работи този синтаксис, просто въведете част от " +"това, което търсите." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Заглавие:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Албум:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Изпълнител:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Име на файл:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Изчистване на предишния избор преди търсене" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Автоматично превключване в опашката за съвпадащите елементи" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Създаване на нов списък със съвпадащите елементи" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Търсене" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Плейър:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Избор на основен шрифт за прозореца на плеъра:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Списък за изпълнение:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Избор на шрифт за списъка:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Кожа" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" +"Показване на активната заглавна лента, когато някой прозорец е фокусиран" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Шрифтове" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Избор на растерни шрифтове (поддържа само ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Превъртане на заглавието на песента" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Превъртане на заглавието на песента в двете посоки" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Анализатор" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Осцилоскоп" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Гласов отпечатък / VU-метър" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Изглючено" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Нормално" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Огън" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Вертикални линии" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Линии" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Стълбове" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Най-бавно" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Бавно" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Средно" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Бързо" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Най-бързо" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Точки" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Линия" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Плътно" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Лед" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Размито" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Оцветяване:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Стил:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Падане:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Падане на пиковете:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Осцилоскопичен стил:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Цвят на гласовия отпечатък:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "Стил на VU-метър:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Вид" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Вид на визуализация:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Анализатор" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Показвай пикове" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Изобразяване" @@ -4195,59 +4089,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Неархивирана кожа на Winamp 2.x" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Търсене на записи в активния списък" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Търсене" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Избор на записи в списъка, филтрирайки едно или повече полета. Полетата " -"използват синтаксис с препинателни знаци, без значение от размера на " -"буквата. Ако не знаете как работи този синтаксис, просто въведете част от " -"това, което търсите." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Заглавие:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Албум:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Изпълнител:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Име на файл:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Изчистване на предишния избор преди търсене" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Автоматично превключване в опашката за съвпадащите елементи" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Създаване на нов списък със съвпадащите елементи" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Приставка Sndfile" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4564,39 +4410,39 @@ #: src/streamtuner/icecast-model.cc:126 src/streamtuner/shoutcast-model.cc:131 msgid "Type" -msgstr "" +msgstr "Тип" #: src/streamtuner/icecast-model.cc:132 msgid "Current Song" -msgstr "" +msgstr "Сегашна песен" #: src/streamtuner/icecast-model.cc:164 msgid "Other" -msgstr "" +msgstr "Други" #: src/streamtuner/ihr-model.cc:63 msgid "Market" -msgstr "" +msgstr "Пазар" #: src/streamtuner/ihr-model.cc:156 msgid "Call Letters" -msgstr "" +msgstr "Повиквателни писма" #: src/streamtuner/ihr-model.cc:162 msgid "Description" -msgstr "" +msgstr "Описание" #: src/streamtuner/shoutcast-model.cc:128 msgid "Listeners" -msgstr "" +msgstr "Слушатели" #: src/streamtuner/shoutcast-model.cc:188 msgid "Top 500 Stations" -msgstr "" +msgstr "Топ 500 станции" #: src/streamtuner/shoutcast-model.cc:189 msgid "Alternative" -msgstr "" +msgstr "Алтернативно" #: src/streamtuner/shoutcast-model.cc:190 msgid "Blues" @@ -4612,7 +4458,7 @@ #: src/streamtuner/shoutcast-model.cc:193 msgid "Decades" -msgstr "" +msgstr "Десетолетиня" #: src/streamtuner/shoutcast-model.cc:194 msgid "Easy Listening" @@ -4620,7 +4466,7 @@ #: src/streamtuner/shoutcast-model.cc:195 msgid "Electronic" -msgstr "" +msgstr "Електронна" #: src/streamtuner/shoutcast-model.cc:196 msgid "Folk" @@ -4628,11 +4474,11 @@ #: src/streamtuner/shoutcast-model.cc:197 msgid "Inspirational" -msgstr "" +msgstr "Вдъхновяваща" #: src/streamtuner/shoutcast-model.cc:198 msgid "International" -msgstr "" +msgstr "Международна" #: src/streamtuner/shoutcast-model.cc:199 msgid "Jazz" @@ -4640,7 +4486,7 @@ #: src/streamtuner/shoutcast-model.cc:200 msgid "Latin" -msgstr "" +msgstr "Латин" #: src/streamtuner/shoutcast-model.cc:201 msgid "Metal" @@ -4656,11 +4502,11 @@ #: src/streamtuner/shoutcast-model.cc:205 msgid "Public Radio" -msgstr "" +msgstr "Публично ради" #: src/streamtuner/shoutcast-model.cc:206 msgid "R&B and Urban" -msgstr "" +msgstr "R&B и Urban" #: src/streamtuner/shoutcast-model.cc:207 msgid "Rap" @@ -4676,31 +4522,31 @@ #: src/streamtuner/shoutcast-model.cc:210 msgid "Seasonal and Holiday" -msgstr "" +msgstr "Сезонни и празнични" #: src/streamtuner/shoutcast-model.cc:211 msgid "Soundtracks" -msgstr "" +msgstr "Саундтракове" #: src/streamtuner/shoutcast-model.cc:212 msgid "Talk" -msgstr "" +msgstr "Говорене" #: src/streamtuner/shoutcast-model.cc:213 msgid "Themes" -msgstr "" +msgstr "Теми" #: src/streamtuner/streamtuner.cc:59 msgid "Shoutcast" -msgstr "" +msgstr "Шауткаст" #: src/streamtuner/streamtuner.cc:60 msgid "Icecast" -msgstr "" +msgstr "Айскаст" #: src/streamtuner/streamtuner.cc:71 msgid "Stream Tuner" -msgstr "" +msgstr "Поточен тунер" #: src/tonegen/tonegen.cc:45 msgid "Tone Generator" @@ -4730,19 +4576,32 @@ "frequency3;...\n" "напр. tone://2000;2005 за изпълняването на тон от 2000 Хц и тон от 2005 Хц" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Допълнителните съобщения са били скрити.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Работи ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Информация" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "%sне изглежда да е валидна папка." + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Премахване на глас" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4834,30 +4693,32 @@ "VU Meter Plugin for Audacious\n" "Copyright 2017-2019 Marc Sánchez Fauste" msgstr "" +"Добавка за VU Метър за Audacious\n" +"Авторско право 2017-2019 Marc Sánchez Fauste" #: src/vumeter-qt/vumeter_qt.cc:35 msgid "VU Meter Settings" -msgstr "" +msgstr "Настройки за VU Метъра" #: src/vumeter-qt/vumeter_qt.cc:37 msgid "Peak hold time:" -msgstr "" +msgstr "Пиково време на задържане:" #: src/vumeter-qt/vumeter_qt.cc:42 msgid "Fall-off time:" -msgstr "" +msgstr "Време на отпадане:" #: src/vumeter-qt/vumeter_qt.cc:44 msgid "dB/second" -msgstr "" +msgstr "dB/секунда" #: src/vumeter-qt/vumeter_qt.cc:46 msgid "Display legend" -msgstr "" +msgstr "Показване на легенда" #: src/vumeter-qt/vumeter_qt.h:37 msgid "VU Meter" -msgstr "" +msgstr "VU Метър" #: src/waveout/waveout.cc:43 msgid "Win32 waveOut" @@ -4893,14 +4754,38 @@ "\n" "Част от кода е написана от Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "Разкодиране 2SF" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Косинус" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Острър" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "Настройки на XSF" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Време за избледняване по подразбиране:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Режим на интерполация:" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "Споделяеми списъци XML (XSPF)" diff -Nru audacious-plugins-4.1/po/ca.po audacious-plugins-4.3.1/po/ca.po --- audacious-plugins-4.1/po/ca.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/ca.po 2023-04-29 20:17:32.000000000 +0000 @@ -8,16 +8,18 @@ # Catalanoic , 2012 # David Surroca Estrada , 2015-2016 # d396272506fceeee36fb9ecad66ea4ec_9301ee1 <2f2d48fc838758dd413d8847713d8a44_95171>, 2013 +# Josep M. Ferrer , 2023 # Marc Sánchez , 2020 -# Robert Antoni Buj Gelonch , 2016-2018 +# Robert Antoni Buj i Gelonch , 2016-2018 +# Toni Estévez , 2022 msgid "" msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" -"Language-Team: Catalan (http://www.transifex.com/audacious/audacious/" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Josep M. Ferrer , 2023\n" +"Language-Team: Catalan (http://app.transifex.com/audacious/audacious/" "language/ca/)\n" "Language: ca\n" "MIME-Version: 1.0\n" @@ -34,7 +36,7 @@ msgstr "AdPlug (reproductor AdLib)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "seqüenciat" @@ -44,11 +46,13 @@ #: src/adplug/adplug-xmms.cc:350 msgid "OPL Emulator:" -msgstr "" +msgstr "Emulador OPL:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Freqüència de mostreig" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Freqüència de mostreig:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -64,7 +68,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Altres" @@ -72,256 +76,6 @@ msgid "Repeat song in endless loop" msgstr "Repeteix la cançó en un bucle sense fi" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Alarma" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Estableix l'alarma..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Un connector que pot ser utilitzat per iniciar la reproducció en qualsevol " -"moment.\n" -"\n" -"Escrit originalment per Adam Feakin i Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Temps\n" -" Alarma a:\n" -" L'hora que s'activarà l'alarma.\n" -"\n" -" Tranquil després de:\n" -" Atura alarma després d'aquest temps.\n" -" (si el diàleg de despertament no està tancat)\n" -"\n" -"\n" -"Dies\n" -" Dia:\n" -" Selecciona els dies per activar l'alarma.\n" -"\n" -" Temps:\n" -" Escolliu l'hora de l'alarma diària,\n" -" o seleccioneu el botó per utilitzar l'hora per defecte.\n" -"\n" -"\n" -"Volum\n" -" Esvaïment:\n" -" Esvaeix el volum seleccionat per aquest interval de temps.\n" -"\n" -" Comença per:\n" -" Inicia l'esvaïment a partir d'aquest volum.\n" -"\n" -" Acabament:\n" -" El volum per aturar l'esvaïment. Si el temps d'esvaïment és 0 aleshores " -"se selecciona aquest volum i s'inicia la reproducció.\n" -"\n" -"\n" -"Opcions:\n" -" Ordre addicional:\n" -" Activa aquesta ordre durant l'alarma.\n" -"\n" -" Llista de reproducció:\n" -" Carrega aquesta llista de reproducció. Si no hi ha cap llista, " -"s'utilitzarà l'actual.\n" -" També es pot introduir aquí l'URL d'un flux mp3/ogg.\n" -"\n" -" Recordatori:\n" -" Mostra un recordatori quan s'apaga l'alarma.\n" -" Teclegeu el recordatori al camp d'entrada i habiliteu la casella si " -"voleu que es mostri." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Aquest és el vostre avís per despertar." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "El vostre recordatori d'avui és..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Recordatori" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Dilluns" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Dimarts" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Dimecres" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Dijous" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Divendres" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Dissabte" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Diumenge" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Temps" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Alarma (per defecte) a les:" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Para al cap de:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "hores" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minuts" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Trieu els dies que ha de saltar l'alarma" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Dia" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Per defecte" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Dies" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Esvaïment" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "segons" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Volum" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Comença per" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Acabament" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Actual" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Ordre addicional" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "habilita" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Llista de reproducció (opcional)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Selecciona una llista de reproducció" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Opcions" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Què signifiquen aquestes opcions?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Ajuda" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Art de l'àlbum" @@ -469,87 +223,83 @@ msgid "Synthesizer" msgstr "Sintetitzador" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Freqüència de mostreig:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "Connector AMIDI-Plug - Seleccioneu un fitxer SoundFont" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Cancel·la" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Obre" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Nom del fitxer" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Mida (bytes)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Nom:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " Informació MIDI " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Format:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Durada (ms):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Nre. de pistes:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "variable" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Div temps:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " Comentaris MIDI i lletres " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* aquest fitxer MIDI no té comentaris *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* aquest fitxer MIDI no té lletra *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "Tan_car" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (UTF-8 no vàlid)" @@ -605,7 +355,7 @@ msgid "Concave Rectangle" msgstr "Rectangle còncau" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Cap" @@ -643,94 +393,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Dispara l'OSD quan la reproducció deixa d'estar en pausa." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Posició" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Desplaçament relatiu X:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Desplaçament relatiu Y:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Amplada màxima de l'OSD:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Opcions diversos monitors" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Mostra l'OSD en:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "tots els monitors" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "el monitor %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Durada (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Visible:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Esvaïment d'entrada:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Esvaïment de sortida:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Tipus de lletres" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Lletra %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Ombra" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Estil de representació" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Colors" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Color %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Habilita el disparador" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Esdeveniment" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "S'ha detectat un gestor de composicions" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -740,56 +490,56 @@ "tret que sapigueu que ja n'està funcionant un, activeu un gestor de " "composicions o l'OSD no funcionarà correctament" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "La transparència simulada no requereix un gestor de composicions" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Transparència" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Transparència simulada" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Transparència real (requereix l'extensió de composicions de les X)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "L'extensió de composicions no està carregada" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "OSD d'Audacious" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Posició" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animació" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Text" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Decoració" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Disparador" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Misc" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Prova" @@ -805,11 +555,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Llistes de reproducció d'Audacious (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Profunditat de bits:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Taxa de reducció de la mostra:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Color" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Oscil·loscopi difús" @@ -821,6 +587,10 @@ msgid "Presets:" msgstr "Valors preestablerts:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Per defecte" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Nivell de canal:" @@ -833,7 +603,7 @@ msgid "Cut frequency:" msgstr "Retalla la freqüència:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Analitzador espectral" @@ -884,7 +654,7 @@ #: src/cdaudio/cdaudio-ng.cc:143 msgid "Use CDDB" -msgstr "Utilitza CDDB" +msgstr "Utilitza la CDDB" #: src/cdaudio/cdaudio-ng.cc:145 msgid "Use HTTP instead of CDDBP" @@ -929,53 +699,53 @@ msgid "Audio CD" msgstr "CD d'àudio" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "No s'ha pogut obrir el dispositiu de CD %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "No s'ha trobat cap unitat de CD d'àudio." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "La unitat està buida." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Tipus de disc no admès." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "No s'ha pogut acabar la inicialització de la unitat CD oberta." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "No s'ha pogut recuperar el primer/últim número de pista." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "No es pot llegir el LSN de començament o d'acabament per la pista %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." -msgstr "" +msgstr "No s'ha pogut crear la connexió a la CDDB." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" -msgstr "No s'ha pogut consultar al servidor CDDB" +msgstr "No s'ha pogut consultar al servidor de CDDB" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" -msgstr "No s'ha pogut consultar al servidor CDDB: %s" +msgstr "No s'ha pogut consultar al servidor de la CDDB: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" -msgstr "" +msgstr "No s'ha pogut llegir la informació de la CDDB: %s" #: src/cd-menu-items/cd-menu-items.cc:33 msgid "Audio CD Menu Items" @@ -1045,6 +815,13 @@ msgid "Default song length:" msgstr "Durada per defecte:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "segons" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Remostreig" @@ -1073,7 +850,7 @@ msgid "CoreAudio output" msgstr "Sortida CoreAudio" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1093,13 +870,15 @@ "Basat en el connector de sortida SDL per a Audacious\n" "Drets d'autor 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Utilitza el mode exclusiu" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" +"Utilitza un àudio perfecte en bits (adaptar la taxa de mostreig del " +"dispositiu)" #: src/crossfade/crossfade.cc:43 msgid "" @@ -1194,20 +973,20 @@ msgid "Delete" msgstr "Elimina" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Cancel·la" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Suprimeix els fitxers seleccionats" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Mètode de supressió" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Mou a la paperera en comptes de suprimir immediatament" @@ -1233,7 +1012,7 @@ msgstr "Retard:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1249,11 +1028,11 @@ msgid "Echo" msgstr "Eco" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Connector FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1377,89 +1156,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "8 kbit/s" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "16 kbit/s" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "32 kbit/s" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "40 kbit/s" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "48 kbit/s" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "56 kbit/s" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "64 kbit/s" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "80 kbit/s" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "96 kbit/s" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "112 kbit/s" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "128 kbit/s" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "160 kbit/s" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "192 kbit/s" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "224 kbit/s" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "256 kbit/s" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "320 kbit/s" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Estèreo conjunt" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Estèreo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1571,7 +1350,7 @@ msgid "Quality (0-1):" msgstr "Qualitat (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "General" @@ -1580,11 +1359,11 @@ msgid "FLAC Decoder" msgstr "Descodificador FLAC" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "sense pèrdues" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1616,7 +1395,7 @@ msgid "Invalid open mode" msgstr "Mode d'obriment no vàlid" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1636,116 +1415,134 @@ "\n" "Llicència: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "Analitzador espectral d'OpenGL" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "Número d'entrada" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Títol" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Artista" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Any" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Àlbum" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Artista de l'àlbum" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Pista" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Gènere" -#: src/gtkui/columns.cc:43 -msgid "Queue position" +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" msgstr "Posició a la cua" -#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Durada" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "Camí al fitxer" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Títol personalitzat" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Nom del fitxer" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Títol personalitzat" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Taxa de bits" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Comentari" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "Editorial" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "Número del catàleg" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Columnes disponibles" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Columnes mostrades" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Eina de cerca" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Acoblador a l'esquerre" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Acoblador a la dreta" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Acoblador a la part superior" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Acoblador a la part inferior" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Desacoblar" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Inhabilita" @@ -1785,8 +1582,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "Re_produeix" @@ -1814,12 +1611,12 @@ #: src/gtkui/menus.cc:97 src/qtui/menus.cc:145 src/skins/menus.cc:114 #: src/skins-qt/menus.cc:105 msgid "Previous Album" -msgstr "" +msgstr "Àlbum anterior" #: src/gtkui/menus.cc:98 src/qtui/menus.cc:146 src/skins/menus.cc:115 #: src/skins-qt/menus.cc:106 msgid "Next Album" -msgstr "" +msgstr "Àlbum següent" #: src/gtkui/menus.cc:100 src/qtui/menus.cc:148 msgid "_Repeat" @@ -1963,8 +1760,8 @@ msgid "Remove _Unavailable Files" msgstr "Elimina els fitxers _no disponibles" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Nou" @@ -1974,7 +1771,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "Suprimei_x" @@ -2028,7 +1825,7 @@ #: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 msgid "Show Info Bar _Album Art" -msgstr "" +msgstr "Mostra la _caràtula a la barra d'informació" #: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 msgid "Show Info Bar Vis_ualization" @@ -2105,7 +1902,7 @@ msgstr "Selecciona-ho _tot" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Reanomena..." @@ -2133,197 +1930,202 @@ msgid "Show column headers" msgstr "Mostra les capçaleres de les columnes" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "Usa icones simbòliques a la barra d'eines " + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Desplaça amb el canvi de cançó" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Interfície de GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Gestió de memòria intermèdia..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Reprodueix" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Pausa" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Cerca la biblioteca" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Obre els fitxers" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Afegeix els fitxers" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Anterior" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Atura" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Següent" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Enregistra el flux" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Repeteix" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Ordre aleatori" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" -msgstr "" +msgstr "Menú" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "estèreo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d canal" msgstr[1] "%d canals" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "%d kbit/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Mode únic." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Mode de llista de reproducció." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Aturada després de la cançó." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Pista anterior" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Pausa/reprèn" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Pista següent" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" -msgstr "" +msgstr "Un pas endavant" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" -msgstr "" +msgstr "Un pas enrere" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Silencia" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Apuja el volum" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Abaixa el volum" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Salta al fitxer" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Commuta les finestres" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Mostra l'OSD" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Activa repetició" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Commuta l'ordre aleatori" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Commuta l'aturada després de l'actual" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Realça les finestres del reproductor" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(cap)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2334,11 +2136,11 @@ "\n" "Voleu continuar?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Vinculació dels botons del ratolí" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2346,23 +2148,23 @@ "Premeu una combinació de tecles dins del camp de text.\n" "També podeu vincular botons del ratolí." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Tecles ràpides:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Acció:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Vinculació de tecles:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Afegeix" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Tecles ràpides globals" @@ -2380,6 +2182,18 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Complement Dreceres de teclat globals\n" +"Controla el reproductor amb combinacions de tecles globals o amb tecles " +"multimèdia.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Col·laboradors:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +"Bryn Davies ,\n" +"Jonathan A. Davis ,\n" +"Jeremy Tan " #: src/jack/jack-ng.cc:54 msgid "JACK Output" @@ -2387,7 +2201,7 @@ #: src/jack/jack-ng.cc:126 msgid "Client name:" -msgstr "" +msgstr "Nom del client:" #: src/jack/jack-ng.cc:128 msgid "Automatically connect to output ports" @@ -2396,26 +2210,27 @@ #: src/jack/jack-ng.cc:130 msgid "Filter ports (regex, use any port if blank):" msgstr "" +"Filtrar ports (expressió regular, s'utilitza qualsevol si es deixa en blanc):" #: src/jack/jack-ng.cc:136 msgid "Connect to physical ports only" -msgstr "" +msgstr "Connecta només a ports físics" #: src/jack/jack-ng.cc:139 msgid "Upmix to" -msgstr "" +msgstr "Mescla en" #: src/jack/jack-ng.cc:141 msgid "ports if input has fewer channels" -msgstr "" +msgstr "ports si l'entrada té menys canals" #: src/jack/jack-ng.cc:143 msgid "Ignore insufficient number of ports" -msgstr "" +msgstr "Ignora un nombre insuficient de ports" #: src/jack/jack-ng.cc:181 msgid "No JACK output ports were found. Please check settings." -msgstr "" +msgstr "No s'han trobat ports de sortida JACK. Comproveu la configuració." #: src/jack/jack-ng.cc:195 #, c-format @@ -2449,16 +2264,16 @@ "Audacious està reproduint a %d Hz. Utilitzeu l'efecte convertidor de " "freqüència de les mostres per corregir el desajust." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "Ajusts %s" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Camí als mòduls:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2469,25 +2284,25 @@ "Després de l'addició de nous camins, premeu Intro per explorar a la recerca " "de nous connectors." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Connectors disponibles: " -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Habilita" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Connectors habilitats:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Ajusts" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2544,101 +2359,107 @@ msgid "Wait before reconnecting:" msgstr "Espera abans de la reconnexió:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" -msgstr "" +msgstr "Lletres" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" -msgstr "" +msgstr "Enlloc" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" -msgstr "" +msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" -msgstr "" +msgstr "L'artista es trunca al principi, el títol -- al final" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" -msgstr "" +msgstr "Caràcters per truncar:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" +"Caràcters amb OR en una expressió regular, envoltats per espais" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" -msgstr "" +msgstr "Caràcters per a dividir:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" -msgstr "" +msgstr "General" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "Recupera les lletres d'Internet:" + +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" -msgstr "" +msgstr "Emmagatzema les lletres recuperades a la memòria cau local" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" -msgstr "" +msgstr "Emmagatzematge local" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "No és possible capturar %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "No es pot analitzar %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "S'estan cercant les lletres..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Error" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" -msgstr "" +msgstr "Desa localment" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" -msgstr "" +msgstr "Actualitza" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "Llistes de reproducció M3U" @@ -2796,7 +2617,7 @@ msgstr "Aquests ajusts tindran efecte quan es reiniciï Audacious." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Atura després d'aquesta cançó" @@ -2805,41 +2626,17 @@ msgid "Moonstone" msgstr "" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Restableix als valors predeterminats" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "En reproducció ara" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Número d'entrada" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Artista de l'àlbum" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Posició a la cua" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Camí al fitxer" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Nom del fitxer" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Títol personalitzat" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Elements" @@ -2855,7 +2652,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Utilitza el càlcul acurat de la longitud (lent)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Envoltant" @@ -2955,42 +2752,52 @@ msgid "OpenMPT (Module Player)" msgstr "" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" -msgstr "" +msgstr "Interpolació:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Lineal" #: src/openmpt/mptwrap.h:52 msgid "Cubic" -msgstr "" +msgstr "Cúbica" #: src/openmpt/mptwrap.h:53 msgid "Windowed sinc" msgstr "" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "Sortida OSS4" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "Sortida OSS3" @@ -3027,18 +2834,35 @@ "Lindgren and of course the authors of the previous OSS plugin." msgstr "" -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "Sortida del PipeWire" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Reproducció" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Gestor de llistes de reproducció" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Suprimeix" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "Re_anomena" @@ -3054,7 +2878,7 @@ msgid "OpenPSF Configuration" msgstr "" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Ignora la longitud del fitxer" @@ -3135,11 +2959,11 @@ "License: GPLv2+" msgstr "" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "" -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3175,14 +2999,18 @@ msgid "Audio Settings ..." msgstr "Ajusts de l'àudio..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Interfície Qt" @@ -3384,30 +3212,30 @@ msgid "Library" msgstr "Biblioteca" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d cançó" msgstr[1] "%d cançons" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "d'aquest gènere" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "per" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Nombre de resultats a mostrar:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "" @@ -3415,7 +3243,7 @@ msgid "Monitor library for changes" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3423,37 +3251,37 @@ "Per importar la vostra biblioteca de música a Audacious, trieu una carpeta i " "feu clic a la icona «refresca»." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Esperi si us plau..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Seleccioneu un directori" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Cerca la biblioteca" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "%d de %d resultat mostrat" msgstr[1] "%d de %d resultats mostrats" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d resultat" msgstr[1] "%d resultats" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Crea una llista de reproducció" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Afegeix a la llista de reproducció" @@ -3557,108 +3385,108 @@ msgid "Repeat point B set." msgstr "S'ha establert el punt de repetició B." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Preamplificació" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Equalitzador d'Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Enregistrament engegat" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Enregistrament apagat" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Vés a la posició %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Volum: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Balanç: %d%% esquerra" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Balanç: centrat" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Balanç: %d%% dreta" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Menú d'opcions" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Inhabilita 'Sempre per sobre'" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Habilita 'Sempre per sobre'" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Quadre d'informació del fitxer" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Mida doble" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Visualitzacions" @@ -3682,10 +3510,6 @@ msgid "Open URL ..." msgstr "Obre l'URL..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Reproducció" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Llista de reproducció" @@ -3700,7 +3524,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Serveis" @@ -3717,7 +3541,7 @@ msgstr "Surt" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Informació de la cançó..." @@ -3737,7 +3561,7 @@ msgid "Clear A-B Repeat" msgstr "Neteja la repetició A-B" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Salta a la cançó..." @@ -3830,20 +3654,20 @@ msgstr "Afegeix els fitxers..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Per títol" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Per nom de fitxer" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Per camí al fitxer" @@ -3871,113 +3695,113 @@ msgid "Remove Selected" msgstr "Treu els seleccionats" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Cerca i selecciona" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Inverteix la selecció" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Selecciona no res" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Selecciona tots els elements" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Per número de pista" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Per artista" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Per àlbum" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Per artista de l'àlbum" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Per data de llançament" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Per gènere" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Per longitud" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Per títol personalitzat" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Per comentari" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Barreja la llista" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Inverteix la llista" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Ordena els seleccionats" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Ordena la llista" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Obre la carpeta contenidora" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Retalla" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Copia" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Enganxa" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Enganxa a l'acabament" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Afegeix/treu de la cua" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d de %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Editor de la llista de reproducció d'Audacious" @@ -3993,168 +3817,220 @@ msgid "Add Folder ..." msgstr "Afegeix la carpeta..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Cerca les entrades a la llista de reproducció activa" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Seleccioneu elements de la llista de reproducció omplint un o diversos " +"camps. Aquests camps admeten la sintaxi d'expressions regulars i són " +"insensibles a la capitalització. Si no sabeu com funcionen les expressions " +"regulars, podeu escriure literalment el text que busqueu." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Títol: " + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Àlbum:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Artista: " + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Nom del fitxer:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Neteja la selecció anterior abans de cercar" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Posa o treu de la cua automàticament els elements trobats" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Crea una llista de reproducció nova amb els elements trobats" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Cerca" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Reproductor:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "" "Seleccioneu el tipus de lletra de la finestra principal del reproductor:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Llista de reproducció:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Seleccioneu el tipus de lletra de la llista de reproducció:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Tema" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Tipus de lletres" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Utilitza els tipus de lletra bitmap (només és compatible amb ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Desplaça el títol de la cançó" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Desplaça el títol de la cançó en ambdues direccions" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analitzador" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Oscil·loscopi" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Apagat" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normal" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Foc" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Línies verticals" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Línies" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Barres" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Mínim" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Lent" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Mitja" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Ràpid" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Al màxim" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Punts" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Línia" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Sòlid" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Gel" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Suau" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Acoloriment:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Estil:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Caiguda:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Caiguda dels pics:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Estil de l'oscil·loscopi:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Acoloriment de l'empremta de veu:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Tipus" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Tipus de visualització:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analitzador" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Mostra els pics" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Visualització" @@ -4166,59 +4042,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Tema de Winamp 2.x no arxivat" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Cerca les entrades a la llista de reproducció activa" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Cerca" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Seleccioneu elements de la llista de reproducció omplint un o diversos " -"camps. Aquests camps admeten la sintaxi d'expressions regulars i són " -"insensibles a la capitalització. Si no sabeu com funcionen les expressions " -"regulars, podeu escriure literalment el text que busqueu." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Títol: " - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Àlbum:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Artista: " - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Nom del fitxer:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Neteja la selecció anterior abans de cercar" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Posa o treu de la cua automàticament els elements trobats" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Crea una llista de reproducció nova amb els elements trobats" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Connector Sndfile" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4536,7 +4364,7 @@ #: src/streamtuner/ihr-model.cc:162 msgid "Description" -msgstr "" +msgstr "Descripció" #: src/streamtuner/shoutcast-model.cc:128 msgid "Listeners" @@ -4682,19 +4510,32 @@ "feqüència3;...\n" "p. ex. tone://2000;2005 per a reproduir un to de 2000 Hz i un to de 2005 Hz." -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Els missatges següents han estat amagats)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "S'està treballant..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Informació" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Eliminació de la veu" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4848,14 +4689,41 @@ "\n" "Part del codi del connector va ser feta per Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "Descodificador 2SF" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr " Configuració de XSF" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "XSPF (llistes de reproducció XML que es poden compartir)" + +#~ msgid "Sample rate" +#~ msgstr "Freqüència de mostreig" diff -Nru audacious-plugins-4.1/po/cmn.po audacious-plugins-4.3.1/po/cmn.po --- audacious-plugins-4.1/po/cmn.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/cmn.po 2023-04-29 20:17:32.000000000 +0000 @@ -9,9 +9,9 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: 趙惟倫 , 2013\n" "Language-Team: Chinese (Mandarin) (http://www.transifex.com/audacious/" "audacious/language/cmn/)\n" "Language: cmn\n" @@ -29,7 +29,7 @@ msgstr "AdPlug (AdLib 播放器)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "編曲機" @@ -41,8 +41,10 @@ msgid "OPL Emulator:" msgstr "" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" msgstr "" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 @@ -59,7 +61,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "其他選項" @@ -67,212 +69,6 @@ msgid "Repeat song in endless loop" msgstr "" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "鬧鐘" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "" - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"您可以使用此外掛在特定時間播放。\n" -"\n" -"原本是由 Adam Feakin 與 Daniel Stodden 編寫。" - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "這是您的喚醒。" - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "您今天的提醒" - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "提醒" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "星期一" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "星期二" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "星期三" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "星期四" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "星期五" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "星期六" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "星期日" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "時間" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "鈴響於 (預設)" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "多久後靜音:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "小時" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "分鐘" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "選擇想要在哪幾天啟用鬧鐘" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "哪幾天" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "預設" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "週排程" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "淡出" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "秒" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "音量" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "初始音量" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "最終音量" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "目前音量" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "額外命令" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "啟用" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "播放列表 (選用)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "請選擇播放列表" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "選項" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "這些選項代表什麼意思?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "說明" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "專輯封面" @@ -402,87 +198,83 @@ msgid "Synthesizer" msgstr "" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - 選擇 SoundFont 檔案" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "檔案名稱" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "大小 (位元組)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "名稱:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " MIDI 資訊 " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "格式:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "長度 (毫秒):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "音軌編號:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "變動的" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "時間分割:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI 備註與歌詞 " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* 這個 MIDI 檔不包含備註資料 *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* 這個 MIDI 檔不包含歌詞資料 *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "關閉(_C)" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (無效的 UTF-8 字串)" @@ -526,7 +318,7 @@ msgid "Concave Rectangle" msgstr "角落凹陷的矩形" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "無" @@ -562,94 +354,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "當解除暫停時觸發 OSD" -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "放置位置" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "X 軸相對位移:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Y 軸相對位移:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "最大 OSD 寬度:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "多螢幕選項" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "顯示 OSD:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "所有螢幕" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "螢幕 %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "計時 (毫秒)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "顯示:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "淡入:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "淡出:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "字型" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "字型 %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "陰影" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "呈現樣式" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "顏色" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "顏色 %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "啟用觸發器" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "事件" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "已偵測到合成特效管理程式" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -658,56 +450,56 @@ "未偵測到合成特效管理程式;\n" "除非您確定已經執行,否則 OSD 將無法正確啟用。" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "假的透明特效不需要 Composite manager" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "透明" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "假的透明特效" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "真的透明特效 (需要 X Composite 延伸功能)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Composite 延伸功能未載入" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "位置" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "動畫" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "文字" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "裝飾" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "觸發" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "雜項" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "測試" @@ -723,11 +515,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Audacious 播放列表 (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "色彩" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "模糊波形" @@ -739,6 +547,10 @@ msgid "Presets:" msgstr "樣式" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "預設" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "饋送等級:" @@ -751,7 +563,7 @@ msgid "Cut frequency:" msgstr "截斷頻率:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "頻譜分析儀" @@ -846,50 +658,50 @@ msgid "Audio CD" msgstr "音樂 CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "無法開啟 CD 裝置 %s。" -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "找不到可以播放音訊的光碟機。" -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "光碟機是空的。" -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "未支援的光碟類型" -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "開啟的光碟機無法完成初始化。" -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "無法取得第一個或最後的音軌編號。" -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "無法讀取音軌 %d 的起始/結束邏輯磁區編號。" -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "無法查詢 CDDB 伺服器" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "無法查詢 CDDB 伺服器:%s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "" @@ -960,6 +772,13 @@ msgid "Default song length:" msgstr "預設歌曲長度:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "秒" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "重取樣" @@ -988,7 +807,7 @@ msgid "CoreAudio output" msgstr "" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1000,11 +819,11 @@ "Copyright 2010 John Lindgren" msgstr "" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" @@ -1097,20 +916,20 @@ msgid "Delete" msgstr "刪除" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "取消" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "" @@ -1132,7 +951,7 @@ msgstr "延遲:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "毫秒" @@ -1148,11 +967,11 @@ msgid "Echo" msgstr "回音" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "FFmpeg 外掛程式" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1260,76 +1079,76 @@ msgid "32000 Hz" msgstr "" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" +msgid "8 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" +msgid "16 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" +msgid "32 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" +msgid "40 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" +msgid "48 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" +msgid "56 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" +msgid "64 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" +msgid "80 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" +msgid "96 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" +msgid "112 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" +msgid "128 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" +msgid "160 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" +msgid "192 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" +msgid "224 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" +msgid "256 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" +msgid "320 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:450 @@ -1337,12 +1156,12 @@ msgstr "聯合立體聲" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "立體聲" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "單聲道" @@ -1454,7 +1273,7 @@ msgid "Quality (0-1):" msgstr "" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "一般" @@ -1463,11 +1282,11 @@ msgid "FLAC Decoder" msgstr "FLAC 解碼器" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "無損" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1499,7 +1318,7 @@ msgid "Invalid open mode" msgstr "" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1511,116 +1330,134 @@ "License: GPLv2+" msgstr "" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL 頻譜分析儀" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "項目編號" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "標題" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "演出者" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "年分" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "專輯" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "音軌" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "類型" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "佇列位置" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "長度" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "檔案路徑" - -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "自訂標題" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "位元率" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "備註" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "搜尋工具" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "嵌入左方" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "嵌入右方" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "嵌入頂端" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "嵌入底端" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "解除嵌入" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "關閉" @@ -1660,8 +1497,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "播放(_P)" @@ -1838,8 +1675,8 @@ msgid "Remove _Unavailable Files" msgstr "移除不存在的檔案(_U)" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "新增(_N)" @@ -1849,7 +1686,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "" @@ -1980,7 +1817,7 @@ msgstr "選擇全部(_A)" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "重新命名(_R)…" @@ -2008,207 +1845,212 @@ msgid "Show column headers" msgstr "" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "GTK 介面" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "緩衝中…" -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "播放" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "暫停" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "開啟檔案" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "加入檔案" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "上一個" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "停止" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "下一個" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "重複" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "隨機" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "單聲道" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "立體聲" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d 聲道" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "單一模式。" -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "播放列表模式。" -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "播放完成後停止。" -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "上一個音軌" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "暫停/回復" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "下一個音軌" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "靜音" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "提高音量" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "降低音量" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "跳至檔案" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "切換顯示播放器視窗" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "顯示 OSD" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "切換重複播放" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "切換隨機播放" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "播放完目前歌曲後停止" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "將播放器視窗放到最上層" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(無)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" "Do you want to continue?" msgstr "" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "綁定滑鼠按鈕" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2216,23 +2058,23 @@ "請在輸入欄位中按下想要的按鍵組合。\n" "您也可以綁定滑鼠按鈕。" -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "熱鍵:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "動作:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "按鍵綁定:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "全域熱鍵" @@ -2314,16 +2156,16 @@ "%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." msgstr "" -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s 設定" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "模組路徑:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2333,25 +2175,25 @@ "系統除了 LADSPA_PATH 之外也會搜尋這些路徑。\n" "加入新路徑之後請按 Enter 掃描新的外掛。" -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "可用的外掛:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "啟用" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "啟用外掛:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "設定" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2407,101 +2249,105 @@ msgid "Wait before reconnecting:" msgstr "重新連線前的等待時間:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "無法取得 %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "無法分析 %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "尋找歌詞中…" -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "錯誤" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "M3U 播放列表" @@ -2659,7 +2505,7 @@ msgstr "" #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "" @@ -2668,41 +2514,17 @@ msgid "Moonstone" msgstr "" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "正在播放" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "數量" @@ -2718,7 +2540,7 @@ msgid "Use accurate length calculation (slow)" msgstr "" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "環繞" @@ -2815,26 +2637,26 @@ msgid "OpenMPT (Module Player)" msgstr "" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "" @@ -2846,11 +2668,21 @@ msgid "Windowed sinc" msgstr "" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4 輸出" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "" @@ -2892,18 +2724,35 @@ "我想要謝謝 #audacious 上的人們,特別是 Tony Vroon 與 John Lindgren,當然還有" "前一個 OSS 外掛程式的作者。" -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "播放" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "播放列表管理" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "" @@ -2919,7 +2768,7 @@ msgid "OpenPSF Configuration" msgstr "" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "" @@ -2980,11 +2829,11 @@ "License: GPLv2+" msgstr "" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "" -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3020,14 +2869,18 @@ msgid "Audio Settings ..." msgstr "" -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "" @@ -3239,29 +3092,29 @@ msgid "Library" msgstr "媒體櫃" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "" @@ -3269,42 +3122,42 @@ msgid "Monitor library for changes" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." msgstr "" "要將您的媒體櫃匯入至 Audacious,請選擇目標資料夾並且按下「重新整理」圖示。" -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "請稍候…" -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "選擇資料夾" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "搜尋媒體櫃" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "建立播放列表(_C)" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "加入至播放列表(_A)" @@ -3406,108 +3259,108 @@ msgid "Repeat point B set." msgstr "已設定重複點 B。" -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "前置放大" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Audacious 等化器" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "移動至 %d:%-2.2d/%d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "音量:%d%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "平衡:%d% 偏左" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "平衡:中間" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "平衡:%d% 偏右" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "選單選項" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "關閉置頂" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "啟用置頂" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "檔案資訊視窗" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "" @@ -3531,10 +3384,6 @@ msgid "Open URL ..." msgstr "" -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "播放" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "播放列表" @@ -3549,7 +3398,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "" @@ -3566,7 +3415,7 @@ msgstr "" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "" @@ -3586,7 +3435,7 @@ msgid "Clear A-B Repeat" msgstr "" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "" @@ -3679,20 +3528,20 @@ msgstr "" #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "標題" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "" @@ -3720,113 +3569,113 @@ msgid "Remove Selected" msgstr "移除選擇的項目" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "搜尋並選擇" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "反向選擇" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "取消選擇" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "選擇全部" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "音軌編號" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "演出者" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "專輯" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "列表隨機排序" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "列表反向排序" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "排序選擇的項目" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "排序列表" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "剪下" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "拷貝" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "貼上" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d/%d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Audacious 播放列表編輯器" @@ -3842,167 +3691,217 @@ msgid "Add Folder ..." msgstr "" -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "在使用中的播放列表裡搜尋播放項目" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"填入一個或多個欄位以選擇播放列表中的項目。欄位使用正規表示法,大小寫視為不同" +"字元。若您不知道如何使用正規表示法,請輸入您想搜尋的部分文字。" + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "進行搜尋前清空上次的選擇項目" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "自動切換至符合項目的佇列" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "以符合的項目建立新的播放列表" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "選擇播放器主視窗字型:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "選擇播放列表字型:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "使用點陣字型 (只支援 ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "雙向捲動歌曲標題" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "分析儀" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "示波器" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "關閉" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "標準" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "火焰" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "線條" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "棒狀" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "最慢" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "慢" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "中等" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "快" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "最快" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "冰霜" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "平滑" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "視覺特效" @@ -4014,57 +3913,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "未壓縮的 Winamp 2.x skin" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "在使用中的播放列表裡搜尋播放項目" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"填入一個或多個欄位以選擇播放列表中的項目。欄位使用正規表示法,大小寫視為不同" -"字元。若您不知道如何使用正規表示法,請輸入您想搜尋的部分文字。" - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "進行搜尋前清空上次的選擇項目" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "自動切換至符合項目的佇列" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "以符合的項目建立新的播放列表" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Sndfile 外掛程式" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4518,19 +4371,32 @@ "用法:加入網址:tone://frequency1;frequency2;frequency3;…\n" "範例:tone://2000;2005 會播放 2000 HZ 和 2005HZ 的正弦波" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(詳細訊息已被隱藏。)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "" -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "人聲移除" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4668,14 +4534,38 @@ "\n" "其中一些外掛程式碼是由 Miles Egan 編寫。" -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2SF 解碼器" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "XML 可分享式播放列表 (XSPF)" diff -Nru audacious-plugins-4.1/po/cs.po audacious-plugins-4.3.1/po/cs.po --- audacious-plugins-4.1/po/cs.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/cs.po 2023-04-29 20:17:32.000000000 +0000 @@ -3,7 +3,7 @@ # This file is distributed under the same license as the Audacious Plugins package. # # Translators: -# Jiří Vírava , 2012-2013 +# Appukonrad , 2012-2013 # Based on audacious-1.2.2.cs.po by Jan Nárovec , 2004 # fri, 2012-2013 # Andy Andy , 2014 @@ -21,9 +21,9 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Lukáš Kotek , 2020\n" "Language-Team: Czech (http://www.transifex.com/audacious/audacious/language/" "cs/)\n" "Language: cs\n" @@ -42,7 +42,7 @@ msgstr "AdPlug (AdLib přehrávač)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "seřazen" @@ -54,9 +54,11 @@ msgid "OPL Emulator:" msgstr "OPL emulátor:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Vzorkovací kmitočet" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Vzorkovací frekvence:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -72,7 +74,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Různé" @@ -80,256 +82,6 @@ msgid "Repeat song in endless loop" msgstr "Opakovat nahrávku v nekonečné smyčce" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Budík" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Nastavit budík..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Zásuvný modul pro spuštění přehrávání v přesně určený čas.\n" -"\n" -"Původně napsal Adam Feakin a Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Čas\n" -"Budit v:\n" -"Čas budíčku.\n" -"\n" -"Ticho po:\n" -"Zastavit budík po uplynutí této doby.\n" -"(pokud nebude budící dialog uzavřen)\n" -"\n" -"Dny\n" -"Den:\n" -"Vyberte dny, kdy má budík fungovat.\n" -"\n" -"Čas:\n" -"Vyberte čas budíčku pro každý den,\n" -"nebo použijte standardní čas.\n" -"\n" -"Hlasitost\n" -"Zesilování:\n" -"Zesiluje až na určenou úroveň po vybranou dobu.\n" -"\n" -"Začít na:\n" -"Zesilovat začne na této hlasitosti.\n" -"\n" -"Skončit na:\n" -"Hlasitost na konci zesílení.\n" -"Je-li doba zesilování 0, pak hlasitost bude tato.\n" -"\n" -"Volby:\n" -"Dodatečný příkaz:\n" -"Tento příkaz bude vykonán v době budíčku.\n" -"\n" -"Seznam skladeb:\n" -"Načte tento seznam skladeb, z kterého bude\n" -"hrát - musí mít příponu m3u.\n" -"Není-li seznam zadán budou použity skladby,\n" -"které budou v aktuálním seznamu skladeb.\n" -"URL MP3/OGG proudu zde také může být\n" -"zadáno, ale načítání seznamu skladeb z URL\n" -"není v současnosti podporováno.\n" -"\n" -"Upomínání:\n" -"Při vypnutí budíku zobrazí vzkaz.\n" -"Text vzkazu vepište do vstupního pole a\n" -"zapněte přepínač, přejete-li si zobrazovat vzkaz." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Toto je váš budící signál." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Vaše připomínka pro dnešek je..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Upomínání" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Pondělí" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Úterý" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Středa" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Čtvrtek" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Pátek" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Sobota" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Neděle" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Čas" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Budit v (výchozí):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Ticho po:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "h" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "min" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Vyberte dny, kdy má budík budit" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Den" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Výchozí" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Dny" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Zesilování" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "sekund" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Hlasitost" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Začít na" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Skončit na" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Současná" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Dodatečný příkaz" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "zapnout" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Seznam skladeb (volitelné)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Vybrat seznam skladeb" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Nastavení" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Co tyto volby znamenají?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Nápověda" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Obal alba" @@ -478,87 +230,83 @@ msgid "Synthesizer" msgstr "Synthesizer" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Vzorkovací frekvence:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug – vyberte soundfontový soubor" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Zrušit" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Otevřít" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Název souboru" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Velikost (v bajtech):" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Jméno:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " Podrobnosti o MIDI " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Formát:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Délka (ms):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Počet stop:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "proměnlivé" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (váž.):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Čas. pom.:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " Komentáře a text MIDI skladby " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* v MIDI souboru se nenachází žádné komentáře *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* v MIDI souboru se nenachází text skladby *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Zavřít" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (neplatné UTF8)" @@ -614,7 +362,7 @@ msgid "Concave Rectangle" msgstr "Konkávní obdélník" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Žádný" @@ -650,94 +398,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Spustí OSD, když přehrávání obnoveno." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Umístění" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Relativní odsazení ve směru osy X:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Relativní odsazení ve směru osy Y" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Maximální šířka OSD" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Nastavení pro více monitorů" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Zobrazit OSD na:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "všech monitorech" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "monitoru %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Časování (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Zobrazení:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Rozsvícení:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Pohasnutí:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Fonty" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Font %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Stín" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Styl vyobrazení" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Barvy" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Barvy %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Povolit spouštěč" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Událost" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Nalezen kompozitní správce" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -747,56 +495,56 @@ "Pokud nevíte, že byste jste již nějakého spustili, prosím, aktivujte " "kompozitního správce, jinak OSD nebude správně fungovat." -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Při falešné průhlednosti není kompozitní správce potřeba" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Průhlednost" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Falešná průhlednost" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Skutečná průhlednost (vyžaduje kompozitní rozšíření X)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Kompozitní rozšíření není nahráno" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "OSD Audacious" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Umístění" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animace" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Text" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Výzdoba" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Spouštěč" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Různé" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Zkouška" @@ -812,11 +560,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Audacious seszam skladeb (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Barva" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Rozostřený osciloskop" @@ -828,6 +592,10 @@ msgid "Presets:" msgstr "Předvolby:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Výchozí" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Úroveň přeslechu:" @@ -840,7 +608,7 @@ msgid "Cut frequency:" msgstr "Ořezová frekvence:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Analyzátor spektra" @@ -935,50 +703,50 @@ msgid "Audio CD" msgstr "Zvukové CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Nelze otevřít CD zařízení %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Nebyly nalezeny funkční CD mechaniky" -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Mechanika je prázdná" -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Nepodporovaný druh disku." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Nepodařilo se dokončit inicializaci otevření CD mechaniky." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Nepodařilo se načíst první/poslední číslo skladby." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "nelze přečíst začátek/konec LSN pro skladbu %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Selhalo vytvoření CDDB spojení." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Nepodařil se dotaz na server CDDB" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Nepodařil se dotaz na server CDDB: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Selhalo čtení CDDB informace: %s" @@ -1051,6 +819,13 @@ msgid "Default song length:" msgstr "Výchozí délka skladby:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "sekund" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Převzorkování" @@ -1079,7 +854,7 @@ msgid "CoreAudio output" msgstr "CoreAudio výstup" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1099,11 +874,11 @@ "Založeno na výstupním pluginu SDL pro Audacious\n" "Copyright 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Použij exkluzivní mód" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "Použit bitově dokonalý zvuk (přizpůsobit vzorkovací kmitočet zařízení)" @@ -1200,20 +975,20 @@ msgid "Delete" msgstr "Smazat" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Zrušit" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Smazat vybrané soubory" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Metoda mazání" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Presuň do koše místo okamžitého smazání" @@ -1239,7 +1014,7 @@ msgstr "Zpoždění:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1255,11 +1030,11 @@ msgid "Echo" msgstr "Ozvěna" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "FFmpeg plugin" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1381,89 +1156,89 @@ msgid "32000 Hz" msgstr "32000Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8kb/s" +msgid "8 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16kb/s" +msgid "16 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32kb/s" +msgid "32 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40kb/s" +msgid "40 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48kb/s" +msgid "48 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56kb/s" +msgid "56 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64kb/s" +msgid "64 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80kb/s" +msgid "80 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96kb/s" +msgid "96 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112kb/s" +msgid "112 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128kb/s" +msgid "128 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160kb/s" +msgid "160 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192kb/s" +msgid "192 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224kb/s" +msgid "224 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256kb/s" +msgid "256 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320kb/s" +msgid "320 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Joint-stereo" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1575,7 +1350,7 @@ msgid "Quality (0-1):" msgstr "Kvalita (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Obecné" @@ -1584,11 +1359,11 @@ msgid "FLAC Decoder" msgstr "FLAC dekodér" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "Bezztrátová kvalita" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1620,7 +1395,7 @@ msgid "Invalid open mode" msgstr "Neplatný způsob otvírání" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1640,116 +1415,134 @@ "\n" "Licence: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL analyzátor spektra" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "Číslo položky" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "Vstupní číslo" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Název" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Umělec" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Rok" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Album" -#: src/gtkui/columns.cc:40 -msgid "Album artist" -msgstr "Umělec alba" - #: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr "Album Umělec" + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Stopa" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Žánr" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "Umístění ve frontě" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "Pozice fronty" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Délka" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "Cesta k souboru" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "Cesta souboru" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Název souboru" -#: src/gtkui/columns.cc:47 -msgid "Custom title" +#: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" msgstr "Vlastní název" -#: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Datový tok" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Komentář" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Použitelné sloupce" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Zobrazené sloupce" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Vyhledávací nástroj" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Umístit vlevo" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Umístit vpravo" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Umístit nahoru" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Umístit dolů" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Neumisťovat" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Zakázat" @@ -1789,8 +1582,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Hrát" @@ -1967,8 +1760,8 @@ msgid "Remove _Unavailable Files" msgstr "Odstranit nedost_upné soubory" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Nový" @@ -1978,7 +1771,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "Odstranit" @@ -2109,7 +1902,7 @@ msgstr "Vybr_at vše" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Přejmenovat..." @@ -2137,104 +1930,109 @@ msgid "Show column headers" msgstr "Zobrazovat hlavičky sloupců" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Posun při změně skladby" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Rozhraní GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s – Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Plnění vyrovnávácí paměti…" -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Hrát" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Pozastavit" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Prohledat knihovnu" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Otevřít soubory" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Přidat soubory" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Předchozí" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Zastavit" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Další" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Záznam proudu" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Opakovat" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Náhodné přehrávání" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" @@ -2243,93 +2041,93 @@ msgstr[2] "%d kanálů" msgstr[3] "%d kanálů" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%dkHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kb/s" +msgid "%d kbit/s" +msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Režim jedné skladby." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Režim seznamu skladeb." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Zastavuje po skladbě." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Předchozí skladba" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Pozastavit/Pokračovat" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Další stopa" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "Krok vpřed" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "Krok zpět" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Vypnout zvuk" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Zvýšit hlasitost" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Snížit hlasitost" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Přejít na soubor" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Přepnout okno přehrávače" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Zobrazit OSD (nápis na obrazovce)" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Přepnout opakování" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Přepnout zamíchání" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Přepnout zastavení po současné skladbě" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Vyvolat okno přehrávače" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(žádné)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2340,11 +2138,11 @@ "\n" "Chcete pokračovat?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Přiřazuji tlačítka myši" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2352,23 +2150,23 @@ "Uvnitř textového pole stiskněte kombinaci kláves.\n" "Navázat lze také tlačítka myši." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Horké klávesy:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Akce" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Navázání kláves:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Přidat" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Globální klávesové zkratky" @@ -2471,16 +2269,16 @@ "JACK server vyžaduje vzorkovací kmitočet %d Hz, ale Audacious přehrává na %d " "Hz. Prosím použijte efekt Převodník vzorkovacího kmitočtu na opravu." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "Nastavení %s" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Cesta k modulům:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2491,25 +2289,25 @@ "Po té, co přidáte novou cestu, je třeba stisknout Enter, aby se vyhledaly " "nové moduly." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Dostupné moduly:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Povolit" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Povolené moduly:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Nastavení" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2566,101 +2364,105 @@ msgid "Wait before reconnecting:" msgstr "Vyčkat před opětovným připojením:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "Text skladby" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Nikde" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "Internetové zdroje" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "Získat text skladby z:" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "Uchovat získané texty skladeb v lokální mezipaměti" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Lokální úložiště" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "Načíst soubor s texty skladeb (.lrc) z lokálního úložiště" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Nelze načíst %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Nelze analyzovat %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Hledám text skladby..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Chyba" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "Text skladby nebyl nalezen." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "Chybějící název a/nebo umělec." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Uložit lokálně" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Obnovit" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "M3U seznamy skladeb" @@ -2818,7 +2620,7 @@ msgstr "Tyto nastavení se projeví až po restartu Audacious." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Zastavit po této skladbě" @@ -2827,41 +2629,17 @@ msgid "Moonstone" msgstr "" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Obnovit výchozí nastavení" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Nyní hraje" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Vstupní číslo" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Album Umělec" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Pozice fronty" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Cesta souboru" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Název souboru" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Vlastní název" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Položky" @@ -2877,7 +2655,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Použij přesný výpočet délky (pomalé)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Prostorový zvuk" @@ -2977,7 +2755,7 @@ msgid "OpenMPT (Module Player)" msgstr "OpenMPT (modulární přehrávač)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -2987,19 +2765,19 @@ "\n" "Napsal: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Stereo separace:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "Interpolace:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Lineární" @@ -3011,11 +2789,21 @@ msgid "Windowed sinc" msgstr "Sinc v okně" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4 výstup" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "OSS3 výstup" @@ -3057,18 +2845,35 @@ "Rád bych poděkoval lidem z #audacious, zejména Tonymu Vroonnovy a Johnu " "Lindgrennovy a samozřejmě také autorům předešlého OSS zásuvného modulu." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Přehrát" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Správce seznamu skladeb" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Odstranit" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "Přejmenovat" @@ -3084,7 +2889,7 @@ msgid "OpenPSF Configuration" msgstr "Konfigurace OpenPSF" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Ignoruj délku ze souboru" @@ -3163,11 +2968,11 @@ "License: GPLv2+" msgstr "" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "" -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3203,14 +3008,18 @@ msgid "Audio Settings ..." msgstr "Nastavení zvuku..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Qt rozhraní" @@ -3426,7 +3235,7 @@ msgid "Library" msgstr "Knihovna" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" @@ -3435,23 +3244,23 @@ msgstr[2] "%d skladeb" msgstr[3] "%d skladeb" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "tohoto žánru" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "na" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "od" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Počet výsledků k zobrazení:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Při spuštění přeskenovat knihovnu" @@ -3459,7 +3268,7 @@ msgid "Monitor library for changes" msgstr "Monitorovat knihovnu kvůli změnám" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3467,19 +3276,19 @@ "Hudební knihovnu se do Audacious naimportuje tak, že vyberete složku a pak " "kliknete na ikonu „obnovit“." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Prosím, počkejte…" -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Vybrat složku" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Prohledat knihovnu" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" @@ -3488,7 +3297,7 @@ msgstr[2] "Zobrazeno %d z %d výsledků" msgstr[3] "Zobrazeno %d z %d výsledků" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" @@ -3497,11 +3306,11 @@ msgstr[2] "%d výsledků" msgstr[3] "%d výsledků" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Vytvořit seznam skladeb" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "Přid_at do seznamu skladeb" @@ -3605,108 +3414,108 @@ msgid "Repeat point B set." msgstr "Nastavit bod opakování B." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Předzesílení" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz " -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Ekvalizér" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Záznam zapnut" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Záznam vypnut" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Přejít na %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Hlasitost: %d %%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Vyvážení: %d %% vlevo" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Vyvážení: střed" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Vyvážení: %d %% vpravo" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Nabídka nastavení" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Vypnout „Vždy na vrchu“" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Zapnout „Vždy na vrchu“" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Informace o souboru" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Dvojitá velikost" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Vizualizace." @@ -3730,10 +3539,6 @@ msgid "Open URL ..." msgstr "Otevři URL ..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Přehrát" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Seznam skladeb" @@ -3748,7 +3553,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Služby" @@ -3765,7 +3570,7 @@ msgstr "Ukončit" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Informace o skladbě ..." @@ -3785,7 +3590,7 @@ msgid "Clear A-B Repeat" msgstr "Smazat A-B opakování" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Přejít na skladbu ..." @@ -3878,20 +3683,20 @@ msgstr "Přidej soubory ..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Podle názvu" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Podle názvu souboru" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Podle cesty k souboru" @@ -3919,113 +3724,113 @@ msgid "Remove Selected" msgstr "Odebrat označené" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Hledání a výběr" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Invertovat výběr" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Nevybrat žádné" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Vybrat vše" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Podle čísla stopy" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Podle umělce" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Podle alba" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Podle umělce alba" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Podle data vydání" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Podle žánru" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Podle délky" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Podle vlastního názvu" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Podle komentáře" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Zamíchat pořadí" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Otočit seznam" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Seřadit vybrané" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Seřadit seznam" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Otevřít obsahující složku" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Oříznout" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Kopírovat" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Vložit" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Vložit na konec" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Přidat/odebrat do/z fronty" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d z %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Zobrazit editor seznamu skladeb" @@ -4041,167 +3846,219 @@ msgid "Add Folder ..." msgstr "Přidat složku..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Vyhledat skladby v současném seznamu skladeb" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Položky seznamu skladeb vyberete vyplněním jednoho, nebo více polí. Pole " +"používají regulární výrazy a neberou ohled na velikost písmen. Pokud " +"regulárním výrazům nerozumíte, jednoduše vložte části textu, které chcete " +"vyhledat." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Název:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Album:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Umělec:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Jméno souboru:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Před hledáním vymazat předchozí výběr" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Shodující se položky automaticky zařadit/vyřadit z fronty" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Ze shodujících se položek vytvořit nový seznam skladeb" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Hledej" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Přehrávač:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Font v hlavním okně přehrávače:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Seznam skladeb:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Vyberte font pro seznam skladeb:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Téma vzhledu" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Písma" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Použít bitmapové fonty (podporuje pouze ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Posouvání názvu skladby" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Převíjet název skladby oběma směry" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analyzátor" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Vlnovka" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Zvukový otisk / VU metr" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Žádný" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normální" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Oheň" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Svislé čáry" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Čáry" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Sloupce" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Nejpomalejší" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Pomalé" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Střední" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Rychlé" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Nejrychlejší" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Body" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Čára" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Plná vlnovka" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Led" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Plynulý" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Barevné schéma:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Styl:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Klesání:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Klesání vrcholku:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Styl vlnovky:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Barevné schéma zvukového otisku:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "Styl VU metru." -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Typ" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Typ vizualizace:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analyzátor" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Zobrazovat zvukové špičky" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Vizualizace" @@ -4213,59 +4070,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Nezabalený skin Winampu 2.x" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Vyhledat skladby v současném seznamu skladeb" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Hledej" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Položky seznamu skladeb vyberete vyplněním jednoho, nebo více polí. Pole " -"používají regulární výrazy a neberou ohled na velikost písmen. Pokud " -"regulárním výrazům nerozumíte, jednoduše vložte části textu, které chcete " -"vyhledat." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Název:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Album:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Umělec:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Jméno souboru:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Před hledáním vymazat předchozí výběr" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Shodující se položky automaticky zařadit/vyřadit z fronty" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Ze shodujících se položek vytvořit nový seznam skladeb" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Sndfile modul" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4745,19 +4554,32 @@ "Návod: Použij URL: tone://frekvence1;frekvence2;frekvence3;...\n" "např. tone://2000;2005 přehraje 2000 Hz tón a 2005 Hz tón" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Další zprávy jsou skryty.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Pracuji ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Informace" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Odstranění hlasu" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4910,14 +4732,38 @@ "\n" "Některý kód pluginů vytvořil Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2SF dekodér" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr " Konfigurace XSF" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "XML Shareable Playlists (XSPF)" diff -Nru audacious-plugins-4.1/po/da.po audacious-plugins-4.3.1/po/da.po --- audacious-plugins-4.1/po/da.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/da.po 2023-04-29 20:17:32.000000000 +0000 @@ -9,9 +9,9 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2021-01-17 15:01+0000\n" -"Last-Translator: Joe Hansen \n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Joe Hansen , 2013-2014,2016,2020-2021\n" "Language-Team: Danish (http://www.transifex.com/audacious/audacious/language/" "da/)\n" "Language: da\n" @@ -29,7 +29,7 @@ msgstr "AdPlug (AdLib-afspiller)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "sekventeret" @@ -41,9 +41,11 @@ msgid "OPL Emulator:" msgstr "OPL-emulator:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Samplefrekvens" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Samplefrekvens:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -59,7 +61,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Diverse" @@ -67,260 +69,6 @@ msgid "Repeat song in endless loop" msgstr "Gentag sang i uendelig løkke" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Alarm" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Angiv alarm ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Et udvidelsesmodul som kan bruges til at påbegynde afspilning på et bestemt " -"tidspunkt.\n" -"\n" -"Oprindeligt skrevet af Adam Feakin og Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Tid\n" -" Alarm ved:\n" -" Tidspunktet hvor alarmen skal gå i gang.\n" -"\n" -" Stille efter:\n" -" Stop alarm efter denne tid.\n" -" (hvis opvågningsdialogen ikke er lukket)\n" -"\n" -"\n" -"Dage\n" -" Dag:\n" -" Vælg dagene hvor alarmen skal aktiveres.\n" -"\n" -" Tid:\n" -" Vælg tidspunktet til alarmen for hver enkelt dag,\n" -" eller vælg skift-knappen for at bruge\n" -" standardtiden.\n" -"\n" -"\n" -"Lydstyrke\n" -" Indtoning:\n" -" Indton lydstyrken til den valgte lydstyrke\n" -" over dette tidsrum.\n" -"\n" -" Start ved:\n" -" Start indtoning fra denne lysstyrke.\n" -"\n" -" Slutning:\n" -" Lydstyrken hvor indtoning skal stoppe ved. Hvis\n" -" indtoningstiden er 0 sæt lydstyrken til dette og\n" -" start afspilning.\n" -"\n" -"\n" -"Valgmuligheder:\n" -" Yderligere kommando:\n" -" Kør denne kommando ved alarmens tid.\n" -"\n" -" Afspilningsliste:\n" -" Indlæs denne afspilningsliste. Hvis ingen\n" -" afspilningsliste gives bruges den nuværende.\n" -" URL'en til en mp3-/ogg-strøm\n" -" kan også indtastes her.\n" -"\n" -" Påmindelse:\n" -" Vis en påmindelse når alarmen går i gang.\n" -" Indtast påmindelsen i inputfeltet og aktivér\n" -" afkrydsningsboksen hvis du vil have at den skal vises." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Så gik alarmen." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Din påmindelse for i dag er ..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Påmindelse" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Mandag" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Tirsdag" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Onsdag" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Torsdag" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Fredag" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Lørdag" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Søndag" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Tid" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Alarm (standard):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "t" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Stille efter:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "timer" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minutter" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Vælg dagene hvor alarmen skal udløses" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Dag" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Standard" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Dage" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Overgang" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "sekunder" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Lydstyrke" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Start" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Slut" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Nuværende" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Yderligere kommando" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "aktivér" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Afspilningsliste (valgfri)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Vælg en afspilningsliste" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Indstillinger" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Hvad betyder disse indstillinger?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Hjælp" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Albumomslag" @@ -469,87 +217,83 @@ msgid "Synthesizer" msgstr "Synthesizer" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Samplefrekvens:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - vælg SoundFont-fil" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Annuller" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Åbn" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Filnavn" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Størrelse (byte)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Navn:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " MIDI-information " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Format:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Længde (ms):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Antal spor:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "variabel" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Tidsdiv:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI-kommentarer og sangtekster " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* ingen kommentarer tilgængelig i denne MIDI-fil *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* ingen sangtekster tilgængelige i denne MIDI-fil *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Luk" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (ugyldig UTF-8)" @@ -605,7 +349,7 @@ msgid "Concave Rectangle" msgstr "Konkav rektangel" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Ingen" @@ -641,94 +385,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Udløser skærmdisplay når pause fjernes fra afspilning." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Placering" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Relativ X-forskydning:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Relativ Y-forskydning:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Maks. skærmdisplay-bredde:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Flerskærmsindstillinger" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Vis skærmdisplay med:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "alle skærme" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "skærm %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Timing (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Visning:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Ton ind:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Ton ud:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Skrifttyper" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Skrifttype %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Skygge" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Optegningsstil" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Farver" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Farve %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Aktivér udløser" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Hændelse" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Composite-håndtering detekteret" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -738,56 +482,56 @@ "med mindre du ved at du har en kørende, så aktivér en composite-håndtering " "ellers vil skærmdisplayet ikke fungere korrekt" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Composite-håndtering er ikke krævet for falsk gennemsigtighed" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Gennemsigtighed" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Falsk gennemsigtighed" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Reel gennemsigtighed (kræver X Composite Ext.)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Composite-udvidelse er ikke indlæst" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious skærmdisplay" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Position" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animation" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Tekst" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Dekoration" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Udløser" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Diverse" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Test" @@ -803,11 +547,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Audacious-afspilningslister (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Farve" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Sløret skop" @@ -819,6 +579,10 @@ msgid "Presets:" msgstr "Forhåndsindstillinger:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Standard" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Nyhedskildeniveau:" @@ -831,7 +595,7 @@ msgid "Cut frequency:" msgstr "Klip frekvens:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Spektrumanalyseprogram" @@ -926,50 +690,50 @@ msgid "Audio CD" msgstr "Lyd-cd" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Kunne ikke åbne cd-enhed %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Intet cd-drev med lyd blev fundet." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Drev er tomt." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Disktype er ikke understøttet." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Kunne ikke afslutte initialisering af åbnet cd-drev." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Kunne ikke indhente første/sidste spornummer." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Kan ikke læse start/slut LSN for spor %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Kunne ikke oprette CDDB-forbindelsen." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Kunne ikke forespørge CDDB-serveren" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Kunne ikke forespørge CDDB-serveren: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Kunne ikke læse CDDB-informationen: %s" @@ -1043,6 +807,13 @@ msgid "Default song length:" msgstr "Standardlængde for sang:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "sekunder" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Gensampling" @@ -1071,7 +842,7 @@ msgid "CoreAudio output" msgstr "CoreAudio-udgang" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1091,11 +862,11 @@ "Baseret på SDL-output-udvidelsesmodul til Audacious\n" "Ophavsret 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Brug eksklusiv tilstand" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "Brug bitperfekt lyd (tilpas enhedens samplingsfrekvens)" @@ -1192,20 +963,20 @@ msgid "Delete" msgstr "Slet" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Annuller" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Slet valgte filer" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Slettemetode" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Flyt til papirkurven i stedet for at slette øjeblikkeligt" @@ -1231,7 +1002,7 @@ msgstr "Forsinkelse:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1247,11 +1018,11 @@ msgid "Echo" msgstr "Ekko" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "FFmpeg-udvidelsesmodul" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1374,89 +1145,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Fælles stereo" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1568,7 +1339,7 @@ msgid "Quality (0-1):" msgstr "Kvalitet (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Generelt" @@ -1577,11 +1348,11 @@ msgid "FLAC Decoder" msgstr "FLAC-afkoder" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "uden kvalitetstab" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1613,7 +1384,7 @@ msgid "Invalid open mode" msgstr "Ugyldig åbn-tilstand" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1633,116 +1404,134 @@ "\n" "Licens: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL-spektrumanalyseprogram" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "Postnummer" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Titel" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Kunstner" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "År" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Album" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Kunstner" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Spor" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Genre" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "Køposition" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "Køplacering" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Længde" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "Filsti" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Tilpasset titel" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Filnavn" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Tilpasset titel" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Bithastighed" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Kommentar" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Tilgængelige kolonner" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Viste kolonner" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Søgeværktøj" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Dok til venstre" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Dok til højre" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Dok øverst" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Dok nederst" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Fjern dok" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Deaktivér" @@ -1782,8 +1571,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Afspil" @@ -1960,8 +1749,8 @@ msgid "Remove _Unavailable Files" msgstr "Fjern _utilgængelige filer" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Ny" @@ -1971,7 +1760,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "_Fjern" @@ -2102,7 +1891,7 @@ msgstr "Vælg _alle" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Omdøb ..." @@ -2130,197 +1919,202 @@ msgid "Show column headers" msgstr "Vis teksthoveder for kolonner" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Rul ved skift af sang" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "GTK-grænseflade" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Mellemlagrer ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Afspil" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Pause" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Søg i bibliotek" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Åbn filer" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Tilføj filer" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Forrige" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Stop" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Næste" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Optag strøm" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Gentag" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Bland" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "Menu" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d kanal" msgstr[1] "%d kanaler" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Tilstand for én." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Afspilningstilstand." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Stopper efter sang." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Forrige spor" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Pause/genoptag" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Næste spor" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "Trin fremad" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "Trin baglæns" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Sluk lyden" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Lydstyrke op" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Lydstyrke ned" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Hop til fil" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Skift afspillervindue(r)" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Vis skærmdisplay" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Skift gentag" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Skift bland" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Skift stop efter nuværende" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Hæv afspillervindue(r)" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(ingen)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2330,11 +2124,11 @@ "\n" "Vil du fortsætte?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Binding af museknapper" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2342,23 +2136,23 @@ "Tryk på en tastekombination i et tekstfelt.\n" "Du kan også binde museknapper." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Genvejstaster:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Handling:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Genvejstast:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Tilføj" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Globale genvejstaster" @@ -2457,16 +2251,16 @@ "%d Hz. Brug venligst samplefrekvenskonverter-effekten for at korrigere " "uoverensstemmelsen." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "Indstillinger for %s" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Modulstier:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2477,25 +2271,25 @@ "Efter tilføjelse af nye stier, tryk Retur for at skanne for nye " "udvidelsesmoduler." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Tilgængelige udvidelsesmoduler:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Aktivér" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Aktiverede udvidelsesmoduler:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Indstillinger" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2552,102 +2346,106 @@ msgid "Wait before reconnecting:" msgstr "Vent før du forbinder igen:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "Sangtekster" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Intet sted" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" "Kunstner er afkortet i begyndelsen, titel -- i slutningen" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "Tegn at afkorte ved:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "Tegn er ORed i RegExp, omgivet af mellemrum" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "Tegn at opdele ved:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "Yderligere afkort ved tegn" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "Generelt" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "Opdel titel i kunstner og titel ved tegn" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "Internetkilder" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "Hent sangtekster fra:" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "Lagr hentede sangtekster i lokalt mellemlager" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Lokalt lager" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "Indlæs sangtekstfiler (.lrc) fra lokalt lager" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Kunne ikke hente %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Kunne ikke fortolke %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Kigger efter sangtekster ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Fejl" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "Sangtekster kunne ikke findes." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "Manglende titel og/eller kunstner." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Gem lokalt" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Opdater" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "M3U-afspilningslister" @@ -2805,7 +2603,7 @@ msgstr "Disse indstillinger vil træde i kraft når Audacious bliver genstartet." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Stop efter denne sang" @@ -2814,41 +2612,17 @@ msgid "Moonstone" msgstr "Månesten" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Nulstil til standarder" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Afspiller nu" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Postnummer" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Kunstner" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Køplacering" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Filsti" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Filnavn" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Tilpasset titel" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Poster" @@ -2864,7 +2638,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Brug præcis længdeberegning (langsom)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Surround" @@ -2964,7 +2738,7 @@ msgid "OpenMPT (Module Player)" msgstr "OpenMPT (modulafspiller)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -2974,19 +2748,19 @@ "\n" "Skrevet af: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Stereoadskillelse:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "Interpolation:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Linær" @@ -2998,11 +2772,21 @@ msgid "Windowed sinc" msgstr "Vinduesvindue" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4-udgang" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "OSS3-udgang" @@ -3044,18 +2828,35 @@ "Jeg vil gerne takke folk på #audacious, specielt Tony Vroon og John Lindgren " "og selvfølgelig forfatterne af det tidligere OSS-udvidelsesmodul." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Afspilning" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Håndtering af afspilningsliste" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Fjern" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "_Omdøb" @@ -3071,7 +2872,7 @@ msgid "OpenPSF Configuration" msgstr "OpenPSF-konfiguration" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Ignorer længde fra fil" @@ -3161,11 +2962,11 @@ "\n" "Licens: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "Tryk på en tastekombination i et tekstfelt." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3213,14 +3014,18 @@ msgid "Audio Settings ..." msgstr "Lydindstillinger ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "Q#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "T#" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Qt-grænseflade" @@ -3438,30 +3243,30 @@ msgid "Library" msgstr "Bibliotek" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d sang" msgstr[1] "%d sange" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "i denne genre" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "på" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "af" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Antal resultater som skal vises:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Skan bibliotek igen ved opstart" @@ -3469,7 +3274,7 @@ msgid "Monitor library for changes" msgstr "Overvågningsbibliotek for ændringer" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3477,37 +3282,37 @@ "For at importere dit musikbibliotek til Audacious skal du vælge en mappe og " "så klikke på »Opdater«-ikonet." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Vent venligst ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Vælg mappe" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Søg i bibliotek" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "%d af %d resultat vist" msgstr[1] "%d af %d resultater vist" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d resultat" msgstr[1] "%d resultater" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Opret afspilningsliste" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Tilføj til afspilningsliste" @@ -3611,108 +3416,108 @@ msgid "Repeat point B set." msgstr "Gentagelsespunkt B-sæt." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Preamp" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Audacious-equalizer" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Optagelse aktiveret" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Optagelse deaktiveret" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Søg til %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Lydstyrke: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Balance: %d%% venstre" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Balance: centrum" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Balance: %d%% højre" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Menu for indstillinger" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Deakiver »Altid øverst«" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Aktivér »Altid øverst«" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Filinformationsboks" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Dobbelt størrelse" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Visualiseringer" @@ -3736,10 +3541,6 @@ msgid "Open URL ..." msgstr "Åbn URL ..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Afspilning" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Afspilningsliste" @@ -3754,7 +3555,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Tjenester" @@ -3771,7 +3572,7 @@ msgstr "Afslut" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Sanginformation ..." @@ -3791,7 +3592,7 @@ msgid "Clear A-B Repeat" msgstr "Ryd A-B-gentagelse" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Gå til sang ..." @@ -3884,20 +3685,20 @@ msgstr "Tilføj filer ..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Efter titel" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Efter filnavn" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Efter filsti" @@ -3925,113 +3726,113 @@ msgid "Remove Selected" msgstr "Fjern de valgte" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Søg og vælg" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Vend markering om" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Vælg ingen" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Vælg alle" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Efter spornummer" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Efter kunstner" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Efter album" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Efter kunstner" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Efter udgivelsesdato" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Efter genre" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Efter længde" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Efter tilpasset titel" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Efter kommentar" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Sæt listen i tilfældig rækkefølge" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Vend listen om" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Sortér valgt" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Sortér listen" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Åbn indeholdende mappe" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Klip" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Kopiér" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Indsæt" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Indsæt ved slutning" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Tilføj/fjern fra kø" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d of %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Redigeringsprogram for Audacious' afspilningslister" @@ -4047,167 +3848,219 @@ msgid "Add Folder ..." msgstr "Tilføj mappe ..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Søg i punkter i aktiv afspilningsliste" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Vælg punkter i afspilningslisten ved at udfylde et eller flere felter. " +"Felter bruger regulære udtryk, tager ikke hensyn til store/små bogstaver. " +"Hvis du ikke ved hvordan regulære udtryk fungerer, så indsæt bare en lille " +"del af hvad du søger efter." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Titel:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Album:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Kunstner:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Filnavn:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Ryd forrige valg før søgning" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Skift automatisk kø for matchende punkter" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Opret en ny afspilningsliste med matchende punkter" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Søg" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Afspiller:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Vælg skrifttype for hovedafspillerens vindue:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Afspilningsliste:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Vælg skrifttype for afspilningslisten:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Tema" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Skrifttyper" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Brug bitmap-skrifttyper (understøtter kun ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Rul igennem sangtitel" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Rul sangtitel i begge retninger" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analyseprogram" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Skop" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Stemmeprint/VU-viser" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Slukket" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normal" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Ild" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Lodrette linjer" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Linjer" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Bjælker" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Langsomst" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Langsom" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Mellem" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Hurtig" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Hurtigst" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Punktummer" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Linje" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Fast" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Is" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Blød" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Farver:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Stil:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Falloff:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Spidspunkts-falloff:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Skopstil:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Farvelægning af stemmeprint:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "VU-viserstil:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Type" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Visualiseringstype:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analyseprogram" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Vis toppunkter" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Visualisering" @@ -4219,59 +4072,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Winamp 2.x-tema der ikke er i arkiv" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Søg i punkter i aktiv afspilningsliste" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Søg" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Vælg punkter i afspilningslisten ved at udfylde et eller flere felter. " -"Felter bruger regulære udtryk, tager ikke hensyn til store/små bogstaver. " -"Hvis du ikke ved hvordan regulære udtryk fungerer, så indsæt bare en lille " -"del af hvad du søger efter." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Titel:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Album:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Kunstner:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Filnavn:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Ryd forrige valg før søgning" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Skift automatisk kø for matchende punkter" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Opret en ny afspilningsliste med matchende punkter" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Sndfile-udvidelsesmodul" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4752,19 +4557,32 @@ "For at bruge tilføjes en URL: tone://frequency1;frequency2;frequency3;...\n" "f.eks. tone://2000;2005 for at afspille en 2000 Hz tone og en 2005 Hz tone" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Yderligere beskeder er blevet skjult)." + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Arbejder ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Information" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Stemmefjernelse" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4917,14 +4735,38 @@ "\n" "Lidt af udvidelsesmodulets kode blev udført af Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2SF-afkoder" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "Konfiguration af XSF" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "XML delbare-afspilningslister (XSPF)" diff -Nru audacious-plugins-4.1/po/de.po audacious-plugins-4.3.1/po/de.po --- audacious-plugins-4.1/po/de.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/de.po 2023-04-29 20:17:32.000000000 +0000 @@ -10,14 +10,14 @@ # mschwendt , 2012 # mschwendt , 2012 # Chris , 2012 -# Thomas Lange, 2014-2015,2018-2019,2021 +# Thomas Lange, 2014-2015,2018-2019,2021-2023 msgid "" msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2021-01-16 23:24+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2023-03-05 14:38+0100\n" +"Last-Translator: Thomas Lange, 2014-2015,2018-2019,2021-2023\n" "Language-Team: German (http://www.transifex.com/audacious/audacious/language/" "de/)\n" "Language: de\n" @@ -35,7 +35,7 @@ msgstr "AdPlug (AdLib-Spieler)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "Sequenziell" @@ -47,9 +47,11 @@ msgid "OPL Emulator:" msgstr "OPL-Emulator:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Abtastrate" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Abtastrate:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -65,7 +67,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Sonstiges" @@ -73,259 +75,6 @@ msgid "Repeat song in endless loop" msgstr "Wiederhole Titel in Endlosschleife" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Alarm" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Alarm setzen ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Ein Plugin, das genutzt werden kann, um zu\n" -"einer bestimmten Zeit die Wiedergabe zu starten.\n" -"\n" -"Ursprünglich geschrieben von Adam Feakin und Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Zeit\n" -" Alarm um:\n" -" Die Zeit, um die der Alarm ausgelöst wird.\n" -"\n" -" Still nach:\n" -" Der Alarm wird nach dieser Zeit gestoppt\n" -" (sofern der Aufweckdialog nicht geschlossen wird).\n" -"\n" -"\n" -"Tage\n" -" Tag:\n" -" Die Tage wählen, an denen der Alarm aktiviert wird.\n" -"\n" -" Zeit:\n" -" Für jeden Tag einzeln die Zeit für den Alarm wählen\n" -" oder den Alarm zur Standardzeit aktivieren.\n" -"\n" -"\n" -"Lautstärke\n" -" Übergang:\n" -" Passt die Lautstärke an die gewählte Lautstärke\n" -" in diesem Zeitraum an.\n" -"\n" -" Beginnen bei:\n" -" Starte den Übergang bei dieser Lautstärke.\n" -"\n" -" Schluss:\n" -" Die Lautstärke, bei der der Übergang stoppt.\n" -" Falls die Übergangszeit 0 beträgt, wird die\n" -" Wiedergabe schon mit dieser Lautstärke gestartet.\n" -"\n" -"\n" -"Optionen:\n" -" Zusätzlicher Befehl:\n" -" Führe diesen Befehl bei Auslösung des Alarms aus.\n" -"\n" -" Wiedergabeliste:\n" -" Lade diese Wiedergabeliste. Wenn keine Wiedergabeliste\n" -" angegeben ist, wird die aktuelle verwendet.\n" -" Die URL eines MP3-/Ogg-Streams kann ebenso\n" -" angegeben werden.\n" -"\n" -" Erinnerung:\n" -" Zeige eine Erinnerung an, wenn der Alarm ausgelöst wird.\n" -" Schreiben Sie die Erinnerungsnachricht in das Eingabefeld\n" -" und aktivieren Sie die Checkbox." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Dies ist Ihr Aufwachsignal." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Die Erinnerung für heute lautet..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Erinnerung" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Montag" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Dienstag" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Mittwoch" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Donnerstag" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Freitag" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Samstag" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Sonntag" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Uhrzeit" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Alarm um (Standard):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "Uhr" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Still nach:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "Stunden" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "Minuten" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Tage wählen, an denen der Alarm ausgelöst werden soll" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Tag" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Standard" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Tage" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Übergang" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "Sekunden" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Lautstärke" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Beginnen bei" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Schluss" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Momentan" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Zusätzlicher Befehl" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "aktivieren" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Wiedergabeliste (optional)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Wiedergabeliste wählen" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Optionen" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Was bedeuten diese Einstellungen?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Hilfe" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Album-Cover" @@ -475,87 +224,83 @@ msgid "Synthesizer" msgstr "Synthesizer" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Abtastrate:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - SoundFont-Datei wählen" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Abbrechen" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "Ö_ffnen" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Dateiname" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Größe (Bytes)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Name:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " MIDI Info " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Format:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Länge (ms):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Anzahl an Titeln:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "variabel" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (Wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Zeitmultiplex:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI Kommentare und Liedtexte " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" -msgstr "* keine Kommentare in dieser MIDI-Datei verfügbar *" +msgstr "* keine Kommentare in dieser MIDI-Datei vorhanden *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" -msgstr "* keine Liedtexte in dieser MIDI-Datei verfügbar *" +msgstr "* keine Liedtexte in dieser MIDI-Datei vorhanden *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "S_chließen" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (ungültiges UTF-8)" @@ -611,7 +356,7 @@ msgid "Concave Rectangle" msgstr "Konkaves Rechteck" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Kein" @@ -647,94 +392,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Löst OSD beim Fortsetzen der Wiedergabe aus." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Platzierung" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Relative X-Verschiebung:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Relative Y-Verschiebung:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Maximale OSD-Breite:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Multi-Head-Optionen" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "OSD anzeigen auf:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "allen Bildschirmen" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "Bildschirm %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Zeitablauf (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Anzeige:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Einblenden:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Ausblenden:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Schriftarten" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Schriftart %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Schatten" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Render-Stil" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Farben" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Farbe %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Auslöser aktivieren" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Ereignis" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Composite-Manager erkannt" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -744,56 +489,56 @@ "Sofern ein solcher nicht doch aktiv ist, bitte einen solchen aktivieren, " "ansonsten wird das OSD nicht funktionieren" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Composite-Manager nicht benötigt für vorgetäuschte Transparenz" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Transparenz" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Pseudo-Transparenz" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Echte Transparenz (benötigt X-Composite-Erweiterung)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Composite-Erweiterung nicht geladen" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious-OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Position" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animation" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Text" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Dekoration" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Auslöser" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Verschiedenes" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Test" @@ -809,11 +554,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Audacious Wiedergabelisten (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Bittiefe:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Downsample-Verhältnis:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Farbe" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Oszilloskop" @@ -825,6 +586,10 @@ msgid "Presets:" msgstr "Voreinstellungen:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Standard" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Eingabepegel:" @@ -837,7 +602,7 @@ msgid "Cut frequency:" msgstr "Grenzfrequenz:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Spektrumanalysator" @@ -933,50 +698,50 @@ msgid "Audio CD" msgstr "Audio-CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Öffnen des CD-Laufwerks »%s« fehlgeschlagen." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Kein geeignetes CD-Laufwerk gefunden." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Laufwerk ist leer." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Nicht unterstützter Disk-Typ." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Abschließen der Initialisierung des CD-Laufwerks fehlgeschlagen." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Abfragen der ersten/letzten Titelnummer fehlgeschlagen." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Kann Start/Ende LSN für Titel %d nicht lesen." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Herstellen der CDDB Verbindung fehlgeschlagen." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Abfragen des CDDB Servers fehlgeschlagen" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Abfragen des CDDB Servers fehlgeschlagen: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Lesen der CDDB Information fehlgeschlagen: %s" @@ -1049,6 +814,13 @@ msgid "Default song length:" msgstr "Standard-Liedlänge:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "Sekunden" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Resampling" @@ -1077,7 +849,7 @@ msgid "CoreAudio output" msgstr "CoreAudio Ausgabe" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1097,11 +869,11 @@ "Basierend auf dem SDL Ausgabeplugin für Audacious\n" "Copyright 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Benutze exklusiven Modus" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "Benutze bitperfektes Audio (Angleichung der Geräteabtastrate)" @@ -1198,20 +970,20 @@ msgid "Delete" msgstr "Löschen" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Abbrechen" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Ausgewählte Dateien löschen" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Löschmethode" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "In den Papierkorb verschieben anstatt sofort zu löschen" @@ -1237,7 +1009,7 @@ msgstr "Verzögerung:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1253,11 +1025,11 @@ msgid "Echo" msgstr "Echo" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "FFmpeg Plugin" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1380,89 +1152,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "8 kbit/s" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "16 kbit/s" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "32 kbit/s" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "40 kbit/s" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "48 kbit/s" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "56 kbit/s" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "64 kbit/s" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "80 kbit/s" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "96 kbit/s" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "112 kbit/s" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "128 kbit/s" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "160 kbit/s" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "192 kbit/s" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "224 kbit/s" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "256 kbit/s" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "320 kbit/s" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Joint-Stereo" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1574,7 +1346,7 @@ msgid "Quality (0-1):" msgstr "Qualität (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Allgemein" @@ -1583,11 +1355,11 @@ msgid "FLAC Decoder" msgstr "FLAC Dekodierer" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "Verlustfrei" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1619,7 +1391,7 @@ msgid "Invalid open mode" msgstr "Ungültiger Modus zum Öffnen" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1639,116 +1411,134 @@ "\n" "Lizenz: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL Spektrumanalysator" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "Eintragsnummer" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Titel" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Künstler" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Jahr" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Album" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Album-Künstler" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Titelnummer" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Genre" -#: src/gtkui/columns.cc:43 -msgid "Queue position" +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" msgstr "Warteschlangenposition" -#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Länge" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "Dateipfad" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Benutzerdefinierter Titel" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Dateiname" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Benutzerdefinierter Titel" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Bitrate" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Kommentar" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "Verlag" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "Katalognummer" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Verfügbare Spalten" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Angezeigte Spalten" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Suchwerkzeug" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Links andocken" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Rechts andocken" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Oben andocken" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Unten andocken" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Abdocken" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Deaktivieren" @@ -1788,8 +1578,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Wiedergabe" @@ -1966,8 +1756,8 @@ msgid "Remove _Unavailable Files" msgstr "Nicht _verfügbare Dateien entfernen" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Neu" @@ -1977,7 +1767,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "_Löschen" @@ -2108,7 +1898,7 @@ msgstr "_Alles auswählen" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Umbenennen ..." @@ -2136,197 +1926,202 @@ msgid "Show column headers" msgstr "Spaltenüberschriften anzeigen" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "Symbolische Icons in Werkzeugleiste verwenden" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Mit Titelwechsel scrollen" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "GTK Interface" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Puffern ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Wiedergabe" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Pause" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Bibliothek durchsuchen" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Dateien öffnen" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Dateien hinzufügen" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Vorheriger" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Stopp" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Nächster" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Audio aufnehmen" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Wiederholen" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Zufällige Wiedergabe" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "Menü" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "Mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "Stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d Kanal" msgstr[1] "%d Kanäle" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "%d kbit/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Single-Modus." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Wiedergabelistenmodus." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Nach Titel stoppen." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Vorheriger Titel" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Pause/Fortsetzen" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Nächster Titel" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "Vorspringen" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "Zurückspringen" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Stumm" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Lautstärke erhöhen" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Lautstärke verringern" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Zu Titel springen" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Fenster anzeigen/verstecken" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "On-Screen-Display anzeigen" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Wiederholen ein-/ausschalten" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Zufällige Wiedergabe ein-/ausschalten" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Nach diesem Titel stoppen ein-/ausschalten" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Fenster in den Vordergrund holen" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(keine)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2336,11 +2131,11 @@ "\n" "Möchten Sie trotzdem fortfahren?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Maustastenkombinationen" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2348,23 +2143,23 @@ "Drücken Sie eine Tastenkombination innerhalb eines Textfeldes.\n" "Sie können auch Maustasten verwenden." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Tastenkürzel:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Aktion:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Tastenkombination:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Hinzufügen" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Globale Tastenkürzel" @@ -2385,7 +2180,7 @@ "Globale Tastenkürzel Plugin\n" "Audacious mit globalen Tastenkürzeln oder Multimediatasten bedienen.\n" "\n" -"Copyright (C) 2007 Sascha Hlusiak \n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" "\n" "Mitwirkende:\n" "Copyright (C) 2006-2007 Vladimir Paskov \n" @@ -2463,16 +2258,16 @@ "mit %d Hz. Bitte benutzen Sie den Abtastraten-Konverter Effekt, um diese " "Diskrepanz zu korrigieren." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s Einstellungen" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Modulpfade:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2483,25 +2278,25 @@ "Drücken Sie nach dem Hinzufügen neuer Pfade Enter, um nach neuen Plugins zu " "suchen." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Verfügbare Plugins:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Aktivieren" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Aktive Plugins:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Einstellungen" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2557,103 +2352,107 @@ msgid "Wait before reconnecting:" msgstr "Zeitspanne bis zum Wiederverbinden:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "Liedtexte" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Nirgendwo" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "Künstler wird vorne abgeschnitten, Titel am Ende" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "Zeichen nach denen abgeschnitten wird:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" "Zeichen sind in Regulären Ausdrücken verodert, umschlossen von " "Leerzeichen" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "Zeichen für das Auftrennen:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "Weiter abschneiden nach Zeichen" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "Allgemeines" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "Trenne Titel in Künstler und Titel anhand Zeichen" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "Internetquellen" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "Rufe Liedtexte ab von:" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "Bezugsquellen" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "Nutze eingebettete Liedtexte (aus den Lyrics-Metadaten)" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "Rufe Liedtexte aus dem Internet ab:" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "Speichere abgerufene Liedtexte in lokalem Zwischenspeicher" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Lokaler Speicher" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "Lade Liedtextdateien (.lrc) von lokalem Speicher" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Abrufen von »%s« nicht möglich" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Parsen von »%s« nicht möglich" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Suche nach Liedtexten ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Fehler" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "Kein Liedtext gefunden." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "Fehlender Titel und/oder Künstler." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Lokal speichern" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Aktualisieren" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "M3U Wiedergabelisten" @@ -2811,7 +2610,7 @@ msgstr "Diese Einstellungen treten in Kraft, wenn Audacious neugestartet wird." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Nach diesem Titel stoppen" @@ -2820,41 +2619,17 @@ msgid "Moonstone" msgstr "Mondstein" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Auf Standardwerte zurücksetzen" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Momentane Wiedergabe" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Eintragsnummer" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Album-Künstler" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Warteschlangenposition" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Dateipfad" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Dateiname" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Benutzerdefinierter Titel" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Einträge" @@ -2870,7 +2645,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Nutze exakte Längenberechnung (langsam)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Surround" @@ -2970,7 +2745,7 @@ msgid "OpenMPT (Module Player)" msgstr "OpenMPT (Modulspieler)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -2980,19 +2755,19 @@ "\n" "Entwickelt von: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Stereo-Trennung:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "Interpolation:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Linear" @@ -3004,11 +2779,23 @@ msgid "Windowed sinc" msgstr "Sinc-Fensterfunktion" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "Opus Dekodierer" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" +"Opus Dekodierer Plugin für Audacious\n" +"Copyright 2022 Thomas Lange" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4 Ausgabe" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "OSS3 Ausgabe" @@ -3050,18 +2837,40 @@ "Ich möchte den Personen auf #audacious danken, vor allem Tony Vroon und John " "Lindgren sowie natürlich den Autoren des bisherigen OSS Plugins." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "PipeWire Ausgabe" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" +"PipeWire Ausgabeplugin für Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Basierend auf dem PipeWire Ausgabeplugin für Qmmp\n" +"Copyright 2021 Ilya Kotov" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Wiedergabe" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Wiedergabelisten-Manager" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Löschen" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "_Umbenennen" @@ -3077,7 +2886,7 @@ msgid "OpenPSF Configuration" msgstr "OpenPSF-Konfiguration" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Länge aus Datei ignorieren" @@ -3091,7 +2900,7 @@ #: src/pulse/pulse_audio.cc:74 msgid "Stream name:" -msgstr "Streamname:" +msgstr "Stream-Name:" #: src/pulse/pulse_audio.cc:575 msgid "" @@ -3167,11 +2976,11 @@ "\n" "Lizenz: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "Drücken Sie eine Tastenkombination innerhalb eines Textfeldes." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3219,14 +3028,18 @@ msgid "Audio Settings ..." msgstr "Audio-Einstellungen ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "W#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "T#" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "K#" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Qt Interface" @@ -3445,30 +3258,30 @@ msgid "Library" msgstr "Bibliothek" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d Titel" msgstr[1] "%d Titel" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "dieses Genres" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "in" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "von" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Anzahl angezeigter Ergebnisse:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Bibliothek beim Start erneut scannen" @@ -3476,7 +3289,7 @@ msgid "Monitor library for changes" msgstr "Bibliothek auf Änderungen überwachen" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3484,37 +3297,37 @@ "Wählen Sie einen Ordner und klicken Sie auf »Aktualisieren«, um Ihre " "Musikbibliothek in Audacious zu importieren." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Bitte warten ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Ordner auswählen" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Bibliothek durchsuchen" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "%d von %d Ergebnis angezeigt" msgstr[1] "%d von %d Ergebnissen angezeigt" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d Ergebnis" msgstr[1] "%d Ergebnisse" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "Wiedergabeliste _erstellen" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "Zur Wiedergabeliste _hinzufügen" @@ -3618,108 +3431,108 @@ msgid "Repeat point B set." msgstr "Wiederholpunkt B gesetzt." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Vorverstaerkung" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Audacious Equalizer" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Aufnahme aktiv" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Aufnahme inaktiv" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Suche nach %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Lautstaerke: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Balance: %d%% links" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Balance: Mitte" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Balance: %d%% rechts" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Optionen" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "'Immer im Vordergrund' aus" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "'Immer im Vordergrund' an" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Dateiinformationen" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Doppelte Größe" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Visualisierungen" @@ -3743,10 +3556,6 @@ msgid "Open URL ..." msgstr "URL öffnen ..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Wiedergabe" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Wiedergabeliste" @@ -3761,7 +3570,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Dienste" @@ -3778,7 +3587,7 @@ msgstr "Beenden" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Titelinfo ..." @@ -3798,7 +3607,7 @@ msgid "Clear A-B Repeat" msgstr "A-B Wiederholung leeren" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Zu Titel springen ..." @@ -3891,20 +3700,20 @@ msgstr "Dateien hinzufügen ..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Nach Titel" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Nach Dateinamen" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Nach Dateipfad" @@ -3932,113 +3741,113 @@ msgid "Remove Selected" msgstr "Auswahl entfernen" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Suchen und Auswählen" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Auswahl invertieren" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Keine auswählen" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Alle auswählen" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Nach Titelnummer" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Nach Künstler" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Nach Album" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Nach Album-Künstler" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Nach Erscheinungsdatum" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Nach Genre" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Nach Länge" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Nach benutzerdefiniertem Titel" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Nach Kommentar" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Wiedergabeliste zufällig anordnen" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Wiedergabeliste umkehren" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Auswahl sortieren" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Wiedergabeliste sortieren" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Beinhaltenden Ordner öffen" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Ausschneiden" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Kopieren" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Einfügen" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Am Ende einfügen" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "In/Aus Warteschlange" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d von %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Audacious Wiedergabeliste" @@ -4054,167 +3863,220 @@ msgid "Add Folder ..." msgstr "Ordner hinzufügen ..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Suche Einträge in aktiver Wiedergabeliste" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Wählen Sie Einträge in der Wiedergabeliste durch Ausfüllen eines oder " +"mehrerer Eingabefelder aus. Diese nutzen reguläre Ausdrücke, unterscheiden " +"Groß- und Kleinschreibung aber nicht. Falls Sie nicht wissen, wie reguläre " +"Ausdrücke funktionieren, geben Sie einfach nur einen Teilbegriff für Ihre " +"Suche ein." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Titel:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Album:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Künstler:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Dateiname:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Vorherige Auswahl vor dem Suchen löschen" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Warteschlange automatisch umschalten für passende Einträge" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Erstelle neue Wiedergabeliste mit passenden Einträgen" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Suchen" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Hauptfenster:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Hauptfenster-Schrift auswählen:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Wiedergabeliste:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Wiedergabelisten-Schrift auswählen:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Skin" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "Titelleiste als aktiv anzeigen, wenn irgendein Fenster fokussiert ist" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Schriftarten" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Benutze Bitmap-Schriftarten (nur ASCII-Unterstützung)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Titel scrollen" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Titel in beide Richtungen scrollen" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analysator" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Oszilloskop" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Spektrogramm" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Aus" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normal" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Feuer" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Vertikale Linien" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Linien" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Balken" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Am langsamsten" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Langsam" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Normal" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Schnell" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Am schnellsten" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Punkte" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Linie" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Beständig" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Eis" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Weich" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Farbgebung:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Stil:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Fallgeschwindigkeit:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Spitzen-Fallgeschwindigkeit:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Oszilloskop-Stil:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Spektrogramm-Farbgebung:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "VU-Meter-Stil:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Modus" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Visualisierungsmodus:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analysator" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Spitzen anzeigen" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Visualisierung" @@ -4226,60 +4088,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Nicht archivierter Winamp 2.x-Skin" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Suche Einträge in aktiver Wiedergabeliste" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Suchen" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Wählen Sie Einträge in der Wiedergabeliste durch Ausfüllen eines oder " -"mehrerer Eingabefelder aus. Diese nutzen reguläre Ausdrücke, unterscheiden " -"Groß- und Kleinschreibung aber nicht. Falls Sie nicht wissen, wie reguläre " -"Ausdrücke funktionieren, geben Sie einfach nur einen Teilbegriff für Ihre " -"Suche ein." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Titel:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Album:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Künstler:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Dateiname:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Vorherige Auswahl vor dem Suchen löschen" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Automatisch zwischen passenden Einträgen wechseln" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Erstelle neue Wiedergabeliste mit passenden Einträgen" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Sndfile Plugin" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4763,19 +4576,32 @@ "tone://frequenz1;frequenz2;frequenz3;...\n" "z.B. tone://2000;2005 für einen Ton mit 2000 Hz und einen mit 2005 Hz" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Weitere Meldungen wurden nicht angezeigt.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "In Bearbeitung ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Information" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "%s scheint kein gültiger Ordner zu sein." + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Stimmenaufhebung" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4928,14 +4754,38 @@ "\n" "Ein Teil des Plugin-Quelltextes war von Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2SF Dekodierer" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Kosinus" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Scharf" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "XSF Konfiguration" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Standard-Überblendzeit:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Interpolationsmodus:" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "XML Wiedergabelisten (XSPF)" diff -Nru audacious-plugins-4.1/po/el.po audacious-plugins-4.3.1/po/el.po --- audacious-plugins-4.1/po/el.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/el.po 2023-04-29 20:17:32.000000000 +0000 @@ -3,24 +3,29 @@ # This file is distributed under the same license as the Audacious Plugins package. # # Translators: +# 79353a696ad19dc202b261b3067b7640_bec941e, 2015 +# othon alexandros stamataras , 2021 # DImitrios Zakas , 2013 -# Giorgos Kardamis , 2020 +# Γιώργος Καρδάμης , 2020 # gis mapps , 2014 +# GreekLUG , 2021 # Ioannis LM, 2018,2020 -# Ioannis LM, 2018,2020 +# Ioannis LM, 2018,2020-2023 # Nick Tsakalidis , 2021 # DImitrios Zakas , 2013 +# othon alexandros stamataras , 2021 # Wasilis Mandratzis-Walz, 2015 # 79353a696ad19dc202b261b3067b7640_bec941e, 2015 # Yannis Anthymidis, 2012-2013 +# Γιώργος Καρδάμης , 2020 msgid "" msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2021-01-17 18:58+0000\n" -"Last-Translator: Nick Tsakalidis \n" -"Language-Team: Greek (http://www.transifex.com/audacious/audacious/language/" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Γιώργος Καρδάμης , 2020\n" +"Language-Team: Greek (http://app.transifex.com/audacious/audacious/language/" "el/)\n" "Language: el\n" "MIME-Version: 1.0\n" @@ -30,14 +35,14 @@ #: src/aac/aac.cc:19 msgid "AAC (Raw) Decoder" -msgstr "Αποκωδικοποιητής AAC (Raw)" +msgstr "Αποκωδικοποιητής AAC (Raw) " #: src/adplug/adplug-xmms.cc:70 msgid "AdPlug (AdLib Player)" msgstr "AdPlug (Αναπαραγωγή AdLib)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "αλληλουχία" @@ -49,9 +54,11 @@ msgid "OPL Emulator:" msgstr "Εξομοιωτής OPL:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Ρυθμός δειγματοληψίας" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Ρυθμός δειγματοληψίας:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -67,7 +74,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Διάφορα" @@ -75,257 +82,6 @@ msgid "Repeat song in endless loop" msgstr "Συνεχόμενη επανάληψη του τραγουδιού" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Ξυπνητήρι" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Ρύθμιση συναγερμού ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Πρόσθετο που χρησιμοποιείται για την εκκίνηση της αναπαραγωγής σε ένα " -"ορισμένο χρονικό διάστημα.\n" -"\n" -"Γραμμένο αρχικά από τους Adam Deakin και Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Χρόνος\n" -" Ειδοποίηση:\n" -" Η ώρα ενεργοποίησης της ειδοποίησης.\n" -"\n" -" Χρόνος σίγησης:\n" -" Σίγηση ειδοποίησης ύστερα από τόσο χρόνο.\n" -" (αν δεν κλείσει το παράθυρο αφύπνισης)\n" -"\n" -"\n" -"Ημέρες\n" -" Ημέρα:\n" -" Επιλέξτε τις ημέρες που θα ενεργοποιείται η ειδοποίηση.\n" -"\n" -" Χρόνος:\n" -" Επιλέξτε την ώρα ειδοποίησης για κάθε ημέρα,\n" -" ή επιλέξτε το κουμπί για την προεπιλεγμένη ώρα.\n" -"\n" -"\n" -"Ένταση\n" -" Βαθμιαία:\n" -" Βαθμιαία αύξηση της έντασης στο επιλεγμένο επίπεδο\n" -" για τόσο χρόνο.\n" -"\n" -" Επίπεδο έναρξης:\n" -" Βαθμιαία αύξηση ξεκινώντας από αυτό το επίπεδο.\n" -"\n" -" Επίπεδο τέλους:\n" -" Το επίπεδο έντασης όπου θα σταματήσει η βαθμιαία αύξηση.\n" -" Αν ο χρόνος είναι 0 τότε η αναπαραγωγή θα ξεκινήσει σε αυτή την ένταση.\n" -"\n" -"\n" -"Επιλογές:\n" -" Επιπρόσθετη εντολή:\n" -" Εκτέλεση αυτής της εντολής την ώρα της ειδοποίησης.\n" -"\n" -" Λίστα αναπαραγωγής:\n" -" Φόρτωση αυτής της λίστας αναπαραγωγής. Αν δεν δοθεί\n" -" καμία λίστα αναπαραγωγής, θα χρησιμοποιηθεί η τρέχουσα.\n" -" Μπορείτε να χρησιμοποιήσετε και το URL μίας ροής mp3/ogg.\n" -"\n" -" Υπενθύμιση:\n" -" Εμφάνιση μίας υπενθύμισης κατά την ειδοποίηση.\n" -" Πληκτρολογήστε την υπενθύμιση στο πεδίο κειμένου και επιλέξτε\n" -" ενεργοποίηση αν θέλετε να εμφανίζεται." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Αυτή είναι η κλήση αφύπνισης σας." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Η υπενθύμιση σας για σήμερα είναι..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Υπενθύμιση" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Δευτέρα" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Τρίτη" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Τετάρτη" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Πέμπτη" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Παρασκευή" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Σάββατο" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Κυριακή" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Χρόνος" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Έναρξη στις (προεπιλογή):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "ώ" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Σίγηση μετά από:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "ώρες" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "λεπτά" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Επιλογή των ημερών που θα χτυπήσει το ξυπνητήρι" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Ημέρα" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Προεπιλογή" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Ημέρες" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Εξασθένηση" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "δευτερόλεπτα" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Ένταση" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Έναρξη στο" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Τελική" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Τωρινή" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Επιπρόσθετη εντολή" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "ενεργοποίηση" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Λίστα αναπαραγωγής (προαιρετική)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Επιλέξτε μια λίστα αναπαραγωγής" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Επιλογές" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Τι σημαίνουν αυτές οι επιλογές;" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Βοήθεια" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Εξώφυλλο άλμπουμ" @@ -475,87 +231,83 @@ msgid "Synthesizer" msgstr "Synthesizer" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Ρυθμός δειγματοληψίας:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "Πρόσθετο AMIDI - επιλέξτε αρχείο SoundFont" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" -msgstr "_Άκυρο" +msgstr "Άκ_υρο" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" -msgstr "Ά_νοιγμα" +msgstr "Άνοι_γμα" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Όνομα αρχείου" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Μέγεθος (byte)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Όνομα:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " Πληροφορίες MIDI " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Μορφή:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Διάρκεια (ms):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Αρ. κομματιών:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "μεταβλητή" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Χρόνος Div:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " Σχόλια και Στοίχοι MIDI " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* δεν υπάρχουν σχόλια σε αυτό το αρχείο MIDI *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* δεν υπάρχουν στίχοι σε αυτό το αρχείο MIDI *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Κλείσιμο" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (μη έγκυρο UTF-8)" @@ -597,7 +349,7 @@ #: src/aosd/aosd.h:37 msgid "AOSD (On-Screen Display)" -msgstr "AOSD (Απεικόνιση στην Οθόνη)" +msgstr "AOSD (Απεικόνιση στην οθόνη)" #: src/aosd/aosd_style.cc:54 msgid "Rectangle" @@ -611,7 +363,7 @@ msgid "Concave Rectangle" msgstr "Κοίλο ορθογώνιο" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Κανένα" @@ -621,7 +373,9 @@ #: src/aosd/aosd_trigger.cc:50 msgid "Triggers OSD when a playlist entry is played." -msgstr "Εμφάνιση του OSD όταν αναπαράγεται καταχώρηση της λίστας αναπαραγωγής." +msgstr "" +"Ενεργοποίηση απεικόνισης στην οθόνη (OSD) όταν αναπαράγεται η λίστα " +"αναπαραγωγής." #: src/aosd/aosd_trigger.cc:55 msgid "Title Change" @@ -630,8 +384,8 @@ #: src/aosd/aosd_trigger.cc:56 msgid "Triggers OSD when the song title changes (for internet streams)." msgstr "" -"Εμφάνιση του OSD όταν αλλάζει ο τίτλος του τραγουδιού (για ροές στο " -"διαδίκτυο)." +"Ενεργοποίηση απεικόνισης στην οθόνη (OSD) όταν αλλάζει ο τίτλος του " +"τραγουδιού (για ροές στο διαδίκτυο)." #: src/aosd/aosd_trigger.cc:61 msgid "Pause On" @@ -639,7 +393,9 @@ #: src/aosd/aosd_trigger.cc:62 msgid "Triggers OSD when playback is paused." -msgstr "Εμφάνιση του OSD όταν γίνεται παύση της αναπαραγωγής." +msgstr "" +"Ενεργοποίηση απεικόνισης στην οθόνη (OSD) όταν γίνεται παύση της " +"αναπαραγωγής." #: src/aosd/aosd_trigger.cc:67 msgid "Pause Off" @@ -647,96 +403,98 @@ #: src/aosd/aosd_trigger.cc:68 msgid "Triggers OSD when playback is unpaused." -msgstr "Εμφάνιση του OSD όταν η αναπαραγωγή επανέρχεται από παύση." +msgstr "" +"Ενεργοποίηση απεικόνισης στην οθόνη (OSD) όταν η αναπαραγωγή επανέρχεται από " +"παύση." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Τοποθέτηση" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Σχετικός οριζόντιος άξονας Χ:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Σχετικός κάθετος άξονας Y:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" -msgstr "Μέγιστο πλάτος του OSD:" +msgstr "Μέγιστο πλάτος απεικόνισης στην οθόνη (OSD):" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Επιλογές για πολλαπλές οθόνες" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" -msgstr "Προβολή OSD σε:" +msgstr "Προβολή απεικόνισης στην οθόνη (OSD) σε:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "όλες τις οθόνες" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "οθόνη %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Συγχρονισμός (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Προβολή:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" -msgstr "Ομαλή είσοδος:" +msgstr "Σταδιακή είσοδος:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" -msgstr "Ξεθώριασμα:" +msgstr "Βαθμιαίο σβήσιμο:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Γραμματοσειρές" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Γραμματοσειρά %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Σκιά" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Απόδοση ύφους" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Χρώματα" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Χρώμα %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" -msgstr "Ενεργοποίηση εναύσματος" +msgstr "Ενεργοποίηση εμφάνισης" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Συμβάν" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Ανιχνεύθηκε διαχειριστής σύνθεσης" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -744,58 +502,58 @@ msgstr "" "Δεν ανιχνεύθηκε διαχειριστής σύνθεσης!\n" "αν γνωρίζετε ότι έχετε κάποιον σε λειτουργία παρακαλώ ενεργοποιήστε τον, " -"διαφορετικά δεν θα λειτουργήσει σωστά το OSD" +"διαφορετικά δεν θα λειτουργήσει σωστά η απεικόνιση στην οθόνη (OSD)" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Δεν απαιτείται διαχειριστής σύνθεσης για ψεύτικη διαφάνεια" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Διαφάνεια" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Ψεύτικη διαφάνεια" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Πραγματική διαφάνεια (χρειάζεται X Composite Ext.)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Η επέκταση σύνθεσης δεν φορτώθηκε" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Θέση" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Κίνηση" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Κείμενο" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Διακόσμηση" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" -msgstr "Έναυσμα" +msgstr "Εμφάνιση" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Διάφορα" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Δοκιμή" @@ -811,11 +569,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Λίστες αναπαραγωγής Audacious (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Βάθος bit:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Αναλογία υποδειγματοληψίας:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Bitcrusher (εφέ ήχου)" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Χρώμα" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Κυματομορφή θόλωσης" @@ -825,7 +599,11 @@ #: src/bs2b/plugin.cc:129 msgid "Presets:" -msgstr "Προεπιλογές:" +msgstr "Προρυθμίσεις:" + +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Προεπιλογή" #: src/bs2b/plugin.cc:136 msgid "Feed level:" @@ -839,7 +617,7 @@ msgid "Cut frequency:" msgstr "Αποκοπή συχνότητας:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Αναλυτής φάσματος" @@ -899,7 +677,7 @@ #: src/cdaudio/cdaudio-ng.cc:148 msgid "Server:" -msgstr "Εξυπηρετητής:" +msgstr "Διακομιστής:" #: src/cdaudio/cdaudio-ng.cc:152 msgid "Path:" @@ -936,50 +714,50 @@ msgid "Audio CD" msgstr "Μουσικό CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Αποτυχία ανοίγματος της συσκευή CD %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." -msgstr "Δεν βρέθηκε συσκευή με ικανότητα CD ήχου." +msgstr "Δεν βρέθηκε συσκευή με CD ήχου." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Η μονάδα δίσκου είναι κενή." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Μη υποστηριζόμενος τύπος δίσκου." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Δεν ολοκληρώθηκε η αρχικοποίηση της ανοιχτής μονάδας CD." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Αποτυχία ανάκτησης του πρώτου/τελευταίου αριθμού κομματιού." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Αδύνατη η ανάγνωση έναρξης/λήξης του LSD για το κομμάτι %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Αποτυχία σύνδεσης με την CDDB." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Αποτυχία ερώτησης στο διακομιστή CDDB" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Αποτυχία ερώτησης στο διακομιστή CDDB: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Αποτυχία ανάκτησης πληροφοριών από CDDB: %s" @@ -1054,6 +832,13 @@ msgid "Default song length:" msgstr "Προεπιλεγμένη διάρκεια τραγουδιού:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "δευτερόλεπτα" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Αναδειγματοληψία" @@ -1082,7 +867,7 @@ msgid "CoreAudio output" msgstr "Έξοδος CoreAudio" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1102,11 +887,11 @@ "Βασισμένο στο πρόσθετο SDL Output για το Audacious\n" "Πνευματικά δικαιώματα 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Χρήση αποκλειστικής λειτουργίας" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" "Χρήση bit για τέλειο ήχο (προσαρμογή του ρυθμού δειγματοληψίας της συσκευής)" @@ -1116,12 +901,12 @@ "Crossfade Plugin for Audacious\n" "Copyright 2010-2014 John Lindgren" msgstr "" -"Πρόσθετο Σταδιακό σβήσιμο για το Audacious\n" +"Πρόσθετο Σταδιακής μετάβασης (Crossfade) για το Audacious\n" "Πνευματικά δικαιώματα 2010-2014 John Lindgren" #: src/crossfade/crossfade.cc:47 msgid "Crossfade" -msgstr "Σταδιακό σβήσιμο" +msgstr "Σταδιακή μετάβαση" #: src/crossfade/crossfade.cc:48 msgid "On automatic song change" @@ -1144,12 +929,12 @@ "For better crossfading, enable\n" "the Silence Removal effect." msgstr "" -"Για καλύτερο σταδιακό σβήσιμο, ενεργοποιήσετε την \n" +"Για καλύτερη σταδιακή μετάβαση, ενεργοποιήσετε την \n" "Αφαίρεση σιωπής." #: src/crossfade/crossfade.cc:71 msgid "Crossfade" -msgstr "Σταδιακό σβήσιμο" +msgstr "Σταδιακή μετάβαση (Crossfade)" #: src/crystalizer/crystalizer.cc:31 msgid "Crystalizer" @@ -1204,20 +989,20 @@ msgid "Delete" msgstr "Διαγραφή" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" -msgstr "Ακύρωση" +msgstr "Άκυρο" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Διαγραφή επιλεγμένων αρχείων" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Μέθοδος διαγραφής" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Μετακίνηση στα απορρίμματα αντί για άμεση διαγραφή" @@ -1244,7 +1029,7 @@ msgstr "Καθυστέρηση:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1260,11 +1045,11 @@ msgid "Echo" msgstr "Ηχώ" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Πρόσθετο FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1333,7 +1118,7 @@ #: src/filewriter/filewriter.cc:392 msgid "Save into custom directory:" -msgstr "Αποθήκευση σε προσαρμοσμένο κατάλογο:" +msgstr "Αποθήκευση στον προσαρμοσμένο κατάλογο:" #: src/filewriter/filewriter.cc:400 msgid "Generate file name from:" @@ -1345,7 +1130,7 @@ #: src/filewriter/filewriter.cc:404 msgid "Original file name (no suffix)" -msgstr "Αρχικό όνομα αρχείου (χωρίς κατάληξη)" +msgstr "Αρχικό όνομα αρχείου (χωρίς την επέκταση)" #: src/filewriter/filewriter.cc:407 msgid "Original file tag" @@ -1387,89 +1172,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "8 kbit/s" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "16 kbit/s" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "32 kbit/s" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "40 kbit/s" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "48 kbit/s" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "56 kbit/s" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "64 kbit/s" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "80 kbit/s" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "96 kbit/s" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "112 kbit/s" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "128 kbit/s" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "160 kbit/s" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "192 kbit/s" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "224 kbit/s" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "256 kbit/s" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "320 kbit/s" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Πολυπλεγμένο στερεοφωνικό" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Στερεοφωνικό" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Μονοφωνικό" @@ -1487,7 +1272,7 @@ #: src/filewriter/filewriter.cc:484 msgid "Bitrate:" -msgstr "Ρυθμός διαμεταγωγής (bitrate)" +msgstr "Ρυθμός μετάδοσης (bitrate):" #: src/filewriter/filewriter.cc:491 msgid "Compression ratio:" @@ -1539,7 +1324,7 @@ #: src/filewriter/filewriter.cc:539 msgid "Frame Headers" -msgstr "Τίτλοι πλαισίου" +msgstr "Πλαίσιο επικεφαλίδων" #: src/filewriter/filewriter.cc:540 msgid "Mark as copyright" @@ -1581,7 +1366,7 @@ msgid "Quality (0-1):" msgstr "Ποιότητα (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Γενικά" @@ -1590,11 +1375,11 @@ msgid "FLAC Decoder" msgstr "Αποκωδικοποιητής FLAC" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "Χωρίς απώλειες" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1626,7 +1411,7 @@ msgid "Invalid open mode" msgstr "Άκυρη ανοικτή λειτουργία" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1637,7 +1422,7 @@ "\n" "License: GPLv2+" msgstr "" -"Αναλυτής φάσματος OpenGL για το Audacious\n" +"Πρόσθετο Αναλυτής φάσματος OpenGL για το Audacious\n" "Πνευματικά δικαιώματα 2013, Christophe Bude, John Lindgren και Carlo " "Bramini\n" "\n" @@ -1647,135 +1432,153 @@ "\n" "Άδεια: GPLv2 +" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "Αναλυτής φάσματος OpenGL" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "Αριθμός εισαγωγής" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "Αριθμός εισόδου" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Τίτλος" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Καλλιτέχνης" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Έτος" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Άλμπουμ" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Καλλιτέχνης άλμπουμ" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Κομμάτι" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Είδος" -#: src/gtkui/columns.cc:43 -msgid "Queue position" +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" msgstr "Θέση στην σειρά" -#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Διάρκεια" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "Διαδρομή αρχείου" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Προσαρμοσμένος τίτλος" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Όνομα αρχείου" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Προσαρμοσμένος τίτλος" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Ρυθμός μετάδοσης (bitrate)" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Σχόλιο" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "Εκδότης" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "Αριθμός καταλόγου" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Διαθέσιμες στήλες" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Εμφανιζόμενες στήλες" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Εργαλείο αναζήτησης" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Βάση σύνδεσης στα αριστερά" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Βάση σύνδεσης στα δεξιά" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Βάση σύνδεσης στην κορυφή" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Βάση σύνδεσης στην κάτω πλευρά" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Αποσύνδεση" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Απενεργοποίηση" #: src/gtkui/menus.cc:79 src/qtui/menus.cc:107 #: src/statusicon-qt/statusicon.cc:112 src/statusicon/statusicon.cc:282 msgid "_Open Files ..." -msgstr "Άνοιγμα _αρχείων..." +msgstr "Άνοι_γμα αρχείων..." #: src/gtkui/menus.cc:80 src/qtui/menus.cc:111 msgid "Open _URL ..." -msgstr "Ά_νοιγμα URL ..." +msgstr "Ά_νοιγμα διεύθυνσης ..." #: src/gtkui/menus.cc:81 src/qtui/menus.cc:113 msgid "_Add Files ..." -msgstr "_Προσθήκη αρχείων..." +msgstr "Π_ροσθήκη αρχείων..." #: src/gtkui/menus.cc:82 src/qtui/menus.cc:118 msgid "Add U_RL ..." -msgstr "Προσ_θήκη URL ..." +msgstr "Προσ_θήκη διεύθυνσης ..." #: src/gtkui/menus.cc:84 src/qtui/menus.cc:120 msgid "Search _Library" @@ -1787,17 +1590,17 @@ #: src/gtkui/menus.cc:87 src/qtui/menus.cc:125 msgid "_Settings ..." -msgstr "_Ρυθμίσεις ..." +msgstr "Ρυθ_μίσεις ..." #: src/gtkui/menus.cc:88 src/qtui/menus.cc:131 #: src/statusicon-qt/statusicon.cc:114 src/statusicon/statusicon.cc:284 msgid "_Quit" -msgstr "_Έξοδος" +msgstr "Έ_ξοδος" #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Αναπαραγωγή" @@ -1968,14 +1771,14 @@ #: src/gtkui/menus.cc:161 src/qtui/menus.cc:223 msgid "Remove _Duplicates" -msgstr "Αφαίρεση _διπλών" +msgstr "Αφαίρεση _διπλότυπων" #: src/gtkui/menus.cc:162 src/qtui/menus.cc:224 msgid "Remove _Unavailable Files" msgstr "Αφαίρεση μη δια_θέσιμων αρχείων" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Νέα" @@ -1985,7 +1788,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "Α_φαίρεση" @@ -2035,15 +1838,15 @@ #: src/gtkui/menus.cc:188 src/qtui/menus.cc:260 msgid "Show I_nfo Bar" -msgstr "Εμφάνιση π_λαισίου πληροφοριών" +msgstr "Εμφάνιση _πληροφοριών" #: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 msgid "Show Info Bar _Album Art" -msgstr "" +msgstr "Εμφάνιση _εικόνας άλμπουμ" #: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 msgid "Show Info Bar Vis_ualization" -msgstr "Εμφάνιση πλαισίου απεικόνισης πλη_ροφοριών" +msgstr "Εμφάνιση οπ_τικού εφέ" #: src/gtkui/menus.cc:191 src/qtui/menus.cc:266 msgid "Show _Status Bar" @@ -2056,7 +1859,7 @@ #: src/gtkui/menus.cc:195 src/qtui/menus.cc:274 src/skins/menus.cc:157 #: src/skins-qt/menus.cc:152 msgid "_Visualizations ..." -msgstr "_Απεικονίσεις ..." +msgstr "_Οπτικά εφέ ..." #: src/gtkui/menus.cc:199 src/qtui/menus.cc:278 msgid "_File" @@ -2116,7 +1919,7 @@ msgstr "Επιλογή _όλων" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Μετονομασία..." @@ -2144,197 +1947,202 @@ msgid "Show column headers" msgstr "Εμφάνιση επικεφαλίδας" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "Εμφάνιση συμβολικών εικονιδίων στην εργαλειοθήκη" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Μετακίνηση στην αλλαγή τραγουδιού" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Διεπαφή GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Γέμισμα ενδιάμεσης μνήμης..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Αναπαραγωγή" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Παύση" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Έρευνα δισκοθήκης" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Άνοιγμα αρχείων" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Προσθήκη αρχείων" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Προηγούμενο" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Διακοπή" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Επόμενο" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Εγγραφή ροής" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Επανάληψη" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Τυχαία εναλλαγή" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "Μενού" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "μονοφωνικό" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "στερεοφωνικό" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d κανάλι" msgstr[1] "%d κανάλια" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kb/s" +msgid "%d kbit/s" +msgstr "%dkbit/s " -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Ενιαία λειτουργία." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Λειτουργία λίστας αναπαραγωγής." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Διακοπή στο τέλος του κομματιού." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Προηγούμενο κομμάτι" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Παύση/Συνέχεια" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Επόμενο κομμάτι" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "Βήμα προς τα εμπρός" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "Βήμα προς τα πίσω" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Σίγαση" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Αύξηση έντασης" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Μείωση έντασης" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Μεταπήδηση στο αρχείο" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Τυχαία εναλλαγή παραθύρου(ων) αναπαραγωγής" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Εμφάνιση απεικόνισης στην οθόνη" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Εναλλαγή επανάληψης" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Τυχαία εναλλαγή σειράς" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Εναλλαγή διακοπής μετά την τρέχουσα" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Ανύψωση του παραθύρου(ων) αναπαραγωγής" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(κανένα)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2345,11 +2153,11 @@ "\n" "Θέλετε να συνεχίσετε;" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Δέσμευση κουμπιών του ποντικιού" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2357,23 +2165,23 @@ "Πατήστε ένα συνδυασμό πλήκτρων μέσα σε ένα πεδίο κειμένου.\n" "Μπορείτε επίσης να δεσμεύσετε τα κουμπιά ποντικιού." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Συντομεύσεις:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Ενέργεια:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr " Πλήκτρο δέσμευσης:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Προσθήκη" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Γενικές συντομεύσεις" @@ -2391,11 +2199,12 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" -"Πρόσθετο Global Hotkey\n" -"Έλεγχος της αναπαραγωγής με καθολικούς συνδυασμούς πλήκτρων ή με τα πλήκτρα " -"πολυμέσων\n" +"Πρόσθετο Γενικές συντομεύσεις\n" +"Έλεγχος της αναπαραγωγής με συνδυασμούς πλήκτρων ή με τα πλήκτρα πολυμέσων.\n" +"\n" "Πνευματικά δικαιώματα (C) 2007-2008 Sascha Hlusiak \n" +"\n" "Στους συντελεστές περιλαμβάνονται:\n" "Πνευματικά δικαιώματα (C) 2006-2007 Vladimir Paskov \n" @@ -2410,7 +2219,7 @@ #: src/jack/jack-ng.cc:126 msgid "Client name:" -msgstr "Όνομα διακομιστή:" +msgstr "Όνομα υπηρεσίας:" #: src/jack/jack-ng.cc:128 msgid "Automatically connect to output ports" @@ -2426,7 +2235,7 @@ #: src/jack/jack-ng.cc:139 msgid "Upmix to" -msgstr "" +msgstr "Upmix σε" #: src/jack/jack-ng.cc:141 msgid "ports if input has fewer channels" @@ -2455,8 +2264,8 @@ "JACK supports only floating-point audio. You must change the output bit " "depth to floating-point in Audacious settings." msgstr "" -"Το JACK υποστηρίζει μόνο ήχο κινητής υποδιαστολής. Στις ρυθμίσεις του " -"Audacious πρέπει ν' αλλάξετε το βάθος bit εξόδου, σε κινητή υποδιαστολή." +"Το JACK υποστηρίζει μόνο ήχο κινητής υποδιαστολής. Πρέπει ν' αλλάξετε και το " +"Βάθος bit σε κινητή υποδιαστολή." #: src/jack/jack-ng.cc:245 msgid "Failed to connect to the JACK server; is it running?" @@ -2468,20 +2277,20 @@ "The JACK server requires a sample rate of %d Hz, but Audacious is playing at " "%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." msgstr "" -"Ο διακομιστής JACK απαιτεί ένα ρυθμό δειγματοληψίας %d Hz, αλλά το Audacious " +"Ο διακομιστής JACK απαιτεί ρυθμό δειγματοληψίας %d Hz, αλλά το Audacious " "αναπαράγεται σε %d Hz. Παρακαλούμε χρησιμοποιήστε τη Μετατροπή ρυθμού " "δειγματοληψίας για να διορθώσετε την αναντιστοιχία." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" -msgstr "Ρυθμίσεις %s" +msgstr "%s Ρυθμίσεις" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Διαδρομές ενότητας:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2492,25 +2301,25 @@ "Μετά την προσθήκη νέων διαδρομών, πατήστε Enter για να ανιχνεύσετε νέα " "πρόσθετα." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Διαθέσιμα πρόσθετα:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Ενεργοποίηση" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Ενεργοποιημένα πρόσθετα:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Ρυθμίσεις" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2561,107 +2370,114 @@ #: src/lirc/lirc.cc:391 msgid "Reconnect to LIRC server" -msgstr "Επανασύνδεση με εξυπηρετητή LIRC" +msgstr "Επανασύνδεση με το διακομιστή LIRC" #: src/lirc/lirc.cc:393 msgid "Wait before reconnecting:" msgstr "Αναμονή πριν την επανασύνδεση:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "Στίχοι" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Πουθενά" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" +" Ο καλλιτέχνης περικόπτεται στην αρχή, ο τίτλος -- στο τέλος " -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" -msgstr "" +msgstr "Χαρακτήρες για περικοπή: " -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" +" Οι χαρακτήρες είναι ORed στο RegExp, περιτριγυρισμένοι από κενό " +"διάστημα " -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" -msgstr "" +msgstr "Χαρακτήρες για διαχωρισμό:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" -msgstr "" +msgstr "Πρόσθετη περικοπή αυτών των χαρακτήρων" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" -msgstr "" +msgstr "Γενικά" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" -msgstr "" +msgstr "Διαχωρισμός ονόματος καλλιτέχνη και χαρακτήρων τίτλου" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" msgstr "Διαδικτυακές πηγές" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "Αναζήτηση στίχων σε:" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "Χρήση ενσωματωμένων στίχων (από Lyrics tag)" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "Κατέβασμα στίχων από το διαδίκτυο:" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "Αποθήκευση στίχων σε τοπική μνήμη cache" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Τοπική αποθήκευση" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" -msgstr "Φόρτωση αποθηκευμένων αρχείων με στίχους (.lrc)" +msgstr "Φόρτωση στίχων (.lrc) τοπικά" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" -msgstr "Δεν είναι δυνατή η ανάκτηση του %s" +msgstr "Αδύνατη η λήψη του %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" -msgstr "Δεν είναι δυνατή η ανάλυση του %s" +msgstr "Αδύνατη η ανάλυση του %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Αναζήτηση για στίχους ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Σφάλμα" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "Δεν βρέθηκαν στίχοι." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "Λείπει ο τίτλος και/ή ο καλλιτέχνης. " -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Αποθήκευση τοπικά" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Ανανέωση" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "Λίστες αναπαραγωγής M3U" @@ -2719,7 +2535,7 @@ #: src/mms/mms.cc:82 msgid "Error connecting to MMS server" -msgstr "Σφάλμα κατά τη σύνδεση με τον διακομιστή MMS" +msgstr "Σφάλμα κατά τη σύνδεση με το διακομιστή MMS" #: src/modplug/modplugbmp.h:57 msgid "ModPlug (Module Player)" @@ -2816,53 +2632,29 @@ #: src/modplug/plugin_main.cc:124 src/sid/xs_config.cc:106 msgid "These settings will take effect when Audacious is restarted." -msgstr "Οι ρυθμίσεις θα τεθούν σε ισχύ όταν επανεκκινηθεί το Audacious." +msgstr "Αυτές οι ρυθμίσεις θα τεθούν σε ισχύ όταν επανεκκινηθεί το Audacious." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Διακοπή στο τέλος του κομματιού" #: src/moonstone/moonstone.cc:39 msgid "Moonstone" -msgstr "" +msgstr "Moonstone" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" -msgstr "Επαναφορά στις προεπιλογές" +msgstr "Επαναφορά προεπιλογών" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Αναπαράγεται τώρα" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Αριθμός εισόδου" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Καλλιτέχνης άλμπουμ" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Θέση στην σειρά" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Διαδρομή αρχείου" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Όνομα αρχείου" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Προσαρμοσμένος τίτλος" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Καταχωρήσεις" @@ -2878,13 +2670,13 @@ msgid "Use accurate length calculation (slow)" msgstr "Χρήση υπολογισμού της διάρκειας με ακρίβεια (αργό)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Surround" #: src/mpris2/plugin.cc:38 msgid "MPRIS 2 Server" -msgstr "Εξυπηρετητής MPRIS 2" +msgstr "Διακομιστής MPRIS 2" #: src/neon/neon.cc:97 msgid "Neon HTTP/HTTPS Plugin" @@ -2970,7 +2762,7 @@ #: src/notify/notify.cc:110 msgid "Custom notification duration:" -msgstr "" +msgstr "Διάρκεια ειδοποίησης:" #: src/notify/osd.cc:74 msgid "Show" @@ -2980,7 +2772,7 @@ msgid "OpenMPT (Module Player)" msgstr "Άνοιγμα MPT (Module Player)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -2990,19 +2782,19 @@ "\n" "Γράφτηκε από τον: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Διαχωρισμός στέρεο:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "Παρεμβολή:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Γραμμική" @@ -3012,13 +2804,25 @@ #: src/openmpt/mptwrap.h:53 msgid "Windowed sinc" +msgstr "Ημιτονοειδής παρεμβολή κορυφής (windowed)" + +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "Αποκωδικοποιητής ήχου Opus" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" msgstr "" +"Πρόσθετο Αποκωδικοποητής ήχου Opus για το Audacious\n" +"Πνευματικά δικαιώματα 2022 Thomas Lange" -#: src/oss4/oss.h:75 +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "Έξοδος OSS4" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "Έξοδος OSS3" @@ -3065,18 +2869,40 @@ "Vroon και John Lindgren και φυσικά τους δημιουργούς του προηγούμενου " "πρόσθετου OSS." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "Έξοδος PipeWire" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" +"Πρόσθετο Έξοδος PipeWire για το Audacious\n" +"Πνευματικά δικαιώματα 2022 Thomas Lange\n" +"\n" +"Βασισμένο στο πρόσθετο Έξοδος PipeWire για το Qmmp\n" +"Πνευματικά δικαιώματα 2021 Ilya Kotov" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Αναπαραγωγή" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Διαχείριση λίστας τραγουδιών" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "Αφαίρεση" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "Μετονομασία" @@ -3092,7 +2918,7 @@ msgid "OpenPSF Configuration" msgstr "OpenPSF Ρυθμίσεις" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Παράβλεψη διάρκειας αρχείου" @@ -3172,12 +2998,22 @@ "\n" "License: GPLv2+" msgstr "" +"Πρόσθετο Αναλυτής φάσματος OpenGL για το Audacious\n" +"Πνευματικά δικαιώματα 2013 Christophe Budé, John Lindgren, και Carlo " +"Bramini\n" +"Πνευματικά δικαιώματα 2014, 2020 Ariadne Conill\n" +"\n" +"Βασισμένο στο πρόσθετο XMMS:\n" +"Πνευματικά δικαιώματα 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas " +"Nilsson, και 4Front Technologies\n" +"\n" +"Άδεια: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." -msgstr "" +msgstr "Πατήστε έναν συνδυασμό πλήκτρων μέσα σε ένα πεδίο κειμένου." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3192,10 +3028,25 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Πρόσθετο Γενικές συντομεύσεις\n" +"Έλεγχος της αναπαραγωγής με συνδυασμούς πλήκτρων ή με τα πλήκτρα πολυμέσων.\n" +"\n" +"Πνευματικά δικαιώματα (C) 2020 i.Dark_Templar \n" +"Πνευματικά δικαιώματα (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Στους συντελεστές περιλαμβάνονται:\n" +"Πνευματικά δικαιώματα (C) 2006-2007 Vladimir Paskov \n" +"Πνευματικά δικαιώματα (C) 2000-2002 Ville Syrjälä ,\n" +"Bryn Davies ,\n" +"Jonathan A. Davis ,\n" +"Jeremy Tan " #: src/qtui/menus.cc:109 msgid "_Open Folder ..." -msgstr "Άνοιγμα _φακέλου ..." +msgstr "Άνοι_γμα φακέλου ..." #: src/qtui/menus.cc:115 msgid "_Add Folder ..." @@ -3213,12 +3064,16 @@ msgid "Audio Settings ..." msgstr "Ρυθμίσεις ήχου ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" -msgstr "" +msgstr "Σ#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" +msgstr "Κ#" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" msgstr "" #: src/qtui/qtui.cc:40 @@ -3247,7 +3102,7 @@ #: src/qtui/settings.cc:78 msgid "Use bold font for column headers" -msgstr "" +msgstr "Έντονη γραμματοσειρά στις επικεφαλίδες στηλών" #: src/resample/resample.cc:43 msgid "Sample Rate Converter" @@ -3350,22 +3205,23 @@ "Your scrobbles are being saved on your computer temporarily. They will be " "submitted as soon as Audacious is allowed access." msgstr "" -"Αποθηκεύτηκαν προσωρινά scrobbles στον υπολογιστή σας. Θα υποβληθούν το " -"συντομότερο όταν θα επιτραπεί η πρόσβαση στο Audacious." +"Αποθηκεύτηκαν προσωρινά οι πληροφορίες του μουσικού προφίλ σας στον " +"υπολογιστή. Θα υποβληθούν το συντομότερο όταν θα επιτραπεί η πρόσβαση στο " +"Audacious." #: src/scrobbler2/config_window.cc:33 #, c-format msgid "Permission granted. Scrobbling for user %s." -msgstr "Η άδεια χορηγείται. Scrobbling για τον χρήστη %s." +msgstr "" +"Χορηγείται άδεια. Μεταφορά πληροφοριών για το μουσικό προφίλ του χρήστη %s." #: src/scrobbler2/config_window.cc:37 msgid "" "Permission denied. Open the following URL in a browser, allow Audacious " "access to your account, and then click 'Check Permission' again:" msgstr "" -"Η άδεια απορρίφθηκε. Ανοίξτε την ακόλουθη διεύθυνση URL, επιτρέψτε τη " -"πρόσβαση του Audacious στον λογαριασμό σας και κάντε πάλι κλικ στο 'Έλεγχος " -"άδειας': " +"Απορρίφθηκε η άδεια. Ανοίξτε την ακόλουθη διεύθυνση, επιτρέψτε τη πρόσβαση " +"του Audacious στον λογαριασμό σας και κάντε πάλι κλικ στο 'Έλεγχος άδειας': " #: src/scrobbler2/config_window.cc:47 msgid "There was a problem contacting Last.fm." @@ -3382,8 +3238,8 @@ #: src/scrobbler2/config_window.cc:91 msgid "You need to allow Audacious to scrobble tracks to your Last.fm account." msgstr "" -"Πρέπει να επιτρέψετε στο Audacious να scrobble τα κομμάτια στον λογαριασμό " -"σας του Last.fm." +"Πρέπει να επιτρέψετε στο Audacious να μεταφέρει τις πληροφορίες του μουσικού " +"προφίλ σας στο λογαριασμό που διαθέτετε στο Last.fm." #: src/scrobbler2/scrobbler.cc:29 msgid "Scrobbler 2.0" @@ -3407,7 +3263,7 @@ "project.\n" "\n" msgstr "" -"Πρόσθετο Audacious Scrobbler Plugin 2.0 από τον Pitxyoki,\n" +"Πρόσθετο Audacious Scrobbler 2.0 από τον Pitxyoki,\n" "\n" "Πνευματικά δικαιώματα © 2012-2013 Luís Μ Picciochi Oliveira \n" @@ -3420,8 +3276,8 @@ "Audacious is now using an improved version of the Last.fm Scrobbler.\n" "Please check the Preferences for the Scrobbler plugin." msgstr "" -"Το Audacious χρησιμοποιεί μια βελτιωμένη έκδοση του Last.fm Scrobbler. " -"Παρακαλούμε ελέγξτε τις προτιμήσεις για το πρόσθετο Scrobbler." +"Το Audacious χρησιμοποιεί μια βελτιωμένη έκδοση Scrobbler του Last.fm.\n" +" Παρακαλώ ελέγξτε τις προτιμήσεις του πρόσθετου Scrobbler." #: src/sdlout/sdlout.cc:43 msgid "SDL Output" @@ -3440,30 +3296,30 @@ msgid "Library" msgstr "Δισκοθήκη" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "τραγούδι %d" msgstr[1] "Τραγούδια %d" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "αυτού του είδους" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "σε" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "από" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Αριθμός αποτελεσμάτων για εμφάνιση:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Επανέλεγχος δισκοθήκης στην εκκίνηση" @@ -3471,7 +3327,7 @@ msgid "Monitor library for changes" msgstr "Παρακολούθηση αλλαγών από τη δισκοθήκη" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3479,37 +3335,37 @@ "Για να εισάγεται τη συλλογή μουσικής σας στο Audacious, διαλέξτε ένα φάκελο " "και κάνετε κλικ στο εικονίδιο \"ανανέωση\"." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Παρακαλώ περιμένετε ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Επιλογή φακέλου" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Έρευνα δισκοθήκης" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "Εμφανίζεται %d από %d" msgstr[1] "Εμφανίζονται %d από %d" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "Βρέθηκε %d" msgstr[1] "Βρέθηκαν %d" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Δημιουργία λίστας αναπαραγωγής" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Προσθήκη στη λίστα αναπαραγωγής" @@ -3551,7 +3407,7 @@ #: src/sid/xs_config.cc:81 msgid "Set maximum playback time:" -msgstr "Ορισμός μέγιστου χρόνου αναπαραγωγής:" +msgstr "Ρύθμιση μέγιστου χρόνου αναπαραγωγής:" #: src/sid/xs_config.cc:87 msgid "Use only when song length is unknown" @@ -3607,116 +3463,116 @@ #: src/skins/actions.cc:60 src/skins-qt/actions.cc:58 msgid "Repeat point A set." -msgstr "Καθορισμός του σημείου επανάληψης Α." +msgstr "Ορισμός του σημείου επανάληψης Α." #: src/skins/actions.cc:65 src/skins-qt/actions.cc:63 msgid "Repeat point B set." -msgstr "Καθορισμός του σημείου επανάληψης Β." +msgstr "Ορισμός του σημείου επανάληψης Β." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Προενίσχυση" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Ισοσταθμιστής Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Ενεργή εγγραφή" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Ανενεργή εγγραφή" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Αναζήτηση σε %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Ένταση: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Ισορροπία: %d%% αριστερά" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Ισορροπία: κέντρο" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Ισορροπία: %d%% δεξιά" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" -msgstr "Μενού Επιλογών" +msgstr "Μενού επιλογών" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Απενεργοποίηση του 'Πάντα στην κορυφή'" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Ενεργοποίηση του 'Πάντα στην κορυφή'" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Πλαίσιο αρχείου πληροφοριών " -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Διπλό μέγεθος" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" -msgstr "Απεικονίσεις" +msgstr "Οπτικά εφέ" #: src/skins/menus.cc:74 src/skins-qt/menus.cc:64 msgid "Volume Up" @@ -3736,11 +3592,7 @@ #: src/skins/menus.cc:85 src/skins-qt/menus.cc:76 msgid "Open URL ..." -msgstr "Άνοιγμα διεύθυνσης URL ..." - -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Αναπαραγωγή" +msgstr "Άνοιγμα διεύθυνσης ..." #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" @@ -3756,7 +3608,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Υπηρεσίες" @@ -3773,7 +3625,7 @@ msgstr "Έξοδος" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Πληροφορίες τραγουδιού" @@ -3793,7 +3645,7 @@ msgid "Clear A-B Repeat" msgstr "Αφαίρεση σημείων επανάληψης A-B" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Μετάβαση στο τραγούδι" @@ -3879,27 +3731,27 @@ #: src/skins/menus.cc:163 src/skins-qt/menus.cc:158 msgid "Add URL ..." -msgstr "Προσθήκη διεύθυνσης URL ..." +msgstr "Προσθήκη διεύθυνσης ..." #: src/skins/menus.cc:164 src/skins-qt/menus.cc:160 msgid "Add Files ..." msgstr "Προσθήκη αρχείων..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Κατά τίτλο" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Κατά όνομα αρχείου" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Κατά διαδρομή αρχείου" @@ -3917,7 +3769,7 @@ #: src/skins/menus.cc:180 src/skins-qt/menus.cc:176 msgid "Remove Duplicates" -msgstr "Αφαίρεση διπλών" +msgstr "Αφαίρεση διπλότυπων" #: src/skins/menus.cc:182 src/skins-qt/menus.cc:178 msgid "Remove Unselected" @@ -3927,113 +3779,113 @@ msgid "Remove Selected" msgstr "Αφαίρεση επιλεγμένων" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Αναζήτηση και επιλογή" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Αντιστροφή επιλογής" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Επιλογή κανενός" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Επιλογή όλων" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Κατά αριθμό κομματιού" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Κατά καλλιτέχνη" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Κατά άλμπουμ" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Κατά καλλιτέχνη άλμπουμ" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Κατά ημερομηνία κυκλοφορίας" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Κατά είδος" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Κατά διάρκεια" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Κατά προσαρμοσμένο τίτλο" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Κατά σχόλιο" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Τυχαιοποίηση λίστας" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Αντίστροφη λίστα" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Ταξινόμηση επιλεγμένων" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Ταξινόμηση λίστας" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Άνοιγμα φακέλου που περιέχεται" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Αποκοπή" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Αντιγραφή" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Επικόλληση" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Επικόλληση στο τέλος" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Προσθήκη/Αφαίρεση από την σειρά" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d από %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Επεξεργαστής λίστας αναπαραγωγής Audacious" @@ -4049,169 +3901,222 @@ msgid "Add Folder ..." msgstr "Προσθήκη φακέλου ..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Αναζήτηση καταχωρήσεων σε ενεργή λίστα αναπαραγωγής" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Επιλογή καταχωρήσεων στην λίστα αναπαραγωγής συμπληρώνοντας ένα ή " +"περισσότερα πεδία. Τα πεδία χρησιμοποιούν τη σύνταξη έκφρασης με διάκριση " +"πεζών-κεφαλαίων. Αν δεν ξέρετε πώς λειτουργούν οι κανονικές εκφράσεις, απλά " +"εισάγετε ένα μικρό τμήμα από αυτό που αναζητάτε." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Τίτλος:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Αλμπουμ:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Καλλιτέχνης:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Όνομα αρχείου:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Εκκαθάριση προηγούμενων επιλογών πριν από την αναζήτηση" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Αυτόματη εναλλαγή σειράς αναμονής για τις καταχωρήσεις που ταιριάζουν" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Δημιουργία νέας λίστας αναπαραγωγής με τις καταχωρήσεις που ταιριάζουν" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Αναζήτηση" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Πρόγραμμα αναπαραγωγής:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Επιλογή γραμματοσειράς του κυρίως παραθύρου αναπαραγωγής:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Λίστα αναπαραγωγής:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Επιλογή γραμματοσειράς για τη λίστα αναπαραγωγής:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Εμφάνιση" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" +"Εμφάνιση ενεργής γραμμής τίτλου όταν οποιοδήποτε παράθυρο είναι εστιασμένο" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Γραμματοσειρές" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Χρήση γραμματοσειρών bitmap (υποστηρίζει μόνο ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Κύλιση τίτλου τραγουδιού" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Κύλιση τίτλου τραγουδιού και στις δύο κατευθύνσεις" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Αναλυτής" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Κυματομορφή" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Ηχητικό αποτύπωμα / Μετρητής VU" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Κλειστό" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Κανονικά" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Φωτεινός" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Κατακόρυφες γραμμές" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Γραμμές" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Μπάρες" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Πολύ αργά" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Αργά" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Μεσαία" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Γρήγορα" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Πολύ γρήγορα" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Αποσιωπητικά" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Γραμμές" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Συμπαγές" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Ψυχρός" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Ομαλά" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Χρωματισμός:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Στυλ:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Μείωση:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Μείωση κορυφής:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Στυλ κυματομορφής:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Χρωματισμός ηχητικού αποτυπώματος:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "Στυλ μετρητή VU:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Τύπος" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" -msgstr "Τύπος απεικόνισης:" +msgstr "Τύπος οπτικού εφέ:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Αναλυτής" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Εμφάνιση κορυφών" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" -msgstr "Απεικόνιση" +msgstr "Οπτικό εφέ" #: src/skins-qt/skinselector.cc:98 src/skins/skinselector.cc:111 msgid "Archived Winamp 2.x skin" @@ -4221,59 +4126,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Αποαρχειοθετημένη εμφάνιση Winamp 2.x" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Αναζήτηση καταχωρήσεων σε ενεργή λίστα αναπαραγωγής" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Αναζήτηση" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Επιλογή καταχωρήσεων στην λίστα αναπαραγωγής συμπληρώνοντας ένα ή " -"περισσότερα πεδία. Τα πεδία χρησιμοποιούν τη σύνταξη έκφρασης με διάκριση " -"πεζών-κεφαλαίων. Αν δεν ξέρετε πώς λειτουργούν οι κανονικές εκφράσεις, απλά " -"εισάγετε ένα μικρό τμήμα από αυτό που αναζητάτε." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Τίτλος:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Αλμπουμ:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Καλλιτέχνης:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Όνομα αρχείου:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Εκκαθάριση προηγούμενων επιλογών πριν από την αναζήτηση" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Αυτόματη εναλλαγή σειράς αναμονής για τις καταχωρήσεις που ταιριάζουν" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Δημιουργία νέας λίστας αναπαραγωγής με τις καταχωρήσεις που ταιριάζουν" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Πρόσθετο Sndfile" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4323,7 +4180,7 @@ #: src/sndio/sndio.cc:100 msgid "Save and restore volume:" -msgstr "Αποθήκευση και επαναφορά του ήχου:" +msgstr "Αποθήκευση και επαναφορά της έντασης:" #: src/sndio/sndio.cc:181 #, c-format @@ -4469,7 +4326,7 @@ #: src/soxr/sox-resampler.cc:200 msgid "Allow aliasing" -msgstr "" +msgstr "Να επιτρέπεται η χρήση ψευδώνυμων " #: src/soxr/sox-resampler.cc:202 msgid "Use steep filter" @@ -4517,7 +4374,7 @@ "Πνευματικά δικαιώματα 2015 Eugene Paskevich \n" "\n" "Το πρόσθετο αυτό προσφέρει ένα εικονίδιο κατάστασης\n" -"στη περιοχή ειδοποιήσεων του διαχειριστή παραθύρων." +"στη περιοχή ειδοποιήσεων." #: src/statusicon-qt/statusicon.cc:86 src/statusicon/statusicon.cc:380 msgid "Mouse Scroll Action" @@ -4541,11 +4398,11 @@ #: src/statusicon-qt/statusicon.cc:96 src/statusicon/statusicon.cc:390 msgid "Close to the system tray" -msgstr "Κλείσιμο του δίσκου συστήματος" +msgstr "Κλείσιμο στο εικονίδιο κατάστασης" #: src/statusicon-qt/statusicon.cc:98 src/statusicon/statusicon.cc:392 msgid "Advance in playlist when scrolling upward" -msgstr "Προώθηση της λίστας αναπαραγωγής, κατά την κύλιση προς τα επάνω" +msgstr "Μετακίνηση στη λίστα αναπαραγωγής με κύλιση προς τα επάνω" #: src/statusicon-qt/statusicon.cc:113 src/statusicon/statusicon.cc:283 msgid "Se_ttings ..." @@ -4567,7 +4424,7 @@ "Copyright 2010 Michał Lipski \n" "\n" "Το πρόσθετο αυτό παρέχει ένα εικονίδιο κατάστασης, που τοποθετείται στη " -"περιοχή ειδοποιήσεων του διαχειριστή παραθύρων." +"περιοχή ειδοποιήσεων." #: src/stereo_plugin/stereo.cc:19 msgid "Extra Stereo" @@ -4601,11 +4458,11 @@ #: src/streamtuner/ihr-model.cc:63 msgid "Market" -msgstr "" +msgstr "Αγορά" #: src/streamtuner/ihr-model.cc:156 msgid "Call Letters" -msgstr "" +msgstr "Γράμματα κλήσης" #: src/streamtuner/ihr-model.cc:162 msgid "Description" @@ -4653,7 +4510,7 @@ #: src/streamtuner/shoutcast-model.cc:197 msgid "Inspirational" -msgstr "Εμψυχωτική" +msgstr "Inspirational" #: src/streamtuner/shoutcast-model.cc:198 msgid "International" @@ -4685,7 +4542,7 @@ #: src/streamtuner/shoutcast-model.cc:206 msgid "R&B and Urban" -msgstr "" +msgstr "R&B και Urban" #: src/streamtuner/shoutcast-model.cc:207 msgid "Rap" @@ -4705,11 +4562,11 @@ #: src/streamtuner/shoutcast-model.cc:211 msgid "Soundtracks" -msgstr "" +msgstr "Κομμάτια τραγουδιών " #: src/streamtuner/shoutcast-model.cc:212 msgid "Talk" -msgstr "" +msgstr "Μίλησε" #: src/streamtuner/shoutcast-model.cc:213 msgid "Themes" @@ -4717,15 +4574,15 @@ #: src/streamtuner/streamtuner.cc:59 msgid "Shoutcast" -msgstr "" +msgstr "Shoutcast" #: src/streamtuner/streamtuner.cc:60 msgid "Icecast" -msgstr "" +msgstr "Icecast" #: src/streamtuner/streamtuner.cc:71 msgid "Stream Tuner" -msgstr "" +msgstr "Ρυθμιστής αναμετάδοσης " #: src/tonegen/tonegen.cc:45 msgid "Tone Generator" @@ -4755,19 +4612,32 @@ "frequency3;..\n" "π.χ. τόνος://2000;2005 για να παίξει ένα τόνο 2000 Hz και ένα τόνο 2005 Hz" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Έχουν κρυφτεί περισσότερα μηνύματα.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Εργασία ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Πληροφόρηση" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "Ο φάκελος %s δεν φαίνεται να είναι σωστός." + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Αφαίρεση φωνής" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4858,12 +4728,12 @@ "VU Meter Plugin for Audacious\n" "Copyright 2017-2019 Marc Sánchez Fauste" msgstr "" -"Πρόσθετο VU Meter για το Audacious\n" +"Πρόσθετο Μετρητή VU για το Audacious\n" "Πνευματικά δικαιώματα 2017-2019 Marc Sánchez Fauste" #: src/vumeter-qt/vumeter_qt.cc:35 msgid "VU Meter Settings" -msgstr "VU Meter Ρυθμίσεις" +msgstr "Μετρητής VU Ρυθμίσεις" #: src/vumeter-qt/vumeter_qt.cc:37 msgid "Peak hold time:" @@ -4883,7 +4753,7 @@ #: src/vumeter-qt/vumeter_qt.h:37 msgid "VU Meter" -msgstr "VU Meter" +msgstr "Μετρητής VU" #: src/waveout/waveout.cc:43 msgid "Win32 waveOut" @@ -4919,14 +4789,41 @@ "\n" "Μερικός κώδικας από τον Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "Αποκωδικοποιητής 2SF" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Συνημιτόνιο" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Έντονο" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "Ρύθμιση XSF" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Προεπιλεγμένος χρόνος:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Λειτουργία παρεμβολής:" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "Διαμοιραζόμενες λίστες αναπαραγωγής ΧΜL (XSPF)" + +#~ msgid "Sample rate" +#~ msgstr "Ρυθμός δειγματοληψίας" diff -Nru audacious-plugins-4.1/po/en_GB.po audacious-plugins-4.3.1/po/en_GB.po --- audacious-plugins-4.1/po/en_GB.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/en_GB.po 2023-04-29 20:17:32.000000000 +0000 @@ -3,14 +3,14 @@ # This file is distributed under the same license as the Audacious Plugins package. # # Translators: -# Andi Chandler , 2013,2016-2019 +# Andi Chandler , 2013,2016-2019,2022-2023 msgid "" msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Andi Chandler , 2013,2016-2019,2022-2023\n" "Language-Team: English (United Kingdom) (http://www.transifex.com/audacious/" "audacious/language/en_GB/)\n" "Language: en_GB\n" @@ -28,7 +28,7 @@ msgstr "AdPlug (AdLib Player)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "sequenced" @@ -38,11 +38,13 @@ #: src/adplug/adplug-xmms.cc:350 msgid "OPL Emulator:" -msgstr "" +msgstr "OPL Emulator:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Sample rate" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Sample rate:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -58,7 +60,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Miscellaneous" @@ -66,259 +68,6 @@ msgid "Repeat song in endless loop" msgstr "Repeat song in endless loop" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Alarm" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Set Alarm ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialogue is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "This is your wakeup call." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Your reminder for today is..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Reminder" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Monday" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Tuesday" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Wednesday" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Thursday" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Friday" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Saturday" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Sunday" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Time" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Alarm at (default):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Quiet after:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "hours" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minutes" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Choose the days for the alarm to come on" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Day" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Default" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Days" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Fading" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "seconds" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Volume" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Start at" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Final" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Current" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Additional Command" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "enable" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Playlist (optional)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Select a playlist" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Options" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "What do these options mean?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Help" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Album Art" @@ -467,87 +216,83 @@ msgid "Synthesizer" msgstr "Synthesizer" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Sample rate:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - select SoundFont file" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Cancel" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Open" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "File name" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Size (bytes)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Name:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " MIDI Info " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Format:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Length (msec):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "No. of Tracks:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "variable" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Time Div:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI Comments and Lyrics " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* no comments available in this MIDI file *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* no lyrics available in this MIDI file *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Close" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (invalid UTF-8)" @@ -603,7 +348,7 @@ msgid "Concave Rectangle" msgstr "Concave Rectangle" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "None" @@ -639,94 +384,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Triggers OSD when playback is unpaused." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Placement" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Relative X offset:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Relative Y offset:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Max OSD width:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Multi-Monitor options" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Display OSD using:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "all monitors" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "monitor %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Timing (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Display:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Fade in:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Fade out:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Fonts" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Font %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Shadow" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Render Style" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Colours" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Colour %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Enable trigger" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Event" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Composite manager detected" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -736,56 +481,56 @@ "unless you know that you have one running, please activate a composite " "manager otherwise the OSD will not work properly" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Composite manager not required for fake transparency" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Transparency" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Fake transparency" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Real transparency (requires X Composite Ext.)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Composite extension not loaded" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Position" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animation" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Text" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Decoration" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Trigger" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Misc" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Test" @@ -801,11 +546,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Audacious Playlists (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Bit Depth:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Downsample ratio:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Colour" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Blur Scope" @@ -817,6 +578,10 @@ msgid "Presets:" msgstr "Presets:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Default" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Feed level:" @@ -829,7 +594,7 @@ msgid "Cut frequency:" msgstr "Cut frequency:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Spectrum Analyser" @@ -924,50 +689,50 @@ msgid "Audio CD" msgstr "Audio CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Failed to open CD device %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "No audio capable CD drive found." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Drive is empty." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Unsupported disk type." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Failed to finish initialising opened CD drive." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Failed to retrieve first/last track number." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Cannot read start/end LSN for track %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Failed to create the CDDB connection." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Failed to query the CDDB server" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Failed to query the CDDB server: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Failed to read the CDDB info: %s" @@ -1040,6 +805,13 @@ msgid "Default song length:" msgstr "Default song length:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "seconds" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Resampling" @@ -1068,7 +840,7 @@ msgid "CoreAudio output" msgstr "CoreAudio output" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1088,11 +860,11 @@ "Based on SDL Output Plugin for Audacious\n" "Copyright 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Use exclusive mode" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "Use bit perfect audio (adapt device sampling rate)" @@ -1174,37 +946,37 @@ #: src/delete-files/delete-files.cc:133 #, c-format msgid "Do you want to move %d files to the trash?" -msgstr "" +msgstr "Do you want to move %d files to the rubbish bin?" #: src/delete-files/delete-files.cc:134 #, c-format msgid "Do you want to permanently delete %d files?" -msgstr "" +msgstr "Do you want to permanently delete %d files?" #: src/delete-files/delete-files.cc:146 msgid "Move to trash" -msgstr "" +msgstr "Move to Rubbish Bin" #: src/delete-files/delete-files.cc:146 msgid "Delete" -msgstr "" +msgstr "Delete" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Cancel" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" -msgstr "" +msgstr "Delete Selected Files" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" -msgstr "" +msgstr "Delete Method" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" -msgstr "" +msgstr "Move to Rubbish Bin instead of deleting immediately" #: src/echo_plugin/echo.cc:9 msgid "" @@ -1213,38 +985,42 @@ "Surround echo by Carl van Schaik, 1999\n" "Updated for Audacious by William Pitcock and John Lindgren, 2010-2014" msgstr "" +"Echo Plugin\n" +"By Johan Levin, 1999\n" +"Surround echo by Carl van Schaik, 1999\n" +"Updated for Audacious by William Pitcock and John Lindgren, 2010-2014" #: src/echo_plugin/echo.cc:21 msgid "Echo" -msgstr "" +msgstr "Echo" #: src/echo_plugin/echo.cc:22 src/modplug/plugin_main.cc:72 #: src/modplug/plugin_main.cc:82 msgid "Delay:" -msgstr "" +msgstr "Delay:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" #: src/echo_plugin/echo.cc:25 msgid "Feedback:" -msgstr "" +msgstr "Feedback:" #: src/echo_plugin/echo.cc:28 src/modplug/plugin_main.cc:86 msgid "Volume:" -msgstr "" +msgstr "Volume:" #: src/echo_plugin/echo.cc:39 msgid "Echo" -msgstr "" +msgstr "Echo" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" -msgstr "" +msgstr "FFmpeg Plugin" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1253,10 +1029,16 @@ "William Pitcock \n" "Matti Hämäläinen " msgstr "" +"Multi-format audio decoding plugin for Audacious using\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"\n" +"Audacious plugin by:\n" +"William Pitcock \n" +"Matti Hämäläinen " #: src/filewriter/filewriter.cc:48 msgid "FileWriter Plugin" -msgstr "" +msgstr "FileWriter Plugin" #: src/filewriter/filewriter.cc:316 #, c-format @@ -1283,6 +1065,19 @@ "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public Licence as published by the Free " +"Software Foundation; either version 2 of the Licence, or (at your option) " +"any later version.\n" +"\n" +"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.\n" +"\n" +"You should have received a copy of the GNU General Public Licence along with " +"this program; if not, write to the Free Software Foundation, Inc., 51 " +"Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." #: src/filewriter/filewriter.cc:385 msgid "Output file format:" @@ -1294,27 +1089,27 @@ #: src/filewriter/filewriter.cc:392 msgid "Save into custom directory:" -msgstr "" +msgstr "Save into custom directory:" #: src/filewriter/filewriter.cc:400 msgid "Generate file name from:" -msgstr "" +msgstr "Generate file name from:" #: src/filewriter/filewriter.cc:401 msgid "Original file name" -msgstr "" +msgstr "Original file name" #: src/filewriter/filewriter.cc:404 msgid "Original file name (no suffix)" -msgstr "" +msgstr "Original file name (no suffix)" #: src/filewriter/filewriter.cc:407 msgid "Original file tag" -msgstr "" +msgstr "Original file tag" #: src/filewriter/filewriter.cc:411 msgid "Prepend track number to file name" -msgstr "" +msgstr "Prepend track number to file name" #: src/filewriter/filewriter.cc:417 src/filewriter/filewriter.cc:449 msgid "Auto" @@ -1322,129 +1117,129 @@ #: src/filewriter/filewriter.cc:418 msgid "8000 Hz" -msgstr "" +msgstr "8000 Hz" #: src/filewriter/filewriter.cc:419 msgid "11025 Hz" -msgstr "" +msgstr "11025 Hz" #: src/filewriter/filewriter.cc:420 msgid "12000 Hz" -msgstr "" +msgstr "12000 Hz" #: src/filewriter/filewriter.cc:421 msgid "16000 Hz" -msgstr "" +msgstr "16000 Hz" #: src/filewriter/filewriter.cc:422 msgid "22050 Hz" -msgstr "" +msgstr "22050 Hz" #: src/filewriter/filewriter.cc:423 msgid "24000 Hz" -msgstr "" +msgstr "24000 Hz" #: src/filewriter/filewriter.cc:424 msgid "32000 Hz" -msgstr "" +msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" -msgstr "" +msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" -msgstr "" +msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "" +msgid "8 kbit/s" +msgstr "8 kbit/s" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "" +msgid "16 kbit/s" +msgstr "16 kbit/s" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "" +msgid "32 kbit/s" +msgstr "32 kbit/s" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "" +msgid "40 kbit/s" +msgstr "40 kbit/s" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "" +msgid "48 kbit/s" +msgstr "48 kbit/s" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "" +msgid "56 kbit/s" +msgstr "56 kbit/s" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "" +msgid "64 kbit/s" +msgstr "64 kbit/s" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "" +msgid "80 kbit/s" +msgstr "80 kbit/s" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "" +msgid "96 kbit/s" +msgstr "96 kbit/s" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "" +msgid "112 kbit/s" +msgstr "112 kbit/s" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "" +msgid "128 kbit/s" +msgstr "128 kbit/s" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "" +msgid "160 kbit/s" +msgstr "160 kbit/s" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "" +msgid "192 kbit/s" +msgstr "192 kbit/s" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "" +msgid "224 kbit/s" +msgstr "224 kbit/s" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "" +msgid "256 kbit/s" +msgstr "256 kbit/s" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "" +msgid "320 kbit/s" +msgstr "320 kbit/s" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Joint Stereo" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" #: src/filewriter/filewriter.cc:456 msgid "VBR" -msgstr "" +msgstr "VBR" #: src/filewriter/filewriter.cc:457 msgid "ABR" -msgstr "" +msgstr "ABR" #: src/filewriter/filewriter.cc:478 msgid "Algorithm quality:" -msgstr "" +msgstr "Algorithm quality:" #: src/filewriter/filewriter.cc:484 msgid "Bitrate:" @@ -1456,11 +1251,11 @@ #: src/filewriter/filewriter.cc:498 msgid "Audio mode:" -msgstr "" +msgstr "Audio mode:" #: src/filewriter/filewriter.cc:501 msgid "Enforce strict ISO compliance" -msgstr "" +msgstr "Enforce strict ISO compliance" #: src/filewriter/filewriter.cc:503 msgid "Error protection" @@ -1476,15 +1271,15 @@ #: src/filewriter/filewriter.cc:514 msgid "Minimum bitrate:" -msgstr "" +msgstr "Minimum bitrate:" #: src/filewriter/filewriter.cc:518 msgid "Maximum bitrate:" -msgstr "" +msgstr "Maximum bitrate:" #: src/filewriter/filewriter.cc:522 msgid "Average bitrate:" -msgstr "" +msgstr "Average bitrate:" #: src/filewriter/filewriter.cc:526 msgid "VBR quality level:" @@ -1496,11 +1291,11 @@ #: src/filewriter/filewriter.cc:533 msgid "Omit Xing VBR header" -msgstr "" +msgstr "Omit Xing VBR header" #: src/filewriter/filewriter.cc:539 msgid "Frame Headers" -msgstr "" +msgstr "Frame Headers" #: src/filewriter/filewriter.cc:540 msgid "Mark as copyright" @@ -1512,7 +1307,7 @@ #: src/filewriter/filewriter.cc:544 msgid "ID3 Tags" -msgstr "" +msgstr "ID3 Tags" #: src/filewriter/filewriter.cc:545 msgid "Force addition of version 2 tag" @@ -1540,48 +1335,54 @@ #: src/filewriter/filewriter.cc:566 msgid "Quality (0-1):" -msgstr "" +msgstr "Quality (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "General" #: src/flac/flacng.h:36 msgid "FLAC Decoder" -msgstr "" +msgstr "FLAC Decoder" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" -msgstr "" +msgstr "lossless" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" "\n" "http://www.skytale.net/projects/bmp-flac2/" msgstr "" +"Original code by\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" #: src/gio/gio.cc:34 msgid "" "GIO Plugin for Audacious\n" "Copyright 2009-2012 John Lindgren" msgstr "" +"GIO Plugin for Audacious\n" +"Copyright 2009-2012 John Lindgren" #: src/gio/gio.cc:42 msgid "GIO Plugin" -msgstr "" +msgstr "GIO Plugin" #: src/gio/gio.cc:152 msgid "Read-and-append mode not supported" -msgstr "" +msgstr "Read-and-append mode not supported" #: src/gio/gio.cc:165 msgid "Invalid open mode" -msgstr "" +msgstr "Invalid open mode" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1592,117 +1393,143 @@ "\n" "License: GPLv2+" msgstr "" +"OpenGL Spectrum Analyzer for Audacious\n" +"Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" +"\n" +"Based on the XMMS plugin:\n" +"Copyright 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, and " +"4Front Technologies\n" +"\n" +"Licence: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" -msgstr "" - -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "Entry number" +msgstr "OpenGL Spectrum Analyser" #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "Entry Number" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Title" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Artist" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Year" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Album" -#: src/gtkui/columns.cc:40 -msgid "Album artist" -msgstr "Album artist" - #: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr "Album Artist" + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Track" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Genre" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "Queue position" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "Queue Position" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Length" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "File path" - -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Custom title" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "File Path" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "File Name" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Custom Title" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Bitrate" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Comment" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "Publisher" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "Catalogue Number" + +#: src/gtkui/columns.cc:322 msgid "Available columns" -msgstr "" +msgstr "Available columns" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" -msgstr "" +msgstr "Displayed columns" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" -msgstr "" +msgstr "Search Tool" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Dock at Left" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Dock at Right" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Dock at Top" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Dock at Bottom" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Undock" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Disable" @@ -1717,7 +1544,7 @@ #: src/gtkui/menus.cc:81 src/qtui/menus.cc:113 msgid "_Add Files ..." -msgstr "" +msgstr "_Add Files ..." #: src/gtkui/menus.cc:82 src/qtui/menus.cc:118 msgid "Add U_RL ..." @@ -1725,7 +1552,7 @@ #: src/gtkui/menus.cc:84 src/qtui/menus.cc:120 msgid "Search _Library" -msgstr "" +msgstr "Search _Library" #: src/gtkui/menus.cc:86 src/qtui/menus.cc:123 msgid "A_bout ..." @@ -1733,7 +1560,7 @@ #: src/gtkui/menus.cc:87 src/qtui/menus.cc:125 msgid "_Settings ..." -msgstr "" +msgstr "_Settings ..." #: src/gtkui/menus.cc:88 src/qtui/menus.cc:131 #: src/statusicon-qt/statusicon.cc:114 src/statusicon/statusicon.cc:284 @@ -1742,8 +1569,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Play" @@ -1771,12 +1598,12 @@ #: src/gtkui/menus.cc:97 src/qtui/menus.cc:145 src/skins/menus.cc:114 #: src/skins-qt/menus.cc:105 msgid "Previous Album" -msgstr "" +msgstr "Previous Album" #: src/gtkui/menus.cc:98 src/qtui/menus.cc:146 src/skins/menus.cc:115 #: src/skins-qt/menus.cc:106 msgid "Next Album" -msgstr "" +msgstr "Next Album" #: src/gtkui/menus.cc:100 src/qtui/menus.cc:148 msgid "_Repeat" @@ -1788,7 +1615,7 @@ #: src/gtkui/menus.cc:102 src/qtui/menus.cc:152 msgid "Shuffle by Albu_m" -msgstr "" +msgstr "Shuffle by Albu_m" #: src/gtkui/menus.cc:103 src/qtui/menus.cc:155 msgid "N_o Playlist Advance" @@ -1796,7 +1623,7 @@ #: src/gtkui/menus.cc:104 src/qtui/menus.cc:157 msgid "Stop A_fter This Song" -msgstr "" +msgstr "Stop A_fter This Song" #: src/gtkui/menus.cc:106 src/gtkui/menus.cc:208 src/qtui/menus.cc:162 #: src/qtui/menus.cc:292 @@ -1920,8 +1747,8 @@ msgid "Remove _Unavailable Files" msgstr "Remove _Unavailable Files" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_New" @@ -1931,7 +1758,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "Remo_ve" @@ -1985,7 +1812,7 @@ #: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 msgid "Show Info Bar _Album Art" -msgstr "" +msgstr "Show Info Bar _Album Art" #: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 msgid "Show Info Bar Vis_ualization" @@ -2035,11 +1862,11 @@ #: src/gtkui/menus.cc:211 src/qtui/menus.cc:297 msgid "_Open Containing Folder" -msgstr "" +msgstr "_Open Containing Folder" #: src/gtkui/menus.cc:212 src/qtui/menus.cc:299 msgid "_Refresh Selected" -msgstr "" +msgstr "_Refresh Selected" #: src/gtkui/menus.cc:214 src/qtui/menus.cc:302 msgid "Cu_t" @@ -2055,243 +1882,251 @@ #: src/gtkui/menus.cc:217 src/qtui/menus.cc:305 msgid "Paste at _End" -msgstr "" +msgstr "Paste at _End" #: src/gtkui/menus.cc:218 src/qtui/menus.cc:307 msgid "Select _All" msgstr "Select _All" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." -msgstr "" +msgstr "_Rename ..." #: src/gtkui/settings.cc:35 src/qtui/settings.cc:63 msgid "Playlist Tabs" -msgstr "" +msgstr "Playlist Tabs" #: src/gtkui/settings.cc:36 msgid "Always show tabs" -msgstr "" +msgstr "Always show tabs" #: src/gtkui/settings.cc:38 src/qtui/settings.cc:68 msgid "Show entry counts" -msgstr "" +msgstr "Show entry counts" #: src/gtkui/settings.cc:40 src/qtui/settings.cc:71 msgid "Show close buttons" -msgstr "" +msgstr "Show close buttons" #: src/gtkui/settings.cc:42 src/qtui/settings.cc:74 msgid "Playlist Columns" -msgstr "" +msgstr "Playlist Columns" #: src/gtkui/settings.cc:44 src/qtui/settings.cc:76 msgid "Show column headers" -msgstr "" +msgstr "Show column headers" + +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "Use symbolic icons in toolbar" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" -msgstr "" +msgstr "Scroll on song change" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "GTK Interface" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." -msgstr "" +msgstr "Buffering ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Play" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" -msgstr "" +msgstr "Pause" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" -msgstr "" +msgstr "Search Library" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Open Files" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Add Files" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" -msgstr "" +msgstr "Previous" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Stop" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" -msgstr "" +msgstr "Next" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" -msgstr "" +msgstr "Record Stream" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Repeat" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Shuffle" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" -msgstr "" +msgstr "Menu" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d channel" +msgstr[1] "%d channels" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" -msgstr "" +msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "%d kbit/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Single mode." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Playlist mode." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Stopping after song." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" -msgstr "" +msgstr "Previous track" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Pause/Resume" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" -msgstr "" +msgstr "Next track" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" -msgstr "" +msgstr "Step forward" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" -msgstr "" +msgstr "Step backward" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Mute" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" -msgstr "" +msgstr "Volume up" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" -msgstr "" +msgstr "Volume down" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" -msgstr "" +msgstr "Jump to file" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" -msgstr "" +msgstr "Toggle player window(s)" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Show On-Screen-Display" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" -msgstr "" +msgstr "Toggle repeat" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" -msgstr "" +msgstr "Toggle shuffle" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" -msgstr "" +msgstr "Toggle stop after current" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" -msgstr "" +msgstr "Raise player window(s)" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(none)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" "Do you want to continue?" msgstr "" +"It is not recommended to bind the primary mouse buttons without modifiers.\n" +"\n" +"Do you want to continue?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Binding mouse buttons" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2299,25 +2134,25 @@ "Press a key combination inside a text field.\n" "You can also bind mouse buttons." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Hotkeys:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Action:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Key Binding:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Add" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" -msgstr "" +msgstr "Global Hotkeys" #: src/hotkey/plugin.cc:76 msgid "" @@ -2333,62 +2168,75 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributors include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " #: src/jack/jack-ng.cc:54 msgid "JACK Output" -msgstr "" +msgstr "JACK Output" #: src/jack/jack-ng.cc:126 msgid "Client name:" -msgstr "" +msgstr "Client name:" #: src/jack/jack-ng.cc:128 msgid "Automatically connect to output ports" -msgstr "" +msgstr "Automatically connect to output ports" #: src/jack/jack-ng.cc:130 msgid "Filter ports (regex, use any port if blank):" -msgstr "" +msgstr "Filter ports (regex, use any port if blank):" #: src/jack/jack-ng.cc:136 msgid "Connect to physical ports only" -msgstr "" +msgstr "Connect to physical ports only" #: src/jack/jack-ng.cc:139 msgid "Upmix to" -msgstr "" +msgstr "Upmix to" #: src/jack/jack-ng.cc:141 msgid "ports if input has fewer channels" -msgstr "" +msgstr "ports if input has fewer channels" #: src/jack/jack-ng.cc:143 msgid "Ignore insufficient number of ports" -msgstr "" +msgstr "Ignore insufficient number of ports" #: src/jack/jack-ng.cc:181 msgid "No JACK output ports were found. Please check settings." -msgstr "" +msgstr "No JACK output ports were found. Please check settings." #: src/jack/jack-ng.cc:195 #, c-format msgid "Only %d JACK output ports were found but %d are required." -msgstr "" +msgstr "Only %d JACK output ports were found but %d are required." #: src/jack/jack-ng.cc:210 #, c-format msgid "Failed to connect to JACK port %s." -msgstr "" +msgstr "Failed to connect to JACK port %s." #: src/jack/jack-ng.cc:230 msgid "" "JACK supports only floating-point audio. You must change the output bit " "depth to floating-point in Audacious settings." msgstr "" +"JACK supports only floating-point audio. You must change the output bit " +"depth to floating-point in Audacious settings." #: src/jack/jack-ng.cc:245 msgid "Failed to connect to the JACK server; is it running?" -msgstr "" +msgstr "Failed to connect to the JACK server; is it running?" #: src/jack/jack-ng.cc:321 #, c-format @@ -2396,17 +2244,19 @@ "The JACK server requires a sample rate of %d Hz, but Audacious is playing at " "%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." msgstr "" +"The JACK server requires a sample rate of %d Hz, but Audacious is playing at " +"%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s Settings" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Module paths:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2416,37 +2266,39 @@ "These paths are searched in addition to LADSPA_PATH.\n" "After adding new paths, press Enter to scan for new plugins." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Available plugins:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Enable" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Enabled plugins:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Settings" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" msgstr "" +"LADSPA Host for Audacious\n" +"Copyright 2011 John Lindgren" #: src/ladspa/plugin.h:78 msgid "LADSPA Host" -msgstr "" +msgstr "LADSPA Host" #: src/lirc/lirc.cc:55 msgid "LIRC Plugin" -msgstr "" +msgstr "LIRC Plugin" #: src/lirc/lirc.cc:379 msgid "" @@ -2463,120 +2315,136 @@ "\n" "For more information about LIRC, see http://lirc.org." msgstr "" +"A simple plugin to control Audacious using the LIRC remote control daemon\n" +"\n" +"Adapted for Audacious by:\n" +"Tony Vroon \n" +"Joonas Harjumäki \n" +"\n" +"Based on the XMMS LIRC plugin by:\n" +"Carl van Schaik \n" +"Christoph Bartelmus \n" +"Andrew O. Shadoura \n" +"\n" +"For more information about LIRC, see http://lirc.org." #: src/lirc/lirc.cc:390 msgid "Connection" -msgstr "" +msgstr "Connection" #: src/lirc/lirc.cc:391 msgid "Reconnect to LIRC server" -msgstr "" +msgstr "Reconnect to LIRC server" #: src/lirc/lirc.cc:393 msgid "Wait before reconnecting:" -msgstr "" +msgstr "Wait before reconnecting:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" -msgstr "" +msgstr "Lyrics" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" -msgstr "" +msgstr "Nowhere" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" -msgstr "" +msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" -msgstr "" +msgstr "Artist is truncated at the start, Title -- at the end" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" -msgstr "" +msgstr "Chars to truncate on:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" -msgstr "" +msgstr "Chars are ORed in RegExp, surrounded by whitespace" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" -msgstr "" +msgstr "Chars to split on:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" -msgstr "" +msgstr "Further truncate those on chars" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" -msgstr "" +msgstr "General" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" -msgstr "" +msgstr "Split title into artist and title on chars" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "Sources" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "Use embedded lyrics (from Lyrics tag)" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "Fetch lyrics from Internet:" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" -msgstr "" +msgstr "Store fetched lyrics in local cache" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" -msgstr "" +msgstr "Local Storage" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" -msgstr "" +msgstr "Load lyric files (.lrc) from local storage" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" -msgstr "" +msgstr "Unable to fetch %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" -msgstr "" +msgstr "Unable to parse %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." -msgstr "" +msgstr "Looking for lyrics ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Error" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." -msgstr "" +msgstr "Lyrics could not be found." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." -msgstr "" +msgstr "Missing title and/or artist." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" -msgstr "" +msgstr "Save Locally" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" -msgstr "" +msgstr "Refresh" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" -msgstr "" +msgstr "M3U Playlists" #: src/metronom/metronom.cc:44 msgid "Tact Generator" -msgstr "" +msgstr "Tact Generator" #: src/metronom/metronom.cc:145 #, c-format @@ -2596,20 +2464,27 @@ "e.g. tact://77 to play 77 beats per minute\n" "or tact://60*3/4 to play 60 bpm in 3/4 tacts" msgstr "" +"A Tact Generator by Martin Strauss \n" +"\n" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" #: src/mixer/mixer.cc:43 msgid "Channel Mixer" -msgstr "" +msgstr "Channel Mixer" #: src/mixer/mixer.cc:255 msgid "" "Channel Mixer Plugin for Audacious\n" "Copyright 2011-2012 John Lindgren and Michał Lipski" msgstr "" +"Channel Mixer Plugin for Audacious\n" +"Copyright 2011-2012 John Lindgren and Michał Lipski" #: src/mixer/mixer.cc:259 msgid "Channel Mixer" -msgstr "" +msgstr "Channel Mixer" #: src/mixer/mixer.cc:260 msgid "Output channels:" @@ -2617,160 +2492,136 @@ #: src/mms/mms.cc:35 msgid "MMS Plugin" -msgstr "" +msgstr "MMS Plugin" #: src/mms/mms.cc:82 msgid "Error connecting to MMS server" -msgstr "" +msgstr "Error connecting to MMS server" #: src/modplug/modplugbmp.h:57 msgid "ModPlug (Module Player)" -msgstr "" +msgstr "ModPlug (Module Player)" #: src/modplug/plugin_main.cc:55 msgid "Channels" -msgstr "" +msgstr "Channels" #: src/modplug/plugin_main.cc:59 msgid "Nearest (fastest)" -msgstr "" +msgstr "Nearest (fastest)" #: src/modplug/plugin_main.cc:60 msgid "Linear (fast)" -msgstr "" +msgstr "Linear (fast)" #: src/modplug/plugin_main.cc:61 msgid "Spline (good)" -msgstr "" +msgstr "Spline (good)" #: src/modplug/plugin_main.cc:62 msgid "Polyphase (best)" -msgstr "" +msgstr "Polyphase (best)" #: src/modplug/plugin_main.cc:63 msgid "Sample rate" -msgstr "" +msgstr "Sample rate" #: src/modplug/plugin_main.cc:64 msgid "22 kHz" -msgstr "" +msgstr "22 kHz" #: src/modplug/plugin_main.cc:65 msgid "44 kHz" -msgstr "" +msgstr "44 kHz" #: src/modplug/plugin_main.cc:66 msgid "48 kHz" -msgstr "" +msgstr "48 kHz" #: src/modplug/plugin_main.cc:67 msgid "96 kHz" -msgstr "" +msgstr "96 kHz" #: src/modplug/plugin_main.cc:71 src/modplug/plugin_main.cc:76 #: src/modplug/plugin_main.cc:81 msgid "Level:" -msgstr "" +msgstr "Level:" #: src/modplug/plugin_main.cc:77 msgid "Cutoff:" -msgstr "" +msgstr "Cutoff:" #: src/modplug/plugin_main.cc:90 msgid "Reverb" -msgstr "" +msgstr "Reverb" #: src/modplug/plugin_main.cc:93 msgid "Bass Boost" -msgstr "" +msgstr "Bass Boost" #: src/modplug/plugin_main.cc:96 msgid "Surround" -msgstr "" +msgstr "Surround" #: src/modplug/plugin_main.cc:99 msgid "Preamp" -msgstr "" +msgstr "Preamp" #: src/modplug/plugin_main.cc:106 msgid "Oversample" -msgstr "" +msgstr "Oversample" #: src/modplug/plugin_main.cc:107 msgid "Noise reduction" -msgstr "" +msgstr "Noise reduction" #: src/modplug/plugin_main.cc:108 msgid "Play Amiga MODs" -msgstr "" +msgstr "Play Amiga MODs" #: src/modplug/plugin_main.cc:109 msgid "Repeat" -msgstr "" +msgstr "Repeat" #: src/modplug/plugin_main.cc:110 msgid "Repeat count:" -msgstr "" +msgstr "Repeat count:" #: src/modplug/plugin_main.cc:111 msgid "To repeat forever, set the repeat count to -1." -msgstr "" +msgstr "To repeat forever, set the repeat count to -1." #: src/modplug/plugin_main.cc:124 src/sid/xs_config.cc:106 msgid "These settings will take effect when Audacious is restarted." -msgstr "" +msgstr "These settings will take effect when Audacious is restarted." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" -msgstr "" +msgstr "Stop After This Song" #: src/moonstone/moonstone.cc:39 msgid "Moonstone" -msgstr "" +msgstr "Moonstone" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" -msgstr "" +msgstr "Reset to Defaults" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Now Playing" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Album Artist" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Entries" #: src/mpg123/mpg123.cc:54 msgid "MPG123 Plugin" -msgstr "" +msgstr "MPG123 Plugin" #: src/mpg123/mpg123.cc:81 msgid "Advanced" @@ -2778,35 +2629,35 @@ #: src/mpg123/mpg123.cc:82 msgid "Use accurate length calculation (slow)" -msgstr "" +msgstr "Use accurate length calculation (slow)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Surround" #: src/mpris2/plugin.cc:38 msgid "MPRIS 2 Server" -msgstr "" +msgstr "MPRIS 2 Server" #: src/neon/neon.cc:97 msgid "Neon HTTP/HTTPS Plugin" -msgstr "" +msgstr "Neon HTTP/HTTPS Plugin" #: src/neon/neon.cc:526 msgid "Error parsing redirect" -msgstr "" +msgstr "Error parsing redirect" #: src/neon/neon.cc:540 msgid "Unknown HTTP error" -msgstr "" +msgstr "Unknown HTTP error" #: src/neon/neon.cc:590 msgid "Error parsing URL" -msgstr "" +msgstr "Error parsing URL" #: src/neon/neon.cc:660 msgid "Too many redirects" -msgstr "" +msgstr "Too many redirects" #: src/notify/event.cc:97 msgid "Stopped" @@ -2818,7 +2669,7 @@ #: src/notify/notify.cc:39 msgid "Desktop Notifications" -msgstr "" +msgstr "Desktop Notifications" #: src/notify/notify.cc:57 msgid "" @@ -2839,73 +2690,104 @@ "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" +"Desktop Notifications Plugin for Audacious\n" +"Copyright (C) 2010 Maximilian Bogner\n" +"Copyright (C) 2011-2013 John Lindgren and Jean-Alexandre Anglès d'Auriac\n" +"\n" +"This plugin is free software: you can redistribute it and/or modify it under " +"the terms of the GNU General Public Licence as published by the Free " +"Software Foundation, either version 3 of the Licence, or (at your option) " +"any later version.\n" +"\n" +"This plugin 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 Licence for " +"more details.\n" +"\n" +"You should have received a copy of the GNU General Public Licence along with " +"this program. If not, see ." #: src/notify/notify.cc:104 msgid "Show playback controls" -msgstr "" +msgstr "Show playback controls" #: src/notify/notify.cc:106 msgid "Always show notification" -msgstr "" +msgstr "Always show notification" #: src/notify/notify.cc:108 msgid "Include album name in notification" -msgstr "" +msgstr "Include album name in notification" #: src/notify/notify.cc:110 msgid "Custom notification duration:" -msgstr "" +msgstr "Custom notification duration:" #: src/notify/osd.cc:74 msgid "Show" -msgstr "" +msgstr "Show" #: src/openmpt/mpt.cc:50 msgid "OpenMPT (Module Player)" -msgstr "" +msgstr "OpenMPT (Module Player)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" +"Module player based on libopenmpt\n" +"\n" +"Written by: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" -msgstr "" +msgstr "Stereo separation:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" -msgstr "" +msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" -msgstr "" +msgstr "Interpolation:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" -msgstr "" +msgstr "Linear" #: src/openmpt/mptwrap.h:52 msgid "Cubic" -msgstr "" +msgstr "Cubic" #: src/openmpt/mptwrap.h:53 msgid "Windowed sinc" +msgstr "Windowed sinc" + +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "Opus Decoder" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" msgstr "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" -#: src/oss4/oss.h:75 +#: src/oss4/oss.h:70 msgid "OSS4 Output" -msgstr "" +msgstr "OSS4 Output" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" -msgstr "" +msgstr "OSS3 Output" #: src/oss4/plugin.cc:35 msgid "Default device" -msgstr "" +msgstr "Default device" #: src/oss4/plugin.cc:78 msgid "Audio device:" @@ -2917,7 +2799,7 @@ #: src/oss4/plugin.cc:85 msgid "Save volume between sessions." -msgstr "" +msgstr "Save volume between sessions." #: src/oss4/plugin.cc:87 msgid "Enable format conversions made by the OSS software." @@ -2925,7 +2807,7 @@ #: src/oss4/plugin.cc:89 msgid "Enable exclusive mode to prevent virtual mixing." -msgstr "" +msgstr "Enable exclusive mode to prevent virtual mixing." #: src/oss4/plugin.cc:101 msgid "" @@ -2935,49 +2817,76 @@ "I would like to thank people on #audacious, especially Tony Vroon and John " "Lindgren and of course the authors of the previous OSS plugin." msgstr "" +"OSS4 Output Plugin for Audacious\n" +"Copyright 2010-2012 Michał Lipski\n" +"\n" +"I would like to thank people on #audacious, especially Tony Vroon and John " +"Lindgren and of course the authors of the previous OSS plugin." + +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "PipeWire Output" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Playback" -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Playlist Manager" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Remove" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" -msgstr "" +msgstr "Ren_ame" #: src/pls/pls.cc:35 msgid "PLS Playlists" -msgstr "" +msgstr "PLS Playlists" #: src/psf/plugin.cc:53 msgid "OpenPSF PSF1/PSF2 Decoder" -msgstr "" +msgstr "OpenPSF PSF1/PSF2 Decoder" #: src/psf/plugin.cc:270 msgid "OpenPSF Configuration" -msgstr "" +msgstr "OpenPSF Configuration" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" -msgstr "" +msgstr "Ignore length from file" #: src/pulse/pulse_audio.cc:42 msgid "PulseAudio Output" -msgstr "" +msgstr "PulseAudio Output" #: src/pulse/pulse_audio.cc:72 msgid "Context name:" -msgstr "" +msgstr "Context name:" #: src/pulse/pulse_audio.cc:74 msgid "Stream name:" -msgstr "" +msgstr "Stream name:" #: src/pulse/pulse_audio.cc:575 msgid "" @@ -2997,10 +2906,25 @@ "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" +"Audacious PulseAudio Output Plugin\n" +"\n" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public Licence as published by the Free " +"Software Foundation; either version 2 of the Licence, or (at your option) " +"any later version.\n" +"\n" +"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 Licence for " +"more details.\n" +"\n" +"You should have received a copy of the GNU General Public Licence along with " +"this program; if not, write to the Free Software Foundation, Inc., 51 " +"Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." #: src/qtaudio/qtaudio.cc:44 msgid "QtMultimedia Output" -msgstr "" +msgstr "QtMultimedia Output" #: src/qtaudio/qtaudio.cc:72 msgid "" @@ -3010,6 +2934,11 @@ "Based on SDL Output Plugin for Audacious\n" "Copyright 2010 John Lindgren" msgstr "" +"QtMultimedia Audio Output Plugin for Audacious\n" +"Copyright 2014 William Pitcock\n" +"\n" +"Based on SDL Output Plugin for Audacious\n" +"Copyright 2010 John Lindgren" #: src/qtglspectrum/gl-spectrum.cc:41 msgid "" @@ -3023,12 +2952,21 @@ "\n" "License: GPLv2+" msgstr "" +"OpenGL Spectrum Analyser for Audacious\n" +"Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" +"Copyright 2014, 2020 Ariadne Conill\n" +"\n" +"Based on the XMMS plugin:\n" +"Copyright 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, and " +"4Front Technologies\n" +"\n" +"Licence: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." -msgstr "" +msgstr "Press a key combination inside a text field." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3043,96 +2981,114 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2020 i.Dark_Templar \n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributors include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " #: src/qtui/menus.cc:109 msgid "_Open Folder ..." -msgstr "" +msgstr "_Open Folder ..." #: src/qtui/menus.cc:115 msgid "_Add Folder ..." -msgstr "" +msgstr "_Add Folder ..." #: src/qtui/menus.cc:128 msgid "_Log Inspector ..." -msgstr "" +msgstr "_Log Inspector ..." #: src/qtui/menus.cc:218 msgid "_Find ..." -msgstr "" +msgstr "_Find ..." #: src/qtui/menus.cc:254 src/skins/menus.cc:80 src/skins-qt/menus.cc:70 msgid "Audio Settings ..." -msgstr "" +msgstr "Audio Settings ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" -msgstr "" +msgstr "Q#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" -msgstr "" +msgstr "T#" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "C#" #: src/qtui/qtui.cc:40 msgid "Qt Interface" -msgstr "" +msgstr "Qt Interface" #: src/qtui/search_bar.cc:46 msgid "Search playlist" -msgstr "" +msgstr "Search playlist" #: src/qtui/settings.cc:58 msgid "Always" -msgstr "" +msgstr "Always" #: src/qtui/settings.cc:59 msgid "Auto-hide" -msgstr "" +msgstr "Auto-hide" #: src/qtui/settings.cc:60 msgid "Never" -msgstr "" +msgstr "Never" #: src/qtui/settings.cc:64 msgid "Show playlist tabs:" -msgstr "" +msgstr "Show playlist tabs:" #: src/qtui/settings.cc:78 msgid "Use bold font for column headers" -msgstr "" +msgstr "Use bold font for column headers" #: src/resample/resample.cc:43 msgid "Sample Rate Converter" -msgstr "" +msgstr "Sample Rate Converter" #: src/resample/resample.cc:183 msgid "" "Sample Rate Converter Plugin for Audacious\n" "Copyright 2010-2012 John Lindgren" msgstr "" +"Sample Rate Converter Plugin for Audacious\n" +"Copyright 2010-2012 John Lindgren" #: src/resample/resample.cc:187 msgid "Skip/repeat samples" -msgstr "" +msgstr "Skip/repeat samples" #: src/resample/resample.cc:188 msgid "Linear interpolation" -msgstr "" +msgstr "Linear interpolation" #: src/resample/resample.cc:189 msgid "Fast sinc interpolation" -msgstr "" +msgstr "Fast sinc interpolation" #: src/resample/resample.cc:190 msgid "Medium sinc interpolation" -msgstr "" +msgstr "Medium sinc interpolation" #: src/resample/resample.cc:191 msgid "Best sinc interpolation" -msgstr "" +msgstr "Best sinc interpolation" #: src/resample/resample.cc:195 msgid "Conversion" -msgstr "" +msgstr "Conversion" #: src/resample/resample.cc:196 msgid "Method:" @@ -3140,102 +3096,109 @@ #: src/resample/resample.cc:199 src/soxr/sox-resampler.cc:203 msgid "Rate:" -msgstr "" +msgstr "Rate:" #: src/resample/resample.cc:202 msgid "Rate Mappings" -msgstr "" +msgstr "Rate Mappings" #: src/resample/resample.cc:203 msgid "Use rate mappings" -msgstr "" +msgstr "Use rate mappings" #: src/resample/resample.cc:205 msgid "8 kHz:" -msgstr "" +msgstr "8 kHz:" #: src/resample/resample.cc:209 msgid "16 kHz:" -msgstr "" +msgstr "16 kHz:" #: src/resample/resample.cc:213 msgid "22.05 kHz:" -msgstr "" +msgstr "22.05 kHz:" #: src/resample/resample.cc:217 msgid "32.0 kHz:" -msgstr "" +msgstr "32.0 kHz:" #: src/resample/resample.cc:221 msgid "44.1 kHz:" -msgstr "" +msgstr "44.1 kHz:" #: src/resample/resample.cc:225 msgid "48 kHz:" -msgstr "" +msgstr "48 kHz:" #: src/resample/resample.cc:229 msgid "88.2 kHz:" -msgstr "" +msgstr "88.2 kHz:" #: src/resample/resample.cc:233 msgid "96 kHz:" -msgstr "" +msgstr "96 kHz:" #: src/resample/resample.cc:237 msgid "176.4 kHz:" -msgstr "" +msgstr "176.4 kHz:" #: src/resample/resample.cc:241 msgid "192 kHz:" -msgstr "" +msgstr "192 kHz:" #: src/scrobbler2/config_window.cc:19 msgid "Checking Last.fm access ..." -msgstr "" +msgstr "Checking Last.fm access ..." #: src/scrobbler2/config_window.cc:27 msgid "" "Your scrobbles are being saved on your computer temporarily. They will be " "submitted as soon as Audacious is allowed access." msgstr "" +"Your scrobbles are being saved on your computer temporarily. They will be " +"submitted as soon as Audacious is allowed access." #: src/scrobbler2/config_window.cc:33 #, c-format msgid "Permission granted. Scrobbling for user %s." -msgstr "" +msgstr "Permission granted. Scrobbling for user %s." #: src/scrobbler2/config_window.cc:37 msgid "" "Permission denied. Open the following URL in a browser, allow Audacious " "access to your account, and then click 'Check Permission' again:" msgstr "" +"Permission denied. Open the following URL in a browser, allow Audacious " +"access to your account, and then click 'Check Permission' again:" #: src/scrobbler2/config_window.cc:47 msgid "There was a problem contacting Last.fm." -msgstr "" +msgstr "There was a problem contacting Last.fm." #: src/scrobbler2/config_window.cc:86 msgid "Check Permission" -msgstr "" +msgstr "Check Permission" #: src/scrobbler2/config_window.cc:87 msgid "Revoke Permission" -msgstr "" +msgstr "Revoke Permission" #: src/scrobbler2/config_window.cc:91 msgid "You need to allow Audacious to scrobble tracks to your Last.fm account." msgstr "" +"You need to allow Audacious to scrobble tracks to your Last.fm account." #: src/scrobbler2/scrobbler.cc:29 msgid "Scrobbler 2.0" -msgstr "" +msgstr "Scrobbler 2.0" #: src/scrobbler2/scrobbler.cc:226 msgid "" "The Scrobbler plugin could not be started.\n" "There might be a problem with your installation." msgstr "" +"The Scrobbler plugin could not be started.\n" +"There might be a problem with your installation." #: src/scrobbler2/scrobbler.cc:291 msgid "" @@ -3247,180 +3210,195 @@ "project.\n" "\n" msgstr "" +"Audacious Scrobbler Plugin 2.0 by Pitxyoki,\n" +"\n" +"Copyright © 2012-2013 Luís M. Picciochi Oliveira \n" +"\n" +"Thanks to John Lindgren for giving me a hand at the beginning of this " +"project.\n" +"\n" #: src/scrobbler2/scrobbler_communication.cc:663 msgid "" "Audacious is now using an improved version of the Last.fm Scrobbler.\n" "Please check the Preferences for the Scrobbler plugin." msgstr "" +"Audacious is now using an improved version of the Last.fm Scrobbler.\n" +"Please check the Preferences for the Scrobbler plugin." #: src/sdlout/sdlout.cc:43 msgid "SDL Output" -msgstr "" +msgstr "SDL Output" #: src/sdlout/sdlout.cc:72 msgid "" "SDL Output Plugin for Audacious\n" "Copyright 2010 John Lindgren" msgstr "" +"SDL Output Plugin for Audacious\n" +"Copyright 2010 John Lindgren" #: src/search-tool/library.cc:35 src/search-tool/library.cc:46 #: src/search-tool-qt/library.cc:35 src/search-tool-qt/library.cc:46 msgid "Library" -msgstr "" +msgstr "Library" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d song" +msgstr[1] "%d songs" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" -msgstr "" +msgstr "of this genre" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" -msgstr "" +msgstr "on" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" -msgstr "" +msgstr "by" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" -msgstr "" +msgstr "Number of results to show:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" -msgstr "" +msgstr "Rescan library at startup" #: src/search-tool-qt/search-tool-qt.cc:170 msgid "Monitor library for changes" -msgstr "" +msgstr "Monitor library for changes" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." msgstr "" +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." -msgstr "" +msgstr "Please wait ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Choose Folder" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" -msgstr "" +msgstr "Search library" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d of %d result shown" +msgstr[1] "%d of %d results shown" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d result" +msgstr[1] "%d results" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" -msgstr "" +msgstr "_Create Playlist" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" -msgstr "" +msgstr "_Add to Playlist" #: src/sid/xmms-sid.cc:43 msgid "SID Player" -msgstr "" +msgstr "SID Player" #: src/sid/xs_config.cc:62 msgid "Channels:" -msgstr "" +msgstr "Channels:" #: src/sid/xs_config.cc:68 msgid "Emulation" -msgstr "" +msgstr "Emulation" #: src/sid/xs_config.cc:69 msgid "Emulate MOS 8580 (default: MOS 6581)" -msgstr "" +msgstr "Emulate MOS 8580 (default: MOS 6581)" #: src/sid/xs_config.cc:71 msgid "Do not automatically select chip model" -msgstr "" +msgstr "Do not automatically select chip model" #: src/sid/xs_config.cc:73 msgid "Emulate filter" -msgstr "" +msgstr "Emulate filter" #: src/sid/xs_config.cc:75 msgid "Clock speed:" -msgstr "" +msgstr "Clock speed:" #: src/sid/xs_config.cc:78 msgid "Do not automatically select clock speed" -msgstr "" +msgstr "Do not automatically select clock speed" #: src/sid/xs_config.cc:80 msgid "Playback time" -msgstr "" +msgstr "Playback time" #: src/sid/xs_config.cc:81 msgid "Set maximum playback time:" -msgstr "" +msgstr "Set maximum playback time:" #: src/sid/xs_config.cc:87 msgid "Use only when song length is unknown" -msgstr "" +msgstr "Use only when song length is unknown" #: src/sid/xs_config.cc:90 msgid "Set minimum playback time:" -msgstr "" +msgstr "Set minimum playback time:" #: src/sid/xs_config.cc:96 msgid "Subtunes" -msgstr "" +msgstr "Subtunes" #: src/sid/xs_config.cc:97 msgid "Enable subtunes" -msgstr "" +msgstr "Enable subtunes" #: src/sid/xs_config.cc:99 msgid "Ignore subtunes shorter than:" -msgstr "" +msgstr "Ignore subtunes shorter than:" #: src/sid/xs_config.cc:105 msgid "Note" -msgstr "" +msgstr "Note" #: src/silence-removal/silence-removal.cc:39 msgid "Silence Removal" -msgstr "" +msgstr "Silence Removal" #: src/silence-removal/silence-removal.cc:58 msgid "" "Silence Removal Plugin for Audacious\n" "Copyright 2014 John Lindgren" msgstr "" +"Silence Removal Plugin for Audacious\n" +"Copyright 2014 John Lindgren" #: src/silence-removal/silence-removal.cc:67 msgid "Silence Removal" -msgstr "" +msgstr "Silence Removal" #: src/silence-removal/silence-removal.cc:68 msgid "Threshold:" -msgstr "" +msgstr "Threshold:" #: src/silence-removal/silence-removal.cc:70 msgid "dB" @@ -3428,144 +3406,140 @@ #: src/skins/actions.cc:45 src/skins-qt/actions.cc:43 msgid "Repeat points cleared." -msgstr "" +msgstr "Repeat points cleared." #: src/skins/actions.cc:60 src/skins-qt/actions.cc:58 msgid "Repeat point A set." -msgstr "" +msgstr "Repeat point A set." #: src/skins/actions.cc:65 src/skins-qt/actions.cc:63 msgid "Repeat point B set." -msgstr "" +msgstr "Repeat point B set." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Preamp" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Audacious Equaliser" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" -msgstr "" +msgstr "Recording on" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" -msgstr "" +msgstr "Recording off" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Seek to %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Volume: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Balance: %d%% left" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Balance: centre" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Balance: %d%% right" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Options Menu" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Disable 'Always On Top'" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Enable 'Always On Top'" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "File Info Box" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" -msgstr "" +msgstr "Double Size" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" -msgstr "" +msgstr "Visualisations" #: src/skins/menus.cc:74 src/skins-qt/menus.cc:64 msgid "Volume Up" -msgstr "" +msgstr "Volume Up" #: src/skins/menus.cc:75 src/skins-qt/menus.cc:65 msgid "Volume Down" -msgstr "" +msgstr "Volume Down" #: src/skins/menus.cc:77 src/skins-qt/menus.cc:67 msgid "Effects ..." -msgstr "" +msgstr "Effects ..." #: src/skins/menus.cc:84 src/skins-qt/menus.cc:74 msgid "Open Files ..." -msgstr "" +msgstr "Open Files ..." #: src/skins/menus.cc:85 src/skins-qt/menus.cc:76 msgid "Open URL ..." -msgstr "" - -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Playback" +msgstr "Open URL ..." #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" @@ -3573,38 +3547,38 @@ #: src/skins/menus.cc:90 src/skins-qt/menus.cc:81 msgid "Output" -msgstr "" +msgstr "Output" #: src/skins/menus.cc:91 src/skins-qt/menus.cc:82 msgid "View" -msgstr "" +msgstr "View" #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Services" #: src/skins/menus.cc:95 src/skins-qt/menus.cc:86 msgid "About ..." -msgstr "" +msgstr "About ..." #: src/skins/menus.cc:96 src/skins-qt/menus.cc:87 msgid "Settings ..." -msgstr "" +msgstr "Settings ..." #: src/skins/menus.cc:97 src/skins-qt/menus.cc:88 msgid "Quit" -msgstr "" +msgstr "Quit" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." -msgstr "" +msgstr "Song Info ..." #: src/skins/menus.cc:105 src/skins-qt/menus.cc:96 msgid "Shuffle by Album" -msgstr "" +msgstr "Shuffle by Album" #: src/skins/menus.cc:106 src/skins-qt/menus.cc:97 msgid "No Playlist Advance" @@ -3612,23 +3586,23 @@ #: src/skins/menus.cc:117 src/skins-qt/menus.cc:108 msgid "Set A-B Repeat" -msgstr "" +msgstr "Set A-B Repeat" #: src/skins/menus.cc:118 src/skins-qt/menus.cc:109 msgid "Clear A-B Repeat" -msgstr "" +msgstr "Clear A-B Repeat" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." -msgstr "" +msgstr "Jump to Song ..." #: src/skins/menus.cc:121 src/skins-qt/menus.cc:113 msgid "Jump to Time ..." -msgstr "" +msgstr "Jump to Time ..." #: src/skins/menus.cc:125 src/skins-qt/menus.cc:118 msgid "Play/Resume" -msgstr "" +msgstr "Play/Resume" #: src/skins/menus.cc:127 src/skins-qt/menus.cc:120 msgid "New Playlist" @@ -3636,7 +3610,7 @@ #: src/skins/menus.cc:128 src/skins-qt/menus.cc:121 msgid "Rename Playlist ..." -msgstr "" +msgstr "Rename Playlist ..." #: src/skins/menus.cc:129 src/skins-qt/menus.cc:122 msgid "Remove Playlist" @@ -3644,31 +3618,31 @@ #: src/skins/menus.cc:131 src/skins-qt/menus.cc:124 msgid "Previous Playlist" -msgstr "" +msgstr "Previous Playlist" #: src/skins/menus.cc:132 src/skins-qt/menus.cc:125 msgid "Next Playlist" -msgstr "" +msgstr "Next Playlist" #: src/skins/menus.cc:134 src/skins-qt/menus.cc:127 msgid "Import Playlist ..." -msgstr "" +msgstr "Import Playlist ..." #: src/skins/menus.cc:135 src/skins-qt/menus.cc:128 msgid "Export Playlist ..." -msgstr "" +msgstr "Export Playlist ..." #: src/skins/menus.cc:137 src/skins-qt/menus.cc:130 msgid "Playlist Manager ..." -msgstr "" +msgstr "Playlist Manager ..." #: src/skins/menus.cc:138 src/skins-qt/menus.cc:131 msgid "Queue Manager ..." -msgstr "" +msgstr "Queue Manager ..." #: src/skins/menus.cc:140 src/skins-qt/menus.cc:133 msgid "Refresh Playlist" -msgstr "" +msgstr "Refresh Playlist" #: src/skins/menus.cc:144 src/skins-qt/menus.cc:137 msgid "Show Playlist Editor" @@ -3680,421 +3654,429 @@ #: src/skins/menus.cc:147 src/skins-qt/menus.cc:140 msgid "Show Remaining Time" -msgstr "" +msgstr "Show Remaining Time" #: src/skins/menus.cc:150 src/skins-qt/menus.cc:143 msgid "Always on Top" -msgstr "" +msgstr "Always on Top" #: src/skins/menus.cc:151 src/skins-qt/menus.cc:145 msgid "On All Workspaces" -msgstr "" +msgstr "On All Workspaces" #: src/skins/menus.cc:153 src/skins-qt/menus.cc:148 msgid "Roll Up Player" -msgstr "" +msgstr "Roll Up Player" #: src/skins/menus.cc:154 src/skins-qt/menus.cc:149 msgid "Roll Up Playlist Editor" -msgstr "" +msgstr "Roll Up Playlist Editor" #: src/skins/menus.cc:155 src/skins-qt/menus.cc:150 msgid "Roll Up Equalizer" -msgstr "" +msgstr "Roll Up Equaliser" #: src/skins/menus.cc:163 src/skins-qt/menus.cc:158 msgid "Add URL ..." -msgstr "" +msgstr "Add URL ..." #: src/skins/menus.cc:164 src/skins-qt/menus.cc:160 msgid "Add Files ..." -msgstr "" +msgstr "Add Files ..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" -msgstr "" +msgstr "By Title" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" -msgstr "" +msgstr "By File Name" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" -msgstr "" +msgstr "By File Path" #: src/skins/menus.cc:176 src/skins-qt/menus.cc:172 msgid "Remove All" -msgstr "" +msgstr "Remove All" #: src/skins/menus.cc:177 src/skins-qt/menus.cc:173 msgid "Clear Queue" -msgstr "" +msgstr "Clear Queue" #: src/skins/menus.cc:179 src/skins-qt/menus.cc:175 msgid "Remove Unavailable Files" -msgstr "" +msgstr "Remove Unavailable Files" #: src/skins/menus.cc:180 src/skins-qt/menus.cc:176 msgid "Remove Duplicates" -msgstr "" +msgstr "Remove Duplicates" #: src/skins/menus.cc:182 src/skins-qt/menus.cc:178 msgid "Remove Unselected" -msgstr "" +msgstr "Remove Unselected" #: src/skins/menus.cc:183 src/skins-qt/menus.cc:179 msgid "Remove Selected" -msgstr "" +msgstr "Remove Selected" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" -msgstr "" +msgstr "Search and Select" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" -msgstr "" +msgstr "Invert Selection" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" -msgstr "" +msgstr "Select None" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" -msgstr "" +msgstr "Select All" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" -msgstr "" +msgstr "By Track Number" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" -msgstr "" +msgstr "By Artist" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" -msgstr "" +msgstr "By Album" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" -msgstr "" +msgstr "By Album Artist" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" -msgstr "" +msgstr "By Release Date" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" -msgstr "" +msgstr "By Genre" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" -msgstr "" +msgstr "By Length" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" -msgstr "" +msgstr "By Custom Title" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" -msgstr "" +msgstr "By Comment" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" -msgstr "" +msgstr "Randomise List" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" -msgstr "" +msgstr "Reverse List" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" -msgstr "" +msgstr "Sort Selected" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" -msgstr "" +msgstr "Sort List" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" -msgstr "" +msgstr "Open Containing Folder" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" -msgstr "" +msgstr "Cut" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Copy" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" -msgstr "" +msgstr "Paste" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" -msgstr "" +msgstr "Paste at End" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" -msgstr "" +msgstr "Queue/Unqueue" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" -msgstr "" +msgstr "%s (%d of %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" -msgstr "" +msgstr "Audacious Playlist Editor" #: src/skins/plugin.cc:49 src/skins-qt/plugin.cc:64 msgid "Winamp Classic Interface" -msgstr "" +msgstr "Winamp Classic Interface" #: src/skins-qt/menus.cc:75 msgid "Open Folder ..." -msgstr "" +msgstr "Open Folder ..." #: src/skins-qt/menus.cc:159 msgid "Add Folder ..." +msgstr "Add Folder ..." + +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Search entries in active playlist" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." msgstr "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Title:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Album:" -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Artist:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "File Name:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Clear previous selection before searching" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Automatically toggle queue for matching entries" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Create a new playlist with matching entries" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Search" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" -msgstr "" +msgstr "Player:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Select main player window font:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" -msgstr "" +msgstr "Playlist:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Select playlist font:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" -msgstr "" +msgstr "Skin" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "Display active titlebar when any window is focused" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" -msgstr "" +msgstr "Fonts" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Use bitmap fonts (supports ASCII only)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" -msgstr "" +msgstr "Scroll song title" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Scroll song title in both directions" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" -msgstr "" +msgstr "Analyser" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" -msgstr "" +msgstr "Scope" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" -msgstr "" +msgstr "Voiceprint / VU meter" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" -msgstr "" +msgstr "Off" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" -msgstr "" +msgstr "Normal" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" -msgstr "" +msgstr "Fire" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" -msgstr "" +msgstr "Vertical lines" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" -msgstr "" +msgstr "Lines" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" -msgstr "" +msgstr "Bars" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" -msgstr "" +msgstr "Slowest" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" -msgstr "" +msgstr "Slow" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" -msgstr "" +msgstr "Medium" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" -msgstr "" +msgstr "Fast" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" -msgstr "" +msgstr "Fastest" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" -msgstr "" +msgstr "Dots" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Line" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" -msgstr "" +msgstr "Solid" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" -msgstr "" +msgstr "Ice" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" -msgstr "" +msgstr "Smooth" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" -msgstr "" +msgstr "Colouring:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" -msgstr "" +msgstr "Style:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" -msgstr "" +msgstr "Falloff:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" -msgstr "" +msgstr "Peak falloff:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" -msgstr "" +msgstr "Scope Style:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" -msgstr "" +msgstr "Voiceprint Colouring:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" -msgstr "" +msgstr "VU Meter Style:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" -msgstr "" +msgstr "Type" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" -msgstr "" +msgstr "Visualisation type:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" -msgstr "" +msgstr "Analyser" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" -msgstr "" +msgstr "Show peaks" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Visualisation" #: src/skins-qt/skinselector.cc:98 src/skins/skinselector.cc:111 msgid "Archived Winamp 2.x skin" -msgstr "" +msgstr "Archived Winamp 2.x skin" #: src/skins-qt/skinselector.cc:102 src/skins/skinselector.cc:115 msgid "Unarchived Winamp 2.x skin" -msgstr "" - -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "" +msgstr "Unarchived Winamp 2.x skin" #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" -msgstr "" +msgstr "Sndfile Plugin" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4115,65 +4097,85 @@ "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" +"Based on the xmms_sndfile plugin:\n" +"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" +"\n" +"Adapted for Audacious by Tony Vroon \n" +"\n" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public Licence as published by the Free " +"Software Foundation; either version 2 of the Licence, or (at your option) " +"any later version.\n" +"\n" +"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 Licence for " +"more details.\n" +"\n" +"You should have received a copy of the GNU General Public Licence along with " +"this program; if not, write to the Free Software Foundation, Inc., 51 " +"Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." #: src/sndio/sndio.cc:43 msgid "Sndio Output" -msgstr "" +msgstr "Sndio Output" #: src/sndio/sndio.cc:98 msgid "Device (blank for default):" -msgstr "" +msgstr "Device (blank for default):" #: src/sndio/sndio.cc:100 msgid "Save and restore volume:" -msgstr "" +msgstr "Save and restore volume:" #: src/sndio/sndio.cc:181 #, c-format msgid "Sndio error: Unsupported audio format (%d)" -msgstr "" +msgstr "Sndio error: Unsupported audio format (%d)" #: src/sndio/sndio.cc:192 msgid "Sndio error: sio_open() failed" -msgstr "" +msgstr "Sndio error: sio_open() failed" #: src/sndio/sndio.cc:221 msgid "Sndio error: sio_setpar() failed" -msgstr "" +msgstr "Sndio error: sio_setpar() failed" #: src/sndio/sndio.cc:233 msgid "Sndio error: sio_start() failed" -msgstr "" +msgstr "Sndio error: sio_start() failed" #: src/songchange/song_change.cc:30 msgid "Song Change" -msgstr "" +msgstr "Song Change" #: src/songchange/song_change.cc:245 msgid "Commands" -msgstr "" +msgstr "Commands" #: src/songchange/song_change.cc:247 msgid "Command to run when starting a new song:" -msgstr "" +msgstr "Command to run when starting a new song:" #: src/songchange/song_change.cc:250 msgid "Command to run at the end of a song:" -msgstr "" +msgstr "Command to run at the end of a song:" #: src/songchange/song_change.cc:253 msgid "Command to run at the end of the playlist:" -msgstr "" +msgstr "Command to run at the end of the playlist:" #: src/songchange/song_change.cc:256 msgid "Command to run when song title changes (for network streams):" -msgstr "" +msgstr "Command to run when song title changes (for network streams):" #: src/songchange/song_change.cc:259 msgid "" "You can use the following format codes, which will be replaced before " "running the command (not all are useful for the end-of-playlist command):" msgstr "" +"You can use the following format codes, which will be replaced before " +"running the command (not all are useful for the end-of-playlist command):" #: src/songchange/song_change.cc:262 msgid "" @@ -4189,12 +4191,25 @@ "%t: Playlist position\n" "%T: Title (unformatted)" msgstr "" +"%a: Artist\n" +"%b: Album\n" +"%c: Number of channels\n" +"%f: File name (full path)\n" +"%F: Frequency (Hertz)\n" +"%l: Length (milliseconds)\n" +"%n or %s: Formatted title (see playlist settings)\n" +"%p: Currently playing (1 or 0)\n" +"%r: Rate (bits per second)\n" +"%t: Playlist position\n" +"%T: Title (unformatted)" #: src/songchange/song_change.cc:273 msgid "" "Parameters passed to the shell should be enclosed in quotation marks. " "Unquoted parameters may lead to unexpected results." msgstr "" +"Parameters passed to the shell should be enclosed in quotation marks. " +"Unquoted parameters may lead to unexpected results." #: src/song-info-qt/song-info.cc:30 msgid "Song Info" @@ -4202,7 +4217,7 @@ #: src/soxr/sox-resampler.cc:44 msgid "SoX Resampler" -msgstr "" +msgstr "SoX Resampler" #: src/soxr/sox-resampler.cc:172 msgid "" @@ -4212,34 +4227,39 @@ "Based on Sample Rate Converter Plugin:\n" "Copyright 2010-2012 John Lindgren" msgstr "" +"SoX Resampler Plugin for Audacious\n" +"Copyright 2013 Michał Lipski\n" +"\n" +"Based on Sample Rate Converter Plugin:\n" +"Copyright 2010-2012 John Lindgren" #: src/soxr/sox-resampler.cc:178 msgid "Quick" -msgstr "" +msgstr "Quick" #: src/soxr/sox-resampler.cc:179 msgid "Low" -msgstr "" +msgstr "Low" #: src/soxr/sox-resampler.cc:181 msgid "High" -msgstr "" +msgstr "High" #: src/soxr/sox-resampler.cc:182 msgid "Very High" -msgstr "" +msgstr "Very High" #: src/soxr/sox-resampler.cc:183 msgid "Ultra High" -msgstr "" +msgstr "Ultra High" #: src/soxr/sox-resampler.cc:187 msgid "Minimum" -msgstr "" +msgstr "Minimum" #: src/soxr/sox-resampler.cc:188 msgid "Intermediate" -msgstr "" +msgstr "Intermediate" #: src/soxr/sox-resampler.cc:193 msgid "Quality:" @@ -4247,39 +4267,39 @@ #: src/soxr/sox-resampler.cc:196 msgid "Phase:" -msgstr "" +msgstr "Phase:" #: src/soxr/sox-resampler.cc:200 msgid "Allow aliasing" -msgstr "" +msgstr "Allow aliasing" #: src/soxr/sox-resampler.cc:202 msgid "Use steep filter" -msgstr "" +msgstr "Use steep filter" #: src/speedpitch/speed-pitch.cc:54 msgid "Speed and Pitch" -msgstr "" +msgstr "Speed and Pitch" #: src/speedpitch/speed-pitch.cc:247 msgid "Speed" -msgstr "" +msgstr "Speed" #: src/speedpitch/speed-pitch.cc:248 msgid "Decouple from pitch" -msgstr "" +msgstr "Decouple from pitch" #: src/speedpitch/speed-pitch.cc:250 src/speedpitch/speed-pitch.cc:258 msgid "Multiplier:" -msgstr "" +msgstr "Multiplier:" #: src/speedpitch/speed-pitch.cc:254 msgid "Pitch" -msgstr "" +msgstr "Pitch" #: src/statusicon-qt/statusicon.cc:44 src/statusicon/statusicon.cc:47 msgid "Status Icon" -msgstr "" +msgstr "Status Icon" #: src/statusicon-qt/statusicon.cc:65 msgid "" @@ -4292,38 +4312,46 @@ "This plugin provides a status icon, placed in\n" "the system tray area of the window manager." msgstr "" +"Status Icon Plugin (partial port for Qt interface)\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 Michał Lipski \n" +"Copyright 2015 Eugene Paskevich \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager." #: src/statusicon-qt/statusicon.cc:86 src/statusicon/statusicon.cc:380 msgid "Mouse Scroll Action" -msgstr "" +msgstr "Mouse Scroll Action" #: src/statusicon-qt/statusicon.cc:87 src/statusicon/statusicon.cc:381 msgid "Change volume" -msgstr "" +msgstr "Change volume" #: src/statusicon-qt/statusicon.cc:90 src/statusicon/statusicon.cc:384 msgid "Change playing song" -msgstr "" +msgstr "Change playing song" #: src/statusicon-qt/statusicon.cc:93 src/statusicon/statusicon.cc:387 msgid "Other Settings" -msgstr "" +msgstr "Other Settings" #: src/statusicon-qt/statusicon.cc:94 src/statusicon/statusicon.cc:388 msgid "Disable the popup window" -msgstr "" +msgstr "Disable the popup window" #: src/statusicon-qt/statusicon.cc:96 src/statusicon/statusicon.cc:390 msgid "Close to the system tray" -msgstr "" +msgstr "Close to the system tray" #: src/statusicon-qt/statusicon.cc:98 src/statusicon/statusicon.cc:392 msgid "Advance in playlist when scrolling upward" -msgstr "" +msgstr "Advance in playlist when scrolling upward" #: src/statusicon-qt/statusicon.cc:113 src/statusicon/statusicon.cc:283 msgid "Se_ttings ..." -msgstr "" +msgstr "Se_ttings ..." #: src/statusicon/statusicon.cc:373 msgid "" @@ -4335,10 +4363,17 @@ "This plugin provides a status icon, placed in\n" "the system tray area of the window manager." msgstr "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 Michał Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager." #: src/stereo_plugin/stereo.cc:19 msgid "Extra Stereo" -msgstr "" +msgstr "Extra Stereo" #: src/stereo_plugin/stereo.cc:36 msgid "" @@ -4346,30 +4381,33 @@ "\n" "By Johan Levin, 1999" msgstr "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin, 1999" #: src/stereo_plugin/stereo.cc:44 msgid "Extra Stereo" -msgstr "" +msgstr "Extra Stereo" #: src/streamtuner/icecast-model.cc:126 src/streamtuner/shoutcast-model.cc:131 msgid "Type" -msgstr "" +msgstr "Type" #: src/streamtuner/icecast-model.cc:132 msgid "Current Song" -msgstr "" +msgstr "Current Song" #: src/streamtuner/icecast-model.cc:164 msgid "Other" -msgstr "" +msgstr "Other" #: src/streamtuner/ihr-model.cc:63 msgid "Market" -msgstr "" +msgstr "Market" #: src/streamtuner/ihr-model.cc:156 msgid "Call Letters" -msgstr "" +msgstr "Call Letters" #: src/streamtuner/ihr-model.cc:162 msgid "Description" @@ -4377,15 +4415,15 @@ #: src/streamtuner/shoutcast-model.cc:128 msgid "Listeners" -msgstr "" +msgstr "Listeners" #: src/streamtuner/shoutcast-model.cc:188 msgid "Top 500 Stations" -msgstr "" +msgstr "Top 500 Stations" #: src/streamtuner/shoutcast-model.cc:189 msgid "Alternative" -msgstr "" +msgstr "Alternative" #: src/streamtuner/shoutcast-model.cc:190 msgid "Blues" @@ -4401,7 +4439,7 @@ #: src/streamtuner/shoutcast-model.cc:193 msgid "Decades" -msgstr "" +msgstr "Decades" #: src/streamtuner/shoutcast-model.cc:194 msgid "Easy Listening" @@ -4409,7 +4447,7 @@ #: src/streamtuner/shoutcast-model.cc:195 msgid "Electronic" -msgstr "" +msgstr "Electronic" #: src/streamtuner/shoutcast-model.cc:196 msgid "Folk" @@ -4417,11 +4455,11 @@ #: src/streamtuner/shoutcast-model.cc:197 msgid "Inspirational" -msgstr "" +msgstr "Inspirational" #: src/streamtuner/shoutcast-model.cc:198 msgid "International" -msgstr "" +msgstr "International" #: src/streamtuner/shoutcast-model.cc:199 msgid "Jazz" @@ -4429,7 +4467,7 @@ #: src/streamtuner/shoutcast-model.cc:200 msgid "Latin" -msgstr "" +msgstr "Latin" #: src/streamtuner/shoutcast-model.cc:201 msgid "Metal" @@ -4445,11 +4483,11 @@ #: src/streamtuner/shoutcast-model.cc:205 msgid "Public Radio" -msgstr "" +msgstr "Public Radio" #: src/streamtuner/shoutcast-model.cc:206 msgid "R&B and Urban" -msgstr "" +msgstr "R&B and Urban" #: src/streamtuner/shoutcast-model.cc:207 msgid "Rap" @@ -4465,44 +4503,44 @@ #: src/streamtuner/shoutcast-model.cc:210 msgid "Seasonal and Holiday" -msgstr "" +msgstr "Seasonal and Holiday" #: src/streamtuner/shoutcast-model.cc:211 msgid "Soundtracks" -msgstr "" +msgstr "Soundtracks" #: src/streamtuner/shoutcast-model.cc:212 msgid "Talk" -msgstr "" +msgstr "Talk" #: src/streamtuner/shoutcast-model.cc:213 msgid "Themes" -msgstr "" +msgstr "Themes" #: src/streamtuner/streamtuner.cc:59 msgid "Shoutcast" -msgstr "" +msgstr "Shoutcast" #: src/streamtuner/streamtuner.cc:60 msgid "Icecast" -msgstr "" +msgstr "Icecast" #: src/streamtuner/streamtuner.cc:71 msgid "Stream Tuner" -msgstr "" +msgstr "Stream Tuner" #: src/tonegen/tonegen.cc:45 msgid "Tone Generator" -msgstr "" +msgstr "Tone Generator" #: src/tonegen/tonegen.cc:92 #, c-format msgid "%s %.1f Hz" -msgstr "" +msgstr "%s %.1f Hz" #: src/tonegen/tonegen.cc:92 msgid "Tone Generator: " -msgstr "" +msgstr "Tone Generator: " #: src/tonegen/tonegen.cc:161 msgid "" @@ -4512,20 +4550,38 @@ "To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" "e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" msgstr "" +"Sine tone generator by Håvard Kvålen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Further messages have been hidden.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Working ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Information" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "%s does not appear to be a valid folder." + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" -msgstr "" +msgstr "Voice Removal" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4545,15 +4601,32 @@ "Gian-Carlo Pascutto \n" "Eugene Zagidullin " msgstr "" +"Audacious Ogg Vorbis Decoder\n" +"\n" +"Based on the Xiph.org Foundation's Ogg Vorbis Plugin:\n" +"http://www.xiph.org/\n" +"\n" +"Original code by:\n" +"Tony Arcieri \n" +"\n" +"Contributions from:\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Håvard Kvålen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin " #: src/vorbis/vorbis.h:18 msgid "Ogg Vorbis Decoder" -msgstr "" +msgstr "Ogg Vorbis Decoder" #: src/vtx/info.cc:24 #, c-format msgid "Details about %s" -msgstr "" +msgstr "Details about %s" #: src/vtx/info.cc:26 msgid "" @@ -4569,10 +4642,21 @@ "Player Freq: %P\n" "Year: %y" msgstr "" +"Title: %t\n" +"Author: %a\n" +"From: %f\n" +"Tracker: %T\n" +"Comment: %C\n" +"Chip type: %c\n" +"Stereo: %s\n" +"Loop: %l\n" +"Chip freq: %F\n" +"Player Freq: %P\n" +"Year: %y" #: src/vtx/vtx.cc:38 msgid "VTX Decoder" -msgstr "" +msgstr "VTX Decoder" #: src/vtx/vtx.cc:178 msgid "" @@ -4580,58 +4664,65 @@ "Based on in_vtx.dll by Roman Sherbakov \n" "Audacious plugin by Pavel Vymetalek " msgstr "" +"Vortex file format player by Sashnov Alexander \n" +"Based on in_vtx.dll by Roman Sherbakov \n" +"Audacious plugin by Pavel Vymetalek " #: src/vumeter-qt/vumeter_qt.cc:31 msgid "" "VU Meter Plugin for Audacious\n" "Copyright 2017-2019 Marc Sánchez Fauste" msgstr "" +"VU Meter Plugin for Audacious\n" +"Copyright 2017-2019 Marc Sánchez Fauste" #: src/vumeter-qt/vumeter_qt.cc:35 msgid "VU Meter Settings" -msgstr "" +msgstr "VU Meter Settings" #: src/vumeter-qt/vumeter_qt.cc:37 msgid "Peak hold time:" -msgstr "" +msgstr "Peak hold time:" #: src/vumeter-qt/vumeter_qt.cc:42 msgid "Fall-off time:" -msgstr "" +msgstr "Fall-off time:" #: src/vumeter-qt/vumeter_qt.cc:44 msgid "dB/second" -msgstr "" +msgstr "dB/second" #: src/vumeter-qt/vumeter_qt.cc:46 msgid "Display legend" -msgstr "" +msgstr "Display legend" #: src/vumeter-qt/vumeter_qt.h:37 msgid "VU Meter" -msgstr "" +msgstr "VU Meter" #: src/waveout/waveout.cc:43 msgid "Win32 waveOut" -msgstr "" +msgstr "Win32 waveOut" #: src/waveout/waveout.cc:69 msgid "" "Win32 waveOut Plugin for Audacious\n" "Copyright 2016 John Lindgren" msgstr "" +"Win32 waveOut Plugin for Audacious\n" +"Copyright 2016 John Lindgren" #: src/wavpack/wavpack.cc:25 msgid "WavPack Decoder" -msgstr "" +msgstr "WavPack Decoder" #: src/wavpack/wavpack.cc:217 msgid "lossy (hybrid)" -msgstr "" +msgstr "lossy (hybrid)" #: src/wavpack/wavpack.cc:219 msgid "lossy" -msgstr "" +msgstr "lossy" #: src/wavpack/wavpack.cc:259 msgid "" @@ -4639,15 +4730,42 @@ "\n" "Some of the plugin code was by Miles Egan." msgstr "" +"Copyright 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" -msgstr "" +msgstr "2SF Decoder" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Cosine" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Sharp" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" -msgstr "" +msgstr "XSF Configuration" + +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Default fade time:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Interpolation mode:" #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" -msgstr "" +msgstr "XML Shareable Playlists (XSPF)" diff -Nru audacious-plugins-4.1/po/es.po audacious-plugins-4.3.1/po/es.po --- audacious-plugins-4.1/po/es.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/es.po 2023-04-29 20:17:32.000000000 +0000 @@ -22,7 +22,8 @@ # bb21c722adad611b63dfb48ec99e8350_f97f8ad , 2012 # Marc Sánchez , 2020 # Matias Menich , 2012 -# Toni Estévez , 2019-2020 +# Roberto Rodríguez, 2023 +# Toni Estévez , 2019-2020,2022-2023 # xukosky , 2011-2012 # xukosky , 2011, 2012 # enjolras , 2012 @@ -30,16 +31,17 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-25 09:33+0000\n" -"Last-Translator: Toni Estévez \n" -"Language-Team: Spanish (http://www.transifex.com/audacious/audacious/" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Roberto Rodríguez, 2023\n" +"Language-Team: Spanish (http://app.transifex.com/audacious/audacious/" "language/es/)\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? " +"1 : 2;\n" #: src/aac/aac.cc:19 msgid "AAC (Raw) Decoder" @@ -50,7 +52,7 @@ msgstr "AdPlug (reproductor AdLib)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "secuenciado" @@ -62,9 +64,11 @@ msgid "OPL Emulator:" msgstr "Emulador OPL:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Frecuencia de muestreo" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Tasa de muestreo:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -80,7 +84,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Miscelánea" @@ -88,260 +92,6 @@ msgid "Repeat song in endless loop" msgstr "Repetir la canción en un bucle sin fin" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Alarma" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Configurar la alarma…" - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Un complemento que se puede usar para iniciar la reproducción a una hora " -"determinada.\n" -"\n" -"Escrito originalmente por Adam Feakin y Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Hora\n" -"Alarma a las: \n" -"La hora a la que saltará la alarma.\n" -"\n" -"Silenciar después de: \n" -"Para la alarma después de este tiempo.\n" -"(si no se cierra el diálogo del despertador)\n" -"\n" -"\n" -"Días\n" -"Día:\n" -"Seleccione los días para activar la alarma.\n" -"\n" -"Hora:\n" -"Elija la hora de la alarma de cada día,\n" -"o marque la casilla para usar la hora\n" -"por defecto.\n" -"\n" -"\n" -"Volumen\n" -"Fundido: \n" -"Intensifica gradualmente el volumen hasta el nivel elegido \n" -"durante este tiempo.\n" -"\n" -"Inicio: \n" -"Comienza el fundido en este volumen.\n" -"\n" -"Final: \n" -"El volumen final del fundido. Si el tiempo\n" -"de fundido es 0 se selecciona este volumen\n" -"para comenzar la reproducción.\n" -"\n" -"\n" -"Opciones:\n" -"Orden adicional:\n" -"Ejecuta esta orden a la hora de la alarma.\n" -"\n" -"Lista de reproducción: \n" -"Carga esta lista de producción. Si no se\n" -"introduce ninguna lista, se usará las lista\n" -"actual. También se puede introducir la URL\n" -"de una transmisión mp3/ogg.\n" -"\n" -"Recordatorio:\n" -"Muestra un recordatorio cuando se apaga la alarma.\n" -"Escriba el recordatorio en el campo de entrada y marque\n" -"la casilla si quiere que se muestre." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Esta es la señal de alarma." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Su recordatorio para hoy es..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Recordatorio" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Lunes" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Martes" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Miércoles" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Jueves" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Viernes" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Sábado" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Domingo" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Hora" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Alarma (per defecto) a las:" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Silenciar después de:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "horas" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minutos" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Seleccione los días para que salte la alarma" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Día" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Por defecto" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Días" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Fundido" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "segundos" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Volumen" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Inicial" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Final" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Actual" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Orden adicional" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "activar" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Lista de reproducción (opcional)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Seleccione una lista de reproducción" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Opciones" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "¿Qué significan estas opciones?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Ayuda" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Carátula del álbum" @@ -491,87 +241,83 @@ msgid "Synthesizer" msgstr "Sintetizador" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Frecuencia de muestreo:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "Complemento AMIDI - Seleccione un archivo SoundFont" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Cancelar" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Abrir" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Nombre del archivo" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Tamaño (bytes)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Nombre:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " Información MIDI " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Formato:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Longitud (mseg):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Núm. de pistas:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "variable" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Div tiempo:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " Comentarios y letras MIDI " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* no hay comentarios disponibles en este archivo MIDI *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* no hay letras disponibles en este archivo MIDI *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Cerrar" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (UTF-8 no válido)" @@ -627,7 +373,7 @@ msgid "Concave Rectangle" msgstr "Rectángulo cóncavo" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Ninguno" @@ -668,94 +414,94 @@ msgstr "" "Dispara la visualización en pantalla cuando se reanuda la reproducción." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Colocación" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Desplazamiento horizontal relativo:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Desplazamiento vertical relativo:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Anchura máxima:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Opciones para varios monitores" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Mostrar las visualizaciones en pantalla usando:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "todos los monitores" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "monitor %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Tiempos (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Visualización:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Fundido de entrada:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Fundido de salida:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Tipografías" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Tipografía %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Sombra" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Estilo de representación" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Colores" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Color %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Activar el disparador" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Evento" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Gestor de composición detectado" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -765,56 +511,56 @@ "a no ser que haya uno en ejecución, active un gestor de composición o la " "visualización en pantalla no funcionará correctamente" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "No se necesita un gestor de composición para la transparencia simulada" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Transparencia" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Transparencia simulada" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Transparencia real (requiere la extensión de composición)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "La extensión de composición no está cargada" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Visualización en pantalla de Audacious" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Posición" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animación" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Texto" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Decoración" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Disparador" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Miscelánea" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Probar" @@ -830,11 +576,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Listas de reproducción de Audacious (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Profundidad de bits:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Tasa de reducción de la muestra:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Color" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Osciloscopio difuminado" @@ -846,6 +608,10 @@ msgid "Presets:" msgstr "Preajustes:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Por defecto" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Nivel de alimentación:" @@ -858,7 +624,7 @@ msgid "Cut frequency:" msgstr "Frecuencia de corte:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Analizador de espectro" @@ -909,11 +675,11 @@ #: src/cdaudio/cdaudio-ng.cc:143 msgid "Use CDDB" -msgstr "Usar CDDB" +msgstr "Usar la CDDB" #: src/cdaudio/cdaudio-ng.cc:145 msgid "Use HTTP instead of CDDBP" -msgstr "Usar HTTP en lugar de CDDBP" +msgstr "Usar HTTP en vez de CDDBP" #: src/cdaudio/cdaudio-ng.cc:148 msgid "Server:" @@ -954,53 +720,53 @@ msgid "Audio CD" msgstr "CD de audio" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "No se podido abrir el dispositivo de CD %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "No se ha encontrado ningún CD de audio." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "La unidad está vacía." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Tipo de disco no compatible." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "No se ha podido terminar de inicializar la unidad de CD abierta." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "No se ha podido obener el número de la primera/última pista." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "No se puede leer el LSN de inicio/fin de la pista %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." -msgstr "No se ha podido crear la conexión CDDB." +msgstr "No se ha podido crear la conexión a la CDDB." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" -msgstr "No se ha podido consultar al servidor CDDB" +msgstr "No se ha podido consultar al servidor de CDDB" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" -msgstr "No se ha podido consultar al servidor CDDB: %s" +msgstr "No se ha podido consultar al servidor de la CDDB: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" -msgstr "No se ha podido leer la información de CDDB: %s" +msgstr "No se ha podido leer la información de la CDDB: %s" #: src/cd-menu-items/cd-menu-items.cc:33 msgid "Audio CD Menu Items" @@ -1072,6 +838,13 @@ msgid "Default song length:" msgstr "Duración por defecto de la canción:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "segundos" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Remuestreo" @@ -1100,7 +873,7 @@ msgid "CoreAudio output" msgstr "Salida CoreAudio" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1120,15 +893,14 @@ "Basado en el complemento Salida SDL para Audacious\n" "Copyright 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Usar el modo exclusivo" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" -"Usar audio de bits perfectos (adaptar la frecuencia de muestreo del " -"dispositivo)" +"Usar un audio perfecto en bits (adaptar la tasa de muestreo del dispositivo)" #: src/crossfade/crossfade.cc:43 msgid "" @@ -1223,20 +995,20 @@ msgid "Delete" msgstr "Eliminar" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Cancelar" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Eliminar archivos seleccionados" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Método de eliminación" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Mover a la papelera en vez de eliminar inmediatamente" @@ -1261,7 +1033,7 @@ msgstr "Retraso:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1277,11 +1049,11 @@ msgid "Echo" msgstr "Eco" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Complemento FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1405,89 +1177,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kb/s" +msgid "8 kbit/s" +msgstr "8 kbit/s" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kb/s" +msgid "16 kbit/s" +msgstr "16 kbit/s" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kb/s" +msgid "32 kbit/s" +msgstr "32 kbit/s" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kb/s" +msgid "40 kbit/s" +msgstr "40 kbit/s" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kb/s" +msgid "48 kbit/s" +msgstr "48 kbit/s" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kb/s" +msgid "56 kbit/s" +msgstr "56 kbit/s" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kb/s" +msgid "64 kbit/s" +msgstr "64 kbit/s" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kb/s" +msgid "80 kbit/s" +msgstr "80 kbit/s" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kb/s" +msgid "96 kbit/s" +msgstr "96 kbit/s" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kb/s" +msgid "112 kbit/s" +msgstr "112 kbit/s" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kb/s" +msgid "128 kbit/s" +msgstr "128 kbit/s" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kb/s" +msgid "160 kbit/s" +msgstr "160 kbit/s" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kb/s" +msgid "192 kbit/s" +msgstr "192 kbit/s" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kb/s" +msgid "224 kbit/s" +msgstr "224 kbit/s" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kb/s" +msgid "256 kbit/s" +msgstr "256 kbit/s" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kb/s" +msgid "320 kbit/s" +msgstr "320 kbit/s" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Estéreo conjunto" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Estéreo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1599,7 +1371,7 @@ msgid "Quality (0-1):" msgstr "Calidad (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "General" @@ -1608,11 +1380,11 @@ msgid "FLAC Decoder" msgstr "Descodificador FLAC" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "sin pérdida" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1644,7 +1416,7 @@ msgid "Invalid open mode" msgstr "Modo de acceso a archivos no válido" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1664,116 +1436,134 @@ "\n" "Licencia: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "Analizador de espectro OpenGL" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "Número de entrada" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Título" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Artista" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Año" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Álbum" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Artista del álbum" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Pista" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Género" -#: src/gtkui/columns.cc:43 -msgid "Queue position" +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" msgstr "Posición en la cola" -#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Duración" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "Ruta del archivo" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Título personalizado" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Nombre del archivo" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Título personalizado" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Tasa de bits" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Comentario" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "Editorial" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "Número de catálogo" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Columnas disponibles" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Columnas mostradas" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Herramienta de búsqueda" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Acoplar a la izquierda" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Acoplar a la derecha" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Acoplar arriba" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Acoplar abajo" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Desacoplar" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Desactivar" @@ -1813,8 +1603,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Reproducir" @@ -1981,7 +1771,7 @@ #: src/gtkui/menus.cc:160 src/qtui/menus.cc:221 msgid "Sort Se_lected" -msgstr "Ordenar entradas_seleccionadas" +msgstr "Ordenar entradas _seleccionadas" #: src/gtkui/menus.cc:161 src/qtui/menus.cc:223 msgid "Remove _Duplicates" @@ -1991,8 +1781,8 @@ msgid "Remove _Unavailable Files" msgstr "_Eliminar entradas de archivos no disponibles" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Nueva" @@ -2002,7 +1792,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "_Eliminar" @@ -2133,7 +1923,7 @@ msgstr "Seleccionar _todo" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Renombrar..." @@ -2161,197 +1951,203 @@ msgid "Show column headers" msgstr "Mostrar la cabecera de las columnas" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "Usar iconos simbólicos en la barra de herramientas" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Desplazar al cambiar de canción" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Interfaz GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Cargando..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Reproducir" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Pausar" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Buscar en la fonoteca" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Abrir archivos" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Añadir archivos" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Anterior" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Detener" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Siguiente" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Grabar la transmisión" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Repetir" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Orden aleatorio" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "Menú" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "estéreo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d canal" msgstr[1] "%d canales" +msgstr[2] "%d canales" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "%d kbit/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Modo único." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." -msgstr "Modo de la lista de reproducción." +msgstr "Modo de lista de reproducción." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Detener después de la canción." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Pista anterior" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Pausar/reanudar" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Pista siguiente" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "Un paso adelante" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "Un paso atrás" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Silenciar" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Subir el volumen" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Bajar el volumen" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Saltar al archivo" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Minimizar/restaurar ventanas" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Activar la visualización en pantalla" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Activar/desactivar la repetición" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Activar/desactivar el orden aleatorio" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Detener/reanudar después de esta canción" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Elevar ventanas del reproductor" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(ninguna)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2361,11 +2157,11 @@ "\n" "¿Quiere continuar?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Asociar botones del ratón" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2373,23 +2169,23 @@ "Pulse una combinación de teclas dentro del campo de texto.\n" "También puede pulsar los botones del ratón." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Atajos de teclado:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Acción:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Combinación de teclas:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Añadir" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Atajos de teclado globales" @@ -2413,7 +2209,7 @@ "\n" "Copyright (C) 2007-2008 Sascha Hlusiak \n" "\n" -"Contribuidores:\n" +"Colaboradores:\n" "Copyright (C) 2006-2007 Vladimir Paskov \n" "Copyright (C) 2000-2002 Ville Syrjälä ,\n" " Bryn Davies ,\n" @@ -2434,7 +2230,8 @@ #: src/jack/jack-ng.cc:130 msgid "Filter ports (regex, use any port if blank):" -msgstr "Filtrar puertos (regex, cualquier puerto si se deja en blanco):" +msgstr "" +"Filtrar puertos (expresión regular, usar cualquiera si se deja en blanco):" #: src/jack/jack-ng.cc:136 msgid "Connect to physical ports only" @@ -2442,11 +2239,11 @@ #: src/jack/jack-ng.cc:139 msgid "Upmix to" -msgstr "Upmix para" +msgstr "Mezclar en" #: src/jack/jack-ng.cc:141 msgid "ports if input has fewer channels" -msgstr "transferir si la entrada tiene menos canales" +msgstr "puertos si la entrada tiene menos canales" #: src/jack/jack-ng.cc:143 msgid "Ignore insufficient number of ports" @@ -2488,20 +2285,20 @@ "The JACK server requires a sample rate of %d Hz, but Audacious is playing at " "%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." msgstr "" -"El servidor JACK requiere una frecuencia de muestreo de %d Hz, pero " -"Audacious está reproduciendo a %d Hz. Use el efecto Convertidor de " -"frecuencia de muestreo para corregir este desajuste." +"El servidor JACK requiere una tasa de muestreo de %d Hz, pero Audacious está " +"reproduciendo a %d Hz. Use el efecto Convertidor de la tasa de muestreo para " +"corregir este desajuste." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "Ajustes de %s" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Rutas de los complementos:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2512,25 +2309,25 @@ "Tras añadir nuevas rutas, pulse Intro para buscar complementos nuevos." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Complementos disponibles:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Activar" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Complementos activados:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Ajustes" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2588,103 +2385,109 @@ msgid "Wait before reconnecting:" msgstr "Esperar antes de reconectar:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "Letras" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "En ningún sitio" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" -msgstr "El artista está truncado al principio, título -- hasta el final" +msgstr "" +"El artista está truncado al principio, título -- hasta el final" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" -msgstr "Caracteres para truncar:" +msgstr "Caracteres en los que truncar:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" "Caracteres con OR en una expresión regular, rodeados por espacios" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "Caracteres a dividir:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "Truncar aún más los caracteres" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "General" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "Dividir el título en artista y título en caracteres" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "Fuentes de Internet" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "Obtener las letras de:" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "Fuentes" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "Usar las letras incrustadas (de la etiqueta Lyrics)" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "Obtener la letra de la canción de Internet:" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "Almacenar las letras en la caché local" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Almacenamiento local" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "Cargar los archivos de letras (.lrc) desde el almacenamiento local" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "No se puede recuperar %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "No se puede analizar %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Buscando las letras..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Error" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "No se ha podido encontrar la letra." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "Falta el título y/o el artista." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Guardar localmente" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Actualizar" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "Listas de reproducción M3U" @@ -2772,7 +2575,7 @@ #: src/modplug/plugin_main.cc:63 msgid "Sample rate" -msgstr "Frecuencia de muestreo" +msgstr "Tasa de muestreo" #: src/modplug/plugin_main.cc:64 msgid "22 kHz" @@ -2845,7 +2648,7 @@ msgstr "Estos ajustes surtirán efecto cuando se reinicie Audacious." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Detener después de esta canción" @@ -2854,41 +2657,17 @@ msgid "Moonstone" msgstr "Piedra lunar" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Restablecer valores por defecto" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "En reproducción" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Número de entrada" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Artista del álbum" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Posición en la cola" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Ruta del archivo" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Nombre del archivo" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Título personalizado" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Entradas" @@ -2904,7 +2683,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Usar un cálculo preciso de la duración (lento)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Sonido envolvente" @@ -3004,7 +2783,7 @@ msgid "OpenMPT (Module Player)" msgstr "OpenMPT (Reproductor MOD)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -3014,19 +2793,19 @@ "\n" "Escrito por: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Separación estéreo:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "Interpolación:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Lineal" @@ -3038,11 +2817,23 @@ msgid "Windowed sinc" msgstr "Sinc con ventanas" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "Decodificador Opus" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" +"Complemento decodificador Opus para Audacious\n" +"Copyright 2022 Thomas Lange" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "Salida OSS4" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "Salida OSS3" @@ -3085,18 +2876,40 @@ "Vroon y John Lindgren, y, por supuesto, a los autores del anterior " "complemento OSS." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "Salida PipeWire" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" +"Complemento de salida PipeWire para Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Basado en el complemento de salida PipeWire para Qmmp\n" +"Copyright 2021 Ilya Kotov" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Reproducción" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Gestor de listas de reproducción" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Eliminar" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "_Renombrar" @@ -3112,7 +2925,7 @@ msgid "OpenPSF Configuration" msgstr "Configuración de OpenPSF" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Ignorar la duración del archivo" @@ -3202,11 +3015,11 @@ "\n" "Licencia: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "Pulse una combinación de teclas dentro de un campo de texto." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3228,7 +3041,7 @@ "Copyright (C) 2020 i.Dark_Templar \n" "Copyright (C) 2007-2008 Sascha Hlusiak \n" "\n" -"Los contribuyentes incluyen:\n" +"Colaboradores:\n" "Copyright (C) 2006-2007 Vladimir Paskov \n" "Copyright (C) 2000-2002 Ville Syrjälä ,\n" " Bryn Davies ,\n" @@ -3255,14 +3068,18 @@ msgid "Audio Settings ..." msgstr "Ajustes del audio…" -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "PC" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "NP" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "C#" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Interfaz Qt" @@ -3293,14 +3110,14 @@ #: src/resample/resample.cc:43 msgid "Sample Rate Converter" -msgstr "Convertidor de frecuencia de muestreo" +msgstr "Convertidor de la tasa de muestreo" #: src/resample/resample.cc:183 msgid "" "Sample Rate Converter Plugin for Audacious\n" "Copyright 2010-2012 John Lindgren" msgstr "" -"Complemento Convertidor de frecuencia de muestreo para Audacious\n" +"Complemento Convertidor de la tasa de muestreo para Audacious\n" "Copyright 2010-2012 John Lindgren" #: src/resample/resample.cc:187 @@ -3333,15 +3150,15 @@ #: src/resample/resample.cc:199 src/soxr/sox-resampler.cc:203 msgid "Rate:" -msgstr "Frecuencia:" +msgstr "Tasa:" #: src/resample/resample.cc:202 msgid "Rate Mappings" -msgstr "Mapeo de frecuencias" +msgstr "Asignaciones de tasas" #: src/resample/resample.cc:203 msgid "Use rate mappings" -msgstr "Usar mapeos de frecuencias" +msgstr "Usar las asignaciones de tasas" #: src/resample/resample.cc:205 msgid "8 kHz:" @@ -3479,32 +3296,33 @@ #: src/search-tool/library.cc:35 src/search-tool/library.cc:46 #: src/search-tool-qt/library.cc:35 src/search-tool-qt/library.cc:46 msgid "Library" -msgstr "Fonotececa" +msgstr "Fonoteca" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d canción" msgstr[1] "%d canciones" +msgstr[2] "%d canciones" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "de este género" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "en" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "por" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Número de resultados para mostrar:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Reexplorar la fonoteca al inicio" @@ -3512,7 +3330,7 @@ msgid "Monitor library for changes" msgstr "Monitorear los cambios de la biblioteca" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3520,37 +3338,39 @@ "Para importar su fonoteca en Audacious, elija una carpeta y, a continuación, " "haga clic en el icono actualizar." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Espere..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Seleccione una carpeta" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Buscar en la fonoteca" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "%d de %d resultado mostrado" msgstr[1] "%d de %d resultados mostrados" +msgstr[2] "%d de %d resultados mostrados" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d resultado" msgstr[1] "%d resultados" +msgstr[2] "%d resultados" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Crear una lista de reproducción" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Añadir a la lista de reproducción" @@ -3654,108 +3474,108 @@ msgid "Repeat point B set." msgstr "Punto B del bucle." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Preamplificación" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Ecualizador de Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Grabación activada" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Grabación desactivada" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Ir a la posición %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Volumen: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Balance: %d%% izquierda" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Balance: centrado" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Balance: %d%% derecha" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Menú de opciones" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Desactivar la opción de siempre encima" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Activar la opción de siempre encima" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Cuadro de información del archivo" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Tamaño doble" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Visualizaciones" @@ -3779,10 +3599,6 @@ msgid "Open URL ..." msgstr "Abrir una URL..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Reproducción" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Lista de reproducción" @@ -3797,7 +3613,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Servicios" @@ -3814,7 +3630,7 @@ msgstr "Salir" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Información de la canción..." @@ -3834,7 +3650,7 @@ msgid "Clear A-B Repeat" msgstr "Borrar el bucle" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Saltar a la canción..." @@ -3927,20 +3743,20 @@ msgstr "Añadir archivos..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Por título" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Por nombre del archivo" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Por ruta del archivo" @@ -3968,113 +3784,113 @@ msgid "Remove Selected" msgstr "Eliminar entradas seleccionadas" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Buscar y seleccionar" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Invertir la selección" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "No seleccionar nada" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Seleccionar todo" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Por número de pista" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Por artista" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Por álbum" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Por artista del álbum" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Por fecha de publicación" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Por género" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Por duración" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Por título personalizado" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Por comentario" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Ordenar aleatoriamente" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Invertir la lista" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Ordenar entradas seleccionadas" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Ordenar lista" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Abrir la carpeta que contiene el archivo" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Cortar" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Copiar" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Pegar" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Pegar al final" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Añadir/quitar de la cola" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d de %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Editor de listas de reproducción de Audacious" @@ -4090,167 +3906,219 @@ msgid "Add Folder ..." msgstr "Añadir una carpeta…" -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Buscar entradas en la lista de reproducción activa" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Seleccione entradas de la lista de reproducción rellenando uno o más campos. " +"Estos campos aceptan expresiones regulares. Si no sabe cómo funcionan las " +"expresiones regulares, tan solo escriba el texto que busca. No se distinguen " +"mayúsculas de minúsculas." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Título:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Álbum:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Artista:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Nombre del archivo:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Borrar la selección anterior antes de buscar" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Reemplazar la cola actual por las entradas coincidentes" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Crear una lista de reproducción nueva con las entradas coincidentes" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Buscar" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Reproductor:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Seleccionar la tipografía para la ventana principal:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Lista de reproducción:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Seleccionar la tipografía de la lista de reproducción:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Tema" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "Mostrar la barra de título activa al enfocar una ventana" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Tipografías" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Usar tipografías de mapa de bits (solo admite ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Desplazar el título de la canción" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Desplazar el título de la canción en ambas direcciones" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analizador" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Osciloscopio" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Impresión vocal / vúmetro" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Desactivada" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normal" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Fuego" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Líneas verticales" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Líneas" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Barras" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Muy lento" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Lento" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Medio" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Rápido" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "El más rápido" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Puntos" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Línea" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Sólido" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Hielo" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Suave" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Coloreado:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Estilo:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Caída:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Caída de los picos:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Estilo del osciloscopio:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Coloreado de la impresión vocal:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "Estilo del vúmetro:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Tipo" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Tipo de visualización:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analizador" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Mostrar picos" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Visualización" @@ -4262,59 +4130,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Tema para Winamp 2.x no archivado" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Buscar entradas en la lista de reproducción activa" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Buscar" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Seleccione entradas de la lista de reproducción rellenando uno o más campos. " -"Estos campos aceptan expresiones regulares. Si no sabe cómo funcionan las " -"expresiones regulares, tan solo escriba el texto que busca. No se distinguen " -"mayúsculas de minúsculas." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Título:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Álbum:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Artista:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Nombre del archivo:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Borrar la selección anterior antes de buscar" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Reemplazar la cola actual por las entradas coincidentes" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Crear una lista de reproducción nueva con las entradas coincidentes" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Complemento Sndfile" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4472,7 +4292,7 @@ "Complemento Remuestreador SoX para Audacious\n" "Copyright 2013 Michał Lipski\n" "\n" -"Basado en el complemento Convertidor de frecuencia de muestreo\n" +"Basado en el complemento Convertidor de la tasa de muestreo\n" "Copyright 2010-2012 John Lindgren" #: src/soxr/sox-resampler.cc:178 @@ -4800,19 +4620,32 @@ "P. ej., tone://2000;2005 para reproducir un tono de 2000 Hz y otro de 2005 " "Hz." -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Se han ocultado el resto de mensajes.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Trabajando..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Información" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "%s no parece una carpeta válida." + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Eliminación de la voz" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4964,16 +4797,43 @@ msgstr "" "Copyright 2006 William Pitcock \n" "\n" -"Parte del código del complemento fue escrito por Miles Egan." +"Parte del código del complemento es de Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "Descodificador 2SF" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Coseno" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Agudo" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "Configuración XSF" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Tiempo de fundido por defecto:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Modo de interpolación:" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "Listas de reproducción XML para compartir (XSPF)" + +#~ msgid "Sample rate" +#~ msgstr "Tasa de muestreo" diff -Nru audacious-plugins-4.1/po/es_AR.po audacious-plugins-4.3.1/po/es_AR.po --- audacious-plugins-4.1/po/es_AR.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/es_AR.po 2023-04-29 20:17:32.000000000 +0000 @@ -5,6 +5,7 @@ # Translators: # Adrián Ramirez Escalante , 2012-2013 # Cosme Domínguez Díaz , 2010 +# Guillermo Cabana, 2022 # Jorge Andrés , 2011 # Rodolfo , 2017 # xukosky , 2011 @@ -12,16 +13,17 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Guillermo Cabana, 2022\n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/audacious/" "audacious/language/es_AR/)\n" "Language: es_AR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? " +"1 : 2;\n" #: src/aac/aac.cc:19 msgid "AAC (Raw) Decoder" @@ -32,21 +34,23 @@ msgstr "AdPlug (Reproductor AdLib)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "Secuenciado" #: src/adplug/adplug-xmms.cc:349 src/sid/xs_config.cc:61 msgid "Output" -msgstr "" +msgstr "Salida" #: src/adplug/adplug-xmms.cc:350 msgid "OPL Emulator:" -msgstr "" +msgstr "Emulador OPL:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Frecuencia de muestreo" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -62,220 +66,13 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Varios" #: src/adplug/adplug-xmms.cc:356 msgid "Repeat song in endless loop" -msgstr "" - -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Alarma" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Establecer Alarma ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Un plugin que puede ser usado para comenzar la reproducción de una lista en " -"un determinado momento.\n" -"\n" -"Escrito originalmente por Adam Feakin y Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Esta es su llamada despertador" - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Tu recordatorio para hoy es..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Recordatorio" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Lunes" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Martes" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Miércoles" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Jueves" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Viernes" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Sábado" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Domingo" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Tiempo" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Alarma a (predeterminado):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Silencio tras:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "horas" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minutos" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Seleccione los días para que salte la alarma" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Día" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Predeterminado" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Días" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Desvanecimiento" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "segundos" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Volumen" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Iniciar a" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Final" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Actual" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Comando adicional" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "activar" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Lista de reproducción (opcional)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Elegir una lista de reproducción" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Opciones" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "¿Qué significan estas opciones?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Ayuda" +msgstr "Repetir canción en bucle sin fin" #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" @@ -350,150 +147,165 @@ "Tony Vroon\n" "for the good help with alpha testing" msgstr "" +"AMIDI-Plug\n" +"Reproductor de música MIDI\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"Escrito por Giacomo Lozito\n" +"\n" +"\n" +"Agradecimientos especiales...\n" +"\n" +"A Clemens Ladisch y Jaroslav Kysela\n" +"por sus estupendos programas aplaymidi y amixer; \n" +"me resultaron muy útiles, junto con la documentación\n" +"de alsa-lib, para comprender mejor la API de ALSA.\n" +"\n" +"A Alfredo Spadafina\n" +"por ese logo tan bonito de un teclado midi.\n" +"\n" +"A Tony Vroon\n" +"por su inestimable ayuda probando las versiones alfa." #: src/amidiplug/i_configure.cc:94 msgid "Override default gain:" -msgstr "" +msgstr "Anular ganancia predeterminada:" #: src/amidiplug/i_configure.cc:102 msgid "Override default polyphony:" -msgstr "" +msgstr "Anular polifonía predeterminada:" #: src/amidiplug/i_configure.cc:110 msgid "Override default reverb:" -msgstr "" +msgstr "Anular reverberación predeterminada:" #: src/amidiplug/i_configure.cc:112 src/amidiplug/i_configure.cc:120 msgid "On" -msgstr "" +msgstr "Activar" #: src/amidiplug/i_configure.cc:118 msgid "Override default chorus:" -msgstr "" +msgstr "Anular coro predeterminado:" #: src/amidiplug/i_configure.cc:128 src/console/plugin.cc:29 msgid "Playback" -msgstr "" +msgstr "Reproducir" #: src/amidiplug/i_configure.cc:129 msgid "Transpose:" -msgstr "" +msgstr "Transponer: " #: src/amidiplug/i_configure.cc:131 src/speedpitch/speed-pitch.cc:257 msgid "semitones" -msgstr "" +msgstr "semitonos" #: src/amidiplug/i_configure.cc:132 msgid "Drum shift:" -msgstr "" +msgstr "Cambio de batería: " #: src/amidiplug/i_configure.cc:134 msgid "note numbers" -msgstr "" +msgstr "números de nota" #: src/amidiplug/i_configure.cc:135 msgid "Skip leading silence" -msgstr "" +msgstr "Omitir el silencio inicial" #: src/amidiplug/i_configure.cc:137 msgid "Skip trailing silence" -msgstr "" +msgstr "Omitir el silencio final" #: src/amidiplug/i_configure.cc:141 msgid "SoundFont" -msgstr "" +msgstr "SoundFont" #: src/amidiplug/i_configure.cc:148 msgid "Synthesizer" -msgstr "" - -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "" +msgstr "Sintetizador" -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "Complemento AMIDI - seleccione un archivo SoundFont" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Cancelar" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Abrir" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Nombre del archivo" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Tamaño (bytes)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Nombre:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " Información MIDI " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Formato:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Longitud (mseg):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Nro. de Pistas:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "variable" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Div tiempo:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " Comentarios y letras MIDI " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* no hay comentarios disponibles en este archivo MIDI *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* no hay letras disponibles en este archivo MIDI *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Cerrar" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (UTF-8 no válido)" #: src/ampache/ampache.cc:33 msgid "Ampache Browser" -msgstr "" +msgstr "Navegador Ampache" #: src/ampache/ampache.cc:46 msgid "" @@ -503,6 +315,11 @@ "Copyright (C) Róbert Čerňanský and John Lindgren\n" "License: GNU GPLv3" msgstr "" +"Ampache Browser para Audacious\n" +"http://ampache-browser.org/\n" +"\n" +"Copyright (C) Róbert Čerňanský y John Lindgren\n" +"Licencia: GNU GPLv3" #: src/aosd/aosd.cc:31 msgid "" @@ -514,6 +331,13 @@ "Based in part on Evan Martin's Ghosd library:\n" "http://neugierig.org/software/ghosd/" msgstr "" +"OSD Audacious\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"\n" +"Escrito por Giacomo Lozito \n" +"\n" +"Basado en parte en la librería Ghosd de Evan Martin:\n" +"http://neugierig.org/software/ghosd/" #: src/aosd/aosd.h:37 msgid "AOSD (On-Screen Display)" @@ -531,7 +355,7 @@ msgid "Concave Rectangle" msgstr "Rectángulo cóncavo" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Ninguno" @@ -549,7 +373,7 @@ #: src/aosd/aosd_trigger.cc:56 msgid "Triggers OSD when the song title changes (for internet streams)." -msgstr "" +msgstr "Lanza OSD cuando el título de pista cambia (para streams de internet)." #: src/aosd/aosd_trigger.cc:61 msgid "Pause On" @@ -567,94 +391,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Avisa cuando la reproducción se reanuda." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Colocación" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Desplazamiento X relativo:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Desplazamiento Y relativo:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Ancho máximo:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Opciones multi-monitor" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Mostrar notificaciones utilizando:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "todos los monitores" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "monitor %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Temporización (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Mostrar:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Desvanecimiento de entrada:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Desvanecimiento de salida:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Tipografías" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Tipografía %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Sombra" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Estilo de renderizado" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Colores" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Color %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Activar disparador" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Evento" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Administrador de composición detectado" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -665,62 +489,62 @@ "administrador de composición o las notificaciones no funcionarán " "correctamente" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Administrador de composición no necesario para transparencia falsa" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Transparencia" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Transparencia falsa" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Transparencia real (requiere composición 3D)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Extensión de composición no cargada" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Notificaciones de Audacious" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Posición" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animación" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Texto" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Decoración" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Disparador" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Varios" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Probar" #: src/asx3/asx3.cc:35 msgid "ASXv3 Playlists" -msgstr "" +msgstr "Listas de reproducción ASXv3" #: src/asx/asx.cc:33 msgid "ASXv1/ASXv2 Playlists" @@ -730,11 +554,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Listas de reproducción Audacious (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Profundidad de bit:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Tasa de reducción de la muestra:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Color" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Niebla Borrosa" @@ -746,19 +586,23 @@ msgid "Presets:" msgstr "Predefinidos:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Predeterminado" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Nivel de alimentación:" #: src/bs2b/plugin.cc:138 msgid "x1/10 dB" -msgstr "" +msgstr "x1/10 dB" #: src/bs2b/plugin.cc:139 msgid "Cut frequency:" msgstr "Cortar frecuencia:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Analizador de Espectro" @@ -777,6 +621,15 @@ "\n" "This was a Google Summer of Code 2007 project." msgstr "" +"Copyright (C) 2007-2012 Calin Crisan y otros.\n" +"\n" +"Muchas gracias a los desarrolladores de:\n" +"libcdio \n" +"y libcddb .\n" +"\n" +"Gracias también a Tony Vroon por ser mi mentor y mi guía.\n" +"\n" +"Este fue un proyecto del Google Summer of Code de 2007." #: src/cdaudio/cdaudio-ng.cc:134 msgid "Device" @@ -835,63 +688,63 @@ #: src/cdaudio/cdaudio-ng.cc:254 #, c-format msgid "Track %d is a data track." -msgstr "" +msgstr "Pista %d es una pista de datos." #: src/cdaudio/cdaudio-ng.cc:329 msgid "Error reading audio CD." -msgstr "" +msgstr "Error al leer CD de audio." #: src/cdaudio/cdaudio-ng.cc:398 msgid "Audio CD" msgstr "CD de audio" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Error al abrir la lectora de CD %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "No hay audio que se pueda reproducir en la lectora de CD localizada." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "La unidad está vacía." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Tipo de disco no soportado." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Error al finalizar la lectora de CD inicializada oportunamente." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Error al obtener el primer/último número de pista." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "No se puede leer el LSN del comienzo/final de la pista %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." -msgstr "" +msgstr "Fallo al crear la conexión a CDDB." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Error al consultar el servidor CDDB" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Error al consultar el servidor CDDB: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" -msgstr "" +msgstr "Fallo al leer la info CDDB: %s" #: src/cd-menu-items/cd-menu-items.cc:33 msgid "Audio CD Menu Items" @@ -899,11 +752,11 @@ #: src/cd-menu-items/cd-menu-items.cc:45 msgid "Pla_y CD" -msgstr "" +msgstr "R_eproducir CD" #: src/cd-menu-items/cd-menu-items.cc:45 msgid "_Add CD" -msgstr "" +msgstr "_Añadir CD" #: src/compressor/compressor.cc:45 msgid "Compression" @@ -922,6 +775,8 @@ "Dynamic Range Compression Plugin for Audacious\n" "Copyright 2010-2014 John Lindgren" msgstr "" +"Plugin de Compresión de Rango Dinámico para Audacious\n" +"Copyright 2010-2014 John Lindgren" #: src/compressor/compressor.cc:64 msgid "Dynamic Range Compressor" @@ -953,6 +808,13 @@ msgid "Default song length:" msgstr "Longitud de canción predeterminada:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "segundos" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "" @@ -981,7 +843,7 @@ msgid "CoreAudio output" msgstr "" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -993,11 +855,11 @@ "Copyright 2010 John Lindgren" msgstr "" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" @@ -1090,20 +952,20 @@ msgid "Delete" msgstr "Borrar" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Cancelar" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "" @@ -1125,7 +987,7 @@ msgstr "Retardo:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1141,11 +1003,11 @@ msgid "Echo" msgstr "Eco" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Plugin FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1249,76 +1111,76 @@ msgid "32000 Hz" msgstr "" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" +msgid "8 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" +msgid "16 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" +msgid "32 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" +msgid "40 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" +msgid "48 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" +msgid "56 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" +msgid "64 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" +msgid "80 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" +msgid "96 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" +msgid "112 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" +msgid "128 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" +msgid "160 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" +msgid "192 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" +msgid "224 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" +msgid "256 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" +msgid "320 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:450 @@ -1326,12 +1188,12 @@ msgstr "Estéreo conjunto" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Estereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1443,7 +1305,7 @@ msgid "Quality (0-1):" msgstr "" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "General" @@ -1452,11 +1314,11 @@ msgid "FLAC Decoder" msgstr "Decodificador FLAC" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1482,7 +1344,7 @@ msgid "Invalid open mode" msgstr "" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1494,116 +1356,134 @@ "License: GPLv2+" msgstr "" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "Número de entrada" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Título" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Artista" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Año" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Album" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Artista del Album" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Pista" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Género" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "Posición de la cola" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Longitud" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "Ruta del archivo" - -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Título personalizado" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Tasa de bits" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Comentario" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Herramienta de búsqueda" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Acoplar a la izquierda" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Acoplar a la derecha" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Acoplar arriba" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Acoplar abajo" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Desacoplar" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Deshabilitar" @@ -1643,8 +1523,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Reproducir" @@ -1821,8 +1701,8 @@ msgid "Remove _Unavailable Files" msgstr "Eliminar archivos _no disponibles" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Nuevo" @@ -1832,7 +1712,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "" @@ -1963,7 +1843,7 @@ msgstr "Seleccionar _todo" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Renombrar ..." @@ -1991,208 +1871,214 @@ msgid "Show column headers" msgstr "" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Interfaz GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Gestión de memoria intermedia ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Reproducir" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Pausar" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Abrir archivos" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Añadir archivos..." -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Anterior" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Detener" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Siguiente" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Repetir" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Orden aleatorio" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "estéreo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d canal" msgstr[1] "%d canales" +msgstr[2] "%d canales" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Modo único." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Modo de lista de reproducción." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Parar después de la canción." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Pausa/continuar" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Silenciar" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Mostrar notificaciones" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(ninguno)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" "Do you want to continue?" msgstr "" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Asociar botones del mouse" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2200,23 +2086,23 @@ "Pulse una combinación de teclas dentro del campo de texto.\n" "También puede asociar botones del ratón." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Atajos de teclado:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Acción:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Teclas asociadas:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Abrir" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Teclas abreviadas globales" @@ -2298,16 +2184,16 @@ "%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." msgstr "" -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "Ajustes %s" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Rutas de complementos:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2318,25 +2204,25 @@ "Tras añadir nuevas rutas, pulse Intro para buscar complementos nuevos." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Complementos disponibles:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Activar" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Complementos activos:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Ajustes" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2378,101 +2264,105 @@ msgid "Wait before reconnecting:" msgstr "Espera antes de reconectar:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "No se puede obtener %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "No se puede analizar %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Buscando letras de la canción...." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Error" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "Listas de reproducción M3U" @@ -2623,7 +2513,7 @@ msgstr "" #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "" @@ -2632,41 +2522,17 @@ msgid "Moonstone" msgstr "" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Reproducción actual" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Artista del Album" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Entradas" @@ -2682,7 +2548,7 @@ msgid "Use accurate length calculation (slow)" msgstr "" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Envolvente" @@ -2766,26 +2632,26 @@ msgid "OpenMPT (Module Player)" msgstr "" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "" @@ -2797,11 +2663,21 @@ msgid "Windowed sinc" msgstr "" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "Salida OSS4" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "" @@ -2838,18 +2714,35 @@ "Lindgren and of course the authors of the previous OSS plugin." msgstr "" -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Reproducción" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Gestor de listas de reproducción" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Remover" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "" @@ -2865,7 +2758,7 @@ msgid "OpenPSF Configuration" msgstr "" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "" @@ -2926,11 +2819,11 @@ "License: GPLv2+" msgstr "" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "" -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -2966,14 +2859,18 @@ msgid "Audio Settings ..." msgstr "" -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "" @@ -3171,30 +3068,31 @@ msgid "Library" msgstr "Biblioteca" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "" @@ -3202,7 +3100,7 @@ msgid "Monitor library for changes" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3210,37 +3108,39 @@ "Para importar su colección musical en Audacious, elija una carpeta y pulse " "el botón «actualizar»." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Espere por favor..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Elija una carpeta" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Buscar biblioteca" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Crear lista de reproducción" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Añadir a la lista de reproducción" @@ -3342,108 +3242,108 @@ msgid "Repeat point B set." msgstr "" -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Preamplificador" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Ecualizador de Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Ir a la posición %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Volumen: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Balance: %d%% izquierda" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Balance: centrado" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Balance: %d%% derecha" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Menú de opciones" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Desactivar 'Siempre encima'" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Activar 'Siempre encima'" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Caja de información de archivo" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "" @@ -3467,10 +3367,6 @@ msgid "Open URL ..." msgstr "" -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Reproducción" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Lista de reproducción" @@ -3485,7 +3381,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Servicios" @@ -3502,7 +3398,7 @@ msgstr "" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "" @@ -3522,7 +3418,7 @@ msgid "Clear A-B Repeat" msgstr "" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "" @@ -3615,20 +3511,20 @@ msgstr "" #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Por título" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "" @@ -3656,113 +3552,113 @@ msgid "Remove Selected" msgstr "Eliminar los seleccionados" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Buscar y seleccionar" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Invertir la selección" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "No seleccionar nada" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Seleccionar todo" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Por número de pista" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Por artista" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Por álbum" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Ordenar aleatoriamente" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Invertir la lista" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Ordenar los seleccionados" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Ordenar lista" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Cortar" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Copiar" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Pegar" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d de %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Editor de listas de reproducción de Audacious" @@ -3778,167 +3674,219 @@ msgid "Add Folder ..." msgstr "" -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Buscar entradas en la lista de reproducción activa" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Seleccione entradas en la lista de reproducción indicando uno o más campos. " +"Los campos utilizan sintaxis de expresiones regulares, sin distinguir " +"mayúsculas de minúsculas. Si no sabe como funcionan las expresiones " +"regulares, tan solo escriba la parte del literal que quiere buscar." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Limpiar la selección previa antes de buscar" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Conmutar automáticamente la cola para las entradas coincidentes" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Crear una nueva lista de reproducción con las entradas coincidentes" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Seleccione la tipografía para la ventana principal:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Seleccione la tipografía de la lista de reproducción:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Usar tipografías de mapa de bits (solo soporta ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Desplazar el título de la canción en ambas direcciones" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analizador" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Campo" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Apagado" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normal" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Fuego" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Líneas" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Barras" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Muy lento" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Lento" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Medio" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Rápido" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Muy rápido" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Hielo" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Suave" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Visualización" @@ -3950,59 +3898,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Tema para Winamp 2.x no archivado" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Buscar entradas en la lista de reproducción activa" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Seleccione entradas en la lista de reproducción indicando uno o más campos. " -"Los campos utilizan sintaxis de expresiones regulares, sin distinguir " -"mayúsculas de minúsculas. Si no sabe como funcionan las expresiones " -"regulares, tan solo escriba la parte del literal que quiere buscar." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Limpiar la selección previa antes de buscar" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Conmutar automáticamente la cola para las entradas coincidentes" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Crear una nueva lista de reproducción con las entradas coincidentes" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Plugin Sndfile" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4421,19 +4321,32 @@ "e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" msgstr "" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Se han ocultado el resto de mensajes.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Trabajando .." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Información" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Quitar voz" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4535,11 +4448,11 @@ #: src/wavpack/wavpack.cc:217 msgid "lossy (hybrid)" -msgstr "" +msgstr "con pérdida (híbrido)" #: src/wavpack/wavpack.cc:219 msgid "lossy" -msgstr "" +msgstr "con pérdida" #: src/wavpack/wavpack.cc:259 msgid "" @@ -4547,14 +4460,41 @@ "\n" "Some of the plugin code was by Miles Egan." msgstr "" +"Copyright 2006 William Pitcock \n" +"\n" +"Parte del código del complemento es de Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "Decodificador 2SF" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Coseno" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Agudo" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" -msgstr "" +msgstr "Configuración XSF" + +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Tiempo de fundido predeterminado:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Modo de interpolación:" #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" diff -Nru audacious-plugins-4.1/po/es_MX.po audacious-plugins-4.3.1/po/es_MX.po --- audacious-plugins-4.1/po/es_MX.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/es_MX.po 2023-04-29 20:17:32.000000000 +0000 @@ -4,21 +4,23 @@ # # Translators: # Jorge A. García Sosa , 2012-2014 -# Jorge A. García Sosa , 2014-2017,2019-2020 +# Jorge A. García Sosa , 2014-2017,2019-2023 msgid "" msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" -"Language-Team: Spanish (Mexico) (http://www.transifex.com/audacious/" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Jorge A. García Sosa , " +"2014-2017,2019-2023\n" +"Language-Team: Spanish (Mexico) (http://app.transifex.com/audacious/" "audacious/language/es_MX/)\n" "Language: es_MX\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? " +"1 : 2;\n" #: src/aac/aac.cc:19 msgid "AAC (Raw) Decoder" @@ -29,7 +31,7 @@ msgstr "AdPlug (Reproductor AdLib)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "secuencializado" @@ -41,9 +43,11 @@ msgid "OPL Emulator:" msgstr "Emulador OPL:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Tasa de muestra" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Tasa de bits:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -59,7 +63,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Misceláneo" @@ -67,260 +71,6 @@ msgid "Repeat song in endless loop" msgstr "Repetir canción en círculo infinito" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Alarma" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Programar Alarma ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Un plug-in que puede ser utilizado para iniciar la reproducción a una hora " -"dada.\n" -"\n" -"Orignalmente escrito por Adam Feakin y Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Hora\n" -" Alarma a:\n" -" La hora a la que la alarma sonará.\n" -"\n" -" Silenciar después de:\n" -" Detiene la alarma después de este tiempo.\n" -" (si el dialogo despertar no está cerrado)\n" -"\n" -"\n" -"Días\n" -" Día:\n" -" Selecciona los días que la alarma estará activa.\n" -"\n" -" Hora:\n" -" Elige la hora para la alarma de cada día,\n" -" o selecciona el botón para usar la hora\n" -" predeterminada.\n" -"\n" -"\n" -"Volumen\n" -" Fading:\n" -" Aumenta progresivamente el volumen hasta el elegido\n" -" por este tiempo.\n" -"\n" -" Comenzar a:\n" -" Inicia el fading desde este volumen.\n" -"\n" -" Final:\n" -" El volumen al que llegará. Si la hora de\n" -" fading es 0 entonces elige el volumen de aquí e inicia la\n" -" reproducción.\n" -"\n" -"\n" -"Opciones:\n" -" Comando Adicional:\n" -" Ejecuta este comando en la hora de la alarma.\n" -"\n" -" Lista de Reprod.:\n" -" Carga esta lista. Si no una hay lista dada,\n" -" la actual será usada.\n" -" El URL de un stream mp3/ogg \n" -" tambien puede ingresarse aquí.\n" -"\n" -" Recordatorio:\n" -" Muestra un recordatorio cuando la alarma se apaga.\n" -" Escríbelo en el campo de entrada y habilita\n" -" la caja is quieres que se muestre." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Esta es tu llamada despertador." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Tu recordatorio para hoy es..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Recordatorio" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Lunes" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Martes" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Miércoles" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Jueves" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Viernes" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Sábado" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Domingo" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Tiempo" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Alarma a las (predeterminado):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Silenciar después de:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "horas" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minutos" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Escoge los días para que suene la alarma" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Día" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Predeterminado" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Días" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Desvanecimiento" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "segundos" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Volumen" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Comenzar a" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Finalizar a" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Actual" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Comando Adicional" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "habilitar" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Lista de Reproducción (opcional)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Selecciona una lista de reproducción" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Opciones" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "¿Qué significan estás opciones?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Ayuda" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Portada de Álbum" @@ -469,87 +219,83 @@ msgid "Synthesizer" msgstr "SIntetizador" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Tasa de bits:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - seleccionar archivo SoundFont" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Cancelar" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Abrir" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Nombre del archivo" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Tamaño (bytes)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Nombre:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " Información MIDI " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Formato:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Duración (ms):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Núm. de Pistas:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "variable" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Div. tiempo:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " Comentarios y Letras de canción MIDI " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* no hay comentarios disponibles en este archivo MIDI *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* no hay letras de canción disponibles en este archivo MIDI *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Cerrar" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (UTF-8 inválido)" @@ -605,7 +351,7 @@ msgid "Concave Rectangle" msgstr "Rectángulo Cóncavo" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Ninguno" @@ -643,94 +389,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Muestra Notificación en Pantalla cuando la pausa termina." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Colocación" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Compensación relativa en X:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Compensación relativa en Y:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Ancho máximo de OSD:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Opciones de varios monitores" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Mostrar OSD utilizando:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "Todos los monitores" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "monitor %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Tiempo (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Mostrar:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Desvanecimiento al aparecer:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Desvanecimiento al desaparecer:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Fuentes" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Fuente %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Sombra" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Estilo de Renderización" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Colores" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Color %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Activar Aviso" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Evento" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Administrador de composición detectado" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -741,56 +487,56 @@ "administrador de composición, de otra forma las Notificaciones en Pantalla " "no funcionarán apropiadamente" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Administrador de composición no requerido para transparencia falsa" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Transparencia" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Transparencia falsa" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Transparencia real (requiere X Composite Ext.)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Extensión de composición no cargada" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Posición" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animación" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Texto" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Decoración" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Avisos" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Misc." -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Probar" @@ -806,11 +552,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Lista de reproducción Audacious (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Profundidad de Bit:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Tasa de reducción de la muestra:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Color" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Blur Scope" @@ -822,6 +584,10 @@ msgid "Presets:" msgstr "Predefinidos:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Predeterminado" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Nivel de alimentación:" @@ -834,7 +600,7 @@ msgid "Cut frequency:" msgstr "Frecuencia de corte:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Analizador de Espectro" @@ -930,50 +696,50 @@ msgid "Audio CD" msgstr "CD de Audio" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Fallo al abrir el dispositivo de CD %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "No se encontró drive de CD capaz de reproducir audio." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "La unidad de disco está vacía." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Tipo de disco no soportado." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Fallo al terminar de preparar drive de CD abierto." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Fallo al recuperar el primer/último número de pista." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "No se puede leer LSN inicio/final para la pista %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Fallo al crear la conexión CDDB" -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Fallo al consultar el servidor CDDB." -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Fallo al consultar el servidor CDDB: %s." -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Fallo para leer la info CDDB: %s" @@ -1046,6 +812,13 @@ msgid "Default song length:" msgstr "Duración de pista predeterminada:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "segundos" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Resampling" @@ -1074,7 +847,7 @@ msgid "CoreAudio output" msgstr "Salida CoreAudio" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1094,11 +867,11 @@ "Basado en el plugin de salida SDL para Audacious\n" "Copyright 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Usar modo exclusivo" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "Usar audio de bit perfecto (adapta la tasa de muestra del dispositivo)" @@ -1195,20 +968,20 @@ msgid "Delete" msgstr "Borrar" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Cancelar" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Borrar Archivos Seleccionados" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Borrar Método" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Mover a la bandeja en vez de borrar inmediatamente" @@ -1234,7 +1007,7 @@ msgstr "Retraso:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1250,11 +1023,11 @@ msgid "Echo" msgstr "Eco" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Plugin FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1377,89 +1150,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "8 kbit/s" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "16 kbit/s" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "32 kbit/s" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "40 kbit/s" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "48 kbit/s" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "56 kbit/s" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "64 kbit/s" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "80 kbit/s" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "96 kbit/s" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "112 kbit/s" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "128 kbit/s" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "160 kbit/s" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "192 kbit/s" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "224 kbit/s" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "256 kbit/s" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "320 kbit/s" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Estéreo Unido" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Estéreo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Monoaural" @@ -1571,7 +1344,7 @@ msgid "Quality (0-1):" msgstr "Calidad (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "General" @@ -1580,11 +1353,11 @@ msgid "FLAC Decoder" msgstr "Decodificador FLAC" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "sin pérdida" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1616,7 +1389,7 @@ msgid "Invalid open mode" msgstr "modo abierto invalido" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1636,116 +1409,134 @@ "\n" "Licencia: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "Analizador de Espectro OpenGL" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "Número de entrada" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Título" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Artista" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Año" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Álbum" -#: src/gtkui/columns.cc:40 -msgid "Album artist" -msgstr "Artista de Álbum" - #: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr "Artista del Álbum" + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Pista" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Género" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "Posición en cola" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "Posición en Espera" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Duración" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "Ruta del archivo" - -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Título personalizado" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "Ruta de Archivo" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Nombre de Archivo" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Título Customizado" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Tasa de bits" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Comentario" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "Editor" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "Número de catálogo" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Columnas disponibles" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Columnas mostradas" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Herramienta de Búsqueda" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Acoplar a la izquierda" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Acoplar a la derecha" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Acoplar arriba" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Acoplar abajo" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Desacoplar" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Dehabilitar" @@ -1785,8 +1576,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Reproducir" @@ -1963,8 +1754,8 @@ msgid "Remove _Unavailable Files" msgstr "Remover Archivos No _Disponibles" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Nuevo" @@ -1974,7 +1765,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "Remo_ver" @@ -2028,7 +1819,7 @@ #: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 msgid "Show Info Bar _Album Art" -msgstr "" +msgstr "Mostrar Barra de Información Portada _Album" #: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 msgid "Show Info Bar Vis_ualization" @@ -2105,7 +1896,7 @@ msgstr "Seleccion_ar todo" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Renombrar ..." @@ -2133,197 +1924,203 @@ msgid "Show column headers" msgstr "Mostrar encabezados de columna" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "Usar iconos simbólicos en barra de herramientas" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Desplazar al cambiar de pista" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Interfaz GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Almacenando en buffer..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Reproducir" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Pausa" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Buscar Librería" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Abrir Archivos" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Agregar Archivos" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Anterior" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Detener" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Siguiente" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Grabar Stream" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Repetir" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Aleatorio" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" -msgstr "" +msgstr "Menú" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "monoaural" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "estéreo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d canal" msgstr[1] "%d canales" +msgstr[2] "%d canales" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "%d kbit/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Modo sencillo." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Modo Lista de Reproducción." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Detener después de la pista." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Pista previa" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Pausa/Continuar" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Pista siguiente" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "Adelantar" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "Atrasar" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Silenciar" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Aumentar volumen" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Disminuir volumen" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Saltar al archivo" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Cambiar ventana(s) del reproductor" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Mostrar Notificaciones en Pantalla" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Repetir" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Aleatorio" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Detener después de actual" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Aumentar ventanas(s) del reproductor" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(ninguno)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2333,11 +2130,11 @@ "\n" "¿Quieres continuar?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Asociar botones del ratón" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2345,23 +2142,23 @@ "Presiona una combinación de teclas dentro de un campo de texto.\n" "También puedes asociar botones del ratón." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Atajos del teclado:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Acción:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Asociación de Teclas:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Agregar" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Hotkeys Globales" @@ -2460,16 +2257,16 @@ "reproduciendo a %d Hz. Por favor utiliza el efecto de Convertidor de Tasa de " "Muestra para corregir la discordancia." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "Ajustes %s" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Rutas de Módulos:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2480,25 +2277,25 @@ "Después de agregar nuevas rutas, presiona Intro para buscar plugins nuevos." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Plugins disponibles:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Habilitar" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Habilitar plugins:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Ajustes" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2555,101 +2352,105 @@ msgid "Wait before reconnecting:" msgstr "Espera entes de reconectar:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "Letras" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Ninguna parte" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" -msgstr "" +msgstr "Artista está recortado al inicio, Título -- al final" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" -msgstr "" +msgstr "Caracteres recortados en:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" -msgstr "" +msgstr "Caracteres están ORed en RegExp, rodeados de espacios" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" -msgstr "" +msgstr "Caracteres a separar en:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" -msgstr "" +msgstr "Además recortar esos en caracteres" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" -msgstr "" +msgstr "General" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" -msgstr "" +msgstr "Separar título en artista y título en caracteres" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "Fuentes de Internet" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "Obtener letras de:" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "Fuentes" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "Usar letras incluidas (del tag Lyrics)" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "Obtener letras de internet" + +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "Almacenar letras en caché local" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Almacenamiento Local" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "Cargar archivos de letras (.lrc) del almacenamiento local" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Incapaz de traer %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Incapaz de analizar %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Buscando letras de canción ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Error" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "No se encontraron letras." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "Falta título y/o artista." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Guardar Localmente" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Actualizar" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "Listas de Reproducción M3U" @@ -2807,50 +2608,26 @@ msgstr "Estos ajustes tomarán efecto cuando Audacious reinicie." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Detener Al Terminar Esta Pista" #: src/moonstone/moonstone.cc:39 msgid "Moonstone" -msgstr "" +msgstr "Moonstone" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Resetear a Predeterminados" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Reproduciendo" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Número de entrada" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Artista del Álbum" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Posición en Espera" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Ruta de Archivo" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Nombre de Archivo" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Título Customizado" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Entradas" @@ -2866,7 +2643,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Usar el cálculo preciso de longitud (lento)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Envolvente" @@ -2956,7 +2733,7 @@ #: src/notify/notify.cc:110 msgid "Custom notification duration:" -msgstr "" +msgstr "Duración de notificación personalizada:" #: src/notify/osd.cc:74 msgid "Show" @@ -2966,7 +2743,7 @@ msgid "OpenMPT (Module Player)" msgstr "OpenMPT (Module Player)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -2976,19 +2753,19 @@ "\n" "Escrito por: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Separación estéreo:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "Interpolación:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Linear" @@ -3000,11 +2777,23 @@ msgid "Windowed sinc" msgstr "Windowed sinc" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "Decodificador Opus" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" +"Plugin decodificador Opus para Audacious\n" +"Copyright 2022 Thomas Lange" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "Salida OSS4" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "Salida OSS3" @@ -3046,18 +2835,40 @@ "Me gustaría agradecer a la ente de #audacious, especialmente a Tony Vroon y " "John Lindgren y por supuesto a los autores del plugin OSS anterior." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "Salida PipeWire" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" +"Plugin de salida PipeWire para Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Basado en el Plugin de salida PipeWire para Qmmp\n" +"Copyright 2021 Ilya Kotov" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Reproducción" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Administrador de Lista de Reproducción" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Remover" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "Ren_ombrar" @@ -3073,7 +2884,7 @@ msgid "OpenPSF Configuration" msgstr "Configuración OpenPSF" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Ignorar duración del archivo" @@ -3153,12 +2964,21 @@ "\n" "License: GPLv2+" msgstr "" +"OpenGL Spectrum Analyzer para Audacious\n" +"Copyright 2013 Christophe Budé, John Lindgren y Carlo Bramini\n" +"Copyright 2014, 2020 Ariadne Conill\n" +"\n" +"Basado en el plugin XMMS:\n" +"Copyright 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson y " +"4Front Technologies\n" +"\n" +"License: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." -msgstr "" +msgstr "Presiona una combinación de teclas dentro de un campo de texto." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3173,6 +2993,19 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Global Hotkey Plugin\n" +"Controla el reproductor con combinaciones de teclas globales o tlecas " +"multimedia.\n" +"\n" +"Copyright (C) 2020 i.Dark_Templar \n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contribuyeron además:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " #: src/qtui/menus.cc:109 msgid "_Open Folder ..." @@ -3194,13 +3027,17 @@ msgid "Audio Settings ..." msgstr "Ajustes de Audio ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" -msgstr "" +msgstr "Q#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" -msgstr "" +msgstr "T#" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "C#" #: src/qtui/qtui.cc:40 msgid "Qt Interface" @@ -3228,7 +3065,7 @@ #: src/qtui/settings.cc:78 msgid "Use bold font for column headers" -msgstr "" +msgstr "Usa fuente en negritas para encabezados de columna" #: src/resample/resample.cc:43 msgid "Sample Rate Converter" @@ -3418,30 +3255,31 @@ msgid "Library" msgstr "Librería" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d pista" msgstr[1] "%d pistas" +msgstr[2] "%d pistas" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "de este género" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "en" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "por" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Número de resultados para mostrar:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Rescanear biblioteca al inicio" @@ -3449,7 +3287,7 @@ msgid "Monitor library for changes" msgstr "Monitorear biblioteca por cambios" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3457,37 +3295,39 @@ "Para importar tu librería de música en Audacious, selecciona una carpeta y " "luego haz clic en el ícono \"actualizar\"." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Por favor espere..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Seleccione Carpeta" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Buscar librería" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "%d de %d resultado mostrado" msgstr[1] "%d de %d resultados mostrados" +msgstr[2] "%d de %d resultados mostrados" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d resultado" msgstr[1] "%d resultados" +msgstr[2] "%d resultados" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Crear Lista de Reproducción" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Agregar a la Lista de Reproducción" @@ -3591,108 +3431,108 @@ msgid "Repeat point B set." msgstr "Repite punto B configurado." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Preamplificación" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Ecualizador de Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Grabando enc. " -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Grabando apag." -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Saltar a %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Volumen: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Balance: %d%% izquierda" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Balance: central" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Balance: %d%% derecha" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Menú de Opciones" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Deshabilitar 'Siempre Encima'" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Habilitar 'Siempre Encima'" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Caja de Información del Archivo" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Tamaño Doble" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Visualizaciones" @@ -3716,10 +3556,6 @@ msgid "Open URL ..." msgstr "Abrir URL ..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Reproducción" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Lista de Reproducción" @@ -3734,7 +3570,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Servicios" @@ -3751,7 +3587,7 @@ msgstr "Salir" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Información de Pista ..." @@ -3771,7 +3607,7 @@ msgid "Clear A-B Repeat" msgstr "Limpiar Repetición A-B" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Saltar a la Pista ..." @@ -3864,20 +3700,20 @@ msgstr "Agregar Archivos ..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Por Título" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Por Nombre de Archivo" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Por Ruta de Archivo" @@ -3905,113 +3741,113 @@ msgid "Remove Selected" msgstr "Remover Seleccionados" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Buscar y Seleccionar" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Invertir Selección" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Selecciona ninguno" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Selecciona Todo" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Por Número de Pista" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Por Artista" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Por Álbum" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Por Artista de Álbum" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Por Fecha de Lanzamiento" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Por Género" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Por Duración" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Por Título Personalizado" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Por Commentario" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Aleatorizar Lista" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Invertir Lista" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Ordenar Seleccionado" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Ordenar Lista" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Abrir Carpeta Contenedora" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Cortar" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Copiar" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Pegar" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Copiar al Final" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "A la Fila/Quitar de la Fila" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d de %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Editor de Listas de Reproducción de Audacious" @@ -4027,167 +3863,220 @@ msgid "Add Folder ..." msgstr "Agregar Carpeta ..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Buscar entradas en la lista de reproducción activa" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Selecciona entradas en la lista de reproducción llenando uno o más campos. " +"Los campos usan la sintaxis de expresiones regulares, mayúsculas o " +"minísculas indiscriminadas. Si no sabes como trabajan las expresiones " +"regulares, simplemente inserta una porción literal de lo que buscas." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Título:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Álbum:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Artista:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Nombre de Archivo:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Limpiar selección previa antes de buscar" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Cambiar automáticamente la cola para las entradas coincidentes" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Crear una nueva lista de reproducción con las entradas coincidentes" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Buscar" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Reproductor:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Selecciona la fuente de la ventana principal del reproductor:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Lista de reproducción:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Selecciona la fuenta de la lista de reproducción:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Piel" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" +"Mostrar barra de títulos activa cuando cualquier ventana este al frente" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Fuentes" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Usar fuentes de mapa de bits (únicamente soporta ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Desplazar título de pista" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Desplaza el título de la pista en ambas direcciones" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analizador de Espectro" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Osciloscopio" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Espectrograma vocal / medidor VU" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Apagado" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normal" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Fuego" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Líneas verticales" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Líneas" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Barras" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Muy lento" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Lento" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Medio" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Rápido" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Muy rápido" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Puntos" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Línea" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Sólido" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Hielo" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Suave" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Colorear:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Estilo:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Caída:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Caída de pico:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Estilo del Analizador de Espectro:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Color del Espectrograma vocal:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "Estilo del medidor VU:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Tipo" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Tipo de visualización:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analizador" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Mostrar picos" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Visualización" @@ -4199,59 +4088,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Skin de winamp 2.x sin comprimir" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Buscar entradas en la lista de reproducción activa" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Buscar" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Selecciona entradas en la lista de reproducción llenando uno o más campos. " -"Los campos usan la sintaxis de expresiones regulares, mayúsculas o " -"minísculas indiscriminadas. Si no sabes como trabajan las expresiones " -"regulares, simplemente inserta una porción literal de lo que buscas." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Título:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Álbum:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Artista:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Nombre de Archivo:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Limpiar selección previa antes de buscar" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Cambiar automáticamente la cola para las entradas coincidentes" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Crear una nueva lista de reproducción con las entradas coincidentes" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Plugin Sndfile" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4736,19 +4577,32 @@ "por ejemplo, tone://2000;2005 to reproducir un tono de2000 Hz tone y un tono " "de 2005 Hz" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Más mensajes han sido ocultados.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Trabajando ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Información" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "%s no parece ser un folder válido." + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Removedor de Voz" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4902,14 +4756,41 @@ "\n" "Algo del código del plugin era de Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "Decodificador 2SF" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Coseno" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Agudo" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "Configuración XSF" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Tiempo de fundido predeterminado:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Modo de interpolación:" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "Listas de Reprod. XML Compartibles (XSPF)" + +#~ msgid "Sample rate" +#~ msgstr "Tasa de muestra" diff -Nru audacious-plugins-4.1/po/et.po audacious-plugins-4.3.1/po/et.po --- audacious-plugins-4.1/po/et.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/et.po 2023-04-29 20:17:32.000000000 +0000 @@ -4,15 +4,15 @@ # # Translators: # Ivar Smolin , 2007 -# Ivar Smolin , 2012,2017-2020 +# Ivar Smolin , 2012,2017-2020,2022 msgid "" msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" -"Language-Team: Estonian (http://www.transifex.com/audacious/audacious/" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Ivar Smolin , 2012,2017-2020,2022\n" +"Language-Team: Estonian (http://app.transifex.com/audacious/audacious/" "language/et/)\n" "Language: et\n" "MIME-Version: 1.0\n" @@ -29,7 +29,7 @@ msgstr "" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "" @@ -41,9 +41,11 @@ msgid "OPL Emulator:" msgstr "" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Sämplimissagedus:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -59,7 +61,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Muu" @@ -67,212 +69,6 @@ msgid "Repeat song in endless loop" msgstr "" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Äratus" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "" - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Plugin esituste alustamiseks kindlaksmääratud ajal.\n" -"\n" -"Esialgse koodi autorid on Adam Feakin ja Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "See on sinu äratus." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "" - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Meeldetuletaja" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Esmaspäev" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Teisipäev" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Kolmapäev" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Neljapäev" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Reede" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Laupäev" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Pühapäev" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Aeg" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Vaikimisi äratuskell:" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr " " - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Vaigistamine pärast:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "tundi" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minutit" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Vali päevad, mil äratus tööle hakkab" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Päev" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Vaikimisi" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Päevad" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Sumbumine" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "sekundit" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Valjus" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Alguses" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Lõpuks" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Praegune" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Täiendav käsk" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "lubatud" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Esitusnimekiri (valikuline)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Valikud" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Mida need valikud tähendavad?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Abi" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Albumi graafika" @@ -402,87 +198,83 @@ msgid "Synthesizer" msgstr "Süntesaator" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Sämplimissagedus:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - SoundFont faili valimine" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "Tü_hista" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Ava" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Faili nimi" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Suurus (baitides)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Nimi:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " MIDI-andmed " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Vorming:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Kestus (msek):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "muutuv" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI kommentaarid ja laulusõnad " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* selles MIDI-failis pole kommentaare *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* selles MIDI-failis pole laulusõnu *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "Sul_ge" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (vigane UTF-8)" @@ -531,7 +323,7 @@ msgid "Concave Rectangle" msgstr "Nõgus ristkülik" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Puudub" @@ -567,150 +359,150 @@ msgid "Triggers OSD when playback is unpaused." msgstr "OSD käivitamine pausitud loo jätkamisel." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Paigutus" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Suhteline nihe X-teljel:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Suhteline nihe Y-teljel:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Suurim OSD laius:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Mitme monitori valikud" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "OSD kuvatakse:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "kõigil monitoridel" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "%i. monitoril" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Ajastus (millisekundites)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Kuvamine:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Sujuv näitamine:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Sujuv peitmine:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Kirjatüübid" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Kirjatüüp %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Vari" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Renderdamise laad" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Värvused" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Värvus %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Päästik on lubatud" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Sündmus" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " "manager otherwise the OSD won't work properly" msgstr "" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Läbipaistvus" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Võltsitud läbipaistvus" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Tegelik läbipaistvus (vajab X Composite laiendust)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audaciouse OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Asukoht" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animatsioon" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Tekst" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Kaunistused" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Päästikud" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Muu" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Proovi" @@ -726,11 +518,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Audaciouse esitusnimekirjad (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Värv" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "" @@ -742,6 +550,10 @@ msgid "Presets:" msgstr "Valmisseadistused:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Vaikimisi" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "" @@ -754,7 +566,7 @@ msgid "Cut frequency:" msgstr "" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Spektrianalüüs" @@ -849,50 +661,50 @@ msgid "Audio CD" msgstr "Audio-CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Tõrge CD-seadme %s avamisel." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Seade on tühi." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Plaadi liik pole toetatud." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Tõrge CDDB-ühenduse loomisel." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Tõrge CDDB-serverisse päringu tegemisel" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Tõrge CDDB-serverisse päringu tegemisel: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Tõrge CDDB-andmete lugemisel: %s" @@ -957,6 +769,13 @@ msgid "Default song length:" msgstr "Loo vaikimisi kestus:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "sekundit" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "" @@ -985,7 +804,7 @@ msgid "CoreAudio output" msgstr "CoreAudio väljund" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -997,11 +816,11 @@ "Copyright 2010 John Lindgren" msgstr "" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" @@ -1094,20 +913,20 @@ msgid "Delete" msgstr "Kustuta" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Loobu" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Kustuta valitud failid" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Kustutamise meetod" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Prügikasti tõstmine kohese kustutamise asemel" @@ -1129,7 +948,7 @@ msgstr "Viivitus:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1145,11 +964,11 @@ msgid "Echo" msgstr "Kaja" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "FFmpeg Plugin" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1253,89 +1072,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1447,7 +1266,7 @@ msgid "Quality (0-1):" msgstr "Kvaliteet (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Üldine" @@ -1456,11 +1275,11 @@ msgid "FLAC Decoder" msgstr "FLAC-dekooder" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "kadudeta" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1492,7 +1311,7 @@ msgid "Invalid open mode" msgstr "" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1512,116 +1331,134 @@ "\n" "Litsents: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL spektrianalüüs" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "Kirje number" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Pealkiri" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Esitaja" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Aasta" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Album" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Albumi esitaja" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Lugu" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Žanr" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "Asukoht järjekorras" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Kestus" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "Faili rada" - -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Kohandatud pealkiri" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Bitikiirus" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Kommentaar" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "Avaldaja" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "Kataloogi number" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Saadaolevad veerud" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Kuvatavad veerud" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Otsinguvahend" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Doki vasakule" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Doki paremale" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Doki üles" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Doki alla" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Keela" @@ -1661,8 +1498,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Esita" @@ -1839,8 +1676,8 @@ msgid "Remove _Unavailable Files" msgstr "Ee_malda kättesaamatud failid" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Uus" @@ -1850,7 +1687,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "Ee_malda" @@ -1981,7 +1818,7 @@ msgstr "Val_i kõik" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Muuda nime..." @@ -2009,208 +1846,213 @@ msgid "Show column headers" msgstr "Veergude päised on nähtaval" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Kerimine loo vahetumisel" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "GTK liides" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Puhverdamine ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Esita" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Pausi" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Otsi teegist" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Failide avamine" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Failide lisamine" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Eelmine" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Seiska" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Järgmine" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Salvesta voogu" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Korduv" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Segatud" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d kanal" msgstr[1] "%d kanalit" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "%d kbit/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Ühe loo režiim." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Esitusnimekirja režiim." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Seiskamine pärast loo lõppu." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Eelmine rada" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Pausimine/pausi lõpetamine" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Järgmine rada" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Heli tummaks" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Heli valjemaks" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Heli vaiksemaks" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Failile hüppamine" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Esitamisakende sisse-/väljalülitamine" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "OSD sisse-/väljalülitamine" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Korduse sisse-/väljalülitamine" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Segatud režiimi sisse-/väljalülitamine" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Loo lõpus seiskamise sisse-/väljalülitamine" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Esitamisakende esiletõstmine" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" "Do you want to continue?" msgstr "" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Hiirenuppude sidumine" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2218,23 +2060,23 @@ "Vajuta tekstiväljal soovitud klahvikombinatsiooni.\n" "Samamoodi saab siduda ka hiirenuppe." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Kiirklahvid:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Tegevus:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Kiirklahv:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Lisa" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "" @@ -2318,16 +2160,16 @@ "%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." msgstr "" -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s sätted" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Moodulite rajad:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2338,25 +2180,25 @@ "radadelt.\n" "Pärast uute radade lisamist vajuta uute pluginate otsimiseks Enterit." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Saadaolevad pluginad:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Lubatud" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Lubatud pluginad:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Sätted" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2400,101 +2242,105 @@ msgid "Wait before reconnecting:" msgstr "Enne taasühendumist oodatakse" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Viga" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "M3U-esitusnimekirjad" @@ -2647,7 +2493,7 @@ msgstr "Need sätted rakendatakse Audaciouse taaskäivitamisel." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Seiskamine selle loo lõppedes" @@ -2656,41 +2502,17 @@ msgid "Moonstone" msgstr "" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Praegu esitamisel" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Albumi esitaja" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Kirjeid" @@ -2706,7 +2528,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Kasutatakse vigadeta pikkusearvutust (aeglane)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Ruumiline heli" @@ -2790,26 +2612,26 @@ msgid "OpenMPT (Module Player)" msgstr "" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "" @@ -2821,11 +2643,21 @@ msgid "Windowed sinc" msgstr "" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4 väljund" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "OSS3 väljund" @@ -2867,18 +2699,35 @@ "Soovin tänada inimesi #audacious kanalil, eriti Tony Vrooni ja John " "Lindgreni ja loomulikult eelmise OSS-plugina autoreid." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Esitamine" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Esitusnimekirja haldur" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Eemalda" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "_Muuda nime" @@ -2894,7 +2743,7 @@ msgid "OpenPSF Configuration" msgstr "" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Failist pärit pikkust eiratakse" @@ -2955,11 +2804,11 @@ "License: GPLv2+" msgstr "" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "" -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -2995,14 +2844,18 @@ msgid "Audio Settings ..." msgstr "Audiosätted ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Qt liides" @@ -3013,23 +2866,23 @@ #: src/qtui/settings.cc:58 msgid "Always" -msgstr "" +msgstr "Alati" #: src/qtui/settings.cc:59 msgid "Auto-hide" -msgstr "" +msgstr "Automaatpeitmine" #: src/qtui/settings.cc:60 msgid "Never" -msgstr "" +msgstr "Ei näidata" #: src/qtui/settings.cc:64 msgid "Show playlist tabs:" -msgstr "" +msgstr "Esitusnimekirjade kaartide näitamine:" #: src/qtui/settings.cc:78 msgid "Use bold font for column headers" -msgstr "" +msgstr "Rasvase kirja kasutamine tulpade päises" #: src/resample/resample.cc:43 msgid "Sample Rate Converter" @@ -3202,30 +3055,30 @@ msgid "Library" msgstr "Teek" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d lugu" msgstr[1] "%d lugu" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "sellest žanrist" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "" @@ -3233,7 +3086,7 @@ msgid "Monitor library for changes" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3241,37 +3094,37 @@ "Oma audiokogu importimiseks Audaciousesse vali kataloog ja vajuta " "värskendamise ikoonile." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Palun oota..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Kataloogi valimine" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Otsing audiokogust" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "" msgstr[1] "" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d tulemus" msgstr[1] "%d tulemust" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "Loo _esitusnimekiri" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Lisa esitusnimekirja" @@ -3375,108 +3228,108 @@ msgid "Repeat point B set." msgstr "Korduspunkt B on määratud." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Eelmoonutus" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Audaciouse ekvalaiser" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Valjus: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Valikute menüü" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Faili infokast" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Topeltsuurus" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Visualiseerimine" @@ -3500,10 +3353,6 @@ msgid "Open URL ..." msgstr "Ava URL ..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Esitamine" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Esitusnimekiri" @@ -3518,7 +3367,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Teenused" @@ -3535,7 +3384,7 @@ msgstr "Välju" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Loo andmed ..." @@ -3555,7 +3404,7 @@ msgid "Clear A-B Repeat" msgstr "Puhasta A-B kordus" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "" @@ -3648,20 +3497,20 @@ msgstr "" #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Pealkirja järgi" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "" @@ -3689,113 +3538,113 @@ msgid "Remove Selected" msgstr "Eemalda valik" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Otsi ja vali" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Vaheta valitud ja valimata" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Tühista valik" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Vali kõik" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Loo numbri järgi" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Esitaja järgi" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Albumi järgi" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Albumi esitaja järgi" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Žanri järgi" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Kestuse järgi" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Sega nimekiri" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Pööra järjestus ümber" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Valiku sortimine" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Nimekirja sortimine" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Ava faili sisaldav kaust" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Lõika" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Kopeeri" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Aseta" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d/%d-st)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Audaciouse esitusnimekirja redaktor" @@ -3811,167 +3660,218 @@ msgid "Add Folder ..." msgstr "" -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Otsimine aktiivsest esitusnimekirjast" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Esitusnimekirjast ühe või enama välja järgi otsimine. Otsinguväljadel " +"kasutatakse tõstutundetut regulaaravaldise süntaksit. Kui sa pole " +"regulaaravaldistega tuttav, siis sisesta lihtsalt otsitav sõnaosa." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Pealkiri:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Album:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Esitaja:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Failinimi:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Enne otsimist nullitakse eelmine valik" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Otsingule vastavatest kirjetest luuakse uus esitusnimekiri" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Esitaja:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Esitaja põhiakna kirjatüübi valimine:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Esitusnimekiri:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Esitusnimekirja kirjatüübi valimine:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Rüü" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Kirjatüübid" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Kasutatakse rasterkirja (toetab ainult ASCII kooditabelit)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Loo nime keritakse" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Loo nime keritakse mõlemas suunas" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analüsaator" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Skoop" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Väljas" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Tavaline" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Tuli" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Püstjooned" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Jooned" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Tulbad" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Väga aeglane" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Aeglane" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Keskmine" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Kiire" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Väga kiire" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Punktid" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Joon" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Ühevärviline" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Jää" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Pehme" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Värvimine:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Laad:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Langemine:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Tippude langemine:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Skoobi laad:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Liik" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Visualiseerimise liik:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analüsaator" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Tippude näitamine" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Visualiseerimine" @@ -3983,58 +3883,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Arhiveerimata Winamp 2.x rüü" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Otsimine aktiivsest esitusnimekirjast" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Esitusnimekirjast ühe või enama välja järgi otsimine. Otsinguväljadel " -"kasutatakse tõstutundetut regulaaravaldise süntaksit. Kui sa pole " -"regulaaravaldistega tuttav, siis sisesta lihtsalt otsitav sõnaosa." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Pealkiri:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Album:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Esitaja:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Failinimi:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Enne otsimist nullitakse eelmine valik" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Otsingule vastavatest kirjetest luuakse uus esitusnimekiri" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4338,7 +4191,7 @@ #: src/streamtuner/ihr-model.cc:162 msgid "Description" -msgstr "" +msgstr "Kirjeldus" #: src/streamtuner/shoutcast-model.cc:128 msgid "Listeners" @@ -4478,19 +4331,32 @@ "e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" msgstr "" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Ülejäänud sõnumid peidetakse.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Töötamine ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Teave" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Hääle eemaldamine" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4627,14 +4493,38 @@ "\n" "Osa plugina koodi on kirjutanud Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2SF-dekooder" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "XSF-seadistus" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "Jagatavad XML-esitusnimekirjad (XSPF)" diff -Nru audacious-plugins-4.1/po/eu.po audacious-plugins-4.3.1/po/eu.po --- audacious-plugins-4.1/po/eu.po 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/po/eu.po 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,4443 @@ +# Basque translation for Audacious Plugins +# Copyright (C) Audacious translators +# This file is distributed under the same license as the Audacious Plugins package. +# +# Translators: +# asier fernandez iribar , 2013 +# Iñaki Larrañaga Murgoitio , 2009 +# Muitze Zulaika , 2021 +# Muitze Zulaika , 2021 +# Osoitz , 2012 +# Oihane C, 2021 +msgid "" +msgstr "" +"Project-Id-Version: Audacious Plugins\n" +"Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Oihane C, 2021\n" +"Language-Team: Basque (http://www.transifex.com/audacious/audacious/language/" +"eu/)\n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/aac/aac.cc:19 +msgid "AAC (Raw) Decoder" +msgstr "AAC Deskodetzailea" + +#: src/adplug/adplug-xmms.cc:70 +msgid "AdPlug (AdLib Player)" +msgstr "" + +#: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 +msgid "sequenced" +msgstr "sekuentziatua" + +#: src/adplug/adplug-xmms.cc:349 src/sid/xs_config.cc:61 +msgid "Output" +msgstr "Irteera" + +#: src/adplug/adplug-xmms.cc:350 +msgid "OPL Emulator:" +msgstr "OPL Emuladorea:" + +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "lagin-tasa:" + +#: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 +#: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 +#: src/modplug/plugin_main.cc:77 src/resample/resample.cc:201 +#: src/resample/resample.cc:207 src/resample/resample.cc:211 +#: src/resample/resample.cc:215 src/resample/resample.cc:219 +#: src/resample/resample.cc:223 src/resample/resample.cc:227 +#: src/resample/resample.cc:231 src/resample/resample.cc:235 +#: src/resample/resample.cc:239 src/resample/resample.cc:243 +#: src/sid/xs_config.cc:67 src/soxr/sox-resampler.cc:205 +msgid "Hz" +msgstr "Hz" + +#: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 +#: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 +msgid "Miscellaneous" +msgstr "Hainbat" + +#: src/adplug/adplug-xmms.cc:356 +msgid "Repeat song in endless loop" +msgstr "Abestia amaierarik gabeko begizta batean errepikatzea" + +#: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 +msgid "Album Art" +msgstr "Diskoaren azala" + +#: src/alsa/alsa.h:64 +msgid "ALSA Output" +msgstr "ALSA Irteera" + +#: src/alsa/config.cc:28 +msgid "" +"ALSA Output Plugin for Audacious\n" +"Copyright 2009-2012 John Lindgren\n" +"\n" +"My thanks to William Pitcock, author of the ALSA Output Plugin NG, whose " +"code served as a reference when the ALSA manual was not enough." +msgstr "" + +#: src/alsa/config.cc:61 +msgid "(no description)" +msgstr "(deskribapenik ez)" + +#: src/alsa/config.cc:166 +msgid "Default PCM device" +msgstr "Lehenetsitako PCM gailua" + +#: src/alsa/config.cc:188 +msgid "Default mixer device" +msgstr "Lehenetsitako nahaslea" + +#: src/alsa/config.cc:296 +msgid "PCM device:" +msgstr "PCM gailua:" + +#: src/alsa/config.cc:299 +msgid "Mixer device:" +msgstr "Nahastailearen gailua:" + +#: src/alsa/config.cc:302 +msgid "Mixer element:" +msgstr "Nahaslea:" + +#: src/amidiplug/amidi-plug.cc:42 +msgid "AMIDI-Plug (MIDI Player)" +msgstr "" + +#: src/amidiplug/amidi-plug.cc:445 +msgid "" +"AMIDI-Plug\n" +"modular MIDI music player\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"written by Giacomo Lozito\n" +"\n" +"\n" +"special thanks to...\n" +"\n" +"Clemens Ladisch and Jaroslav Kysela\n" +"for their cool programs aplaymidi and amixer; those\n" +"were really useful, along with alsa-lib docs, in order\n" +"to learn more about the ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"for the nice midi keyboard logo\n" +"\n" +"Tony Vroon\n" +"for the good help with alpha testing" +msgstr "" + +#: src/amidiplug/i_configure.cc:94 +msgid "Override default gain:" +msgstr "" + +#: src/amidiplug/i_configure.cc:102 +msgid "Override default polyphony:" +msgstr "" + +#: src/amidiplug/i_configure.cc:110 +msgid "Override default reverb:" +msgstr "" + +#: src/amidiplug/i_configure.cc:112 src/amidiplug/i_configure.cc:120 +msgid "On" +msgstr "" + +#: src/amidiplug/i_configure.cc:118 +msgid "Override default chorus:" +msgstr "" + +#: src/amidiplug/i_configure.cc:128 src/console/plugin.cc:29 +msgid "Playback" +msgstr "" + +#: src/amidiplug/i_configure.cc:129 +msgid "Transpose:" +msgstr "Irauli: " + +#: src/amidiplug/i_configure.cc:131 src/speedpitch/speed-pitch.cc:257 +msgid "semitones" +msgstr "tonuerdiak" + +#: src/amidiplug/i_configure.cc:132 +msgid "Drum shift:" +msgstr "" + +#: src/amidiplug/i_configure.cc:134 +msgid "note numbers" +msgstr "nota zenbakiak" + +#: src/amidiplug/i_configure.cc:135 +msgid "Skip leading silence" +msgstr "" + +#: src/amidiplug/i_configure.cc:137 +msgid "Skip trailing silence" +msgstr "" + +#: src/amidiplug/i_configure.cc:141 +msgid "SoundFont" +msgstr "" + +#: src/amidiplug/i_configure.cc:148 +msgid "Synthesizer" +msgstr "Sintetizadorea" + +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 +msgid "AMIDI-Plug - select SoundFont file" +msgstr "AMIDI-Plug - hautatu SoundFont fitxategia" + +#: src/amidiplug/i_configure-fluidsynth.cc:61 +msgid "_Cancel" +msgstr "_Utzi" + +#: src/amidiplug/i_configure-fluidsynth.cc:62 +msgid "_Open" +msgstr "_Ireki" + +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 +msgid "File name" +msgstr "Fitxategi izena" + +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 +msgid "Size (bytes)" +msgstr "Tamaina (byte)" + +#: src/amidiplug/i_fileinfo.cc:184 +msgid "Name:" +msgstr "Izena:" + +#: src/amidiplug/i_fileinfo.cc:202 +msgid " MIDI Info " +msgstr " MIDI informazioa " + +#: src/amidiplug/i_fileinfo.cc:216 +msgid "Format:" +msgstr "Formatua:" + +#: src/amidiplug/i_fileinfo.cc:219 +msgid "Length (msec):" +msgstr "Luzera (mseg.):" + +#: src/amidiplug/i_fileinfo.cc:222 +msgid "No. of Tracks:" +msgstr "Pista kopurua:" + +#: src/amidiplug/i_fileinfo.cc:228 +msgid "variable" +msgstr "aldagaia" + +#: src/amidiplug/i_fileinfo.cc:230 +msgid "BPM:" +msgstr "BPM:" + +#: src/amidiplug/i_fileinfo.cc:238 +msgid "BPM (wavg):" +msgstr "BPM (wavg):" + +#: src/amidiplug/i_fileinfo.cc:241 +msgid "Time Div:" +msgstr "Denbora zat:" + +#: src/amidiplug/i_fileinfo.cc:252 +msgid " MIDI Comments and Lyrics " +msgstr " MIDI iruzkinak eta letrak " + +#: src/amidiplug/i_fileinfo.cc:299 +msgid "* no comments available in this MIDI file *" +msgstr "* iruzkinik ez dago erabilgarri MIDI fitxategi honetan *" + +#: src/amidiplug/i_fileinfo.cc:311 +msgid "* no lyrics available in this MIDI file *" +msgstr "* letrarik ez dago erabilgarri MIDI fitxategi honetan *" + +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 +msgid "_Close" +msgstr "_Itxi" + +#: src/amidiplug/i_fileinfo.cc:346 +msgid " (invalid UTF-8)" +msgstr " (UTF-8 baliogabea)" + +#: src/ampache/ampache.cc:33 +msgid "Ampache Browser" +msgstr "Ampache nabigatzailea" + +#: src/ampache/ampache.cc:46 +msgid "" +"Ampache Browser for Audacious\n" +"http://ampache-browser.org/\n" +"\n" +"Copyright (C) Róbert Čerňanský and John Lindgren\n" +"License: GNU GPLv3" +msgstr "" + +#: src/aosd/aosd.cc:31 +msgid "" +"Audacious OSD\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"\n" +"Written by Giacomo Lozito \n" +"\n" +"Based in part on Evan Martin's Ghosd library:\n" +"http://neugierig.org/software/ghosd/" +msgstr "" + +#: src/aosd/aosd.h:37 +msgid "AOSD (On-Screen Display)" +msgstr "" + +#: src/aosd/aosd_style.cc:54 +msgid "Rectangle" +msgstr "Laukizuzena" + +#: src/aosd/aosd_style.cc:59 +msgid "Rounded Rectangle" +msgstr "Laukizuzen biribildua" + +#: src/aosd/aosd_style.cc:64 +msgid "Concave Rectangle" +msgstr "Laukizuzen ahurra" + +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 +msgid "None" +msgstr "Bat ere ez" + +#: src/aosd/aosd_trigger.cc:49 +msgid "Playback Start" +msgstr "Erreprodukzioa hasi" + +#: src/aosd/aosd_trigger.cc:50 +msgid "Triggers OSD when a playlist entry is played." +msgstr "" +"OSDa abiarazten du erreprodukzio-zerrendako sarrera bat erreproduzitzean." + +#: src/aosd/aosd_trigger.cc:55 +msgid "Title Change" +msgstr "Titulu aldaketa" + +#: src/aosd/aosd_trigger.cc:56 +msgid "Triggers OSD when the song title changes (for internet streams)." +msgstr "" + +#: src/aosd/aosd_trigger.cc:61 +msgid "Pause On" +msgstr "Pausatuta" + +#: src/aosd/aosd_trigger.cc:62 +msgid "Triggers OSD when playback is paused." +msgstr "OSDa abiarazten du erreprodukzioa pausatzean." + +#: src/aosd/aosd_trigger.cc:67 +msgid "Pause Off" +msgstr "Jarraitu" + +#: src/aosd/aosd_trigger.cc:68 +msgid "Triggers OSD when playback is unpaused." +msgstr "OSDa abiarazten du erreprodukzioa jarraitzean." + +#: src/aosd/aosd_ui.cc:204 +msgid "Placement" +msgstr "Kokalekua" + +#: src/aosd/aosd_ui.cc:241 +msgid "Relative X offset:" +msgstr "X desplazamendu erlatiboa:" + +#: src/aosd/aosd_ui.cc:245 +msgid "Relative Y offset:" +msgstr "Y desplazamendu erlatiboa:" + +#: src/aosd/aosd_ui.cc:249 +msgid "Max OSD width:" +msgstr "OSDaren gehi. zabalera:" + +#: src/aosd/aosd_ui.cc:281 +msgid "Multi-Monitor options" +msgstr "Pantaila anitzen aukerak" + +#: src/aosd/aosd_ui.cc:285 +msgid "Display OSD using:" +msgstr "Bistaratu OSDa hau erabiliz:" + +#: src/aosd/aosd_ui.cc:287 +msgid "all monitors" +msgstr "pantaila guztiak" + +#: src/aosd/aosd_ui.cc:290 +#, c-format +msgid "monitor %i" +msgstr "%i. pantaila" + +#: src/aosd/aosd_ui.cc:342 +msgid "Timing (ms)" +msgstr "Tenporizadorea (ms)" + +#: src/aosd/aosd_ui.cc:347 +msgid "Display:" +msgstr "Bistaratu:" + +#: src/aosd/aosd_ui.cc:352 +msgid "Fade in:" +msgstr "Pixkanaka agertu:" + +#: src/aosd/aosd_ui.cc:357 +msgid "Fade out:" +msgstr "Iraungitu:" + +#: src/aosd/aosd_ui.cc:442 +msgid "Fonts" +msgstr "Letra-tipoak" + +#: src/aosd/aosd_ui.cc:449 +#, c-format +msgid "Font %i:" +msgstr "%i letra-tipoa:" + +#: src/aosd/aosd_ui.cc:466 +msgid "Shadow" +msgstr "Itzala" + +#: src/aosd/aosd_ui.cc:589 +msgid "Render Style" +msgstr "Errendatze estiloa" + +#: src/aosd/aosd_ui.cc:605 +msgid "Colors" +msgstr "Koloreak" + +#: src/aosd/aosd_ui.cc:616 +#, c-format +msgid "Color %i:" +msgstr "%i kolorea:" + +#: src/aosd/aosd_ui.cc:714 +msgid "Enable trigger" +msgstr "Gaitu abiarazlea" + +#: src/aosd/aosd_ui.cc:741 +msgid "Event" +msgstr "Gertaera" + +#: src/aosd/aosd_ui.cc:768 +msgid "Composite manager detected" +msgstr "Kudeatzaile konposatua detektatuta" + +#: src/aosd/aosd_ui.cc:775 +msgid "" +"Composite manager not detected;\n" +"unless you know that you have one running, please activate a composite " +"manager otherwise the OSD won't work properly" +msgstr "" +"Konposaketako kudeatzailea ez da detektatu.\n" +"Bat exekutatzen dagoela jakin ezean, aktibatu konposaketako kudeatzalea " +"bestela OSDak ez du ongi funtzionatuko" + +#: src/aosd/aosd_ui.cc:783 +msgid "Composite manager not required for fake transparency" +msgstr "Gardentasun faltsua egiteko ez da konposaketako kudeaketak behar" + +#: src/aosd/aosd_ui.cc:820 +msgid "Transparency" +msgstr "Gardentasuna" + +#: src/aosd/aosd_ui.cc:826 +msgid "Fake transparency" +msgstr "Gardentasun faltsua" + +#: src/aosd/aosd_ui.cc:828 +msgid "Real transparency (requires X Composite Ext.)" +msgstr "Egitako gardentasuna (Xen konposaketa hed. behar da)" + +#: src/aosd/aosd_ui.cc:875 +msgid "Composite extension not loaded" +msgstr "Konposaketako hedapena ez da kargatu" + +#: src/aosd/aosd_ui.cc:892 +#, c-format +msgid "Audacious OSD" +msgstr "Audacious OSDa" + +#: src/aosd/aosd_ui.cc:955 +msgid "Position" +msgstr "Posizioa" + +#: src/aosd/aosd_ui.cc:960 +msgid "Animation" +msgstr "Animazioa" + +#: src/aosd/aosd_ui.cc:965 +msgid "Text" +msgstr "Testua" + +#: src/aosd/aosd_ui.cc:970 +msgid "Decoration" +msgstr "Dekorazioa" + +#: src/aosd/aosd_ui.cc:975 +msgid "Trigger" +msgstr "Abiarazlea" + +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 +msgid "Misc" +msgstr "Hainbat" + +#: src/aosd/aosd_ui.cc:989 +msgid "Test" +msgstr "Proba" + +#: src/asx3/asx3.cc:35 +msgid "ASXv3 Playlists" +msgstr "ASXv3 Erreprodukzio-zerrenda" + +#: src/asx/asx.cc:33 +msgid "ASXv1/ASXv2 Playlists" +msgstr "ASXv1/ASXv2 Erreprodukzio-zerrenda" + +#: src/audpl/audpl.cc:33 +msgid "Audacious Playlists (audpl)" +msgstr "Audacious erreprodukzio-zerrenda (audpl)" + +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 +msgid "Color" +msgstr "Kolore" + +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 +msgid "Blur Scope" +msgstr "" + +#: src/bs2b/plugin.cc:38 +msgid "Bauer Stereophonic-to-Binaural (BS2B)" +msgstr "" + +#: src/bs2b/plugin.cc:129 +msgid "Presets:" +msgstr "Aurrezarpenak" + +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Lehenetsia" + +#: src/bs2b/plugin.cc:136 +msgid "Feed level:" +msgstr "Elikadura-maila:" + +#: src/bs2b/plugin.cc:138 +msgid "x1/10 dB" +msgstr "x1/10 dB" + +#: src/bs2b/plugin.cc:139 +msgid "Cut frequency:" +msgstr "Moztu maiztasuna:" + +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 +msgid "Spectrum Analyzer" +msgstr "Espektro Analizatzailea" + +#: src/cdaudio/cdaudio-ng.cc:71 +msgid "Audio CD Plugin" +msgstr "Audio CD plugina" + +#: src/cdaudio/cdaudio-ng.cc:118 +msgid "" +"Copyright (C) 2007-2012 Calin Crisan and others.\n" +"\n" +"Many thanks to libcdio developers \n" +"and to libcddb developers .\n" +"\n" +"Also thank you to Tony Vroon for mentoring and guiding me.\n" +"\n" +"This was a Google Summer of Code 2007 project." +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:134 +msgid "Device" +msgstr "Gailua" + +#: src/cdaudio/cdaudio-ng.cc:135 +msgid "Read speed:" +msgstr "Irakurketa-abiadura:" + +#: src/cdaudio/cdaudio-ng.cc:138 +msgid "Override device:" +msgstr "Gainidatzi gailua:" + +#: src/cdaudio/cdaudio-ng.cc:140 +msgid "Metadata" +msgstr "Metadatuak" + +#: src/cdaudio/cdaudio-ng.cc:141 +msgid "Use CD-Text" +msgstr "Erabili CD-Text" + +#: src/cdaudio/cdaudio-ng.cc:143 +msgid "Use CDDB" +msgstr "Erabili CDDB" + +#: src/cdaudio/cdaudio-ng.cc:145 +msgid "Use HTTP instead of CDDBP" +msgstr "HTTP erabili CDDBP ordez" + +#: src/cdaudio/cdaudio-ng.cc:148 +msgid "Server:" +msgstr "Zerbitzaria:" + +#: src/cdaudio/cdaudio-ng.cc:152 +msgid "Path:" +msgstr "Bidea:" + +#: src/cdaudio/cdaudio-ng.cc:156 +msgid "Port:" +msgstr "Portua:" + +#: src/cdaudio/cdaudio-ng.cc:220 +msgid "Failed to initialize cdio subsystem." +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:250 +#, c-format +msgid "Invalid URI %s." +msgstr "URI baliogabea: %s" + +#: src/cdaudio/cdaudio-ng.cc:252 +#, c-format +msgid "Track %d not found." +msgstr "%d pista ez da aurkitu." + +#: src/cdaudio/cdaudio-ng.cc:254 +#, c-format +msgid "Track %d is a data track." +msgstr "%d pista datu-pista bat da." + +#: src/cdaudio/cdaudio-ng.cc:329 +msgid "Error reading audio CD." +msgstr "Errorea audio CDa irakurtzean." + +#: src/cdaudio/cdaudio-ng.cc:398 +msgid "Audio CD" +msgstr "Audio CDa" + +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 +#, c-format +msgid "Failed to open CD device %s." +msgstr "Errorea %s CDa irekitzean." + +#: src/cdaudio/cdaudio-ng.cc:446 +msgid "No audio capable CD drive found." +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:469 +msgid "Drive is empty." +msgstr "Unitatea hutsik dago" + +#: src/cdaudio/cdaudio-ng.cc:471 +msgid "Unsupported disk type." +msgstr "Onartu gabeko disko mota." + +#: src/cdaudio/cdaudio-ng.cc:495 +msgid "Failed to finish initializing opened CD drive." +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:508 +msgid "Failed to retrieve first/last track number." +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:529 +#, c-format +msgid "Cannot read start/end LSN for track %d." +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:611 +msgid "Failed to create the CDDB connection." +msgstr "CDDB konexioa ezin izan da sortu" + +#: src/cdaudio/cdaudio-ng.cc:677 +msgid "Failed to query the CDDB server" +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:679 +#, c-format +msgid "Failed to query the CDDB server: %s" +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:703 +#, c-format +msgid "Failed to read the CDDB info: %s" +msgstr "CDDB informazioa ezin izan da irakurri: %s" + +#: src/cd-menu-items/cd-menu-items.cc:33 +msgid "Audio CD Menu Items" +msgstr "" + +#: src/cd-menu-items/cd-menu-items.cc:45 +msgid "Pla_y CD" +msgstr "Jo CDa" + +#: src/cd-menu-items/cd-menu-items.cc:45 +msgid "_Add CD" +msgstr "_Gehitu CDa" + +#: src/compressor/compressor.cc:45 +msgid "Compression" +msgstr "Konpresioa" + +#: src/compressor/compressor.cc:46 +msgid "Center volume:" +msgstr "Bolumen zentrala:" + +#: src/compressor/compressor.cc:49 +msgid "Dynamic range:" +msgstr "Bitarte dinamikoa:" + +#: src/compressor/compressor.cc:57 +msgid "" +"Dynamic Range Compression Plugin for Audacious\n" +"Copyright 2010-2014 John Lindgren" +msgstr "" + +#: src/compressor/compressor.cc:64 +msgid "Dynamic Range Compressor" +msgstr "" + +#: src/console/plugin.cc:15 +msgid "" +"Console music decoder engine based on Game_Music_Emu 0.5.2\n" +"Supported formats: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"\n" +"Audacious plugin by:\n" +"William Pitcock \n" +"Shay Green " +msgstr "" + +#: src/console/plugin.cc:30 +msgid "Bass:" +msgstr "Baxua:" + +#: src/console/plugin.cc:33 +msgid "Treble:" +msgstr "Altua:" + +#: src/console/plugin.cc:36 +msgid "Echo:" +msgstr "" + +#: src/console/plugin.cc:39 +msgid "Default song length:" +msgstr "Abestiaren luzera lehenetsia:" + +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "segundo" + +#: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 +msgid "Resampling" +msgstr "Birlagintzea" + +#: src/console/plugin.cc:43 +msgid "Enable audio resampling" +msgstr "Gaitu audioa berriro lagintzea" + +#: src/console/plugin.cc:49 +msgid "SPC" +msgstr "SPC" + +#: src/console/plugin.cc:50 +msgid "Ignore length from SPC tags" +msgstr "Ezikusi egin SPCko etiketetako luzerari" + +#: src/console/plugin.cc:52 +msgid "Increase reverb" +msgstr "Handiagotu reverb-a" + +#: src/console/plugin.h:26 +msgid "Game Console Music Decoder" +msgstr "Joko Kontsola Musika Deskodetzailea" + +#: src/coreaudio/coreaudio.cc:53 +msgid "CoreAudio output" +msgstr "" + +#: src/coreaudio/coreaudio.cc:155 +msgid "" +"CoreAudio Output Plugin for Audacious\n" +"Copyright 2014 William Pitcock\n" +"Copyright 2017,18 René J.V. Bertin\n" +" (original code and code adapted from\n" +" Apple examples, (C) Apple 2013)\n" +"\n" +"Based on SDL Output Plugin for Audacious\n" +"Copyright 2010 John Lindgren" +msgstr "" + +#: src/coreaudio/coreaudio.cc:171 +msgid "Use exclusive mode" +msgstr "Erabili modelo esklusiboa" + +#: src/coreaudio/coreaudio.cc:173 +msgid "Use bit perfect audio (adapt device sampling rate)" +msgstr "" + +#: src/crossfade/crossfade.cc:43 +msgid "" +"Crossfade Plugin for Audacious\n" +"Copyright 2010-2014 John Lindgren" +msgstr "" + +#: src/crossfade/crossfade.cc:47 +msgid "Crossfade" +msgstr "" + +#: src/crossfade/crossfade.cc:48 +msgid "On automatic song change" +msgstr "" + +#: src/crossfade/crossfade.cc:50 src/crossfade/crossfade.cc:56 +msgid "Overlap:" +msgstr "Teilakatzea:" + +#: src/crossfade/crossfade.cc:54 +msgid "On seek or manual song change" +msgstr "" + +#: src/crossfade/crossfade.cc:60 +msgid "Tip" +msgstr "" + +#: src/crossfade/crossfade.cc:61 +msgid "" +"For better crossfading, enable\n" +"the Silence Removal effect." +msgstr "" + +#: src/crossfade/crossfade.cc:71 +msgid "Crossfade" +msgstr "" + +#: src/crystalizer/crystalizer.cc:31 +msgid "Crystalizer" +msgstr "" + +#: src/crystalizer/crystalizer.cc:32 src/stereo_plugin/stereo.cc:45 +msgid "Intensity:" +msgstr "Intentsitatea:" + +#: src/crystalizer/crystalizer.cc:43 +msgid "Crystalizer" +msgstr "" + +#: src/cue/cue.cc:42 +msgid "Cue Sheet Plugin" +msgstr "" + +#: src/delete-files/delete-files.cc:53 src/delete-files/delete-files.cc:215 +#: src/delete-files/delete-files.cc:230 +msgid "Delete Files" +msgstr "Fitxategiak Ezabatu" + +#: src/delete-files/delete-files.cc:120 +msgid "No files are selected." +msgstr "Ez da fitxategirik hautatu." + +#: src/delete-files/delete-files.cc:125 +#, c-format +msgid "Do you want to move %s to the trash?" +msgstr "%s zakarrontzira eraman nahi duzu?" + +#: src/delete-files/delete-files.cc:126 +#, c-format +msgid "Do you want to permanently delete %s?" +msgstr "%s betiko ezabatu nahi duzu?" + +#: src/delete-files/delete-files.cc:133 +#, c-format +msgid "Do you want to move %d files to the trash?" +msgstr "%d zakarrontzira eraman nahi duzu?" + +#: src/delete-files/delete-files.cc:134 +#, c-format +msgid "Do you want to permanently delete %d files?" +msgstr "%d betiko ezabatu nahi duzu?" + +#: src/delete-files/delete-files.cc:146 +msgid "Move to trash" +msgstr "Zaborretara eraman" + +#: src/delete-files/delete-files.cc:146 +msgid "Delete" +msgstr "Ezabatu" + +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 +msgid "Cancel" +msgstr "Utzi" + +#: src/delete-files/delete-files.cc:267 +msgid "Delete Selected Files" +msgstr "Ezabatu hautatutako fitxategiak" + +#: src/delete-files/delete-files.cc:287 +msgid "Delete Method" +msgstr "Ezabatu metodoa" + +#: src/delete-files/delete-files.cc:288 +msgid "Move to trash instead of deleting immediately" +msgstr "Zakarrontzira eraman zuzenean ezabatu beharrean" + +#: src/echo_plugin/echo.cc:9 +msgid "" +"Echo Plugin\n" +"By Johan Levin, 1999\n" +"Surround echo by Carl van Schaik, 1999\n" +"Updated for Audacious by William Pitcock and John Lindgren, 2010-2014" +msgstr "" + +#: src/echo_plugin/echo.cc:21 +msgid "Echo" +msgstr "Ekoa" + +#: src/echo_plugin/echo.cc:22 src/modplug/plugin_main.cc:72 +#: src/modplug/plugin_main.cc:82 +msgid "Delay:" +msgstr "Atzerapena: " + +#: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 +msgid "ms" +msgstr "ms" + +#: src/echo_plugin/echo.cc:25 +msgid "Feedback:" +msgstr "Berelikatzea:" + +#: src/echo_plugin/echo.cc:28 src/modplug/plugin_main.cc:86 +msgid "Volume:" +msgstr "Bolumena:" + +#: src/echo_plugin/echo.cc:39 +msgid "Echo" +msgstr "" + +#: src/ffaudio/ffaudio-core.cc:50 +msgid "FFmpeg Plugin" +msgstr "FFmpeg plugina" + +#: src/ffaudio/ffaudio-core.cc:650 +msgid "" +"Multi-format audio decoding plugin for Audacious using\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"\n" +"Audacious plugin by:\n" +"William Pitcock \n" +"Matti Hämäläinen " +msgstr "" + +#: src/filewriter/filewriter.cc:48 +msgid "FileWriter Plugin" +msgstr "" + +#: src/filewriter/filewriter.cc:316 +#, c-format +msgid "" +"Error opening %s:\n" +"%s" +msgstr "" +"Errorea %s kargatzean:\n" +"%s" + +#: src/filewriter/filewriter.cc:358 +msgid "" +"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.\n" +"\n" +"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.\n" +"\n" +"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." +msgstr "" + +#: src/filewriter/filewriter.cc:385 +msgid "Output file format:" +msgstr "Irteerako fitxategi-formatua:" + +#: src/filewriter/filewriter.cc:389 +msgid "Save into original directory" +msgstr "Gorde jatorrizko direktorioan" + +#: src/filewriter/filewriter.cc:392 +msgid "Save into custom directory:" +msgstr "Gorde direktorio pertsonalizatuan:" + +#: src/filewriter/filewriter.cc:400 +msgid "Generate file name from:" +msgstr "Sortu fitxategiaren izena hemendik:" + +#: src/filewriter/filewriter.cc:401 +msgid "Original file name" +msgstr "Jatorrizko fitxategi-izena" + +#: src/filewriter/filewriter.cc:404 +msgid "Original file name (no suffix)" +msgstr "Jatorrizko fitxategi-izena (atzizki gabe)" + +#: src/filewriter/filewriter.cc:407 +msgid "Original file tag" +msgstr "Jatorrizko fitxategi-etiketa" + +#: src/filewriter/filewriter.cc:411 +msgid "Prepend track number to file name" +msgstr "" + +#: src/filewriter/filewriter.cc:417 src/filewriter/filewriter.cc:449 +msgid "Auto" +msgstr "Automatikoa" + +#: src/filewriter/filewriter.cc:418 +msgid "8000 Hz" +msgstr "8000 Hz" + +#: src/filewriter/filewriter.cc:419 +msgid "11025 Hz" +msgstr "11025 Hz" + +#: src/filewriter/filewriter.cc:420 +msgid "12000 Hz" +msgstr "12000 Hz" + +#: src/filewriter/filewriter.cc:421 +msgid "16000 Hz" +msgstr "16000 Hz" + +#: src/filewriter/filewriter.cc:422 +msgid "22050 Hz" +msgstr "22050 Hz" + +#: src/filewriter/filewriter.cc:423 +msgid "24000 Hz" +msgstr "24000 Hz" + +#: src/filewriter/filewriter.cc:424 +msgid "32000 Hz" +msgstr "32000 Hz" + +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 +msgid "44100 Hz" +msgstr "44100 Hz" + +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 +msgid "48000 Hz" +msgstr "48000 Hz" + +#: src/filewriter/filewriter.cc:430 +msgid "8 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:431 +msgid "16 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:432 +msgid "32 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:433 +msgid "40 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:434 +msgid "48 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:435 +msgid "56 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:436 +msgid "64 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:437 +msgid "80 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:438 +msgid "96 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:439 +msgid "112 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:440 +msgid "128 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:441 +msgid "160 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:442 +msgid "192 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:443 +msgid "224 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:444 +msgid "256 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:445 +msgid "320 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:450 +msgid "Joint Stereo" +msgstr "" + +#: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 +#: src/mpg123/mpg123.cc:259 +msgid "Stereo" +msgstr "Estereoa" + +#: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 +#: src/mpg123/mpg123.cc:260 +msgid "Mono" +msgstr "Monoa" + +#: src/filewriter/filewriter.cc:456 +msgid "VBR" +msgstr "" + +#: src/filewriter/filewriter.cc:457 +msgid "ABR" +msgstr "" + +#: src/filewriter/filewriter.cc:478 +msgid "Algorithm quality:" +msgstr "Algoritmoaren kalitatea:" + +#: src/filewriter/filewriter.cc:484 +msgid "Bitrate:" +msgstr "Bit-tasa:" + +#: src/filewriter/filewriter.cc:491 +msgid "Compression ratio:" +msgstr "Konpresio-tasa:" + +#: src/filewriter/filewriter.cc:498 +msgid "Audio mode:" +msgstr "Audio modua:" + +#: src/filewriter/filewriter.cc:501 +msgid "Enforce strict ISO compliance" +msgstr "Derrigortu ISOa betetzen duela" + +#: src/filewriter/filewriter.cc:503 +msgid "Error protection" +msgstr "Erroreen aurkako babesa" + +#: src/filewriter/filewriter.cc:508 +msgid "Enable VBR/ABR" +msgstr "Gaitu VBR/ABR" + +#: src/filewriter/filewriter.cc:510 +msgid "Type:" +msgstr "Mota:" + +#: src/filewriter/filewriter.cc:514 +msgid "Minimum bitrate:" +msgstr "Gutxieneko bit-tasa:" + +#: src/filewriter/filewriter.cc:518 +msgid "Maximum bitrate:" +msgstr "Gehienezko bit-tasa:" + +#: src/filewriter/filewriter.cc:522 +msgid "Average bitrate:" +msgstr "Batez besteko bit-tasa:" + +#: src/filewriter/filewriter.cc:526 +msgid "VBR quality level:" +msgstr "VBR kalitate-maila:" + +#: src/filewriter/filewriter.cc:530 +msgid "Strictly enforce minimum bitrate" +msgstr "Derrigortu gutxieneko bit-tasa" + +#: src/filewriter/filewriter.cc:533 +msgid "Omit Xing VBR header" +msgstr "" + +#: src/filewriter/filewriter.cc:539 +msgid "Frame Headers" +msgstr "" + +#: src/filewriter/filewriter.cc:540 +msgid "Mark as copyright" +msgstr "Markatu copyright gisa" + +#: src/filewriter/filewriter.cc:542 +msgid "Mark as original" +msgstr "Markatu jatorrizko gisa" + +#: src/filewriter/filewriter.cc:544 +msgid "ID3 Tags" +msgstr "" + +#: src/filewriter/filewriter.cc:545 +msgid "Force addition of version 2 tag" +msgstr "Derrigortu v2 etiketa gehitzea" + +#: src/filewriter/filewriter.cc:547 +msgid "Only add v1 tag" +msgstr "Gehitu v1 etiketa soilik" + +#: src/filewriter/filewriter.cc:549 +msgid "Only add v2 tag" +msgstr "Gehitu v2 etiketa soilik" + +#: src/filewriter/filewriter.cc:554 +msgid "Quality" +msgstr "Kalitatea" + +#: src/filewriter/filewriter.cc:555 +msgid "VBR/ABR" +msgstr "VBR/ABR" + +#: src/filewriter/filewriter.cc:556 +msgid "Tags" +msgstr "Etiketak" + +#: src/filewriter/filewriter.cc:566 +msgid "Quality (0-1):" +msgstr "Kalitatea (0-1):" + +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 +#: src/skins/skins_cfg.cc:285 +msgid "General" +msgstr "Orokorra" + +#: src/flac/flacng.h:36 +msgid "FLAC Decoder" +msgstr "FLAC Deskodetzailea" + +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 +msgid "lossless" +msgstr "" + +#: src/flac/plugin.cc:214 +msgid "" +"Original code by\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" +msgstr "" + +#: src/gio/gio.cc:34 +msgid "" +"GIO Plugin for Audacious\n" +"Copyright 2009-2012 John Lindgren" +msgstr "" + +#: src/gio/gio.cc:42 +msgid "GIO Plugin" +msgstr "GIO plugina" + +#: src/gio/gio.cc:152 +msgid "Read-and-append mode not supported" +msgstr "" + +#: src/gio/gio.cc:165 +msgid "Invalid open mode" +msgstr "Irekitzeko modua ez da baliozkoa" + +#: src/glspectrum/gl-spectrum.cc:52 +msgid "" +"OpenGL Spectrum Analyzer for Audacious\n" +"Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" +"\n" +"Based on the XMMS plugin:\n" +"Copyright 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, and " +"4Front Technologies\n" +"\n" +"License: GPLv2+" +msgstr "" + +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 +msgid "OpenGL Spectrum Analyzer" +msgstr "OpenGL Espektro Analizatzailea" + +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "Sarrera zenbakia" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 +#: src/moonstone/playlist_selection.cc:62 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 +#: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 +msgid "Title" +msgstr "Titulua" + +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/qtui/playlist_model.cc:33 +msgid "Artist" +msgstr "Artista" + +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/qtui/playlist_model.cc:33 +msgid "Year" +msgstr "Urtea" + +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 +#: src/qtui/playlist_model.cc:34 +msgid "Album" +msgstr "Diskoa" + +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr "Albumeko artista" + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Track" +msgstr "Pista" + +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 +#: src/streamtuner/shoutcast-model.cc:125 +#: src/streamtuner/shoutcast-model.cc:236 +msgid "Genre" +msgstr "Generoa" + +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "Ilara Posizioa" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Length" +msgstr "Iraupena" + +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "Fitxategi bidea" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Fitxategi izena" + +#: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Izenburu Pertsonalizatua" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 +#: src/streamtuner/shoutcast-model.cc:134 +msgid "Bitrate" +msgstr "Bit-tasa:" + +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 +#: src/qtui/playlist_model.cc:36 +msgid "Comment" +msgstr "Iruzkina" + +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 +msgid "Available columns" +msgstr "Zutabe erabilgarriak" + +#: src/gtkui/columns.cc:348 +msgid "Displayed columns" +msgstr "Erakutsitako zutabeak" + +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 +msgid "Search Tool" +msgstr "Tresna bilatu" + +#: src/gtkui/layout.cc:170 +msgid "Dock at Left" +msgstr "" + +#: src/gtkui/layout.cc:170 +msgid "Dock at Right" +msgstr "" + +#: src/gtkui/layout.cc:171 +msgid "Dock at Top" +msgstr "" + +#: src/gtkui/layout.cc:171 +msgid "Dock at Bottom" +msgstr "" + +#: src/gtkui/layout.cc:171 +msgid "Undock" +msgstr "" + +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 +msgid "Disable" +msgstr "Desgaitu" + +#: src/gtkui/menus.cc:79 src/qtui/menus.cc:107 +#: src/statusicon-qt/statusicon.cc:112 src/statusicon/statusicon.cc:282 +msgid "_Open Files ..." +msgstr "Ireki fitxategiak" + +#: src/gtkui/menus.cc:80 src/qtui/menus.cc:111 +msgid "Open _URL ..." +msgstr "Ireki BKU ..." + +#: src/gtkui/menus.cc:81 src/qtui/menus.cc:113 +msgid "_Add Files ..." +msgstr "_Gehitu fitxategiak..." + +#: src/gtkui/menus.cc:82 src/qtui/menus.cc:118 +msgid "Add U_RL ..." +msgstr "Gehitu U_RL" + +#: src/gtkui/menus.cc:84 src/qtui/menus.cc:120 +msgid "Search _Library" +msgstr "Bilatu _Liburutegian" + +#: src/gtkui/menus.cc:86 src/qtui/menus.cc:123 +msgid "A_bout ..." +msgstr "" + +#: src/gtkui/menus.cc:87 src/qtui/menus.cc:125 +msgid "_Settings ..." +msgstr "_Ezarpenak ..." + +#: src/gtkui/menus.cc:88 src/qtui/menus.cc:131 +#: src/statusicon-qt/statusicon.cc:114 src/statusicon/statusicon.cc:284 +msgid "_Quit" +msgstr "I_rten" + +#: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 +#: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 +#: src/statusicon/statusicon.cc:276 +msgid "_Play" +msgstr "Erreproduzitu" + +#: src/gtkui/menus.cc:93 src/qtui/menus.cc:137 +#: src/statusicon-qt/statusicon.cc:107 src/statusicon/statusicon.cc:277 +msgid "Paus_e" +msgstr "Pausatu" + +#: src/gtkui/menus.cc:94 src/qtui/menus.cc:139 +#: src/statusicon-qt/statusicon.cc:108 src/statusicon/statusicon.cc:278 +msgid "_Stop" +msgstr "Gelditu" + +#: src/gtkui/menus.cc:95 src/qtui/menus.cc:141 +#: src/statusicon-qt/statusicon.cc:109 src/statusicon/statusicon.cc:279 +msgid "Pre_vious" +msgstr "Aurrekoa" + +#: src/gtkui/menus.cc:96 src/qtui/menus.cc:143 +#: src/statusicon-qt/statusicon.cc:110 src/statusicon/statusicon.cc:280 +msgid "_Next" +msgstr "_Hurrengoa" + +#: src/gtkui/menus.cc:97 src/qtui/menus.cc:145 src/skins/menus.cc:114 +#: src/skins-qt/menus.cc:105 +msgid "Previous Album" +msgstr "Aurreko diskoa" + +#: src/gtkui/menus.cc:98 src/qtui/menus.cc:146 src/skins/menus.cc:115 +#: src/skins-qt/menus.cc:106 +msgid "Next Album" +msgstr "Hurrengo diskoa" + +#: src/gtkui/menus.cc:100 src/qtui/menus.cc:148 +msgid "_Repeat" +msgstr "_Errepikatu" + +#: src/gtkui/menus.cc:101 src/qtui/menus.cc:150 +msgid "S_huffle" +msgstr "" + +#: src/gtkui/menus.cc:102 src/qtui/menus.cc:152 +msgid "Shuffle by Albu_m" +msgstr "" + +#: src/gtkui/menus.cc:103 src/qtui/menus.cc:155 +msgid "N_o Playlist Advance" +msgstr "" + +#: src/gtkui/menus.cc:104 src/qtui/menus.cc:157 +msgid "Stop A_fter This Song" +msgstr "" + +#: src/gtkui/menus.cc:106 src/gtkui/menus.cc:208 src/qtui/menus.cc:162 +#: src/qtui/menus.cc:292 +msgid "Song _Info ..." +msgstr "Kantuaren _Informazioa ..." + +#: src/gtkui/menus.cc:107 +msgid "Jump to _Time ..." +msgstr "Joan _Denborara ..." + +#: src/gtkui/menus.cc:108 +msgid "_Jump to Song ..." +msgstr "_Joan abestira ..." + +#: src/gtkui/menus.cc:110 src/qtui/menus.cc:165 +msgid "Set Repeat Point _A" +msgstr "" + +#: src/gtkui/menus.cc:111 src/qtui/menus.cc:167 +msgid "Set Repeat Point _B" +msgstr "" + +#: src/gtkui/menus.cc:112 src/qtui/menus.cc:169 +msgid "_Clear Repeat Points" +msgstr "" + +#: src/gtkui/menus.cc:116 src/gtkui/menus.cc:123 src/gtkui/menus.cc:140 +#: src/qtui/menus.cc:173 src/qtui/menus.cc:180 src/qtui/menus.cc:197 +msgid "By _Title" +msgstr "_Izenburuaren arabera" + +#: src/gtkui/menus.cc:117 src/qtui/menus.cc:174 +msgid "By _File Name" +msgstr "_Fitxategi Izenaren arabera" + +#: src/gtkui/menus.cc:118 src/qtui/menus.cc:175 +msgid "By File _Path" +msgstr "Fitxategi _Bidearen arabera" + +#: src/gtkui/menus.cc:122 src/gtkui/menus.cc:139 src/qtui/menus.cc:179 +#: src/qtui/menus.cc:196 +msgid "By Track _Number" +msgstr "Pista zenbakiaren arabera" + +#: src/gtkui/menus.cc:124 src/gtkui/menus.cc:141 src/qtui/menus.cc:181 +#: src/qtui/menus.cc:198 +msgid "By _Artist" +msgstr "_Artistaren arabera" + +#: src/gtkui/menus.cc:125 src/gtkui/menus.cc:142 src/qtui/menus.cc:182 +#: src/qtui/menus.cc:199 +msgid "By Al_bum" +msgstr "" + +#: src/gtkui/menus.cc:126 src/gtkui/menus.cc:143 src/qtui/menus.cc:183 +#: src/qtui/menus.cc:200 +msgid "By Albu_m Artist" +msgstr "" + +#: src/gtkui/menus.cc:127 src/gtkui/menus.cc:144 src/qtui/menus.cc:184 +#: src/qtui/menus.cc:201 +msgid "By Release _Date" +msgstr "" + +#: src/gtkui/menus.cc:128 src/gtkui/menus.cc:145 src/qtui/menus.cc:185 +#: src/qtui/menus.cc:202 +msgid "By _Genre" +msgstr "_Generoaren arabera" + +#: src/gtkui/menus.cc:129 src/gtkui/menus.cc:146 src/qtui/menus.cc:186 +#: src/qtui/menus.cc:203 +msgid "By _Length" +msgstr "_Luzeraren arabera" + +#: src/gtkui/menus.cc:130 src/gtkui/menus.cc:147 src/qtui/menus.cc:187 +#: src/qtui/menus.cc:204 +msgid "By _File Path" +msgstr "_Fitxategi Bidearen arabera" + +#: src/gtkui/menus.cc:131 src/gtkui/menus.cc:148 src/qtui/menus.cc:188 +#: src/qtui/menus.cc:205 +msgid "By _Custom Title" +msgstr "Izenburu _Pertsonalizatuen arabera" + +#: src/gtkui/menus.cc:132 src/gtkui/menus.cc:149 src/qtui/menus.cc:189 +#: src/qtui/menus.cc:206 +msgid "By C_omment" +msgstr "" + +#: src/gtkui/menus.cc:134 src/gtkui/menus.cc:151 src/qtui/menus.cc:191 +#: src/qtui/menus.cc:208 +msgid "R_everse Order" +msgstr "" + +#: src/gtkui/menus.cc:135 src/gtkui/menus.cc:152 src/qtui/menus.cc:193 +#: src/qtui/menus.cc:210 +msgid "_Random Order" +msgstr "_Ausazko ordena" + +#: src/gtkui/menus.cc:156 src/qtui/menus.cc:214 +msgid "_Play/Resume" +msgstr "" + +#: src/gtkui/menus.cc:157 src/qtui/menus.cc:216 +msgid "_Refresh" +msgstr "_Freskatu" + +#: src/gtkui/menus.cc:159 src/qtui/menus.cc:220 +msgid "_Sort" +msgstr "_Ordenatu" + +#: src/gtkui/menus.cc:160 src/qtui/menus.cc:221 +msgid "Sort Se_lected" +msgstr "Ordenatu _Hautatutakoak" + +#: src/gtkui/menus.cc:161 src/qtui/menus.cc:223 +msgid "Remove _Duplicates" +msgstr "Kendu _Bikoiztuak" + +#: src/gtkui/menus.cc:162 src/qtui/menus.cc:224 +msgid "Remove _Unavailable Files" +msgstr "Ezabatu erabilgarri ez dauden fitxategiak" + +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 +msgid "_New" +msgstr "_Berri" + +#: src/gtkui/menus.cc:165 src/qtui/menus.cc:228 +msgid "Ren_ame ..." +msgstr "Izena _aldatu ..." + +#: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 +#: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 +#: src/qtui/playlist_tabs.cc:335 +msgid "Remo_ve" +msgstr "Ezabatu" + +#: src/gtkui/menus.cc:168 src/qtui/menus.cc:231 +msgid "_Import ..." +msgstr "_Inportatu ..." + +#: src/gtkui/menus.cc:169 src/qtui/menus.cc:232 +msgid "_Export ..." +msgstr "_Esportatu ..." + +#: src/gtkui/menus.cc:171 src/qtui/menus.cc:235 +msgid "Playlist _Manager ..." +msgstr "Erreprodukzio-zerrenda _Mudeatzailea ..." + +#: src/gtkui/menus.cc:172 src/qtui/menus.cc:237 +msgid "_Queue Manager ..." +msgstr "_Ilara Kudeatzailea..." + +#: src/gtkui/menus.cc:176 src/qtui/menus.cc:241 +msgid "Volume _Up" +msgstr "Bolumena _Igo" + +#: src/gtkui/menus.cc:177 src/qtui/menus.cc:243 +msgid "Volume _Down" +msgstr "Bolumena _Jaitsi" + +#: src/gtkui/menus.cc:179 src/qtui/menus.cc:247 +msgid "_Equalizer ..." +msgstr "" + +#: src/gtkui/menus.cc:180 src/qtui/menus.cc:249 +msgid "E_ffects ..." +msgstr "E_fektuak" + +#: src/gtkui/menus.cc:182 +msgid "_Record Stream" +msgstr "" + +#: src/gtkui/menus.cc:183 +msgid "Audio _Settings ..." +msgstr "Audio-ezarpenak ..." + +#: src/gtkui/menus.cc:187 src/qtui/menus.cc:258 +msgid "Show _Menu Bar" +msgstr "" + +#: src/gtkui/menus.cc:188 src/qtui/menus.cc:260 +msgid "Show I_nfo Bar" +msgstr "" + +#: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 +msgid "Show Info Bar _Album Art" +msgstr "" + +#: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 +msgid "Show Info Bar Vis_ualization" +msgstr "" + +#: src/gtkui/menus.cc:191 src/qtui/menus.cc:266 +msgid "Show _Status Bar" +msgstr "" + +#: src/gtkui/menus.cc:193 src/qtui/menus.cc:270 +msgid "Show _Remaining Time" +msgstr "Gelditzen den denbora erakutsi" + +#: src/gtkui/menus.cc:195 src/qtui/menus.cc:274 src/skins/menus.cc:157 +#: src/skins-qt/menus.cc:152 +msgid "_Visualizations ..." +msgstr "" + +#: src/gtkui/menus.cc:199 src/qtui/menus.cc:278 +msgid "_File" +msgstr "_Fitxategi" + +#: src/gtkui/menus.cc:200 src/qtui/menus.cc:279 +msgid "_Playback" +msgstr "" + +#: src/gtkui/menus.cc:201 src/qtui/menus.cc:280 +msgid "P_laylist" +msgstr "" + +#: src/gtkui/menus.cc:202 src/gtkui/menus.cc:220 src/qtui/menus.cc:281 +#: src/qtui/menus.cc:310 +msgid "_Services" +msgstr "_Zerbitzuak" + +#: src/gtkui/menus.cc:203 src/qtui/menus.cc:282 +msgid "_Output" +msgstr "_Irteera" + +#: src/gtkui/menus.cc:204 src/qtui/menus.cc:283 +msgid "_View" +msgstr "_Ikuspegi" + +#: src/gtkui/menus.cc:209 src/qtui/menus.cc:294 +msgid "_Queue/Unqueue" +msgstr "_Ilararatu/Ilaratik kendu" + +#: src/gtkui/menus.cc:211 src/qtui/menus.cc:297 +msgid "_Open Containing Folder" +msgstr "Barruko Karpeta _Ireki" + +#: src/gtkui/menus.cc:212 src/qtui/menus.cc:299 +msgid "_Refresh Selected" +msgstr "Hautatutakoa _Egunertau" + +#: src/gtkui/menus.cc:214 src/qtui/menus.cc:302 +msgid "Cu_t" +msgstr "Moztu" + +#: src/gtkui/menus.cc:215 src/qtui/menus.cc:303 +msgid "_Copy" +msgstr "_Kopiatu" + +#: src/gtkui/menus.cc:216 src/qtui/menus.cc:304 +msgid "_Paste" +msgstr "_Itsatsi" + +#: src/gtkui/menus.cc:217 src/qtui/menus.cc:305 +msgid "Paste at _End" +msgstr "_Bukaeran itsatsi" + +#: src/gtkui/menus.cc:218 src/qtui/menus.cc:307 +msgid "Select _All" +msgstr "_Dena hautatu" + +#: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 +#: src/qtui/playlist_tabs.cc:333 +msgid "_Rename ..." +msgstr "_Izena aldatu ..." + +#: src/gtkui/settings.cc:35 src/qtui/settings.cc:63 +msgid "Playlist Tabs" +msgstr "" + +#: src/gtkui/settings.cc:36 +msgid "Always show tabs" +msgstr "" + +#: src/gtkui/settings.cc:38 src/qtui/settings.cc:68 +msgid "Show entry counts" +msgstr "Erakutsi sarrera-zenbaketak" + +#: src/gtkui/settings.cc:40 src/qtui/settings.cc:71 +msgid "Show close buttons" +msgstr "Ixteko botoiak erakutsi." + +#: src/gtkui/settings.cc:42 src/qtui/settings.cc:74 +msgid "Playlist Columns" +msgstr "Zutabeen erreprodukzio-zerrenda" + +#: src/gtkui/settings.cc:44 src/qtui/settings.cc:76 +msgid "Show column headers" +msgstr "Erakutsi zutabe-goiburuak" + +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 +msgid "Scroll on song change" +msgstr "" + +#: src/gtkui/ui_gtk.cc:81 +msgid "GTK Interface" +msgstr "GTK Interfazea" + +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 +#, c-format +msgid "%s - Audacious" +msgstr "%s - Audacious" + +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 +msgid "Buffering ..." +msgstr "Bufferreratzen ..." + +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 +msgid "Audacious" +msgstr "Audacious" + +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 +#: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 +#: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 +msgid "Play" +msgstr "Erreproduzitu" + +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 +#: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 +#: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 +msgid "Pause" +msgstr "Pausatu" + +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +msgid "Search Library" +msgstr "Bilatu Liburutegian" + +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 +msgid "Open Files" +msgstr "Ireki fitxategiak" + +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 +msgid "Add Files" +msgstr "Gehitu fitxategiak" + +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +msgid "Previous" +msgstr "Aurrekoa" + +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 +#: src/skins-qt/menus.cc:102 +msgid "Stop" +msgstr "Gelditu" + +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +msgid "Next" +msgstr "Hurrengoa" + +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/skins-qt/menus.cc:69 +msgid "Record Stream" +msgstr "" + +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +msgid "Repeat" +msgstr "Errepikatu" + +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +msgid "Shuffle" +msgstr "Ausazkoa" + +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 +msgid "Menu" +msgstr "Menua" + +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 +msgid "mono" +msgstr "monoa" + +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 +msgid "stereo" +msgstr "estereoa" + +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "kanal %d" +msgstr[1] "%d kanal" + +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 +#, c-format +msgid "%d kHz" +msgstr "%d kHz" + +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 +#, c-format +msgid "%d kbit/s" +msgstr "" + +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 +msgid "Single mode." +msgstr "Single modua." + +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 +msgid "Playlist mode." +msgstr "Erreprodukzio-zerrenda modua." + +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 +msgid "Stopping after song." +msgstr "Kantuaren ostean geldituko da." + +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 +msgid "Previous track" +msgstr "Aurreko pista" + +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 +msgid "Pause/Resume" +msgstr "Pausatu/jarraitu" + +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 +msgid "Next track" +msgstr "Hurrengo pista" + +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 +msgid "Step forward" +msgstr "Pauso bat aurrera egin" + +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 +msgid "Step backward" +msgstr "Pauso bat atzera egin" + +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 +msgid "Mute" +msgstr "Mututu" + +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 +msgid "Volume up" +msgstr "Bolumena igo" + +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 +msgid "Volume down" +msgstr "Bolumena jaitsi" + +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 +msgid "Jump to file" +msgstr "Joan fitxategira" + +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 +msgid "Toggle player window(s)" +msgstr "Txandakatu erreproduzitzailearen leihoa(k)" + +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 +msgid "Show On-Screen-Display" +msgstr "Erakutsi pantaila gaineko mezuak (OSD)" + +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 +msgid "Toggle repeat" +msgstr "Aldatu errepikapena" + +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 +msgid "Toggle shuffle" +msgstr "Aldatu Ausazkoa" + +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 +msgid "Toggle stop after current" +msgstr "" + +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 +msgid "Raise player window(s)" +msgstr "" + +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 +msgid "(none)" +msgstr "(bat ere ez)" + +#: src/hotkey/gui.cc:261 +msgid "" +"It is not recommended to bind the primary mouse buttons without modifiers.\n" +"\n" +"Do you want to continue?" +msgstr "" + +#: src/hotkey/gui.cc:264 +msgid "Binding mouse buttons" +msgstr "Saguaren botoiak lotzea" + +#: src/hotkey/gui.cc:434 +msgid "" +"Press a key combination inside a text field.\n" +"You can also bind mouse buttons." +msgstr "" +"Sakatu tekla konbinazioa testu-eremuaren barruan.\n" +"Saguaren botoiak ere lotu ditzakezu." + +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 +msgid "Hotkeys:" +msgstr "Laster-teklak" + +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 +msgid "Action:" +msgstr "Ekintza:" + +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 +msgid "Key Binding:" +msgstr "Tekla-konbinazioa:" + +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 +msgid "_Add" +msgstr "_Gehitu" + +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 +msgid "Global Hotkeys" +msgstr "" + +#: src/hotkey/plugin.cc:76 +msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributors include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " +msgstr "" + +#: src/jack/jack-ng.cc:54 +msgid "JACK Output" +msgstr "JACK Irteera" + +#: src/jack/jack-ng.cc:126 +msgid "Client name:" +msgstr "Bezeroaren izena:" + +#: src/jack/jack-ng.cc:128 +msgid "Automatically connect to output ports" +msgstr "Automatikoki konektatu irteerako ataketara" + +#: src/jack/jack-ng.cc:130 +msgid "Filter ports (regex, use any port if blank):" +msgstr "" + +#: src/jack/jack-ng.cc:136 +msgid "Connect to physical ports only" +msgstr "Ataka fisikoetara bakarrik konektatu" + +#: src/jack/jack-ng.cc:139 +msgid "Upmix to" +msgstr "" + +#: src/jack/jack-ng.cc:141 +msgid "ports if input has fewer channels" +msgstr "" + +#: src/jack/jack-ng.cc:143 +msgid "Ignore insufficient number of ports" +msgstr "" + +#: src/jack/jack-ng.cc:181 +msgid "No JACK output ports were found. Please check settings." +msgstr "" + +#: src/jack/jack-ng.cc:195 +#, c-format +msgid "Only %d JACK output ports were found but %d are required." +msgstr "" +"Bakarrik %d JACK irteera-portu aurkitu dira baina %d beharrezkoak dira." + +#: src/jack/jack-ng.cc:210 +#, c-format +msgid "Failed to connect to JACK port %s." +msgstr "%s JACK portura ezin izan da konektatu." + +#: src/jack/jack-ng.cc:230 +msgid "" +"JACK supports only floating-point audio. You must change the output bit " +"depth to floating-point in Audacious settings." +msgstr "" + +#: src/jack/jack-ng.cc:245 +msgid "Failed to connect to the JACK server; is it running?" +msgstr "JACK zerbitzarira ezin izan da konektatu; piztuta dago?" + +#: src/jack/jack-ng.cc:321 +#, c-format +msgid "" +"The JACK server requires a sample rate of %d Hz, but Audacious is playing at " +"%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." +msgstr "" + +#: src/ladspa/plugin.cc:416 +#, c-format +msgid "%s Settings" +msgstr "%s Ezarpenak" + +#: src/ladspa/plugin.cc:482 +msgid "Module paths:" +msgstr "Modulo bideak:" + +#: src/ladspa/plugin.cc:487 +msgid "" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." +msgstr "" +"Banatu bide ezberdinak bi puntu bidez ( : ).\n" +"LADSPA_PATH bidean eta bide hauetan bilatuko da.\n" +"Bide berria gehitu eta gero, sakatu Enter Plugin berriak bilatzeko." + +#: src/ladspa/plugin.cc:508 +msgid "Available plugins:" +msgstr "Plugin eskuragarriak:" + +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 +#: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 +#: src/modplug/plugin_main.cc:100 +msgid "Enable" +msgstr "Gaitu" + +#: src/ladspa/plugin.cc:527 +msgid "Enabled plugins:" +msgstr "Gaitutako pluginak:" + +#: src/ladspa/plugin.cc:543 +msgid "Settings" +msgstr "Ezarpenak" + +#: src/ladspa/plugin.cc:560 +msgid "" +"LADSPA Host for Audacious\n" +"Copyright 2011 John Lindgren" +msgstr "" + +#: src/ladspa/plugin.h:78 +msgid "LADSPA Host" +msgstr "LADSPA Ostalaria" + +#: src/lirc/lirc.cc:55 +msgid "LIRC Plugin" +msgstr "LIRC plugina" + +#: src/lirc/lirc.cc:379 +msgid "" +"A simple plugin to control Audacious using the LIRC remote control daemon\n" +"\n" +"Adapted for Audacious by:\n" +"Tony Vroon \n" +"Joonas Harjumäki \n" +"\n" +"Based on the XMMS LIRC plugin by:\n" +"Carl van Schaik \n" +"Christoph Bartelmus \n" +"Andrew O. Shadoura \n" +"\n" +"For more information about LIRC, see http://lirc.org." +msgstr "" + +#: src/lirc/lirc.cc:390 +msgid "Connection" +msgstr " Konekxioa " + +#: src/lirc/lirc.cc:391 +msgid "Reconnect to LIRC server" +msgstr "Berkonektatu LIRC zerbitzarira" + +#: src/lirc/lirc.cc:393 +msgid "Wait before reconnecting:" +msgstr "Itxaron berkonektatu aurretik:" + +#: src/lyricwiki-qt/lyricwiki.cc:90 +msgid "Lyrics" +msgstr "Hitzak" + +#: src/lyricwiki-qt/lyricwiki.cc:118 +msgid "Nowhere" +msgstr "Inon ez" + +#: src/lyricwiki-qt/lyricwiki.cc:119 +msgid "lyrics.ovh" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:123 +msgid "Artist is truncated at the start, Title -- at the end" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:124 +msgid "Chars to truncate on:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:128 +msgid "Chars are ORed in RegExp, surrounded by whitespace" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:129 +msgid "Chars to split on:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:130 +msgid "Further truncate those on chars" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:136 +msgid "General" +msgstr " Orokorra " + +#: src/lyricwiki-qt/lyricwiki.cc:137 +msgid "Split title into artist and title on chars" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:146 +msgid "Store fetched lyrics in local cache" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:148 +msgid "Local Storage" +msgstr " Biltegi lokala " + +#: src/lyricwiki-qt/lyricwiki.cc:149 +msgid "Load lyric files (.lrc) from local storage" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:360 +#, c-format +msgid "Unable to fetch %s" +msgstr "%s ekartzea ezinezkoa da." + +#: src/lyricwiki-qt/lyricwiki.cc:369 +#, c-format +msgid "Unable to parse %s" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:407 +msgid "Looking for lyrics ..." +msgstr "Hitzak bilatzen..." + +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 +msgid "Error" +msgstr "Errorea" + +#: src/lyricwiki-qt/lyricwiki.cc:437 +msgid "Lyrics could not be found." +msgstr "Ezin izan da letrarik aurkitu." + +#: src/lyricwiki-qt/lyricwiki.cc:518 +msgid "Missing title and/or artist." +msgstr "Titulua edo/eta artista falta da." + +#: src/lyricwiki-qt/lyricwiki.cc:576 +msgid "Save Locally" +msgstr "Lokalean gorde" + +#: src/lyricwiki-qt/lyricwiki.cc:584 +msgid "Refresh" +msgstr "Freskatu" + +#: src/m3u/m3u.cc:33 +msgid "M3U Playlists" +msgstr "M3U Erreprodukzio-zerrendak" + +#: src/metronom/metronom.cc:44 +msgid "Tact Generator" +msgstr "" + +#: src/metronom/metronom.cc:145 +#, c-format +msgid "Tact generator: %d bpm" +msgstr "Ukimen sortzailea: %d bpm" + +#: src/metronom/metronom.cc:147 +#, c-format +msgid "Tact generator: %d bpm %d/%d" +msgstr "Ukimen sortzailea: %d bpm %d/%d" + +#: src/metronom/metronom.cc:235 +msgid "" +"A Tact Generator by Martin Strauss \n" +"\n" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" +msgstr "" + +#: src/mixer/mixer.cc:43 +msgid "Channel Mixer" +msgstr "Kanal-nahasgailua" + +#: src/mixer/mixer.cc:255 +msgid "" +"Channel Mixer Plugin for Audacious\n" +"Copyright 2011-2012 John Lindgren and Michał Lipski" +msgstr "" + +#: src/mixer/mixer.cc:259 +msgid "Channel Mixer" +msgstr "Kanal-nahasgailua" + +#: src/mixer/mixer.cc:260 +msgid "Output channels:" +msgstr "Irteera kanalak:" + +#: src/mms/mms.cc:35 +msgid "MMS Plugin" +msgstr "MMS Plugina" + +#: src/mms/mms.cc:82 +msgid "Error connecting to MMS server" +msgstr "Errorea MMS zerbitzarira konektatzean" + +#: src/modplug/modplugbmp.h:57 +msgid "ModPlug (Module Player)" +msgstr "" + +#: src/modplug/plugin_main.cc:55 +msgid "Channels" +msgstr "Kanalak" + +#: src/modplug/plugin_main.cc:59 +msgid "Nearest (fastest)" +msgstr "Hurbilena (azkarrena)" + +#: src/modplug/plugin_main.cc:60 +msgid "Linear (fast)" +msgstr "" + +#: src/modplug/plugin_main.cc:61 +msgid "Spline (good)" +msgstr "" + +#: src/modplug/plugin_main.cc:62 +msgid "Polyphase (best)" +msgstr "" + +#: src/modplug/plugin_main.cc:63 +msgid "Sample rate" +msgstr "Lagin-tasa" + +#: src/modplug/plugin_main.cc:64 +msgid "22 kHz" +msgstr "22 kHz" + +#: src/modplug/plugin_main.cc:65 +msgid "44 kHz" +msgstr "44 kHz" + +#: src/modplug/plugin_main.cc:66 +msgid "48 kHz" +msgstr "48 kHz" + +#: src/modplug/plugin_main.cc:67 +msgid "96 kHz" +msgstr "96 kHz" + +#: src/modplug/plugin_main.cc:71 src/modplug/plugin_main.cc:76 +#: src/modplug/plugin_main.cc:81 +msgid "Level:" +msgstr "Maila:" + +#: src/modplug/plugin_main.cc:77 +msgid "Cutoff:" +msgstr "" + +#: src/modplug/plugin_main.cc:90 +msgid "Reverb" +msgstr "" + +#: src/modplug/plugin_main.cc:93 +msgid "Bass Boost" +msgstr "" + +#: src/modplug/plugin_main.cc:96 +msgid "Surround" +msgstr "" + +#: src/modplug/plugin_main.cc:99 +msgid "Preamp" +msgstr "" + +#: src/modplug/plugin_main.cc:106 +msgid "Oversample" +msgstr "" + +#: src/modplug/plugin_main.cc:107 +msgid "Noise reduction" +msgstr "Zarata kentzea" + +#: src/modplug/plugin_main.cc:108 +msgid "Play Amiga MODs" +msgstr "" + +#: src/modplug/plugin_main.cc:109 +msgid "Repeat" +msgstr "Errepikatu" + +#: src/modplug/plugin_main.cc:110 +msgid "Repeat count:" +msgstr "" + +#: src/modplug/plugin_main.cc:111 +msgid "To repeat forever, set the repeat count to -1." +msgstr "" + +#: src/modplug/plugin_main.cc:124 src/sid/xs_config.cc:106 +msgid "These settings will take effect when Audacious is restarted." +msgstr "" + +#: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 +#: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 +msgid "Stop After This Song" +msgstr "Gelditu abesti hau eta gero" + +#: src/moonstone/moonstone.cc:39 +msgid "Moonstone" +msgstr "" + +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 +msgid "Reset to Defaults" +msgstr "Balio lehenetsietara berrasieratu" + +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 +msgid "Now Playing" +msgstr "Orain erreproduzitzen" + +#: src/moonstone/playlist_selection.cc:64 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 +msgid "Entries" +msgstr "Sarrerak" + +#: src/mpg123/mpg123.cc:54 +msgid "MPG123 Plugin" +msgstr "MPG123 plugina" + +#: src/mpg123/mpg123.cc:81 +msgid "Advanced" +msgstr " Aurreratu " + +#: src/mpg123/mpg123.cc:82 +msgid "Use accurate length calculation (slow)" +msgstr "" + +#: src/mpg123/mpg123.cc:260 +msgid "Surround" +msgstr "Surround" + +#: src/mpris2/plugin.cc:38 +msgid "MPRIS 2 Server" +msgstr "" + +#: src/neon/neon.cc:97 +msgid "Neon HTTP/HTTPS Plugin" +msgstr "Neon HTTP/HTTPS plugina" + +#: src/neon/neon.cc:526 +msgid "Error parsing redirect" +msgstr "" + +#: src/neon/neon.cc:540 +msgid "Unknown HTTP error" +msgstr "HTTP errore ezezaguna" + +#: src/neon/neon.cc:590 +msgid "Error parsing URL" +msgstr "" + +#: src/neon/neon.cc:660 +msgid "Too many redirects" +msgstr "" + +#: src/notify/event.cc:97 +msgid "Stopped" +msgstr "Geldituta" + +#: src/notify/event.cc:97 +msgid "Audacious is not playing." +msgstr "Audacious ez da jotzen ari." + +#: src/notify/notify.cc:39 +msgid "Desktop Notifications" +msgstr "" + +#: src/notify/notify.cc:57 +msgid "" +"Desktop Notifications Plugin for Audacious\n" +"Copyright (C) 2010 Maximilian Bogner\n" +"Copyright (C) 2011-2013 John Lindgren and Jean-Alexandre Anglès d'Auriac\n" +"\n" +"This plugin 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 3 of the License, or (at your option) " +"any later version.\n" +"\n" +"This plugin 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.\n" +"\n" +"You should have received a copy of the GNU General Public License along with " +"this program. If not, see ." +msgstr "" + +#: src/notify/notify.cc:104 +msgid "Show playback controls" +msgstr "" + +#: src/notify/notify.cc:106 +msgid "Always show notification" +msgstr "Jakinarazpenak beti erakutsi" + +#: src/notify/notify.cc:108 +msgid "Include album name in notification" +msgstr "" + +#: src/notify/notify.cc:110 +msgid "Custom notification duration:" +msgstr "" + +#: src/notify/osd.cc:74 +msgid "Show" +msgstr "Erakutsi" + +#: src/openmpt/mpt.cc:50 +msgid "OpenMPT (Module Player)" +msgstr "" + +#: src/openmpt/mpt.cc:132 +msgid "" +"Module player based on libopenmpt\n" +"\n" +"Written by: Chris Spiegel " +msgstr "" + +#: src/openmpt/mpt.cc:151 +msgid "Stereo separation:" +msgstr "" + +#: src/openmpt/mpt.cc:153 +msgid "%" +msgstr "%" + +#: src/openmpt/mpt.cc:157 +msgid "Interpolation:" +msgstr "Interpolazioa:" + +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 +msgid "Linear" +msgstr "" + +#: src/openmpt/mptwrap.h:52 +msgid "Cubic" +msgstr "Kubikoa" + +#: src/openmpt/mptwrap.h:53 +msgid "Windowed sinc" +msgstr "" + +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 +msgid "OSS4 Output" +msgstr "OSS4 Irteera" + +#: src/oss4/oss.h:72 +msgid "OSS3 Output" +msgstr "OSS3 Irteera" + +#: src/oss4/plugin.cc:35 +msgid "Default device" +msgstr "Lehenetsitako gailua" + +#: src/oss4/plugin.cc:78 +msgid "Audio device:" +msgstr "Soinu-gailua:" + +#: src/oss4/plugin.cc:81 +msgid "Use alternate device:" +msgstr "Erabili bestelako gailua:" + +#: src/oss4/plugin.cc:85 +msgid "Save volume between sessions." +msgstr "Sesioen artean bolumena gorde." + +#: src/oss4/plugin.cc:87 +msgid "Enable format conversions made by the OSS software." +msgstr "" + +#: src/oss4/plugin.cc:89 +msgid "Enable exclusive mode to prevent virtual mixing." +msgstr "" + +#: src/oss4/plugin.cc:101 +msgid "" +"OSS4 Output Plugin for Audacious\n" +"Copyright 2010-2012 Michał Lipski\n" +"\n" +"I would like to thank people on #audacious, especially Tony Vroon and John " +"Lindgren and of course the authors of the previous OSS plugin." +msgstr "" + +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Erreprodukzioa" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 +msgid "Playlist Manager" +msgstr "Erreprodukzio-zerrenda kudeatzailea" + +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 +msgid "_Remove" +msgstr "_Ezabatu" + +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 +msgid "Ren_ame" +msgstr "Izena _aldatu" + +#: src/pls/pls.cc:35 +msgid "PLS Playlists" +msgstr "" + +#: src/psf/plugin.cc:53 +msgid "OpenPSF PSF1/PSF2 Decoder" +msgstr "OpenPSF PSF1/PSF2 Deskodetzailea" + +#: src/psf/plugin.cc:270 +msgid "OpenPSF Configuration" +msgstr "" + +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 +msgid "Ignore length from file" +msgstr "" + +#: src/pulse/pulse_audio.cc:42 +msgid "PulseAudio Output" +msgstr "" + +#: src/pulse/pulse_audio.cc:72 +msgid "Context name:" +msgstr "Testuinguruaren izena:" + +#: src/pulse/pulse_audio.cc:74 +msgid "Stream name:" +msgstr "" + +#: src/pulse/pulse_audio.cc:575 +msgid "" +"Audacious PulseAudio Output Plugin\n" +"\n" +"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.\n" +"\n" +"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.\n" +"\n" +"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." +msgstr "" + +#: src/qtaudio/qtaudio.cc:44 +msgid "QtMultimedia Output" +msgstr "" + +#: src/qtaudio/qtaudio.cc:72 +msgid "" +"QtMultimedia Audio Output Plugin for Audacious\n" +"Copyright 2014 William Pitcock\n" +"\n" +"Based on SDL Output Plugin for Audacious\n" +"Copyright 2010 John Lindgren" +msgstr "" + +#: src/qtglspectrum/gl-spectrum.cc:41 +msgid "" +"OpenGL Spectrum Analyzer for Audacious\n" +"Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" +"Copyright 2014, 2020 Ariadne Conill\n" +"\n" +"Based on the XMMS plugin:\n" +"Copyright 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, and " +"4Front Technologies\n" +"\n" +"License: GPLv2+" +msgstr "" + +#: src/qthotkey/gui.cc:177 +msgid "Press a key combination inside a text field." +msgstr "Sakatu tekla konbinazioa testu-eremuaren barruan" + +#: src/qthotkey/plugin.cc:107 +msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2020 i.Dark_Templar \n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributors include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " +msgstr "" + +#: src/qtui/menus.cc:109 +msgid "_Open Folder ..." +msgstr "Karpeta _Ireki ..." + +#: src/qtui/menus.cc:115 +msgid "_Add Folder ..." +msgstr "Karpeta _Gehitu ..." + +#: src/qtui/menus.cc:128 +msgid "_Log Inspector ..." +msgstr "" + +#: src/qtui/menus.cc:218 +msgid "_Find ..." +msgstr "_Bilatu ..." + +#: src/qtui/menus.cc:254 src/skins/menus.cc:80 src/skins-qt/menus.cc:70 +msgid "Audio Settings ..." +msgstr "" + +#: src/qtui/playlist_model.cc:188 +msgid "Q#" +msgstr "" + +#: src/qtui/playlist_model.cc:190 +msgid "T#" +msgstr "" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + +#: src/qtui/qtui.cc:40 +msgid "Qt Interface" +msgstr "" + +#: src/qtui/search_bar.cc:46 +msgid "Search playlist" +msgstr "Erreprodukzio-zerrenda bilatu" + +#: src/qtui/settings.cc:58 +msgid "Always" +msgstr "Beti" + +#: src/qtui/settings.cc:59 +msgid "Auto-hide" +msgstr "" + +#: src/qtui/settings.cc:60 +msgid "Never" +msgstr "Inoiz ez" + +#: src/qtui/settings.cc:64 +msgid "Show playlist tabs:" +msgstr "" + +#: src/qtui/settings.cc:78 +msgid "Use bold font for column headers" +msgstr "" + +#: src/resample/resample.cc:43 +msgid "Sample Rate Converter" +msgstr "" + +#: src/resample/resample.cc:183 +msgid "" +"Sample Rate Converter Plugin for Audacious\n" +"Copyright 2010-2012 John Lindgren" +msgstr "" + +#: src/resample/resample.cc:187 +msgid "Skip/repeat samples" +msgstr "" + +#: src/resample/resample.cc:188 +msgid "Linear interpolation" +msgstr "Interpolazio lineal" + +#: src/resample/resample.cc:189 +msgid "Fast sinc interpolation" +msgstr "" + +#: src/resample/resample.cc:190 +msgid "Medium sinc interpolation" +msgstr "" + +#: src/resample/resample.cc:191 +msgid "Best sinc interpolation" +msgstr "" + +#: src/resample/resample.cc:195 +msgid "Conversion" +msgstr "" + +#: src/resample/resample.cc:196 +msgid "Method:" +msgstr "Metodoa:" + +#: src/resample/resample.cc:199 src/soxr/sox-resampler.cc:203 +msgid "Rate:" +msgstr "Tasa:" + +#: src/resample/resample.cc:202 +msgid "Rate Mappings" +msgstr "" + +#: src/resample/resample.cc:203 +msgid "Use rate mappings" +msgstr "" + +#: src/resample/resample.cc:205 +msgid "8 kHz:" +msgstr "8 kHz:" + +#: src/resample/resample.cc:209 +msgid "16 kHz:" +msgstr "16 kHz:" + +#: src/resample/resample.cc:213 +msgid "22.05 kHz:" +msgstr "22.05 kHz:" + +#: src/resample/resample.cc:217 +msgid "32.0 kHz:" +msgstr "32.0 kHz:" + +#: src/resample/resample.cc:221 +msgid "44.1 kHz:" +msgstr "44.1 kHz:" + +#: src/resample/resample.cc:225 +msgid "48 kHz:" +msgstr "48 kHz:" + +#: src/resample/resample.cc:229 +msgid "88.2 kHz:" +msgstr "88.2 kHz:" + +#: src/resample/resample.cc:233 +msgid "96 kHz:" +msgstr "96 kHz:" + +#: src/resample/resample.cc:237 +msgid "176.4 kHz:" +msgstr "176.4 kHz:" + +#: src/resample/resample.cc:241 +msgid "192 kHz:" +msgstr "192 kHz:" + +#: src/scrobbler2/config_window.cc:19 +msgid "Checking Last.fm access ..." +msgstr "" + +#: src/scrobbler2/config_window.cc:27 +msgid "" +"Your scrobbles are being saved on your computer temporarily. They will be " +"submitted as soon as Audacious is allowed access." +msgstr "" + +#: src/scrobbler2/config_window.cc:33 +#, c-format +msgid "Permission granted. Scrobbling for user %s." +msgstr "" + +#: src/scrobbler2/config_window.cc:37 +msgid "" +"Permission denied. Open the following URL in a browser, allow Audacious " +"access to your account, and then click 'Check Permission' again:" +msgstr "" + +#: src/scrobbler2/config_window.cc:47 +msgid "There was a problem contacting Last.fm." +msgstr "" + +#: src/scrobbler2/config_window.cc:86 +msgid "Check Permission" +msgstr "Baimenak kontrolatu" + +#: src/scrobbler2/config_window.cc:87 +msgid "Revoke Permission" +msgstr "" + +#: src/scrobbler2/config_window.cc:91 +msgid "You need to allow Audacious to scrobble tracks to your Last.fm account." +msgstr "" + +#: src/scrobbler2/scrobbler.cc:29 +msgid "Scrobbler 2.0" +msgstr "" + +#: src/scrobbler2/scrobbler.cc:226 +msgid "" +"The Scrobbler plugin could not be started.\n" +"There might be a problem with your installation." +msgstr "" + +#: src/scrobbler2/scrobbler.cc:291 +msgid "" +"Audacious Scrobbler Plugin 2.0 by Pitxyoki,\n" +"\n" +"Copyright © 2012-2013 Luís M. Picciochi Oliveira \n" +"\n" +"Thanks to John Lindgren for giving me a hand at the beginning of this " +"project.\n" +"\n" +msgstr "" + +#: src/scrobbler2/scrobbler_communication.cc:663 +msgid "" +"Audacious is now using an improved version of the Last.fm Scrobbler.\n" +"Please check the Preferences for the Scrobbler plugin." +msgstr "" + +#: src/sdlout/sdlout.cc:43 +msgid "SDL Output" +msgstr "" + +#: src/sdlout/sdlout.cc:72 +msgid "" +"SDL Output Plugin for Audacious\n" +"Copyright 2010 John Lindgren" +msgstr "" + +#: src/search-tool/library.cc:35 src/search-tool/library.cc:46 +#: src/search-tool-qt/library.cc:35 src/search-tool-qt/library.cc:46 +msgid "Library" +msgstr "Liburutegia" + +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 +#, c-format +msgid "%d song" +msgid_plural "%d songs" +msgstr[0] "%d kantua" +msgstr[1] "%d kantuak" + +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 +msgid "of this genre" +msgstr "genero honetan" + +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 +msgid "on" +msgstr "" + +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 +msgid "by" +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 +msgid "Number of results to show:" +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 +msgid "Rescan library at startup" +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:170 +msgid "Monitor library for changes" +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 +msgid "" +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 +msgid "Please wait ..." +msgstr "Mesedez itxaron ..." + +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 +msgid "Choose Folder" +msgstr "Aukeratu karpeta" + +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 +msgid "Search library" +msgstr "Bilatu Liburutegian" + +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 +#, c-format +msgid "%d of %d result shown" +msgid_plural "%d of %d results shown" +msgstr[0] "" +msgstr[1] "" + +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 +#, c-format +msgid "%d result" +msgid_plural "%d results" +msgstr[0] "%d emaitza" +msgstr[1] "%d emaitzak" + +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 +msgid "_Create Playlist" +msgstr "_Erreprodukzio-zerrenda sortu" + +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 +msgid "_Add to Playlist" +msgstr "_Erreprodukzio-zerrendara gehitu" + +#: src/sid/xmms-sid.cc:43 +msgid "SID Player" +msgstr "" + +#: src/sid/xs_config.cc:62 +msgid "Channels:" +msgstr "Kanalak:" + +#: src/sid/xs_config.cc:68 +msgid "Emulation" +msgstr "" + +#: src/sid/xs_config.cc:69 +msgid "Emulate MOS 8580 (default: MOS 6581)" +msgstr "" + +#: src/sid/xs_config.cc:71 +msgid "Do not automatically select chip model" +msgstr "" + +#: src/sid/xs_config.cc:73 +msgid "Emulate filter" +msgstr "" + +#: src/sid/xs_config.cc:75 +msgid "Clock speed:" +msgstr "" + +#: src/sid/xs_config.cc:78 +msgid "Do not automatically select clock speed" +msgstr "" + +#: src/sid/xs_config.cc:80 +msgid "Playback time" +msgstr "" + +#: src/sid/xs_config.cc:81 +msgid "Set maximum playback time:" +msgstr "" + +#: src/sid/xs_config.cc:87 +msgid "Use only when song length is unknown" +msgstr "" + +#: src/sid/xs_config.cc:90 +msgid "Set minimum playback time:" +msgstr "" + +#: src/sid/xs_config.cc:96 +msgid "Subtunes" +msgstr "" + +#: src/sid/xs_config.cc:97 +msgid "Enable subtunes" +msgstr "" + +#: src/sid/xs_config.cc:99 +msgid "Ignore subtunes shorter than:" +msgstr "" + +#: src/sid/xs_config.cc:105 +msgid "Note" +msgstr "" + +#: src/silence-removal/silence-removal.cc:39 +msgid "Silence Removal" +msgstr "Isiluneak kendu" + +#: src/silence-removal/silence-removal.cc:58 +msgid "" +"Silence Removal Plugin for Audacious\n" +"Copyright 2014 John Lindgren" +msgstr "" + +#: src/silence-removal/silence-removal.cc:67 +msgid "Silence Removal" +msgstr "Isiluneak kendu" + +#: src/silence-removal/silence-removal.cc:68 +msgid "Threshold:" +msgstr "Atalasea:" + +#: src/silence-removal/silence-removal.cc:70 +msgid "dB" +msgstr "dB" + +#: src/skins/actions.cc:45 src/skins-qt/actions.cc:43 +msgid "Repeat points cleared." +msgstr "" + +#: src/skins/actions.cc:60 src/skins-qt/actions.cc:58 +msgid "Repeat point A set." +msgstr "" + +#: src/skins/actions.cc:65 src/skins-qt/actions.cc:63 +msgid "Repeat point B set." +msgstr "" + +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 +msgid "Preamp" +msgstr "Aurre-anp" + +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 +msgid "31 Hz" +msgstr "31 Hz" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "63 Hz" +msgstr "63 Hz" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "125 Hz" +msgstr "125 Hz" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "250 Hz" +msgstr "250 Hz" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "500 Hz" +msgstr "500 Hz" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "1 kHz" +msgstr "1 kHz" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "2 kHz" +msgstr "2 kHz" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "4 kHz" +msgstr "4 kHz" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "8 kHz" +msgstr "8 kHz" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "16 kHz" +msgstr "16 kHz" + +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 +msgid "Audacious Equalizer" +msgstr "Audacious-en ekualizadorea" + +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 +msgid "Recording on" +msgstr "Grabazioa piztua" + +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 +msgid "Recording off" +msgstr "Grabazioa itzalia" + +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 +#, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "Bilatu %d:%-2.2d / %d:%-2.2d" + +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 +#, c-format +msgid "Volume: %d%%" +msgstr "Bolumena: %% %d" + +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 +#, c-format +msgid "Balance: %d%% left" +msgstr "Balantzea: %% %d ezkerrean" + +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 +msgid "Balance: center" +msgstr "Balantzea: erdian" + +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 +#, c-format +msgid "Balance: %d%% right" +msgstr "Balantzea: %% %d eskuinean" + +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 +msgid "Options Menu" +msgstr "Aukeren menua" + +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 +msgid "Disable 'Always On Top'" +msgstr "Desgaitu 'Beti gainean'" + +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 +msgid "Enable 'Always On Top'" +msgstr "Gaitu 'Beti gainean'" + +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 +msgid "File Info Box" +msgstr "Fitxategi-informazioaren koadroa" + +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 +#: src/skins-qt/menus.cc:142 +msgid "Double Size" +msgstr "Tamaina bikoitza" + +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 +msgid "Visualizations" +msgstr "" + +#: src/skins/menus.cc:74 src/skins-qt/menus.cc:64 +msgid "Volume Up" +msgstr "Igo bolumena" + +#: src/skins/menus.cc:75 src/skins-qt/menus.cc:65 +msgid "Volume Down" +msgstr "Jeitsi bolumena" + +#: src/skins/menus.cc:77 src/skins-qt/menus.cc:67 +msgid "Effects ..." +msgstr "Efektuak ..." + +#: src/skins/menus.cc:84 src/skins-qt/menus.cc:74 +msgid "Open Files ..." +msgstr "Ireki fitxategiak ..." + +#: src/skins/menus.cc:85 src/skins-qt/menus.cc:76 +msgid "Open URL ..." +msgstr "Ireki URLa ..." + +#: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 +msgid "Playlist" +msgstr "Erreprodukzio-zerrenda" + +#: src/skins/menus.cc:90 src/skins-qt/menus.cc:81 +msgid "Output" +msgstr "Irteera" + +#: src/skins/menus.cc:91 src/skins-qt/menus.cc:82 +msgid "View" +msgstr "Ikusi" + +#: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 +#: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 +msgid "Services" +msgstr "Zerbitzuak" + +#: src/skins/menus.cc:95 src/skins-qt/menus.cc:86 +msgid "About ..." +msgstr "" + +#: src/skins/menus.cc:96 src/skins-qt/menus.cc:87 +msgid "Settings ..." +msgstr "Ezarpenak ..." + +#: src/skins/menus.cc:97 src/skins-qt/menus.cc:88 +msgid "Quit" +msgstr "Irten" + +#: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 +#: src/skins-qt/menus.cc:229 +msgid "Song Info ..." +msgstr "Kantuari buruzko informazioa ..." + +#: src/skins/menus.cc:105 src/skins-qt/menus.cc:96 +msgid "Shuffle by Album" +msgstr "" + +#: src/skins/menus.cc:106 src/skins-qt/menus.cc:97 +msgid "No Playlist Advance" +msgstr "Erreprodukzio-zerrenda aurreraturik ez" + +#: src/skins/menus.cc:117 src/skins-qt/menus.cc:108 +msgid "Set A-B Repeat" +msgstr "" + +#: src/skins/menus.cc:118 src/skins-qt/menus.cc:109 +msgid "Clear A-B Repeat" +msgstr "" + +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 +msgid "Jump to Song ..." +msgstr "Joan abestira ..." + +#: src/skins/menus.cc:121 src/skins-qt/menus.cc:113 +msgid "Jump to Time ..." +msgstr "Joan denborara ..." + +#: src/skins/menus.cc:125 src/skins-qt/menus.cc:118 +msgid "Play/Resume" +msgstr "" + +#: src/skins/menus.cc:127 src/skins-qt/menus.cc:120 +msgid "New Playlist" +msgstr "Erreprodukzio-zerrenda berria" + +#: src/skins/menus.cc:128 src/skins-qt/menus.cc:121 +msgid "Rename Playlist ..." +msgstr "Erreprodukzio-zerrendaren izena aldatu ..." + +#: src/skins/menus.cc:129 src/skins-qt/menus.cc:122 +msgid "Remove Playlist" +msgstr "Erreprodukzio-zerrenda ezabatu" + +#: src/skins/menus.cc:131 src/skins-qt/menus.cc:124 +msgid "Previous Playlist" +msgstr "Aurreko erreprodukzio-zerrenda" + +#: src/skins/menus.cc:132 src/skins-qt/menus.cc:125 +msgid "Next Playlist" +msgstr "Hurrengo erreprodukzio-zerrenda" + +#: src/skins/menus.cc:134 src/skins-qt/menus.cc:127 +msgid "Import Playlist ..." +msgstr "Inportatu erreprodukzio-zerrenda ..." + +#: src/skins/menus.cc:135 src/skins-qt/menus.cc:128 +msgid "Export Playlist ..." +msgstr "Esportatu erreprodukzio-zerrenda ..." + +#: src/skins/menus.cc:137 src/skins-qt/menus.cc:130 +msgid "Playlist Manager ..." +msgstr "Erreprodukzio-zerrenda kudeatzailea ..." + +#: src/skins/menus.cc:138 src/skins-qt/menus.cc:131 +msgid "Queue Manager ..." +msgstr "Ilara kudeatzailea ..." + +#: src/skins/menus.cc:140 src/skins-qt/menus.cc:133 +msgid "Refresh Playlist" +msgstr "Freskatu erreprodukzio-zerrenda" + +#: src/skins/menus.cc:144 src/skins-qt/menus.cc:137 +msgid "Show Playlist Editor" +msgstr "Erakutsi erreprodukzio-zerrendaren editorea" + +#: src/skins/menus.cc:145 src/skins-qt/menus.cc:138 +msgid "Show Equalizer" +msgstr "Erakutsi ekualizadorea" + +#: src/skins/menus.cc:147 src/skins-qt/menus.cc:140 +msgid "Show Remaining Time" +msgstr "Gelditzen den denbora erakutsi" + +#: src/skins/menus.cc:150 src/skins-qt/menus.cc:143 +msgid "Always on Top" +msgstr "Beti gainean" + +#: src/skins/menus.cc:151 src/skins-qt/menus.cc:145 +msgid "On All Workspaces" +msgstr "" + +#: src/skins/menus.cc:153 src/skins-qt/menus.cc:148 +msgid "Roll Up Player" +msgstr "" + +#: src/skins/menus.cc:154 src/skins-qt/menus.cc:149 +msgid "Roll Up Playlist Editor" +msgstr "" + +#: src/skins/menus.cc:155 src/skins-qt/menus.cc:150 +msgid "Roll Up Equalizer" +msgstr "" + +#: src/skins/menus.cc:163 src/skins-qt/menus.cc:158 +msgid "Add URL ..." +msgstr "Gehitu URLa ..." + +#: src/skins/menus.cc:164 src/skins-qt/menus.cc:160 +msgid "Add Files ..." +msgstr "Gehitu fitxategiak..." + +#: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 +msgid "By Title" +msgstr "Tituluaren arabera" + +#: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 +msgid "By File Name" +msgstr "Fitxategi izenaren arabera" + +#: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 +msgid "By File Path" +msgstr "Fitxategi bidearen arabera" + +#: src/skins/menus.cc:176 src/skins-qt/menus.cc:172 +msgid "Remove All" +msgstr "Kendu guztiak" + +#: src/skins/menus.cc:177 src/skins-qt/menus.cc:173 +msgid "Clear Queue" +msgstr "Garbitu ilara" + +#: src/skins/menus.cc:179 src/skins-qt/menus.cc:175 +msgid "Remove Unavailable Files" +msgstr "Kendu fitxategi erabilkaitzak" + +#: src/skins/menus.cc:180 src/skins-qt/menus.cc:176 +msgid "Remove Duplicates" +msgstr "Kendu bikoiztuak" + +#: src/skins/menus.cc:182 src/skins-qt/menus.cc:178 +msgid "Remove Unselected" +msgstr "Kendu desautatutakoak" + +#: src/skins/menus.cc:183 src/skins-qt/menus.cc:179 +msgid "Remove Selected" +msgstr "Kendu hautatutakoak" + +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 +msgid "Search and Select" +msgstr "Bilatu eta hautatu" + +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 +msgid "Invert Selection" +msgstr "Alderantzikatu hautapena" + +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 +msgid "Select None" +msgstr "Ez hautatu ezer" + +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 +msgid "Select All" +msgstr "Hautatu denak" + +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 +msgid "By Track Number" +msgstr "Pista zenbakiaren arabera" + +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 +msgid "By Artist" +msgstr "Artistaren arabera" + +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 +msgid "By Album" +msgstr "Diskoaren arabera" + +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 +msgid "By Album Artist" +msgstr "Albumeko artistaren arabera" + +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 +msgid "By Release Date" +msgstr "Argitaratza dataren arabera" + +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 +msgid "By Genre" +msgstr "Generoaren arabera" + +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 +msgid "By Length" +msgstr "Luzeraren arabera" + +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 +msgid "By Custom Title" +msgstr "Izenburu pertsonalizatuen arabera" + +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 +msgid "By Comment" +msgstr "Iruzkinen arabera" + +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 +msgid "Randomize List" +msgstr "Nahastu ausaz zerrenda" + +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 +msgid "Reverse List" +msgstr "Alderantzikatu zerrenda" + +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 +msgid "Sort Selected" +msgstr "Ordenatu hautatutakoak" + +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 +msgid "Sort List" +msgstr "Ordenatu zerrenda" + +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 +msgid "Open Containing Folder" +msgstr "Barruko Karpeta Ireki" + +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 +msgid "Cut" +msgstr "Moztu" + +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 +msgid "Copy" +msgstr "Kopiatu" + +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 +msgid "Paste" +msgstr "Itsatsi" + +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 +msgid "Paste at End" +msgstr "Itsasi bukaeran" + +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 +msgid "Queue/Unqueue" +msgstr "" + +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 +#, c-format +msgid "%s (%d of %d)" +msgstr "%s(%dtik%d)" + +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 +msgid "Audacious Playlist Editor" +msgstr "Audacious erreprodukzio-zerrendaren editorea" + +#: src/skins/plugin.cc:49 src/skins-qt/plugin.cc:64 +msgid "Winamp Classic Interface" +msgstr "Winamp`Interfaze Klasikoa" + +#: src/skins-qt/menus.cc:75 +msgid "Open Folder ..." +msgstr "Ireki Fitxategia ..." + +#: src/skins-qt/menus.cc:159 +msgid "Add Folder ..." +msgstr "Gehitu Fitxtegia ..." + +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Bilatu sarrerak erreprodukzio-zerrenda aktiboan" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Hautatu sarrerak erreprodukzio-zerrendan eremu bat edo gehiago betez. " +"Eremuek adierazpen erregularrak erabiltzen dituzte, maiuskulak eta " +"minuskulak ez bereiztuz. Ez badakizu adierazpen erregularrak nola ibiltzen " +"diren, sartu bilatzea nahi duzunaren zati literal bat." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Izenburua: " + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Diskoa: " + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Artista: " + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Fitxategi izena" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Garbitu aurreko hautapena bilatu aurretik" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Txandakatu automatikoki ilara bat datozen sarrerentzako" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Sortu erreprodukzio-zerrenda berria bat datozen sarrerekin" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Bilatu" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 +msgid "Player:" +msgstr "Erreproduzitzailea:" + +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 +msgid "Select main player window font:" +msgstr "Hautatu erreproduzitzaile nagusiaren leihoko letra-tipoa:" + +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 +msgid "Playlist:" +msgstr "Erreprodukzio-zerrenda:" + +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 +msgid "Select playlist font:" +msgstr "Hautatu erreprodukzio-zerrendaren letra-tipoa:" + +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 +msgid "Skin" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 +msgid "Fonts" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 +msgid "Scroll song title" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 +msgid "Scroll song title in both directions" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 +msgid "Analyzer" +msgstr "Analizatzailea" + +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 +msgid "Scope" +msgstr "Esparrua" + +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 +msgid "Voiceprint / VU meter" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 +msgid "Off" +msgstr "Itzalita" + +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 +#: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 +msgid "Normal" +msgstr "Normala" + +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 +#: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 +msgid "Fire" +msgstr "Sua" + +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 +msgid "Vertical lines" +msgstr "Lerro bertikalak" + +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 +msgid "Lines" +msgstr "Marrak" + +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 +msgid "Bars" +msgstr "Barrak" + +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 +msgid "Slowest" +msgstr "Motelena" + +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 +msgid "Slow" +msgstr "Motela" + +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 +#: src/soxr/sox-resampler.cc:180 +msgid "Medium" +msgstr "Tartekoa" + +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 +msgid "Fast" +msgstr "Azkarra" + +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 +msgid "Fastest" +msgstr "Azkarrena" + +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 +msgid "Dots" +msgstr "Puntuak" + +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 +msgid "Line" +msgstr "Lerroak" + +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 +msgid "Solid" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 +msgid "Ice" +msgstr "Izotza" + +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 +msgid "Smooth" +msgstr "Leuna" + +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 +msgid "Coloring:" +msgstr "Margotu:" + +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 +msgid "Style:" +msgstr "Estiloa:" + +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 +msgid "Falloff:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 +msgid "Peak falloff:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 +msgid "Scope Style:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 +msgid "Voiceprint Coloring:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 +msgid "VU Meter Style:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 +msgid "Type" +msgstr "Mota" + +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 +msgid "Visualization type:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 +msgid "Analyzer" +msgstr "Analizatzailea" + +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 +msgid "Show peaks" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 +msgid "Visualization" +msgstr "Bisualizazioa" + +#: src/skins-qt/skinselector.cc:98 src/skins/skinselector.cc:111 +msgid "Archived Winamp 2.x skin" +msgstr "Konprimitutako Winamp 2.x azala" + +#: src/skins-qt/skinselector.cc:102 src/skins/skinselector.cc:115 +msgid "Unarchived Winamp 2.x skin" +msgstr "Deskonprimitutako Winamp 2.x azala" + +#: src/sndfile/plugin.cc:38 +msgid "Sndfile Plugin" +msgstr "Sndfile plugina" + +#: src/sndfile/plugin.cc:372 +msgid "" +"Based on the xmms_sndfile plugin:\n" +"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" +"\n" +"Adapted for Audacious by Tony Vroon \n" +"\n" +"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.\n" +"\n" +"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.\n" +"\n" +"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." +msgstr "" + +#: src/sndio/sndio.cc:43 +msgid "Sndio Output" +msgstr "" + +#: src/sndio/sndio.cc:98 +msgid "Device (blank for default):" +msgstr "" + +#: src/sndio/sndio.cc:100 +msgid "Save and restore volume:" +msgstr "" + +#: src/sndio/sndio.cc:181 +#, c-format +msgid "Sndio error: Unsupported audio format (%d)" +msgstr "" + +#: src/sndio/sndio.cc:192 +msgid "Sndio error: sio_open() failed" +msgstr "" + +#: src/sndio/sndio.cc:221 +msgid "Sndio error: sio_setpar() failed" +msgstr "" + +#: src/sndio/sndio.cc:233 +msgid "Sndio error: sio_start() failed" +msgstr "" + +#: src/songchange/song_change.cc:30 +msgid "Song Change" +msgstr "" + +#: src/songchange/song_change.cc:245 +msgid "Commands" +msgstr "" + +#: src/songchange/song_change.cc:247 +msgid "Command to run when starting a new song:" +msgstr "" + +#: src/songchange/song_change.cc:250 +msgid "Command to run at the end of a song:" +msgstr "" + +#: src/songchange/song_change.cc:253 +msgid "Command to run at the end of the playlist:" +msgstr "" + +#: src/songchange/song_change.cc:256 +msgid "Command to run when song title changes (for network streams):" +msgstr "" + +#: src/songchange/song_change.cc:259 +msgid "" +"You can use the following format codes, which will be replaced before " +"running the command (not all are useful for the end-of-playlist command):" +msgstr "" + +#: src/songchange/song_change.cc:262 +msgid "" +"%a: Artist\n" +"%b: Album\n" +"%c: Number of channels\n" +"%f: File name (full path)\n" +"%F: Frequency (Hertz)\n" +"%l: Length (milliseconds)\n" +"%n or %s: Formatted title (see playlist settings)\n" +"%p: Currently playing (1 or 0)\n" +"%r: Rate (bits per second)\n" +"%t: Playlist position\n" +"%T: Title (unformatted)" +msgstr "" + +#: src/songchange/song_change.cc:273 +msgid "" +"Parameters passed to the shell should be enclosed in quotation marks. " +"Unquoted parameters may lead to unexpected results." +msgstr "" + +#: src/song-info-qt/song-info.cc:30 +msgid "Song Info" +msgstr "Kantu informazioa" + +#: src/soxr/sox-resampler.cc:44 +msgid "SoX Resampler" +msgstr "" + +#: src/soxr/sox-resampler.cc:172 +msgid "" +"SoX Resampler Plugin for Audacious\n" +"Copyright 2013 Michał Lipski\n" +"\n" +"Based on Sample Rate Converter Plugin:\n" +"Copyright 2010-2012 John Lindgren" +msgstr "" + +#: src/soxr/sox-resampler.cc:178 +msgid "Quick" +msgstr "" + +#: src/soxr/sox-resampler.cc:179 +msgid "Low" +msgstr "" + +#: src/soxr/sox-resampler.cc:181 +msgid "High" +msgstr "" + +#: src/soxr/sox-resampler.cc:182 +msgid "Very High" +msgstr "" + +#: src/soxr/sox-resampler.cc:183 +msgid "Ultra High" +msgstr "" + +#: src/soxr/sox-resampler.cc:187 +msgid "Minimum" +msgstr "" + +#: src/soxr/sox-resampler.cc:188 +msgid "Intermediate" +msgstr "" + +#: src/soxr/sox-resampler.cc:193 +msgid "Quality:" +msgstr "Kalitatea:" + +#: src/soxr/sox-resampler.cc:196 +msgid "Phase:" +msgstr "" + +#: src/soxr/sox-resampler.cc:200 +msgid "Allow aliasing" +msgstr "" + +#: src/soxr/sox-resampler.cc:202 +msgid "Use steep filter" +msgstr "" + +#: src/speedpitch/speed-pitch.cc:54 +msgid "Speed and Pitch" +msgstr "Abiadura eta Tonoa" + +#: src/speedpitch/speed-pitch.cc:247 +msgid "Speed" +msgstr "" + +#: src/speedpitch/speed-pitch.cc:248 +msgid "Decouple from pitch" +msgstr "" + +#: src/speedpitch/speed-pitch.cc:250 src/speedpitch/speed-pitch.cc:258 +msgid "Multiplier:" +msgstr "" + +#: src/speedpitch/speed-pitch.cc:254 +msgid "Pitch" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:44 src/statusicon/statusicon.cc:47 +msgid "Status Icon" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:65 +msgid "" +"Status Icon Plugin (partial port for Qt interface)\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 Michał Lipski \n" +"Copyright 2015 Eugene Paskevich \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager." +msgstr "" + +#: src/statusicon-qt/statusicon.cc:86 src/statusicon/statusicon.cc:380 +msgid "Mouse Scroll Action" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:87 src/statusicon/statusicon.cc:381 +msgid "Change volume" +msgstr "Aldatu bolumena" + +#: src/statusicon-qt/statusicon.cc:90 src/statusicon/statusicon.cc:384 +msgid "Change playing song" +msgstr "Aldatu erreprodukzioaren abestia" + +#: src/statusicon-qt/statusicon.cc:93 src/statusicon/statusicon.cc:387 +msgid "Other Settings" +msgstr "Bestelako Ezarpenak" + +#: src/statusicon-qt/statusicon.cc:94 src/statusicon/statusicon.cc:388 +msgid "Disable the popup window" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:96 src/statusicon/statusicon.cc:390 +msgid "Close to the system tray" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:98 src/statusicon/statusicon.cc:392 +msgid "Advance in playlist when scrolling upward" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:113 src/statusicon/statusicon.cc:283 +msgid "Se_ttings ..." +msgstr "" + +#: src/statusicon/statusicon.cc:373 +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 Michał Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager." +msgstr "" + +#: src/stereo_plugin/stereo.cc:19 +msgid "Extra Stereo" +msgstr "" + +#: src/stereo_plugin/stereo.cc:36 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin, 1999" +msgstr "" + +#: src/stereo_plugin/stereo.cc:44 +msgid "Extra Stereo" +msgstr "" + +#: src/streamtuner/icecast-model.cc:126 src/streamtuner/shoutcast-model.cc:131 +msgid "Type" +msgstr "Mota" + +#: src/streamtuner/icecast-model.cc:132 +msgid "Current Song" +msgstr "Uneko kanta" + +#: src/streamtuner/icecast-model.cc:164 +msgid "Other" +msgstr "" + +#: src/streamtuner/ihr-model.cc:63 +msgid "Market" +msgstr "" + +#: src/streamtuner/ihr-model.cc:156 +msgid "Call Letters" +msgstr "" + +#: src/streamtuner/ihr-model.cc:162 +msgid "Description" +msgstr "Deskribapen" + +#: src/streamtuner/shoutcast-model.cc:128 +msgid "Listeners" +msgstr "Entzuleak" + +#: src/streamtuner/shoutcast-model.cc:188 +msgid "Top 500 Stations" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:189 +msgid "Alternative" +msgstr "Alternatiboa" + +#: src/streamtuner/shoutcast-model.cc:190 +msgid "Blues" +msgstr "Blues-a" + +#: src/streamtuner/shoutcast-model.cc:191 +msgid "Classical" +msgstr "Klasikoa" + +#: src/streamtuner/shoutcast-model.cc:192 +msgid "Country" +msgstr "Country" + +#: src/streamtuner/shoutcast-model.cc:193 +msgid "Decades" +msgstr "Kamarkadak" + +#: src/streamtuner/shoutcast-model.cc:194 +msgid "Easy Listening" +msgstr "Entzuteko erraza" + +#: src/streamtuner/shoutcast-model.cc:195 +msgid "Electronic" +msgstr "Elektroniko" + +#: src/streamtuner/shoutcast-model.cc:196 +msgid "Folk" +msgstr "Folka" + +#: src/streamtuner/shoutcast-model.cc:197 +msgid "Inspirational" +msgstr "Inspirazio lanak" + +#: src/streamtuner/shoutcast-model.cc:198 +msgid "International" +msgstr "Nazioarteko" + +#: src/streamtuner/shoutcast-model.cc:199 +msgid "Jazz" +msgstr "Jazza" + +#: src/streamtuner/shoutcast-model.cc:200 +msgid "Latin" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:201 +msgid "Metal" +msgstr "Metala" + +#: src/streamtuner/shoutcast-model.cc:203 +msgid "New Age" +msgstr "New Age" + +#: src/streamtuner/shoutcast-model.cc:204 +msgid "Pop" +msgstr "Pop-a" + +#: src/streamtuner/shoutcast-model.cc:205 +msgid "Public Radio" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:206 +msgid "R&B and Urban" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:207 +msgid "Rap" +msgstr "Rap-a" + +#: src/streamtuner/shoutcast-model.cc:208 +msgid "Reggae" +msgstr "Reggae" + +#: src/streamtuner/shoutcast-model.cc:209 +msgid "Rock" +msgstr "Rocka" + +#: src/streamtuner/shoutcast-model.cc:210 +msgid "Seasonal and Holiday" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:211 +msgid "Soundtracks" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:212 +msgid "Talk" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:213 +msgid "Themes" +msgstr "Motiboak" + +#: src/streamtuner/streamtuner.cc:59 +msgid "Shoutcast" +msgstr "" + +#: src/streamtuner/streamtuner.cc:60 +msgid "Icecast" +msgstr "" + +#: src/streamtuner/streamtuner.cc:71 +msgid "Stream Tuner" +msgstr "" + +#: src/tonegen/tonegen.cc:45 +msgid "Tone Generator" +msgstr "Tonu-sortzailea" + +#: src/tonegen/tonegen.cc:92 +#, c-format +msgid "%s %.1f Hz" +msgstr "%s %.1f Hz" + +#: src/tonegen/tonegen.cc:92 +msgid "Tone Generator: " +msgstr "Tonu-sortzailea: " + +#: src/tonegen/tonegen.cc:161 +msgid "" +"Sine tone generator by Håvard Kvålen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" +msgstr "" + +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Mezuak ezkutatu dira.)" + +#: src/ui-common/dialogs-qt.cc:52 +msgid "Working ..." +msgstr "Lanean ..." + +#: src/ui-common/dialogs-qt.cc:73 +msgid "Information" +msgstr "Informazio" + +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + +#: src/voice_removal/voice_removal.cc:28 +msgid "Voice Removal" +msgstr "Ahotsa ezabatzea" + +#: src/vorbis/vorbis.cc:431 +msgid "" +"Audacious Ogg Vorbis Decoder\n" +"\n" +"Based on the Xiph.org Foundation's Ogg Vorbis Plugin:\n" +"http://www.xiph.org/\n" +"\n" +"Original code by:\n" +"Tony Arcieri \n" +"\n" +"Contributions from:\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Håvard Kvålen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin " +msgstr "" + +#: src/vorbis/vorbis.h:18 +msgid "Ogg Vorbis Decoder" +msgstr "Ogg Vorbis Deskodetzailea" + +#: src/vtx/info.cc:24 +#, c-format +msgid "Details about %s" +msgstr "" + +#: src/vtx/info.cc:26 +msgid "" +"Title: %t\n" +"Author: %a\n" +"From: %f\n" +"Tracker: %T\n" +"Comment: %C\n" +"Chip type: %c\n" +"Stereo: %s\n" +"Loop: %l\n" +"Chip freq: %F\n" +"Player Freq: %P\n" +"Year: %y" +msgstr "" + +#: src/vtx/vtx.cc:38 +msgid "VTX Decoder" +msgstr "VTX Deskodetzailea" + +#: src/vtx/vtx.cc:178 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Based on in_vtx.dll by Roman Sherbakov \n" +"Audacious plugin by Pavel Vymetalek " +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:31 +msgid "" +"VU Meter Plugin for Audacious\n" +"Copyright 2017-2019 Marc Sánchez Fauste" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:35 +msgid "VU Meter Settings" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:37 +msgid "Peak hold time:" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:42 +msgid "Fall-off time:" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:44 +msgid "dB/second" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:46 +msgid "Display legend" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.h:37 +msgid "VU Meter" +msgstr "" + +#: src/waveout/waveout.cc:43 +msgid "Win32 waveOut" +msgstr "" + +#: src/waveout/waveout.cc:69 +msgid "" +"Win32 waveOut Plugin for Audacious\n" +"Copyright 2016 John Lindgren" +msgstr "" + +#: src/wavpack/wavpack.cc:25 +msgid "WavPack Decoder" +msgstr "WavPack Deskodetzailea" + +#: src/wavpack/wavpack.cc:217 +msgid "lossy (hybrid)" +msgstr "" + +#: src/wavpack/wavpack.cc:219 +msgid "lossy" +msgstr "" + +#: src/wavpack/wavpack.cc:259 +msgid "" +"Copyright 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan." +msgstr "" + +#: src/xsf/plugin.cc:74 +msgid "2SF Decoder" +msgstr "2SF Deskodetzailea" + +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 +msgid "XSF Configuration" +msgstr "" + +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + +#: src/xspf/xspf.cc:95 +msgid "XML Shareable Playlists (XSPF)" +msgstr "" diff -Nru audacious-plugins-4.1/po/fa_IR.po audacious-plugins-4.3.1/po/fa_IR.po --- audacious-plugins-4.1/po/fa_IR.po 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/po/fa_IR.po 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,4436 @@ +# Persian (Iran) translation for Audacious Plugins +# Copyright (C) Audacious translators +# This file is distributed under the same license as the Audacious Plugins package. +# +# Translators: +# Alireza kia , 2021 +# Saeed Derakhshan , 2013 +# vandu , 2014 +msgid "" +msgstr "" +"Project-Id-Version: Audacious Plugins\n" +"Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Alireza kia , 2021\n" +"Language-Team: Persian (Iran) (http://www.transifex.com/audacious/audacious/" +"language/fa_IR/)\n" +"Language: fa_IR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: src/aac/aac.cc:19 +msgid "AAC (Raw) Decoder" +msgstr "" + +#: src/adplug/adplug-xmms.cc:70 +msgid "AdPlug (AdLib Player)" +msgstr "" + +#: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 +msgid "sequenced" +msgstr "" + +#: src/adplug/adplug-xmms.cc:349 src/sid/xs_config.cc:61 +msgid "Output" +msgstr "خروجی" + +#: src/adplug/adplug-xmms.cc:350 +msgid "OPL Emulator:" +msgstr "" + +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "نرخ نمونه برداری:" + +#: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 +#: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 +#: src/modplug/plugin_main.cc:77 src/resample/resample.cc:201 +#: src/resample/resample.cc:207 src/resample/resample.cc:211 +#: src/resample/resample.cc:215 src/resample/resample.cc:219 +#: src/resample/resample.cc:223 src/resample/resample.cc:227 +#: src/resample/resample.cc:231 src/resample/resample.cc:235 +#: src/resample/resample.cc:239 src/resample/resample.cc:243 +#: src/sid/xs_config.cc:67 src/soxr/sox-resampler.cc:205 +msgid "Hz" +msgstr "هرتز" + +#: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 +#: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 +msgid "Miscellaneous" +msgstr "" + +#: src/adplug/adplug-xmms.cc:356 +msgid "Repeat song in endless loop" +msgstr "" + +#: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 +msgid "Album Art" +msgstr "" + +#: src/alsa/alsa.h:64 +msgid "ALSA Output" +msgstr "خروجی ALSA " + +#: src/alsa/config.cc:28 +msgid "" +"ALSA Output Plugin for Audacious\n" +"Copyright 2009-2012 John Lindgren\n" +"\n" +"My thanks to William Pitcock, author of the ALSA Output Plugin NG, whose " +"code served as a reference when the ALSA manual was not enough." +msgstr "" + +#: src/alsa/config.cc:61 +msgid "(no description)" +msgstr "(بدون شرح)" + +#: src/alsa/config.cc:166 +msgid "Default PCM device" +msgstr "ابزار PCM پیش‌فرض" + +#: src/alsa/config.cc:188 +msgid "Default mixer device" +msgstr "ابزار میکسر پیش‌فرض" + +#: src/alsa/config.cc:296 +msgid "PCM device:" +msgstr "ابزار PCM:" + +#: src/alsa/config.cc:299 +msgid "Mixer device:" +msgstr "ابزار میکسر:" + +#: src/alsa/config.cc:302 +msgid "Mixer element:" +msgstr "عنصر میکسر:" + +#: src/amidiplug/amidi-plug.cc:42 +msgid "AMIDI-Plug (MIDI Player)" +msgstr "" + +#: src/amidiplug/amidi-plug.cc:445 +msgid "" +"AMIDI-Plug\n" +"modular MIDI music player\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"written by Giacomo Lozito\n" +"\n" +"\n" +"special thanks to...\n" +"\n" +"Clemens Ladisch and Jaroslav Kysela\n" +"for their cool programs aplaymidi and amixer; those\n" +"were really useful, along with alsa-lib docs, in order\n" +"to learn more about the ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"for the nice midi keyboard logo\n" +"\n" +"Tony Vroon\n" +"for the good help with alpha testing" +msgstr "" + +#: src/amidiplug/i_configure.cc:94 +msgid "Override default gain:" +msgstr "" + +#: src/amidiplug/i_configure.cc:102 +msgid "Override default polyphony:" +msgstr "" + +#: src/amidiplug/i_configure.cc:110 +msgid "Override default reverb:" +msgstr "" + +#: src/amidiplug/i_configure.cc:112 src/amidiplug/i_configure.cc:120 +msgid "On" +msgstr "" + +#: src/amidiplug/i_configure.cc:118 +msgid "Override default chorus:" +msgstr "" + +#: src/amidiplug/i_configure.cc:128 src/console/plugin.cc:29 +msgid "Playback" +msgstr "" + +#: src/amidiplug/i_configure.cc:129 +msgid "Transpose:" +msgstr "" + +#: src/amidiplug/i_configure.cc:131 src/speedpitch/speed-pitch.cc:257 +msgid "semitones" +msgstr "" + +#: src/amidiplug/i_configure.cc:132 +msgid "Drum shift:" +msgstr "" + +#: src/amidiplug/i_configure.cc:134 +msgid "note numbers" +msgstr "" + +#: src/amidiplug/i_configure.cc:135 +msgid "Skip leading silence" +msgstr "" + +#: src/amidiplug/i_configure.cc:137 +msgid "Skip trailing silence" +msgstr "" + +#: src/amidiplug/i_configure.cc:141 +msgid "SoundFont" +msgstr "" + +#: src/amidiplug/i_configure.cc:148 +msgid "Synthesizer" +msgstr "" + +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 +msgid "AMIDI-Plug - select SoundFont file" +msgstr "AMIDI-Plug - فایل SoundFont انتخاب شود" + +#: src/amidiplug/i_configure-fluidsynth.cc:61 +msgid "_Cancel" +msgstr "_انصراف" + +#: src/amidiplug/i_configure-fluidsynth.cc:62 +msgid "_Open" +msgstr "_باز کردن" + +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 +msgid "File name" +msgstr "نام فایل" + +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 +msgid "Size (bytes)" +msgstr "اندازه (بایت)" + +#: src/amidiplug/i_fileinfo.cc:184 +msgid "Name:" +msgstr "نام:" + +#: src/amidiplug/i_fileinfo.cc:202 +msgid " MIDI Info " +msgstr " ‏اطلاعات MIDI ‏" + +#: src/amidiplug/i_fileinfo.cc:216 +msgid "Format:" +msgstr "فرمت:" + +#: src/amidiplug/i_fileinfo.cc:219 +msgid "Length (msec):" +msgstr "مدت زمان (میلی‌ثانیه):" + +#: src/amidiplug/i_fileinfo.cc:222 +msgid "No. of Tracks:" +msgstr "تعداد آهنگ ها:" + +#: src/amidiplug/i_fileinfo.cc:228 +msgid "variable" +msgstr "متغیر" + +#: src/amidiplug/i_fileinfo.cc:230 +msgid "BPM:" +msgstr "BPM:" + +#: src/amidiplug/i_fileinfo.cc:238 +msgid "BPM (wavg):" +msgstr "‎BPM (wavg)‎:" + +#: src/amidiplug/i_fileinfo.cc:241 +msgid "Time Div:" +msgstr "قسمت زمان:" + +#: src/amidiplug/i_fileinfo.cc:252 +msgid " MIDI Comments and Lyrics " +msgstr " توضیحات و ترانه‌های MIDI‏ " + +#: src/amidiplug/i_fileinfo.cc:299 +msgid "* no comments available in this MIDI file *" +msgstr "* توضیحاتی در این فایل MIDI وجود ندارد *" + +#: src/amidiplug/i_fileinfo.cc:311 +msgid "* no lyrics available in this MIDI file *" +msgstr "* ترانه‌ای در این فایل MIDI وجود ندارد *" + +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 +msgid "_Close" +msgstr "بستن" + +#: src/amidiplug/i_fileinfo.cc:346 +msgid " (invalid UTF-8)" +msgstr "(UTF-8 نامعتبر)" + +#: src/ampache/ampache.cc:33 +msgid "Ampache Browser" +msgstr "" + +#: src/ampache/ampache.cc:46 +msgid "" +"Ampache Browser for Audacious\n" +"http://ampache-browser.org/\n" +"\n" +"Copyright (C) Róbert Čerňanský and John Lindgren\n" +"License: GNU GPLv3" +msgstr "" + +#: src/aosd/aosd.cc:31 +msgid "" +"Audacious OSD\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"\n" +"Written by Giacomo Lozito \n" +"\n" +"Based in part on Evan Martin's Ghosd library:\n" +"http://neugierig.org/software/ghosd/" +msgstr "" + +#: src/aosd/aosd.h:37 +msgid "AOSD (On-Screen Display)" +msgstr "" + +#: src/aosd/aosd_style.cc:54 +msgid "Rectangle" +msgstr "مستطیل" + +#: src/aosd/aosd_style.cc:59 +msgid "Rounded Rectangle" +msgstr "مستطیل گوشه‌گرد" + +#: src/aosd/aosd_style.cc:64 +msgid "Concave Rectangle" +msgstr "مستطیل مقعر" + +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 +msgid "None" +msgstr "هیچکدام" + +#: src/aosd/aosd_trigger.cc:49 +msgid "Playback Start" +msgstr "شروع پخش" + +#: src/aosd/aosd_trigger.cc:50 +msgid "Triggers OSD when a playlist entry is played." +msgstr "وقتی یکی از گزینه‌های لیست پخش اجرا شد OSD اجرا شود." + +#: src/aosd/aosd_trigger.cc:55 +msgid "Title Change" +msgstr "تغییر عنوان" + +#: src/aosd/aosd_trigger.cc:56 +msgid "Triggers OSD when the song title changes (for internet streams)." +msgstr "" + +#: src/aosd/aosd_trigger.cc:61 +msgid "Pause On" +msgstr "توقف روشن" + +#: src/aosd/aosd_trigger.cc:62 +msgid "Triggers OSD when playback is paused." +msgstr "وقتی عملیات پخش متوقف شد OSD اجرا شود." + +#: src/aosd/aosd_trigger.cc:67 +msgid "Pause Off" +msgstr "توقف خاموش" + +#: src/aosd/aosd_trigger.cc:68 +msgid "Triggers OSD when playback is unpaused." +msgstr "وقتی از پخش از حالت توقف خارج شد OSD اجرا شود." + +#: src/aosd/aosd_ui.cc:204 +msgid "Placement" +msgstr "محل قرارگیری" + +#: src/aosd/aosd_ui.cc:241 +msgid "Relative X offset:" +msgstr "فاصله نسبی از عرض:" + +#: src/aosd/aosd_ui.cc:245 +msgid "Relative Y offset:" +msgstr "فاصله نسبی از ارتفاع:" + +#: src/aosd/aosd_ui.cc:249 +msgid "Max OSD width:" +msgstr "حداکثر طول OSD:" + +#: src/aosd/aosd_ui.cc:281 +msgid "Multi-Monitor options" +msgstr "گزینه‌های حالت چندنمایشگره" + +#: src/aosd/aosd_ui.cc:285 +msgid "Display OSD using:" +msgstr "نمایش OSD بوسیله:" + +#: src/aosd/aosd_ui.cc:287 +msgid "all monitors" +msgstr "همه نمایشگرها" + +#: src/aosd/aosd_ui.cc:290 +#, c-format +msgid "monitor %i" +msgstr "نمایشگر ‎%i" + +#: src/aosd/aosd_ui.cc:342 +msgid "Timing (ms)" +msgstr "زمان‌بندی (برحسب میلی‌ثانیه)" + +#: src/aosd/aosd_ui.cc:347 +msgid "Display:" +msgstr "نمایش:" + +#: src/aosd/aosd_ui.cc:352 +msgid "Fade in:" +msgstr "نمایش تدریجی:" + +#: src/aosd/aosd_ui.cc:357 +msgid "Fade out:" +msgstr "خروج تدریجی:" + +#: src/aosd/aosd_ui.cc:442 +msgid "Fonts" +msgstr "فونت‌ها" + +#: src/aosd/aosd_ui.cc:449 +#, c-format +msgid "Font %i:" +msgstr "فونت ‎%i:" + +#: src/aosd/aosd_ui.cc:466 +msgid "Shadow" +msgstr "سایه" + +#: src/aosd/aosd_ui.cc:589 +msgid "Render Style" +msgstr "شیوه رندر" + +#: src/aosd/aosd_ui.cc:605 +msgid "Colors" +msgstr "رنگ‌ها" + +#: src/aosd/aosd_ui.cc:616 +#, c-format +msgid "Color %i:" +msgstr "رنگ ‎%i:" + +#: src/aosd/aosd_ui.cc:714 +msgid "Enable trigger" +msgstr "فعال‌سازی اجرا" + +#: src/aosd/aosd_ui.cc:741 +msgid "Event" +msgstr "رخداد" + +#: src/aosd/aosd_ui.cc:768 +msgid "Composite manager detected" +msgstr "مدیرکامپوزیت یافت شد" + +#: src/aosd/aosd_ui.cc:775 +msgid "" +"Composite manager not detected;\n" +"unless you know that you have one running, please activate a composite " +"manager otherwise the OSD won't work properly" +msgstr "" +"مدیر کامپوزیت یافت نشد؛\n" +"اگر می‌دانید در حال اجراست، لطفا یک مدیر کامپوزیت را فعال کنید، در غیراینصورت " +"OSD‌ بدرسی نشان داده نمی‌شود" + +#: src/aosd/aosd_ui.cc:783 +msgid "Composite manager not required for fake transparency" +msgstr "برای شفافیت ساختگی نیازی به مدیر کامپوزیت نیست" + +#: src/aosd/aosd_ui.cc:820 +msgid "Transparency" +msgstr "شفافیت" + +#: src/aosd/aosd_ui.cc:826 +msgid "Fake transparency" +msgstr "شفافیت ساختگی" + +#: src/aosd/aosd_ui.cc:828 +msgid "Real transparency (requires X Composite Ext.)" +msgstr "شفافیت واقعی (به افزونه کامپوزیت X نیاز دارد)" + +#: src/aosd/aosd_ui.cc:875 +msgid "Composite extension not loaded" +msgstr "افزونه کامپوزیت بارگذاری نشده است" + +#: src/aosd/aosd_ui.cc:892 +#, c-format +msgid "Audacious OSD" +msgstr "Audacious OSD" + +#: src/aosd/aosd_ui.cc:955 +msgid "Position" +msgstr "مکان" + +#: src/aosd/aosd_ui.cc:960 +msgid "Animation" +msgstr "پویانمایی" + +#: src/aosd/aosd_ui.cc:965 +msgid "Text" +msgstr "متن" + +#: src/aosd/aosd_ui.cc:970 +msgid "Decoration" +msgstr "تزیینات" + +#: src/aosd/aosd_ui.cc:975 +msgid "Trigger" +msgstr "تریگر" + +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 +msgid "Misc" +msgstr "متفرقه" + +#: src/aosd/aosd_ui.cc:989 +msgid "Test" +msgstr "آزمایش" + +#: src/asx3/asx3.cc:35 +msgid "ASXv3 Playlists" +msgstr "لیست پخش های ASXv3" + +#: src/asx/asx.cc:33 +msgid "ASXv1/ASXv2 Playlists" +msgstr "" + +#: src/audpl/audpl.cc:33 +msgid "Audacious Playlists (audpl)" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 +msgid "Color" +msgstr "رنگ" + +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 +msgid "Blur Scope" +msgstr "" + +#: src/bs2b/plugin.cc:38 +msgid "Bauer Stereophonic-to-Binaural (BS2B)" +msgstr "" + +#: src/bs2b/plugin.cc:129 +msgid "Presets:" +msgstr "" + +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "پیش‌فرض" + +#: src/bs2b/plugin.cc:136 +msgid "Feed level:" +msgstr "" + +#: src/bs2b/plugin.cc:138 +msgid "x1/10 dB" +msgstr "" + +#: src/bs2b/plugin.cc:139 +msgid "Cut frequency:" +msgstr "" + +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 +msgid "Spectrum Analyzer" +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:71 +msgid "Audio CD Plugin" +msgstr "پلوگین سی دی صوتی" + +#: src/cdaudio/cdaudio-ng.cc:118 +msgid "" +"Copyright (C) 2007-2012 Calin Crisan and others.\n" +"\n" +"Many thanks to libcdio developers \n" +"and to libcddb developers .\n" +"\n" +"Also thank you to Tony Vroon for mentoring and guiding me.\n" +"\n" +"This was a Google Summer of Code 2007 project." +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:134 +msgid "Device" +msgstr "وسیله" + +#: src/cdaudio/cdaudio-ng.cc:135 +msgid "Read speed:" +msgstr "سرعت خوانش:" + +#: src/cdaudio/cdaudio-ng.cc:138 +msgid "Override device:" +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:140 +msgid "Metadata" +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:141 +msgid "Use CD-Text" +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:143 +msgid "Use CDDB" +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:145 +msgid "Use HTTP instead of CDDBP" +msgstr "بجای CDDBP از HTTP استفاده کن" + +#: src/cdaudio/cdaudio-ng.cc:148 +msgid "Server:" +msgstr "سرور:" + +#: src/cdaudio/cdaudio-ng.cc:152 +msgid "Path:" +msgstr "مسیر:" + +#: src/cdaudio/cdaudio-ng.cc:156 +msgid "Port:" +msgstr "پورت:" + +#: src/cdaudio/cdaudio-ng.cc:220 +msgid "Failed to initialize cdio subsystem." +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:250 +#, c-format +msgid "Invalid URI %s." +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:252 +#, c-format +msgid "Track %d not found." +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:254 +#, c-format +msgid "Track %d is a data track." +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:329 +msgid "Error reading audio CD." +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:398 +msgid "Audio CD" +msgstr "سی‌دی صوتی" + +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 +#, c-format +msgid "Failed to open CD device %s." +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:446 +msgid "No audio capable CD drive found." +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:469 +msgid "Drive is empty." +msgstr "درایو خالی است." + +#: src/cdaudio/cdaudio-ng.cc:471 +msgid "Unsupported disk type." +msgstr "نوع دیسک پشتیبانی نمی‌شود." + +#: src/cdaudio/cdaudio-ng.cc:495 +msgid "Failed to finish initializing opened CD drive." +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:508 +msgid "Failed to retrieve first/last track number." +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:529 +#, c-format +msgid "Cannot read start/end LSN for track %d." +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:611 +msgid "Failed to create the CDDB connection." +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:677 +msgid "Failed to query the CDDB server" +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:679 +#, c-format +msgid "Failed to query the CDDB server: %s" +msgstr "" + +#: src/cdaudio/cdaudio-ng.cc:703 +#, c-format +msgid "Failed to read the CDDB info: %s" +msgstr "" + +#: src/cd-menu-items/cd-menu-items.cc:33 +msgid "Audio CD Menu Items" +msgstr "" + +#: src/cd-menu-items/cd-menu-items.cc:45 +msgid "Pla_y CD" +msgstr "" + +#: src/cd-menu-items/cd-menu-items.cc:45 +msgid "_Add CD" +msgstr "" + +#: src/compressor/compressor.cc:45 +msgid "Compression" +msgstr "" + +#: src/compressor/compressor.cc:46 +msgid "Center volume:" +msgstr "متمرکز کردن صدا:" + +#: src/compressor/compressor.cc:49 +msgid "Dynamic range:" +msgstr "بازه متغیر:" + +#: src/compressor/compressor.cc:57 +msgid "" +"Dynamic Range Compression Plugin for Audacious\n" +"Copyright 2010-2014 John Lindgren" +msgstr "" + +#: src/compressor/compressor.cc:64 +msgid "Dynamic Range Compressor" +msgstr "" + +#: src/console/plugin.cc:15 +msgid "" +"Console music decoder engine based on Game_Music_Emu 0.5.2\n" +"Supported formats: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"\n" +"Audacious plugin by:\n" +"William Pitcock \n" +"Shay Green " +msgstr "" + +#: src/console/plugin.cc:30 +msgid "Bass:" +msgstr "باس:" + +#: src/console/plugin.cc:33 +msgid "Treble:" +msgstr "صدای زیر:" + +#: src/console/plugin.cc:36 +msgid "Echo:" +msgstr "پژواک:" + +#: src/console/plugin.cc:39 +msgid "Default song length:" +msgstr "طول پیش فرض آهنگ:" + +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "ثانیه‌ها" + +#: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 +msgid "Resampling" +msgstr "" + +#: src/console/plugin.cc:43 +msgid "Enable audio resampling" +msgstr "نمونه‌گیری مجدد صدا انجام شود" + +#: src/console/plugin.cc:49 +msgid "SPC" +msgstr "" + +#: src/console/plugin.cc:50 +msgid "Ignore length from SPC tags" +msgstr "طول برچسب‌های SPC نادیده گرفته شود" + +#: src/console/plugin.cc:52 +msgid "Increase reverb" +msgstr "افزایش انعکاس" + +#: src/console/plugin.h:26 +msgid "Game Console Music Decoder" +msgstr "دیکدر موسیقی کنسول بازی" + +#: src/coreaudio/coreaudio.cc:53 +msgid "CoreAudio output" +msgstr "" + +#: src/coreaudio/coreaudio.cc:155 +msgid "" +"CoreAudio Output Plugin for Audacious\n" +"Copyright 2014 William Pitcock\n" +"Copyright 2017,18 René J.V. Bertin\n" +" (original code and code adapted from\n" +" Apple examples, (C) Apple 2013)\n" +"\n" +"Based on SDL Output Plugin for Audacious\n" +"Copyright 2010 John Lindgren" +msgstr "" + +#: src/coreaudio/coreaudio.cc:171 +msgid "Use exclusive mode" +msgstr "" + +#: src/coreaudio/coreaudio.cc:173 +msgid "Use bit perfect audio (adapt device sampling rate)" +msgstr "" + +#: src/crossfade/crossfade.cc:43 +msgid "" +"Crossfade Plugin for Audacious\n" +"Copyright 2010-2014 John Lindgren" +msgstr "" + +#: src/crossfade/crossfade.cc:47 +msgid "Crossfade" +msgstr "" + +#: src/crossfade/crossfade.cc:48 +msgid "On automatic song change" +msgstr "" + +#: src/crossfade/crossfade.cc:50 src/crossfade/crossfade.cc:56 +msgid "Overlap:" +msgstr "" + +#: src/crossfade/crossfade.cc:54 +msgid "On seek or manual song change" +msgstr "" + +#: src/crossfade/crossfade.cc:60 +msgid "Tip" +msgstr "" + +#: src/crossfade/crossfade.cc:61 +msgid "" +"For better crossfading, enable\n" +"the Silence Removal effect." +msgstr "" + +#: src/crossfade/crossfade.cc:71 +msgid "Crossfade" +msgstr "" + +#: src/crystalizer/crystalizer.cc:31 +msgid "Crystalizer" +msgstr "" + +#: src/crystalizer/crystalizer.cc:32 src/stereo_plugin/stereo.cc:45 +msgid "Intensity:" +msgstr "" + +#: src/crystalizer/crystalizer.cc:43 +msgid "Crystalizer" +msgstr "" + +#: src/cue/cue.cc:42 +msgid "Cue Sheet Plugin" +msgstr "" + +#: src/delete-files/delete-files.cc:53 src/delete-files/delete-files.cc:215 +#: src/delete-files/delete-files.cc:230 +msgid "Delete Files" +msgstr "حذف فایل" + +#: src/delete-files/delete-files.cc:120 +msgid "No files are selected." +msgstr "فایلی انتخاب نشده است." + +#: src/delete-files/delete-files.cc:125 +#, c-format +msgid "Do you want to move %s to the trash?" +msgstr "" + +#: src/delete-files/delete-files.cc:126 +#, c-format +msgid "Do you want to permanently delete %s?" +msgstr "" + +#: src/delete-files/delete-files.cc:133 +#, c-format +msgid "Do you want to move %d files to the trash?" +msgstr "" + +#: src/delete-files/delete-files.cc:134 +#, c-format +msgid "Do you want to permanently delete %d files?" +msgstr "" + +#: src/delete-files/delete-files.cc:146 +msgid "Move to trash" +msgstr "انتقال به سطل زباله" + +#: src/delete-files/delete-files.cc:146 +msgid "Delete" +msgstr "حذف" + +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 +msgid "Cancel" +msgstr "انصراف" + +#: src/delete-files/delete-files.cc:267 +msgid "Delete Selected Files" +msgstr "حذف فایل های انتخابی" + +#: src/delete-files/delete-files.cc:287 +msgid "Delete Method" +msgstr "" + +#: src/delete-files/delete-files.cc:288 +msgid "Move to trash instead of deleting immediately" +msgstr "به جای حذف سریع به زباله دانی منتقل شود" + +#: src/echo_plugin/echo.cc:9 +msgid "" +"Echo Plugin\n" +"By Johan Levin, 1999\n" +"Surround echo by Carl van Schaik, 1999\n" +"Updated for Audacious by William Pitcock and John Lindgren, 2010-2014" +msgstr "" + +#: src/echo_plugin/echo.cc:21 +msgid "Echo" +msgstr "" + +#: src/echo_plugin/echo.cc:22 src/modplug/plugin_main.cc:72 +#: src/modplug/plugin_main.cc:82 +msgid "Delay:" +msgstr "" + +#: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 +msgid "ms" +msgstr "میلی ثانیه" + +#: src/echo_plugin/echo.cc:25 +msgid "Feedback:" +msgstr "بازخورد:" + +#: src/echo_plugin/echo.cc:28 src/modplug/plugin_main.cc:86 +msgid "Volume:" +msgstr "" + +#: src/echo_plugin/echo.cc:39 +msgid "Echo" +msgstr "پژواک" + +#: src/ffaudio/ffaudio-core.cc:50 +msgid "FFmpeg Plugin" +msgstr "پلوگین FFmpeg" + +#: src/ffaudio/ffaudio-core.cc:650 +msgid "" +"Multi-format audio decoding plugin for Audacious using\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"\n" +"Audacious plugin by:\n" +"William Pitcock \n" +"Matti Hämäläinen " +msgstr "" + +#: src/filewriter/filewriter.cc:48 +msgid "FileWriter Plugin" +msgstr "" + +#: src/filewriter/filewriter.cc:316 +#, c-format +msgid "" +"Error opening %s:\n" +"%s" +msgstr "" + +#: src/filewriter/filewriter.cc:358 +msgid "" +"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.\n" +"\n" +"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.\n" +"\n" +"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." +msgstr "" + +#: src/filewriter/filewriter.cc:385 +msgid "Output file format:" +msgstr "فرمت فایل خروجی:" + +#: src/filewriter/filewriter.cc:389 +msgid "Save into original directory" +msgstr "ذخیره در پوشه اصلی" + +#: src/filewriter/filewriter.cc:392 +msgid "Save into custom directory:" +msgstr "" + +#: src/filewriter/filewriter.cc:400 +msgid "Generate file name from:" +msgstr "" + +#: src/filewriter/filewriter.cc:401 +msgid "Original file name" +msgstr "نام اصلی فایل" + +#: src/filewriter/filewriter.cc:404 +msgid "Original file name (no suffix)" +msgstr "نام اصلی فایل (بدون پسوند)" + +#: src/filewriter/filewriter.cc:407 +msgid "Original file tag" +msgstr "" + +#: src/filewriter/filewriter.cc:411 +msgid "Prepend track number to file name" +msgstr "" + +#: src/filewriter/filewriter.cc:417 src/filewriter/filewriter.cc:449 +msgid "Auto" +msgstr "خودکار" + +#: src/filewriter/filewriter.cc:418 +msgid "8000 Hz" +msgstr "8000 هرتز" + +#: src/filewriter/filewriter.cc:419 +msgid "11025 Hz" +msgstr "11025 هرتز" + +#: src/filewriter/filewriter.cc:420 +msgid "12000 Hz" +msgstr "12000 هرتز" + +#: src/filewriter/filewriter.cc:421 +msgid "16000 Hz" +msgstr "16000 هرتز" + +#: src/filewriter/filewriter.cc:422 +msgid "22050 Hz" +msgstr "22050 هرتز" + +#: src/filewriter/filewriter.cc:423 +msgid "24000 Hz" +msgstr "24000 هرتز" + +#: src/filewriter/filewriter.cc:424 +msgid "32000 Hz" +msgstr "32000 هرتز" + +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 +msgid "44100 Hz" +msgstr "44100 هرتز" + +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 +msgid "48000 Hz" +msgstr "48000 هرتز" + +#: src/filewriter/filewriter.cc:430 +msgid "8 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:431 +msgid "16 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:432 +msgid "32 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:433 +msgid "40 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:434 +msgid "48 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:435 +msgid "56 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:436 +msgid "64 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:437 +msgid "80 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:438 +msgid "96 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:439 +msgid "112 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:440 +msgid "128 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:441 +msgid "160 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:442 +msgid "192 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:443 +msgid "224 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:444 +msgid "256 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:445 +msgid "320 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:450 +msgid "Joint Stereo" +msgstr "یکی کردن دو کانال" + +#: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 +#: src/mpg123/mpg123.cc:259 +msgid "Stereo" +msgstr "دوکاناله" + +#: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 +#: src/mpg123/mpg123.cc:260 +msgid "Mono" +msgstr "تک‌کاناله" + +#: src/filewriter/filewriter.cc:456 +msgid "VBR" +msgstr "" + +#: src/filewriter/filewriter.cc:457 +msgid "ABR" +msgstr "" + +#: src/filewriter/filewriter.cc:478 +msgid "Algorithm quality:" +msgstr "" + +#: src/filewriter/filewriter.cc:484 +msgid "Bitrate:" +msgstr "نرخ بیت:" + +#: src/filewriter/filewriter.cc:491 +msgid "Compression ratio:" +msgstr "نسبت فشرده‌سازی:" + +#: src/filewriter/filewriter.cc:498 +msgid "Audio mode:" +msgstr "" + +#: src/filewriter/filewriter.cc:501 +msgid "Enforce strict ISO compliance" +msgstr "" + +#: src/filewriter/filewriter.cc:503 +msgid "Error protection" +msgstr "محافظت در برابر خطا" + +#: src/filewriter/filewriter.cc:508 +msgid "Enable VBR/ABR" +msgstr "فعال‌سازی VBR/ABR" + +#: src/filewriter/filewriter.cc:510 +msgid "Type:" +msgstr "نوع:" + +#: src/filewriter/filewriter.cc:514 +msgid "Minimum bitrate:" +msgstr "" + +#: src/filewriter/filewriter.cc:518 +msgid "Maximum bitrate:" +msgstr "" + +#: src/filewriter/filewriter.cc:522 +msgid "Average bitrate:" +msgstr "" + +#: src/filewriter/filewriter.cc:526 +msgid "VBR quality level:" +msgstr "سطح کیفیت VBR:" + +#: src/filewriter/filewriter.cc:530 +msgid "Strictly enforce minimum bitrate" +msgstr "حداقل نرخ بیت بشدت اعمال شود" + +#: src/filewriter/filewriter.cc:533 +msgid "Omit Xing VBR header" +msgstr "" + +#: src/filewriter/filewriter.cc:539 +msgid "Frame Headers" +msgstr "" + +#: src/filewriter/filewriter.cc:540 +msgid "Mark as copyright" +msgstr "فایل کپی‌رایت دارد" + +#: src/filewriter/filewriter.cc:542 +msgid "Mark as original" +msgstr "فایل نسخه اصلی است" + +#: src/filewriter/filewriter.cc:544 +msgid "ID3 Tags" +msgstr "" + +#: src/filewriter/filewriter.cc:545 +msgid "Force addition of version 2 tag" +msgstr "برچسب‌های نسخه 2 حتما اضافه شود" + +#: src/filewriter/filewriter.cc:547 +msgid "Only add v1 tag" +msgstr "فقط برچسب‌های نسخه 1" + +#: src/filewriter/filewriter.cc:549 +msgid "Only add v2 tag" +msgstr "فقط برچسب‌های نسخه 2" + +#: src/filewriter/filewriter.cc:554 +msgid "Quality" +msgstr "کیفیت" + +#: src/filewriter/filewriter.cc:555 +msgid "VBR/ABR" +msgstr "VBR/ABR نرخ بیت متغیر/نرخ بیت میانگین" + +#: src/filewriter/filewriter.cc:556 +msgid "Tags" +msgstr "برچسب‌ها" + +#: src/filewriter/filewriter.cc:566 +msgid "Quality (0-1):" +msgstr "کیفیت (0-1):" + +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 +#: src/skins/skins_cfg.cc:285 +msgid "General" +msgstr "عمومی" + +#: src/flac/flacng.h:36 +msgid "FLAC Decoder" +msgstr "" + +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 +msgid "lossless" +msgstr "" + +#: src/flac/plugin.cc:214 +msgid "" +"Original code by\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" +msgstr "" + +#: src/gio/gio.cc:34 +msgid "" +"GIO Plugin for Audacious\n" +"Copyright 2009-2012 John Lindgren" +msgstr "" + +#: src/gio/gio.cc:42 +msgid "GIO Plugin" +msgstr "پلوگین GIO" + +#: src/gio/gio.cc:152 +msgid "Read-and-append mode not supported" +msgstr "" + +#: src/gio/gio.cc:165 +msgid "Invalid open mode" +msgstr "" + +#: src/glspectrum/gl-spectrum.cc:52 +msgid "" +"OpenGL Spectrum Analyzer for Audacious\n" +"Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" +"\n" +"Based on the XMMS plugin:\n" +"Copyright 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, and " +"4Front Technologies\n" +"\n" +"License: GPLv2+" +msgstr "" + +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 +msgid "OpenGL Spectrum Analyzer" +msgstr "" + +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 +#: src/moonstone/playlist_selection.cc:62 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 +#: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 +msgid "Title" +msgstr "عنوان" + +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/qtui/playlist_model.cc:33 +msgid "Artist" +msgstr "هنرمند" + +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/qtui/playlist_model.cc:33 +msgid "Year" +msgstr "سال انتشار" + +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 +#: src/qtui/playlist_model.cc:34 +msgid "Album" +msgstr "آلبوم" + +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr "هنرمند آلبوم" + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Track" +msgstr "آهنگ" + +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 +#: src/streamtuner/shoutcast-model.cc:125 +#: src/streamtuner/shoutcast-model.cc:236 +msgid "Genre" +msgstr "سبک" + +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Length" +msgstr "مدت زمان" + +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "مسیر فایل" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "نام فایل" + +#: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 +#: src/streamtuner/shoutcast-model.cc:134 +msgid "Bitrate" +msgstr "نرخ بیت" + +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 +#: src/qtui/playlist_model.cc:36 +msgid "Comment" +msgstr "توضیحات" + +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 +msgid "Available columns" +msgstr "" + +#: src/gtkui/columns.cc:348 +msgid "Displayed columns" +msgstr "" + +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 +msgid "Search Tool" +msgstr "" + +#: src/gtkui/layout.cc:170 +msgid "Dock at Left" +msgstr "به سمت چپ بچسبان" + +#: src/gtkui/layout.cc:170 +msgid "Dock at Right" +msgstr "به سمت راست بچسبان" + +#: src/gtkui/layout.cc:171 +msgid "Dock at Top" +msgstr "به بالا بچسبان" + +#: src/gtkui/layout.cc:171 +msgid "Dock at Bottom" +msgstr "به پایین بچسبان" + +#: src/gtkui/layout.cc:171 +msgid "Undock" +msgstr "جدا کردن پنجره" + +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 +msgid "Disable" +msgstr "غیرفعال‌سازی" + +#: src/gtkui/menus.cc:79 src/qtui/menus.cc:107 +#: src/statusicon-qt/statusicon.cc:112 src/statusicon/statusicon.cc:282 +msgid "_Open Files ..." +msgstr "_بازکردن فایل‌ها ..." + +#: src/gtkui/menus.cc:80 src/qtui/menus.cc:111 +msgid "Open _URL ..." +msgstr "بازکردن _آدرس اینترنتی ..." + +#: src/gtkui/menus.cc:81 src/qtui/menus.cc:113 +msgid "_Add Files ..." +msgstr "" + +#: src/gtkui/menus.cc:82 src/qtui/menus.cc:118 +msgid "Add U_RL ..." +msgstr "اضافه کردن آدرس _اینترنتی ..." + +#: src/gtkui/menus.cc:84 src/qtui/menus.cc:120 +msgid "Search _Library" +msgstr "" + +#: src/gtkui/menus.cc:86 src/qtui/menus.cc:123 +msgid "A_bout ..." +msgstr "د_رباره ..." + +#: src/gtkui/menus.cc:87 src/qtui/menus.cc:125 +msgid "_Settings ..." +msgstr "" + +#: src/gtkui/menus.cc:88 src/qtui/menus.cc:131 +#: src/statusicon-qt/statusicon.cc:114 src/statusicon/statusicon.cc:284 +msgid "_Quit" +msgstr "_خروج" + +#: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 +#: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 +#: src/statusicon/statusicon.cc:276 +msgid "_Play" +msgstr "_پخش" + +#: src/gtkui/menus.cc:93 src/qtui/menus.cc:137 +#: src/statusicon-qt/statusicon.cc:107 src/statusicon/statusicon.cc:277 +msgid "Paus_e" +msgstr "تو_قف" + +#: src/gtkui/menus.cc:94 src/qtui/menus.cc:139 +#: src/statusicon-qt/statusicon.cc:108 src/statusicon/statusicon.cc:278 +msgid "_Stop" +msgstr "پا_یان پخش" + +#: src/gtkui/menus.cc:95 src/qtui/menus.cc:141 +#: src/statusicon-qt/statusicon.cc:109 src/statusicon/statusicon.cc:279 +msgid "Pre_vious" +msgstr "_قبلی" + +#: src/gtkui/menus.cc:96 src/qtui/menus.cc:143 +#: src/statusicon-qt/statusicon.cc:110 src/statusicon/statusicon.cc:280 +msgid "_Next" +msgstr "_بعدی" + +#: src/gtkui/menus.cc:97 src/qtui/menus.cc:145 src/skins/menus.cc:114 +#: src/skins-qt/menus.cc:105 +msgid "Previous Album" +msgstr "آلبوم قبلی" + +#: src/gtkui/menus.cc:98 src/qtui/menus.cc:146 src/skins/menus.cc:115 +#: src/skins-qt/menus.cc:106 +msgid "Next Album" +msgstr "آلبوم بعدی" + +#: src/gtkui/menus.cc:100 src/qtui/menus.cc:148 +msgid "_Repeat" +msgstr "_تکرار" + +#: src/gtkui/menus.cc:101 src/qtui/menus.cc:150 +msgid "S_huffle" +msgstr "_بهم ریخته" + +#: src/gtkui/menus.cc:102 src/qtui/menus.cc:152 +msgid "Shuffle by Albu_m" +msgstr "" + +#: src/gtkui/menus.cc:103 src/qtui/menus.cc:155 +msgid "N_o Playlist Advance" +msgstr "" + +#: src/gtkui/menus.cc:104 src/qtui/menus.cc:157 +msgid "Stop A_fter This Song" +msgstr "" + +#: src/gtkui/menus.cc:106 src/gtkui/menus.cc:208 src/qtui/menus.cc:162 +#: src/qtui/menus.cc:292 +msgid "Song _Info ..." +msgstr "ا_طلاعات آهنگ ..." + +#: src/gtkui/menus.cc:107 +msgid "Jump to _Time ..." +msgstr "پرش به _زمان ..." + +#: src/gtkui/menus.cc:108 +msgid "_Jump to Song ..." +msgstr "پرش به _آهنگ ..." + +#: src/gtkui/menus.cc:110 src/qtui/menus.cc:165 +msgid "Set Repeat Point _A" +msgstr "" + +#: src/gtkui/menus.cc:111 src/qtui/menus.cc:167 +msgid "Set Repeat Point _B" +msgstr "" + +#: src/gtkui/menus.cc:112 src/qtui/menus.cc:169 +msgid "_Clear Repeat Points" +msgstr "" + +#: src/gtkui/menus.cc:116 src/gtkui/menus.cc:123 src/gtkui/menus.cc:140 +#: src/qtui/menus.cc:173 src/qtui/menus.cc:180 src/qtui/menus.cc:197 +msgid "By _Title" +msgstr "براساس _عنوان" + +#: src/gtkui/menus.cc:117 src/qtui/menus.cc:174 +msgid "By _File Name" +msgstr "" + +#: src/gtkui/menus.cc:118 src/qtui/menus.cc:175 +msgid "By File _Path" +msgstr "" + +#: src/gtkui/menus.cc:122 src/gtkui/menus.cc:139 src/qtui/menus.cc:179 +#: src/qtui/menus.cc:196 +msgid "By Track _Number" +msgstr "براساس _شماره آهنگ" + +#: src/gtkui/menus.cc:124 src/gtkui/menus.cc:141 src/qtui/menus.cc:181 +#: src/qtui/menus.cc:198 +msgid "By _Artist" +msgstr "براساس _هنرمند" + +#: src/gtkui/menus.cc:125 src/gtkui/menus.cc:142 src/qtui/menus.cc:182 +#: src/qtui/menus.cc:199 +msgid "By Al_bum" +msgstr "" + +#: src/gtkui/menus.cc:126 src/gtkui/menus.cc:143 src/qtui/menus.cc:183 +#: src/qtui/menus.cc:200 +msgid "By Albu_m Artist" +msgstr "" + +#: src/gtkui/menus.cc:127 src/gtkui/menus.cc:144 src/qtui/menus.cc:184 +#: src/qtui/menus.cc:201 +msgid "By Release _Date" +msgstr "بر اساس _تاریخ انتشار" + +#: src/gtkui/menus.cc:128 src/gtkui/menus.cc:145 src/qtui/menus.cc:185 +#: src/qtui/menus.cc:202 +msgid "By _Genre" +msgstr "" + +#: src/gtkui/menus.cc:129 src/gtkui/menus.cc:146 src/qtui/menus.cc:186 +#: src/qtui/menus.cc:203 +msgid "By _Length" +msgstr "" + +#: src/gtkui/menus.cc:130 src/gtkui/menus.cc:147 src/qtui/menus.cc:187 +#: src/qtui/menus.cc:204 +msgid "By _File Path" +msgstr "براساس _مسیر فایل" + +#: src/gtkui/menus.cc:131 src/gtkui/menus.cc:148 src/qtui/menus.cc:188 +#: src/qtui/menus.cc:205 +msgid "By _Custom Title" +msgstr "براساس عنوان شخصی" + +#: src/gtkui/menus.cc:132 src/gtkui/menus.cc:149 src/qtui/menus.cc:189 +#: src/qtui/menus.cc:206 +msgid "By C_omment" +msgstr "" + +#: src/gtkui/menus.cc:134 src/gtkui/menus.cc:151 src/qtui/menus.cc:191 +#: src/qtui/menus.cc:208 +msgid "R_everse Order" +msgstr "مرتب سازی معکوس" + +#: src/gtkui/menus.cc:135 src/gtkui/menus.cc:152 src/qtui/menus.cc:193 +#: src/qtui/menus.cc:210 +msgid "_Random Order" +msgstr "بهم ریختن مرتب‌سازی" + +#: src/gtkui/menus.cc:156 src/qtui/menus.cc:214 +msgid "_Play/Resume" +msgstr "" + +#: src/gtkui/menus.cc:157 src/qtui/menus.cc:216 +msgid "_Refresh" +msgstr "تازه‌سازی لیست" + +#: src/gtkui/menus.cc:159 src/qtui/menus.cc:220 +msgid "_Sort" +msgstr "مرتب کردن" + +#: src/gtkui/menus.cc:160 src/qtui/menus.cc:221 +msgid "Sort Se_lected" +msgstr "" + +#: src/gtkui/menus.cc:161 src/qtui/menus.cc:223 +msgid "Remove _Duplicates" +msgstr "" + +#: src/gtkui/menus.cc:162 src/qtui/menus.cc:224 +msgid "Remove _Unavailable Files" +msgstr "" + +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 +msgid "_New" +msgstr "جدید" + +#: src/gtkui/menus.cc:165 src/qtui/menus.cc:228 +msgid "Ren_ame ..." +msgstr "تغییرنام..." + +#: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 +#: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 +#: src/qtui/playlist_tabs.cc:335 +msgid "Remo_ve" +msgstr "حذف" + +#: src/gtkui/menus.cc:168 src/qtui/menus.cc:231 +msgid "_Import ..." +msgstr "وارد کردن ..." + +#: src/gtkui/menus.cc:169 src/qtui/menus.cc:232 +msgid "_Export ..." +msgstr "خروجی گرفتن ..." + +#: src/gtkui/menus.cc:171 src/qtui/menus.cc:235 +msgid "Playlist _Manager ..." +msgstr "" + +#: src/gtkui/menus.cc:172 src/qtui/menus.cc:237 +msgid "_Queue Manager ..." +msgstr "مدیر صف ..." + +#: src/gtkui/menus.cc:176 src/qtui/menus.cc:241 +msgid "Volume _Up" +msgstr "افزایش صدا" + +#: src/gtkui/menus.cc:177 src/qtui/menus.cc:243 +msgid "Volume _Down" +msgstr "کاهش صدا" + +#: src/gtkui/menus.cc:179 src/qtui/menus.cc:247 +msgid "_Equalizer ..." +msgstr "اکولایزر..." + +#: src/gtkui/menus.cc:180 src/qtui/menus.cc:249 +msgid "E_ffects ..." +msgstr "" + +#: src/gtkui/menus.cc:182 +msgid "_Record Stream" +msgstr "" + +#: src/gtkui/menus.cc:183 +msgid "Audio _Settings ..." +msgstr "تنظیمات صدا..." + +#: src/gtkui/menus.cc:187 src/qtui/menus.cc:258 +msgid "Show _Menu Bar" +msgstr "نمایش نوار منو" + +#: src/gtkui/menus.cc:188 src/qtui/menus.cc:260 +msgid "Show I_nfo Bar" +msgstr "نمایش نوار اطلاعات" + +#: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 +msgid "Show Info Bar _Album Art" +msgstr "" + +#: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 +msgid "Show Info Bar Vis_ualization" +msgstr "" + +#: src/gtkui/menus.cc:191 src/qtui/menus.cc:266 +msgid "Show _Status Bar" +msgstr "نمایش نوار وضعیت" + +#: src/gtkui/menus.cc:193 src/qtui/menus.cc:270 +msgid "Show _Remaining Time" +msgstr "" + +#: src/gtkui/menus.cc:195 src/qtui/menus.cc:274 src/skins/menus.cc:157 +#: src/skins-qt/menus.cc:152 +msgid "_Visualizations ..." +msgstr "" + +#: src/gtkui/menus.cc:199 src/qtui/menus.cc:278 +msgid "_File" +msgstr "فایل" + +#: src/gtkui/menus.cc:200 src/qtui/menus.cc:279 +msgid "_Playback" +msgstr "پخش" + +#: src/gtkui/menus.cc:201 src/qtui/menus.cc:280 +msgid "P_laylist" +msgstr "لیست پخش" + +#: src/gtkui/menus.cc:202 src/gtkui/menus.cc:220 src/qtui/menus.cc:281 +#: src/qtui/menus.cc:310 +msgid "_Services" +msgstr "سرویس‌ها" + +#: src/gtkui/menus.cc:203 src/qtui/menus.cc:282 +msgid "_Output" +msgstr "خروجی" + +#: src/gtkui/menus.cc:204 src/qtui/menus.cc:283 +msgid "_View" +msgstr "نما" + +#: src/gtkui/menus.cc:209 src/qtui/menus.cc:294 +msgid "_Queue/Unqueue" +msgstr "وارد کردن به/خارج کردن از صف" + +#: src/gtkui/menus.cc:211 src/qtui/menus.cc:297 +msgid "_Open Containing Folder" +msgstr "" + +#: src/gtkui/menus.cc:212 src/qtui/menus.cc:299 +msgid "_Refresh Selected" +msgstr "" + +#: src/gtkui/menus.cc:214 src/qtui/menus.cc:302 +msgid "Cu_t" +msgstr "برش" + +#: src/gtkui/menus.cc:215 src/qtui/menus.cc:303 +msgid "_Copy" +msgstr "کپی" + +#: src/gtkui/menus.cc:216 src/qtui/menus.cc:304 +msgid "_Paste" +msgstr "چسباندن" + +#: src/gtkui/menus.cc:217 src/qtui/menus.cc:305 +msgid "Paste at _End" +msgstr "" + +#: src/gtkui/menus.cc:218 src/qtui/menus.cc:307 +msgid "Select _All" +msgstr "انتخاب همه" + +#: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 +#: src/qtui/playlist_tabs.cc:333 +msgid "_Rename ..." +msgstr "" + +#: src/gtkui/settings.cc:35 src/qtui/settings.cc:63 +msgid "Playlist Tabs" +msgstr "" + +#: src/gtkui/settings.cc:36 +msgid "Always show tabs" +msgstr "" + +#: src/gtkui/settings.cc:38 src/qtui/settings.cc:68 +msgid "Show entry counts" +msgstr "" + +#: src/gtkui/settings.cc:40 src/qtui/settings.cc:71 +msgid "Show close buttons" +msgstr "" + +#: src/gtkui/settings.cc:42 src/qtui/settings.cc:74 +msgid "Playlist Columns" +msgstr "" + +#: src/gtkui/settings.cc:44 src/qtui/settings.cc:76 +msgid "Show column headers" +msgstr "" + +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 +msgid "Scroll on song change" +msgstr "" + +#: src/gtkui/ui_gtk.cc:81 +msgid "GTK Interface" +msgstr "رابط GTK" + +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 +#, c-format +msgid "%s - Audacious" +msgstr "‎%s - Aduacious" + +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 +msgid "Buffering ..." +msgstr "" + +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 +msgid "Audacious" +msgstr "Audacious" + +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 +#: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 +#: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 +msgid "Play" +msgstr "پخش" + +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 +#: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 +#: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 +msgid "Pause" +msgstr "متوقف" + +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +msgid "Search Library" +msgstr "" + +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 +msgid "Open Files" +msgstr "باز کردن فایل‌ها" + +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 +msgid "Add Files" +msgstr "اضافه کردن فایل‌ها" + +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +msgid "Previous" +msgstr "قبلی" + +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 +#: src/skins-qt/menus.cc:102 +msgid "Stop" +msgstr "اتمام پخش" + +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +msgid "Next" +msgstr "بعدی" + +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/skins-qt/menus.cc:69 +msgid "Record Stream" +msgstr "" + +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +msgid "Repeat" +msgstr "تکرار" + +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +msgid "Shuffle" +msgstr "بهم‌ریختن" + +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 +msgid "Menu" +msgstr "منو" + +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 +msgid "mono" +msgstr "تک‌کاناله" + +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 +msgid "stereo" +msgstr "دوکاناله" + +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "‎%d کانال" +msgstr[1] "‎%d کانال" + +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 +#, c-format +msgid "%d kHz" +msgstr "%dکیلوهرتز" + +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 +#, c-format +msgid "%d kbit/s" +msgstr "" + +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 +msgid "Single mode." +msgstr "حالت تک‌فایل." + +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 +msgid "Playlist mode." +msgstr "حالت لیست پخش." + +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 +msgid "Stopping after song." +msgstr "توقف بعد از آهنگ." + +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 +msgid "Previous track" +msgstr "آهنگ قبلی" + +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 +msgid "Pause/Resume" +msgstr "توقف/ادامه" + +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 +msgid "Next track" +msgstr "آهنگ بعدی" + +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 +msgid "Step forward" +msgstr "" + +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 +msgid "Step backward" +msgstr "" + +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 +msgid "Mute" +msgstr "قطع کردن صدا" + +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 +msgid "Volume up" +msgstr "" + +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 +msgid "Volume down" +msgstr "" + +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 +msgid "Jump to file" +msgstr "پرش به فایل" + +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 +msgid "Toggle player window(s)" +msgstr "" + +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 +msgid "Show On-Screen-Display" +msgstr "نمایش اطلاعات بر روی صفحه" + +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 +msgid "Toggle repeat" +msgstr "" + +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 +msgid "Toggle shuffle" +msgstr "" + +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 +msgid "Toggle stop after current" +msgstr "" + +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 +msgid "Raise player window(s)" +msgstr "" + +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 +msgid "(none)" +msgstr "(هیچکدام)" + +#: src/hotkey/gui.cc:261 +msgid "" +"It is not recommended to bind the primary mouse buttons without modifiers.\n" +"\n" +"Do you want to continue?" +msgstr "" + +#: src/hotkey/gui.cc:264 +msgid "Binding mouse buttons" +msgstr "تعریف گزینه برای کلیدهای ماوس" + +#: src/hotkey/gui.cc:434 +msgid "" +"Press a key combination inside a text field.\n" +"You can also bind mouse buttons." +msgstr "" +"ترکیب مورد نظر را در جعبه متن از طریق فشردن کلیدها ایجاد کنید.\n" +"می‌توان از کلیدهای ماوس هم استفاده کنید." + +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 +msgid "Hotkeys:" +msgstr "کلیدهای میانبر:" + +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 +msgid "Action:" +msgstr "عمل:" + +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 +msgid "Key Binding:" +msgstr "کلیدهای تعریف‌شده:" + +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 +msgid "_Add" +msgstr "_اضافه کردن" + +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 +msgid "Global Hotkeys" +msgstr "" + +#: src/hotkey/plugin.cc:76 +msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributors include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " +msgstr "" + +#: src/jack/jack-ng.cc:54 +msgid "JACK Output" +msgstr "" + +#: src/jack/jack-ng.cc:126 +msgid "Client name:" +msgstr "" + +#: src/jack/jack-ng.cc:128 +msgid "Automatically connect to output ports" +msgstr "" + +#: src/jack/jack-ng.cc:130 +msgid "Filter ports (regex, use any port if blank):" +msgstr "" + +#: src/jack/jack-ng.cc:136 +msgid "Connect to physical ports only" +msgstr "" + +#: src/jack/jack-ng.cc:139 +msgid "Upmix to" +msgstr "" + +#: src/jack/jack-ng.cc:141 +msgid "ports if input has fewer channels" +msgstr "" + +#: src/jack/jack-ng.cc:143 +msgid "Ignore insufficient number of ports" +msgstr "" + +#: src/jack/jack-ng.cc:181 +msgid "No JACK output ports were found. Please check settings." +msgstr "" + +#: src/jack/jack-ng.cc:195 +#, c-format +msgid "Only %d JACK output ports were found but %d are required." +msgstr "" + +#: src/jack/jack-ng.cc:210 +#, c-format +msgid "Failed to connect to JACK port %s." +msgstr "" + +#: src/jack/jack-ng.cc:230 +msgid "" +"JACK supports only floating-point audio. You must change the output bit " +"depth to floating-point in Audacious settings." +msgstr "" + +#: src/jack/jack-ng.cc:245 +msgid "Failed to connect to the JACK server; is it running?" +msgstr "" + +#: src/jack/jack-ng.cc:321 +#, c-format +msgid "" +"The JACK server requires a sample rate of %d Hz, but Audacious is playing at " +"%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." +msgstr "" + +#: src/ladspa/plugin.cc:416 +#, c-format +msgid "%s Settings" +msgstr "تنظیمات ‎%s" + +#: src/ladspa/plugin.cc:482 +msgid "Module paths:" +msgstr "مسیرهای ماژول:" + +#: src/ladspa/plugin.cc:487 +msgid "" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." +msgstr "" +"مسیرهای چندگانه را با استفاده از علامت دونقطه جدا کنید.\n" +"این مسیرها علاوه بر مسیر LADSPA_PATH جستجو می‌شوند.\n" +"بعد از وارد کردن هر مسیر کلید اینتر را فشار دهید تا افزونه‌های جدید جستجو " +"شوند." + +#: src/ladspa/plugin.cc:508 +msgid "Available plugins:" +msgstr "افزونه‌های موجود:" + +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 +#: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 +#: src/modplug/plugin_main.cc:100 +msgid "Enable" +msgstr "فعال کردن" + +#: src/ladspa/plugin.cc:527 +msgid "Enabled plugins:" +msgstr "افزونه‌های فعال:" + +#: src/ladspa/plugin.cc:543 +msgid "Settings" +msgstr "تنظیمات" + +#: src/ladspa/plugin.cc:560 +msgid "" +"LADSPA Host for Audacious\n" +"Copyright 2011 John Lindgren" +msgstr "" + +#: src/ladspa/plugin.h:78 +msgid "LADSPA Host" +msgstr "" + +#: src/lirc/lirc.cc:55 +msgid "LIRC Plugin" +msgstr "" + +#: src/lirc/lirc.cc:379 +msgid "" +"A simple plugin to control Audacious using the LIRC remote control daemon\n" +"\n" +"Adapted for Audacious by:\n" +"Tony Vroon \n" +"Joonas Harjumäki \n" +"\n" +"Based on the XMMS LIRC plugin by:\n" +"Carl van Schaik \n" +"Christoph Bartelmus \n" +"Andrew O. Shadoura \n" +"\n" +"For more information about LIRC, see http://lirc.org." +msgstr "" + +#: src/lirc/lirc.cc:390 +msgid "Connection" +msgstr "" + +#: src/lirc/lirc.cc:391 +msgid "Reconnect to LIRC server" +msgstr "" + +#: src/lirc/lirc.cc:393 +msgid "Wait before reconnecting:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:90 +msgid "Lyrics" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:118 +msgid "Nowhere" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:119 +msgid "lyrics.ovh" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:123 +msgid "Artist is truncated at the start, Title -- at the end" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:124 +msgid "Chars to truncate on:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:128 +msgid "Chars are ORed in RegExp, surrounded by whitespace" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:129 +msgid "Chars to split on:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:130 +msgid "Further truncate those on chars" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:136 +msgid "General" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:137 +msgid "Split title into artist and title on chars" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:146 +msgid "Store fetched lyrics in local cache" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:148 +msgid "Local Storage" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:149 +msgid "Load lyric files (.lrc) from local storage" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:360 +#, c-format +msgid "Unable to fetch %s" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:369 +#, c-format +msgid "Unable to parse %s" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:407 +msgid "Looking for lyrics ..." +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 +msgid "Error" +msgstr "خطا" + +#: src/lyricwiki-qt/lyricwiki.cc:437 +msgid "Lyrics could not be found." +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:518 +msgid "Missing title and/or artist." +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:576 +msgid "Save Locally" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:584 +msgid "Refresh" +msgstr "تازه سازی" + +#: src/m3u/m3u.cc:33 +msgid "M3U Playlists" +msgstr "لیست پخش M3U" + +#: src/metronom/metronom.cc:44 +msgid "Tact Generator" +msgstr "" + +#: src/metronom/metronom.cc:145 +#, c-format +msgid "Tact generator: %d bpm" +msgstr "مولد تکت: ‎%d بیت در دقیقه" + +#: src/metronom/metronom.cc:147 +#, c-format +msgid "Tact generator: %d bpm %d/%d" +msgstr "مولد تکت: ‎%d بیت در دقیقه ‎%d/%d" + +#: src/metronom/metronom.cc:235 +msgid "" +"A Tact Generator by Martin Strauss \n" +"\n" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" +msgstr "" + +#: src/mixer/mixer.cc:43 +msgid "Channel Mixer" +msgstr "" + +#: src/mixer/mixer.cc:255 +msgid "" +"Channel Mixer Plugin for Audacious\n" +"Copyright 2011-2012 John Lindgren and Michał Lipski" +msgstr "" + +#: src/mixer/mixer.cc:259 +msgid "Channel Mixer" +msgstr "" + +#: src/mixer/mixer.cc:260 +msgid "Output channels:" +msgstr "کانال‌های خروجی:" + +#: src/mms/mms.cc:35 +msgid "MMS Plugin" +msgstr "" + +#: src/mms/mms.cc:82 +msgid "Error connecting to MMS server" +msgstr "" + +#: src/modplug/modplugbmp.h:57 +msgid "ModPlug (Module Player)" +msgstr "" + +#: src/modplug/plugin_main.cc:55 +msgid "Channels" +msgstr "کانال" + +#: src/modplug/plugin_main.cc:59 +msgid "Nearest (fastest)" +msgstr "" + +#: src/modplug/plugin_main.cc:60 +msgid "Linear (fast)" +msgstr "" + +#: src/modplug/plugin_main.cc:61 +msgid "Spline (good)" +msgstr "" + +#: src/modplug/plugin_main.cc:62 +msgid "Polyphase (best)" +msgstr "" + +#: src/modplug/plugin_main.cc:63 +msgid "Sample rate" +msgstr "نرخ نمونه برداری" + +#: src/modplug/plugin_main.cc:64 +msgid "22 kHz" +msgstr "22 کیلوهرتز" + +#: src/modplug/plugin_main.cc:65 +msgid "44 kHz" +msgstr "44 کیلوهرتز" + +#: src/modplug/plugin_main.cc:66 +msgid "48 kHz" +msgstr "48 کیلوهرتز" + +#: src/modplug/plugin_main.cc:67 +msgid "96 kHz" +msgstr "96 کیلوهرتز" + +#: src/modplug/plugin_main.cc:71 src/modplug/plugin_main.cc:76 +#: src/modplug/plugin_main.cc:81 +msgid "Level:" +msgstr "" + +#: src/modplug/plugin_main.cc:77 +msgid "Cutoff:" +msgstr "" + +#: src/modplug/plugin_main.cc:90 +msgid "Reverb" +msgstr "" + +#: src/modplug/plugin_main.cc:93 +msgid "Bass Boost" +msgstr "" + +#: src/modplug/plugin_main.cc:96 +msgid "Surround" +msgstr "" + +#: src/modplug/plugin_main.cc:99 +msgid "Preamp" +msgstr "" + +#: src/modplug/plugin_main.cc:106 +msgid "Oversample" +msgstr "" + +#: src/modplug/plugin_main.cc:107 +msgid "Noise reduction" +msgstr "" + +#: src/modplug/plugin_main.cc:108 +msgid "Play Amiga MODs" +msgstr "" + +#: src/modplug/plugin_main.cc:109 +msgid "Repeat" +msgstr "تکرار" + +#: src/modplug/plugin_main.cc:110 +msgid "Repeat count:" +msgstr "" + +#: src/modplug/plugin_main.cc:111 +msgid "To repeat forever, set the repeat count to -1." +msgstr "" + +#: src/modplug/plugin_main.cc:124 src/sid/xs_config.cc:106 +msgid "These settings will take effect when Audacious is restarted." +msgstr "" + +#: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 +#: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 +msgid "Stop After This Song" +msgstr "" + +#: src/moonstone/moonstone.cc:39 +msgid "Moonstone" +msgstr "" + +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 +msgid "Reset to Defaults" +msgstr "بازنشانی به حالت پیش فرض " + +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 +msgid "Now Playing" +msgstr "در حال پخش" + +#: src/moonstone/playlist_selection.cc:64 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 +msgid "Entries" +msgstr "داده‌ها" + +#: src/mpg123/mpg123.cc:54 +msgid "MPG123 Plugin" +msgstr "" + +#: src/mpg123/mpg123.cc:81 +msgid "Advanced" +msgstr "پیشرفته" + +#: src/mpg123/mpg123.cc:82 +msgid "Use accurate length calculation (slow)" +msgstr "" + +#: src/mpg123/mpg123.cc:260 +msgid "Surround" +msgstr "فراگیر" + +#: src/mpris2/plugin.cc:38 +msgid "MPRIS 2 Server" +msgstr "" + +#: src/neon/neon.cc:97 +msgid "Neon HTTP/HTTPS Plugin" +msgstr "" + +#: src/neon/neon.cc:526 +msgid "Error parsing redirect" +msgstr "" + +#: src/neon/neon.cc:540 +msgid "Unknown HTTP error" +msgstr "" + +#: src/neon/neon.cc:590 +msgid "Error parsing URL" +msgstr "" + +#: src/neon/neon.cc:660 +msgid "Too many redirects" +msgstr "" + +#: src/notify/event.cc:97 +msgid "Stopped" +msgstr "متوقف شده" + +#: src/notify/event.cc:97 +msgid "Audacious is not playing." +msgstr "Audacious در حال پخش نیست." + +#: src/notify/notify.cc:39 +msgid "Desktop Notifications" +msgstr "اعلان های دسکتاپ" + +#: src/notify/notify.cc:57 +msgid "" +"Desktop Notifications Plugin for Audacious\n" +"Copyright (C) 2010 Maximilian Bogner\n" +"Copyright (C) 2011-2013 John Lindgren and Jean-Alexandre Anglès d'Auriac\n" +"\n" +"This plugin 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 3 of the License, or (at your option) " +"any later version.\n" +"\n" +"This plugin 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.\n" +"\n" +"You should have received a copy of the GNU General Public License along with " +"this program. If not, see ." +msgstr "" + +#: src/notify/notify.cc:104 +msgid "Show playback controls" +msgstr "" + +#: src/notify/notify.cc:106 +msgid "Always show notification" +msgstr "" + +#: src/notify/notify.cc:108 +msgid "Include album name in notification" +msgstr "" + +#: src/notify/notify.cc:110 +msgid "Custom notification duration:" +msgstr "" + +#: src/notify/osd.cc:74 +msgid "Show" +msgstr "نمایش" + +#: src/openmpt/mpt.cc:50 +msgid "OpenMPT (Module Player)" +msgstr "" + +#: src/openmpt/mpt.cc:132 +msgid "" +"Module player based on libopenmpt\n" +"\n" +"Written by: Chris Spiegel " +msgstr "" + +#: src/openmpt/mpt.cc:151 +msgid "Stereo separation:" +msgstr "" + +#: src/openmpt/mpt.cc:153 +msgid "%" +msgstr "%" + +#: src/openmpt/mpt.cc:157 +msgid "Interpolation:" +msgstr "" + +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 +msgid "Linear" +msgstr "" + +#: src/openmpt/mptwrap.h:52 +msgid "Cubic" +msgstr "" + +#: src/openmpt/mptwrap.h:53 +msgid "Windowed sinc" +msgstr "" + +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 +msgid "OSS4 Output" +msgstr "خروجی OSS4" + +#: src/oss4/oss.h:72 +msgid "OSS3 Output" +msgstr "خروجی OSS3" + +#: src/oss4/plugin.cc:35 +msgid "Default device" +msgstr "ابزار پیش فرض" + +#: src/oss4/plugin.cc:78 +msgid "Audio device:" +msgstr "ابزار صوتی:" + +#: src/oss4/plugin.cc:81 +msgid "Use alternate device:" +msgstr "از ابزار جایگزین استفاده کن:" + +#: src/oss4/plugin.cc:85 +msgid "Save volume between sessions." +msgstr "" + +#: src/oss4/plugin.cc:87 +msgid "Enable format conversions made by the OSS software." +msgstr "تغییر فرمت بوسیله نرم‌افزار نرم‌افزار OSS فعال شود." + +#: src/oss4/plugin.cc:89 +msgid "Enable exclusive mode to prevent virtual mixing." +msgstr "" + +#: src/oss4/plugin.cc:101 +msgid "" +"OSS4 Output Plugin for Audacious\n" +"Copyright 2010-2012 Michał Lipski\n" +"\n" +"I would like to thank people on #audacious, especially Tony Vroon and John " +"Lindgren and of course the authors of the previous OSS plugin." +msgstr "" + +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "پخش" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 +msgid "Playlist Manager" +msgstr "مدیریت لیست پخش" + +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 +msgid "_Remove" +msgstr "_حذف" + +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 +msgid "Ren_ame" +msgstr "تغییر_نام" + +#: src/pls/pls.cc:35 +msgid "PLS Playlists" +msgstr "لیست پخش های PLS " + +#: src/psf/plugin.cc:53 +msgid "OpenPSF PSF1/PSF2 Decoder" +msgstr "" + +#: src/psf/plugin.cc:270 +msgid "OpenPSF Configuration" +msgstr "" + +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 +msgid "Ignore length from file" +msgstr "" + +#: src/pulse/pulse_audio.cc:42 +msgid "PulseAudio Output" +msgstr "" + +#: src/pulse/pulse_audio.cc:72 +msgid "Context name:" +msgstr "" + +#: src/pulse/pulse_audio.cc:74 +msgid "Stream name:" +msgstr "نام استریم:" + +#: src/pulse/pulse_audio.cc:575 +msgid "" +"Audacious PulseAudio Output Plugin\n" +"\n" +"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.\n" +"\n" +"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.\n" +"\n" +"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." +msgstr "" + +#: src/qtaudio/qtaudio.cc:44 +msgid "QtMultimedia Output" +msgstr "" + +#: src/qtaudio/qtaudio.cc:72 +msgid "" +"QtMultimedia Audio Output Plugin for Audacious\n" +"Copyright 2014 William Pitcock\n" +"\n" +"Based on SDL Output Plugin for Audacious\n" +"Copyright 2010 John Lindgren" +msgstr "" + +#: src/qtglspectrum/gl-spectrum.cc:41 +msgid "" +"OpenGL Spectrum Analyzer for Audacious\n" +"Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" +"Copyright 2014, 2020 Ariadne Conill\n" +"\n" +"Based on the XMMS plugin:\n" +"Copyright 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, and " +"4Front Technologies\n" +"\n" +"License: GPLv2+" +msgstr "" + +#: src/qthotkey/gui.cc:177 +msgid "Press a key combination inside a text field." +msgstr "" + +#: src/qthotkey/plugin.cc:107 +msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2020 i.Dark_Templar \n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributors include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " +msgstr "" + +#: src/qtui/menus.cc:109 +msgid "_Open Folder ..." +msgstr "" + +#: src/qtui/menus.cc:115 +msgid "_Add Folder ..." +msgstr "" + +#: src/qtui/menus.cc:128 +msgid "_Log Inspector ..." +msgstr "" + +#: src/qtui/menus.cc:218 +msgid "_Find ..." +msgstr "" + +#: src/qtui/menus.cc:254 src/skins/menus.cc:80 src/skins-qt/menus.cc:70 +msgid "Audio Settings ..." +msgstr "تنظیمات صدا..." + +#: src/qtui/playlist_model.cc:188 +msgid "Q#" +msgstr "" + +#: src/qtui/playlist_model.cc:190 +msgid "T#" +msgstr "" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + +#: src/qtui/qtui.cc:40 +msgid "Qt Interface" +msgstr "" + +#: src/qtui/search_bar.cc:46 +msgid "Search playlist" +msgstr "" + +#: src/qtui/settings.cc:58 +msgid "Always" +msgstr "همیشه" + +#: src/qtui/settings.cc:59 +msgid "Auto-hide" +msgstr "پنهان سازی خودکار" + +#: src/qtui/settings.cc:60 +msgid "Never" +msgstr "هرگز" + +#: src/qtui/settings.cc:64 +msgid "Show playlist tabs:" +msgstr "نمایش تب های لیست پخش:" + +#: src/qtui/settings.cc:78 +msgid "Use bold font for column headers" +msgstr "" + +#: src/resample/resample.cc:43 +msgid "Sample Rate Converter" +msgstr "" + +#: src/resample/resample.cc:183 +msgid "" +"Sample Rate Converter Plugin for Audacious\n" +"Copyright 2010-2012 John Lindgren" +msgstr "" + +#: src/resample/resample.cc:187 +msgid "Skip/repeat samples" +msgstr "" + +#: src/resample/resample.cc:188 +msgid "Linear interpolation" +msgstr "" + +#: src/resample/resample.cc:189 +msgid "Fast sinc interpolation" +msgstr "" + +#: src/resample/resample.cc:190 +msgid "Medium sinc interpolation" +msgstr "" + +#: src/resample/resample.cc:191 +msgid "Best sinc interpolation" +msgstr "" + +#: src/resample/resample.cc:195 +msgid "Conversion" +msgstr "" + +#: src/resample/resample.cc:196 +msgid "Method:" +msgstr "شیوه:" + +#: src/resample/resample.cc:199 src/soxr/sox-resampler.cc:203 +msgid "Rate:" +msgstr "نرخ:" + +#: src/resample/resample.cc:202 +msgid "Rate Mappings" +msgstr "" + +#: src/resample/resample.cc:203 +msgid "Use rate mappings" +msgstr "" + +#: src/resample/resample.cc:205 +msgid "8 kHz:" +msgstr "8 کیلوهرتز:" + +#: src/resample/resample.cc:209 +msgid "16 kHz:" +msgstr "16 کیلوهرتز:" + +#: src/resample/resample.cc:213 +msgid "22.05 kHz:" +msgstr "22.05 کیلوهرتز:" + +#: src/resample/resample.cc:217 +msgid "32.0 kHz:" +msgstr "32.0 کیلوهرتز:" + +#: src/resample/resample.cc:221 +msgid "44.1 kHz:" +msgstr "44.1 کیلوهرتز:" + +#: src/resample/resample.cc:225 +msgid "48 kHz:" +msgstr "48 کیلوهرتز:" + +#: src/resample/resample.cc:229 +msgid "88.2 kHz:" +msgstr "88.2 کیلوهرتز:" + +#: src/resample/resample.cc:233 +msgid "96 kHz:" +msgstr "96 کیلوهرتز:" + +#: src/resample/resample.cc:237 +msgid "176.4 kHz:" +msgstr "176.4 کیلوهرتز:" + +#: src/resample/resample.cc:241 +msgid "192 kHz:" +msgstr "192 کیلوهرتز:" + +#: src/scrobbler2/config_window.cc:19 +msgid "Checking Last.fm access ..." +msgstr "" + +#: src/scrobbler2/config_window.cc:27 +msgid "" +"Your scrobbles are being saved on your computer temporarily. They will be " +"submitted as soon as Audacious is allowed access." +msgstr "" + +#: src/scrobbler2/config_window.cc:33 +#, c-format +msgid "Permission granted. Scrobbling for user %s." +msgstr "" + +#: src/scrobbler2/config_window.cc:37 +msgid "" +"Permission denied. Open the following URL in a browser, allow Audacious " +"access to your account, and then click 'Check Permission' again:" +msgstr "" + +#: src/scrobbler2/config_window.cc:47 +msgid "There was a problem contacting Last.fm." +msgstr "" + +#: src/scrobbler2/config_window.cc:86 +msgid "Check Permission" +msgstr "" + +#: src/scrobbler2/config_window.cc:87 +msgid "Revoke Permission" +msgstr "" + +#: src/scrobbler2/config_window.cc:91 +msgid "You need to allow Audacious to scrobble tracks to your Last.fm account." +msgstr "" + +#: src/scrobbler2/scrobbler.cc:29 +msgid "Scrobbler 2.0" +msgstr "" + +#: src/scrobbler2/scrobbler.cc:226 +msgid "" +"The Scrobbler plugin could not be started.\n" +"There might be a problem with your installation." +msgstr "" + +#: src/scrobbler2/scrobbler.cc:291 +msgid "" +"Audacious Scrobbler Plugin 2.0 by Pitxyoki,\n" +"\n" +"Copyright © 2012-2013 Luís M. Picciochi Oliveira \n" +"\n" +"Thanks to John Lindgren for giving me a hand at the beginning of this " +"project.\n" +"\n" +msgstr "" + +#: src/scrobbler2/scrobbler_communication.cc:663 +msgid "" +"Audacious is now using an improved version of the Last.fm Scrobbler.\n" +"Please check the Preferences for the Scrobbler plugin." +msgstr "" + +#: src/sdlout/sdlout.cc:43 +msgid "SDL Output" +msgstr "" + +#: src/sdlout/sdlout.cc:72 +msgid "" +"SDL Output Plugin for Audacious\n" +"Copyright 2010 John Lindgren" +msgstr "" + +#: src/search-tool/library.cc:35 src/search-tool/library.cc:46 +#: src/search-tool-qt/library.cc:35 src/search-tool-qt/library.cc:46 +msgid "Library" +msgstr "کتابخانه" + +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 +#, c-format +msgid "%d song" +msgid_plural "%d songs" +msgstr[0] "" +msgstr[1] "" + +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 +msgid "of this genre" +msgstr "" + +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 +msgid "on" +msgstr "" + +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 +msgid "by" +msgstr "بر اساس" + +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 +msgid "Number of results to show:" +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 +msgid "Rescan library at startup" +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:170 +msgid "Monitor library for changes" +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 +msgid "" +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 +msgid "Please wait ..." +msgstr "لطفا صبر کنید..." + +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 +msgid "Choose Folder" +msgstr "انتخاب پوشه" + +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 +msgid "Search library" +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 +#, c-format +msgid "%d of %d result shown" +msgid_plural "%d of %d results shown" +msgstr[0] "" +msgstr[1] "" + +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 +#, c-format +msgid "%d result" +msgid_plural "%d results" +msgstr[0] "" +msgstr[1] "" + +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 +msgid "_Create Playlist" +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 +msgid "_Add to Playlist" +msgstr "" + +#: src/sid/xmms-sid.cc:43 +msgid "SID Player" +msgstr "" + +#: src/sid/xs_config.cc:62 +msgid "Channels:" +msgstr "کانال ها:" + +#: src/sid/xs_config.cc:68 +msgid "Emulation" +msgstr "" + +#: src/sid/xs_config.cc:69 +msgid "Emulate MOS 8580 (default: MOS 6581)" +msgstr "" + +#: src/sid/xs_config.cc:71 +msgid "Do not automatically select chip model" +msgstr "" + +#: src/sid/xs_config.cc:73 +msgid "Emulate filter" +msgstr "" + +#: src/sid/xs_config.cc:75 +msgid "Clock speed:" +msgstr "" + +#: src/sid/xs_config.cc:78 +msgid "Do not automatically select clock speed" +msgstr "" + +#: src/sid/xs_config.cc:80 +msgid "Playback time" +msgstr "" + +#: src/sid/xs_config.cc:81 +msgid "Set maximum playback time:" +msgstr "" + +#: src/sid/xs_config.cc:87 +msgid "Use only when song length is unknown" +msgstr "" + +#: src/sid/xs_config.cc:90 +msgid "Set minimum playback time:" +msgstr "" + +#: src/sid/xs_config.cc:96 +msgid "Subtunes" +msgstr "" + +#: src/sid/xs_config.cc:97 +msgid "Enable subtunes" +msgstr "" + +#: src/sid/xs_config.cc:99 +msgid "Ignore subtunes shorter than:" +msgstr "" + +#: src/sid/xs_config.cc:105 +msgid "Note" +msgstr "" + +#: src/silence-removal/silence-removal.cc:39 +msgid "Silence Removal" +msgstr "" + +#: src/silence-removal/silence-removal.cc:58 +msgid "" +"Silence Removal Plugin for Audacious\n" +"Copyright 2014 John Lindgren" +msgstr "" + +#: src/silence-removal/silence-removal.cc:67 +msgid "Silence Removal" +msgstr "" + +#: src/silence-removal/silence-removal.cc:68 +msgid "Threshold:" +msgstr "" + +#: src/silence-removal/silence-removal.cc:70 +msgid "dB" +msgstr "دسیبل" + +#: src/skins/actions.cc:45 src/skins-qt/actions.cc:43 +msgid "Repeat points cleared." +msgstr "" + +#: src/skins/actions.cc:60 src/skins-qt/actions.cc:58 +msgid "Repeat point A set." +msgstr "" + +#: src/skins/actions.cc:65 src/skins-qt/actions.cc:63 +msgid "Repeat point B set." +msgstr "" + +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 +msgid "Preamp" +msgstr "پیش‌تقویت‌کننده" + +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 +msgid "31 Hz" +msgstr "31 هرتز" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "63 Hz" +msgstr "63 هرتز" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "125 Hz" +msgstr "125 هرتز" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "250 Hz" +msgstr "250 هرتز" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "500 Hz" +msgstr "500 هرتز" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "1 kHz" +msgstr "1 کیلوهرتز" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "2 kHz" +msgstr "2 کیلوهرتز" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "4 kHz" +msgstr "4 کیلوهرتز" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "8 kHz" +msgstr "8 کیلوهرتز" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "16 kHz" +msgstr "16 کیلوهرتز" + +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 +msgid "Audacious Equalizer" +msgstr "اکولایزر Audacious" + +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 +msgid "Recording on" +msgstr "" + +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 +msgid "Recording off" +msgstr "" + +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 +#, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "پیمایش به ‎%d:%-2.2d / %d:%-2.2d" + +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 +#, c-format +msgid "Volume: %d%%" +msgstr "صدا: ‎%d%%‎" + +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 +#, c-format +msgid "Balance: %d%% left" +msgstr "بالانس: ‎%d%%‎ چپ" + +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 +msgid "Balance: center" +msgstr "بالانس: مرکز" + +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 +#, c-format +msgid "Balance: %d%% right" +msgstr "بالانس: ‎%d%%‎ راست" + +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 +msgid "Options Menu" +msgstr "منوی گزینه‌ها" + +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 +msgid "Disable 'Always On Top'" +msgstr "غیرفعال کردن 'همیشه در بالا'" + +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 +msgid "Enable 'Always On Top'" +msgstr "فعال کردن 'همیشه در بالا'" + +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 +msgid "File Info Box" +msgstr "جعبه اطلاعات فایل" + +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 +#: src/skins-qt/menus.cc:142 +msgid "Double Size" +msgstr "" + +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 +msgid "Visualizations" +msgstr "" + +#: src/skins/menus.cc:74 src/skins-qt/menus.cc:64 +msgid "Volume Up" +msgstr "" + +#: src/skins/menus.cc:75 src/skins-qt/menus.cc:65 +msgid "Volume Down" +msgstr "" + +#: src/skins/menus.cc:77 src/skins-qt/menus.cc:67 +msgid "Effects ..." +msgstr "" + +#: src/skins/menus.cc:84 src/skins-qt/menus.cc:74 +msgid "Open Files ..." +msgstr "" + +#: src/skins/menus.cc:85 src/skins-qt/menus.cc:76 +msgid "Open URL ..." +msgstr "" + +#: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 +msgid "Playlist" +msgstr "لیست پخش" + +#: src/skins/menus.cc:90 src/skins-qt/menus.cc:81 +msgid "Output" +msgstr "خروجی" + +#: src/skins/menus.cc:91 src/skins-qt/menus.cc:82 +msgid "View" +msgstr "نما" + +#: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 +#: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 +msgid "Services" +msgstr "خدمات" + +#: src/skins/menus.cc:95 src/skins-qt/menus.cc:86 +msgid "About ..." +msgstr "درباره..." + +#: src/skins/menus.cc:96 src/skins-qt/menus.cc:87 +msgid "Settings ..." +msgstr "تنظیمات..." + +#: src/skins/menus.cc:97 src/skins-qt/menus.cc:88 +msgid "Quit" +msgstr "خروج" + +#: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 +#: src/skins-qt/menus.cc:229 +msgid "Song Info ..." +msgstr "" + +#: src/skins/menus.cc:105 src/skins-qt/menus.cc:96 +msgid "Shuffle by Album" +msgstr "" + +#: src/skins/menus.cc:106 src/skins-qt/menus.cc:97 +msgid "No Playlist Advance" +msgstr "لیست پخش به جلو نرود" + +#: src/skins/menus.cc:117 src/skins-qt/menus.cc:108 +msgid "Set A-B Repeat" +msgstr "" + +#: src/skins/menus.cc:118 src/skins-qt/menus.cc:109 +msgid "Clear A-B Repeat" +msgstr "" + +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 +msgid "Jump to Song ..." +msgstr "" + +#: src/skins/menus.cc:121 src/skins-qt/menus.cc:113 +msgid "Jump to Time ..." +msgstr "پرش به زمان..." + +#: src/skins/menus.cc:125 src/skins-qt/menus.cc:118 +msgid "Play/Resume" +msgstr "پخش/ادامه" + +#: src/skins/menus.cc:127 src/skins-qt/menus.cc:120 +msgid "New Playlist" +msgstr "لیست پخش جدید" + +#: src/skins/menus.cc:128 src/skins-qt/menus.cc:121 +msgid "Rename Playlist ..." +msgstr "تغییرنام لیست پخش..." + +#: src/skins/menus.cc:129 src/skins-qt/menus.cc:122 +msgid "Remove Playlist" +msgstr "حذف لیست پخش" + +#: src/skins/menus.cc:131 src/skins-qt/menus.cc:124 +msgid "Previous Playlist" +msgstr "لیست پخش قبلی" + +#: src/skins/menus.cc:132 src/skins-qt/menus.cc:125 +msgid "Next Playlist" +msgstr "لیست پخش بعدی" + +#: src/skins/menus.cc:134 src/skins-qt/menus.cc:127 +msgid "Import Playlist ..." +msgstr "" + +#: src/skins/menus.cc:135 src/skins-qt/menus.cc:128 +msgid "Export Playlist ..." +msgstr "" + +#: src/skins/menus.cc:137 src/skins-qt/menus.cc:130 +msgid "Playlist Manager ..." +msgstr "" + +#: src/skins/menus.cc:138 src/skins-qt/menus.cc:131 +msgid "Queue Manager ..." +msgstr "" + +#: src/skins/menus.cc:140 src/skins-qt/menus.cc:133 +msgid "Refresh Playlist" +msgstr "" + +#: src/skins/menus.cc:144 src/skins-qt/menus.cc:137 +msgid "Show Playlist Editor" +msgstr "نمایش ویرایشگر لیست پخش" + +#: src/skins/menus.cc:145 src/skins-qt/menus.cc:138 +msgid "Show Equalizer" +msgstr "نمایش اکولایزر" + +#: src/skins/menus.cc:147 src/skins-qt/menus.cc:140 +msgid "Show Remaining Time" +msgstr "نمایش زمان باقی مانده" + +#: src/skins/menus.cc:150 src/skins-qt/menus.cc:143 +msgid "Always on Top" +msgstr "همیشه در بالا" + +#: src/skins/menus.cc:151 src/skins-qt/menus.cc:145 +msgid "On All Workspaces" +msgstr "" + +#: src/skins/menus.cc:153 src/skins-qt/menus.cc:148 +msgid "Roll Up Player" +msgstr "" + +#: src/skins/menus.cc:154 src/skins-qt/menus.cc:149 +msgid "Roll Up Playlist Editor" +msgstr "" + +#: src/skins/menus.cc:155 src/skins-qt/menus.cc:150 +msgid "Roll Up Equalizer" +msgstr "" + +#: src/skins/menus.cc:163 src/skins-qt/menus.cc:158 +msgid "Add URL ..." +msgstr "افزودن آدرس اینترنتی..." + +#: src/skins/menus.cc:164 src/skins-qt/menus.cc:160 +msgid "Add Files ..." +msgstr "افزودن فایل ها..." + +#: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 +msgid "By Title" +msgstr "براساس عنوان" + +#: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 +msgid "By File Name" +msgstr "بر اساس نام فایل" + +#: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 +msgid "By File Path" +msgstr "بر اساس مسیر فایل" + +#: src/skins/menus.cc:176 src/skins-qt/menus.cc:172 +msgid "Remove All" +msgstr "حذف همه" + +#: src/skins/menus.cc:177 src/skins-qt/menus.cc:173 +msgid "Clear Queue" +msgstr "پاکسازی صف" + +#: src/skins/menus.cc:179 src/skins-qt/menus.cc:175 +msgid "Remove Unavailable Files" +msgstr "پاک کردن فایل‌های خارج از دسترس" + +#: src/skins/menus.cc:180 src/skins-qt/menus.cc:176 +msgid "Remove Duplicates" +msgstr "پاک کردن فایل‌های تکراری" + +#: src/skins/menus.cc:182 src/skins-qt/menus.cc:178 +msgid "Remove Unselected" +msgstr "حذف انتخاب‌نشده‌ها" + +#: src/skins/menus.cc:183 src/skins-qt/menus.cc:179 +msgid "Remove Selected" +msgstr "حذف انتخاب‌شده‌ها" + +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 +msgid "Search and Select" +msgstr "جستجو و انتخاب" + +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 +msgid "Invert Selection" +msgstr "برعکس کردن انتخاب‌ها" + +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 +msgid "Select None" +msgstr "انتخاب هیچ‌کدام" + +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 +msgid "Select All" +msgstr "انتخاب همه" + +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 +msgid "By Track Number" +msgstr "براساس شماره آهنگ" + +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 +msgid "By Artist" +msgstr "براساس هنرمند" + +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 +msgid "By Album" +msgstr "براساس آلبوم" + +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 +msgid "By Album Artist" +msgstr "بر اساس هنرمند آلبوم" + +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 +msgid "By Release Date" +msgstr "بر اساس تاریخ انتشار" + +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 +msgid "By Genre" +msgstr "بر اساس سبک" + +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 +msgid "By Length" +msgstr "بر اساس مدت زمان" + +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 +msgid "By Custom Title" +msgstr "" + +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 +msgid "By Comment" +msgstr "" + +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 +msgid "Randomize List" +msgstr "بهم‌ریختن لیست" + +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 +msgid "Reverse List" +msgstr "برعکس کردن ترتیب لیست" + +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 +msgid "Sort Selected" +msgstr "مرتب‌سازی انتخاب‌شده‌ها" + +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 +msgid "Sort List" +msgstr "مرتب‌سازی لیست" + +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 +msgid "Open Containing Folder" +msgstr "" + +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 +msgid "Cut" +msgstr "برش" + +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 +msgid "Copy" +msgstr "کپی" + +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 +msgid "Paste" +msgstr "چسباندن" + +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 +msgid "Paste at End" +msgstr "" + +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 +msgid "Queue/Unqueue" +msgstr "" + +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 +#, c-format +msgid "%s (%d of %d)" +msgstr "‎%s (%d of %d)‎" + +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 +msgid "Audacious Playlist Editor" +msgstr "ویرایشگر لیست پخش Audacious" + +#: src/skins/plugin.cc:49 src/skins-qt/plugin.cc:64 +msgid "Winamp Classic Interface" +msgstr "" + +#: src/skins-qt/menus.cc:75 +msgid "Open Folder ..." +msgstr "بازنمایی پوشه..." + +#: src/skins-qt/menus.cc:159 +msgid "Add Folder ..." +msgstr "افزودن پوشه..." + +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "گزینه‌های موجود در لیست پخش فعال را جستجو کن" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"انتخاب گزینه‌های لیست پخش بر اساس یک یا چن فیلد. فیلدها از قاعده عبارات منظم " +"پشتیبانی کرده، به بزرگی و کوچکی حروف حساس هستند. اگر نمی‌دانید عبارات منظم چه " +"هستند، بخشی از عبارت موردنظر خود را وارد کنید." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "عنوان:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "آلبوم:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "هنرمند:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "نام فایل:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "قبل از جستجو انتخاب قبلی را پاک کن" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "گزینه‌های یافت شده را در صف نشان بده" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "لیست پخش براساس گزینه‌های یافت شده ایجاد کن" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "جستجو" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 +msgid "Player:" +msgstr "پخش کننده:" + +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 +msgid "Select main player window font:" +msgstr "فونت اصلی پنجره پخش‌کننده را انتخاب کنید:" + +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 +msgid "Playlist:" +msgstr "لیست پخش:" + +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 +msgid "Select playlist font:" +msgstr "فونت لیست پخش را انتخاب کنید:" + +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 +msgid "Skin" +msgstr "پوسته" + +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 +msgid "Fonts" +msgstr "فونت" + +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "انتخاب فونت‌های نقشه‌بیتی (فقط از اسکی پشتیبانی می‌شود)" + +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 +msgid "Scroll song title" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 +msgid "Scroll song title in both directions" +msgstr "عنوان آهنگ در هر دو جهت حرکت کند" + +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 +msgid "Analyzer" +msgstr "تحلیل‌کننده" + +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 +msgid "Scope" +msgstr "محدوده" + +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 +msgid "Voiceprint / VU meter" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 +msgid "Off" +msgstr "خاموش" + +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 +#: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 +msgid "Normal" +msgstr "نرمال" + +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 +#: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 +msgid "Fire" +msgstr "آتش" + +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 +msgid "Vertical lines" +msgstr "خطوط عمودی" + +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 +msgid "Lines" +msgstr "خط ها" + +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 +msgid "Bars" +msgstr "میله‌ها" + +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 +msgid "Slowest" +msgstr "کندترین" + +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 +msgid "Slow" +msgstr "کند" + +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 +#: src/soxr/sox-resampler.cc:180 +msgid "Medium" +msgstr "متوسط" + +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 +msgid "Fast" +msgstr "تند" + +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 +msgid "Fastest" +msgstr "تندترین" + +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 +msgid "Dots" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 +msgid "Line" +msgstr "نقطه ای" + +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 +msgid "Solid" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 +msgid "Ice" +msgstr "یخ" + +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 +msgid "Smooth" +msgstr "نرم" + +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 +msgid "Coloring:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 +msgid "Style:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 +msgid "Falloff:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 +msgid "Peak falloff:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 +msgid "Scope Style:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 +msgid "Voiceprint Coloring:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 +msgid "VU Meter Style:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 +msgid "Type" +msgstr "نوع" + +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 +msgid "Visualization type:" +msgstr "نوع جلوه های تصویری:" + +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 +msgid "Analyzer" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 +msgid "Show peaks" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 +msgid "Visualization" +msgstr "جلوه‌های تصویری" + +#: src/skins-qt/skinselector.cc:98 src/skins/skinselector.cc:111 +msgid "Archived Winamp 2.x skin" +msgstr "پوسته فشرده Winamp 2.x" + +#: src/skins-qt/skinselector.cc:102 src/skins/skinselector.cc:115 +msgid "Unarchived Winamp 2.x skin" +msgstr "پوسته غیرفشرده Winamp 2.x" + +#: src/sndfile/plugin.cc:38 +msgid "Sndfile Plugin" +msgstr "" + +#: src/sndfile/plugin.cc:372 +msgid "" +"Based on the xmms_sndfile plugin:\n" +"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" +"\n" +"Adapted for Audacious by Tony Vroon \n" +"\n" +"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.\n" +"\n" +"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.\n" +"\n" +"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." +msgstr "" + +#: src/sndio/sndio.cc:43 +msgid "Sndio Output" +msgstr "" + +#: src/sndio/sndio.cc:98 +msgid "Device (blank for default):" +msgstr "" + +#: src/sndio/sndio.cc:100 +msgid "Save and restore volume:" +msgstr "" + +#: src/sndio/sndio.cc:181 +#, c-format +msgid "Sndio error: Unsupported audio format (%d)" +msgstr "" + +#: src/sndio/sndio.cc:192 +msgid "Sndio error: sio_open() failed" +msgstr "" + +#: src/sndio/sndio.cc:221 +msgid "Sndio error: sio_setpar() failed" +msgstr "" + +#: src/sndio/sndio.cc:233 +msgid "Sndio error: sio_start() failed" +msgstr "" + +#: src/songchange/song_change.cc:30 +msgid "Song Change" +msgstr "" + +#: src/songchange/song_change.cc:245 +msgid "Commands" +msgstr "" + +#: src/songchange/song_change.cc:247 +msgid "Command to run when starting a new song:" +msgstr "" + +#: src/songchange/song_change.cc:250 +msgid "Command to run at the end of a song:" +msgstr "" + +#: src/songchange/song_change.cc:253 +msgid "Command to run at the end of the playlist:" +msgstr "" + +#: src/songchange/song_change.cc:256 +msgid "Command to run when song title changes (for network streams):" +msgstr "" + +#: src/songchange/song_change.cc:259 +msgid "" +"You can use the following format codes, which will be replaced before " +"running the command (not all are useful for the end-of-playlist command):" +msgstr "" + +#: src/songchange/song_change.cc:262 +msgid "" +"%a: Artist\n" +"%b: Album\n" +"%c: Number of channels\n" +"%f: File name (full path)\n" +"%F: Frequency (Hertz)\n" +"%l: Length (milliseconds)\n" +"%n or %s: Formatted title (see playlist settings)\n" +"%p: Currently playing (1 or 0)\n" +"%r: Rate (bits per second)\n" +"%t: Playlist position\n" +"%T: Title (unformatted)" +msgstr "" + +#: src/songchange/song_change.cc:273 +msgid "" +"Parameters passed to the shell should be enclosed in quotation marks. " +"Unquoted parameters may lead to unexpected results." +msgstr "" + +#: src/song-info-qt/song-info.cc:30 +msgid "Song Info" +msgstr "اطلاعات آهنگ" + +#: src/soxr/sox-resampler.cc:44 +msgid "SoX Resampler" +msgstr "" + +#: src/soxr/sox-resampler.cc:172 +msgid "" +"SoX Resampler Plugin for Audacious\n" +"Copyright 2013 Michał Lipski\n" +"\n" +"Based on Sample Rate Converter Plugin:\n" +"Copyright 2010-2012 John Lindgren" +msgstr "" + +#: src/soxr/sox-resampler.cc:178 +msgid "Quick" +msgstr "سریع" + +#: src/soxr/sox-resampler.cc:179 +msgid "Low" +msgstr "پایین" + +#: src/soxr/sox-resampler.cc:181 +msgid "High" +msgstr "بالا" + +#: src/soxr/sox-resampler.cc:182 +msgid "Very High" +msgstr "خیلی بالا" + +#: src/soxr/sox-resampler.cc:183 +msgid "Ultra High" +msgstr "" + +#: src/soxr/sox-resampler.cc:187 +msgid "Minimum" +msgstr "کمینه" + +#: src/soxr/sox-resampler.cc:188 +msgid "Intermediate" +msgstr "" + +#: src/soxr/sox-resampler.cc:193 +msgid "Quality:" +msgstr "کیفیت:" + +#: src/soxr/sox-resampler.cc:196 +msgid "Phase:" +msgstr "" + +#: src/soxr/sox-resampler.cc:200 +msgid "Allow aliasing" +msgstr "" + +#: src/soxr/sox-resampler.cc:202 +msgid "Use steep filter" +msgstr "" + +#: src/speedpitch/speed-pitch.cc:54 +msgid "Speed and Pitch" +msgstr "" + +#: src/speedpitch/speed-pitch.cc:247 +msgid "Speed" +msgstr "سرعت" + +#: src/speedpitch/speed-pitch.cc:248 +msgid "Decouple from pitch" +msgstr "" + +#: src/speedpitch/speed-pitch.cc:250 src/speedpitch/speed-pitch.cc:258 +msgid "Multiplier:" +msgstr "" + +#: src/speedpitch/speed-pitch.cc:254 +msgid "Pitch" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:44 src/statusicon/statusicon.cc:47 +msgid "Status Icon" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:65 +msgid "" +"Status Icon Plugin (partial port for Qt interface)\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 Michał Lipski \n" +"Copyright 2015 Eugene Paskevich \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager." +msgstr "" + +#: src/statusicon-qt/statusicon.cc:86 src/statusicon/statusicon.cc:380 +msgid "Mouse Scroll Action" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:87 src/statusicon/statusicon.cc:381 +msgid "Change volume" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:90 src/statusicon/statusicon.cc:384 +msgid "Change playing song" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:93 src/statusicon/statusicon.cc:387 +msgid "Other Settings" +msgstr "تنظیمات دیگر" + +#: src/statusicon-qt/statusicon.cc:94 src/statusicon/statusicon.cc:388 +msgid "Disable the popup window" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:96 src/statusicon/statusicon.cc:390 +msgid "Close to the system tray" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:98 src/statusicon/statusicon.cc:392 +msgid "Advance in playlist when scrolling upward" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:113 src/statusicon/statusicon.cc:283 +msgid "Se_ttings ..." +msgstr "" + +#: src/statusicon/statusicon.cc:373 +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 Michał Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager." +msgstr "" + +#: src/stereo_plugin/stereo.cc:19 +msgid "Extra Stereo" +msgstr "" + +#: src/stereo_plugin/stereo.cc:36 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin, 1999" +msgstr "" + +#: src/stereo_plugin/stereo.cc:44 +msgid "Extra Stereo" +msgstr "" + +#: src/streamtuner/icecast-model.cc:126 src/streamtuner/shoutcast-model.cc:131 +msgid "Type" +msgstr "نوع" + +#: src/streamtuner/icecast-model.cc:132 +msgid "Current Song" +msgstr "ترانه کنونی" + +#: src/streamtuner/icecast-model.cc:164 +msgid "Other" +msgstr "دیگر" + +#: src/streamtuner/ihr-model.cc:63 +msgid "Market" +msgstr "" + +#: src/streamtuner/ihr-model.cc:156 +msgid "Call Letters" +msgstr "" + +#: src/streamtuner/ihr-model.cc:162 +msgid "Description" +msgstr "شرح" + +#: src/streamtuner/shoutcast-model.cc:128 +msgid "Listeners" +msgstr "شنونده ها" + +#: src/streamtuner/shoutcast-model.cc:188 +msgid "Top 500 Stations" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:189 +msgid "Alternative" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:190 +msgid "Blues" +msgstr "بلوز" + +#: src/streamtuner/shoutcast-model.cc:191 +msgid "Classical" +msgstr "کلاسیک" + +#: src/streamtuner/shoutcast-model.cc:192 +msgid "Country" +msgstr "کانتری" + +#: src/streamtuner/shoutcast-model.cc:193 +msgid "Decades" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:194 +msgid "Easy Listening" +msgstr "موسیقی آرام" + +#: src/streamtuner/shoutcast-model.cc:195 +msgid "Electronic" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:196 +msgid "Folk" +msgstr "فولک" + +#: src/streamtuner/shoutcast-model.cc:197 +msgid "Inspirational" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:198 +msgid "International" +msgstr "بین المللی" + +#: src/streamtuner/shoutcast-model.cc:199 +msgid "Jazz" +msgstr "جاز" + +#: src/streamtuner/shoutcast-model.cc:200 +msgid "Latin" +msgstr "لاتین" + +#: src/streamtuner/shoutcast-model.cc:201 +msgid "Metal" +msgstr "متال" + +#: src/streamtuner/shoutcast-model.cc:203 +msgid "New Age" +msgstr "عصر جدید" + +#: src/streamtuner/shoutcast-model.cc:204 +msgid "Pop" +msgstr "پاپ" + +#: src/streamtuner/shoutcast-model.cc:205 +msgid "Public Radio" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:206 +msgid "R&B and Urban" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:207 +msgid "Rap" +msgstr "رپ" + +#: src/streamtuner/shoutcast-model.cc:208 +msgid "Reggae" +msgstr "رگه" + +#: src/streamtuner/shoutcast-model.cc:209 +msgid "Rock" +msgstr "راک" + +#: src/streamtuner/shoutcast-model.cc:210 +msgid "Seasonal and Holiday" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:211 +msgid "Soundtracks" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:212 +msgid "Talk" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:213 +msgid "Themes" +msgstr "" + +#: src/streamtuner/streamtuner.cc:59 +msgid "Shoutcast" +msgstr "" + +#: src/streamtuner/streamtuner.cc:60 +msgid "Icecast" +msgstr "" + +#: src/streamtuner/streamtuner.cc:71 +msgid "Stream Tuner" +msgstr "" + +#: src/tonegen/tonegen.cc:45 +msgid "Tone Generator" +msgstr "" + +#: src/tonegen/tonegen.cc:92 +#, c-format +msgid "%s %.1f Hz" +msgstr "" + +#: src/tonegen/tonegen.cc:92 +msgid "Tone Generator: " +msgstr "" + +#: src/tonegen/tonegen.cc:161 +msgid "" +"Sine tone generator by Håvard Kvålen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" +msgstr "" + +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(پیام‌های بیشتر مخفی شده‌اند.)" + +#: src/ui-common/dialogs-qt.cc:52 +msgid "Working ..." +msgstr "در حال کار..." + +#: src/ui-common/dialogs-qt.cc:73 +msgid "Information" +msgstr "اطلاعات" + +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + +#: src/voice_removal/voice_removal.cc:28 +msgid "Voice Removal" +msgstr "" + +#: src/vorbis/vorbis.cc:431 +msgid "" +"Audacious Ogg Vorbis Decoder\n" +"\n" +"Based on the Xiph.org Foundation's Ogg Vorbis Plugin:\n" +"http://www.xiph.org/\n" +"\n" +"Original code by:\n" +"Tony Arcieri \n" +"\n" +"Contributions from:\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Håvard Kvålen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin " +msgstr "" + +#: src/vorbis/vorbis.h:18 +msgid "Ogg Vorbis Decoder" +msgstr "" + +#: src/vtx/info.cc:24 +#, c-format +msgid "Details about %s" +msgstr "" + +#: src/vtx/info.cc:26 +msgid "" +"Title: %t\n" +"Author: %a\n" +"From: %f\n" +"Tracker: %T\n" +"Comment: %C\n" +"Chip type: %c\n" +"Stereo: %s\n" +"Loop: %l\n" +"Chip freq: %F\n" +"Player Freq: %P\n" +"Year: %y" +msgstr "" + +#: src/vtx/vtx.cc:38 +msgid "VTX Decoder" +msgstr "" + +#: src/vtx/vtx.cc:178 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Based on in_vtx.dll by Roman Sherbakov \n" +"Audacious plugin by Pavel Vymetalek " +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:31 +msgid "" +"VU Meter Plugin for Audacious\n" +"Copyright 2017-2019 Marc Sánchez Fauste" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:35 +msgid "VU Meter Settings" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:37 +msgid "Peak hold time:" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:42 +msgid "Fall-off time:" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:44 +msgid "dB/second" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:46 +msgid "Display legend" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.h:37 +msgid "VU Meter" +msgstr "" + +#: src/waveout/waveout.cc:43 +msgid "Win32 waveOut" +msgstr "" + +#: src/waveout/waveout.cc:69 +msgid "" +"Win32 waveOut Plugin for Audacious\n" +"Copyright 2016 John Lindgren" +msgstr "" + +#: src/wavpack/wavpack.cc:25 +msgid "WavPack Decoder" +msgstr "" + +#: src/wavpack/wavpack.cc:217 +msgid "lossy (hybrid)" +msgstr "" + +#: src/wavpack/wavpack.cc:219 +msgid "lossy" +msgstr "" + +#: src/wavpack/wavpack.cc:259 +msgid "" +"Copyright 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan." +msgstr "" + +#: src/xsf/plugin.cc:74 +msgid "2SF Decoder" +msgstr "" + +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 +msgid "XSF Configuration" +msgstr "" + +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + +#: src/xspf/xspf.cc:95 +msgid "XML Shareable Playlists (XSPF)" +msgstr "" diff -Nru audacious-plugins-4.1/po/fi.po audacious-plugins-4.3.1/po/fi.po --- audacious-plugins-4.1/po/fi.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/fi.po 2023-04-29 20:17:32.000000000 +0000 @@ -3,17 +3,17 @@ # This file is distributed under the same license as the Audacious Plugins package. # # Translators: -# Jiri Grönroos , 2014-2016,2018,2020 +# Jiri Grönroos , 2014-2016,2018,2020,2022-2023 # J. S. Tuomisto , 2013 # J. S. Tuomisto , 2013 -# Kimmo Kujansuu , 2020 +# Kimmo Kujansuu , 2020,2022-2023 msgid "" msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-22 17:15+0000\n" -"Last-Translator: Jiri Grönroos \n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Kimmo Kujansuu , 2020,2022-2023\n" "Language-Team: Finnish (http://www.transifex.com/audacious/audacious/" "language/fi/)\n" "Language: fi\n" @@ -31,7 +31,7 @@ msgstr "AdPlug (AdLib-soitin)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "sarjoitettu" @@ -43,9 +43,11 @@ msgid "OPL Emulator:" msgstr "OPL-emulaattori:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Näytteenottotaajuus" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Näytteenottotaajuus:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -61,7 +63,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Sekalaiset" @@ -69,262 +71,9 @@ msgid "Repeat song in endless loop" msgstr "Toista kappale loputtomassa silmukassa" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Herätyskello" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Aseta hälytys..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Liitännäinen jolla voidaan aloittaa toistaminen tietyllä ajan hetkellä.\n" -"\n" -"Alkuperäiset kehittäjät Adam Feakin ja Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Aika\n" -" Hälytys:\n" -" Aika hälytykseen.\n" -"\n" -" Hiljainen jälkeen:\n" -" Lopeta hälytys tämän ajan kuluttua.\n" -" (jos herätysikkuna ei ole suljettu)\n" -"\n" -"\n" -"Päivät\n" -" Päivä:\n" -" Valitse hälytyksen aktivointipäivät.\n" -"\n" -" Aika:\n" -" Valitse hälytyksen aika jokaiselle päivälle,\n" -" tai valitse painike käyttääksesi oletusasetus\n" -" aikaa.\n" -"\n" -"\n" -"Voimakkuus\n" -" Häivytä:\n" -" Häivytä valittuun äänenvoimakkuuteen saakka\n" -" tämän ajanjakson aikana.\n" -"\n" -" Aloittaa:\n" -" Aloita häivytys tästä voimakkudesta.\n" -"\n" -" Lopussa:\n" -" Äänenvoimakkuuden lopettaminen. Jos häivytys-\n" -" aika on 0 se asetaa voimakkuuden tähän ja\n" -" aloittaa soittamisen.\n" -"\n" -"\n" -"Vaihtoehdot:\n" -" Lisäkomento:\n" -" Suorita tämä komento hälytyshetkellä.\n" -"\n" -" Soittolista:\n" -" Lataa tämä soittolista. Jos soittolistaa ei ole\n" -" annettu niin nykyinen lista on käytössä.\n" -" Verkko-osoite mp3/ogg suoratoistolle\n" -" voidaan myös antaa täällä.\n" -"\n" -" Muistutus:\n" -" Näytä muistutus kun hälytys sammuu.\n" -" Kirjoita muistutus syöttökenttään ja ota käyttöön\n" -" -valintaruutu, jos haluat pitää sen näkyvillä." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Herätys!" - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Muistutuksesi tälle päivälle on..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Muistutus" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Maanantai" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Tiistai" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Keskiviikko" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Torstai" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Perjantai" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Lauantai" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Sunnuntai" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Aika" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Kellonaika (oletus):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Hiljennä, kun aikaa kulunut:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "tunnit" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minuutit" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Valitse päivät jolloin herätyskello on aktiivinen" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Päivä" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Oletus" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Päivät" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Häivytys" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "sekuntia" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Äänenvoimakkuus" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Aloita" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Lopullinen" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Nykyinen" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Lisäkomento" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "käytä" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Soittolista (valinnainen)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Valitse soittolista" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Asetukset" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Mitä nämä asetukset tarkoittavat?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Ohje" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" -msgstr "Albumin kansikuvitus" +msgstr "Levyn kansikuva" #: src/alsa/alsa.h:64 msgid "ALSA Output" @@ -338,11 +87,11 @@ "My thanks to William Pitcock, author of the ALSA Output Plugin NG, whose " "code served as a reference when the ALSA manual was not enough." msgstr "" -"ALSA-lähdön liitännäinen Audacioukselle.\n" +"ALSA Output Plugin for Audacious\n" "Copyright 2009-2012 John Lindgren\n" "\n" -"Kiitokseni William Pitcock:lle (ALSA Output Plugin NG:n kehittäjä), jonka " -"koodi toimi referenssinä silloin, kun ALSA:n manuaali ei riittänyt." +"Kiitokseni William Pitcock \"ALSA Output Plugin NG\"-kehittäjälle, jonka " +"koodi toimi referenssinä silloin kun ALSA-manuaali ei riittänyt." #: src/alsa/config.cc:61 msgid "(no description)" @@ -370,7 +119,7 @@ #: src/amidiplug/amidi-plug.cc:42 msgid "AMIDI-Plug (MIDI Player)" -msgstr "AMIDI-liitännäinen (MIDI-soitin)" +msgstr "AMIDI-Plug (MIDI Player)" #: src/amidiplug/amidi-plug.cc:445 msgid "" @@ -470,87 +219,83 @@ msgid "Synthesizer" msgstr "Syntetisaattori" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Näytteenottotaajuus:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" -msgstr "AMIDI-liitännäinen - valitse SoundFont-tiedosto" +msgstr "AMIDI-Plug - valitse SoundFont-tiedosto" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Peru" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Avaa" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Tiedostonimi" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Koko (tavuina)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Nimi:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " MIDI-tiedot " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Muoto:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Kesto (ms):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Raitojen lukumäärä:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "muuttuja" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Aikajako:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI-kommentit ja -lyriikat " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* MIDI-tiedostossa ei ollut kommentteja *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* MIDI-tiedostossa ei ollut lyriikoita *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Sulje" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (virheellinen UTF-8)" @@ -606,7 +351,7 @@ msgid "Concave Rectangle" msgstr "Kovera suorakulmio" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Ei mitään" @@ -642,94 +387,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Näyttää OSD:n kun toisto jatkuu." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Sijoitus" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Suhteellinen X:n poikkeama:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Suhteellinen Y:n poikkeama:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "OSD:n maksimileveys:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Monen näytön asetukset" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Näytä OSD käyttäen:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "kaikki näytöt" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "näyttö %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Ajoitus (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Näytä:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Häivytä sisään:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Häivytä ulos:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Kirjasimet" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Kirjasin %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Varjo" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Esitystyyli" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Värit" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Väri %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Käytä liipaisinta" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Tapahtuma" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Komposointimanageri havaittu" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -739,78 +484,94 @@ "Jos komposointimanageri ei ole vielä päällä, aktivoi se tai muutoin OSD ei " "toimi kunnolla." -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Komposointimanageria ei tarvita jäljiteltyyn läpinäkyvyyteen" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Läpinäkyvyys" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Jäljitelty läpinäkyvyys" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Oikea läpinäkyvyys (vaatii X:n komposointilaajennuksen)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Komposointilaajennusta ei ole ladattu" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Sijainti" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animaatio" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Teksti" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Koristeet" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Liipaisin" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Muut" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Testaa" #: src/asx3/asx3.cc:35 msgid "ASXv3 Playlists" -msgstr "ASXv3-soittolistat" +msgstr "ASXv3-soittolista" #: src/asx/asx.cc:33 msgid "ASXv1/ASXv2 Playlists" -msgstr "ASXv1/ASXv2 -soittolistat" +msgstr "ASXv1/ASXv2-soittolista" #: src/audpl/audpl.cc:33 msgid "Audacious Playlists (audpl)" -msgstr "Audacious -soittolistat (audpl)" +msgstr "Audacious soittolista (audpl)" + +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Bittisyvyys:" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Alataajuus:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Väri" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" -msgstr "Blur Scope" +msgstr "Sumenna alue" #: src/bs2b/plugin.cc:38 msgid "Bauer Stereophonic-to-Binaural (BS2B)" @@ -820,6 +581,10 @@ msgid "Presets:" msgstr "Esiasetukset:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Oletus" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Syöttötaso:" @@ -832,13 +597,13 @@ msgid "Cut frequency:" msgstr "Leikkaustaajuus:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" -msgstr "Spektrianalysaattori" +msgstr "Spektri analysaattori" #: src/cdaudio/cdaudio-ng.cc:71 msgid "Audio CD Plugin" -msgstr "Ääni CD -liitännäinen" +msgstr "Audio CD Plugin" #: src/cdaudio/cdaudio-ng.cc:118 msgid "" @@ -927,50 +692,50 @@ msgid "Audio CD" msgstr "Ääni CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Ei voitu avata CD-asemaa %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Ääneen kykenevää CD-asemaa ei löydetty." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Asema on tyhjä." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Levytyyppiä ei tueta." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Avatun CD-aseman alustaminen epäonnistui." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Ei voitu lukea ensimmäistä/viimeistä raitaa." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Ei voida lukea alku/loppu LSN:ää raidalle %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "CDDB-yhteyden luominen epäonnistui." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "CDDB-palvelimen kysely epäonnistui." -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "CDDB-palvelimen kysely epäonnistui: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "CDDB-tietojen lukeminen epäonnistui: %s" @@ -1004,7 +769,7 @@ "Dynamic Range Compression Plugin for Audacious\n" "Copyright 2010-2014 John Lindgren" msgstr "" -"Dynaamisen alueen kompressori -liitännäinen Audacioukselle\n" +"Dynamic Range Compression Plugin for Audacious\n" "Copyright 2010-2014 John Lindgren" #: src/compressor/compressor.cc:64 @@ -1043,6 +808,13 @@ msgid "Default song length:" msgstr "Kappaleen oletuskesto:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "sekuntia" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Uudelleennäytteistys" @@ -1071,7 +843,7 @@ msgid "CoreAudio output" msgstr "CoreAudio-lähtö" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1091,11 +863,11 @@ "Perustuu SDL ulostulon Audacious lisäosaan\n" "Copyright 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Käytä varattua tilaa" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "Käytä täydellistä ääntä (mukauta laitteen näytteenottotaajuutta)" @@ -1104,12 +876,12 @@ "Crossfade Plugin for Audacious\n" "Copyright 2010-2014 John Lindgren" msgstr "" -"Ristiinhäivytys-liitännäinen Audacioukselle\n" +"Crossfade Plugin for Audacious\n" "Copyright 2010-2014 John Lindgren" #: src/crossfade/crossfade.cc:47 msgid "Crossfade" -msgstr "Ristiinhäivytys" +msgstr "Ristihäivytys" #: src/crossfade/crossfade.cc:48 msgid "On automatic song change" @@ -1137,7 +909,7 @@ #: src/crossfade/crossfade.cc:71 msgid "Crossfade" -msgstr "Ristiinhäivytys" +msgstr "Ristihäivytys" #: src/crystalizer/crystalizer.cc:31 msgid "Crystalizer" @@ -1153,7 +925,7 @@ #: src/cue/cue.cc:42 msgid "Cue Sheet Plugin" -msgstr "Cue Sheet -liitännäinen" +msgstr "Cue Sheet Plugin" #: src/delete-files/delete-files.cc:53 src/delete-files/delete-files.cc:215 #: src/delete-files/delete-files.cc:230 @@ -1192,20 +964,20 @@ msgid "Delete" msgstr "Poista" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Peruuta" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Poista valitut tiedostot" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Poistamistapa" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Siirrä roskakoriin pysyvän poistamisen sijaan" @@ -1231,7 +1003,7 @@ msgstr "Viive:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1247,11 +1019,11 @@ msgid "Echo" msgstr "Kaikuefekti" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" -msgstr "FFmpeg-liitännäinen" +msgstr "FFmpeg Plugin" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1260,16 +1032,16 @@ "William Pitcock \n" "Matti Hämäläinen " msgstr "" -"Monen ääniformaatin dekoodaus -liitännäinen Audacioukselle käyttäen FFmpeg " -"multimedia frameworkia (http://www.ffmpeg.org/).\n" +"Multi-format audio decoding plugin for Audacious using\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" "\n" -"Audacious liitännäisen kehittivät:\n" +"Audacious lisäosan kehittivät:\n" "William Pitcock \n" "Matti Hämäläinen " #: src/filewriter/filewriter.cc:48 msgid "FileWriter Plugin" -msgstr "FileWriter-liitännäinen" +msgstr "FileWriter Plugin" #: src/filewriter/filewriter.cc:316 #, c-format @@ -1375,89 +1147,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "8 kbit/s" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "16 kbit/s" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "32 kbit/s" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "40 kbit/s" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "48 kbit/s" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "56 kbit/s" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "64 kbit/s" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "80 kbit/s" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "96 kbit/s" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "112 kbit/s" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "128 kbit/s" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "160 kbit/s" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "192 kbit/s" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "224 kbit/s" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "256 kbit/s" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "320 kbit/s" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Joint Stereo" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1569,7 +1341,7 @@ msgid "Quality (0-1):" msgstr "Laatu (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Yleiset" @@ -1578,11 +1350,11 @@ msgid "FLAC Decoder" msgstr "FLAC-dekooderi" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "häviötön" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1599,12 +1371,12 @@ "GIO Plugin for Audacious\n" "Copyright 2009-2012 John Lindgren" msgstr "" -"GIO-liitännäinen Audacioukselle\n" +"GIO Plugin for Audacious\n" "Copyright 2009-2012 John Lindgren" #: src/gio/gio.cc:42 msgid "GIO Plugin" -msgstr "GIO-liitännäinen" +msgstr "GIO Plugin" #: src/gio/gio.cc:152 msgid "Read-and-append mode not supported" @@ -1614,7 +1386,7 @@ msgid "Invalid open mode" msgstr "Virheellinen tila avata" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1634,116 +1406,134 @@ "\n" "Lisenssi: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" -msgstr "OpenGL Spektrianalysaattori" - -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "Numero" +msgstr "Spektri analysaattori OpenGL" #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "Tapahtuman numero" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Nimi" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Esittäjä" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Vuosi" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" -msgstr "Albumi" - -#: src/gtkui/columns.cc:40 -msgid "Album artist" -msgstr "Albumin esittäjä" +msgstr "Levy" #: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr "Levyn esittäjä" + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Raita" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Tyylilaji" -#: src/gtkui/columns.cc:43 -msgid "Queue position" +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" msgstr "Sijainti jonossa" -#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Kesto" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "Tiedostopolku" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Mukautettu nimi" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Tiedostonimi" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Mukautettu nimi" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Bittinopeus" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Kommentti" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "Julkaisija" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "Kataloginumero" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Käytettävissä olevat sarakkeet" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Näytettävät sarakkeet" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" -msgstr "Etsintätyökalu" +msgstr "Haku" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Telakoi vasemmalle" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Telakoi oikealle" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Telakoi ylhäälle" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Telakoi alhaalle" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Poista telakointi" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Poista käytöstä" @@ -1783,8 +1573,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Toista" @@ -1812,12 +1602,12 @@ #: src/gtkui/menus.cc:97 src/qtui/menus.cc:145 src/skins/menus.cc:114 #: src/skins-qt/menus.cc:105 msgid "Previous Album" -msgstr "Edellinen albumi" +msgstr "Edellinen levy" #: src/gtkui/menus.cc:98 src/qtui/menus.cc:146 src/skins/menus.cc:115 #: src/skins-qt/menus.cc:106 msgid "Next Album" -msgstr "Seuraava albumi" +msgstr "Seuraava levy" #: src/gtkui/menus.cc:100 src/qtui/menus.cc:148 msgid "_Repeat" @@ -1961,8 +1751,8 @@ msgid "Remove _Unavailable Files" msgstr "Poista _ei saatavilla olevat tiedostot" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Uusi" @@ -1972,7 +1762,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "_Poista" @@ -2026,7 +1816,7 @@ #: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 msgid "Show Info Bar _Album Art" -msgstr "Näytä tietopalkki _Album Art" +msgstr "Näytä tietopalkki _Levyn kansi" #: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 msgid "Show Info Bar Vis_ualization" @@ -2103,7 +1893,7 @@ msgstr "Valitse _kaikki" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Nimeä uudelleen..." @@ -2131,197 +1921,202 @@ msgid "Show column headers" msgstr "Näytä sarakkeiden otsakkeet" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "Käytä symbolisia kuvakkeita työkalupalkissa" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Vieritä kappaleen vaihtuessa" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "GTK-käyttöliittymä" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Puskuroidaan..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Toista" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Keskeytä" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Etsi kirjastosta" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Avaa tiedostoja" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Lisää tiedostoja" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Edellinen" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Pysäytä" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Seuraava" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Tallenna suoratoisto" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Kertaus" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Sekoitus" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "Valikko" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d kanava" msgstr[1] "%d kanavaa" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "%d kbit/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Yksittäinen -tila." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Soittolista -tila." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Pysäytä kappaleen jälkeen." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Edellinen raita" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Keskeytä/Jatka" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Seuraava raita" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "Askel eteenpäin" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "Askel taaksepäin" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Vaimenna" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Nosta äänenvoimakkuutta" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Laske äänenvoimakkuutta" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Hyppää tiedostoon" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Näytä/Piilota soittimen ikkunat" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Näytä OSD" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Kertaus" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Sekoitus" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Pysäytä nykyisen jälkeen" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Nosta soittimen ikkunat" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(ei mitään)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2331,11 +2126,11 @@ "\n" "Haluatko jatkaa?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Kytketään hiiren painalluksia" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2343,25 +2138,25 @@ "Paina näppäinyhdistelmää tekstikentän sisällä.\n" "Voit käyttää myös hiiren nappeja." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Pikanäppäimet:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Toiminto:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Näppäinsidos:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Lisää" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" -msgstr "Globaalit pikanäppäimet" +msgstr "Yleiset pikanäppäimet" #: src/hotkey/plugin.cc:76 msgid "" @@ -2456,59 +2251,58 @@ "JACK-palvelin vaatii %d Hz, näytteenottotaajuuden, mutta Audacious käyttää " "%d Hz. Käytä Sample Rate Converter -ohjelmaa korjataksesi ongelman." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s-asetukset" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Moduulipolut:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" "After adding new paths, press Enter to scan for new plugins." msgstr "" -"Erota polut kaksoispisteellä.\n" -"Näistä poluista etsitään liitännäisiä, LADSPA_PATH:n lisäksi.\n" -"Uuden polun lisäämisen jälkeen paina entteriä hakeaksesi uusia liitännäisiä." -"" +"Erota useita polkuja kaksoispisteellä.\n" +"Näistä poluista etsitään lisäosia, LADSPA-polun lisäksi.\n" +"Uuden polun lisäämisen jälkeen paina enter ja etsi uusia lisäosia." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Saatavilla olevat liitännäiset:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Käytä" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Aktiiviset liitännäiset:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Asetukset" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" msgstr "" -"LADSPA-isäntä Audacioukselle\n" +"LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" #: src/ladspa/plugin.h:78 msgid "LADSPA Host" -msgstr "LADSPA-isäntä" +msgstr "Kone LADSPA" #: src/lirc/lirc.cc:55 msgid "LIRC Plugin" -msgstr "LIRC-liitännäinen" +msgstr "LIRC Plugin" #: src/lirc/lirc.cc:379 msgid "" @@ -2525,18 +2319,18 @@ "\n" "For more information about LIRC, see http://lirc.org." msgstr "" -"Yksinkertainen liitännäinen Audaciouksen ohjaamiseen LIRC:n avulla.\n" +"Lisäosa Audaciouksen ohjaamiseen LIRC:n avulla.\n" "\n" "Muuntanut Audacioukselle:\n" "Tony Vroon \n" "Joonas Harjumäki \n" "\n" -"Perustuu XMMS LIRC -liitännäiseen, jonka kehittivät:\n" +"Perustuu XMMS LIRC Plugin, jonka kehittivät:\n" "Carl van Schaik \n" "Christoph Bartelmus \n" "Andrew O. Shadoura \n" "\n" -"Lisää tieto LIRC:stä http://lirc.org." +"Lisätietoja LIRC:stä http://lirc.org." #: src/lirc/lirc.cc:390 msgid "Connection" @@ -2550,103 +2344,107 @@ msgid "Wait before reconnecting:" msgstr "Odota ennen uudelleenyhdistämistä:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "Sanoitukset" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Missään" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "Artisti lyhenteenä alussa, koko nimi -- lopussa" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "Lyhennettävät sarakkeet:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "Sarakkeet ovat ORed RegExp, jota ympäröi välilyönti" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "Sarake jaetaan:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "Lyhennä edelleen saraketta" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "Yleiset" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "Jaa artistin ja nimikkeen sarake" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "Internet-lähteet" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "Nouda sanoitukset:" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "Lähteet" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "Käytä upotettuja sanoituksia (lyrics tagista)" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "Nouda sanoitukset internetistä:" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "Tallenna noudetut sanoitukset paikalliseen välimuistiin" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Paikallinen tallennustila" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "Lataa sanoitukset (.lrc) kiintolevyltä" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Ei voitu hakea %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Ei voida jäsentää %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Etsitään lyriikoita..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Virhe" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "Sanoituksia ei löytynyt." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "Puuttuu otsikko tai esittäjä." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Tallenna paikallisesti" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Päivitä" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" -msgstr "M3U-soittolistat" +msgstr "M3U-soittolista" #: src/metronom/metronom.cc:44 msgid "Tact Generator" @@ -2685,8 +2483,8 @@ "Channel Mixer Plugin for Audacious\n" "Copyright 2011-2012 John Lindgren and Michał Lipski" msgstr "" -"Kanavamikseri-liitännäinen Audacioukselle\n" -"Copyright 2011-2012 John Lindgren ja Michał Lipski" +"Channel Mixer Plugin for Audacious\n" +"Copyright 2011-2012 John Lindgren and Michał Lipski" #: src/mixer/mixer.cc:259 msgid "Channel Mixer" @@ -2698,7 +2496,7 @@ #: src/mms/mms.cc:35 msgid "MMS Plugin" -msgstr "MMS-liitännäinen" +msgstr "MMS Plugin" #: src/mms/mms.cc:82 msgid "Error connecting to MMS server" @@ -2802,56 +2600,32 @@ msgstr "Nämä asetukset tulevat voimaan, kun Audacious käynnistetään uudelleen." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" -msgstr "Lopeta tämän kappaleen jälkeen" +msgstr "Lopeta kappaleen jälkeen" #: src/moonstone/moonstone.cc:39 msgid "Moonstone" msgstr "Kuukivi" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Palauta oletusarvoihin" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Soi nyt" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Tapahtuman numero" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Albumi / esittäjä" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Sijainti jonossa" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Tiedostopolku" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Tiedostonimi" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Mukautettu nimi" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Nimikkeitä" #: src/mpg123/mpg123.cc:54 msgid "MPG123 Plugin" -msgstr "MPG123-liitännäinen" +msgstr "MPG123 Plugin" #: src/mpg123/mpg123.cc:81 msgid "Advanced" @@ -2861,7 +2635,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Käytä tarkkaa keston laskentaa (hidas)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Surround" @@ -2871,7 +2645,7 @@ #: src/neon/neon.cc:97 msgid "Neon HTTP/HTTPS Plugin" -msgstr "Neon HTTP/HTTPS -liitännäinen" +msgstr "Neon HTTP/HTTPS Plugin" #: src/neon/neon.cc:526 msgid "Error parsing redirect" @@ -2920,22 +2694,22 @@ "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" -"Työpöytäilmoitukset -liitännäinen Audacioukselle\n" +"Desktop Notifications Plugin for Audacious\n" "Copyright (C) 2010 Maximilian Bogner\n" -"Copyright (C) 2011-2013 John Lindgren sekä Jean-Alexandre Anglès d'Auriac\n" +"Copyright (C) 2011-2013 John Lindgren and Jean-Alexandre Anglès d'Auriac\n" "\n" -"This plugin 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 3 of the License, or (at your option) " -"any later version.\n" +"Tämä lisäosa on ilmainen ohjelma: voit jakaa sen uudelleen ja/tai muokata " +"sitä Free Software Foundation julkaiseman GNU General Public License -" +"ehtojen mukaisesti, joko lisenssin version 3 tai (valinnan mukaan) minkä " +"tahansa myöhemmän version.\n" +"\n" +"Tämä lisäosa jaetaan siinä toivossa, että siitä on hyötyä, mutta ILMAN " +"MITÄÄN TAKUUTA; ilman edes oletettua takuuta MYYNTIKELPOISUUDESTA tai " +"SOVELTUVUUDESTA TIETTYYN TARKOITUKSEEN. Katso lisätietoja GNU General Public " +"License.\n" "\n" -"This plugin 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.\n" -"\n" -"You should have received a copy of the GNU General Public License along with " -"this program. If not, see ." +"Sinun olisi pitänyt saada kopio lisenssistä GNU General Public License tämän " +"ohjelman mukana. Jos ei, katso ." #: src/notify/notify.cc:104 msgid "Show playback controls" @@ -2947,7 +2721,7 @@ #: src/notify/notify.cc:108 msgid "Include album name in notification" -msgstr "Sisällytä albumin nimi ilmoitukseen" +msgstr "Levyn nimi lisätään ilmoitukseen" #: src/notify/notify.cc:110 msgid "Custom notification duration:" @@ -2961,7 +2735,7 @@ msgid "OpenMPT (Module Player)" msgstr "OpenMPT (moduulisoitin)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -2971,19 +2745,19 @@ "\n" "Kirjoittanut: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Stereoerottelu:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "Interpolointi:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Lineaarinen" @@ -2995,11 +2769,23 @@ msgid "Windowed sinc" msgstr "Ikkunoitu sinc" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "Opus-dekooderi" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" +"Opus Decoder lisäosa Audaciousille\n" +"Copyright 2022 Thomas Lange" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4-lähtö" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "OSS3-lähtö" @@ -3035,30 +2821,52 @@ "I would like to thank people on #audacious, especially Tony Vroon and John " "Lindgren and of course the authors of the previous OSS plugin." msgstr "" -"OSS4-lähdön liitännäinen Audacioukselle\n" +"OSS4 Output Plugin for Audacious\n" "Copyright 2010-2012 Michał Lipski\n" "\n" "Haluaisin kiittää ihmisiä kanavalla #audacious, erityisesti Tony Vroonia " -"sekä John Lindgreniä. Kiitokset myös edellisen OSS-liitännäisen kehittäjille." +"sekä John Lindgreniä. Kiitokset myös edellisen OSS-lisäosan kehittäjille." + +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "PipeWire ulostulo" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Toisto" -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Soittolistan hallinta" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Poista" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "_Nimeä uudelleen" #: src/pls/pls.cc:35 msgid "PLS Playlists" -msgstr "PLS-soittolistat" +msgstr "PLS-soittolista" #: src/psf/plugin.cc:53 msgid "OpenPSF PSF1/PSF2 Decoder" @@ -3068,7 +2876,7 @@ msgid "OpenPSF Configuration" msgstr "OpenPSF-asetukset" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Älä huomioi tiedoston ilmoittamaa kestoa" @@ -3159,11 +2967,11 @@ "\n" "Lisenssi: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "Paina näppäinyhdistelmää tekstikentän sisällä." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3211,14 +3019,18 @@ msgid "Audio Settings ..." msgstr "Ääniasetukset..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "Q#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "T#" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "C#" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Qt-käyttöliittymä" @@ -3249,14 +3061,14 @@ #: src/resample/resample.cc:43 msgid "Sample Rate Converter" -msgstr "Uudelleenäytteistäjä" +msgstr "Sample Rate -muunnin" #: src/resample/resample.cc:183 msgid "" "Sample Rate Converter Plugin for Audacious\n" "Copyright 2010-2012 John Lindgren" msgstr "" -"Uudelleenäytteistys-liitännäinen Audacioukselle\n" +"Sample Rate Converter Plugin for Audacious\n" "Copyright 2010-2012 John Lindgren" #: src/resample/resample.cc:187 @@ -3403,7 +3215,7 @@ "project.\n" "\n" msgstr "" -"Audacious Scrobbler 2.0 -liitännäinen, luonut Pitxyoki,\n" +"Audacious Scrobbler Plugin 2.0 by Pitxyoki,\n" "\n" "Copyright © 2012-2013 Luís M. Picciochi Oliveira \n" "\n" @@ -3416,7 +3228,7 @@ "Please check the Preferences for the Scrobbler plugin." msgstr "" "Audacious käyttää parannettua versiota Last.fm Scrobblerista.\n" -"Scrobbler -liitännäinen löytyy asetuksista." +"Scrobbler Plugin löytyy asetuksista." #: src/sdlout/sdlout.cc:43 msgid "SDL Output" @@ -3427,7 +3239,7 @@ "SDL Output Plugin for Audacious\n" "Copyright 2010 John Lindgren" msgstr "" -"SDL-lähdön liitännäinen Audacioukselle\n" +"SDL Output Plugin for Audacious\n" "Copyright 2010 John Lindgren" #: src/search-tool/library.cc:35 src/search-tool/library.cc:46 @@ -3435,30 +3247,30 @@ msgid "Library" msgstr "Kirjasto" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d kappale" msgstr[1] "%d kappaletta" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "tämän tyylilajin" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "on" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "kautta" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Näytettävien tulosten määrä:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Tutki kirjasto uudelleen käynnistyksen yhteydessä" @@ -3466,7 +3278,7 @@ msgid "Monitor library for changes" msgstr "Seuraa kirjaston muutoksia" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3474,37 +3286,37 @@ "Tuodaksesi musiikkikirjastosi Audacioukseen, valitse kansio ja paina sen " "jälkeen päivitys painiketta." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Odota..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Valitse kansio" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Etsi kirjastosta" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "Näytetään %d/%d tulos" msgstr[1] "Näytetään %d/%d tulosta" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d tulos" msgstr[1] "%d tulosta" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Luo soittolista" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "L_isää soittolistalle" @@ -3608,108 +3420,108 @@ msgid "Repeat point B set." msgstr "Kertauksen loppupiste B asetettu." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Esivahvistus" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Audaciouksen taajuuskorjain" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Äänitys" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Äänitys pois" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Siirry kohtaan %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Äänenvoimakkuus: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Tasapaino: %d%% vasen" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Tasapaino: keskellä" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Tasapaino: %d%% oikea" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Asetusvalikko" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Poista käytöstä 'Aina päällimmäisenä'" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Käytä 'Aina päällimmäisenä'" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Tiedoston tietolaatikko" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Tuplakoko" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Visualisoinnit" @@ -3733,10 +3545,6 @@ msgid "Open URL ..." msgstr "Avaa URL..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Toisto" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Soittolista" @@ -3751,7 +3559,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Palvelut" @@ -3768,13 +3576,13 @@ msgstr "Lopeta" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Kappaleen tiedot..." #: src/skins/menus.cc:105 src/skins-qt/menus.cc:96 msgid "Shuffle by Album" -msgstr "Sekoita albumin mukaan" +msgstr "Sekoita levyn mukaan" #: src/skins/menus.cc:106 src/skins-qt/menus.cc:97 msgid "No Playlist Advance" @@ -3788,7 +3596,7 @@ msgid "Clear A-B Repeat" msgstr "Pyyhi A-B-kertaus" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Siirry kappaleeseen..." @@ -3881,20 +3689,20 @@ msgstr "Lisää tiedostoja..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Nimen mukaan" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Tiedostonimen mukaan" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Tiedostopolun mukaan" @@ -3922,113 +3730,113 @@ msgid "Remove Selected" msgstr "Poista valitut" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Etsi ja valitse" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Käänteinen valinta" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Ei mitään" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Valitse kaikki" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Raidan mukaan" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Esittäjän mukaan" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" -msgstr "Albumin mukaan" +msgstr "Levyn mukaan" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" -msgstr "Albumin esittäjäjän mukaan" +msgstr "Levyn esittäjäjän mukaan" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Julkaisupäivän mukaan" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Tyylilajin mukaan" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Keston mukaan" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Mukautetun nimen mukaan" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Kommentin mukaan" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Sekoita lista" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Käännä lista" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Järjestä valitut" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Lajittele lista" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Avaa sisältävä kansio" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Leikkaa" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Kopioi" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Liitä" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Liitä loppuun" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Jonoon/Jonosta" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d / %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Audaciouksen soittolistan muokkain" @@ -4044,167 +3852,219 @@ msgid "Add Folder ..." msgstr "Lisää kansio..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Etsi kappaleita aktiivisesta soittolistasta" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Etsi kappaleita soittolistalta täyttämällä yhden tai useamman kentistä. " +"Kentät käyttävät säännöllisten lausekkeiden syntaksia, kirjainkoolla ei ole " +"merkitystä. Jos et tiedä kuinka säännöllisiä lausekkeita käytetään, kirjoita " +"kenttään suoraan se mitä haluat etsiä." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Nimi:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Levy:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Esittäjä:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Tiedostonimi:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Tyhjennä aiempi valinta ennen hakemista" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Lisää tai poista automaattisesti täsmäävät kappaleet jonosta" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Luo uusi soittolista täsmäävistä kappaleista" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Etsi" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Soitin:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Valitse pääikkunan kirjasin:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Soittolista:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Valitse soittolistan kirjasin:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Ulkoasu" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "Näytä aktiivinen otsikkopalkki, kun jokin ikkuna on kohdistettu" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Fontit" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Käytä bittikartta-kirjasimia (vain ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" -msgstr "Vieritä kappaleen nimeä" +msgstr "Vieritä nimeä" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" -msgstr "Vieritä kappaleen nimeä kumpaankin suuntaan" +msgstr "Vieritä nimeä kumpaankin suuntaan" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analyzer" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" -msgstr "Scope" +msgstr "Soveltamisala" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Äänipainemittari / VU-mittari" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Pois" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normaali" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Tuli" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Pystysuorat viivat" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Viivat" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Palkit" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Hitain" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Hidas" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Keskinkertainen" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Nopea" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Nopein" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Pisteet" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Viiva" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Kiinteä" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Jää" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Tasainen" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Väritys:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Tyyli:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Pudotus:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Huippujen pudotus:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Soveltamisala:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Äänijäljen väritys:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "VU-mittarin tyyli:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Tyyppi" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Visualisoinnin tyyppi:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analysaattori" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Näytä piikit" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Visualisaatio" @@ -4216,59 +4076,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Pakkaamaton Winamp 2.x skini" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Etsi kappaleita aktiivisesta soittolistasta" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Etsi" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Etsi kappaleita soittolistalta täyttämällä yhden tai useamman kentistä. " -"Kentät käyttävät säännöllisten lausekkeiden syntaksia, kirjainkoolla ei ole " -"merkitystä. Jos et tiedä kuinka säännöllisiä lausekkeita käytetään, kirjoita " -"kenttään suoraan se mitä haluat etsiä." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Nimi:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Albumi:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Esittäjä:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Tiedostonimi:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Tyhjennä aiempi valinta ennen hakemista" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Lisää tai poista automaattisesti täsmäävät kappaleet jonosta" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Luo uusi soittolista täsmäävistä kappaleista" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" -msgstr "Sndfile-liitännäinen" +msgstr "Sndfile Plugin" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4339,7 +4151,7 @@ #: src/songchange/song_change.cc:30 msgid "Song Change" -msgstr "Kappaleen vaihtuminen" +msgstr "Kappaleen vaihto" #: src/songchange/song_change.cc:245 msgid "Commands" @@ -4347,11 +4159,11 @@ #: src/songchange/song_change.cc:247 msgid "Command to run when starting a new song:" -msgstr "Kappaleen alussa suoritettava komento:" +msgstr "Komento, kun uusi kappale alkaa:" #: src/songchange/song_change.cc:250 msgid "Command to run at the end of a song:" -msgstr "Kappaleen päättyessä suoritettava komento:" +msgstr "Komento, kun kappale loppuu:" #: src/songchange/song_change.cc:253 msgid "Command to run at the end of the playlist:" @@ -4359,9 +4171,7 @@ #: src/songchange/song_change.cc:256 msgid "Command to run when song title changes (for network streams):" -msgstr "" -"Suoritettava komento, kun kappaleen nimi muuttuu (verkon suoratoistoja " -"varten):" +msgstr "Komento suoritetaan, kun kappaleen nimi vaihtuu (toisto verkkosta):" #: src/songchange/song_change.cc:259 msgid "" @@ -4385,16 +4195,16 @@ "%t: Playlist position\n" "%T: Title (unformatted)" msgstr "" -"%a: Artisti\n" -"%b: Albumi\n" +"%a: Esittäjä\n" +"%b: Levy\n" "%c: Kanavien määrä\n" "%f: Tiedoston nimi (täydellinen polku)\n" "%F: Taajuus (Hz)\n" "%l: Pituus (millisekunneissa)\n" "%n tai %s: Alustettu otsikko (katso soittolistan asetukset)\n" -"%p: Tällä hetkellä soi (1 or 0)\n" +"%p: Tällä hetkellä soi (1 tai 0)\n" "%r: Taajuus (bittiä per sekunti)\n" -"%t: Soittolistan paikka\n" +"%t: Soittolistan sijainti\n" "%T: Nimi (nimeämätön)" #: src/songchange/song_change.cc:273 @@ -4407,7 +4217,7 @@ #: src/song-info-qt/song-info.cc:30 msgid "Song Info" -msgstr "Kappaleen tiedot" +msgstr "Kappaletieto" #: src/soxr/sox-resampler.cc:44 msgid "SoX Resampler" @@ -4421,10 +4231,10 @@ "Based on Sample Rate Converter Plugin:\n" "Copyright 2010-2012 John Lindgren" msgstr "" -"SoX Resampler -liitännäinen Audacioukselle\n" +"SoX Resampler Plugin for Audacious\n" "Copyright 2013 Michał Lipski\n" "\n" -"Perustuu Sample Rate Converter -liitännäiseen:\n" +"Based on Sample Rate Converter Plugin:\n" "Copyright 2010-2012 John Lindgren" #: src/soxr/sox-resampler.cc:178 @@ -4557,12 +4367,13 @@ "This plugin provides a status icon, placed in\n" "the system tray area of the window manager." msgstr "" -"Tilaikoni-liitännäinen\n" +"Status Icon Plugin\n" "\n" "Copyright 2005-2007 Giacomo Lozito \n" "Copyright 2010 Michał Lipski \n" "\n" -"Tämä liitännäinen tarjoaa järjestelmäpalkkiin sijoitettavan ikonin." +"Tämä liitännäinen tarjoaa järjestelmäpalkkiin\n" +"sijoitettavan ikonin." #: src/stereo_plugin/stereo.cc:19 msgid "Extra Stereo" @@ -4574,7 +4385,7 @@ "\n" "By Johan Levin, 1999" msgstr "" -"Extra Stereo -liitännäinen\n" +"Extra Stereo Plugin\n" "\n" "By Johan Levin, 1999" @@ -4749,19 +4560,32 @@ "Käyttääksesi, lisää URL: tone://frequency1;frequency2;frequency3;...\n" "esim. tone://2000;2005 toistaaksesi 2000 Hz:n ja 2005 Hz:n soinnun" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Seuraavat viestit ovat piilotettu.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Työskennellään..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Tiedot" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "%s ei vaikuta olevan kelvollinen kansio" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Äänen poisto" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4914,14 +4738,38 @@ "\n" "Osan liitännäisen koodista kirjoittanut Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2SF-dekooderi" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Kosini" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Tarkka" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "XSF-asetukset" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Häivytysaika oletus:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Interpolointi moodi:" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" -msgstr "XML jaettavat soittolistat (XSPF)" +msgstr "XML jaettava soittolista (XSPF)" diff -Nru audacious-plugins-4.1/po/fr.po audacious-plugins-4.3.1/po/fr.po --- audacious-plugins-4.1/po/fr.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/fr.po 2023-04-29 20:17:32.000000000 +0000 @@ -4,28 +4,30 @@ # # Translators: # AO , 2012-2013 -# AO , 2019-2020 +# AO , 2019-2023 # AO , 2017-2018 # AO , 2016 # Oxayotl , 2013-2014,2020 # Oxayotl , 2011-2012 # Jean-Alexandre Anglès d'Auriac , 2011 # AO , 2015 +# Wallon Wallon, 2022 # AO , 2013-2015 msgid "" msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-31 01:48+0000\n" -"Last-Translator: AO \n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: AO , 2019-2023\n" "Language-Team: French (http://www.transifex.com/audacious/audacious/language/" "fr/)\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % " +"1000000 == 0 ? 1 : 2;\n" #: src/aac/aac.cc:19 msgid "AAC (Raw) Decoder" @@ -36,7 +38,7 @@ msgstr "AdPlug (Lecteur AdLib)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "séquencé" @@ -48,9 +50,11 @@ msgid "OPL Emulator:" msgstr "Émulateur OPL :" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Fréquence d’échantillonnage" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Fréquence d’échantillonnage :" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -66,7 +70,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Divers" @@ -74,256 +78,6 @@ msgid "Repeat song in endless loop" msgstr "Répéter continuellement la pièce" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Alarme" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Définir l’alarme…" - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Un greffon pour lancer la lecture à un moment précis.\n" -"\n" -"Développé à l’origine par Adam Feakin et Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Heure\n" -" Alarme à : \n" -" Heure de l’alarme.\n" -"\n" -" Silencieux après : \n" -" Arrêt de l’alarme après cette durée.\n" -" (si la fenêtre de dialogue de réveil n’est pas fermée)\n" -"\n" -"\n" -"Jours\n" -" Jours :\n" -" Choisir les jours d’activité de l’alarme.\n" -"\n" -" Heure :\n" -" Choisir l’heure quotidienne de l’alarme ou choisir\n" -" le bouton d’activation pour utiliser l’heure par défaut.\n" -"\n" -"\n" -"Volume\n" -" Fondu :\n" -" Augmenter progressivement le volume pour atteindre \n" -" le niveau choisi au bout de cette durée.\n" -"\n" -" Commencer à :\n" -" Commencer le fondu à partir de ce volume.\n" -"\n" -" Finir à :\n" -" Volume final du fondu. Si la durée du fondu est de 0,\n" -" régler alors le volume à ce niveau et commencer\n" -" la lecture.\n" -"\n" -"\n" -"Options :\n" -" Commande supplémentaire :\n" -" Exécuter cette commande à l’heure de l’alarme.\n" -"\n" -" Liste de lecture :\n" -" Charger cette liste de lecture. La liste actuelle\n" -" sera utilisée si aucune liste n’est précisée.\n" -" L’URL d’un flux MP3/OGG peut aussi être saisie ici.\n" -"\n" -"Pense-bête :\n" -" Afficher un pense-bête durant l’alarme. Le saisir dans\n" -" le champ et cocher la case pour qu’il soit affiché." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Il est l’heure…" - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Votre pense-bête pour aujourd’hui est…" - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Pense-bête" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Lundi" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Mardi" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Mercredi" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Jeudi" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Vendredi" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Samedi" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Dimanche" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Heure" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Alarme à (par défaut) :" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Silencieux après :" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "heures" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minutes" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Choisir les jours où l’alarme se déclenche" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Jour" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Par défaut" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Jours" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Fondu" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "secondes" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Volume" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Commencer à" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Finir à" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Actuel" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Commande supplémentaire" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "activer" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Liste de lecture (facultative)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Choisir une liste de lecture" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Options" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Que signifient ces options ?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Aide" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Illustration" @@ -473,87 +227,83 @@ msgid "Synthesizer" msgstr "Synthétiseur" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Fréquence d’échantillonnage :" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - choix du fichier SoundFont" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Annuler" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Ouvrir" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Nom de fichier" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Taille (octets)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Nom :" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " Renseignements MIDI " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Format :" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Durée (ms) :" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Nombre de plages :" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "variable" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM :" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg) :" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Division du temps :" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " Commentaires et paroles MIDI " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* aucun commentaire proposé dans ce fichier MIDI *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* aucune parole proposée dans ce fichier MIDI" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Fermer" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (UTF-8 invalide)" @@ -609,7 +359,7 @@ msgid "Concave Rectangle" msgstr "Rectangle concave" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Aucun" @@ -649,94 +399,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Déclenche l’affichage à l’écran quand la lecture est reprise." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Position" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Décalage horizontal X :" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Décalage vertical Y :" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Largeur maximale d’affichage à l’écran :" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Options pour moniteurs multiples" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Affichage à l’écran avec :" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "tous les moniteurs" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "le moniteur %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Durée (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Affichage :" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Fondu d’entrée :" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Fondu de sortie :" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Polices" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Police %i :" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Ombre" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Style du rendu" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Couleurs" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Couleur %i :" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Activer le déclencheur" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Événement" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Gestionnaire composite détecté" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -747,56 +497,56 @@ "veuillez activer un gestionnaire composite, sinon l’affichage à l’écran ne " "fonctionnera pas correctement." -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "La fausse transparence ne nécessite pas de gestionnaire composite." -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Transparence" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Fausse transparence" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Véritable transparence (nécessite l’extension composite de X)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "L’extension composite n’est pas chargée" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Affichage à l’écran d’Audacious" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Arrangement" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animation" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Texte" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Décoration" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Déclenchement" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Divers" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Test" @@ -812,11 +562,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Listes de lecture au format Audacious (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Profondeur du flux :" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Ratio de sous-échantillonnage :" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Couleur" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Oscilloscope flou" @@ -828,6 +594,10 @@ msgid "Presets:" msgstr "Préréglages :" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Par défaut" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Niveau d’entrée :" @@ -840,7 +610,7 @@ msgid "Cut frequency:" msgstr "Fréquence de coupure :" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Analyseur de spectre" @@ -937,52 +707,52 @@ msgid "Audio CD" msgstr "CD audio" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Échec d’ouverture du lecteur de CD %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Aucun lecteur de CD audio n’a été trouvé." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Le lecteur est vide." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Le type de disque n’est pas pris en charge." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "N’a pu finir d’initialiser le lecteur CD ouvert." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Échec de récupération du premier ou du dernier numéro de plage." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "" "Impossible de lire le numéro de secteur logique de début ou de fin pour la " "plage %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Échec de création de la connexion CDDB." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Échec d’interrogation du serveur CDDB" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Échec d’interrogation du serveur CDDB : %s ." -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Échec de lecture des renseignements de CDDB : %s" @@ -1056,6 +826,13 @@ msgid "Default song length:" msgstr "Durée par défaut de la pièce :" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "secondes" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Rééchantillonnage" @@ -1084,7 +861,7 @@ msgid "CoreAudio output" msgstr "Sortie CoreAudio" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1104,11 +881,11 @@ "Fondé sur le greffon de sortie SDL pour Audacious\n" "Tous droits réservés © 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Utiliser le mode exclusif" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" "Utiliser la reproduction du son au bit près (adapter la fréquence " @@ -1182,22 +959,22 @@ #: src/delete-files/delete-files.cc:125 #, c-format msgid "Do you want to move %s to the trash?" -msgstr "Souhaitez-vous déplacer %s vers la corbeille ?" +msgstr "Souhaitez-vous déplacer %s vers la corbeille ?" #: src/delete-files/delete-files.cc:126 #, c-format msgid "Do you want to permanently delete %s?" -msgstr "Souhaitez-vous supprimer %s définitivement ?" +msgstr "Souhaitez-vous supprimer %s définitivement ?" #: src/delete-files/delete-files.cc:133 #, c-format msgid "Do you want to move %d files to the trash?" -msgstr "Souhaitez-vous déplacer %d fichiers vers la corbeille ?" +msgstr "Souhaitez-vous déplacer %d fichiers vers la corbeille ?" #: src/delete-files/delete-files.cc:134 #, c-format msgid "Do you want to permanently delete %d files?" -msgstr "Souhaitez-vous supprimer %d fichiers définitivement ?" +msgstr "Souhaitez-vous supprimer %d fichiers définitivement ?" #: src/delete-files/delete-files.cc:146 msgid "Move to trash" @@ -1207,20 +984,20 @@ msgid "Delete" msgstr "Supprimer" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Annuler" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Supprimer les fichiers sélectionnés" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Méthode de suppression" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Déplacer vers la corbeille au lieu de supprimer immédiatement" @@ -1247,7 +1024,7 @@ msgstr "Retard :" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1263,11 +1040,11 @@ msgid "Echo" msgstr "Écho" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Greffon FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1390,89 +1167,89 @@ msgid "32000 Hz" msgstr "32 000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44 100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48 000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "8 kbit/s" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "16 kbit/s" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "32 kbit/s" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "40 kbit/s" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "48 kbit/s" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "56 kbit/s" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "64 kbit/s" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "80 kbit/s" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "96 kbit/s" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "112 kbit/s" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "128 kbit/s" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "160 kbit/s" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "192 kbit/s" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "224 kbit/s" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "256 kbit/s" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "320 kbit/s" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Stéréo combinée" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stéréo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1584,7 +1361,7 @@ msgid "Quality (0-1):" msgstr "Qualité (0 à 1) :" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Général" @@ -1593,11 +1370,11 @@ msgid "FLAC Decoder" msgstr "Décodeur FLAC" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "Sans perte" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1629,7 +1406,7 @@ msgid "Invalid open mode" msgstr "Mode d’ouverture invalide" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1649,116 +1426,134 @@ "\n" "Licence : GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "Analyseur de spectre utilisant OpenGL" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "Numéro de l’entrée" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "Numéro d’entrée" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Titre" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Artiste" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Année" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Album" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Artiste de l’album" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Numéro de plage" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Genre" -#: src/gtkui/columns.cc:43 -msgid "Queue position" +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" msgstr "Position dans la file" -#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Durée" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "Chemin du fichier" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Titre personnalisé" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Nom de fichier" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Titre personnalisé" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Débit binaire" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Commentaire" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "Éditeur" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "Numéro de catalogue" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Colonnes proposées :" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Colonnes affichées" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Outil de recherche" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Intégrer à gauche" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Intégrer à droite" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Intègrer en haut" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Intègrer en bas" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Séparer" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Désactiver" @@ -1798,8 +1593,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Lire" @@ -1976,8 +1771,8 @@ msgid "Remove _Unavailable Files" msgstr "Supprimer les fichiers _manquants" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "N_ouvelle" @@ -1987,7 +1782,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "Enle_ver" @@ -2041,7 +1836,7 @@ #: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 msgid "Show Info Bar _Album Art" -msgstr "Afficher la barre de renseignements _Illustration" +msgstr "Afficher l’_illustration de la barre de renseignements " #: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 msgid "Show Info Bar Vis_ualization" @@ -2118,7 +1913,7 @@ msgstr "Sélectionner _tout" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Renommer…" @@ -2146,197 +1941,203 @@ msgid "Show column headers" msgstr "Afficher les en-têtes de colonnes" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "Utiliser des icônes symboliques dans la barre d’outils" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Se déplacer vers la pièce lue" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Interface GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s — Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Mise en mémoire tampon…" -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Lire" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Mettre en pause" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Chercher dans l’audiothèque" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Ouvrir des fichiers" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Ajouter des fichiers" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Précédent" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Arrêter" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Suivant" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Enregistrer le flux" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Répéter" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Lecture aléatoire" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "Menu" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d canal" msgstr[1] "%d canaux" +msgstr[2] "%d canaux" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "%d kbit/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Mode simple." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Mode liste de lecture." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Arrêt après la pièce." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Plage précédente" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Mettre en pause/Reprendre" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Plage suivante" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "En avant" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "En arrière" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Muet" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Augmenter le volume" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Réduire le volume" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Sauter au fichier" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Afficher/cacher les fenêtres du lecteur" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Activer l’affichage à l’écran" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Activer/désactiver la répétition" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Activer/désactiver la lecture aléatoire" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Activer/désactiver l’arrêt après la pièce en cours" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Monter les fenêtres du lecteur au premier plan" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(aucun)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2345,13 +2146,13 @@ "Il n’est pas recommandé d’associer les boutons principaux de la souris sans " "modificateur.\n" "\n" -"Souhaitez-vous poursuivre ?" +"Souhaitez-vous poursuivre ?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Association des boutons de la souris" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2360,23 +2161,23 @@ "Vous pouvez aussi créer des associations avec les boutons de la souris.\n" " " -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Raccourcis-clavier :" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Action :" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Association de touches :" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Ajouter" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Raccourcis universels" @@ -2469,7 +2270,7 @@ #: src/jack/jack-ng.cc:245 msgid "Failed to connect to the JACK server; is it running?" -msgstr "Échec de connexion au serveur JACK ; est-il en cours d’exécution ?" +msgstr "Échec de connexion au serveur JACK ; est-il en cours d’exécution ?" #: src/jack/jack-ng.cc:321 #, c-format @@ -2481,16 +2282,16 @@ "Audacious lit à %d Hz. Veuillez utiliser l’effet Convertisseur de fréquence " "d’échantillonnage pour corriger ce décalage." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "Réglages %s" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Chemins des modules :" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2501,25 +2302,25 @@ "Après avoir ajouté de nouveaux chemins, appuyer sur Entrée pour rechercher " "de nouveaux greffons." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Greffons proposés :" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Activer" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Greffons activés :" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Paramètres" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2576,103 +2377,107 @@ msgid "Wait before reconnecting:" msgstr "Attendre avant de se reconnecter :" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "Paroles" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Nulle part" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "Artiste est tronqué au début, Titre -- à la fin" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "Caractères sur lesquels tronquer :" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" "Caractères avec OR dans une expression rationnelle, entourés par des " "espaces" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "Caractères sur lesquels scinder :" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "Continuer à les tronquer sur ces caractères" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "Général" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "Scinder le titre en artiste et titre sur ces caractères" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "Sources Internet" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "Obtenir les paroles sur :" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "Sources" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "Utiliser des paroles intégrées (de la balise Lyrics)" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "Obtenir les paroles sur Internet :" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "Enregistrer dans le cache local les paroles obtenues" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Mémoire locale" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "Charger les fichiers de parole (.lrc) de la mémoire locale" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Impossible de récupérer %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Impossible d’analyser %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Recherche de paroles…" -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Erreur" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "Les paroles sont introuvables." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "Titre ou artiste manquant" -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Enregistrer localement" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Actualiser" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "Listes de lecture M3U" @@ -2830,7 +2635,7 @@ msgstr "Ces paramètres prendront effet quand Audacious aura redémarré." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Arrêter après cette pièce" @@ -2839,41 +2644,17 @@ msgid "Moonstone" msgstr "Moonstone" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Réinitialiser aux valeurs par défaut" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Lecture en cours" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Numéro d’entrée" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Artiste de l’album" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Position dans la file" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Chemin du fichier" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Nom de fichier" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Titre personnalisé" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Entrées" @@ -2889,7 +2670,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Utiliser un calcul précis de durée (lent)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Son ambiophonique" @@ -2990,7 +2771,7 @@ msgid "OpenMPT (Module Player)" msgstr "OpenMPT (Lecteur de modules)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -3000,19 +2781,19 @@ "\n" "Développé par : Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Séparation stéréo :" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr " %" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "Interpolation :" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Linéaire" @@ -3024,11 +2805,23 @@ msgid "Windowed sinc" msgstr "Sinus cardinal fenêtrée" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "Décodeur Opus" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" +"Greffon de décodage Opus pour Audacious\n" +"Tous droits réservés © 2022 Thomas Lange" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "Sortie OSS4" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "Sortie OSS3" @@ -3071,18 +2864,40 @@ "Tony Vroon and John Lindgren, et bien entendu les auteurs du précédent " "greffon OSS." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "Sortie PipeWire" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" +"Greffon de sortie PipeWire pour Audacious\n" +"Tous droits réservés © 2022 Thomas Lange\n" +"\n" +"Fondé sur le greffon de sortie PipeWire pour Qmmp\n" +"Tous droits réservés © Ilya Kotov" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Lecture" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Gestionnaire de listes de lecture" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Supprimer" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "Ren_ommer" @@ -3098,7 +2913,7 @@ msgid "OpenPSF Configuration" msgstr "Configuration d’OpenPSF" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Ignorer la durée donnée par le fichier" @@ -3187,12 +3002,12 @@ "\n" "Licence : GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "" "Appuyez sur une combinaison de touches à l’intérieur d’un champ textuel." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3243,14 +3058,18 @@ msgid "Audio Settings ..." msgstr "Paramètres du son…" -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" -msgstr "Nf" +msgstr "No file" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "Np" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "C#" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Interface Qt" @@ -3472,30 +3291,31 @@ msgid "Library" msgstr "Audiothèque" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d pièce" msgstr[1] "%d pièces" +msgstr[2] "%d pièces" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "de ce genre" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "sur" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "par" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Nombre de résultats à afficher :" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Réanalyser l’audiothèque au démarrage" @@ -3503,7 +3323,7 @@ msgid "Monitor library for changes" msgstr "Surveiller les changements dans l’audiothèque" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3511,37 +3331,39 @@ "Pour importer votre audiothèque dans Audacious, choisissez un dossier et " "cliquez ensuite sur l’icône d’actualisation." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Veuillez patienter…" -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Choisir un dossier" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Chercher dans l’audiothèque" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "%d résultat affiché sur %d" msgstr[1] "%d résultats affichés sur %d" +msgstr[2] "%d résultats affichés sur %d" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d résultat" msgstr[1] "%d résultats" +msgstr[2] "%d résultats" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Créer une liste de lecture" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Ajouter à la liste de lecture" @@ -3645,108 +3467,108 @@ msgid "Repeat point B set." msgstr "Point de répétition B activé." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Préampli" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Égaliseur d’Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Enregistrement activé" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Enregistrement désactivé" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Se positionner à %d:%-2.2d/%d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Volume : %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Balance : %d%% gauche" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Balance : centre" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Balance : %d%% droite" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Menu des options" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Désactiver « Toujours au premier plan »" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Activer « Toujours au premier plan »" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Boîte de renseignements sur le fichier" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Taille double" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Visualisations" @@ -3770,10 +3592,6 @@ msgid "Open URL ..." msgstr "Ouvrir une URL…" -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Lecture" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Liste de lecture" @@ -3788,7 +3606,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Services" @@ -3805,7 +3623,7 @@ msgstr "Quitter" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Renseignements sur la pièce…" @@ -3825,7 +3643,7 @@ msgid "Clear A-B Repeat" msgstr "Supprimer la répétition A à B" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Sauter vers une plage…" @@ -3918,20 +3736,20 @@ msgstr "Ajouter des fichiers…" #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Par titre" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Par nom de fichier" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Par chemin de fichier" @@ -3959,113 +3777,113 @@ msgid "Remove Selected" msgstr "Supprimer la sélection" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Chercher et sélectionner" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Inverser la sélection" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Ne rien sélectionner" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Tout sélectionner" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Par numéro de plage" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Par artiste" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Par album" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Par artiste de l’album" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Par date de parution" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Par Genre" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Par durée" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Par titre personnalisé" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Par commentaire" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Mélange aléatoire de la liste" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Inverser la liste" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Trier la sélection" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Trier la liste" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Ouvrir le dossier conteneur" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Couper" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Copier" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Coller" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Copier à la fin" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Ajouter/retirer de la file d’attente" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d sur %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Éditeur de liste de lecture d’Audacious" @@ -4081,167 +3899,222 @@ msgid "Add Folder ..." msgstr "Ajouter un dossier…" -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Chercher des entrées dans la liste de lecture active" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Choisir des entrées de la liste de lecture en remplissant un oou plusieurs " +"champs. \n" +"La syntaxe utilisée est celle des expressions rationnelles et est sensible à " +"la casse. \n" +"Si vous ne savez pas comment fonctionnent les expressions rationnelles, vous " +"pouvez simplement indiquer une expression littérale de ce que vous cherchez." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Titre :" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Album :" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Artiste :" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Nom de fichier :" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Effacer la sélection précédente avant d’effectuer la recherche" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Mettre automatiquement dans la file d’attente les entrées trouvées" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Créer une nouvelle liste de lecture à partir des entrées trouvées" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Chercher" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Lecteur :" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Choisir la police de la fenêtre principale du lecteur :" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Liste de lecture :" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Choisir la police de la liste de lecture :" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Habillage" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" +"Afficher la barre de titre active quand une fenêtre est en premier plan" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Polices" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Utiliser des polices bitmap (seul ASCII est pris en charge)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Faire défiler le titre de la pièce" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Faire défiler le titre de la pièce dans les deux sens" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analyseur" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Oscilloscope" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Spectrogramme/vumètre" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Désactiver" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normal" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Feu" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Lignes verticales" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Lignes" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Barres" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "La plus lente" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Lente" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Moyenne" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Rapide" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "La plus rapide" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Points" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Lignes" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Plein" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Glace" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Lissé" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Coloration :" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Style :" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Retombée :" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Retombée des crêtes :" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Style oscilloscope :" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Coloration du spectrogramme :" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "Style vumètre :" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Type" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Type de visualisation :" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analyseur" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Afficher les crêtes" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Visualisation" @@ -4253,61 +4126,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Habillage Winamp 2.x non archivé" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Chercher des entrées dans la liste de lecture active" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Chercher" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Choisir des entrées de la liste de lecture en remplissant un oou plusieurs " -"champs. \n" -"La syntaxe utilisée est celle des expressions rationnelles et est sensible à " -"la casse. \n" -"Si vous ne savez pas comment fonctionnent les expressions rationnelles, vous " -"pouvez simplement indiquer une expression littérale de ce que vous cherchez." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Titre :" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Album :" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Artiste :" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Nom de fichier :" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Effacer la sélection précédente avant d’effectuer la recherche" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Mettre automatiquement dans la file d’attente les entrées trouvées" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Créer une nouvelle liste de lecture à partir des entrées trouvées" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Greffon Sndfile" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4787,24 +4610,37 @@ "Générateur de signal sinusoïdal par Håvard Kvålen \n" "Modifié par Daniel J. Peng \n" "\n" -"Pour l’utiliser, ajouter une URL : signal://fréquence1;fréquence2;fréquence3;" -"…\n" +"Pour l’utiliser, ajouter une URL : signal://fréquence1;fréquence2;" +"fréquence3;…\n" "Par exemple. tone://2000;2005 pour jouer une note à 2 000 Hz en même temps " "qu’une note à 2 005 Hz" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Les messages à venir ont été cachés.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Traitement en cours…" -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Renseignements" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "%s ne semble pas être un dossier valide." + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Suppression des voix" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4957,14 +4793,38 @@ "\n" "Une partie du code du greffon a été développé par Miles Egan" -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "Décodeur 2SF" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32 728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65 456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Cosinus" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Nette" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "Configuration de XFS" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Durée de fondu par défaut :" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Mode interpolation :" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "Listes de lecture XSPF" diff -Nru audacious-plugins-4.1/po/gl.po audacious-plugins-4.3.1/po/gl.po --- audacious-plugins-4.1/po/gl.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/gl.po 2023-04-29 20:17:32.000000000 +0000 @@ -3,7 +3,9 @@ # This file is distributed under the same license as the Audacious Plugins package. # # Translators: +# antiparvos, 2022 # antiparvos, 2014-2018,2020 +# David Rebolo Magariños , 2021 # Miguel Anxo Bouzada , 2012 # Miguel Anxo Bouzada , 2013 # Miguel Anxo Bouzada , 2012 @@ -12,9 +14,9 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: antiparvos, 2022\n" "Language-Team: Galician (http://www.transifex.com/audacious/audacious/" "language/gl/)\n" "Language: gl\n" @@ -32,7 +34,7 @@ msgstr "AdPlug (reprodutor AdLib)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "secuenciado" @@ -44,9 +46,11 @@ msgid "OPL Emulator:" msgstr "Emulador OPL:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Taxa da mostraxe" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Taxa da mostraxe:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -62,7 +66,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Varios" @@ -70,260 +74,6 @@ msgid "Repeat song in endless loop" msgstr "Repetir a canción en bucle" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Alarma" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Estabelecer a alarma ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Un engadido que se pode empregar para comezar a reprodución nun momento " -"determinado.\n" -"\n" -"Escrito orixinalmente por Adam Feakin e Stodden Daniel." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Hora\n" -" Alarma en: \n" -" O tempo para que se inicie a alarma.\n" -"\n" -" Silenciar após: \n" -" Deter a alarma transcorrido este tempo.\n" -" (se o diálogo do espertador non está pechado)\n" -"\n" -"\n" -"Días\n" -" Día:\n" -" Seleccione os días para activar a alarma.\n" -"\n" -" Hora:\n" -" Escolla a hora da alarma en cada día,\n" -" ou seleccione o botón de activación para usar\n" -" a hora predeterminada.\n" -"\n" -"\n" -"Volume\n" -" Atenuación: \n" -" Axusta o volume ao nivel escollido\n" -" para ese tempo.\n" -"\n" -" Comezar con: \n" -" Inicio do axuste deste volume\n" -"\n" -" Final: \n" -" O volume no que se deterá o incremento.\n" -" Se o tempo de atenuación é 0 porá o volume\n" -" a este nivel e iniciará a reprodución.\n" -"\n" -"\n" -"Opcións:\n" -" Orde adicional:\n" -" Executar esta orde na hora da alarma.\n" -"\n" -" Lista de reprodución: \n" -" Cargue esta lista de reprodución para reproducila.\n" -" Se non se indica unha lista, empregarase as cancións\n" -" da lista actual.\n" -" Tamén pode indicar o URL dun fluxo mp3/ogg.\n" -"\n" -" Recordatorio:\n" -" Amosar un aviso cando se activa a alarma,\n" -" escriba o recordatorio na caixa e active o\n" -" botón para que sexa amosado." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Esta é a súa chamada de atención." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "O seu recordatorio para hoxe é..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Lembranza" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "luns" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "martes" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "mércores" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "xoves" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "venres" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "sábado" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "domingo" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Hora" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Alarma as (predeterminado):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Silencio despois de:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "horas" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minutos" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Seleccione os días para que salte a alarma" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Día" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Predeterminado" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Dias" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Esvaecemento" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "segundos" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Volume" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Inicial" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Final" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Actual" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Orde adicional" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "activar" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Lista de reprodución (opcional)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Escolla a lista de reprodución" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Opcións" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Que significan estas opcións?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Axuda" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Portada" @@ -472,87 +222,83 @@ msgid "Synthesizer" msgstr "Sintetizador" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Taxa da mostraxe:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "Engadido AMIDI - seleccione un ficheiro SoundFont" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Cancelar" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Abrir" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Nome de ficheiro" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Tamaño (bytes)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Nome:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " Información MIDI " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Formato:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Duración (mseg.):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Num. de pistas" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "variábel" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Div. tempo:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " Comentarios e letras MIDI " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* non hai comentarios dispoñíbeis neste ficheiro MIDI *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* non hai letras dispoñíbeis neste ficheiro MIDI *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Pechar" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (UTF-8 incorrecto)" @@ -608,7 +354,7 @@ msgid "Concave Rectangle" msgstr "Rectángulo cóncavo" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Ningún" @@ -649,94 +395,94 @@ "Activa as notificacións OSD cando a reinicia a reprodución despois dunha " "pausa" -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Colocación" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Desprazamento X relativo:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Desprazamento Y relativo:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Largura máx. do OSD" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Opcións de múltiple monitor" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Amosar as notificacións OSD utilizando:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "todos os monitores" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "monitor %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Temporización (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Mostrar:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Esvaecemento de entrada:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Esvaecemento de saída:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Tipos de letra" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Tipo de letra %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Sombra" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Estilo de debuxado" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Cores" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Cor %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Activar disparador" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Actividade" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Detectouse un administrador de composición" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -746,57 +492,57 @@ "a non ser que saiba que ten un en execución, active un administrador de " "composición ou as notificacións OSD non funcionarán correctamente" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "" "Para a falsa transparencia non fai falta un administrador de compòsición" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Transparencia" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Transparencia falsa" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Transparencia real (require composición 3D)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "A extensión de composición non está cargada" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Notificacións OSD de Audacious" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Posición" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animación" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Texto" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Decoración" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Disparador" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Miscelánea" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Proba" @@ -812,11 +558,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Listas de reprodución do Audacious (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Profundidade de bit:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Cor" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Alcance do desenfoque" @@ -828,6 +590,10 @@ msgid "Presets:" msgstr "Predefinicións:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Predeterminado" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Nivel de alimentación:" @@ -840,7 +606,7 @@ msgid "Cut frequency:" msgstr "Cortar frecuencia:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Analizador de espectro" @@ -936,50 +702,50 @@ msgid "Audio CD" msgstr "CD de son" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Non foi posíbel abrir o dispositivo do CD %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Non foi posíbel atopar unha unidade de CD de son." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "A unidade está baleira." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Tipo de disco non admitido." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Non foi posíbel rematar a inicialización da unidade de CD aberta." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Non foi posibel obter o primeiro/último número de la pista." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Non é posíbel ler o inicio/fin LSN para a pista %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Produciuse un fallo creando a conexión coa CDDB." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Produciuse un erro ao consultar o servidor CDDB" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Produciuse un erro ao consultar o servidor CDDB: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Produciuse un fallo lendo a información da CDDB: %s" @@ -1052,6 +818,13 @@ msgid "Default song length:" msgstr "Duración predeterminada da canción:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "segundos" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Mostraxe múltipla" @@ -1080,7 +853,7 @@ msgid "CoreAudio output" msgstr "Saída CoreAudio" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1100,11 +873,11 @@ "Baseado no engadido de saída SDL para Audacious\n" "Copyright 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Usar o modo exclusivo" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "Use o son bit perfect (adapte a taxa de mostraxe do dispositivo)" @@ -1201,20 +974,20 @@ msgid "Delete" msgstr "Eliminar" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Cancelar" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Eliminar os ficheiros seleccionados" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Eliminar o método" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Enviar ao lixo no canto de eliminar inmediatamente" @@ -1241,7 +1014,7 @@ msgstr "Atraso:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1257,11 +1030,11 @@ msgid "Echo" msgstr "Eco" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Engadido FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1385,89 +1158,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "8 kbit/s" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "16 kbit/s" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "32 kbit/s" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "40 kbit/s" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "48 kbit/s" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "56 kbit/s" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "64 kbit/s" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "80 kbit/s" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "96 kbit/s" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "112 kbit/s" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "128 kbit/s" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "160 kbit/s" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "192 kbit/s" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "224 kbit/s" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "256 kbit/s" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "320 kbit/s" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Estéreo solapado" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Estéreo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1579,7 +1352,7 @@ msgid "Quality (0-1):" msgstr "Calidade (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Xeral" @@ -1588,11 +1361,11 @@ msgid "FLAC Decoder" msgstr "Descodificador FLAC" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "sen perdas" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1624,7 +1397,7 @@ msgid "Invalid open mode" msgstr "Modo incorrecto de apertura" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1644,116 +1417,134 @@ "\n" "Liceza: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "Analizador de espectro OpenGL" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "Número de entrada" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Título" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Interprete" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Ano" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Álbum" -#: src/gtkui/columns.cc:40 -msgid "Album artist" -msgstr "Interprete do álbum" - #: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr "Álbum Artista" + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Pista" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Xénero" -#: src/gtkui/columns.cc:43 -msgid "Queue position" +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" msgstr "Posición na cola" -#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Duración" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "Ruta ao ficheiro" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Título personalizado" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Nome do ficheiro" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Título personalizado" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Taxa de bits" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Comentario" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Columnas dispoñíbeis" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Columnas amosadas" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Ferramenta de buscas" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Ancorar á esquerda" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Ancorar á dereita" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Ancorar enriba" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Ancorar abaixo" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Desancorar" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Desactivar" @@ -1793,8 +1584,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Reproducir" @@ -1971,8 +1762,8 @@ msgid "Remove _Unavailable Files" msgstr "Eliminar os ficheiros _non dispoñíbeis" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Novo" @@ -1982,7 +1773,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "Re_tirar" @@ -2036,7 +1827,7 @@ #: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 msgid "Show Info Bar _Album Art" -msgstr "" +msgstr "Mostrar barra de información _Arte do álbum" #: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 msgid "Show Info Bar Vis_ualization" @@ -2113,7 +1904,7 @@ msgstr "Seleccionar _todo" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "Cambiar o _nome..." @@ -2141,197 +1932,202 @@ msgid "Show column headers" msgstr "Amosar as cabeceiras de columna" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Avanzar ao cambiar de canción" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Interface GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Almacenando no búfer..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Reproducir" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Pausa" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Buscar unha fonoteca" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Abrir ficheiros" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Engadir ficheiros" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Anterior" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Parar" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Seguinte" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Gravar fluxo" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Repetir" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Ao chou" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" -msgstr "" +msgstr "Menú" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "estéreo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d canle" msgstr[1] "%d canles" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "%d kbit/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Modo único." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Modo da lista de reprodución" -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Parar despois da canción." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Pista anterior" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Pausar/Reiniciar" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Pista seguinte" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "Avanzar" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "Retroceder" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Silenciar" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Subir o volume" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Baixar o volume" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Ir ao ficheiro" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Cambiar a(s) xanela(s) de reprodución" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Mostrar as notificacións OSD" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Cambiar a repetición" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Cambiar a reprodución ao chou" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Cambiar a parada despois da actual" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Elevar as xanelas do reprodutor" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(ningún)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2341,11 +2137,11 @@ "\n" "Quere continuar?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Asociar botóns do rato" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2353,23 +2149,23 @@ "Prema unha combinación de teclas dentro do campo de texto.\n" "Tamén pode asociar botóns do rato." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Teclas rápidas:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Acción" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Teclas asociadas:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Engadir" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Teclas rápidas globais" @@ -2422,7 +2218,7 @@ #: src/jack/jack-ng.cc:139 msgid "Upmix to" -msgstr "" +msgstr "Mesturar para" #: src/jack/jack-ng.cc:141 msgid "ports if input has fewer channels" @@ -2468,16 +2264,16 @@ "está a reproducir cunha taxa de %d Hz. Use o efecto «Convertedor de taxa de " "mostraxe» para corrixir esta discordancia." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "Configuración de %s" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Rutas dos módulos:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2487,25 +2283,25 @@ "Estas rutas empréganse ademais de LADSPA_PATH.\n" "Tras engadir as novas rutas, prema Intro para buscar novos engadidos." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Engadidos dispoñíbeis:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Activar" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Engadidos activados:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Configuración" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2562,101 +2358,107 @@ msgid "Wait before reconnecting:" msgstr "Agardar antes de volver conectar:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "Letras" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Ningún sitio" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" -msgstr "" +msgstr "O artista está truncado ao principio, o título -- á fin" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" -msgstr "" +msgstr "Caracteres para truncar:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" +"Os caracteres son ORed en RegExp, rodeados de espazos en branco" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" -msgstr "" +msgstr "Caracteres para dividir:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" -msgstr "" +msgstr "Trunque aínda máis os dos caracteres" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" -msgstr "" +msgstr "Xeral" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" +msgstr "Divide o título en artista e o título en caracteres" + +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "Fontes de internet" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "Obter letras de:" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "Gardar na caché local as letras obtidas" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Almacenamento local" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "Cargar os ficheiros de letras (.lrc) desde o almacenamento local" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Non é posibel obter %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Non é posíbel analizar %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Buscando letras ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Erro" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "Non foi posíbel atopar a letra." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "Falta o título e/ou o artista." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Gardar localmente" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Actualizar" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "Listas de reprodución M3U" @@ -2814,50 +2616,26 @@ msgstr "Estes axustes terán efecto após que Audacious sexa reiniciado." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Deter despois desta canción" #: src/moonstone/moonstone.cc:39 msgid "Moonstone" -msgstr "" +msgstr "Pedra da lúa" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Restabelecer predeterminados" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Estase a reproducir" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Número de entrada" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Álbum Artista" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Posición na cola" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Ruta ao ficheiro" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Nome do ficheiro" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Título personalizado" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Entradas" @@ -2873,7 +2651,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Utilizar o cálculo de duración exacta (lento)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Son envolvente" @@ -2963,7 +2741,7 @@ #: src/notify/notify.cc:110 msgid "Custom notification duration:" -msgstr "" +msgstr "Personalizar a duración da notificación:" #: src/notify/osd.cc:74 msgid "Show" @@ -2973,7 +2751,7 @@ msgid "OpenMPT (Module Player)" msgstr "OpenMPT (reprodutor de módulos)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -2983,35 +2761,45 @@ "\n" "Escrito por: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Separación estéreo:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "Interpolación" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Lineal" #: src/openmpt/mptwrap.h:52 msgid "Cubic" -msgstr "" +msgstr "Cúbico" #: src/openmpt/mptwrap.h:53 msgid "Windowed sinc" +msgstr "Sincronización de xanelas" + +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" msgstr "" -#: src/oss4/oss.h:75 +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "Saída OSS4" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "Saída OSS3" @@ -3053,18 +2841,35 @@ "Gustaríame darlle as grazas á xente de #audacious, sobre todo a Tony Vroon " "e a John Lindgren e por suposto aos autores do anterior engadido de OSS." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Reprodución" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Xestor da lista de reprodución:" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Retirar" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "Re_nomear" @@ -3080,7 +2885,7 @@ msgid "OpenPSF Configuration" msgstr "Axustes do OpenPSF" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Ignorar a duración do ficheiro" @@ -3161,12 +2966,21 @@ "\n" "License: GPLv2+" msgstr "" +"Analizador de espectro OpenGL para Audacious\n" +"Copyright 2013 Christophe Budé, John Lindgren e Carlo Bramini\n" +"Copyright 2014, 2020 Ariadne Conill\n" +"\n" +"Baseado no complemento XMMS:\n" +"Copyright 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson e " +"4Front Technologies\n" +"\n" +"Licenza: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." -msgstr "" +msgstr "Prema unha combinación de teclas dentro dun campo de texto." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3181,6 +2995,19 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Complemento global de teclas rápidas\n" +"Controla o reprodutor con combinacións de teclas globais ou teclas " +"multimedia.\n" +"\n" +"Copyright (C) 2020 i.Dark_Templar \n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Os colaboradores inclúen:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +"Bryn Davies ,\n" +"Jonathan A. Davis ,\n" +"Jeremy Tan " #: src/qtui/menus.cc:109 msgid "_Open Folder ..." @@ -3202,12 +3029,16 @@ msgid "Audio Settings ..." msgstr "Axustes de son ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" -msgstr "" +msgstr "Q#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" +msgstr "T#" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" msgstr "" #: src/qtui/qtui.cc:40 @@ -3236,7 +3067,7 @@ #: src/qtui/settings.cc:78 msgid "Use bold font for column headers" -msgstr "" +msgstr "Use o tipo de letra en grosa para os encabezados das columnas" #: src/resample/resample.cc:43 msgid "Sample Rate Converter" @@ -3426,30 +3257,30 @@ msgid "Library" msgstr "Biblioteca" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d canción" msgstr[1] "%d cancións" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "deste xénero" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "en" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "por" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Número de resultados a mostrar:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Revisar a biblioteca ao iniciar" @@ -3457,7 +3288,7 @@ msgid "Monitor library for changes" msgstr "Vixiar se hai cambios na biblioteca" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3465,37 +3296,37 @@ "Para importar a súa fonoteca en Audacious, escolla un cartafol e prema na " "icona «Actualizar»." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Agarde..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Escolla un cartafol" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Buscar unha fonoteca" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "%d de %d resultado mostrado" msgstr[1] "%d de %d resultados mostrados" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d resultado" msgstr[1] "%d resultados" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Crear unha lista de reprodución" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Engadir á lista de reprodución" @@ -3599,108 +3430,108 @@ msgid "Repeat point B set." msgstr "Repetir o punto de axuste B." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Preamplificador" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Ecualizador do Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Iniciar gravación" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Parar gravación" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Ir a %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Volume: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Balance: %d%% esquerda" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Balance: centro" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Balance: %d%% dereita" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Menú de opcións" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Desactivar «Sempre enriba»" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Activar «Sempre enriba»" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Caixa de información do ficheiro" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Tamaño dobre" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Vistas" @@ -3724,10 +3555,6 @@ msgid "Open URL ..." msgstr "Abrir un URL ..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Reprodución" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Lista de reprodución" @@ -3742,7 +3569,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Servizos" @@ -3759,7 +3586,7 @@ msgstr "Saír" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Información da canción ..." @@ -3779,7 +3606,7 @@ msgid "Clear A-B Repeat" msgstr "Limpar a repetición A-B" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Saltar á canción ..." @@ -3872,20 +3699,20 @@ msgstr "Engadir ficheiros ..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Polo título" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Polo nome de ficheiro" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Pola ruta do ficheiro" @@ -3913,113 +3740,113 @@ msgid "Remove Selected" msgstr "Retirar os seleccionados" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Buscar e seleccionar" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Inverter a selección" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Non seleccionar nada" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Seleccionar todo" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Polo número de pista" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Polo interprete" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Polo álbum" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Polo interprete do álbum" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Pola data de publicación" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Por xénero" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Por duración" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Por título personalizado" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Por comentario" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Lista ao chou" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Lista inversa" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Ordenar os seleccionados" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Ordenar a lista" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Abrir o cartafol contedor" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Cortar" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Copiar" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Pegar" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Pegar ao final" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Poñer na cola/Quitar da cola" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d de %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Editor de listas de reprodución do Audacious" @@ -4035,167 +3862,219 @@ msgid "Add Folder ..." msgstr "_Engadir un cartafol ..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Buscar entradas na lista de reprodución activa" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Seleccione entradas na lista de reprodución indicando un ou máis campos. Os " +"campos empregan sintaxe de expresións regulares, sen distinguir maiúsculas " +"de minúsculas. Se non sabe como funcionan as expresións regulares, escriba " +"só a parte del literal que quere buscar." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Título: " + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Álbum: " + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Interprete: " + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Nome de ficheiro:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Limpar a selección previa antes de buscar" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Cambiar automaticamente a cola para as entradas coincidentes" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Crear unha nova lista de reprodución coas entradas coincidentes" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Busca" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Reprodutor:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Seleccione o tipo de letra da xanela principal do reprodutor:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Lista de reprodución:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Seleccione o tipo de letra da lista de reprodución:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Tema" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "Mostrar a barra de título activa ao enfocar unha xanela" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Tipos de letra" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Empregar tipos de letra de mapa de bits (só admiten ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Desprazar o título da canción" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Desprazar o título da canción en ambas direccións" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analizador" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Campo" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Impresión vocal / Vúmetro" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Apagado" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normal" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Lume" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Liñas verticais" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Liñas" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Barras" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Máis lento" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Lento" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Medio" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Rápido" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Máis rápido" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Puntos" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Liña" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Sólido" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Xeo" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Suave" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Colorear:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Estilo:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Caída:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Caída dos picos:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Estilo de campo:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Coloreado da impresión vocal" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "Estilo do vúmetro:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Tipo" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Tipo de visualización:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analizador" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Amosar os picos" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Visualización" @@ -4207,59 +4086,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Tema para Winamp 2.x sen arquivar" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Buscar entradas na lista de reprodución activa" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Busca" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Seleccione entradas na lista de reprodución indicando un ou máis campos. Os " -"campos empregan sintaxe de expresións regulares, sen distinguir maiúsculas " -"de minúsculas. Se non sabe como funcionan as expresións regulares, escriba " -"só a parte del literal que quere buscar." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Título: " - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Álbum: " - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Interprete: " - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Nome de ficheiro:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Limpar a selección previa antes de buscar" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Cambiar automaticamente a cola para as entradas coincidentes" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Crear unha nova lista de reprodución coas entradas coincidentes" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Engadido Sndfile" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4743,19 +4574,32 @@ "frecuencia3;...\n" "p.ex. tone://2000;2005 para reproducir un ton de 2000 Hz e un ton de 2005 Hz" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(O resto de mensaxes foron agochados.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Traballando..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Información" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "%s non parece un cartafol correcto." + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Supresión de voz" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4909,14 +4753,38 @@ "\n" "Unah parte do código do engadido foi feita por Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "Descodificador 2SF" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Coseno " + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "Configuración XSF" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Tempo predet. do escaecemento:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Modo interpolación:" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "Lista de reprodución XML compartíbel (XSPF)" diff -Nru audacious-plugins-4.1/po/hu.po audacious-plugins-4.3.1/po/hu.po --- audacious-plugins-4.1/po/hu.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/hu.po 2023-04-29 20:17:32.000000000 +0000 @@ -6,19 +6,21 @@ # Agócs Dániel , 2015 # Balázs Glatz , 2015 # Balázs Meskó , 2018 -# blackc0de , 2018 +# Balázs Meskó , 2022 +# ec1a2cece4ae9ae9a5aaf1b635c7d633_05cc932 <4d0fe008c62e3981ff6f0c2cb58f2e06_113291>, 2018 # Ferenc Szabo , 2015 # Gábor Sávolyi, 2016 # Gergely Békési , 2014 +# Nyul Csoki , 2021 # Péter Polonkai , 2010 # Péter Polonkai , 2011-2012,2014-2016 msgid "" msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Balázs Meskó , 2022\n" "Language-Team: Hungarian (http://www.transifex.com/audacious/audacious/" "language/hu/)\n" "Language: hu\n" @@ -36,7 +38,7 @@ msgstr "AdPlug (AdLib lejátszó)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "soros" @@ -46,11 +48,13 @@ #: src/adplug/adplug-xmms.cc:350 msgid "OPL Emulator:" -msgstr "" +msgstr "OPL emulátor:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Mintavételi frekvencia" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Mintavételi frekvencia:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -66,7 +70,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Egyéb" @@ -74,257 +78,6 @@ msgid "Repeat song in endless loop" msgstr "A szám ismétlése végtelen ciklusban" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Riasztás" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Riasztás beállítása ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Bővítmény a lejátszás időzített elindításához\n" -"\n" -"Eredetileg Adam Feakin és Daniel Stodden írta." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Idő\n" -" Riasztás:\n" -" Ekkor kapcsol be az ébresztő.\n" -"\n" -" Csendes ezután:\n" -" Ennyi idő után magától kikapcsol az ébresztő.\n" -" (ha nem zárták be a párbeszédablakot)\n" -"\n" -"\n" -"Napok\n" -" Nap:\n" -" Ezeken a napokon kapcsol be az ébresztő.\n" -"\n" -" Idő:\n" -" Válassza ki az ébresztés idejét naponként,\n" -" vagy válassza ki az alapértelmezett időt\n" -" time.\n" -"\n" -"\n" -"Hangerő\n" -" Felkeverés:\n" -" A kiválasztott hangerőig hangosít\n" -" ennyi idő alatt.\n" -"\n" -" Kezdjük a:\n" -" Ettől a hangerőtől kezdődik a felhangosítás.\n" -"\n" -" Vége:\n" -" Ennél a hangerőnél áll meg a felhangosítás. \n" -" Ha a felkeverés ideje 0, itt állítsa a kívánt\n" -" hangerőt.\n" -"\n" -"\n" -"Opciók:\n" -" További parancs:\n" -" Ezt a parancsot is végrehajtja riasztáskor.\n" -"\n" -" Lejátszólista:\n" -" Ezt a listát tölti be. Ha itt nem ad meg\n" -" listát, akkor a jelenlegit fogja használni.\n" -" MP3 vagy OGG adatfolyam URL-jét\n" -" is beírhatja ide.\n" -"\n" -" Emlékeztető:\n" -" Ezt a szöveget jeleníti meg a program riasztáskor." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Ez egy ébresztési hívás." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "A mai emlékeztető.." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Emlékeztető" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Hétfő" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Kedd" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Szerda" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Csütörtök" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Péntek" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Szombat" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Vasárnap" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Idő" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Riasztás (alapértelmezett):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Csendes ezután:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "óra" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "perc" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Válassza ki a riasztás napját a következőekből" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Nap" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Alapértelmezett" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Napok" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Felkeverés" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "másodperc" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Hangerő" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Kezdés itt:" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Vége" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Jelenlegi" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "További parancs" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "engedélyezés" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Lejátszólista (opcionális)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Lejátszólista választása" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Beállítások" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Mit jelentenek ezek a lehetőségek?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Súgó" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Album borító" @@ -474,87 +227,83 @@ msgid "Synthesizer" msgstr "Szintetizátor" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Mintavételi frekvencia:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - SoundFont fájl választás" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Mégsem" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Megnyitás" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Fájlnév" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Méret (byte)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Név" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " MIDI Információ " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Formátum:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Hossz (msec):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Sáv sorszáma:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "változó" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Kezdeti idő" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " -msgstr " MIDI Megjegyzések és Dalszövegek " +msgstr " MIDI megjegyzések és dalszövegek " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" -msgstr "* nem található megjegyzés ehhez a MIDI fájlhoz *" +msgstr "* nem található megjegyzés ehhez a MIDI-fájlhoz *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" -msgstr "* nem található dalszöveg ehhez a MIDI fájlhoz *" +msgstr "* nem található dalszöveg ehhez a MIDI-fájlhoz *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" -msgstr "_Bezár" +msgstr "_Bezárás" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (érvénytelen UTF-8)" @@ -609,7 +358,7 @@ msgid "Concave Rectangle" msgstr "Konkáv téglalap" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Nincs" @@ -623,7 +372,7 @@ #: src/aosd/aosd_trigger.cc:55 msgid "Title Change" -msgstr "Cím váltás" +msgstr "Címváltás" #: src/aosd/aosd_trigger.cc:56 msgid "Triggers OSD when the song title changes (for internet streams)." @@ -631,167 +380,167 @@ #: src/aosd/aosd_trigger.cc:61 msgid "Pause On" -msgstr "Szünet Be" +msgstr "Szünet be" #: src/aosd/aosd_trigger.cc:62 msgid "Triggers OSD when playback is paused." -msgstr "OSD használata ha megállítják a lejátszást." +msgstr "OSD használata a lejátszás szüneteltetésekor." #: src/aosd/aosd_trigger.cc:67 msgid "Pause Off" -msgstr "Szünet Ki" +msgstr "Szünet ki" #: src/aosd/aosd_trigger.cc:68 msgid "Triggers OSD when playback is unpaused." -msgstr "OSD használata ha elindítják a lejátszást." +msgstr "OSD használata a lejátszás folytatásakor." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Elhelyezés" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Relatív X pozíció:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Relatív Y pozíció:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" -msgstr "Max OSD szélesség:" +msgstr "OSD legnagyobb szélessége:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" -msgstr "Több monitoros opciók" +msgstr "Több monitoros lehetőségek" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" -msgstr "OSD képernyők használata:" +msgstr "OSD megjelenítése:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" -msgstr "minden monitoron" +msgstr "az összes monitoron" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" -msgstr "monitor %i" +msgstr "%i. monitor" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Időtartam (mp)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Képernyő:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Áttűnés be:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Áttűnés ki:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Betűkészletek" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Betűkészlet %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Árnyék" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Renderelési stílus" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Színek" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Szín %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Esemény engedélyezése" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Esemény" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" -msgstr "Kompozit kezelő detektálva" +msgstr "Kompozitkezelő észlelve" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " "manager otherwise the OSD won't work properly" msgstr "" -"Kompozít kezelő nem érzékelhető;\n" -"ha tudja, hogy van egy futó kompozít kezelő, kérjük aktiválja, egyébként az " -"OSD nem fog megfelelően működni" +"Nem észlelhető kompozitkezelő;\n" +"ha tudja, hogy fut, akkor aktiválja, egyébként az OSD nem fog megfelelően " +"működni" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" -msgstr "Kompozít kezelő nem szükséges a nem valódi átlátszósághoz" +msgstr "Nem szükséges kompozitkezelő a nem valódi átlátszósághoz" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Átlátszóság" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Nem valódi átlátszóság" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" -msgstr "Valódi átlászóság (szükséges X Composite Ext.)" +msgstr "Valódi átlátszóság (X kompozitálási kiterjesztés szükséges)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" -msgstr "Kompozit kiterjesztés nem tölthető be" +msgstr "A kompozitálási kiterjesztés nem tölthető be" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Pozíció" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animáció" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Szöveg" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Dekoráció" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Esemény" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Egyéb" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Teszt" @@ -807,11 +556,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Audacious lejátszólisták (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Bitmélység:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Alulmintavételezési arány:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Szín" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Szolid szkóp" @@ -823,6 +588,10 @@ msgid "Presets:" msgstr "Előbeállítások:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Alapértelmezett" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Bemenő szint:" @@ -835,7 +604,7 @@ msgid "Cut frequency:" msgstr "Vágási frekvencia:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Spektrum analizátor" @@ -892,7 +661,7 @@ #: src/cdaudio/cdaudio-ng.cc:145 msgid "Use HTTP instead of CDDBP" -msgstr "Hasznájon HTTP helyett CDDBP protokollt" +msgstr "HTTP használata a CDDBP helyett" #: src/cdaudio/cdaudio-ng.cc:148 msgid "Server:" @@ -933,50 +702,50 @@ msgid "Audio CD" msgstr "Audio CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "A CD eszköz %s megnyitása sikertelen." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Nincs hanglemez-képes CD maghajtó." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "A meghajtó üres." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." -msgstr "Nem támogatott lemez típus." +msgstr "Nem támogatott lemeztípus." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "A megnyitott CD meghajtó inicializálása sikertelen." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Az első/utolsó sáv számának lekérdezése sikertelen." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Az LSN eleje/vége nem olvasható a %d. sávon." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "A CDDB kapcsolat létrehozása meghiúsult." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "A CDDB kiszolgáló lekérdezése sikertelen." -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "A CDDB kiszolgáló lekérdezése sikertelen: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "A CDDB információ kiolvasása meghiúsult: %s" @@ -999,7 +768,7 @@ #: src/compressor/compressor.cc:46 msgid "Center volume:" -msgstr "Közép hangerő:" +msgstr "Középső hangereje:" #: src/compressor/compressor.cc:49 msgid "Dynamic range:" @@ -1048,7 +817,14 @@ #: src/console/plugin.cc:39 msgid "Default song length:" -msgstr "Alapértelmezett szám hossz:" +msgstr "Alapértelmezett számhossz:" + +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "másodperc" #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" @@ -1056,7 +832,7 @@ #: src/console/plugin.cc:43 msgid "Enable audio resampling" -msgstr "Engedélyezi az audio újra mintavételezést" +msgstr "Hang újramintavételezésének engedélyezése" #: src/console/plugin.cc:49 msgid "SPC" @@ -1072,13 +848,13 @@ #: src/console/plugin.h:26 msgid "Game Console Music Decoder" -msgstr "Játékkonzol zene dekódoló" +msgstr "Játékkonzol-zenedekódoló" #: src/coreaudio/coreaudio.cc:53 msgid "CoreAudio output" msgstr "CoreAudio kimenet" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1098,11 +874,11 @@ "Az SDL kimeneti bővítmény alapján\n" "Copyright 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Exkluzív mód használata" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "Bitpontos hang használata (eszköz mintavételi arányának igazítása)" @@ -1199,20 +975,20 @@ msgid "Delete" msgstr "Törlés" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" -msgstr "Mégsem" +msgstr "Mégse" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Kijelölt fájlok törlése" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Törlési mód" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Lomtárba dob törlés helyett" @@ -1242,7 +1018,7 @@ msgstr "Késleltetés:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1258,11 +1034,11 @@ msgid "Echo" msgstr "Visszhang" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "FFmpeg bővítméyn" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1323,7 +1099,7 @@ #: src/filewriter/filewriter.cc:385 msgid "Output file format:" -msgstr "Kimeneti fájl formátum:" +msgstr "Kimeneti fájlformátum:" #: src/filewriter/filewriter.cc:389 msgid "Save into original directory" @@ -1385,89 +1161,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "8 kbit/s" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "16 kbit/s" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "32 kbit/s" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "40 kbit/s" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "48 kbit/s" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "56 kbit/s" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "64 kbit/s" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "80 kbit/s" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "96 kbit/s" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "112 kbit/s" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "128 kbit/s" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "160 kbit/s" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "192 kbit/s" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "224 kbit/s" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "256 kbit/s" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "320 kbit/s" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Joint Stereo" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Sztereó" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Monó" @@ -1501,7 +1277,7 @@ #: src/filewriter/filewriter.cc:503 msgid "Error protection" -msgstr "Hiba védelem" +msgstr "Hibavédelem" #: src/filewriter/filewriter.cc:508 msgid "Enable VBR/ABR" @@ -1529,7 +1305,7 @@ #: src/filewriter/filewriter.cc:530 msgid "Strictly enforce minimum bitrate" -msgstr "Szigorú minimális bitráta" +msgstr "Minimális bitráta szigorú betartatása" #: src/filewriter/filewriter.cc:533 msgid "Omit Xing VBR header" @@ -1553,7 +1329,7 @@ #: src/filewriter/filewriter.cc:545 msgid "Force addition of version 2 tag" -msgstr "Mindig adja hozzá a 2-es verzió címkéit" +msgstr "2-es verziócímke hozzáadásának betartatása" #: src/filewriter/filewriter.cc:547 msgid "Only add v1 tag" @@ -1579,7 +1355,7 @@ msgid "Quality (0-1):" msgstr "Minőség (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Általános" @@ -1588,11 +1364,11 @@ msgid "FLAC Decoder" msgstr "FLAC dekódoló" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "veszteségmentes" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1624,7 +1400,7 @@ msgid "Invalid open mode" msgstr "Érvénytelen megnyitási mód" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1644,127 +1420,145 @@ "\n" "Licensz: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL spektrum analizátor" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "Bejegyzés száma" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Cím" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Előadó" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Év" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Album" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Album előadó" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Sáv" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Műfaj" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "Várakozási sor pozíció" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "Sorban elfoglalt pozíció" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Hossz" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "Fájl elérési útja" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Egyéni cím" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Fájlnév" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Egyéni cím" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Bitráta" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Megjegyzés" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Elérhető oszlopok" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Megjelenített oszlopok" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Kereső eszköz" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" -msgstr "Balra rögzít" +msgstr "Rögzítés balra" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" -msgstr "Jobbra rögzít" +msgstr "Rögzítés jobbra" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" -msgstr "Felülre rögzít" +msgstr "Rögzítés felülre" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" -msgstr "Alulra rögzít" +msgstr "Rögzítés alulra" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Rögzítés feloldása" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Letiltás" #: src/gtkui/menus.cc:79 src/qtui/menus.cc:107 #: src/statusicon-qt/statusicon.cc:112 src/statusicon/statusicon.cc:282 msgid "_Open Files ..." -msgstr "Fájl_ok megnyitása ..." +msgstr "Fájl_ok megnyitása…" #: src/gtkui/menus.cc:80 src/qtui/menus.cc:111 msgid "Open _URL ..." -msgstr "_URL megnyitása ..." +msgstr "_URL megnyitása…" #: src/gtkui/menus.cc:81 src/qtui/menus.cc:113 msgid "_Add Files ..." @@ -1772,7 +1566,7 @@ #: src/gtkui/menus.cc:82 src/qtui/menus.cc:118 msgid "Add U_RL ..." -msgstr "U_RL hozzáadása ..." +msgstr "U_RL hozzáadása…" #: src/gtkui/menus.cc:84 src/qtui/menus.cc:120 msgid "Search _Library" @@ -1780,7 +1574,7 @@ #: src/gtkui/menus.cc:86 src/qtui/menus.cc:123 msgid "A_bout ..." -msgstr "_Névjegy ..." +msgstr "_Névjegy…" #: src/gtkui/menus.cc:87 src/qtui/menus.cc:125 msgid "_Settings ..." @@ -1793,8 +1587,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Lejátszás" @@ -1807,7 +1601,7 @@ #: src/gtkui/menus.cc:94 src/qtui/menus.cc:139 #: src/statusicon-qt/statusicon.cc:108 src/statusicon/statusicon.cc:278 msgid "_Stop" -msgstr "_Megállítás" +msgstr "L_eállítás" #: src/gtkui/menus.cc:95 src/qtui/menus.cc:141 #: src/statusicon-qt/statusicon.cc:109 src/statusicon/statusicon.cc:279 @@ -1822,12 +1616,12 @@ #: src/gtkui/menus.cc:97 src/qtui/menus.cc:145 src/skins/menus.cc:114 #: src/skins-qt/menus.cc:105 msgid "Previous Album" -msgstr "" +msgstr "Előző Album" #: src/gtkui/menus.cc:98 src/qtui/menus.cc:146 src/skins/menus.cc:115 #: src/skins-qt/menus.cc:106 msgid "Next Album" -msgstr "" +msgstr "Következő Album" #: src/gtkui/menus.cc:100 src/qtui/menus.cc:148 msgid "_Repeat" @@ -1843,7 +1637,7 @@ #: src/gtkui/menus.cc:103 src/qtui/menus.cc:155 msgid "N_o Playlist Advance" -msgstr "_Ne legyen léptetés a lejátszólistában" +msgstr "_Nincs léptetés a lejátszólistában" #: src/gtkui/menus.cc:104 src/qtui/menus.cc:157 msgid "Stop A_fter This Song" @@ -1852,15 +1646,15 @@ #: src/gtkui/menus.cc:106 src/gtkui/menus.cc:208 src/qtui/menus.cc:162 #: src/qtui/menus.cc:292 msgid "Song _Info ..." -msgstr "Dal _információ ..." +msgstr "Dal _információi…" #: src/gtkui/menus.cc:107 msgid "Jump to _Time ..." -msgstr "Ugrás _időre ..." +msgstr "Ugrás _időre…" #: src/gtkui/menus.cc:108 msgid "_Jump to Song ..." -msgstr "Ugrás _dalra ..." +msgstr "Ugrás _számra…" #: src/gtkui/menus.cc:110 src/qtui/menus.cc:165 msgid "Set Repeat Point _A" @@ -1925,12 +1719,12 @@ #: src/gtkui/menus.cc:130 src/gtkui/menus.cc:147 src/qtui/menus.cc:187 #: src/qtui/menus.cc:204 msgid "By _File Path" -msgstr "_Fájl útvonal szerint" +msgstr "_Fájlútvonal szerint" #: src/gtkui/menus.cc:131 src/gtkui/menus.cc:148 src/qtui/menus.cc:188 #: src/qtui/menus.cc:205 msgid "By _Custom Title" -msgstr "_Egyedi cím szerint" +msgstr "_Egyéni cím szerint" #: src/gtkui/menus.cc:132 src/gtkui/menus.cc:149 src/qtui/menus.cc:189 #: src/qtui/menus.cc:206 @@ -1971,8 +1765,8 @@ msgid "Remove _Unavailable Files" msgstr "_Nem elérhető fájlok törlése" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Új" @@ -1982,17 +1776,17 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "Tö_rlés" #: src/gtkui/menus.cc:168 src/qtui/menus.cc:231 msgid "_Import ..." -msgstr "_Importálás ..." +msgstr "_Importálás…" #: src/gtkui/menus.cc:169 src/qtui/menus.cc:232 msgid "_Export ..." -msgstr "_Exportálás ..." +msgstr "_Exportálás…" #: src/gtkui/menus.cc:171 src/qtui/menus.cc:235 msgid "Playlist _Manager ..." @@ -2000,7 +1794,7 @@ #: src/gtkui/menus.cc:172 src/qtui/menus.cc:237 msgid "_Queue Manager ..." -msgstr "_Várakozási sor kezelő ..." +msgstr "So_rkezelő…" #: src/gtkui/menus.cc:176 src/qtui/menus.cc:241 msgid "Volume _Up" @@ -2028,15 +1822,15 @@ #: src/gtkui/menus.cc:187 src/qtui/menus.cc:258 msgid "Show _Menu Bar" -msgstr "_Menü sor mutatása" +msgstr "_Menüsáv megjelenítése" #: src/gtkui/menus.cc:188 src/qtui/menus.cc:260 msgid "Show I_nfo Bar" -msgstr "I_nfo sor mutatása" +msgstr "I_nformációs sáv megjelenítése" #: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 msgid "Show Info Bar _Album Art" -msgstr "" +msgstr "Információs sáv mutatása _Album borító" #: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 msgid "Show Info Bar Vis_ualization" @@ -2044,7 +1838,7 @@ #: src/gtkui/menus.cc:191 src/qtui/menus.cc:266 msgid "Show _Status Bar" -msgstr "_Státusz sor mutatása" +msgstr "Álla_potsáv megjelenítése" #: src/gtkui/menus.cc:193 src/qtui/menus.cc:270 msgid "Show _Remaining Time" @@ -2082,7 +1876,7 @@ #: src/gtkui/menus.cc:209 src/qtui/menus.cc:294 msgid "_Queue/Unqueue" -msgstr "_Várólistára/Várólistáról ki" +msgstr "_Sorba állítás/kivétel a sorból" #: src/gtkui/menus.cc:211 src/qtui/menus.cc:297 msgid "_Open Containing Folder" @@ -2110,10 +1904,10 @@ #: src/gtkui/menus.cc:218 src/qtui/menus.cc:307 msgid "Select _All" -msgstr "Mind kivál_aszt" +msgstr "Összes kivál_asztása" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "Átneve_zés ..." @@ -2141,197 +1935,202 @@ msgid "Show column headers" msgstr "Oszlop fejlécek mutatása" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Számváltáskor gördül" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" -msgstr "GTK+ felület" +msgstr "GTK felület" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" -msgstr "%s - Audacious" +msgstr "%s – Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Pufferelés ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Lejátszás" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Szünet" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Keresés a gyűjteményben" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Fájlok megnyitása" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Fájlok hozzáadása" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Előző" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" -msgstr "Leállít" +msgstr "Leállítás" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Következő" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Közvetítés rögzítése" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Ismétlés" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Véletlenszerű" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" -msgstr "" +msgstr "Menü" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "sztereó" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d csatorna" msgstr[1] "%d csatorna" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "%d kbit/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Egyszerű mód." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Lejátszólista mód." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Leállítás az aktuális dal után." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Előző szám" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" -msgstr "Szünet/Folytatás" +msgstr "Szünet/folytatás" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Következő szám" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" -msgstr "" +msgstr "Előrelépés" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" -msgstr "" +msgstr "Visszalépés" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Némítás" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Hangerő növelése" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Hangerő csökkentése" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Ugrás fájlhoz" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Lejátszó ablak(ok) váltása" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "On-Screen-Display mutatása" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Ismétlés bekapcsolása" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Véletlenszerű lejátszás be" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Játszott szám után állj" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Lejátszó ablak(ok) kiemelése" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(nincs)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2341,11 +2140,11 @@ "\n" "Biztos, hogy folytatja?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" -msgstr "Egér gombok hozzárendelése" +msgstr "Egérgombok hozzárendelése" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2353,23 +2152,23 @@ "Adjon meg egy billentyűkombinációt a beviteli mezőben.\n" "Ez fog az egér gombjaihoz kötődni." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Gyorsbillentyűk:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Művelet:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Billentyű kötések:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Hozzáadás" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Általános gyorsbillentyűk" @@ -2387,6 +2186,18 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Általános Gyorsbillentyűk Bővítmény\n" +"A lejátszó irányítása általános billentyűkombinációkkal vagy multimédia " +"billentyűkkel.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Hozzájárult többek között:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " #: src/jack/jack-ng.cc:54 msgid "JACK Output" @@ -2394,7 +2205,7 @@ #: src/jack/jack-ng.cc:126 msgid "Client name:" -msgstr "" +msgstr "Kliens neve:" #: src/jack/jack-ng.cc:128 msgid "Automatically connect to output ports" @@ -2402,27 +2213,27 @@ #: src/jack/jack-ng.cc:130 msgid "Filter ports (regex, use any port if blank):" -msgstr "" +msgstr "Portok szűrése (regex, bármelyik port használata, ha üres):" #: src/jack/jack-ng.cc:136 msgid "Connect to physical ports only" -msgstr "" +msgstr "Csatlakozás csak fizikai portokhoz" #: src/jack/jack-ng.cc:139 msgid "Upmix to" -msgstr "" +msgstr "Felkeverés ide" #: src/jack/jack-ng.cc:141 msgid "ports if input has fewer channels" -msgstr "" +msgstr "port(ok), ha a bemenetnek kevesebb csatornája van" #: src/jack/jack-ng.cc:143 msgid "Ignore insufficient number of ports" -msgstr "" +msgstr "Nem elégséges számú port figyelmen kívül hagyása" #: src/jack/jack-ng.cc:181 msgid "No JACK output ports were found. Please check settings." -msgstr "" +msgstr "Nem találtam JACK kimeneti portot. Kérem ellenőrizze a beállításokat." #: src/jack/jack-ng.cc:195 #, c-format @@ -2456,16 +2267,16 @@ "csa %d Hz-en játszik le. Kérem használja a Mintavételi Frekvencia Konverter " "modult a hibák elkerülése érdekében." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s Beállítások" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Modul útvonalak:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2475,25 +2286,25 @@ "Ezek a helyek a LADSPA_PATH-on kivül is kereshetők.\n" "Új helyek hozzáadása után nyomjon entert az új beépülők kereséséhez." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Elérhető bővítmények:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Engedélyez" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Engedélyezett modulok:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Beállítások" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2549,101 +2360,107 @@ msgid "Wait before reconnecting:" msgstr "Várjon az újracsatlakozás előtt:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" -msgstr "" +msgstr "Dalszöveg" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" -msgstr "" +msgstr "Sehol" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" -msgstr "" +msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" -msgstr "" +msgstr "Előadó mező csonka az elején, Cím -- a végén" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" -msgstr "" +msgstr "Csonkolandó karakterek:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" +"Karakterek ORed színnel a kifejezésben, előtte és utána szóköz" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" -msgstr "" +msgstr "Elválasztandó karakterek:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" -msgstr "" +msgstr "További csonkolás azokon a karaktereken" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" -msgstr "" +msgstr "Általános" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" +msgstr "Cím szétválasztása szerző és címmé a karaktereknél" + +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" -msgstr "" +msgstr "Letöltött dalszövegeket mentse helyi tárban" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" -msgstr "" +msgstr "Helyi Tároló" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" -msgstr "" +msgstr "Dalszöveg fájlok (.lrc) betöltése helyi tárból" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Nem sikerült letölteni: %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Nem sikerült értelmezni: %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Zeneszöveg keresése ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Hiba" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." -msgstr "" +msgstr "Dalszöveg nem található." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." -msgstr "" +msgstr "Hiányzó cím és/vagy előadó." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" -msgstr "" +msgstr "Mentés Helyben" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" -msgstr "" +msgstr "Frissítés" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "M3U lejátszólisták" @@ -2805,50 +2622,26 @@ msgstr "A beállítások csak az Audacious újraindítása után érvényesülnek." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Leállítás az aktuális dal után" #: src/moonstone/moonstone.cc:39 msgid "Moonstone" -msgstr "" +msgstr "Moonstone" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Visszaállítás alapértelmezettre" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Most játszott" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Bejegyzés száma" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Album előadó" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Sorban elfoglalt pozíció" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Fájl elérési útja" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Fájlnév" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Egyéni cím" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Elemek" @@ -2864,7 +2657,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Pontos hossz számítás (lassú)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Térhatású" @@ -2962,7 +2755,7 @@ #: src/notify/notify.cc:110 msgid "Custom notification duration:" -msgstr "" +msgstr "Egyéni értesítés időtartam:" #: src/notify/osd.cc:74 msgid "Show" @@ -2970,44 +2763,57 @@ #: src/openmpt/mpt.cc:50 msgid "OpenMPT (Module Player)" -msgstr "" +msgstr "OpenMPT (Modul Lejátszó)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" +"libopenmpt alapuló Modul Lejátszó\n" +"\n" +"Írta: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" -msgstr "" +msgstr "Sztereó szétválasztás:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" -msgstr "" +msgstr "Interpoláció:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Lineáris" #: src/openmpt/mptwrap.h:52 msgid "Cubic" -msgstr "" +msgstr "Harmadfokú" #: src/openmpt/mptwrap.h:53 msgid "Windowed sinc" +msgstr "Ablak-sinc-szűrő" + +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" msgstr "" -#: src/oss4/oss.h:75 +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4 kimenet" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "OSS3 kimenet" @@ -3049,18 +2855,35 @@ "Köszönet mindenkinek az #audacious-on, különösen Tony Vroon-nak és John " "Lindgren-nek, és persze az előző OSS beépülő készítőinek." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Lejátszás" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Lejátszólista kezelő" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Eltávolítás" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "Át_nevezés" @@ -3074,9 +2897,9 @@ #: src/psf/plugin.cc:270 msgid "OpenPSF Configuration" -msgstr "" +msgstr "OpenPSF Beállítások" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Tárolt hossz mellőzése" @@ -3086,11 +2909,11 @@ #: src/pulse/pulse_audio.cc:72 msgid "Context name:" -msgstr "" +msgstr "Környezet neve:" #: src/pulse/pulse_audio.cc:74 msgid "Stream name:" -msgstr "" +msgstr "Folyam neve:" #: src/pulse/pulse_audio.cc:575 msgid "" @@ -3160,12 +2983,21 @@ "\n" "License: GPLv2+" msgstr "" +"OpenGL Színképelemző Audacioushoz\n" +"Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" +"Copyright 2014, 2020 Ariadne Conill\n" +"\n" +"Az XMMS bővítményen alapul:\n" +"Copyright 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, and " +"4Front Technologies\n" +"\n" +"Licensz: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." -msgstr "" +msgstr "Nyomjon egy billentyűkombinációt a szövegdobozban." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3180,6 +3012,19 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Általános Gyorsbillentyűk Bővítmény\n" +"A lejátszó irányítása általános billentyűkombinációkkal vagy multimédia " +"billentyűkkel.\n" +"\n" +"Copyright (C) 2020 i.Dark_Templar \n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Hozzájárult többek között:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " #: src/qtui/menus.cc:109 msgid "_Open Folder ..." @@ -3201,12 +3046,16 @@ msgid "Audio Settings ..." msgstr "Hangbeállítások ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" -msgstr "" +msgstr "S#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" +msgstr "Sz#" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" msgstr "" #: src/qtui/qtui.cc:40 @@ -3219,23 +3068,23 @@ #: src/qtui/settings.cc:58 msgid "Always" -msgstr "" +msgstr "Mindig" #: src/qtui/settings.cc:59 msgid "Auto-hide" -msgstr "" +msgstr "Automatikus elrejtés" #: src/qtui/settings.cc:60 msgid "Never" -msgstr "" +msgstr "Soha" #: src/qtui/settings.cc:64 msgid "Show playlist tabs:" -msgstr "" +msgstr "Lejátszólista fülek megjelenítése:" #: src/qtui/settings.cc:78 msgid "Use bold font for column headers" -msgstr "" +msgstr "Vastag betűk használata oszlop fejlécekhez" #: src/resample/resample.cc:43 msgid "Sample Rate Converter" @@ -3426,38 +3275,38 @@ msgid "Library" msgstr "Gyűjtemény" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d zeneszám" msgstr[1] "%d zeneszám" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "műfaj szerint" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "be" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "írta" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Megjelenítendő találatok:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Gyűjtemény átvizsgálása indításkor" #: src/search-tool-qt/search-tool-qt.cc:170 msgid "Monitor library for changes" -msgstr "" +msgstr "Gyűjtemény változásainak figyelése" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3465,37 +3314,37 @@ "Az Audacious zenekönyvtárába importáláshoz válaszd ki a mappát majd kattints " "a \"Frissítés\" ikonra." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Kérem várjon ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Mappa választás" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Keresés a gyűjteményben" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "%d / %d találat megjelenítve" msgstr[1] "%d / %d találat megjelenítve" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d találat" msgstr[1] "%d találat" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Lejátszólista létrehozása" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "Lejátszólistához hozzá_ad" @@ -3599,108 +3448,108 @@ msgid "Repeat point B set." msgstr "A 'B' pont beállítva" -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Preamp" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Audacious Equalizer" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Rögzítés folyamatban" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Rögzítés leállítva" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Tekerés %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Hangerő: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Balansz: %d%% bal" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Balansz: közép" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Balansz: %d%% jobb" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Beállítások menü" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Tiltja a 'Mindig felül' opciót" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Engedélyezi a 'Mindig felül' opciót" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Fájl Információs doboz" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Dupla méret" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Megjelenítés" @@ -3724,10 +3573,6 @@ msgid "Open URL ..." msgstr "URL megnyitása ..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Lejátszás" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Lejátszólista" @@ -3742,7 +3587,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Szolgáltatások" @@ -3759,7 +3604,7 @@ msgstr "Kilépés" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Dal információ ..." @@ -3779,7 +3624,7 @@ msgid "Clear A-B Repeat" msgstr "A-B ismétlés törlése" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Ugrás a dalra ..." @@ -3872,20 +3717,20 @@ msgstr "Fájlok hozzáadása ..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Cím szerint" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Fájlnév szerint" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Fájl útvonal szerint" @@ -3913,113 +3758,113 @@ msgid "Remove Selected" msgstr "Kijelölt törlése" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Keresés és választ" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Kijelölés megfordítása" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Nincs kijelölés" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Mindet kijelöl" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "A dal sorszáma szerint" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Előadó szerint" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Album szerint" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Album előadó szerint" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Kiadás dátuma szerint" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Műfaj szerint" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Hossz szerint" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Egyéb cím szerint" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Megjegyzés szerint" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Véletlenszerű lista" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Fordított lista" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Kijelöltek rendezése" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Lista rendezése" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Tartalmazó mappa megnyitása" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Kivágás" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Másolás" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Beillesztés" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Beillesztés a végére" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Várólistára/Várólistáról ki" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d / %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Audacious lejátszólista szerkesztő" @@ -4035,167 +3880,219 @@ msgid "Add Folder ..." msgstr "Mappa hozzáadása..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Elemek keresése az aktív lejátszólistában" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Válasszon ki bejegyzéseket egy vagy több mező kijelölésével. A mezők " +"általános kifejezéseket használnak, a kis-nagybetűkre viszont nem érzékeny. " +"Ha nem tudod, hogyan működnek a reguláris kifejezések, egyszerűen írj be egy " +"részletet arról amit keresel." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Cím:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Album:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Előadó:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Fájlnév:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Az előző kiválasztások törlése keresés előtt" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Automatikusan várólistára kerülnek a talált elemek" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Hozzon létre új lejátszólistát az egyező elemekből" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Keresés" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Lejátszó:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Főablak betűtípus kiválasztás:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Lejátszólista:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Válassza ki a lejátszólista betűkészletét:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Felület" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "Aktív címsor megjelenítése, ha bármelyik ablak fókuszban van" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Betűtípusok" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Bitmap fontok használata (csak ASCII támogatása)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Szám címének görgetése" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "A dal címe mindkét irányba mozog" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analizátor" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Szkóp" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Spektrogram / Kivezérlésmérő" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Kikapcsolva" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Szokásos" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Tűz" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Függőleges vonalak" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Vonalak" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Csíkok" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Lassabb" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Lassú" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Közepes" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Gyors" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Leggyorsabb" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Pontok" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Vonal" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Tömör" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Jég" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Sima" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Színezés:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Stílus:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Esés:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Csúcs esése:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Szkóp stílusa:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Spektrogram" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "Kivezérlésmérő stílusa:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Típus" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Megjelenítés típusa:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analizátor" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Csúcsok mutatása" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Megjelenítés" @@ -4207,59 +4104,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Nem régi Winamp 2.x bőr" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Elemek keresése az aktív lejátszólistában" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Keresés" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Válasszon ki bejegyzéseket egy vagy több mező kijelölésével. A mezők " -"általános kifejezéseket használnak, a kis-nagybetűkre viszont nem érzékeny. " -"Ha nem tudod, hogyan működnek a reguláris kifejezések, egyszerűen írj be egy " -"részletet arról amit keresel." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Cím:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Album:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Előadó:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Fájlnév:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Az előző kiválasztások törlése keresés előtt" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Automatikusan várólistára kerülnek a talált elemek" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Hozzon létre új lejátszólistát az egyező elemekből" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Sndfile bővítmény" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4581,39 +4430,39 @@ #: src/streamtuner/icecast-model.cc:126 src/streamtuner/shoutcast-model.cc:131 msgid "Type" -msgstr "" +msgstr "Típus" #: src/streamtuner/icecast-model.cc:132 msgid "Current Song" -msgstr "" +msgstr "Jelenlegi Dal" #: src/streamtuner/icecast-model.cc:164 msgid "Other" -msgstr "" +msgstr "Más" #: src/streamtuner/ihr-model.cc:63 msgid "Market" -msgstr "" +msgstr "Forgalmazó" #: src/streamtuner/ihr-model.cc:156 msgid "Call Letters" -msgstr "" +msgstr "Hívóbetűk" #: src/streamtuner/ihr-model.cc:162 msgid "Description" -msgstr "" +msgstr "Leírás" #: src/streamtuner/shoutcast-model.cc:128 msgid "Listeners" -msgstr "" +msgstr "Hallgatók" #: src/streamtuner/shoutcast-model.cc:188 msgid "Top 500 Stations" -msgstr "" +msgstr "Az Első 500 Állomás" #: src/streamtuner/shoutcast-model.cc:189 msgid "Alternative" -msgstr "" +msgstr "Alternatív" #: src/streamtuner/shoutcast-model.cc:190 msgid "Blues" @@ -4629,7 +4478,7 @@ #: src/streamtuner/shoutcast-model.cc:193 msgid "Decades" -msgstr "" +msgstr "Évtizedek" #: src/streamtuner/shoutcast-model.cc:194 msgid "Easy Listening" @@ -4637,7 +4486,7 @@ #: src/streamtuner/shoutcast-model.cc:195 msgid "Electronic" -msgstr "" +msgstr "Elektronikus" #: src/streamtuner/shoutcast-model.cc:196 msgid "Folk" @@ -4645,11 +4494,11 @@ #: src/streamtuner/shoutcast-model.cc:197 msgid "Inspirational" -msgstr "" +msgstr "Inspiráló" #: src/streamtuner/shoutcast-model.cc:198 msgid "International" -msgstr "" +msgstr "Nemzetközi" #: src/streamtuner/shoutcast-model.cc:199 msgid "Jazz" @@ -4657,7 +4506,7 @@ #: src/streamtuner/shoutcast-model.cc:200 msgid "Latin" -msgstr "" +msgstr "Latin" #: src/streamtuner/shoutcast-model.cc:201 msgid "Metal" @@ -4673,11 +4522,11 @@ #: src/streamtuner/shoutcast-model.cc:205 msgid "Public Radio" -msgstr "" +msgstr "Közrádiók" #: src/streamtuner/shoutcast-model.cc:206 msgid "R&B and Urban" -msgstr "" +msgstr "R&B és Urban" #: src/streamtuner/shoutcast-model.cc:207 msgid "Rap" @@ -4693,31 +4542,31 @@ #: src/streamtuner/shoutcast-model.cc:210 msgid "Seasonal and Holiday" -msgstr "" +msgstr "Szezonális és Ünnepi" #: src/streamtuner/shoutcast-model.cc:211 msgid "Soundtracks" -msgstr "" +msgstr "Filmzenék" #: src/streamtuner/shoutcast-model.cc:212 msgid "Talk" -msgstr "" +msgstr "Beszéd" #: src/streamtuner/shoutcast-model.cc:213 msgid "Themes" -msgstr "" +msgstr "Főcímdalok" #: src/streamtuner/streamtuner.cc:59 msgid "Shoutcast" -msgstr "" +msgstr "Shoutcast" #: src/streamtuner/streamtuner.cc:60 msgid "Icecast" -msgstr "" +msgstr "Icecast" #: src/streamtuner/streamtuner.cc:71 msgid "Stream Tuner" -msgstr "" +msgstr "Folyamállító (Stream Tuner)" #: src/tonegen/tonegen.cc:45 msgid "Tone Generator" @@ -4749,19 +4598,32 @@ "\n" "pl.: tone://2000;2005 -> 2000 Hz-es és 2005 Hz-es hangot modulál" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(További üzenetek vannak elrejtve.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Dolgozom…" -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Információ" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "A(z) %s nem tűnik érvényes mappának." + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Ének eltávolítás" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4853,30 +4715,32 @@ "VU Meter Plugin for Audacious\n" "Copyright 2017-2019 Marc Sánchez Fauste" msgstr "" +"Jelerősség mérő bővítmény Audacioushoz\n" +"Copyright 2017-2019 Marc Sánchez Fauste" #: src/vumeter-qt/vumeter_qt.cc:35 msgid "VU Meter Settings" -msgstr "" +msgstr "Jelerősség mérő beállításai" #: src/vumeter-qt/vumeter_qt.cc:37 msgid "Peak hold time:" -msgstr "" +msgstr "Csúcs tartás ideje:" #: src/vumeter-qt/vumeter_qt.cc:42 msgid "Fall-off time:" -msgstr "" +msgstr "Esés ideje:" #: src/vumeter-qt/vumeter_qt.cc:44 msgid "dB/second" -msgstr "" +msgstr "dB/másodperc" #: src/vumeter-qt/vumeter_qt.cc:46 msgid "Display legend" -msgstr "" +msgstr "Jelmagyarázat megjelenítése" #: src/vumeter-qt/vumeter_qt.h:37 msgid "VU Meter" -msgstr "" +msgstr "Jelerősség Mérő" #: src/waveout/waveout.cc:43 msgid "Win32 waveOut" @@ -4912,14 +4776,38 @@ "\n" "A kód egy részét Miles Egan írta." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2SF dekódoló" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Koszinusz" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Éles" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "XSF Konfiguráció" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Alapértelmezett elhalkulási idő:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Interpolációs mód:" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "XML Shareable Playlists File (XSPF)" diff -Nru audacious-plugins-4.1/po/id_ID.po audacious-plugins-4.3.1/po/id_ID.po --- audacious-plugins-4.1/po/id_ID.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/id_ID.po 2023-04-29 20:17:32.000000000 +0000 @@ -15,10 +15,12 @@ # , 2012 # Liffindra Angga Zaaldian , 2015 # martadinata666 , 2012 +# Matt Johnson, 2021 # se7entime , 2012-2013 # , 2012 # Rahman Yusri Aftian , 2012-2014 # Rizki Aulia Rachman , 2013 +# solo battle , 2021 # xunilresu , 2012 # , 2012 # , 2012 @@ -26,9 +28,9 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Matt Johnson, 2021\n" "Language-Team: Indonesian (Indonesia) (http://www.transifex.com/audacious/" "audacious/language/id_ID/)\n" "Language: id_ID\n" @@ -46,21 +48,23 @@ msgstr "AdPlug (Pemutar AdLib)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "telah diurutkan" #: src/adplug/adplug-xmms.cc:349 src/sid/xs_config.cc:61 msgid "Output" -msgstr "" +msgstr "Keluaran" #: src/adplug/adplug-xmms.cc:350 msgid "OPL Emulator:" -msgstr "" +msgstr "Emulator OPL:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Kadar contoh:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -76,219 +80,13 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Miscellaneous" #: src/adplug/adplug-xmms.cc:356 msgid "Repeat song in endless loop" -msgstr "" - -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Alarm" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Mengatur Alarm ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Sebuah plugin yang dapat digunakan untuk mulai bermain pada waktu tertentu.\n" -"\n" -"Awalnya ditulis oleh Adam Feakin dan Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Ini adalah panggilan bangun Anda." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Pengingat Anda untuk hari ini adalah..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Pengingat" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Senin" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Selasa" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Rabu" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Kamis" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Jumat" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Sabtu" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Minggu" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Waktu" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Bunyikan alarm pada (bawaan):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "j" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Diam setelah:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "jam" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "menit" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Pilih hari aktivasi alarm" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Hari" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Bawaan" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Hari" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Memudar" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "detik" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Volume" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Dimulai dari" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Paripurna" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Sekarang" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Perintah Tambahan" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "gunakan" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Daftar lagu (pilihan)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Pilih daftar lagu" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Pilihan" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Apa yang dimaksud dengan opsi ini?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Bantuan" +msgstr "Ulangi lagu terus menerus" #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" @@ -296,7 +94,7 @@ #: src/alsa/alsa.h:64 msgid "ALSA Output" -msgstr "Keluaran ALSA" +msgstr "Output ALSA" #: src/alsa/config.cc:28 msgid "" @@ -363,6 +161,25 @@ "Tony Vroon\n" "for the good help with alpha testing" msgstr "" +"AMIDI-Plug\n" +"pemutar musik MIDI modular\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +" ditulis oleh Giacomo Lozito\n" +"\n" +"\n" +"terima kasih khusus kepada...\n" +"\n" +"Clemens Ladisch dan Jaroslav Kysela\n" +"untuk program keren mereka aplaymidi dan amixer; itu\n" +"benar-benar berguna, bersama dengan dokumen alsa-lib, secara berurutan\n" +"untuk mempelajari lebih lanjut tentang ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"untuk logo keyboard midi yang bagus\n" +"\n" +"Tony Vroon\n" +"untuk bantuan yang baik dengan pengujian alfa " #: src/amidiplug/i_configure.cc:94 msgid "Override default gain:" @@ -390,7 +207,7 @@ #: src/amidiplug/i_configure.cc:129 msgid "Transpose:" -msgstr "Tukar tempat:" +msgstr "Meukar tempat:" #: src/amidiplug/i_configure.cc:131 src/speedpitch/speed-pitch.cc:257 msgid "semitones" @@ -402,7 +219,7 @@ #: src/amidiplug/i_configure.cc:134 msgid "note numbers" -msgstr "angka not" +msgstr "nomer catatan" #: src/amidiplug/i_configure.cc:135 msgid "Skip leading silence" @@ -420,93 +237,89 @@ msgid "Synthesizer" msgstr "Synthesizer" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Kadar contoh:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - pilih berkas SoundFont" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Batal" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "Bu_ka" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Nama berkas" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Ukuran (bytes)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Nama:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " -msgstr " MIDI Info " +msgstr " Info MIDI " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Format:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" -msgstr "Panjang(milidetik)" +msgstr "Panjang (milidetik)" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Jumlah trek:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "variabel" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Waktu Div:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " Info dan Lirik MIDI " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* tidak ada komentar yang tersedia di berkas MIDI ini *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* tidak ada lirik yang tersedia di berkas MIDI ini *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Keluar" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (UTF-8 tidak cocok)" #: src/ampache/ampache.cc:33 msgid "Ampache Browser" -msgstr "" +msgstr "Browser Ampache " #: src/ampache/ampache.cc:46 msgid "" @@ -516,6 +329,11 @@ "Copyright (C) Róbert Čerňanský and John Lindgren\n" "License: GNU GPLv3" msgstr "" +"Ampache Browser untuk Audacious\n" +"http://ampache-browser.org/\n" +"\n" +"Hak Cipta : Róbert Čerňanský dan John Lindgren\n" +"Lisensi: GNU GPLv3" #: src/aosd/aosd.cc:31 msgid "" @@ -527,6 +345,13 @@ "Based in part on Evan Martin's Ghosd library:\n" "http://neugierig.org/software/ghosd/" msgstr "" +"Audacious OSD\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"\n" +"Ditulis oleh Giacomo Lozito \n" +"\n" +"Sebagian didasarkan pada perpustakaan Ghosd Evan Martin:\n" +"http://neugierig.org/software/ghosd/" #: src/aosd/aosd.h:37 msgid "AOSD (On-Screen Display)" @@ -544,7 +369,7 @@ msgid "Concave Rectangle" msgstr "Persegi Bersudut Cekung" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Tidak ada" @@ -562,11 +387,11 @@ #: src/aosd/aosd_trigger.cc:56 msgid "Triggers OSD when the song title changes (for internet streams)." -msgstr "" +msgstr "Pemicu OSD ketika perubahan judul lagu (untuk stream internet)." #: src/aosd/aosd_trigger.cc:61 msgid "Pause On" -msgstr "Jedah hidup" +msgstr "Jedah" #: src/aosd/aosd_trigger.cc:62 msgid "Triggers OSD when playback is paused." @@ -580,94 +405,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Tampilkan OSD saat lagu diputar kembali." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Penempatan" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Mengimbangi X relatif:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Mengimbangi Y relatif:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Lebar tampilan destop" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Opsi Multi Monitor" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Menggunakan tampilan destop" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "Semua monitor" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "monitor %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "waktu (milidetik)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Tampilan:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Menghilang secara cepat:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Menghilang secara perlahan:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Huruf" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Huruf %i" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Bayangan" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Gaya Penggambaran" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Warna" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Warna %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Aktifkan pemicu" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Peristiwa" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Manajer komposisi terdeteksi" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -677,56 +502,56 @@ "kecuali kalau kamu tahu bahwa kamu punya satu yang berjalan, harap " "diaktifkan sebaliknya OSD tidak akan bekerja dengan baik" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Manajer komposisi tidak dibutuhkan untuk transparansi semu" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Transparansi" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Transparansi palsu" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Transparansi penuh (dibutuhkan Kompositor X)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Ekstensi komposisi tidak digunakan" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "OSD Audacious" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Posisi" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animasi" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "teks" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Dekorasi" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Pemicu" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Misc" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Uji coba" @@ -742,11 +567,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Daftar Putar Audacious (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Warna" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Blur Scope" @@ -758,6 +599,10 @@ msgid "Presets:" msgstr "Aturan baku:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Bawaan" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Tingkat suapan:" @@ -770,7 +615,7 @@ msgid "Cut frequency:" msgstr "Frekuensi potong:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Penelaah spektrum" @@ -867,65 +712,65 @@ msgid "Audio CD" msgstr "Audio CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Gagal membuka perangkat CD %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." -msgstr "" +msgstr "Tidak ditemukan drive CD berkemampuan audio." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Penggerak kosong." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Tipe diska tidak didukung." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." -msgstr "" +msgstr "Gagal menyelesaikan inisialisasi drive CD yang dibuka." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." -msgstr "" +msgstr "Gagal mengambil nomor trek pertama / terakhir. " -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." -msgstr "" +msgstr "Tidak dapat membaca LSN awal / akhir untuk trek 1%d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." -msgstr "" +msgstr "Gagal membuat koneksi CDDB." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" -msgstr "" +msgstr "Gagal membuat kueri ke server CDDB" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" -msgstr "" +msgstr "Gagal untuk query server CDDB:%s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" -msgstr "" +msgstr "Gagal membaca info CDDB: %s" #: src/cd-menu-items/cd-menu-items.cc:33 msgid "Audio CD Menu Items" -msgstr "" +msgstr "Item Menu CD Audio " #: src/cd-menu-items/cd-menu-items.cc:45 msgid "Pla_y CD" -msgstr "" +msgstr "Putar CD " #: src/cd-menu-items/cd-menu-items.cc:45 msgid "_Add CD" -msgstr "" +msgstr "_Tambahkan CD" #: src/compressor/compressor.cc:45 msgid "Compression" @@ -949,7 +794,7 @@ #: src/compressor/compressor.cc:64 msgid "Dynamic Range Compressor" -msgstr "" +msgstr "Dynamic Range Compressor" #: src/console/plugin.cc:15 msgid "" @@ -960,6 +805,12 @@ "William Pitcock \n" "Shay Green " msgstr "" +"Mesin dekoder musik konsol berdasarkan Game_Music_Emu 0.5.2\n" +"Format didukung: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"\n" +"Pengaya Audacious oleh:\n" +"William Pitcock \n" +"Shay Green " #: src/console/plugin.cc:30 msgid "Bass:" @@ -977,9 +828,16 @@ msgid "Default song length:" msgstr "Panjang standar lagu:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "detik" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" -msgstr "" +msgstr "Resampling" #: src/console/plugin.cc:43 msgid "Enable audio resampling" @@ -1003,9 +861,9 @@ #: src/coreaudio/coreaudio.cc:53 msgid "CoreAudio output" -msgstr "" +msgstr "Keluaran CoreAudio" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1016,14 +874,24 @@ "Based on SDL Output Plugin for Audacious\n" "Copyright 2010 John Lindgren" msgstr "" +"CoreAudio Output Plugin untuk Audacious\n" +"Hak Cipta 2014 William Pitcock\n" +"Hak Cipta 2017,18 René J.V. Bertin\n" +"(Kode asli dan kode yang diadaptasi dari\n" +"Apple examples, (C) Apple 2013)\n" +"\n" +"Berdasarkan Plugin Output SDL untuk Audacious\n" +"Hak Cipta 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Gunakan mode eksklusif" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" +"Gunakan audio yang sedikit sempurna (sesuaikan laju pengambilan sampel " +"perangkat)" #: src/crossfade/crossfade.cc:43 msgid "" @@ -1039,15 +907,15 @@ #: src/crossfade/crossfade.cc:48 msgid "On automatic song change" -msgstr "" +msgstr "Perubahan lagu otomatis" #: src/crossfade/crossfade.cc:50 src/crossfade/crossfade.cc:56 msgid "Overlap:" -msgstr "" +msgstr "Overlap:" #: src/crossfade/crossfade.cc:54 msgid "On seek or manual song change" -msgstr "" +msgstr "Saat mencari atau mengubah lagu manual" #: src/crossfade/crossfade.cc:60 msgid "Tip" @@ -1058,26 +926,28 @@ "For better crossfading, enable\n" "the Silence Removal effect." msgstr "" +"Untuk crossfading yang lebih baik, aktifkan \n" +"efek Penghapusan Diam. " #: src/crossfade/crossfade.cc:71 msgid "Crossfade" -msgstr "" +msgstr "Crossfade" #: src/crystalizer/crystalizer.cc:31 msgid "Crystalizer" -msgstr "" +msgstr "Crystalizer" #: src/crystalizer/crystalizer.cc:32 src/stereo_plugin/stereo.cc:45 msgid "Intensity:" -msgstr "" +msgstr "Intensitas:" #: src/crystalizer/crystalizer.cc:43 msgid "Crystalizer" -msgstr "" +msgstr "Crystalizer" #: src/cue/cue.cc:42 msgid "Cue Sheet Plugin" -msgstr "" +msgstr "Cue Sheet Plugin" #: src/delete-files/delete-files.cc:53 src/delete-files/delete-files.cc:215 #: src/delete-files/delete-files.cc:230 @@ -1116,22 +986,22 @@ msgid "Delete" msgstr "Hapus" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Batal" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Hapus Berkas Dipilih" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Metode Menghapus" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" -msgstr "" +msgstr "Pindahkan ke sampah alih-alih segera menghapus" #: src/echo_plugin/echo.cc:9 msgid "" @@ -1140,6 +1010,10 @@ "Surround echo by Carl van Schaik, 1999\n" "Updated for Audacious by William Pitcock and John Lindgren, 2010-2014" msgstr "" +"Echo Plugin\n" +"Oleh Johan Levin, 1999\n" +"Surround echo oleh Carl van Schaik, 1999\n" +"Diperbarui untuk Audacious oleh William Pitcock and John Lindgren, 2010-2014" #: src/echo_plugin/echo.cc:21 msgid "Echo" @@ -1151,7 +1025,7 @@ msgstr "Penundaan" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1167,11 +1041,11 @@ msgid "Echo" msgstr "Echo" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Pengaya FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1180,6 +1054,12 @@ "William Pitcock \n" "Matti Hämäläinen " msgstr "" +"Pengaya decoding audio multi-format untuk Audacious menggunakan\n" +"kerangka kerja multimedia FFmpeg (http://www.ffmpeg.org/)\n" +"\n" +"Pengaya Audacious oleh:\n" +"William Pitcock \n" +"Matti Hämäläinen " #: src/filewriter/filewriter.cc:48 msgid "FileWriter Plugin" @@ -1210,6 +1090,19 @@ "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" +"Program ini adalah perangkat lunak gratis; Anda dapat mendistribusikan ulang " +"dan/atau memodifikasinya di bawah ketentuan Lisensi Publik Umum GNU yang " +"diterbitkan oleh Free Software Foundation; baik versi 2 dari Lisensi, atau " +"(sesuai pilihan Anda) versi yang lebih baru.\n" +"\n" +"Program ini disebarluaskan dengan harapan dapat bermanfaat, namun TANPA " +"JAMINAN APAPUN; bahkan tanpa jaminan tersirat tentang KELAYAKAN " +"DIPERDAGANGKAN atau KESESUAIAN UNTUK TUJUAN TERTENTU. Lihat Lisensi Publik " +"Umum GNU untuk info lebih lanjut.\n" +"\n" +"Anda seharusnya telah menerima salinan GNU General Public License bersama " +"dengan program ini; jika tidak, kirim surat ke Free Software Foundation, " +"Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." #: src/filewriter/filewriter.cc:385 msgid "Output file format:" @@ -1221,11 +1114,11 @@ #: src/filewriter/filewriter.cc:392 msgid "Save into custom directory:" -msgstr "" +msgstr "Simpan ke direktori kustom: " #: src/filewriter/filewriter.cc:400 msgid "Generate file name from:" -msgstr "" +msgstr "Buat nama file dari:" #: src/filewriter/filewriter.cc:401 msgid "Original file name" @@ -1241,7 +1134,7 @@ #: src/filewriter/filewriter.cc:411 msgid "Prepend track number to file name" -msgstr "" +msgstr "Tambahkan nomor trek ke nama file" #: src/filewriter/filewriter.cc:417 src/filewriter/filewriter.cc:449 msgid "Auto" @@ -1275,76 +1168,76 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" +msgid "8 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" +msgid "16 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" +msgid "32 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" +msgid "40 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" +msgid "48 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" +msgid "56 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" +msgid "64 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" +msgid "80 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" +msgid "96 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" +msgid "112 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" +msgid "128 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" +msgid "160 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" +msgid "192 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" +msgid "224 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" +msgid "256 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" +msgid "320 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:450 @@ -1352,26 +1245,26 @@ msgstr "Gabung stereo" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" #: src/filewriter/filewriter.cc:456 msgid "VBR" -msgstr "" +msgstr "VBR" #: src/filewriter/filewriter.cc:457 msgid "ABR" -msgstr "" +msgstr "ABR" #: src/filewriter/filewriter.cc:478 msgid "Algorithm quality:" -msgstr "" +msgstr "Kualitas algoritma: " #: src/filewriter/filewriter.cc:484 msgid "Bitrate:" @@ -1387,7 +1280,7 @@ #: src/filewriter/filewriter.cc:501 msgid "Enforce strict ISO compliance" -msgstr "" +msgstr "Terapkan penyesuaian ISO yang ketat " #: src/filewriter/filewriter.cc:503 msgid "Error protection" @@ -1423,11 +1316,11 @@ #: src/filewriter/filewriter.cc:533 msgid "Omit Xing VBR header" -msgstr "" +msgstr "Abaikan header Xing VBR" #: src/filewriter/filewriter.cc:539 msgid "Frame Headers" -msgstr "" +msgstr "Frame Header" #: src/filewriter/filewriter.cc:540 msgid "Mark as copyright" @@ -1439,7 +1332,7 @@ #: src/filewriter/filewriter.cc:544 msgid "ID3 Tags" -msgstr "" +msgstr "Tag ID3" #: src/filewriter/filewriter.cc:545 msgid "Force addition of version 2 tag" @@ -1467,9 +1360,9 @@ #: src/filewriter/filewriter.cc:566 msgid "Quality (0-1):" -msgstr "" +msgstr "Kualitas (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Umum" @@ -1478,23 +1371,29 @@ msgid "FLAC Decoder" msgstr "Dekoder FLAC" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" -msgstr "" +msgstr "lossless" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" "\n" "http://www.skytale.net/projects/bmp-flac2/" msgstr "" +"Kode asli oleh\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" #: src/gio/gio.cc:34 msgid "" "GIO Plugin for Audacious\n" "Copyright 2009-2012 John Lindgren" msgstr "" +"GIO Plugin untuk Audacious\n" +"Hak Cipta 2009-2012 John Lindgren" #: src/gio/gio.cc:42 msgid "GIO Plugin" @@ -1502,13 +1401,13 @@ #: src/gio/gio.cc:152 msgid "Read-and-append mode not supported" -msgstr "" +msgstr "Mode baca-dan-tambahkan tidak didukung" #: src/gio/gio.cc:165 msgid "Invalid open mode" -msgstr "" +msgstr "Mode terbuka tidak valid " -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1519,117 +1418,143 @@ "\n" "License: GPLv2+" msgstr "" +"OpenGL Spectrum Analyzer untuk Audacious \n" +"Hak Cipta 2013 Christophe Budé, John Lindgren, dan Carlo Bramini\n" +"\n" +"Berdasarkan plugin XMMS:\n" +"Hak Cipta 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, dan " +"4Front Teknologi\n" +"\n" +"Lisensi: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" -msgstr "" - -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "Masukkan angka" +msgstr "OpenGL Spectrum Analyzer" #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "Nomor Masuk" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Judul" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Artis" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Tahun" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Album" -#: src/gtkui/columns.cc:40 -msgid "Album artist" -msgstr "" - #: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr "Album Artis" + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Track" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Aliran" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "Posisi antri" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "Posisi Antrian" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Panjang" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "Tempat Berkas" - -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Title pilihan" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "Lokasi File" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Nama File" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Title Pilihan" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Bitrate" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Komentar" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Kolom tersedia" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Tampilan kolom" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Alat Pencari" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Dok dikiri" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Dok dikanan" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Dok diatas" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Dok dibawah" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Tidak didok" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Nonaktifkan" @@ -1669,8 +1594,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Putar" @@ -1698,12 +1623,12 @@ #: src/gtkui/menus.cc:97 src/qtui/menus.cc:145 src/skins/menus.cc:114 #: src/skins-qt/menus.cc:105 msgid "Previous Album" -msgstr "" +msgstr "Album Sebelumnya" #: src/gtkui/menus.cc:98 src/qtui/menus.cc:146 src/skins/menus.cc:115 #: src/skins-qt/menus.cc:106 msgid "Next Album" -msgstr "" +msgstr "Album Berikutnya " #: src/gtkui/menus.cc:100 src/qtui/menus.cc:148 msgid "_Repeat" @@ -1740,15 +1665,15 @@ #: src/gtkui/menus.cc:110 src/qtui/menus.cc:165 msgid "Set Repeat Point _A" -msgstr "" +msgstr "Set Ulangi Titik _A" #: src/gtkui/menus.cc:111 src/qtui/menus.cc:167 msgid "Set Repeat Point _B" -msgstr "" +msgstr "Set Ulangi Titik _B" #: src/gtkui/menus.cc:112 src/qtui/menus.cc:169 msgid "_Clear Repeat Points" -msgstr "" +msgstr "_Hapus Poin Pengulangan" #: src/gtkui/menus.cc:116 src/gtkui/menus.cc:123 src/gtkui/menus.cc:140 #: src/qtui/menus.cc:173 src/qtui/menus.cc:180 src/qtui/menus.cc:197 @@ -1761,7 +1686,7 @@ #: src/gtkui/menus.cc:118 src/qtui/menus.cc:175 msgid "By File _Path" -msgstr "" +msgstr "Menurut Jalur File" #: src/gtkui/menus.cc:122 src/gtkui/menus.cc:139 src/qtui/menus.cc:179 #: src/qtui/menus.cc:196 @@ -1776,12 +1701,12 @@ #: src/gtkui/menus.cc:125 src/gtkui/menus.cc:142 src/qtui/menus.cc:182 #: src/qtui/menus.cc:199 msgid "By Al_bum" -msgstr "" +msgstr "Menurut Album" #: src/gtkui/menus.cc:126 src/gtkui/menus.cc:143 src/qtui/menus.cc:183 #: src/qtui/menus.cc:200 msgid "By Albu_m Artist" -msgstr "" +msgstr "Oleh Artis Album" #: src/gtkui/menus.cc:127 src/gtkui/menus.cc:144 src/qtui/menus.cc:184 #: src/qtui/menus.cc:201 @@ -1791,12 +1716,12 @@ #: src/gtkui/menus.cc:128 src/gtkui/menus.cc:145 src/qtui/menus.cc:185 #: src/qtui/menus.cc:202 msgid "By _Genre" -msgstr "" +msgstr "Menurut_Genre" #: src/gtkui/menus.cc:129 src/gtkui/menus.cc:146 src/qtui/menus.cc:186 #: src/qtui/menus.cc:203 msgid "By _Length" -msgstr "" +msgstr "Menurut _ Panjang " #: src/gtkui/menus.cc:130 src/gtkui/menus.cc:147 src/qtui/menus.cc:187 #: src/qtui/menus.cc:204 @@ -1811,7 +1736,7 @@ #: src/gtkui/menus.cc:132 src/gtkui/menus.cc:149 src/qtui/menus.cc:189 #: src/qtui/menus.cc:206 msgid "By C_omment" -msgstr "" +msgstr "Menurut Komen" #: src/gtkui/menus.cc:134 src/gtkui/menus.cc:151 src/qtui/menus.cc:191 #: src/qtui/menus.cc:208 @@ -1825,7 +1750,7 @@ #: src/gtkui/menus.cc:156 src/qtui/menus.cc:214 msgid "_Play/Resume" -msgstr "" +msgstr "Mainkan/Teruskan" #: src/gtkui/menus.cc:157 src/qtui/menus.cc:216 msgid "_Refresh" @@ -1837,28 +1762,28 @@ #: src/gtkui/menus.cc:160 src/qtui/menus.cc:221 msgid "Sort Se_lected" -msgstr "" +msgstr "Sortir yang Dipilih " #: src/gtkui/menus.cc:161 src/qtui/menus.cc:223 msgid "Remove _Duplicates" -msgstr "" +msgstr "Hapus_Duplikat " #: src/gtkui/menus.cc:162 src/qtui/menus.cc:224 msgid "Remove _Unavailable Files" -msgstr "" +msgstr "Hapus File _Tidak Tersedia" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Baru" #: src/gtkui/menus.cc:165 src/qtui/menus.cc:228 msgid "Ren_ame ..." -msgstr "" +msgstr "Ganti nama ..." #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "Hap_us" @@ -1872,7 +1797,7 @@ #: src/gtkui/menus.cc:171 src/qtui/menus.cc:235 msgid "Playlist _Manager ..." -msgstr "" +msgstr "Daftar Putar ... " #: src/gtkui/menus.cc:172 src/qtui/menus.cc:237 msgid "_Queue Manager ..." @@ -1888,19 +1813,19 @@ #: src/gtkui/menus.cc:179 src/qtui/menus.cc:247 msgid "_Equalizer ..." -msgstr "" +msgstr "_Ekualiser ... " #: src/gtkui/menus.cc:180 src/qtui/menus.cc:249 msgid "E_ffects ..." -msgstr "" +msgstr "Efek ... " #: src/gtkui/menus.cc:182 msgid "_Record Stream" -msgstr "" +msgstr "Rekam Stream " #: src/gtkui/menus.cc:183 msgid "Audio _Settings ..." -msgstr "" +msgstr "Pengaturan Audio ..." #: src/gtkui/menus.cc:187 src/qtui/menus.cc:258 msgid "Show _Menu Bar" @@ -1912,11 +1837,11 @@ #: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 msgid "Show Info Bar _Album Art" -msgstr "" +msgstr "Tampilkan Bilah Keterangan _Sampul Album" #: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 msgid "Show Info Bar Vis_ualization" -msgstr "" +msgstr "Tampilkan Bilah Info Vis_ualisasi" #: src/gtkui/menus.cc:191 src/qtui/menus.cc:266 msgid "Show _Status Bar" @@ -1924,7 +1849,7 @@ #: src/gtkui/menus.cc:193 src/qtui/menus.cc:270 msgid "Show _Remaining Time" -msgstr "" +msgstr "Tampilkan _Waktu Tersisa" #: src/gtkui/menus.cc:195 src/qtui/menus.cc:274 src/skins/menus.cc:157 #: src/skins-qt/menus.cc:152 @@ -1962,11 +1887,11 @@ #: src/gtkui/menus.cc:211 src/qtui/menus.cc:297 msgid "_Open Containing Folder" -msgstr "" +msgstr "_Buka Isi Folder" #: src/gtkui/menus.cc:212 src/qtui/menus.cc:299 msgid "_Refresh Selected" -msgstr "" +msgstr "_Segarkan Terpilih" #: src/gtkui/menus.cc:214 src/qtui/menus.cc:302 msgid "Cu_t" @@ -1982,242 +1907,250 @@ #: src/gtkui/menus.cc:217 src/qtui/menus.cc:305 msgid "Paste at _End" -msgstr "" +msgstr "Tempelkan di _Akhir" #: src/gtkui/menus.cc:218 src/qtui/menus.cc:307 msgid "Select _All" msgstr "Pilih _Semua" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Ubah nama ..." #: src/gtkui/settings.cc:35 src/qtui/settings.cc:63 msgid "Playlist Tabs" -msgstr "" +msgstr "Tabs Daftar Putar" #: src/gtkui/settings.cc:36 msgid "Always show tabs" -msgstr "" +msgstr "Selalu tampilkan tabs" #: src/gtkui/settings.cc:38 src/qtui/settings.cc:68 msgid "Show entry counts" -msgstr "" +msgstr "Tampilkan jumlah masukan" #: src/gtkui/settings.cc:40 src/qtui/settings.cc:71 msgid "Show close buttons" -msgstr "" +msgstr "Tampilkan tombol keluar" #: src/gtkui/settings.cc:42 src/qtui/settings.cc:74 msgid "Playlist Columns" -msgstr "" +msgstr "Kolom Daftar Putar" #: src/gtkui/settings.cc:44 src/qtui/settings.cc:76 msgid "Show column headers" +msgstr "Tampilkan judul kolom" + +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" msgstr "" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" -msgstr "" +msgstr "Gulir saat perubahan lagu" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Tampilan GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." -msgstr "" +msgstr "Memuat ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Putar" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Istirahat" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" -msgstr "" +msgstr "Cari Pustaka" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Buka Berkas" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Tambah Berkas" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Sebelumnya" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Berhenti" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Selanjutnya" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" -msgstr "" +msgstr "Rekam Stream" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Ulang" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Acak" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" -msgstr "" +msgstr "Menu" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d kanal" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" -msgstr "" +msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "mode Single." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "mode Playlist." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Berhenti setelah lagu" -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" -msgstr "" +msgstr "Trek sebelumnya" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Jeda/Mulai Lagi" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" -msgstr "" +msgstr "Trek selanjutnya" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" -msgstr "" +msgstr "Melangkah maju" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" -msgstr "" +msgstr "Melangkah mundur" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Diam" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" -msgstr "" +msgstr "Volume naik" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" -msgstr "" +msgstr "Volume turun" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Loncat ke berkas" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" -msgstr "" +msgstr "Beralih jendela pemutar" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Tunjukkan On-Screen-Display" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" -msgstr "" +msgstr "Beralih ulangi" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" -msgstr "" +msgstr "Beralih acak" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" -msgstr "" +msgstr "Beralih berhenti setelah ini" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" -msgstr "" +msgstr "Naikkan jendela pemutar" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(kosong)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" "Do you want to continue?" msgstr "" +"Tidak direkomendasikan untuk mengikat mouse utama tanpa modifikasi.\n" +"\n" +"Apakah anda ingin meneruskan?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Mengikat tombol mouse" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2225,25 +2158,25 @@ "Tekan kombinasi tombol didalam bidang teks.\n" "Kamu juga dapat mengikat tombol mouse." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Hotkeys:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Aksi:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Kunci Pengikat:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "T_ambah" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" -msgstr "" +msgstr "Hotkey Global" #: src/hotkey/plugin.cc:76 msgid "" @@ -2259,6 +2192,17 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Pengaya Hotkey Global\n" +"Kontrol pemutar dengan kombinasi tombol global atau tombol multimedia.\n" +"\n" +"Hak Cipta (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Kontributor termasuk:\n" +"Hak Cipta (C) 2006-2007 Vladimir Paskov \n" +"Hak Cipta (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " #: src/jack/jack-ng.cc:54 msgid "JACK Output" @@ -2266,55 +2210,57 @@ #: src/jack/jack-ng.cc:126 msgid "Client name:" -msgstr "" +msgstr "Nama klien:" #: src/jack/jack-ng.cc:128 msgid "Automatically connect to output ports" -msgstr "" +msgstr "Sambungkan port keluaran secara otomatis" #: src/jack/jack-ng.cc:130 msgid "Filter ports (regex, use any port if blank):" -msgstr "" +msgstr "Port filter (regex, gunakan port apapun bila kosong)" #: src/jack/jack-ng.cc:136 msgid "Connect to physical ports only" -msgstr "" +msgstr "Hanya sambungkan ke port fisik" #: src/jack/jack-ng.cc:139 msgid "Upmix to" -msgstr "" +msgstr "Upmix ke" #: src/jack/jack-ng.cc:141 msgid "ports if input has fewer channels" -msgstr "" +msgstr "port apabila masukan memiliki saluran lebih sedikit" #: src/jack/jack-ng.cc:143 msgid "Ignore insufficient number of ports" -msgstr "" +msgstr "Abaikan jumlah port yang tidak mencukupi" #: src/jack/jack-ng.cc:181 msgid "No JACK output ports were found. Please check settings." -msgstr "" +msgstr "Keluaran port JACK tidak ditemukan. Mohon cek pengaturan." #: src/jack/jack-ng.cc:195 #, c-format msgid "Only %d JACK output ports were found but %d are required." -msgstr "" +msgstr "Hanya %d keluaran JACK ditemukan tapi %d dibutuhkan." #: src/jack/jack-ng.cc:210 #, c-format msgid "Failed to connect to JACK port %s." -msgstr "" +msgstr "Gagal menyambung ke port JACK %s." #: src/jack/jack-ng.cc:230 msgid "" "JACK supports only floating-point audio. You must change the output bit " "depth to floating-point in Audacious settings." msgstr "" +"JACK hanya mendukung suara titik-mengambang. Anda harus mengubah kedalaman " +"bit keluaran menjadi titik-mengambang di pengaturan Audacious." #: src/jack/jack-ng.cc:245 msgid "Failed to connect to the JACK server; is it running?" -msgstr "" +msgstr "Gagal menyambung ke server JACK; apakah berjalan?" #: src/jack/jack-ng.cc:321 #, c-format @@ -2322,17 +2268,20 @@ "The JACK server requires a sample rate of %d Hz, but Audacious is playing at " "%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." msgstr "" +"Server JACK memerlukan tingkat sampel %d Hz, tapi Audacious memainkan pada " +"%d Hz. Mohon gunakan efek konversi tingkat sampel untuk memperbaiki " +"ketidakcocokan." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s Pengaturan" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Modul path:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2343,33 +2292,35 @@ "Setelah menambahkan path baru, tekan Enter untuk mengamati plugin baru." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Pengaya tersedia:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Gunakan" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Pengaya digunakan:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Pengaturan" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" msgstr "" +"Host LADSPA untuk Audacious\n" +"Hak Cipta 2011 John Lindgren" #: src/ladspa/plugin.h:78 msgid "LADSPA Host" -msgstr "" +msgstr "Host LADSPA" #: src/lirc/lirc.cc:55 msgid "LIRC Plugin" @@ -2390,6 +2341,19 @@ "\n" "For more information about LIRC, see http://lirc.org." msgstr "" +"Pengaya sederhana untuk mengontrol audacious menggunakan daemon pengendali " +"jarak jauh LIRC\n" +"\n" +"Disesuaikan untuk Audacious oleh:\n" +"Tony Vroon \n" +"Joonas Harjumäki \n" +"\n" +"Berdasarkan pengaya XMMS LIRC oleh:\n" +"Carl van Schaik \n" +"Christoph Bartelmus \n" +"Andrew O. Shadoura \n" +"\n" +"Untuk informasi lanjut tentang LIRC, lihat http://lirc.org." #: src/lirc/lirc.cc:390 msgid "Connection" @@ -2403,107 +2367,113 @@ msgid "Wait before reconnecting:" msgstr "Tunggu sebelum menyambung kembali:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" -msgstr "" +msgstr "Lirik" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" -msgstr "" +msgstr "Tidak kemana - mana" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" -msgstr "" +msgstr "lirik.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" -msgstr "" +msgstr "Artis terpotong di awal, Judul -- di akhir" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" -msgstr "" +msgstr "Karakter yang akan dipotong:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" +"Karakternya adalah ORed di RegExp, dikelilingi oleh spasi putih" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" -msgstr "" +msgstr "Karakter yang akan dipisah:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" -msgstr "" +msgstr "Potong lebih lanjut yang ada di karakter" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" -msgstr "" +msgstr "Umum" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" +msgstr "Pisahkan judul menjadi artis dan judul pada karakter" + +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" -msgstr "" +msgstr "Simpan lirik yang diambil dari cache lokal" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" -msgstr "" +msgstr "Penyimpanan lokal" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" -msgstr "" +msgstr "Muat file lirik (.lrc) dari penyimpanan lokal" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" -msgstr "" +msgstr "Tidak dapat mengambil %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" -msgstr "" +msgstr "Tidak dapat menguraikan %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Mencari lirik ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Kesalahan" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." -msgstr "" +msgstr "Lirik tidak dapat ditemukan." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." -msgstr "" +msgstr "Judul dan/atau artis tidak ada." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" -msgstr "" +msgstr "Simpan Secara Lokal." -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" -msgstr "" +msgstr "Segarkan" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "Daftar Putar M3U" #: src/metronom/metronom.cc:44 msgid "Tact Generator" -msgstr "" +msgstr "Generator Tact" #: src/metronom/metronom.cc:145 #, c-format @@ -2523,20 +2493,27 @@ "e.g. tact://77 to play 77 beats per minute\n" "or tact://60*3/4 to play 60 bpm in 3/4 tacts" msgstr "" +"Generator Tact oleh Martin Strauss \n" +"\n" +"Untuk menggunakan, tambah URL: tact://beats*num/den\n" +"e.g. tact://77 untuk memainkan 77 ketukan per menit\n" +"or tact://60*3/4 untuk memainkan 60 ketukan di 3/4 tacts" #: src/mixer/mixer.cc:43 msgid "Channel Mixer" -msgstr "" +msgstr "Pencampur Saluran" #: src/mixer/mixer.cc:255 msgid "" "Channel Mixer Plugin for Audacious\n" "Copyright 2011-2012 John Lindgren and Michał Lipski" msgstr "" +"Pengaya Pencampur Saluran untuk Audacious\n" +"Hak Cipta 2011-2012 John Lindgren dan Michał Lipski" #: src/mixer/mixer.cc:259 msgid "Channel Mixer" -msgstr "" +msgstr "Pencampur Saluran" #: src/mixer/mixer.cc:260 msgid "Output channels:" @@ -2548,11 +2525,11 @@ #: src/mms/mms.cc:82 msgid "Error connecting to MMS server" -msgstr "" +msgstr "Kesalahan saat menyambung ke server MMS" #: src/modplug/modplugbmp.h:57 msgid "ModPlug (Module Player)" -msgstr "" +msgstr "ModPlug (Pemutar Modul)" #: src/modplug/plugin_main.cc:55 msgid "Channels" @@ -2560,138 +2537,114 @@ #: src/modplug/plugin_main.cc:59 msgid "Nearest (fastest)" -msgstr "" +msgstr "Terdekat (tercepat)" #: src/modplug/plugin_main.cc:60 msgid "Linear (fast)" -msgstr "" +msgstr "Linier (cepat)" #: src/modplug/plugin_main.cc:61 msgid "Spline (good)" -msgstr "" +msgstr "Splin (baik)" #: src/modplug/plugin_main.cc:62 msgid "Polyphase (best)" -msgstr "" +msgstr "Polifase (terbaik)" #: src/modplug/plugin_main.cc:63 msgid "Sample rate" -msgstr "" +msgstr "Tingkat sampel" #: src/modplug/plugin_main.cc:64 msgid "22 kHz" -msgstr "" +msgstr "22 kHz" #: src/modplug/plugin_main.cc:65 msgid "44 kHz" -msgstr "" +msgstr "44 kHz" #: src/modplug/plugin_main.cc:66 msgid "48 kHz" -msgstr "" +msgstr "48 kHz" #: src/modplug/plugin_main.cc:67 msgid "96 kHz" -msgstr "" +msgstr "96 kHz" #: src/modplug/plugin_main.cc:71 src/modplug/plugin_main.cc:76 #: src/modplug/plugin_main.cc:81 msgid "Level:" -msgstr "" +msgstr "Tingkat:" #: src/modplug/plugin_main.cc:77 msgid "Cutoff:" -msgstr "" +msgstr "Memotong:" #: src/modplug/plugin_main.cc:90 msgid "Reverb" -msgstr "" +msgstr "Berkumandang" #: src/modplug/plugin_main.cc:93 msgid "Bass Boost" -msgstr "" +msgstr "Peningkatan Bass" #: src/modplug/plugin_main.cc:96 msgid "Surround" -msgstr "" +msgstr "Mengelilingi" #: src/modplug/plugin_main.cc:99 msgid "Preamp" -msgstr "" +msgstr "Preamp" #: src/modplug/plugin_main.cc:106 msgid "Oversample" -msgstr "" +msgstr "Sampel berlebih" #: src/modplug/plugin_main.cc:107 msgid "Noise reduction" -msgstr "" +msgstr "Pengurangan kebisingan" #: src/modplug/plugin_main.cc:108 msgid "Play Amiga MODs" -msgstr "" +msgstr "Mainkan MODs Amiga" #: src/modplug/plugin_main.cc:109 msgid "Repeat" -msgstr "" +msgstr "Ulang" #: src/modplug/plugin_main.cc:110 msgid "Repeat count:" -msgstr "" +msgstr "Jumlah pengulangan:" #: src/modplug/plugin_main.cc:111 msgid "To repeat forever, set the repeat count to -1." -msgstr "" +msgstr "Untuk mengulang selamanya, setel hitungan pengulangan ke -1." #: src/modplug/plugin_main.cc:124 src/sid/xs_config.cc:106 msgid "These settings will take effect when Audacious is restarted." -msgstr "" +msgstr "Pengaturan ini akan berlaku saat Audacious dimulai ulang." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Stop Setelah Lagu Ini" #: src/moonstone/moonstone.cc:39 msgid "Moonstone" -msgstr "" +msgstr "Moonstone" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" -msgstr "" +msgstr "Setel ulang ke Bawaan" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Sedang Diputar" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Album Artis" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Masukan" @@ -2705,9 +2658,9 @@ #: src/mpg123/mpg123.cc:82 msgid "Use accurate length calculation (slow)" -msgstr "" +msgstr "Gunakan perhitungan panjang yang akurat (lambat)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Surround" @@ -2721,19 +2674,19 @@ #: src/neon/neon.cc:526 msgid "Error parsing redirect" -msgstr "" +msgstr "Kesalahan penguraian pengalihan" #: src/neon/neon.cc:540 msgid "Unknown HTTP error" -msgstr "" +msgstr "Kesalahan HTTP tidak diketahui" #: src/neon/neon.cc:590 msgid "Error parsing URL" -msgstr "" +msgstr "Kesalahan saat menguraikan URL" #: src/neon/neon.cc:660 msgid "Too many redirects" -msgstr "" +msgstr "Terlalu banyak pengalihan" #: src/notify/event.cc:97 msgid "Stopped" @@ -2766,73 +2719,102 @@ "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" +"Pengaya Pemberitahuan Desktop Untuk Audacious\n" +"Hak Cipta (C) 2010 Maximilian Bogner\n" +"Hak Cipta (C) 2011-2013 John Lindgren dan Jean-Alexandre Anglès d'Auriac\n" +"\n" +"Plugin ini adalah perangkat lunak gratis: Anda dapat mendistribusikannya " +"kembali dan/atau memodifikasinya di bawah ketentuan Lisensi Publik Umum GNU " +"yang diterbitkan oleh Free Software Foundation, baik versi 3 dari Lisensi, " +"atau (sesuai pilihan Anda) versi yang lebih baru.\n" +"\n" +"Plugin ini disebarluaskan dengan harapan dapat bermanfaat, tapi TANPA " +"JAMINAN APAPUN; bahkan tanpa jaminan tersirat tentang KELAYAKAN " +"DIPERDAGANGKAN atau KESESUAIAN UNTUK TUJUAN TERTENTU. Lihat Lisensi Publik " +"Umum GNU untuk keterangan lebih lanjut.\n" +"\n" +"Anda seharusnya telah menerima salinan Lisensi Publik Umum GNU bersama " +"dengan program ini. Jika tidak, lihat . " #: src/notify/notify.cc:104 msgid "Show playback controls" -msgstr "" +msgstr "Tampilkan kontrol pemutaran" #: src/notify/notify.cc:106 msgid "Always show notification" -msgstr "" +msgstr "Selalu tampilkan notifikasi" #: src/notify/notify.cc:108 msgid "Include album name in notification" -msgstr "" +msgstr "Sertakan nama album di notifikasi" #: src/notify/notify.cc:110 msgid "Custom notification duration:" -msgstr "" +msgstr "Durasi pemberitahuan khusus:" #: src/notify/osd.cc:74 msgid "Show" -msgstr "" +msgstr "Tunjukkan" #: src/openmpt/mpt.cc:50 msgid "OpenMPT (Module Player)" -msgstr "" +msgstr "OpenMPT (Pemutar Modul)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" +"Pemutar modul berdasarkan libopenmpt\n" +"\n" +"Ditulis oleh: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" -msgstr "" +msgstr "Pemisahan stereo:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" -msgstr "" +msgstr "Interpolasi:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" -msgstr "" +msgstr "Linier" #: src/openmpt/mptwrap.h:52 msgid "Cubic" -msgstr "" +msgstr "Kubik" #: src/openmpt/mptwrap.h:53 msgid "Windowed sinc" +msgstr "Berjendela sinc" + +#: src/opus/opus.cc:39 +msgid "Opus Decoder" msgstr "" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "Keluaran OSS4" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" -msgstr "" +msgstr "Keluaran OSS3" #: src/oss4/plugin.cc:35 msgid "Default device" -msgstr "" +msgstr "Perangkat bawaan" #: src/oss4/plugin.cc:78 msgid "Audio device:" @@ -2844,7 +2826,7 @@ #: src/oss4/plugin.cc:85 msgid "Save volume between sessions." -msgstr "" +msgstr "Simpan volume antar sesi." #: src/oss4/plugin.cc:87 msgid "Enable format conversions made by the OSS software." @@ -2852,7 +2834,7 @@ #: src/oss4/plugin.cc:89 msgid "Enable exclusive mode to prevent virtual mixing." -msgstr "" +msgstr "Aktifkan mode eksklusif untuk mencegah pencampuran virtual." #: src/oss4/plugin.cc:101 msgid "" @@ -2862,49 +2844,72 @@ "I would like to thank people on #audacious, especially Tony Vroon and John " "Lindgren and of course the authors of the previous OSS plugin." msgstr "" +"Pengaya Keluaran OSS4 untuk Audacious\n" +"Hak Cipta 2010-2012 Michał Lipski\n" +"\n" +"Saya ingin mengucapkan terima kasih kepada orang-orang di #audacious, " +"terutama Tony Vroon dan John Lindgren dan tentu saja penulis plugin OSS " +"sebelumnya." + +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Putar Lagu" -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Manajer Daftar Main" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Hapus" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "Ganti N_ama" #: src/pls/pls.cc:35 msgid "PLS Playlists" -msgstr "" +msgstr "Daftar Putar PLS" #: src/psf/plugin.cc:53 msgid "OpenPSF PSF1/PSF2 Decoder" -msgstr "" +msgstr "OpenPSF PSF1/PSF2 Decoder" #: src/psf/plugin.cc:270 msgid "OpenPSF Configuration" -msgstr "" +msgstr "Konfigurasi OpenPSF" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Abaikan panjang dari berkas" #: src/pulse/pulse_audio.cc:42 msgid "PulseAudio Output" -msgstr "" +msgstr "Keluaran PulseAudio" #: src/pulse/pulse_audio.cc:72 msgid "Context name:" -msgstr "" +msgstr "Nama konteks:" #: src/pulse/pulse_audio.cc:74 msgid "Stream name:" -msgstr "" +msgstr "Nama aliran:" #: src/pulse/pulse_audio.cc:575 msgid "" @@ -2924,10 +2929,25 @@ "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" +"Pengaya Audacious Keluaran PulseAudio\n" +"\n" +"Program ini adalah perangkat lunak gratis; Anda dapat mendistribusikan ulang " +"dan/atau memodifikasinya di bawah ketentuan Lisensi Publik Umum GNU yang " +"diterbitkan oleh Free Software Foundation; baik versi 2 dari Lisensi, atau " +"(sesuai pilihan Anda) versi yang lebih baru.\n" +"\n" +"Program ini disebarluaskan dengan harapan dapat bermanfaat, namun TANPA " +"JAMINAN APAPUN; bahkan tanpa jaminan tersirat tentang KELAYAKAN " +"DIPERDAGANGKAN atau KESESUAIAN UNTUK TUJUAN TERTENTU. Lihat Lisensi Publik " +"Umum GNU untuk info lebih lanjut.\n" +"\n" +"Anda seharusnya telah menerima salinan GNU General Public License bersama " +"dengan program ini; jika tidak, kirim surat ke Free Software Foundation, " +"Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." #: src/qtaudio/qtaudio.cc:44 msgid "QtMultimedia Output" -msgstr "" +msgstr "Keluaran QtMultimedia" #: src/qtaudio/qtaudio.cc:72 msgid "" @@ -2937,6 +2957,11 @@ "Based on SDL Output Plugin for Audacious\n" "Copyright 2010 John Lindgren" msgstr "" +"Pengaya Keluaran QtMultimedia Audio untuk Audacious\n" +"Hak Cipta 2014 William Pitcock\n" +"\n" +"Berdasarkan Pengaya Keluaran SDL untuk Audacious\n" +"Hak Cipta 2010 John Lindgren" #: src/qtglspectrum/gl-spectrum.cc:41 msgid "" @@ -2950,12 +2975,21 @@ "\n" "License: GPLv2+" msgstr "" +"OpenGL Spectrum Analyzer untuk Audacious\n" +"Hak Cipta 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" +"Hak Cipta 2014, 2020 Ariadne Conill\n" +"\n" +"Berdasarkan Pengaya XMMS:\n" +"Hak Cipta 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, and " +"4Front Technologies\n" +"\n" +"Lisensi: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." -msgstr "" +msgstr "Tekan kombinasi tombol di dalam bidang teks." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -2970,96 +3004,114 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Pengaya Hotkey Global\n" +"Kontrol pemutar dengan kombinasi tombol global atau tombol multimedia.\n" +"\n" +"Hak Cipta (C) 2020 i.Dark_Templar \n" +"Hak Cipta (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Kontributor termasuk:\n" +"Hak Cipta (C) 2006-2007 Vladimir Paskov \n" +"Hak Cipta (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " #: src/qtui/menus.cc:109 msgid "_Open Folder ..." -msgstr "" +msgstr "_Buka Folder ..." #: src/qtui/menus.cc:115 msgid "_Add Folder ..." -msgstr "" +msgstr "_Tambah Folder ..." #: src/qtui/menus.cc:128 msgid "_Log Inspector ..." -msgstr "" +msgstr "_Pemantau log ..." #: src/qtui/menus.cc:218 msgid "_Find ..." -msgstr "" +msgstr "_Cari ..." #: src/qtui/menus.cc:254 src/skins/menus.cc:80 src/skins-qt/menus.cc:70 msgid "Audio Settings ..." -msgstr "" +msgstr "Pengaturan Audio ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" -msgstr "" +msgstr "Q#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" +msgstr "T#" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" msgstr "" #: src/qtui/qtui.cc:40 msgid "Qt Interface" -msgstr "" +msgstr "Tampilan Qt" #: src/qtui/search_bar.cc:46 msgid "Search playlist" -msgstr "" +msgstr "Cari daftar lagu" #: src/qtui/settings.cc:58 msgid "Always" -msgstr "" +msgstr "Selalu" #: src/qtui/settings.cc:59 msgid "Auto-hide" -msgstr "" +msgstr "Sembunyikan otomatis" #: src/qtui/settings.cc:60 msgid "Never" -msgstr "" +msgstr "Tidak pernah" #: src/qtui/settings.cc:64 msgid "Show playlist tabs:" -msgstr "" +msgstr "Tampilkan tab daftar lagu:" #: src/qtui/settings.cc:78 msgid "Use bold font for column headers" -msgstr "" +msgstr "Gunakan font tebal untuk judul kolom" #: src/resample/resample.cc:43 msgid "Sample Rate Converter" -msgstr "" +msgstr "Konverter Tingkat Sampel" #: src/resample/resample.cc:183 msgid "" "Sample Rate Converter Plugin for Audacious\n" "Copyright 2010-2012 John Lindgren" msgstr "" +"Pengaya Konverter Tingkat Sampel untuk Audacious\n" +"Hak Cipta 2010-2012 John Lindgren" #: src/resample/resample.cc:187 msgid "Skip/repeat samples" -msgstr "" +msgstr "Lewati/ulangi sampel" #: src/resample/resample.cc:188 msgid "Linear interpolation" -msgstr "" +msgstr "Interpolasi linier" #: src/resample/resample.cc:189 msgid "Fast sinc interpolation" -msgstr "" +msgstr "Interpolasi sinc cepat" #: src/resample/resample.cc:190 msgid "Medium sinc interpolation" -msgstr "" +msgstr "Interpolasi sinkronisasi menengah" #: src/resample/resample.cc:191 msgid "Best sinc interpolation" -msgstr "" +msgstr "Interpolasi sinkronisasi terbaik" #: src/resample/resample.cc:195 msgid "Conversion" -msgstr "" +msgstr "Konversi" #: src/resample/resample.cc:196 msgid "Method:" @@ -3067,15 +3119,15 @@ #: src/resample/resample.cc:199 src/soxr/sox-resampler.cc:203 msgid "Rate:" -msgstr "" +msgstr "Kecepatan:" #: src/resample/resample.cc:202 msgid "Rate Mappings" -msgstr "" +msgstr "Pemetaan Kecepatan" #: src/resample/resample.cc:203 msgid "Use rate mappings" -msgstr "" +msgstr "Gunakan pemetaan kecepatan" #: src/resample/resample.cc:205 msgid "8 kHz:" @@ -3119,40 +3171,46 @@ #: src/scrobbler2/config_window.cc:19 msgid "Checking Last.fm access ..." -msgstr "" +msgstr "Memeriksa akses Last.fm ..." #: src/scrobbler2/config_window.cc:27 msgid "" "Your scrobbles are being saved on your computer temporarily. They will be " "submitted as soon as Audacious is allowed access." msgstr "" +"Scrobble Anda sedang disimpan di komputer Anda untuk sementara. Mereka akan " +"dikirimkan setelah Audacious diizinkan akses." #: src/scrobbler2/config_window.cc:33 #, c-format msgid "Permission granted. Scrobbling for user %s." -msgstr "" +msgstr "Izin diberikan. Scrobbling untuk pengguna %s." #: src/scrobbler2/config_window.cc:37 msgid "" "Permission denied. Open the following URL in a browser, allow Audacious " "access to your account, and then click 'Check Permission' again:" msgstr "" +"Izin ditolak. Buka URL berikut di peramban, izinkan Audacious untuk " +"mengakses akun Anda, lalu klik 'Periksa Izin' lagi:" #: src/scrobbler2/config_window.cc:47 msgid "There was a problem contacting Last.fm." -msgstr "" +msgstr "Terjadi masalah saat menghubungi Last.fm." #: src/scrobbler2/config_window.cc:86 msgid "Check Permission" -msgstr "" +msgstr "Cek Izin" #: src/scrobbler2/config_window.cc:87 msgid "Revoke Permission" -msgstr "" +msgstr "Cabut Izin" #: src/scrobbler2/config_window.cc:91 msgid "You need to allow Audacious to scrobble tracks to your Last.fm account." msgstr "" +"Anda harus mengizinkan Audacious untuk mengscrobble trek ke akun Last.fm " +"Anda." #: src/scrobbler2/scrobbler.cc:29 msgid "Scrobbler 2.0" @@ -3163,6 +3221,8 @@ "The Scrobbler plugin could not be started.\n" "There might be a problem with your installation." msgstr "" +"Pengaya Scrobbler tidak dapat dimulai.\n" +"Mungkin ada masalah dengan instalasi Anda." #: src/scrobbler2/scrobbler.cc:291 msgid "" @@ -3174,177 +3234,193 @@ "project.\n" "\n" msgstr "" +"Pengaya Scrobbler Audacious 2.0 oleh Pitxyoki,\n" +"\n" +"Hak Cipta © 2012-2013 Luís M. Picciochi Oliveira \n" +"\n" +"Terima kasih kepada John Lindgren karena telah membantu saya di awal proyek " +"ini.\n" +"\n" #: src/scrobbler2/scrobbler_communication.cc:663 msgid "" "Audacious is now using an improved version of the Last.fm Scrobbler.\n" "Please check the Preferences for the Scrobbler plugin." msgstr "" +"Audacious sekarang sedang menggunakan versi yang disempurnakan dari Last.fm " +"Scrobbler.\n" +"Mohon periksa Setelan untuk pengaya Scrobbler. " #: src/sdlout/sdlout.cc:43 msgid "SDL Output" -msgstr "" +msgstr "Keluaran SDL" #: src/sdlout/sdlout.cc:72 msgid "" "SDL Output Plugin for Audacious\n" "Copyright 2010 John Lindgren" msgstr "" +"Pengaya Keluaran SDL untuk Audacious\n" +"Hak Cipta 2010 John Lindgren" #: src/search-tool/library.cc:35 src/search-tool/library.cc:46 #: src/search-tool-qt/library.cc:35 src/search-tool-qt/library.cc:46 msgid "Library" msgstr "Pustaka" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" -msgstr[0] "" +msgstr[0] "%d lagu" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" -msgstr "" +msgstr "dari aliran ini" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" -msgstr "" +msgstr "di" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" -msgstr "" +msgstr "oleh" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" -msgstr "" +msgstr "Jumlah hasil untuk ditampilkan:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" -msgstr "" +msgstr "Pindai ulang pustaka saat aplikasi dimulai" #: src/search-tool-qt/search-tool-qt.cc:170 msgid "Monitor library for changes" -msgstr "" +msgstr "Pantau pustaka untuk perubahan" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." msgstr "" +"Untuk mengimpor pusaka musik Anda ke Audacious, pilih folder, lalu klik ikon " +"\"segarkan\"." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Mohon tunggu ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Pilih Folder" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Cari pustaka" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" -msgstr[0] "" +msgstr[0] "%d dari %d hasil ditampilkan" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" -msgstr[0] "" +msgstr[0] "%d hasil" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Buat Daftar Putar" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Tambah ke Daftar Putar" #: src/sid/xmms-sid.cc:43 msgid "SID Player" -msgstr "" +msgstr "Pemutar SID" #: src/sid/xs_config.cc:62 msgid "Channels:" -msgstr "" +msgstr "Saluran:" #: src/sid/xs_config.cc:68 msgid "Emulation" -msgstr "" +msgstr "Emulasi" #: src/sid/xs_config.cc:69 msgid "Emulate MOS 8580 (default: MOS 6581)" -msgstr "" +msgstr "Emulasi MOS 8580 (bawaan: MOS 6581)" #: src/sid/xs_config.cc:71 msgid "Do not automatically select chip model" -msgstr "" +msgstr "Jangan pilih model chip secara otomatis" #: src/sid/xs_config.cc:73 msgid "Emulate filter" -msgstr "" +msgstr "Emulasi filter" #: src/sid/xs_config.cc:75 msgid "Clock speed:" -msgstr "" +msgstr "Kecepatan jam:" #: src/sid/xs_config.cc:78 msgid "Do not automatically select clock speed" -msgstr "" +msgstr "Jangan pilih kecepatan jam secara otomatis" #: src/sid/xs_config.cc:80 msgid "Playback time" -msgstr "" +msgstr "Waktu Pemutaran" #: src/sid/xs_config.cc:81 msgid "Set maximum playback time:" -msgstr "" +msgstr "Setel waktu pemutaran maksimum:" #: src/sid/xs_config.cc:87 msgid "Use only when song length is unknown" -msgstr "" +msgstr "Gunakan hanya ketika panjang lagu tidak diketahui" #: src/sid/xs_config.cc:90 msgid "Set minimum playback time:" -msgstr "" +msgstr "Setel waktu pemutaran minimum:" #: src/sid/xs_config.cc:96 msgid "Subtunes" -msgstr "" +msgstr "Subtunes" #: src/sid/xs_config.cc:97 msgid "Enable subtunes" -msgstr "" +msgstr "Aktifkan subtunes" #: src/sid/xs_config.cc:99 msgid "Ignore subtunes shorter than:" -msgstr "" +msgstr "Abaikan subtunes yang lebih pendek dari:" #: src/sid/xs_config.cc:105 msgid "Note" -msgstr "" +msgstr "Catatan" #: src/silence-removal/silence-removal.cc:39 msgid "Silence Removal" -msgstr "" +msgstr "Penghapusan Keheningan" #: src/silence-removal/silence-removal.cc:58 msgid "" "Silence Removal Plugin for Audacious\n" "Copyright 2014 John Lindgren" msgstr "" +"Pengaya Penghapusan Keheningan untuk Audacious\n" +"Hak Cipta 2014 John Lindgren" #: src/silence-removal/silence-removal.cc:67 msgid "Silence Removal" -msgstr "" +msgstr "Penghapusan Keheningan" #: src/silence-removal/silence-removal.cc:68 msgid "Threshold:" -msgstr "" +msgstr "Ambang:" #: src/silence-removal/silence-removal.cc:70 msgid "dB" @@ -3352,120 +3428,120 @@ #: src/skins/actions.cc:45 src/skins-qt/actions.cc:43 msgid "Repeat points cleared." -msgstr "" +msgstr "Titik ulangi dihapus." #: src/skins/actions.cc:60 src/skins-qt/actions.cc:58 msgid "Repeat point A set." -msgstr "" +msgstr "Ulangi titik A set." #: src/skins/actions.cc:65 src/skins-qt/actions.cc:63 msgid "Repeat point B set." -msgstr "" +msgstr "Ulangi titik B set." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Preamp" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Audacious Equalizer" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" -msgstr "" +msgstr "Rekaman aktif" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" -msgstr "" +msgstr "Rekaman mati" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Berusaha untuk %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Volume: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Keseimbangan: %d%% left" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Keseimbangan: tengah" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Keseimbangan: %d%% kanan" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Menu Opsi" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Nonaktifkan 'Always On Top'" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Bolehkan 'Always On Top'" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Kotak Info Berkas" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" -msgstr "" +msgstr "Ukuran ganda" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" -msgstr "" +msgstr "Visualisasi" #: src/skins/menus.cc:74 src/skins-qt/menus.cc:64 msgid "Volume Up" @@ -3477,7 +3553,7 @@ #: src/skins/menus.cc:77 src/skins-qt/menus.cc:67 msgid "Effects ..." -msgstr "" +msgstr "Efek ..." #: src/skins/menus.cc:84 src/skins-qt/menus.cc:74 msgid "Open Files ..." @@ -3487,17 +3563,13 @@ msgid "Open URL ..." msgstr "Buka URL...." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Putar Lagu" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Daftar Putar" #: src/skins/menus.cc:90 src/skins-qt/menus.cc:81 msgid "Output" -msgstr "" +msgstr "Keluaran" #: src/skins/menus.cc:91 src/skins-qt/menus.cc:82 msgid "View" @@ -3505,7 +3577,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Servis" @@ -3522,13 +3594,13 @@ msgstr "Keluar" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Info Lagu" #: src/skins/menus.cc:105 src/skins-qt/menus.cc:96 msgid "Shuffle by Album" -msgstr "" +msgstr "Acak sebagai Album" #: src/skins/menus.cc:106 src/skins-qt/menus.cc:97 msgid "No Playlist Advance" @@ -3536,13 +3608,13 @@ #: src/skins/menus.cc:117 src/skins-qt/menus.cc:108 msgid "Set A-B Repeat" -msgstr "" +msgstr "Atur Ulangan A-B" #: src/skins/menus.cc:118 src/skins-qt/menus.cc:109 msgid "Clear A-B Repeat" -msgstr "" +msgstr "Hapus Ulangan A-B" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Lompat ke Lagu ..." @@ -3552,7 +3624,7 @@ #: src/skins/menus.cc:125 src/skins-qt/menus.cc:118 msgid "Play/Resume" -msgstr "" +msgstr "Mainkan/Lanjutkan" #: src/skins/menus.cc:127 src/skins-qt/menus.cc:120 msgid "New Playlist" @@ -3588,7 +3660,7 @@ #: src/skins/menus.cc:138 src/skins-qt/menus.cc:131 msgid "Queue Manager ..." -msgstr "" +msgstr "Manajer antrian ..." #: src/skins/menus.cc:140 src/skins-qt/menus.cc:133 msgid "Refresh Playlist" @@ -3604,7 +3676,7 @@ #: src/skins/menus.cc:147 src/skins-qt/menus.cc:140 msgid "Show Remaining Time" -msgstr "" +msgstr "Tampilkan Waktu Tersisa" #: src/skins/menus.cc:150 src/skins-qt/menus.cc:143 msgid "Always on Top" @@ -3612,19 +3684,19 @@ #: src/skins/menus.cc:151 src/skins-qt/menus.cc:145 msgid "On All Workspaces" -msgstr "" +msgstr "Di Semua Ruang Kerja" #: src/skins/menus.cc:153 src/skins-qt/menus.cc:148 msgid "Roll Up Player" -msgstr "" +msgstr "Gulung Player keatas" #: src/skins/menus.cc:154 src/skins-qt/menus.cc:149 msgid "Roll Up Playlist Editor" -msgstr "" +msgstr "Gulung Editor Daftar Putar keatas" #: src/skins/menus.cc:155 src/skins-qt/menus.cc:150 msgid "Roll Up Equalizer" -msgstr "" +msgstr "Gulung Equalizer keatas" #: src/skins/menus.cc:163 src/skins-qt/menus.cc:158 msgid "Add URL ..." @@ -3635,20 +3707,20 @@ msgstr "Tambah Berkas ..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Dari Judul" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" -msgstr "" +msgstr "Menurut Nama File" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Oleh Path Berkas" @@ -3676,113 +3748,113 @@ msgid "Remove Selected" msgstr "Hapus Yang Dipilih" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Cari dan Pilih" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Balik Pilihan" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Jangan Pilih Apapun" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Pilih Semua" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Oleh Nomor Trek" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Dari Artis" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Dari Album" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" -msgstr "" +msgstr "Menurut Artis album" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Oleh Tanggal Rilis" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" -msgstr "" +msgstr "Menurut Genre" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" -msgstr "" +msgstr "Menurut Panjang" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" -msgstr "" +msgstr "Menurut Judul Pilihan" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" -msgstr "" +msgstr "Menurut Komen" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Acak Daftar" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Balikkan Daftar" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Urutkan yang Terpilih" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Urutkan Daftar" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" -msgstr "" +msgstr "Buka Isi Folder" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Potong" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Salin" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Tempel" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" -msgstr "" +msgstr "Tempelkan di Akhir" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" -msgstr "" +msgstr "Antre/Tidak Antre" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d of %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Audacious Daftar Putar Editor" @@ -3792,173 +3864,225 @@ #: src/skins-qt/menus.cc:75 msgid "Open Folder ..." -msgstr "" +msgstr "Buka Folder ..." #: src/skins-qt/menus.cc:159 msgid "Add Folder ..." +msgstr "Tambah Folder ..." + +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Cari catatan di daftar putar aktif" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." msgstr "" +"Pilih entri dalam daftar putar dengan mengisi satu atau lebih bidang. Fields " +"menggunakan ekspresi reguler sintaks, case-insensitive. Jika Anda tidak tahu " +"bagaimana ekspresi reguler bekerja, cukup memasukkan sebagian literal dari " +"apa yang Anda cari." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Judul:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Album: " + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Artis: " + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Nama File:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Hapus pilihan sebelumnya sebelum mencari" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Beralih antrean secara otomatis untuk entri yang cocok" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Buat daftar putar baru dengan mencocokan entri" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Cari" -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" -msgstr "" +msgstr "Pemain:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Pilih font jendela player utama:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" -msgstr "" +msgstr "Daftar Putar:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Pilih huruf daftar putar" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Kulit" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Fonts" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Gunakan huruf bitmap (hanya dukungan ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" -msgstr "" +msgstr "Gulir judul lagu" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Gulir judul lagu dalam kedua arah" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analyzer" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Cakupan" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" -msgstr "" +msgstr "Cetak suara / VU meter" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Mati" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normal" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Api" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" -msgstr "" +msgstr "Garis Vertikal" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Garis" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Batang" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Paling Lambat" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Lambat" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Sedang" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Cepat" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Paling Cepat" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" -msgstr "" +msgstr "Titik" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Garis" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" -msgstr "" +msgstr "Keras" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Es" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Halus" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" -msgstr "" +msgstr "Mewarnai:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Gaya" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" -msgstr "" +msgstr "Jatuh:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" -msgstr "" +msgstr "Puncak Jatuh:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" -msgstr "" +msgstr "Gaya Lingkup:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" -msgstr "" +msgstr "Pewarnaan Cetak Suara:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" -msgstr "" +msgstr "Gaya VU Meter:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Tipe" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" -msgstr "" +msgstr "Tipe Visualisasi:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" -msgstr "" +msgstr "Penganalisis" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" -msgstr "" +msgstr "Tampilkan Puncak:" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Visualisasi" @@ -3970,59 +4094,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Jangan Arsipkan Kulit Winam 2.x " -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Cari catatan di daftar putar aktif" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Cari" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Pilih entri dalam daftar putar dengan mengisi satu atau lebih bidang. Fields " -"menggunakan ekspresi reguler sintaks, case-insensitive. Jika Anda tidak tahu " -"bagaimana ekspresi reguler bekerja, cukup memasukkan sebagian literal dari " -"apa yang Anda cari." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Buat daftar putar baru dengan mencocokan entri" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" -msgstr "" +msgstr "Pengaya Sndfile" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4043,35 +4119,53 @@ "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" +"Berdasarkan pengaya xmms_sndfile:\n" +"Hak Cipta (C) 2000, 2002 Erik de Castro Lopo\n" +"\n" +"Diadaptasi untuk Audacious oleh Tony Vroon \n" +"\n" +"Program ini adalah perangkat lunak gratis; Anda dapat mendistribusikan ulang " +"dan/atau memodifikasinya di bawah ketentuan Lisensi Publik Umum GNU yang " +"diterbitkan oleh Free Software Foundation; baik versi 2 dari Lisensi, atau " +"(sesuai pilihan Anda) versi yang lebih baru.\n" +"\n" +"Program ini disebarluaskan dengan harapan dapat bermanfaat, namun TANPA " +"JAMINAN APAPUN; bahkan tanpa jaminan tersirat tentang KELAYAKAN " +"DIPERDAGANGKAN atau KESESUAIAN UNTUK TUJUAN TERTENTU. Lihat Lisensi Publik " +"Umum GNU untuk info lebih lanjut.\n" +"\n" +"Anda seharusnya telah menerima salinan GNU General Public License bersama " +"dengan program ini; jika tidak, kirim surat ke Free Software Foundation, " +"Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." #: src/sndio/sndio.cc:43 msgid "Sndio Output" -msgstr "" +msgstr "Keluaran Sndio" #: src/sndio/sndio.cc:98 msgid "Device (blank for default):" -msgstr "" +msgstr "Alat (kosongkan untuk bawaan)" #: src/sndio/sndio.cc:100 msgid "Save and restore volume:" -msgstr "" +msgstr "Simpan dan pulihkan volume:" #: src/sndio/sndio.cc:181 #, c-format msgid "Sndio error: Unsupported audio format (%d)" -msgstr "" +msgstr "Kesalahan Sndio: Format audio tidak didukung (%d)" #: src/sndio/sndio.cc:192 msgid "Sndio error: sio_open() failed" -msgstr "" +msgstr "Kesalahan Sndio: sio_open() gagal" #: src/sndio/sndio.cc:221 msgid "Sndio error: sio_setpar() failed" -msgstr "" +msgstr "Kesalahan Sndio: sio_setpar() gagal" #: src/sndio/sndio.cc:233 msgid "Sndio error: sio_start() failed" -msgstr "" +msgstr "Kesalahan Sndio: sio_start() gagal" #: src/songchange/song_change.cc:30 msgid "Song Change" @@ -4079,29 +4173,32 @@ #: src/songchange/song_change.cc:245 msgid "Commands" -msgstr "" +msgstr "Perintah" #: src/songchange/song_change.cc:247 msgid "Command to run when starting a new song:" -msgstr "" +msgstr "Perintah untuk dijalankan saat memulai lagu baru:" #: src/songchange/song_change.cc:250 msgid "Command to run at the end of a song:" -msgstr "" +msgstr "Perintah untuk dijalankan di akhir lagu:" #: src/songchange/song_change.cc:253 msgid "Command to run at the end of the playlist:" -msgstr "" +msgstr "Perintah untuk dijalankan di akhir daftar putar:" #: src/songchange/song_change.cc:256 msgid "Command to run when song title changes (for network streams):" msgstr "" +"Perintah untuk dijalankan saat judul lagu berubah (untuk aliran jaringan):" #: src/songchange/song_change.cc:259 msgid "" "You can use the following format codes, which will be replaced before " "running the command (not all are useful for the end-of-playlist command):" msgstr "" +"Anda dapat menggunakan kode format berikut, yang akan diganti sebelum " +"menjalankan perintah (tidak semua berguna untuk perintah akhir daftar putar):" #: src/songchange/song_change.cc:262 msgid "" @@ -4117,12 +4214,25 @@ "%t: Playlist position\n" "%T: Title (unformatted)" msgstr "" +"%a: Artia\n" +"%b: Album\n" +"%c: Jumlah saluran\n" +"%f: Nama File (lokasi penuh)\n" +"%F: Frekuensi (Hertz)\n" +"%l: Panjang (millisekon)\n" +"%n atau %s: Judul berformat (lihat setelan daftar putar)\n" +"%p: Sedang diputar (1 atau 0)\n" +"%r: Kecepatan (bit per sekon)\n" +"%t: Posisi daftar putar\n" +"%T: Judul (tidak berformat)" #: src/songchange/song_change.cc:273 msgid "" "Parameters passed to the shell should be enclosed in quotation marks. " "Unquoted parameters may lead to unexpected results." msgstr "" +"Parameter yang diteruskan ke shell harus diapit dengan tanda kutip. " +"Parameter yang tidak dikutip dapat menyebabkan hasil yang tidak terduga." #: src/song-info-qt/song-info.cc:30 msgid "Song Info" @@ -4130,7 +4240,7 @@ #: src/soxr/sox-resampler.cc:44 msgid "SoX Resampler" -msgstr "" +msgstr "SoX Resampler" #: src/soxr/sox-resampler.cc:172 msgid "" @@ -4140,6 +4250,11 @@ "Based on Sample Rate Converter Plugin:\n" "Copyright 2010-2012 John Lindgren" msgstr "" +"Pengaya SoX Resampler untuk Audacious\n" +"Hak Cipta 2013 Michał Lipski\n" +"\n" +"Berdasarkan Pengaya Pengkonversi Tingkat Sampel:\n" +"Hak Cipta 2010-2012 John Lindgren" #: src/soxr/sox-resampler.cc:178 msgid "Quick" @@ -4159,15 +4274,15 @@ #: src/soxr/sox-resampler.cc:183 msgid "Ultra High" -msgstr "" +msgstr "Sangat tinggi" #: src/soxr/sox-resampler.cc:187 msgid "Minimum" -msgstr "" +msgstr "Minimum" #: src/soxr/sox-resampler.cc:188 msgid "Intermediate" -msgstr "" +msgstr "Menengah" #: src/soxr/sox-resampler.cc:193 msgid "Quality:" @@ -4175,15 +4290,15 @@ #: src/soxr/sox-resampler.cc:196 msgid "Phase:" -msgstr "" +msgstr "Fase:" #: src/soxr/sox-resampler.cc:200 msgid "Allow aliasing" -msgstr "" +msgstr "Izinkan alias" #: src/soxr/sox-resampler.cc:202 msgid "Use steep filter" -msgstr "" +msgstr "Gunakan filter curam" #: src/speedpitch/speed-pitch.cc:54 msgid "Speed and Pitch" @@ -4191,19 +4306,19 @@ #: src/speedpitch/speed-pitch.cc:247 msgid "Speed" -msgstr "" +msgstr "Kecepatan" #: src/speedpitch/speed-pitch.cc:248 msgid "Decouple from pitch" -msgstr "" +msgstr "Pisahkan dari nada" #: src/speedpitch/speed-pitch.cc:250 src/speedpitch/speed-pitch.cc:258 msgid "Multiplier:" -msgstr "" +msgstr "Pengali:" #: src/speedpitch/speed-pitch.cc:254 msgid "Pitch" -msgstr "" +msgstr "Nada" #: src/statusicon-qt/statusicon.cc:44 src/statusicon/statusicon.cc:47 msgid "Status Icon" @@ -4220,10 +4335,18 @@ "This plugin provides a status icon, placed in\n" "the system tray area of the window manager." msgstr "" +"Pengaya Ikon Status (port parsial untuk antarmuka Qt)\n" +"\n" +"Hak Cipta 2005-2007 Giacomo Lozito \n" +"Hak Cipta 2010 Michał Lipski \n" +"Hak Cipta 2015 Eugene Paskevich \n" +"\n" +"Pengaya ini menyediakan ikon status, ditempatkan di\n" +"area baki jendela sistem manajer." #: src/statusicon-qt/statusicon.cc:86 src/statusicon/statusicon.cc:380 msgid "Mouse Scroll Action" -msgstr "" +msgstr "Aksi Gulir Mouse" #: src/statusicon-qt/statusicon.cc:87 src/statusicon/statusicon.cc:381 msgid "Change volume" @@ -4239,15 +4362,15 @@ #: src/statusicon-qt/statusicon.cc:94 src/statusicon/statusicon.cc:388 msgid "Disable the popup window" -msgstr "" +msgstr "Matikan jendela popup" #: src/statusicon-qt/statusicon.cc:96 src/statusicon/statusicon.cc:390 msgid "Close to the system tray" -msgstr "" +msgstr "Tutup ke baki sistem" #: src/statusicon-qt/statusicon.cc:98 src/statusicon/statusicon.cc:392 msgid "Advance in playlist when scrolling upward" -msgstr "" +msgstr "Maju dalam daftar putar saat menggulir ke atas" #: src/statusicon-qt/statusicon.cc:113 src/statusicon/statusicon.cc:283 msgid "Se_ttings ..." @@ -4263,6 +4386,13 @@ "This plugin provides a status icon, placed in\n" "the system tray area of the window manager." msgstr "" +"Pengaya Ikon Status\n" +"\n" +"Hak Cipta 2005-2007 Giacomo Lozito \n" +"Hak Cipta 2010 Michał Lipski \n" +"\n" +"Pengaya ini menyediakan ikon status, ditempatkan di\n" +"area baki jendela sistem manajer." #: src/stereo_plugin/stereo.cc:19 msgid "Extra Stereo" @@ -4274,6 +4404,9 @@ "\n" "By Johan Levin, 1999" msgstr "" +"Pengaya Stereo Ekstra\n" +"\n" +"Oleh Johan Levin, 1999" #: src/stereo_plugin/stereo.cc:44 msgid "Extra Stereo" @@ -4281,39 +4414,39 @@ #: src/streamtuner/icecast-model.cc:126 src/streamtuner/shoutcast-model.cc:131 msgid "Type" -msgstr "" +msgstr "Tipe" #: src/streamtuner/icecast-model.cc:132 msgid "Current Song" -msgstr "" +msgstr "Lagu saat ini" #: src/streamtuner/icecast-model.cc:164 msgid "Other" -msgstr "" +msgstr "Lainnya" #: src/streamtuner/ihr-model.cc:63 msgid "Market" -msgstr "" +msgstr "Pasar" #: src/streamtuner/ihr-model.cc:156 msgid "Call Letters" -msgstr "" +msgstr "Huruf Panggil" #: src/streamtuner/ihr-model.cc:162 msgid "Description" -msgstr "" +msgstr "Deskripsi" #: src/streamtuner/shoutcast-model.cc:128 msgid "Listeners" -msgstr "" +msgstr "Pendengar" #: src/streamtuner/shoutcast-model.cc:188 msgid "Top 500 Stations" -msgstr "" +msgstr "500 Stasiun Teratas" #: src/streamtuner/shoutcast-model.cc:189 msgid "Alternative" -msgstr "" +msgstr "Alternatif" #: src/streamtuner/shoutcast-model.cc:190 msgid "Blues" @@ -4329,7 +4462,7 @@ #: src/streamtuner/shoutcast-model.cc:193 msgid "Decades" -msgstr "" +msgstr "Dekade" #: src/streamtuner/shoutcast-model.cc:194 msgid "Easy Listening" @@ -4337,7 +4470,7 @@ #: src/streamtuner/shoutcast-model.cc:195 msgid "Electronic" -msgstr "" +msgstr "Elektronik" #: src/streamtuner/shoutcast-model.cc:196 msgid "Folk" @@ -4345,11 +4478,11 @@ #: src/streamtuner/shoutcast-model.cc:197 msgid "Inspirational" -msgstr "" +msgstr "Inspirasional" #: src/streamtuner/shoutcast-model.cc:198 msgid "International" -msgstr "" +msgstr "Internasional" #: src/streamtuner/shoutcast-model.cc:199 msgid "Jazz" @@ -4357,7 +4490,7 @@ #: src/streamtuner/shoutcast-model.cc:200 msgid "Latin" -msgstr "" +msgstr "Latin" #: src/streamtuner/shoutcast-model.cc:201 msgid "Metal" @@ -4373,11 +4506,11 @@ #: src/streamtuner/shoutcast-model.cc:205 msgid "Public Radio" -msgstr "" +msgstr "Radio Publik" #: src/streamtuner/shoutcast-model.cc:206 msgid "R&B and Urban" -msgstr "" +msgstr "R&B dan Perkotaan" #: src/streamtuner/shoutcast-model.cc:207 msgid "Rap" @@ -4393,35 +4526,35 @@ #: src/streamtuner/shoutcast-model.cc:210 msgid "Seasonal and Holiday" -msgstr "" +msgstr "Musiman dan Hari Libur" #: src/streamtuner/shoutcast-model.cc:211 msgid "Soundtracks" -msgstr "" +msgstr "Soundtrack" #: src/streamtuner/shoutcast-model.cc:212 msgid "Talk" -msgstr "" +msgstr "Bicara" #: src/streamtuner/shoutcast-model.cc:213 msgid "Themes" -msgstr "" +msgstr "Tema" #: src/streamtuner/streamtuner.cc:59 msgid "Shoutcast" -msgstr "" +msgstr "Shoutcast" #: src/streamtuner/streamtuner.cc:60 msgid "Icecast" -msgstr "" +msgstr "Icecast" #: src/streamtuner/streamtuner.cc:71 msgid "Stream Tuner" -msgstr "" +msgstr "Penyetel Aliran" #: src/tonegen/tonegen.cc:45 msgid "Tone Generator" -msgstr "" +msgstr "Penghasil Nada" #: src/tonegen/tonegen.cc:92 #, c-format @@ -4430,7 +4563,7 @@ #: src/tonegen/tonegen.cc:92 msgid "Tone Generator: " -msgstr "" +msgstr "Penghasil Nada:" #: src/tonegen/tonegen.cc:161 msgid "" @@ -4440,20 +4573,39 @@ "To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" "e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" msgstr "" +"Generator nada sinus oleh Håvard Kvålen \n" +"Dimodifikasi oleh Daniel J. Peng \n" +"\n" +"Untuk menggunakannya, tambahkan URL: tone://frequency1;frequency2;" +"frequency3;...\n" +"e.g. tone://2000;2005 untuk memainkan nada 2000 Hz dan nada 2005 Hz" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Pesan lebih lanjut telah disembunyikan.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Sedang bekerja ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Informasi" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" -msgstr "" +msgstr "Penghapusan Suara" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4473,6 +4625,23 @@ "Gian-Carlo Pascutto \n" "Eugene Zagidullin " msgstr "" +"Dekoder Ogg Vorbis Audacious\n" +"\n" +"Berdasarkan Pengaya Ogg Vorbis dari Xiph.org Foundation:\n" +"http://www.xiph.org/\n" +"\n" +"Kode asli oleh:\n" +"Tony Arcieri \n" +"\n" +"Kontribusi dari:\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Håvard Kvålen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin " #: src/vorbis/vorbis.h:18 msgid "Ogg Vorbis Decoder" @@ -4481,7 +4650,7 @@ #: src/vtx/info.cc:24 #, c-format msgid "Details about %s" -msgstr "" +msgstr "Detail tentang %s" #: src/vtx/info.cc:26 msgid "" @@ -4497,6 +4666,17 @@ "Player Freq: %P\n" "Year: %y" msgstr "" +"Judul: %t\n" +"Pembuat: %a\n" +"Dari: %f\n" +"Pelacak: %T\n" +"Komen: %C\n" +"Tipe chip: %c\n" +"Stereo: %s\n" +"Lingkaran: %l\n" +"Frekuensi chip: %F\n" +"Frekuensi Pemutar: %P\n" +"Tahun: %y" #: src/vtx/vtx.cc:38 msgid "VTX Decoder" @@ -4508,46 +4688,53 @@ "Based on in_vtx.dll by Roman Sherbakov \n" "Audacious plugin by Pavel Vymetalek " msgstr "" +"Pemutar format file Vortex oleh Sashnov Alexander \n" +"Berdasarkan dari in_vtx.dll oleh Roman Sherbakov \n" +"Pengaya Audacious oleh Pavel Vymetalek " #: src/vumeter-qt/vumeter_qt.cc:31 msgid "" "VU Meter Plugin for Audacious\n" "Copyright 2017-2019 Marc Sánchez Fauste" msgstr "" +"Pengaya VU Meter untuk Audacious\n" +"Hak Cipta 2017-2019 Marc Sánchez Fauste" #: src/vumeter-qt/vumeter_qt.cc:35 msgid "VU Meter Settings" -msgstr "" +msgstr "Pengaturan VU Meter" #: src/vumeter-qt/vumeter_qt.cc:37 msgid "Peak hold time:" -msgstr "" +msgstr "Waktu tunggu puncak:" #: src/vumeter-qt/vumeter_qt.cc:42 msgid "Fall-off time:" -msgstr "" +msgstr "Waktu jatuh:" #: src/vumeter-qt/vumeter_qt.cc:44 msgid "dB/second" -msgstr "" +msgstr "dB/detik" #: src/vumeter-qt/vumeter_qt.cc:46 msgid "Display legend" -msgstr "" +msgstr "Legenda tampilan" #: src/vumeter-qt/vumeter_qt.h:37 msgid "VU Meter" -msgstr "" +msgstr "VU Meter" #: src/waveout/waveout.cc:43 msgid "Win32 waveOut" -msgstr "" +msgstr "Win32 waveOut" #: src/waveout/waveout.cc:69 msgid "" "Win32 waveOut Plugin for Audacious\n" "Copyright 2016 John Lindgren" msgstr "" +"Plugin Win32 waveOut untuk Audacious \n" +"Hak Cipta 2016 John Lindgren " #: src/wavpack/wavpack.cc:25 msgid "WavPack Decoder" @@ -4571,14 +4758,38 @@ "\n" "Beberapa kode pengaya ditulis oleh Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "Dekoder 2SF" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "Pengaturan XSF" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "XML Shareable Playlists (XSPF)" diff -Nru audacious-plugins-4.1/po/it.po audacious-plugins-4.3.1/po/it.po --- audacious-plugins-4.1/po/it.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/it.po 2023-04-29 20:17:32.000000000 +0000 @@ -7,7 +7,7 @@ # David Rossi , 2012 # Federico , 2013-2014 # minderz , 2014 -# eagleman , 2020 +# eagleman , 2020-2021 # Jacopo Lorenzetti , 2011-2012 # Jacopo Lorenzetti , 2012-2013 # Marco Mangiacavalli, 2013 @@ -18,16 +18,17 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2021-01-29 09:53+0000\n" -"Last-Translator: Daniele Porumboiu \n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: eagleman , 2020-2021\n" "Language-Team: Italian (http://www.transifex.com/audacious/audacious/" "language/it/)\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? " +"1 : 2;\n" #: src/aac/aac.cc:19 msgid "AAC (Raw) Decoder" @@ -38,7 +39,7 @@ msgstr "AdPlug (Riproduttore AdLib)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "sequenziato" @@ -50,9 +51,11 @@ msgid "OPL Emulator:" msgstr "Emulatore OPL:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Frequenza di campionamento:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -68,267 +71,13 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Varie" #: src/adplug/adplug-xmms.cc:356 msgid "Repeat song in endless loop" -msgstr "" - -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Sveglia" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Regola la sveglia ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Un plugin che può essere usato per iniziare l'esecuzione in un certo " -"momento.\n" -"\n" -"Originariamente scritto da Adam Feakin e Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Tempo\n" -"Sveglia a:\n" -"L'ora di attivazione della sveglia\n" -"\n" -"Silenzioso dopo:\n" -"Ferma la sveglia dopo questo tempo.\n" -"(se il dialogo di risveglio non e` chiuso)\n" -"\n" -"\n" -"Giorni\n" -"Giorno:\n" -"Seleziona i giorni di attivazione della sveglia.\n" -"\n" -"Tempo:\n" -"Seleziona l'ora della sveglia in ciascun giorno,\n" -"o seleziona il bottone per usare l'ora di\n" -"default.\n" -"\n" -"\n" -"Volume\n" -"Sfumatura:\n" -"Sfuma il volume fino al valore scelto\n" -"per questa durata.\n" -"\n" -"Inizio a:\n" -"Inizia sfumare da questo volume.\n" -"\n" -"Finale:\n" -"Il volume a cui terminare la sfumatura. Se il tempo\n" -"di sfumatura e` 0, fissa questo volume e inizia\n" -"l'esecuzione.\n" -"\n" -"\n" -"Opzioni:\n" -"Comando aggiuntivo:\n" -"Esegui questo comando a\n" -"\n" -"Playlist:\n" -"Carica questa playlist. Se non e` data\n" -"la playlist, sara` usata quella corrente.\n" -"Qui si puo` anche inserire\n" -"l'URL di uno stream mp3/ogg.\n" -"\n" -"Messaggio:\n" -"Mostra un messaggio quando scatta la sveglia.\n" -"Se vuoi che sia mostrato, scrivi il messaggio nel campo\n" -"d'ingresso ed attiva la checkbox." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Questa è la tua sveglia." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Il tuo promemoria per oggi è..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Promemoria" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Lunedì" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Martedì" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Mercoledì" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Giovedì" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Venerdì" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Sabato" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Domenica" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Ora" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Sveglia alle (predefinita):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Ferma dopo:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "ore" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minuti" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Scegliere i giorni in cui attivare la sveglia" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Giorno" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Predefinita" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Giorni" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Dissolvenza" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "secondi" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Volume" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Inizia a" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Finale" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Attuale" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Comando aggiuntivo" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "abilita" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Playlist (opzionale)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Seleziona una lista di riproduzione" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Opzioni" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Cosa significano queste opzioni?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Aiuto" +msgstr "Ripeti canzone all'infinito" #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" @@ -477,93 +226,89 @@ msgid "Synthesizer" msgstr "Sintetizzatore" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Frequenza di campionamento:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - seleziona file SoundFont" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" -msgstr "_Cancella" +msgstr "_Annulla" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Apri" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Nome del file" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Dimensioni (byte)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Nome:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " Informazioni MIDI " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Formato:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Durata (msec):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Numero di tracce: " -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "variabile" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Suddivisione temporale:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " Commenti e testi MIDI " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* nessun commento disponibile in questo file MIDI *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* nessun testo disponibile in questo file MIDI *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Chiudi" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (UTF-8 non valido)" #: src/ampache/ampache.cc:33 msgid "Ampache Browser" -msgstr "" +msgstr "Ampache Browser" #: src/ampache/ampache.cc:46 msgid "" @@ -573,6 +318,11 @@ "Copyright (C) Róbert Čerňanský and John Lindgren\n" "License: GNU GPLv3" msgstr "" +"Ampache Browser for Audacious\n" +"http://ampache-browser.org/\n" +"\n" +"Copyright (C) Róbert Čerňanský and John Lindgren\n" +"License: GNU GPLv3" #: src/aosd/aosd.cc:31 msgid "" @@ -608,7 +358,7 @@ msgid "Concave Rectangle" msgstr "Rettangolo concavo" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Nessuno" @@ -645,94 +395,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Visualizza l'OSD quando viene ripresa la riproduzione." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Posizionamento" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Offset X relativo:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Offset Y relativo:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Larghezza massima OSD:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Opzioni multi-monitor" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Visualizza OSD su:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "tutti i monitor" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "monitor %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Temporizzazione (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Visualizza:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Dissolvi in ingresso:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Dissolvi in uscita:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Caratteri" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Carattere %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Ombra" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Stile di resa grafica" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Colori" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Colore %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Abilita visualizzazione in seguito all'evento" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Evento" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Rilevato compositing manager" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -742,62 +492,62 @@ "a meno che tu non sappia di averne uno in esecuzione, per favore attiva un " "compositing manager altrimenti l'OSD non funzionerà correttamente" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Compositing manager non richiesto per la falsa trasparenza" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Trasparenza" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Falsa trasparenza" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Trasparenza reale (richiede est. Composite di X)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Estensione Composite non caricata" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Posizione" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animazione" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Testo" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Decorazione" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Eventi" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Varie" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Test" #: src/asx3/asx3.cc:35 msgid "ASXv3 Playlists" -msgstr "Playlists " +msgstr "Liste di riproduzione ASXv3" #: src/asx/asx.cc:33 msgid "ASXv1/ASXv2 Playlists" @@ -807,11 +557,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Lista di riproduzione Audacious (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Colore" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Blur Scope" @@ -823,6 +589,10 @@ msgid "Presets:" msgstr "Preimpostazioni:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Predefinita" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Livello di alimentazione:" @@ -835,7 +605,7 @@ msgid "Cut frequency:" msgstr "Frequenza di taglio:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Analizzatore di spettro" @@ -931,53 +701,53 @@ msgid "Audio CD" msgstr "CD Audio" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Errore nell'apertura del lettore CD %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Nessuna unità CD audio adatta trovata." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Il drive è vuoto." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Tipo di disco non supportato." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Errore alla fine dell'inizializzazione dell'unità CD aperta." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Errore nella ricerca del primo/ultimo numero della traccia." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Impossibile leggere inizio/fine dell'LNS per la traccia %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." -msgstr "" +msgstr "Errore nella creazione della connessione al CDDB." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Errore nella richiesta al server CDDB." -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Errore nella richiesta al server CDDB: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" -msgstr "" +msgstr "Errore nella lettura delle informazioni del CDDB: %s" #: src/cd-menu-items/cd-menu-items.cc:33 msgid "Audio CD Menu Items" @@ -985,11 +755,11 @@ #: src/cd-menu-items/cd-menu-items.cc:45 msgid "Pla_y CD" -msgstr "" +msgstr "Ripro_duci CD" #: src/cd-menu-items/cd-menu-items.cc:45 msgid "_Add CD" -msgstr "" +msgstr "_Aggiungi CD" #: src/compressor/compressor.cc:45 msgid "Compression" @@ -1047,6 +817,13 @@ msgid "Default song length:" msgstr "Durata brano predefinita:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "secondi" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Resampling" @@ -1075,7 +852,7 @@ msgid "CoreAudio output" msgstr "Uscita CoreAudio" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1086,14 +863,23 @@ "Based on SDL Output Plugin for Audacious\n" "Copyright 2010 John Lindgren" msgstr "" +"CoreAudio Output Plugin for Audacious\n" +"Copyright 2014 William Pitcock\n" +"Copyright 2017,18 René J.V. Bertin\n" +"(original code and code adapted from\n" +"Apple examples, (C) Apple 2013)\n" +"\n" +"Based on SDL Output Plugin for Audacious\n" +"Copyright 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Usa la modalità esclusiva" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" +"Usa il perfetto bit audio (adatta il tasso di campionamento della periferica)" #: src/crossfade/crossfade.cc:43 msgid "" @@ -1173,12 +959,12 @@ #: src/delete-files/delete-files.cc:133 #, c-format msgid "Do you want to move %d files to the trash?" -msgstr "" +msgstr "Vuoi spostare %d file nel cestino?" #: src/delete-files/delete-files.cc:134 #, c-format msgid "Do you want to permanently delete %d files?" -msgstr "" +msgstr "Vuoi eliminare definitivamente%d file?" #: src/delete-files/delete-files.cc:146 msgid "Move to trash" @@ -1188,20 +974,20 @@ msgid "Delete" msgstr "Elimina" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Annulla" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Cancella files selezionati" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Metodo di cancellazione" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Sposta nel cestino invece di cancellare immediatamente" @@ -1227,7 +1013,7 @@ msgstr "Ritardo: " #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1243,11 +1029,11 @@ msgid "Echo" msgstr "Echo" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Plugin FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1292,6 +1078,22 @@ "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" +"Questo programma è un software gratuito; puoi ridistribuirlo e/o " +"modificarlo\n" +"sotto i termini della licenza GNU General Public License come pubblicato " +"dalla\n" +"Free Software Foundation; sia la versione 2 della Licenza, sia\n" +"(a propria scelta) qualsiasi altra versione.\n" +"\n" +"Questo programma è distribuito nella speranza che sarà utile,\n" +"ma SENZA ALCUNA GARANZIA; anche senza l'implicita garanzia di\n" +"COMMERCIABILITÀ o IDONEITÀ PER UN PARTICOLARE SCOPO. Vedi la\n" +"GNU General Public License per maggiori dettagli.\n" +"\n" +"Dovresti aver ricevuto una copia della licenza GNU General Public License\n" +"insieme al programma; se così non fosse, scrivi alla Free Software\n" +"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" +"USA." #: src/filewriter/filewriter.cc:385 msgid "Output file format:" @@ -1303,7 +1105,7 @@ #: src/filewriter/filewriter.cc:392 msgid "Save into custom directory:" -msgstr "" +msgstr "Salva nella directory personalizzata:" #: src/filewriter/filewriter.cc:400 msgid "Generate file name from:" @@ -1331,15 +1133,15 @@ #: src/filewriter/filewriter.cc:418 msgid "8000 Hz" -msgstr "" +msgstr "8000 Hz" #: src/filewriter/filewriter.cc:419 msgid "11025 Hz" -msgstr "" +msgstr "11025 Hz" #: src/filewriter/filewriter.cc:420 msgid "12000 Hz" -msgstr "" +msgstr "12000 Hz" #: src/filewriter/filewriter.cc:421 msgid "16000 Hz" @@ -1357,76 +1159,76 @@ msgid "32000 Hz" msgstr "" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" +msgid "8 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" +msgid "16 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" +msgid "32 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" +msgid "40 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" +msgid "48 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" +msgid "56 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" +msgid "64 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" +msgid "80 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" +msgid "96 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" +msgid "112 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" +msgid "128 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" +msgid "160 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" +msgid "192 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" +msgid "224 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" +msgid "256 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" +msgid "320 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:450 @@ -1434,12 +1236,12 @@ msgstr "Joint stereo" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1465,7 +1267,7 @@ #: src/filewriter/filewriter.cc:498 msgid "Audio mode:" -msgstr "" +msgstr "Modalità audio:" #: src/filewriter/filewriter.cc:501 msgid "Enforce strict ISO compliance" @@ -1551,7 +1353,7 @@ msgid "Quality (0-1):" msgstr "" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Generale" @@ -1560,11 +1362,11 @@ msgid "FLAC Decoder" msgstr "Decodificatore FLAC" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "senza perdita" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1596,7 +1398,7 @@ msgid "Invalid open mode" msgstr "Modalità di apertura non valida" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1616,116 +1418,134 @@ "\n" "Licenza: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL Spectrum Analyzer" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "Numero elemento" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Titolo" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Artista" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Anno" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Album" -#: src/gtkui/columns.cc:40 -msgid "Album artist" -msgstr "Artista" - #: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr "Album Artista" + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Traccia" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Genere" -#: src/gtkui/columns.cc:43 -msgid "Queue position" +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" msgstr "Posizione nella coda" -#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Durata" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "Percorso del file" - -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Titolo personalizzato" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Nome del file" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Bitrate" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Commento" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Colonne disponibili" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Colonne visualizzate" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Tool di ricerca" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Aggancia a sinistra" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Aggancia a destra" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Aggancia in alto" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Aggancia in basso" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Sgancia" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Disabilita" @@ -1765,8 +1585,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Riproduci" @@ -1943,8 +1763,8 @@ msgid "Remove _Unavailable Files" msgstr "Ri_muovi file non disponibili" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Nuova" @@ -1954,7 +1774,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "Elimina" @@ -2085,7 +1905,7 @@ msgstr "Seleziona _tutti" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Rinomina ..." @@ -2113,208 +1933,214 @@ msgid "Show column headers" msgstr "Mostra le intestazioni delle colonne" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Fa avanzare la lista quando cambia brano" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Interfaccia GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Buffering…" -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Riproduci" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Interrompi" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Cerca nella libreria" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Apri file" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Aggiungi file" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Precedente" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Ferma" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Successivo" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Ripeti" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Casuale" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "Menu" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d canale" msgstr[1] "%d canali" +msgstr[2] "%d canali" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Modalità singolo." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Modalità playlist." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "La riproduzione si fermerà alla fine del brano." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Traccia precedente" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Interrompi/riprendi" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Traccia successiva" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Silenzia" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Alza volume" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Abbassa volume" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Salta al file" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Mostra/nascondi finestra(e) di riproduzione" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Mostra On-screen-display" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Attiva/disattiva ripetizione" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Attiva/disattiva shuffle" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Attiva/Disattiva lo stop dopo la corrente" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Mostra finestra(e) di riproduzione" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(nessuno)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" "Do you want to continue?" msgstr "" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Associazione pulsanti del mouse" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2322,23 +2148,23 @@ "Premi una combinazione di tasti all'interno di un campo di testo.\n" "Puoi anche associare i pulsanti del mouse." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Tasti di scelta rapida:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Azione:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Tasto associato:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Aggiungi" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Hotkeys globali" @@ -2427,16 +2253,16 @@ "Audacious sta riproducendo a %d Hz. Si prega di usare l'effetto convertitore " "della frequenza di campionamento per correggere la discrepanza." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "Impostazioni %s" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Percorsi dei moduli:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2447,25 +2273,25 @@ "Dopo aver aggiunto nuovi percorsi, premi Invio per ricercare nuovi plugin." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Plugin disponibili:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Abilita" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Plugin abilitati:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Impostazioni" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2522,101 +2348,105 @@ msgid "Wait before reconnecting:" msgstr "Attesa prima della riconnessione:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "Testo" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "Generale" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Impossibile recuperare %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Impossibile analizzare %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Ricerca testi ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Errore" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Salva in locale" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Aggiorna" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "Playlists M3U" @@ -2775,7 +2605,7 @@ msgstr "Queste impostazioni avranno effetto al prossimo riavvio di Audacious." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Interrompi al termine di questo brano" @@ -2784,41 +2614,17 @@ msgid "Moonstone" msgstr "" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "In riproduzione" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Album Artista" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Posizione nella coda" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Nome del file" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Voci" @@ -2834,7 +2640,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Utilizza il calcolo della lunghezza accurata (lento)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Surround" @@ -2934,26 +2740,26 @@ msgid "OpenMPT (Module Player)" msgstr "" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "" @@ -2965,11 +2771,21 @@ msgid "Windowed sinc" msgstr "" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "Uscita OSS4" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "Uscita OSS3" @@ -3011,18 +2827,35 @@ "Vorrei ringrazire le persone su #audacious, specialmente Tony Vroon e John " "Lindgren e sicuramente gli autori del precedente OSS plugin." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Riproduzione" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Gestore delle playlist" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Rimuovi" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "Rin_omina" @@ -3038,7 +2871,7 @@ msgid "OpenPSF Configuration" msgstr "" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Ignora la lunghezza dal file" @@ -3104,11 +2937,11 @@ "License: GPLv2+" msgstr "" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "" -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3144,14 +2977,18 @@ msgid "Audio Settings ..." msgstr "Impostazioni Audio ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Interfaccia Qt" @@ -3363,30 +3200,31 @@ msgid "Library" msgstr "Libreria" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d canzone" msgstr[1] "%d canzoni" +msgstr[2] "%d canzoni" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "di questo genere" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "in funzione" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "di" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Numero di risultati da mostrare:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Aggiorna libreria all'avvio" @@ -3394,7 +3232,7 @@ msgid "Monitor library for changes" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3402,37 +3240,39 @@ "Per importare la tua musica in Audacious, scegli una cartella e clicca " "sull'icona \"aggiorna\"." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Attendi per favore…" -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Scegli una cartella" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Cerca nella libreria" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d risultato" msgstr[1] "%d risultati" +msgstr[2] "%d risultati" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Crea playlist" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Aggiungi alla playlist" @@ -3536,108 +3376,108 @@ msgid "Repeat point B set." msgstr "Punto di Ripetizione _B impostato" -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Preamplificazione" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Equalizzatore di Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Vai a %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Volume: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Bilanciamento: sinistra %d%%" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Bilanciamento: centro" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Bilanciamento: destra %d%%" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Menu opzioni" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Disabilita 'Sempre in primo piano'" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Abilita 'Sempre in primo piano'" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Finestra informazioni file" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Doppia grandezza" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Visualizzazioni" @@ -3661,10 +3501,6 @@ msgid "Open URL ..." msgstr "Apri URL ..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Riproduzione" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Playlist" @@ -3679,7 +3515,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Servizi" @@ -3696,7 +3532,7 @@ msgstr "Esci" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Informazioni sul brano" @@ -3716,7 +3552,7 @@ msgid "Clear A-B Repeat" msgstr "Elimina ripetizione A-B" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Vai a brano ..." @@ -3809,20 +3645,20 @@ msgstr "Aggiungi files ..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Per titolo" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Per nome File" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Per percorso file" @@ -3850,113 +3686,113 @@ msgid "Remove Selected" msgstr "Rimuovi selezionati" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Cerca e seleziona" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Inverti selezione" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Deseleziona tutti" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Seleziona tutti" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Per numero di traccia" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Per artista" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Per album" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Per album artista" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Per data di pubblicazione" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Per Genere" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Per Durata" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Per titolo personalizzato" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Riordina casualmente la lista" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Inverti lista" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Ordina selezionati" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Ordina lista" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Taglia" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Copia" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Incolla" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Incolla alla fine" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Metti in/togli da coda" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d di %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Editor della playlist di Audacious" @@ -3972,167 +3808,219 @@ msgid "Add Folder ..." msgstr "Aggiungi cartella..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Cerca elementi nella playlist attiva" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Seleziona gli elementi nella playlist compilando uno o più campi. I campi " +"utilizzano la sintassi delle espressioni regolari, senza distinzione tra " +"maiuscole e minuscole. Se non sai come funzionano le espressioni regolari, " +"inserisci semplicemente una porzione letterale di quello che stai cercando." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Titolo:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Album:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Artista:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Nome del file:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Cancella la selezione precedente prima di effettuare la ricerca" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Inserisci automaticamente in coda gli elementi trovati" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Crea una nuova playlist con gli elementi trovati" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Cerca" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Lettore:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Seleziona il carattere della finestra principale del lettore:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Playlist:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Seleziona il carattere della playlist:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Pelle" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Caratteri" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Usa caratteri bitmap (supporta solo ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Fai sfilare il titolo del brano" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Scorri titolo brano in entrambe le direzioni" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analizzatore" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Oscilloscopio" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Impronta vocale/VU meter" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Spento" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normale" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Fuoco" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Linee verticali" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Linee" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Barre" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Molto lenta" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Lenta" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Media" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Veloce" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Molto veloce" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Puntini" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Linea" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Solido" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Ghiaccio" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Morbida" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Colori:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Stile:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Decadimento:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Decadimento dei picchi:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Stile di oscilloscopio:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Colori dell'impronta vocale:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "Stile del VU meter:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Scrivi" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Tipo di visualizzazione:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analizzatore" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Mostra picchi" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Visualizzazione" @@ -4144,59 +4032,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Skin Winamp 2.x non archiviata" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Cerca elementi nella playlist attiva" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Cerca" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Seleziona gli elementi nella playlist compilando uno o più campi. I campi " -"utilizzano la sintassi delle espressioni regolari, senza distinzione tra " -"maiuscole e minuscole. Se non sai come funzionano le espressioni regolari, " -"inserisci semplicemente una porzione letterale di quello che stai cercando." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Titolo:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Album:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Artista:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Nome del file:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Cancella la selezione precedente prima di effettuare la ricerca" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Inserisci automaticamente in coda gli elementi trovati" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Crea una nuova playlist con gli elementi trovati" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Plugin Sndfile" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4673,19 +4513,32 @@ "ad esempio tone://2000;2005 per avviare un tono di 2000 Hz e un tono di 2005 " "Hz" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Ulteriori messaggi sono stati nascosti.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "In elaborazione ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Informazioni" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Rimozione voce" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4835,14 +4688,38 @@ "\n" "Una parte del codice del plugin era di Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "Decodificatore 2SF" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "Configurazione XSF" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "Liste di riproduzione condivisibili XML (XSPF)" diff -Nru audacious-plugins-4.1/po/ja.po audacious-plugins-4.3.1/po/ja.po --- audacious-plugins-4.1/po/ja.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/ja.po 2023-04-29 20:17:32.000000000 +0000 @@ -7,7 +7,7 @@ # natird zoto , 2012 # ABE Tsunehiko, 2013 # ABE Tsunehiko, 2012 -# Mika Kobayashi, 2014-2015 +# fbc955180bc2b956cb4ef52d00eb80a0_91487f8, 2014-2015 # NipponGo, 2020 # TAKAHASHI Shuuji , 2012-2014 # TAKAHASHI Shuuji , 2015 @@ -18,9 +18,9 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: NipponGo, 2020\n" "Language-Team: Japanese (http://www.transifex.com/audacious/audacious/" "language/ja/)\n" "Language: ja\n" @@ -38,7 +38,7 @@ msgstr "AdPlug (AdLib プレイヤー)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "シーケンス" @@ -50,9 +50,11 @@ msgid "OPL Emulator:" msgstr "" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "サンプリングレート" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "サンプリングレート:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -68,7 +70,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "その他" @@ -76,258 +78,6 @@ msgid "Repeat song in endless loop" msgstr "曲を無限に繰り返す" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "アラーム" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "アラームをセット" - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"設定した時間に再生を開始するためのプラグイン\n" -"\n" -"元の作者: Adam Feakin および Daniel Stodden" - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"時刻\n" -"アラーム時刻(デフォルト):\n" -"アラームが鳴る時刻です。\n" -"\n" -"静かになるまでの時間\n" -"アラームが鳴り止むまでの時間です。\n" -"(めざましダイアログを閉じなかった場合)\n" -"\n" -"\n" -"曜日\n" -"曜日:\n" -"アラームが鳴る曜日を選択します。\n" -"\n" -"時刻:\n" -"それぞれの曜日のアラーム時刻を選択するか、\n" -"トグルボタンを選択し、デフォルト時刻に設定します。\n" -"\n" -"\n" -"音量:\n" -"フェード:\n" -"指定した時間をかけて、音量を徐々に変更します。\n" -"\n" -"開始:\n" -"この音量からフェードを始めます。\n" -"\n" -"終了:\n" -"この音量でフェードを終わります。\n" -"フェード時間が 0 のときには、\n" -"この音量で再生を始めます。\n" -"\n" -"\n" -"オプション:\n" -"追加コマンド:\n" -"アラーム時刻になると、このコマンドを実行します。\n" -"\n" -"プレイリスト:\n" -"このプレイリストをロードします。\n" -"プレイリストを指定しなかった場合には、\n" -"現在のものが使われます。\n" -"mp3 または ogg ストリームの URL を\n" -"指定することもできます。\n" -"\n" -"リマインダー:\n" -"アラームが止まった時にリマインダを表示します。\n" -"表示するには、入力フィールドにリマインダーを入力し、\n" -"チェックボックスを有効にしてください。" - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "目覚ましです。" - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "今日のリマインダー:" - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "リマインダー" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "月曜日" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "火曜日" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "水曜日" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "木曜日" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "金曜日" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "土曜日" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "日曜日" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "時刻" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "アラーム時刻 (デフォルト)" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr " " - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "静かになるまでの時間:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "時間" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "分" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "アラームが鳴る曜日" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "曜日" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "デフォルト" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "曜日" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "フェード" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "秒" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "音量" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "フェード開始音量" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "フェード終了音量" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "現在の音量" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "追加コマンド" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "有効" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "プレイリスト (オプション)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "プレイリストを選択" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "オプション" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "オプションの説明" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "ヘルプ" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "アルバムアート" @@ -477,87 +227,83 @@ msgid "Synthesizer" msgstr "シンセサイザー" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "サンプリングレート:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - サウンドフォント ファイルの選択" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "キャンセル(_C)" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "開く(_O)" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "ファイル名" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "サイズ (バイト)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "名前:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " MIDI 情報 " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "形式:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "長さ (ミリ秒):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "トラック番号:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "可変" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "時間軸:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI コメントと歌詞 " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* MIDI ファイル中に有効なコメントがありません *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* MIDI ファイル中に有効な歌詞がありません *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "プレイリストを閉じる(_C)" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (不正な UTF-8)" @@ -613,7 +359,7 @@ msgid "Concave Rectangle" msgstr "凹矩形" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "なし" @@ -649,94 +395,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "再生が再開したときに OSD を表示します。" -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "位置" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "相対 X オフセット:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "相対 Y オフセット:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "最大 OSD 幅:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "マルチモニターオプション" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "OSD を表示するモニター:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "全てのモニター" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "モニター %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "タイミング (ミリ秒)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "表示:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "フェードイン:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "フェードアウト:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "フォント" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "フォント %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "影" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "描画形式" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "色" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "色 %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "有効にする" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "イベント" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "コンポジットマネージャーが検出されました" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -746,56 +492,56 @@ "動作させているかわからなければ、Composite マネージャーを有効にしてください。" "そうしなければ OSD は正常に動作しないでしょう。" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "擬似的な透明化の場合コンポジットマネージャーは不要です" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "透明化" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "擬似的な透明化" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "真の透明化 (X コンポジット拡張が必要)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "コンポジット拡張が読み込まれていません" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "位置" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "アニメーション" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "文字" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "装飾" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "トリガー" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "その他" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "テスト" @@ -811,11 +557,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Audacious プレイリスト (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "ブラースコープ" @@ -827,6 +589,10 @@ msgid "Presets:" msgstr "プリセット:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "デフォルト" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "フェードレベル:" @@ -839,7 +605,7 @@ msgid "Cut frequency:" msgstr "カット周波数" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "スペクトラムアナライザー" @@ -934,51 +700,51 @@ msgid "Audio CD" msgstr "オーディオ CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "CD デバイス %s のオープンに失敗しました。" -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "オーディオが利用可能な CD ドライブが見つかりません。" -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "ドライブにディスクがありません。" -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "非対応のディスクです。" -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "オープンされた CD ドライブの初期化が完了できませんでした。" -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "最初または最後のトラックナンバーを取得できませんでした。" -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "" "トラック %d の LSN (論理セクタ番号) の開始または終了が読み取れませんでした。" -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "CDDB コネクションの作成に失敗しました。" -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "CDDB サーバへのクエリに失敗しました。" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "CDDB サーバへのクエリに失敗しました: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "CDDB 情報の読み取りに失敗しました: %s" @@ -1051,6 +817,13 @@ msgid "Default song length:" msgstr "デフォルトの曲の長さ:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "秒" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "リサンプリング" @@ -1079,7 +852,7 @@ msgid "CoreAudio output" msgstr "CoreAudio 出力" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1099,11 +872,11 @@ "Based on SDL Output Plugin for Audacious\n" "Copyright 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "排他モードを用いる" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" "ビットパーフェクトオーディオを使用する (デバイスのサンプリングレートを適合さ" @@ -1202,20 +975,20 @@ msgid "Delete" msgstr "削除" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "キャンセル" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "選択したファイルの削除" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "削除の方法" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "ただちに削除するかわりにゴミ箱に移動" @@ -1241,7 +1014,7 @@ msgstr "遅延:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1257,11 +1030,11 @@ msgid "Echo" msgstr "エコー" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "FFmpeg プラグイン" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1384,89 +1157,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr " 8 kbps" +msgid "8 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "ジョイントステレオ" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "ステレオ" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "モノラル" @@ -1578,7 +1351,7 @@ msgid "Quality (0-1):" msgstr "品質 (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "一般" @@ -1587,11 +1360,11 @@ msgid "FLAC Decoder" msgstr "FLAC デコーダー" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "可逆" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1623,7 +1396,7 @@ msgid "Invalid open mode" msgstr "無効なオープンモード" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1643,116 +1416,134 @@ "\n" "ライセンス: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL スペクトラムアナライザー" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "リスト番号" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "項目数" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "タイトル" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "アーティスト" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "年" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "アルバム" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "アルバムアーティスト" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "トラック" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "ジャンル" -#: src/gtkui/columns.cc:43 -msgid "Queue position" +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" msgstr "キューの位置" -#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "長さ" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "ファイルパス" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "カスタムタイトル" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "ファイル名" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "カスタムタイトル" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "ビットレート" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "コメント" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "利用できる列" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "表示された列" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "検索ツール" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "左側にドッキング" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "右側にドッキング" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "上部にドッキング" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "下部にドッキング" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "ドッキングを解く" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "無効" @@ -1792,8 +1583,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "再生(_P)" @@ -1970,8 +1761,8 @@ msgid "Remove _Unavailable Files" msgstr "再生できないファイルを削除(_U)" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "新しいプレイリスト(_N)" @@ -1981,7 +1772,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "削除(_V)" @@ -2112,7 +1903,7 @@ msgstr "すべて選択(_A)" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "名前の変更(_R)" @@ -2140,196 +1931,201 @@ msgid "Show column headers" msgstr "列のヘッダーを表示する" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "曲が変わったらスクロールする" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "GTK インターフェイス" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "バッファ中 ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "再生" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "一時停止" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "ライブラリーを検索" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "ファイルを開く" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "ファイルを追加" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "前へ" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "停止" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "次へ" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "ストリームの録音" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "リピート" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "シャッフル" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "モノラル" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "ステレオ" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d チャンネル" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "シングルモード" -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "プレイリストモード" -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "曲の再生後に停止する" -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "前のトラック" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "一時停止/再開" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "次のトラック" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "ミュート" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "音量を上げる" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "音量を下げる" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "指定したファイルへ移動" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "プレイヤーウィンドウをトグル" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "On-Screen-Display を表示する" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "リピートをトグル" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "シャッフルをトグル" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "現在の曲の再生後に停止する" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "プレイヤウィンドウを表示する" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(なし)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2339,11 +2135,11 @@ "\n" "本当によろしいですか?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "マウスボタンの割り当て" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2351,23 +2147,23 @@ "テキストフィールド内でキーコンビネーションを押してください。\n" "マウスボタンを組み合わせることもできます。" -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "ホットキー:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "動作:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "キーバインド:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "追加 (_A)" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "グローバルホットキー" @@ -2454,16 +2250,16 @@ "再生しています。サンプリング周波数コンバーターを用いて周波数を合わせてくださ" "い。" -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s の設定" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "モジュールのパス:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2474,25 +2270,25 @@ "パスを追加した後は、新しいプラグインをスキャンするためにEnter キーを押してく" "ださい。" -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "利用可能なプラグイン:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "有効" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "有効なプラグイン:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "設定:" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2548,101 +2344,105 @@ msgid "Wait before reconnecting:" msgstr "再接続の待機時間:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "%s が取得できません" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "%s が解析できません" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "歌詞を検索しています ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "エラー" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "M3U プラグイン" @@ -2805,7 +2605,7 @@ msgstr "これらの設定は、Audacious の再起動後に反映されます。" #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "曲の再生後に停止" @@ -2814,41 +2614,17 @@ msgid "Moonstone" msgstr "" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "デフォルトに戻す" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "再生中" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "項目数" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "アルバムアーティスト" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "キューの位置" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "ファイルパス" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "ファイル名" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "カスタムタイトル" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "項目数" @@ -2864,7 +2640,7 @@ msgid "Use accurate length calculation (slow)" msgstr "正確な長さを計算する(遅い)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "サラウンド" @@ -2967,26 +2743,26 @@ msgid "OpenMPT (Module Player)" msgstr "" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "線形" @@ -2998,11 +2774,21 @@ msgid "Windowed sinc" msgstr "" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4 出力" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "OSS3 出力" @@ -3045,18 +2831,35 @@ "#audacious の人々、特に Tony Vroon および John Lindgren、そしてもちろん、OSS " "plugin の前作者に感謝します。" -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "演奏" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "プレイリストマネージャー" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "削除(_R)" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "名前の変更(_A)" @@ -3072,7 +2875,7 @@ msgid "OpenPSF Configuration" msgstr "" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "ファイルに記録されている再生時間を無視" @@ -3153,11 +2956,11 @@ "License: GPLv2+" msgstr "" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "" -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3193,14 +2996,18 @@ msgid "Audio Settings ..." msgstr "オーディオの設定..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Qt インターフェイス" @@ -3413,29 +3220,29 @@ msgid "Library" msgstr "ライブラリー" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d 曲" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "(このジャンル中で)" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "アルバム:" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "アーティスト:" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "検索結果の表示件数:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "起動時にライブラリーを再スキャンする" @@ -3443,7 +3250,7 @@ msgid "Monitor library for changes" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3451,35 +3258,35 @@ "音楽ライブラリーを Audacious へインポートするには、フォルダを選択し、\"再読み" "込み\" アイコンをクリックしてください。" -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "お待ちください..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "フォルダーを選択" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "ライブラリーを検索" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "%d / %d の結果を表示中" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d 件" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "プレイリストを作成(_C)" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "プレイリストに追加(_A)" @@ -3583,108 +3390,108 @@ msgid "Repeat point B set." msgstr "リピートポイントBを設定します。" -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "プリアンプ" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Audacious イコライザー" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "録音中" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "録音停止" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "%d:%-2.2d / %d:%-2.2d へシークする" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "音量: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "バランス: %d%% 左" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "バランス: 中央" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "バランス: %d%% 右" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "オプションメニュー" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "「常に最前面に配置」無効" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "「常に最前面に配置」有効" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "ファイル情報ボックス" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "2倍の大きさで表示" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "視覚化" @@ -3708,10 +3515,6 @@ msgid "Open URL ..." msgstr "URLを開く" -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "演奏" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "プレイリスト" @@ -3726,7 +3529,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "サービス" @@ -3743,7 +3546,7 @@ msgstr "終了" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "曲の情報" @@ -3763,7 +3566,7 @@ msgid "Clear A-B Repeat" msgstr "A-B リピートをクリア" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "指定した曲にジャンプ" @@ -3856,20 +3659,20 @@ msgstr "ファイルを追加" #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "タイトル" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "ファイル名" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "ファイルパス" @@ -3897,113 +3700,113 @@ msgid "Remove Selected" msgstr "選択したエントリの削除" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "検索と選択" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "選択範囲の反転" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "未選択にする" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "全て選択" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "トラック番号" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "アーティスト" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "アルバム" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "アルバムアーティスト" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "リリース日" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "ジャンル" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "長さ" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "カスタムタイトル" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "コメント" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "プレイリストをランダムにする" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "プレイリストを逆順にする" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "選択範囲をソート" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "プレイリストをソート" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "この項目を含むフォルダーを開く" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "切り取り" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "コピー" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "貼り付け" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "末尾に貼り付け" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "キュー/アンキュー" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d / %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Audacious プレイリストエディター" @@ -4019,167 +3822,218 @@ msgid "Add Folder ..." msgstr "フォルダーを追加" -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "有効になっているプレイリストのエントリを検索" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"1 つ以上の項目を入力すると、プレイリストのエントリーが選択できます。項目には" +"正規表現が使え、大文字と小文字を区別しません。正規表現の動作がわからない場合" +"は、検索したい文字をそのまま入力してください。" + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "タイトル: " + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "アルバム: " + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "アーティスト: " + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "ファイル名:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "検索前に前回の選択をクリアする" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "マッチした項目のキューを自動的にトグルする" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "マッチした項目で新しいプレイリストを作成する" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "検索" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "プレイヤー:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "メインウィンドウで使用するフォントの選択" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "プレイリスト:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "プレイリストで使用するフォントの選択" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "スキン" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "フォント" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "ビットマップフォントを使用する (ASCII のみ対応)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "曲のタイトルをスクロール" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "曲のタイトルを両方向にスクロールする" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "アナライザー" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "スコープ" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "声紋 / VU メーター" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "オフ" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "標準" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "ファイア" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "垂直線" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "ライン" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "バー" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "最も遅い" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "遅い" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "中" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "早い" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "最も早い" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "点" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "線" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "ソリッド" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "アイス" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "スムーズ" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "色付け:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "スタイル:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "降下速度:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "ピークの降下速度:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "スコープのスタイル:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "声紋の色付け:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "VU メーターのスタイル:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "タイプ" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "視覚化タイプ:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "アナライザー" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "ピークを表示" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "視覚化" @@ -4191,58 +4045,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Unarchived Winamp 2.x スキン" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "有効になっているプレイリストのエントリを検索" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "検索" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"1 つ以上の項目を入力すると、プレイリストのエントリーが選択できます。項目には" -"正規表現が使え、大文字と小文字を区別しません。正規表現の動作がわからない場合" -"は、検索したい文字をそのまま入力してください。" - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "タイトル: " - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "アルバム: " - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "アーティスト: " - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "ファイル名:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "検索前に前回の選択をクリアする" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "マッチした項目のキューを自動的にトグルする" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "マッチした項目で新しいプレイリストを作成する" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Sndfile プラグイン" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4578,7 +4385,7 @@ #: src/streamtuner/ihr-model.cc:162 msgid "Description" -msgstr "" +msgstr "説明" #: src/streamtuner/shoutcast-model.cc:128 msgid "Listeners" @@ -4728,19 +4535,32 @@ "例:\n" "tone://2000;2005 (2000Hz と 2005Hz のトーンを再生する)" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(追加のメッセージが隠れているかもしれません。)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "処理中 ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "情報" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "ボーカルの除去" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4892,14 +4712,38 @@ "\n" "プラグインのコードの一部は Miles Egan によるものです。" -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2SF デコーダー" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "XSF の設定" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "共有可能な XML プレイリスト (XSPF)" diff -Nru audacious-plugins-4.1/po/ko.po audacious-plugins-4.3.1/po/ko.po --- audacious-plugins-4.1/po/ko.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/ko.po 2023-04-29 20:17:32.000000000 +0000 @@ -4,9 +4,13 @@ # # Translators: # ChoSeongWoo , 2008 +# Junghee Lee , 2021 # Seong-ho Cho , 2013 # Seong-ho Cho , 2012-2013 # Jaegeum Choe , 2001 +# Junghee Lee , 2022-2023 +# Junghee Lee , 2022 +# Junghee Lee , 2021 # Kim ju-gwang , 2015 # kim suhyun , 2019 # Man-Yong Lee , 2000 @@ -18,10 +22,10 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" -"Language-Team: Korean (http://www.transifex.com/audacious/audacious/language/" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Junghee Lee , 2022-2023\n" +"Language-Team: Korean (http://app.transifex.com/audacious/audacious/language/" "ko/)\n" "Language: ko\n" "MIME-Version: 1.0\n" @@ -38,7 +42,7 @@ msgstr "AdPlug (AdLib 재생기)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "순차" @@ -48,11 +52,13 @@ #: src/adplug/adplug-xmms.cc:350 msgid "OPL Emulator:" -msgstr "" +msgstr "OPL 에뮬레이터:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "샘플 레이트:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -68,219 +74,13 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "기타" #: src/adplug/adplug-xmms.cc:356 msgid "Repeat song in endless loop" -msgstr "" - -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "알림" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "알림 설정..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"임의의 시간에 재생을 시작할 때 사용하는 플러그인입니다.\n" -"\n" -"초기에 Adam Feakin과 Daniel Stodden이 작성했습니다." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "기상 알림입니다." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "오늘 약속은..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "약속 알리미" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "월요일" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "화요일" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "수요일" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "목요일" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "금요일" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "토요일" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "일요일" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "시계" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "다음 시간에 알림(기본):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "시" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "다음 시간후 조용히:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "시간" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "분" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "알림을 울릴 날짜를 선택합니다" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "요일" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "기본값" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "일" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "점진적 음량 변화 시간" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "초" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "음량" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "시작" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "끝" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "현재" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "추가 명령" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "활성화" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "재생 목록(선택)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "재생 목록 선택하기" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "옵션" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "이 옵션은 무엇을 의미하나요?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "도움말" +msgstr "무한 루프에서 노래 반복" #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" @@ -298,11 +98,11 @@ "My thanks to William Pitcock, author of the ALSA Output Plugin NG, whose " "code served as a reference when the ALSA manual was not enough." msgstr "" -"오데이셔스용 ALSA 출력 플러그인\n" -"Copyright 2009-2012 John Lindgren\n" +"Audacious용 ALSA 출력 플러그인\n" +"저작권 2009-2012 John Lindgren\n" "\n" -"ALSA 메뉴얼이 충분히 도움이 되지 않았을 때, 코드 참고서가 되어준 ALSA 출력 플" -"러그인 NG의 저작자인 William Pitcock에게 감사드립니다." +"ALSA 매뉴얼이 충분하지 않을 때 코드가 참조 역할을 한 ALSA Output Plugin NG의 " +"작성자인 William Pitcock에게 감사드립니다." #: src/alsa/config.cc:61 msgid "(no description)" @@ -354,6 +154,25 @@ "Tony Vroon\n" "for the good help with alpha testing" msgstr "" +"AMIDI-Plug\n" +"모듈형 MIDI 음악 플레이어\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"글: Giacomo Lozito\n" +"\n" +"\n" +"특별히 감사한 분들...\n" +"\n" +"Clemens Ladisch와 Jaroslav Kysela\n" +"그들의 멋진 프로그램 aplaymidi와 amixer;\n" +"ALSA API에 대해 자세히 알아보기 위해 alsa-lib\n" +"문서들과 함께 정말 유용했습니다.\n" +"\n" +"Alfredo Spadafina\n" +"멋진 미디 키보드 로고\n" +"\n" +"Tony Vroon\n" +"알파 테스트에 대한 충분한 도움" #: src/amidiplug/i_configure.cc:94 msgid "Override default gain:" @@ -377,7 +196,7 @@ #: src/amidiplug/i_configure.cc:128 src/console/plugin.cc:29 msgid "Playback" -msgstr "재생" +msgstr "플레이백" #: src/amidiplug/i_configure.cc:129 msgid "Transpose:" @@ -411,93 +230,89 @@ msgid "Synthesizer" msgstr "신디사이저" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "샘플 주파수:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - 사운드 폰트 파일 선택" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "취소(_C)" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "열기(_O)" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "파일 이름" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "크기(바이트)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "이름:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " 미디 정보 " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "형식:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "길이(밀리초):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "트랙 번호:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "가변" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "빠르기(BPM):" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "빠르기(BPM, wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "박자:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " -msgstr " 미디 주석과 가사 " +msgstr " 미디 주석 및 가사 " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* 이 미디 파일에는 주석이 없습니다 *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* 이 미디 파일에는 가사가 없습니다 *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "닫기(_C)" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (잘못된 UTF-8)" #: src/ampache/ampache.cc:33 msgid "Ampache Browser" -msgstr "" +msgstr "Ampache 브라우저" #: src/ampache/ampache.cc:46 msgid "" @@ -507,6 +322,11 @@ "Copyright (C) Róbert Čerňanský and John Lindgren\n" "License: GNU GPLv3" msgstr "" +"Audacious용 Ampache 브라우저\n" +"http://ampache-browser.org/\n" +"\n" +"저작권 (C) Róbert Čerňanský 및 John Lindgren\n" +"라이선스: GNU GPLv3" #: src/aosd/aosd.cc:31 msgid "" @@ -518,7 +338,7 @@ "Based in part on Evan Martin's Ghosd library:\n" "http://neugierig.org/software/ghosd/" msgstr "" -"오데이셔스 OSD\n" +"Audacious OSD\n" "http://www.develia.org/projects.php?p=audacious#aosd\n" "\n" "Giacomo Lozito 가 작성\n" @@ -528,7 +348,7 @@ #: src/aosd/aosd.h:37 msgid "AOSD (On-Screen Display)" -msgstr "AOSD (화면에 표시)" +msgstr "AOSD (화면 디스플레이)" #: src/aosd/aosd_style.cc:54 msgid "Rectangle" @@ -536,136 +356,136 @@ #: src/aosd/aosd_style.cc:59 msgid "Rounded Rectangle" -msgstr "모서리가 둥근 사각형" +msgstr "둥근 사각형" #: src/aosd/aosd_style.cc:64 msgid "Concave Rectangle" msgstr "오목한 사각형" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "없음" #: src/aosd/aosd_trigger.cc:49 msgid "Playback Start" -msgstr "재생 시작" +msgstr "플레이백 시작" #: src/aosd/aosd_trigger.cc:50 msgid "Triggers OSD when a playlist entry is played." -msgstr "재생 목록의 항목을 재생할 때 OSD를 시작합니다." +msgstr "재생목록의 항목을 재생할 때 OSD를 시작합니다." #: src/aosd/aosd_trigger.cc:55 msgid "Title Change" -msgstr "제목 바꾸기" +msgstr "제목 변경" #: src/aosd/aosd_trigger.cc:56 msgid "Triggers OSD when the song title changes (for internet streams)." -msgstr "" +msgstr "노래 제목이 변경되면 OSD를 트리거합니다(인터넷 스트림의 경우)." #: src/aosd/aosd_trigger.cc:61 msgid "Pause On" -msgstr "일시 정지 활성화" +msgstr "일시정지 켜기" #: src/aosd/aosd_trigger.cc:62 msgid "Triggers OSD when playback is paused." -msgstr "재생을 멈추었을 때 OSD를 시작합니다." +msgstr "플레이백이 일시정지되면 OSD를 트리거합니다." #: src/aosd/aosd_trigger.cc:67 msgid "Pause Off" -msgstr "일시 정지 활성화" +msgstr "일시정지 끄기" #: src/aosd/aosd_trigger.cc:68 msgid "Triggers OSD when playback is unpaused." -msgstr "멈춰진 재생 상태에서 복귀할 때 OSD를 시작합니다." +msgstr "플레이백이 일시정지 해제되면 OSD를 트리거합니다." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "위치" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "상대 X 오프셋:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "상대 Y 오프셋:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" -msgstr "최대 OSD 폭:" +msgstr "최대 OSD 너비:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "다중 모니터 옵션" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" -msgstr "OSD 사용중 표시:" +msgstr "OSD 사용중 보이기:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "모든 모니터" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "%i번 모니터 " -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "타이밍(밀리초)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "디스플레이:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "나타내기 시간:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "사라지기 시간:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "글꼴" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "%i번 글꼴:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "섀도우" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "표현 방식" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "색" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "%i번 색:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "트리거 활성화" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "이벤드" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "합성 관리자를 삭제했습니다" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -675,76 +495,92 @@ "적어도 하나가 실행중인지 알지 못한다면, 합성 관리자를 활성화 해 주십시오. 그" "렇지 않으면 OSD가 제대로 동작하지 않습니다" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "투명도 속이기에 합성 관리자가 필요하지 않습니다" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "투명도" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "투명도 속이기" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "실제 투명도 ( X 합성 확장이 필요합니다 )" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "합성 확장을 불러오지 않았습니다" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" -msgstr "오데이셔스 OSD" +msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "위치" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "애니메이션" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "글자" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "장식" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "트리거" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "기타" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "시험" #: src/asx3/asx3.cc:35 msgid "ASXv3 Playlists" -msgstr "ASXv3 재생 목록" +msgstr "ASXv3 재생목록" #: src/asx/asx.cc:33 msgid "ASXv1/ASXv2 Playlists" -msgstr "ASXv1/ASXv2 재생 목록" +msgstr "ASXv1/ASXv2 재생목록" #: src/audpl/audpl.cc:33 msgid "Audacious Playlists (audpl)" -msgstr "오데이셔스 재생 목록(audpl)" +msgstr "Audacious 재생목록(audpl)" + +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "비트크러셔" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "비트 깊이:" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "다운샘플 비율:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "비트크러셔" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "흐림처리 스코프" @@ -756,6 +592,10 @@ msgid "Presets:" msgstr "설정 목록:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "기본값" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "피드 수준:" @@ -768,7 +608,7 @@ msgid "Cut frequency:" msgstr "주파수 잘라내기:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "스펙트럼 분석기" @@ -787,14 +627,14 @@ "\n" "This was a Google Summer of Code 2007 project." msgstr "" -"Copyright (C) 2007-2012 Calin Crisan and others.\n" +"저작권 (C) 2007-2012 Calin Crisan 및 다른 분들.\n" "\n" -"libcdio 개발자 과\n" +"libcdio 개발자 와\n" "libcddb 개발자 여러분께 감사드립니다.\n" "\n" -"또한 저를 지도해준 Tony Vroon 에게 감사드립니다.\n" +"또한 저를 멘토링하고 안내해 주신 Tony Vroon에게도 감사드립니다.\n" "\n" -"이 프로젝트는 GSoC 2007에서 만들었습니다." +"이것은 Google Summer of Code 2007 프로젝트였습니다." #: src/cdaudio/cdaudio-ng.cc:134 msgid "Device" @@ -863,53 +703,53 @@ msgid "Audio CD" msgstr "오디오 CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "%s CD 장치를 여는데 실패했습니다." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "오디오를 재생할 수 있는 CD 드라이브가 없습니다." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "드라이브가 비어 있습니다." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "지원하지 않는 디스크 형식입니다." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "열려 있는 CD 드라이브 초기화를 끝내는데 실패했습니다." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "첫번째/마지막 트랙 번호를 검색하는데 실패했습니다." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "%d번 트랙에 대한 시작/끝 LSN을 읽을 수 없습니다." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." -msgstr "" +msgstr "CDDB 연결을 만들지 못했습니다." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "CDDB 서버에 요청하는데 실패했습니다." -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "CDDB 서버에 요청하는데 실패했습니다: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" -msgstr "" +msgstr "CDDB 정보를 읽지 못했습니다: %s" #: src/cd-menu-items/cd-menu-items.cc:33 msgid "Audio CD Menu Items" @@ -917,11 +757,11 @@ #: src/cd-menu-items/cd-menu-items.cc:45 msgid "Pla_y CD" -msgstr "" +msgstr "CD 재생(_Y)" #: src/cd-menu-items/cd-menu-items.cc:45 msgid "_Add CD" -msgstr "" +msgstr "CD 추가하기(_A)" #: src/compressor/compressor.cc:45 msgid "Compression" @@ -940,8 +780,8 @@ "Dynamic Range Compression Plugin for Audacious\n" "Copyright 2010-2014 John Lindgren" msgstr "" -"오데이셔스용 다이나믹레인지 플러그인\n" -"Copyright 2010-2014 John Lindgren" +"Audacious용 다이나믹레인지 플러그인\n" +"저작권 2010-2014 John Lindgren" #: src/compressor/compressor.cc:64 msgid "Dynamic Range Compressor" @@ -959,7 +799,7 @@ " Game_Music_Emu 0.5.2 기반 콘솔 음악 디코더 플러그인\n" "지원 형식: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" "\n" -"오데이셔스 플러그인 작성:\n" +"Audacious 플러그인 작성:\n" "William Pitcock \n" "Shay Green " @@ -979,6 +819,13 @@ msgid "Default song length:" msgstr "기본 곡 길이:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "초" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "리샘플링" @@ -1007,7 +854,7 @@ msgid "CoreAudio output" msgstr "PulseAudio 출력" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1018,22 +865,30 @@ "Based on SDL Output Plugin for Audacious\n" "Copyright 2010 John Lindgren" msgstr "" +"Audacious용 CoreAudio 출력 플러그인\n" +"저작권 2014 William Pitcock\n" +"저작권 2017,18 René J.V. Bertin\n" +" (Apple 예제에서 수정한 원본 코드 및 코드, \n" +" (C) Apple 2013)\n" +"\n" +"Audacious용 SDL 출력 플러그인 기반\n" +"저작권 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "전문가모드 사용하기" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" -msgstr "" +msgstr "비트 퍼펙트 오디오 사용(장치 샘플링 속도 조정)" #: src/crossfade/crossfade.cc:43 msgid "" "Crossfade Plugin for Audacious\n" "Copyright 2010-2014 John Lindgren" msgstr "" -"오데이셔스용 크로스페이드\n" -"Copyright 2010-2014 John Lindgren" +"Audacious용 크로스페이드 플러그인\n" +"저작권 2010-2014 John Lindgren" #: src/crossfade/crossfade.cc:47 msgid "Crossfade" @@ -1041,7 +896,7 @@ #: src/crossfade/crossfade.cc:48 msgid "On automatic song change" -msgstr "자동 노래변경 사용하기" +msgstr "자동 곡 변경 시" #: src/crossfade/crossfade.cc:50 src/crossfade/crossfade.cc:56 msgid "Overlap:" @@ -1049,7 +904,7 @@ #: src/crossfade/crossfade.cc:54 msgid "On seek or manual song change" -msgstr "검색 혹은 노래변경" +msgstr "탐색 또는 수동 노래 변경 시" #: src/crossfade/crossfade.cc:60 msgid "Tip" @@ -1086,54 +941,54 @@ #: src/delete-files/delete-files.cc:53 src/delete-files/delete-files.cc:215 #: src/delete-files/delete-files.cc:230 msgid "Delete Files" -msgstr "파일 삭제" +msgstr "파일 삭제하기" #: src/delete-files/delete-files.cc:120 msgid "No files are selected." -msgstr "" +msgstr "파일이 선택되지 않았습니다." #: src/delete-files/delete-files.cc:125 #, c-format msgid "Do you want to move %s to the trash?" -msgstr "" +msgstr "%s을(를) 휴지통으로 이동하시겠습니까?" #: src/delete-files/delete-files.cc:126 #, c-format msgid "Do you want to permanently delete %s?" -msgstr "" +msgstr "%s을(를) 완전히 삭제하시겠습니까?" #: src/delete-files/delete-files.cc:133 #, c-format msgid "Do you want to move %d files to the trash?" -msgstr "" +msgstr "%d 파일을 휴지통으로 이동하시겠습니까?" #: src/delete-files/delete-files.cc:134 #, c-format msgid "Do you want to permanently delete %d files?" -msgstr "" +msgstr "%d 파일을 완전히 삭제하시겠습니까?" #: src/delete-files/delete-files.cc:146 msgid "Move to trash" -msgstr "" +msgstr "휴지통으로 이동" #: src/delete-files/delete-files.cc:146 msgid "Delete" -msgstr "삭제" +msgstr "삭제하기" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "취소" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" -msgstr "선택한 파일 삭제" +msgstr "선택한 파일 삭제하기" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "삭제 방식" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "즉시 삭제하는 대신 휴지통으로 이동" @@ -1147,7 +1002,7 @@ "에코 플러그인 \n" "By Johan Levin, 1999\n" "서라운드 에코 by Carl van Schaik, 1999\n" -"오데이셔스용 업데이트 by William Pitcock and John Lindgren, 2010-2014" +"Audacious용 업데이트 by William Pitcock and John Lindgren, 2010-2014" #: src/echo_plugin/echo.cc:21 msgid "Echo" @@ -1159,7 +1014,7 @@ msgstr "지연:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1175,11 +1030,11 @@ msgid "Echo" msgstr "울림" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "FFmpeg 플러그인" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1189,7 +1044,7 @@ "Matti Hämäläinen " msgstr "" "FFmpeg 멀티미디어 프레임워크를 사용한\n" -"오데이셔스용 다중 형식 오디오 디코딩 플러그인\n" +"Audacious용 다중 형식 오디오 디코딩 플러그인\n" "\n" "오다셔서 플러그인 작성:\n" "William Pitcock \n" @@ -1224,6 +1079,17 @@ "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" +"이 프로그램은 자유 소프트웨어입니다. 자유 소프트웨어 재단에서 발행한 GNU 일" +"반 일반 공중 라이선스의 조건에 따라 이를 재배포 및/또는 수정할 수 있습니다; " +"라이선스 버전 2 또는 (귀하의 선택에 따라) 이후 버전.\n" +"\n" +"이 프로그램은 유용하기를 바라며 배포되지만 어떠한 보증도 없으며 상품성 또는 " +"특정 목적에 대한 적합성에 대한 암묵적인 보증도 없습니다. 자세한 내용은 GNU 일" +"반 공중 라이선스를 참조하십시오.\n" +"\n" +"이 프로그램과 함께 GNU 일반 공중 라이선스를 받았어야 합니다. 그렇지 않은 경" +"우 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, " +"MA 02110-1301, USA에 문의하십시오." #: src/filewriter/filewriter.cc:385 msgid "Output file format:" @@ -1239,7 +1105,7 @@ #: src/filewriter/filewriter.cc:400 msgid "Generate file name from:" -msgstr "" +msgstr "다음에서 파일 이름 생성:" #: src/filewriter/filewriter.cc:401 msgid "Original file name" @@ -1255,7 +1121,7 @@ #: src/filewriter/filewriter.cc:411 msgid "Prepend track number to file name" -msgstr "" +msgstr "파일 이름 앞에 트랙 번호 추가" #: src/filewriter/filewriter.cc:417 src/filewriter/filewriter.cc:449 msgid "Auto" @@ -1289,89 +1155,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "8 kbit/s" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "16 kbit/s" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "32 kbit/s" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "40 kbit/s" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "48 kbit/s" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "56 kbit/s" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "64 kbit/s" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "80 kbit/s" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "96 kbit/s" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "112 kbit/s" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "128 kbit/s" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "160 kbit/s" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "192 kbit/s" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "224 kbit/s" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "256 kbit/s" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "320 kbit/s" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "통합 스테레오" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "스테레오" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "모도" @@ -1381,7 +1247,7 @@ #: src/filewriter/filewriter.cc:457 msgid "ABR" -msgstr "" +msgstr "ABR" #: src/filewriter/filewriter.cc:478 msgid "Algorithm quality:" @@ -1389,7 +1255,7 @@ #: src/filewriter/filewriter.cc:484 msgid "Bitrate:" -msgstr "비트 전송율:" +msgstr "비트 전송속도:" #: src/filewriter/filewriter.cc:491 msgid "Compression ratio:" @@ -1417,15 +1283,15 @@ #: src/filewriter/filewriter.cc:514 msgid "Minimum bitrate:" -msgstr "최소 비트 전송율:" +msgstr "최소 비트 전송속도:" #: src/filewriter/filewriter.cc:518 msgid "Maximum bitrate:" -msgstr "최대 비트 전송율:" +msgstr "최대 비트 전송속도:" #: src/filewriter/filewriter.cc:522 msgid "Average bitrate:" -msgstr "평균 비트 전송율:" +msgstr "평균 비트 전송속도:" #: src/filewriter/filewriter.cc:526 msgid "VBR quality level:" @@ -1433,19 +1299,19 @@ #: src/filewriter/filewriter.cc:530 msgid "Strictly enforce minimum bitrate" -msgstr "최소 비트전송율을 철저하게 강제" +msgstr "최소 비트 전송속도를 엄격히 적용" #: src/filewriter/filewriter.cc:533 msgid "Omit Xing VBR header" -msgstr "" +msgstr "Xing VBR 헤더 생략" #: src/filewriter/filewriter.cc:539 msgid "Frame Headers" -msgstr "" +msgstr "프레임 헤더" #: src/filewriter/filewriter.cc:540 msgid "Mark as copyright" -msgstr "Copyright로 표시" +msgstr "저작권으로 표시" #: src/filewriter/filewriter.cc:542 msgid "Mark as original" @@ -1453,7 +1319,7 @@ #: src/filewriter/filewriter.cc:544 msgid "ID3 Tags" -msgstr "" +msgstr "ID3 태그" #: src/filewriter/filewriter.cc:545 msgid "Force addition of version 2 tag" @@ -1461,11 +1327,11 @@ #: src/filewriter/filewriter.cc:547 msgid "Only add v1 tag" -msgstr "v1 태그만 추가" +msgstr "v1 태그만 추가하기" #: src/filewriter/filewriter.cc:549 msgid "Only add v2 tag" -msgstr "v2 태그만 추가" +msgstr "v2 태그만 추가하기" #: src/filewriter/filewriter.cc:554 msgid "Quality" @@ -1481,9 +1347,9 @@ #: src/filewriter/filewriter.cc:566 msgid "Quality (0-1):" -msgstr "" +msgstr "음질 (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "일반" @@ -1492,11 +1358,11 @@ msgid "FLAC Decoder" msgstr "FLAC 디코더" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "무손실" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1513,8 +1379,8 @@ "GIO Plugin for Audacious\n" "Copyright 2009-2012 John Lindgren" msgstr "" -"오데이셔스용 GIO 플러그인\n" -"Copyright 2009-2012 John Lindgren" +"Audacious용 GIO 플러그인\n" +"저작권 2009-2012 John Lindgren" #: src/gio/gio.cc:42 msgid "GIO Plugin" @@ -1528,7 +1394,7 @@ msgid "Invalid open mode" msgstr "잘못된 열기 모드" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1539,125 +1405,143 @@ "\n" "License: GPLv2+" msgstr "" -"오데이셔스용 OpenGL 스펙트럼 분석 프로그램\n" -"Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" +"Audacious용 OpenGL 스펙트럼 분석 프로그램\n" +"저작권 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" "\n" "XMMS 플러그인 기반:\n" -"Copyright 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, and " +"저작권 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, and " "4Front Technologies\n" "\n" "라이선스: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL 스펙트럼 분석기" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "항목 번호" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "제목" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" -msgstr "음악가" +msgstr "아티스트" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "연도" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "앨범" -#: src/gtkui/columns.cc:40 -msgid "Album artist" -msgstr "앨범 음악가" - #: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr "앨범 아티스트" + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "트랙" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "장르" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "대기 목록 위치" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "큐 위치" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "길이" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "파일 경로" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "사용자 정의 제목" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "파일 이름" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "사용자 정의 제목" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" -msgstr "비트 전송율" +msgstr "비트 전송속도" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "주석" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "게시자" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "범주 번호" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "존재하는 내용" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "표시한 내용" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "검색 도구" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "왼편에 붙이기" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "오른편에 붙이기" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "상단에 붙이기" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "하단에 붙이기" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "떼어내기" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "비활성화" @@ -1672,11 +1556,11 @@ #: src/gtkui/menus.cc:81 src/qtui/menus.cc:113 msgid "_Add Files ..." -msgstr "파일 추가(_A) ..." +msgstr "파일 추가하기(_A) ..." #: src/gtkui/menus.cc:82 src/qtui/menus.cc:118 msgid "Add U_RL ..." -msgstr "URL 추가(_R) ..." +msgstr "URL 추가하기(_R) ..." #: src/gtkui/menus.cc:84 src/qtui/menus.cc:120 msgid "Search _Library" @@ -1697,8 +1581,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "재생(_P)" @@ -1711,7 +1595,7 @@ #: src/gtkui/menus.cc:94 src/qtui/menus.cc:139 #: src/statusicon-qt/statusicon.cc:108 src/statusicon/statusicon.cc:278 msgid "_Stop" -msgstr "정지(_S)" +msgstr "중지(_S)" #: src/gtkui/menus.cc:95 src/qtui/menus.cc:141 #: src/statusicon-qt/statusicon.cc:109 src/statusicon/statusicon.cc:279 @@ -1726,12 +1610,12 @@ #: src/gtkui/menus.cc:97 src/qtui/menus.cc:145 src/skins/menus.cc:114 #: src/skins-qt/menus.cc:105 msgid "Previous Album" -msgstr "" +msgstr "이전 앨범" #: src/gtkui/menus.cc:98 src/qtui/menus.cc:146 src/skins/menus.cc:115 #: src/skins-qt/menus.cc:106 msgid "Next Album" -msgstr "" +msgstr "다음 앨범" #: src/gtkui/menus.cc:100 src/qtui/menus.cc:148 msgid "_Repeat" @@ -1739,19 +1623,19 @@ #: src/gtkui/menus.cc:101 src/qtui/menus.cc:150 msgid "S_huffle" -msgstr "뒤섞기(_H)" +msgstr "순서섞기(_H)" #: src/gtkui/menus.cc:102 src/qtui/menus.cc:152 msgid "Shuffle by Albu_m" -msgstr "앨범 단위로 임의 재생(_M)" +msgstr "앨범별로 순서섞기(_M)" #: src/gtkui/menus.cc:103 src/qtui/menus.cc:155 msgid "N_o Playlist Advance" -msgstr "재생 목록 미리 알리지 않음(_O)" +msgstr "재생목록 진행 없음(_O)" #: src/gtkui/menus.cc:104 src/qtui/menus.cc:157 msgid "Stop A_fter This Song" -msgstr "이 노래 다음 멈춤(_F)" +msgstr "이 곡 재생 후 중지(_F)" #: src/gtkui/menus.cc:106 src/gtkui/menus.cc:208 src/qtui/menus.cc:162 #: src/qtui/menus.cc:292 @@ -1789,7 +1673,7 @@ #: src/gtkui/menus.cc:118 src/qtui/menus.cc:175 msgid "By File _Path" -msgstr "파일 경로 순(_P)" +msgstr "파일 경로순(_P)" #: src/gtkui/menus.cc:122 src/gtkui/menus.cc:139 src/qtui/menus.cc:179 #: src/qtui/menus.cc:196 @@ -1799,22 +1683,22 @@ #: src/gtkui/menus.cc:124 src/gtkui/menus.cc:141 src/qtui/menus.cc:181 #: src/qtui/menus.cc:198 msgid "By _Artist" -msgstr "음악가 이름순(_A)" +msgstr "아티스트순(_A)" #: src/gtkui/menus.cc:125 src/gtkui/menus.cc:142 src/qtui/menus.cc:182 #: src/qtui/menus.cc:199 msgid "By Al_bum" -msgstr "앨범 이름순(_B)" +msgstr "앨범순(_B)" #: src/gtkui/menus.cc:126 src/gtkui/menus.cc:143 src/qtui/menus.cc:183 #: src/qtui/menus.cc:200 msgid "By Albu_m Artist" -msgstr "앨범 작곡가순(_M)" +msgstr "앨범 아티스트순(_M)" #: src/gtkui/menus.cc:127 src/gtkui/menus.cc:144 src/qtui/menus.cc:184 #: src/qtui/menus.cc:201 msgid "By Release _Date" -msgstr "출시 일자순(_D)" +msgstr "출시일순(_D)" #: src/gtkui/menus.cc:128 src/gtkui/menus.cc:145 src/qtui/menus.cc:185 #: src/qtui/menus.cc:202 @@ -1839,7 +1723,7 @@ #: src/gtkui/menus.cc:132 src/gtkui/menus.cc:149 src/qtui/menus.cc:189 #: src/qtui/menus.cc:206 msgid "By C_omment" -msgstr "설명순(_O)" +msgstr "주석순(_O)" #: src/gtkui/menus.cc:134 src/gtkui/menus.cc:151 src/qtui/menus.cc:191 #: src/qtui/menus.cc:208 @@ -1853,7 +1737,7 @@ #: src/gtkui/menus.cc:156 src/qtui/menus.cc:214 msgid "_Play/Resume" -msgstr "재생/복귀(_P)" +msgstr "재생하기/이어듣기(_P)" #: src/gtkui/menus.cc:157 src/qtui/menus.cc:216 msgid "_Refresh" @@ -1875,8 +1759,8 @@ msgid "Remove _Unavailable Files" msgstr "사용할 수 없는 파일 제거(_U)" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "새 파일(_N)" @@ -1886,7 +1770,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "제거(_V)" @@ -1900,7 +1784,7 @@ #: src/gtkui/menus.cc:171 src/qtui/menus.cc:235 msgid "Playlist _Manager ..." -msgstr "재생 목록 관리자(_M) ..." +msgstr "재생목록 관리자(_M) ..." #: src/gtkui/menus.cc:172 src/qtui/menus.cc:237 msgid "_Queue Manager ..." @@ -1940,7 +1824,7 @@ #: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 msgid "Show Info Bar _Album Art" -msgstr "" +msgstr "정보 표시줄 앨범 표지 표시(_A)" #: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 msgid "Show Info Bar Vis_ualization" @@ -1965,11 +1849,11 @@ #: src/gtkui/menus.cc:200 src/qtui/menus.cc:279 msgid "_Playback" -msgstr "재생(_P)" +msgstr "플레이백(_P)" #: src/gtkui/menus.cc:201 src/qtui/menus.cc:280 msgid "P_laylist" -msgstr "재생 목록(_L)" +msgstr "재생목록(_L)" #: src/gtkui/menus.cc:202 src/gtkui/menus.cc:220 src/qtui/menus.cc:281 #: src/qtui/menus.cc:310 @@ -2017,235 +1901,243 @@ msgstr "모두 선택(_A)" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "이름 바꾸기(_R) ..." #: src/gtkui/settings.cc:35 src/qtui/settings.cc:63 msgid "Playlist Tabs" -msgstr "재생 목록 탭" +msgstr "재생목록 탭" #: src/gtkui/settings.cc:36 msgid "Always show tabs" -msgstr "항상 탭 표시" +msgstr "항상 탭 표시하기" #: src/gtkui/settings.cc:38 src/qtui/settings.cc:68 msgid "Show entry counts" -msgstr "항목 갯수 표시" +msgstr "항목 갯수 표시하기" #: src/gtkui/settings.cc:40 src/qtui/settings.cc:71 msgid "Show close buttons" -msgstr "닫기 단추 표시" +msgstr "닫기 단추 표시하기" #: src/gtkui/settings.cc:42 src/qtui/settings.cc:74 msgid "Playlist Columns" -msgstr "재생 목록 내용" +msgstr "재생목록 내용" #: src/gtkui/settings.cc:44 src/qtui/settings.cc:76 msgid "Show column headers" -msgstr "내용 헤더 표시" +msgstr "내용 헤더 표시하기" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "도구모음에서 기호 아이콘 사용하기" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" -msgstr "곡 바뀔 때 스크롤" +msgstr "곡 변경 시 스크롤" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "GTK 인터페이스" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" -msgstr "%s - 오데이셔스" +msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "버퍼링 ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" -msgstr "오데이셔스" +msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "재생" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" -msgstr "일시 정지" +msgstr "일시정지" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "라이브러리 검색" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "파일 열기" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" -msgstr "파일 추가" +msgstr "파일 추가하기" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "이전" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" -msgstr "정지" +msgstr "중지" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "다음" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "스트림 녹음" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "반복" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "뒤섞기" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" -msgstr "" +msgstr "메뉴" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "모노" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "스테레오" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "채널 %d개" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "%d kbit/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "싱글 모드입니다." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." -msgstr "재생 목록 모드입니다." +msgstr "재생목록 모드입니다." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." -msgstr "곡 재생 후 멈추는 중입니다." +msgstr "곡이 끝나면 멈춥니다." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "이전 트랙" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" -msgstr "일시 정지/재개" +msgstr "일시정지/이어듣기" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "다음 트랙" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" -msgstr "" +msgstr "빨리감기" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" -msgstr "" +msgstr "되감기" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "음소거" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "음량 증가" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "음량 감소" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "파일로 건너뛰기" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "재생 창 전환" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" -msgstr "화면에 표시 보이기" +msgstr "화면 디스플레이 표시하기" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "반복 전환" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "임의재생 전환" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" -msgstr "현재 곡 이후 멈춤여부 전환" +msgstr "현재 곡 이후 중지상태 전환" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "재생 창 복귀" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(없음)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" "Do you want to continue?" msgstr "" +"수정자 없이 기본 마우스 단추를 바인드하지 않는 것이 좋습니다.\n" +"\n" +"계속하시겠습니까?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "마우스 단추 바인딩하기" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2253,23 +2145,23 @@ "텍스트 필드에서 키 조합을 누르십시오.\n" "마우스 단추도 넣을 수 있습니다." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "단축키:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "동작:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "키 바인딩:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" -msgstr "추가(_A)" +msgstr "추가하기(_A)" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "전역 단축키" @@ -2287,6 +2179,17 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"전역 단축키 플러그인\n" +"전역 키 조합 또는 멀티미디어 키로 플레이어를 제어합니다.\n" +"\n" +"저작권 (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"기여자는 다음과 같습니다:\n" +"저작권 (C) 2006-2007 Vladimir Paskov \n" +"저작권 (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " #: src/jack/jack-ng.cc:54 msgid "JACK Output" @@ -2294,7 +2197,7 @@ #: src/jack/jack-ng.cc:126 msgid "Client name:" -msgstr "" +msgstr "클라이언트 이름:" #: src/jack/jack-ng.cc:128 msgid "Automatically connect to output ports" @@ -2302,32 +2205,32 @@ #: src/jack/jack-ng.cc:130 msgid "Filter ports (regex, use any port if blank):" -msgstr "" +msgstr "필터 포트(정규식, 비어 있는 경우 아무 포트나 사용):" #: src/jack/jack-ng.cc:136 msgid "Connect to physical ports only" -msgstr "" +msgstr "물리적 포트에만 연결" #: src/jack/jack-ng.cc:139 msgid "Upmix to" -msgstr "" +msgstr "업믹스 사용" #: src/jack/jack-ng.cc:141 msgid "ports if input has fewer channels" -msgstr "" +msgstr "입력에 더 적은 수의 채널이 있는 경우 왼쪽으로 향함" #: src/jack/jack-ng.cc:143 msgid "Ignore insufficient number of ports" -msgstr "" +msgstr "포트 수 부족 무시" #: src/jack/jack-ng.cc:181 msgid "No JACK output ports were found. Please check settings." -msgstr "" +msgstr "JACK 출력 포트를 찾을 수 없습니다. 설정을 확인하십시오." #: src/jack/jack-ng.cc:195 #, c-format msgid "Only %d JACK output ports were found but %d are required." -msgstr "" +msgstr "%d JACK 출력 포트만 발견되었지만 %d가 필요합니다." #: src/jack/jack-ng.cc:210 #, c-format @@ -2344,7 +2247,7 @@ #: src/jack/jack-ng.cc:245 msgid "Failed to connect to the JACK server; is it running?" -msgstr "" +msgstr "JACK 서버에 연결하지 못했습니다. 실행 중입니까?" #: src/jack/jack-ng.cc:321 #, c-format @@ -2352,17 +2255,19 @@ "The JACK server requires a sample rate of %d Hz, but Audacious is playing at " "%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." msgstr "" +"JACK 서버에는 %dHz의 샘플 레이트가 필요하지만 Audacious는 %dHz에서 재생됩니" +"다. 불일치를 수정하려면 샘플 레이트 변환기 효과를 사용하십시오." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s 설정" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "모듈 경로:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2372,31 +2277,31 @@ "이 경로를 LADSPA_PATH에서도 찾았습니다.\n" "새 플러그인을 검색하려면 새 경로를 추가하고 Enter 키를 누르십시오." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "사용할 수 있는 플러그인:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "활성화" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "활성화한 플러그인:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "설정" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" msgstr "" -"오데이셔스용 LADSPA 호스트\n" -"Copyright 2011 John Lindgren" +"Audacious용 LADSPA 호스트\n" +"저작권 2011 John Lindgren" #: src/ladspa/plugin.h:78 msgid "LADSPA Host" @@ -2421,17 +2326,18 @@ "\n" "For more information about LIRC, see http://lirc.org." msgstr "" -"LIRC 원격 제어 데몬을 사용하여 오데이셔스를 제어하기 위한 간단한 플러그인\n" +"LIRC 원격 제어 데몬을 사용하여 Audacious를 제어하는 간단한 플러그인\n" "\n" -"오데이셔스에 적용함:Tony Vroon \n" +"Audacious에 맞게 조정됨:\n" +"Tony Vroon \n" "Joonas Harjumäki \n" "\n" -"XMMS LIRC 플러그인 기반 작성:\n" +"XMMS LIRC 플러그인에 따라 작성:\n" "Carl van Schaik \n" "Christoph Bartelmus \n" "Andrew O. Shadoura \n" "\n" -"LIRC에 대한 자세한 내용은, http://lirc.org를 보십시오." +"LIRC에 대한 자세한 내용은, http://lirc.org 를 참조하십시오." #: src/lirc/lirc.cc:390 msgid "Connection" @@ -2445,103 +2351,109 @@ msgid "Wait before reconnecting:" msgstr "다시 연결하기 전에 대기중:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" -msgstr "" +msgstr "가사" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" -msgstr "" +msgstr "아무데도" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" -msgstr "" +msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" +"아티스트는 시작 부분에서 잘리고 제목은 -- 끝 부분에서 잘립니다." -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" -msgstr "" +msgstr "잘라낼 문자:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" -msgstr "" +msgstr "문자는 공백으로 둘러싸인 정규 표현식에서 OR 처리됩니다" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" -msgstr "" +msgstr "분할할 문자:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" -msgstr "" +msgstr "문자에서 해당 문자를 추가로 잘라냅니다" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" -msgstr "" +msgstr "일반" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" -msgstr "" +msgstr "제목을 아티스트와 문자 제목으로 분할" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "소스" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "삽입된 가사 사용하기 (가사 태그에서)" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "인터넷에서 가사 가져오기:" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" -msgstr "" +msgstr "가져온 가사를 로컬 캐시에 저장" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" -msgstr "" +msgstr "로컬 저장소" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" -msgstr "" +msgstr "로컬 저장소에서 가사 파일(.lrc) 불러오기" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "%s을(를) 가져올 수 없습니다" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "%s을(를) 해석할 수 없습니다" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "가사 검색중..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "오류" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." -msgstr "" +msgstr "가사를 찾을 수 없습니다." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." -msgstr "" +msgstr "제목 및/또는 아티스트가 누락되었습니다." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" -msgstr "" +msgstr "로컬에 저장" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" -msgstr "" +msgstr "새로 고침" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" -msgstr "M3U 재생 목록" +msgstr "M3U 재생목록" #: src/metronom/metronom.cc:44 msgid "Tact Generator" @@ -2580,8 +2492,8 @@ "Channel Mixer Plugin for Audacious\n" "Copyright 2011-2012 John Lindgren and Michał Lipski" msgstr "" -"오데이셔스용 채널 음량 조절기 플러그인\n" -"Copyright 2011-2012 John Lindgren and Michał Lipski" +"Audacious용 채널 음량 조절기 플러그인\n" +"저작권 2011-2012 John Lindgren and Michał Lipski" #: src/mixer/mixer.cc:259 msgid "Channel Mixer" @@ -2625,7 +2537,7 @@ #: src/modplug/plugin_main.cc:63 msgid "Sample rate" -msgstr "샘플링 주파수" +msgstr "샘플 레이트:" #: src/modplug/plugin_main.cc:64 msgid "22 kHz" @@ -2694,53 +2606,29 @@ #: src/modplug/plugin_main.cc:124 src/sid/xs_config.cc:106 msgid "These settings will take effect when Audacious is restarted." -msgstr "이 설정은 오데이셔스가 다시 시작할때 적용됩니다." +msgstr "이 설정은 Audacious가 다시 시작할때 적용됩니다." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" -msgstr "이 곡 다음 멈춤" +msgstr "이 곡 재생 후 중지" #: src/moonstone/moonstone.cc:39 msgid "Moonstone" -msgstr "" +msgstr "월장석" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "기본 값으로 재설정" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "재생 중" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "항목 번호" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "앨범 음악가" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "큐 위치" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "파일 경로" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "파일 이름" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "사용자 정의 제목" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "항목" @@ -2754,9 +2642,9 @@ #: src/mpg123/mpg123.cc:82 msgid "Use accurate length calculation (slow)" -msgstr "" +msgstr "정확한 길이 계산 사용(느림)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "서라운드" @@ -2786,11 +2674,11 @@ #: src/notify/event.cc:97 msgid "Stopped" -msgstr "정지함" +msgstr "중지됨" #: src/notify/event.cc:97 msgid "Audacious is not playing." -msgstr "오데이셔스가 재생중이 아닙니다." +msgstr "Audacious가 재생중이 아닙니다." #: src/notify/notify.cc:39 msgid "Desktop Notifications" @@ -2816,80 +2704,95 @@ "this program. If not, see ." msgstr "" "Audacious용 데스크톱 알림 플러그인\n" -"Copyright (C) 2010 Maximilian Bogner\n" -"Copyright (C) 2011-2013 John Lindgren and Jean-Alexandre Anglès d'Auriac\n" +"저작권 (C) 2010 Maximilian Bogner\n" +"저작권 (C) 2011-2013 John Lindgren 및 Jean-Alexandre Anglès d'Auriac\n" "\n" -"이 플러그인은 자유 소프트웨어입니다; 자유 소프트웨어 재단이 발표한 GNU 일반 " -"공중 사용허가서 3판(또는 여러분의 선택에 따라) 이상의 조항에 따라 재배포 또" -"는 수정할 수 있습니다.\n" -"\n" -"이 프로그램이 유용하게 사용되길 바라지만 그 어떤 보증도 없으며 심지어는 상업" -"적 보증이나 일부 목적의 적합성에 대한 암시적 보증도 하지 않습니다. 자세한 내" -"용은 GNU 일반 공중 사용허가서를 보십시오.\n" +"이 플러그인은 자유 소프트웨어입니다; 자유 소프트웨어 재단에서 발행한 GNU 일" +"반 공중 라이선스, 라이선스 버전 3 또는 (귀하의 선택에 따라) 이후 버전의 조건" +"에 따라 이를 재배포 및/또는 수정할 수 있습니다.\n" +"\n" +"이 플러그인은 유용할 것이라는 희망으로 배포되지만 어떠한 보증도 하지 않습니" +"다. 상품성 또는 특정 목적에의 적합성에 대한 묵시적 보증도 없이. 자세한 내용" +"은 GNU 일반 공중 라이선스를 참조하십시오.\n" "\n" -"이 프로그램과 함께 GNU 일반 공중 사용 허가서 사본을 받아야 합니다. 만약 사본" -"이 없다면 링크를 참조하십시오." +"이 프로그램과 함께 GNU 일반 공중 라이선스를 받았어야 합니다. 그렇지 않은 경" +"우 를 참조하십시오." #: src/notify/notify.cc:104 msgid "Show playback controls" -msgstr "재생 컨트롤 표시" +msgstr "플레이백 컨트롤 표시하기" #: src/notify/notify.cc:106 msgid "Always show notification" -msgstr "항상 알림 표시" +msgstr "항상 알림 표시하기" #: src/notify/notify.cc:108 msgid "Include album name in notification" -msgstr "속성에 앨범명 포함" +msgstr "알림에 앨범 이름 포함" #: src/notify/notify.cc:110 msgid "Custom notification duration:" -msgstr "" +msgstr "사용자 지정 알림 기간:" #: src/notify/osd.cc:74 msgid "Show" -msgstr "보이기" +msgstr "표시하기" #: src/openmpt/mpt.cc:50 msgid "OpenMPT (Module Player)" -msgstr "" +msgstr "OpenMPT (모듈 재생기)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" +"libopenmpt 기반 모듈 재생기\n" +"\n" +"작성자: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" -msgstr "" +msgstr "스테레오 분리:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" -msgstr "" +msgstr "보간:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" -msgstr "" +msgstr "선형" #: src/openmpt/mptwrap.h:52 msgid "Cubic" -msgstr "" +msgstr "큐빅" #: src/openmpt/mptwrap.h:53 msgid "Windowed sinc" +msgstr "창으로 된 싱크" + +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "Opus 디코더" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" msgstr "" +"Audacious용 Opus 디코더 플러그인\n" +"Copyright 2022 Thomas Lange" -#: src/oss4/oss.h:75 +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4 출력" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "OSS3 출력" @@ -2911,7 +2814,7 @@ #: src/oss4/plugin.cc:87 msgid "Enable format conversions made by the OSS software." -msgstr "OSS 소프트웨어가 만드는 형 변환을 활성화 합니다." +msgstr "OSS 소프트웨어에서 만든 형식 변환을 활성화합니다." #: src/oss4/plugin.cc:89 msgid "Enable exclusive mode to prevent virtual mixing." @@ -2925,30 +2828,52 @@ "I would like to thank people on #audacious, especially Tony Vroon and John " "Lindgren and of course the authors of the previous OSS plugin." msgstr "" -"오데이셔스용 OSS4 출력 플러그인\n" -"Copyright 2010-2012 Michał Lipski\n" +"Audacious용 OSS4 출력 플러그인\n" +"저작권 2010-2012 Michał Lipski\n" "\n" -"#audacious 채널 사람, 특히 Tony Vroon, John Lindgren, 이전에 OSS 플러그인을 " -"만든 저작자분께 감사드리고 싶습니다." +"저는 #audacious 채널의 사람들, 특히 Tony Vroon과 John Lindgren, 그리고 물론 " +"이전 OSS 플러그인의 작성자분들께 감사드리고 싶습니다." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "PipeWire 출력" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" +"Audacious용 PipeWire 출력 플러그인\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Qmmp용 PipeWire 출력 플러그인 기반\n" +"Copyright 2021 Ilya Kotov" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "플레이백" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" -msgstr "재생 목록 관리자" +msgstr "재생목록 관리자" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "제거(_R)" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "이름 바꾸기(_A)" #: src/pls/pls.cc:35 msgid "PLS Playlists" -msgstr "PLS 재생 목록" +msgstr "PLS 재생목록" #: src/psf/plugin.cc:53 msgid "OpenPSF PSF1/PSF2 Decoder" @@ -2956,11 +2881,11 @@ #: src/psf/plugin.cc:270 msgid "OpenPSF Configuration" -msgstr "" +msgstr "OpenPSF 구성" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" -msgstr "" +msgstr "파일의 길이 무시" #: src/pulse/pulse_audio.cc:42 msgid "PulseAudio Output" @@ -2968,11 +2893,11 @@ #: src/pulse/pulse_audio.cc:72 msgid "Context name:" -msgstr "" +msgstr "컨텍스트 이름:" #: src/pulse/pulse_audio.cc:74 msgid "Stream name:" -msgstr "" +msgstr "스트림 이름:" #: src/pulse/pulse_audio.cc:575 msgid "" @@ -2992,6 +2917,19 @@ "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" +"Audacious PulseAudio 출력 플러그인\n" +"\n" +"이 프로그램은 자유 소프트웨어입니다. 자유 소프트웨어 재단에서 발행한 GNU 일" +"반 공중 라이선스의 조건에 따라 이를 재배포 및/또는 수정할 수 있습니다; 라이선" +"스 버전 2 또는 (귀하의 선택에 따라) 이후 버전.\n" +"\n" +"이 프로그램은 유용할 것이라는 희망으로 배포되지만 어떠한 보증도 하지 않습니" +"다. 상품성 또는 특정 목적에의 적합성에 대한 묵시적 보증도 없이. 자세한 내용" +"은 GNU 일반 공중 라이선스를 참조하십시오.\n" +"\n" +"이 프로그램과 함께 GNU 일반 공중 라이선스를 받았어야 합니다. 그렇지 않은 경" +"우 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, " +"MA 02110-1301, USA에 문의하십시오." #: src/qtaudio/qtaudio.cc:44 msgid "QtMultimedia Output" @@ -3005,11 +2943,11 @@ "Based on SDL Output Plugin for Audacious\n" "Copyright 2010 John Lindgren" msgstr "" -"오데이셔스용 QtMultimedia 음성 출력 플러그인\n" -"Copyright 2014 William Pitcock\n" +"Audacious용 QtMultimedia 음성 출력 플러그인\n" +"저작권 2014 William Pitcock\n" "\n" -"오데이셔스용 SDL 출력 플러그인 기반임\n" -"Copyright 2010 John Lindgren" +"Audacious용 SDL 출력 플러그인 기반임\n" +"저작권 2010 John Lindgren" #: src/qtglspectrum/gl-spectrum.cc:41 msgid "" @@ -3023,12 +2961,21 @@ "\n" "License: GPLv2+" msgstr "" +"Audacious용 OpenGL 스펙트럼 분석기\n" +"저작권 2013 Christophe Budé, John Lindgren, 및 Carlo Bramini\n" +"저작권 2014, 2020 Ariadne Conill\n" +"\n" +"XMMS 플러그인 기반:\n" +"저작권 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, 및 " +"4Front Technologies\n" +"\n" +"라이선스: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." -msgstr "" +msgstr "텍스트 필드 내에서 키 조합을 누르십시오." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3043,6 +2990,18 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"전역 단축키 플러그인\n" +"전역 키 조합 또는 멀티미디어 키로 플레이어를 제어합니다.\n" +"\n" +"저작권 (C) 2020 i.Dark_Templar \n" +"저작권 (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"기여자는 다음과 같습니다:\n" +"저작권 (C) 2006-2007 Vladimir Paskov \n" +"저작권 (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " #: src/qtui/menus.cc:109 msgid "_Open Folder ..." @@ -3050,7 +3009,7 @@ #: src/qtui/menus.cc:115 msgid "_Add Folder ..." -msgstr "폴더 추가(_A)..." +msgstr "폴더 추가하기(_A) ..." #: src/qtui/menus.cc:128 msgid "_Log Inspector ..." @@ -3064,13 +3023,17 @@ msgid "Audio Settings ..." msgstr "오디오 설정..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" -msgstr "" +msgstr "Q#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" -msgstr "" +msgstr "T#" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "C#" #: src/qtui/qtui.cc:40 msgid "Qt Interface" @@ -3078,39 +3041,39 @@ #: src/qtui/search_bar.cc:46 msgid "Search playlist" -msgstr "재생 목록 검색" +msgstr "재생목록 검색" #: src/qtui/settings.cc:58 msgid "Always" -msgstr "" +msgstr "항상" #: src/qtui/settings.cc:59 msgid "Auto-hide" -msgstr "" +msgstr "자동 숨김" #: src/qtui/settings.cc:60 msgid "Never" -msgstr "" +msgstr "없음" #: src/qtui/settings.cc:64 msgid "Show playlist tabs:" -msgstr "" +msgstr "재생목록 탭 표시:" #: src/qtui/settings.cc:78 msgid "Use bold font for column headers" -msgstr "" +msgstr "열 헤더에 굵은 글꼴 사용" #: src/resample/resample.cc:43 msgid "Sample Rate Converter" -msgstr "샘플 주파수 변환기" +msgstr "샘플 레이트 변환기" #: src/resample/resample.cc:183 msgid "" "Sample Rate Converter Plugin for Audacious\n" "Copyright 2010-2012 John Lindgren" msgstr "" -"오데이셔스용 샘플 주파수 변환 플러그인\n" -"Copyright 2010-2012 John Lindgren" +"Audacious용 샘플 레이트 변환기 플러그인\n" +"저작권 2010-2012 John Lindgren" #: src/resample/resample.cc:187 msgid "Skip/repeat samples" @@ -3201,21 +3164,25 @@ "Your scrobbles are being saved on your computer temporarily. They will be " "submitted as soon as Audacious is allowed access." msgstr "" +"사용자의 스크러블이 컴퓨터에 일시적으로 저장되고 있습니다. Audious의 접근이 " +"허락되는 대로 제출될 것입니다." #: src/scrobbler2/config_window.cc:33 #, c-format msgid "Permission granted. Scrobbling for user %s." -msgstr "" +msgstr "권한이 부여되었습니다. 사용자 %s에 대한 스크러블링입니다." #: src/scrobbler2/config_window.cc:37 msgid "" "Permission denied. Open the following URL in a browser, allow Audacious " "access to your account, and then click 'Check Permission' again:" msgstr "" +"권한이 거부되었습니다. 브라우저에서 다음 URL을 열고 계정에 대한 Audacious 액" +"세스를 허용한 다음 '권한 확인'을 다시 클릭합니다:" #: src/scrobbler2/config_window.cc:47 msgid "There was a problem contacting Last.fm." -msgstr "" +msgstr "Last.fm에 접속하는 동안 문제가 발생했습니다." #: src/scrobbler2/config_window.cc:86 msgid "Check Permission" @@ -3228,6 +3195,8 @@ #: src/scrobbler2/config_window.cc:91 msgid "You need to allow Audacious to scrobble tracks to your Last.fm account." msgstr "" +"Audacious가 사용자의 Last.fm 계정으로 트랙을 스크롤할 수 있도록 허용해야 합니" +"다." #: src/scrobbler2/scrobbler.cc:29 msgid "Scrobbler 2.0" @@ -3251,9 +3220,9 @@ "project.\n" "\n" msgstr "" -"Audacious Scrobbler Plugin 2.0 by Pitxyoki,\n" +"Pitxyoki의 Audacious Scrobbler 플러그인 2.0,\n" "\n" -"Copyright © 2012-2013 Luís M. Picciochi Oliveira \n" +"저작권 © 2012-2013 Luís M. Picciochi Oliveira \n" "\n" "이 프로젝트를 시작하는데 도움을 준 John Lindgren에게 감사드립니다.\n" "\n" @@ -3275,83 +3244,83 @@ "SDL Output Plugin for Audacious\n" "Copyright 2010 John Lindgren" msgstr "" -"오데이셔스용 SDL 출력 플러그인\n" -"Copyright 2010 John Lindgren" +"Audacious용 SDL 출력 플러그인\n" +"저작권 2010 John Lindgren" #: src/search-tool/library.cc:35 src/search-tool/library.cc:46 #: src/search-tool-qt/library.cc:35 src/search-tool-qt/library.cc:46 msgid "Library" msgstr "라이브러리" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "노래 %d곡" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr ": 이 장르에 해당" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" -msgstr "" +msgstr "앨범:" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" -msgstr "" +msgstr "아티스트:" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" -msgstr "" +msgstr "표시할 결과 수:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" -msgstr "" +msgstr "시작 시 라이브러리 다시 스캔" #: src/search-tool-qt/search-tool-qt.cc:170 msgid "Monitor library for changes" -msgstr "" +msgstr "변경사항에 대한 라이브러리 모니터링" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." msgstr "" -"음악 라이브러리를 오데이셔스로 가져오려면 폴더를 선택하고 \"새로고침\"아이콘" +"음악 라이브러리를 Audacious로 가져오려면 폴더를 선택하고 \"새로고침\"아이콘" "을 누르십시오." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "기다려 주십시오 ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "폴더 선택" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "라이브러리 검색" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" -msgstr[0] "" +msgstr[0] "%d / %d의 결과 표시됨" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "결과 %d개" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" -msgstr "재생 목록 만들기(_C)" +msgstr "재생목록 만들기(_C)" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" -msgstr "재생 목록 추가하기(_A)" +msgstr "재생목록 추가하기(_A)" #: src/sid/xmms-sid.cc:43 msgid "SID Player" @@ -3387,11 +3356,11 @@ #: src/sid/xs_config.cc:80 msgid "Playback time" -msgstr "재생 시간" +msgstr "플레이백 시간" #: src/sid/xs_config.cc:81 msgid "Set maximum playback time:" -msgstr "최대 재생 시간 설정:" +msgstr "최대 플레이백 시간 설정:" #: src/sid/xs_config.cc:87 msgid "Use only when song length is unknown" @@ -3399,11 +3368,11 @@ #: src/sid/xs_config.cc:90 msgid "Set minimum playback time:" -msgstr "최소 재생 시간 설정:" +msgstr "최소 플레이백 시간 설정:" #: src/sid/xs_config.cc:96 msgid "Subtunes" -msgstr "" +msgstr "서브튠스" #: src/sid/xs_config.cc:97 msgid "Enable subtunes" @@ -3426,8 +3395,8 @@ "Silence Removal Plugin for Audacious\n" "Copyright 2014 John Lindgren" msgstr "" -"오데이셔스용 무음 제거 플러그인\n" -"Copyright 2014 John Lindgren" +"Audacious용 무음 제거 플러그인\n" +"저작권 2014 John Lindgren" #: src/silence-removal/silence-removal.cc:67 msgid "Silence Removal" @@ -3453,108 +3422,108 @@ msgid "Repeat point B set." msgstr "B 반복 시점을 설정했습니다." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "프리앰프" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" -msgstr "오데이셔스 이퀄라이저" +msgstr "Audacious 이퀄라이저" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "녹음 켜기" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "녹음 끄기" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "%d 탐색:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "음량: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "균형: %d%% 왼쪽" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "균형: 가운데" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "균형: %d%% 오른쪽" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "옵션 메뉴" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "'항상 위' 비활성화" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "'항상 위' 활성화" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "파일 정보 상자" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "두배 길이" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "시각화" @@ -3578,13 +3547,9 @@ msgid "Open URL ..." msgstr "URL 열기..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "재생" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" -msgstr "재생 목록" +msgstr "재생목록" #: src/skins/menus.cc:90 src/skins-qt/menus.cc:81 msgid "Output" @@ -3596,7 +3561,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "서비스" @@ -3613,17 +3578,17 @@ msgstr "끝내기" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "곡 정보..." #: src/skins/menus.cc:105 src/skins-qt/menus.cc:96 msgid "Shuffle by Album" -msgstr "앨범 섞기" +msgstr "앨범별로 순서섞기" #: src/skins/menus.cc:106 src/skins-qt/menus.cc:97 msgid "No Playlist Advance" -msgstr "이전 재생목록이 없습니다" +msgstr "재생목록 진행 없음" #: src/skins/menus.cc:117 src/skins-qt/menus.cc:108 msgid "Set A-B Repeat" @@ -3633,7 +3598,7 @@ msgid "Clear A-B Repeat" msgstr "A-B 반복 지우기" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "지정 곡으로 건너뛰기..." @@ -3643,39 +3608,39 @@ #: src/skins/menus.cc:125 src/skins-qt/menus.cc:118 msgid "Play/Resume" -msgstr "재생/재개" +msgstr "재생하기/이어듣기" #: src/skins/menus.cc:127 src/skins-qt/menus.cc:120 msgid "New Playlist" -msgstr "새 재생 목록" +msgstr "새 재생목록" #: src/skins/menus.cc:128 src/skins-qt/menus.cc:121 msgid "Rename Playlist ..." -msgstr "재생 목록 제거..." +msgstr "재생목록 제거..." #: src/skins/menus.cc:129 src/skins-qt/menus.cc:122 msgid "Remove Playlist" -msgstr "재생 목록 제거" +msgstr "재생목록 제거" #: src/skins/menus.cc:131 src/skins-qt/menus.cc:124 msgid "Previous Playlist" -msgstr "이전 재생 목록" +msgstr "이전 재생목록" #: src/skins/menus.cc:132 src/skins-qt/menus.cc:125 msgid "Next Playlist" -msgstr "다음 재생 목록" +msgstr "다음 재생목록" #: src/skins/menus.cc:134 src/skins-qt/menus.cc:127 msgid "Import Playlist ..." -msgstr "재생 목록 가져오기..." +msgstr "재생목록 가져오기..." #: src/skins/menus.cc:135 src/skins-qt/menus.cc:128 msgid "Export Playlist ..." -msgstr "재생 목록 내보내기..." +msgstr "재생목록 내보내기..." #: src/skins/menus.cc:137 src/skins-qt/menus.cc:130 msgid "Playlist Manager ..." -msgstr "재생 목록 관리자..." +msgstr "재생목록 관리자..." #: src/skins/menus.cc:138 src/skins-qt/menus.cc:131 msgid "Queue Manager ..." @@ -3683,19 +3648,19 @@ #: src/skins/menus.cc:140 src/skins-qt/menus.cc:133 msgid "Refresh Playlist" -msgstr "재생 목록 새로 고침" +msgstr "재생목록 새로 고침" #: src/skins/menus.cc:144 src/skins-qt/menus.cc:137 msgid "Show Playlist Editor" -msgstr "재생 목록 편집기 표시" +msgstr "재생목록 편집기 표시하기" #: src/skins/menus.cc:145 src/skins-qt/menus.cc:138 msgid "Show Equalizer" -msgstr "이퀄라이저 표시" +msgstr "이퀄라이저 표시하기" #: src/skins/menus.cc:147 src/skins-qt/menus.cc:140 msgid "Show Remaining Time" -msgstr "남은 시간 표시" +msgstr "남은 시간 표시하기" #: src/skins/menus.cc:150 src/skins-qt/menus.cc:143 msgid "Always on Top" @@ -3711,7 +3676,7 @@ #: src/skins/menus.cc:154 src/skins-qt/menus.cc:149 msgid "Roll Up Playlist Editor" -msgstr "재생 목록 편집기 말아 올리기" +msgstr "재생목록 편집기 말아 올리기" #: src/skins/menus.cc:155 src/skins-qt/menus.cc:150 msgid "Roll Up Equalizer" @@ -3719,27 +3684,27 @@ #: src/skins/menus.cc:163 src/skins-qt/menus.cc:158 msgid "Add URL ..." -msgstr "URL 추가..." +msgstr "URL 추가하기 ..." #: src/skins/menus.cc:164 src/skins-qt/menus.cc:160 msgid "Add Files ..." -msgstr "파일 추가..." +msgstr "파일 추가하기 ..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" -msgstr "제목별" +msgstr "제목순" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" -msgstr "파일 이름별" +msgstr "파일 이름순" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "파일 경로순" @@ -3767,115 +3732,115 @@ msgid "Remove Selected" msgstr "선택한 항목 제거" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "검색하고 선택" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "선택 반전" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "선택하지 않음" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "모두 선택" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "트랙 번호순" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" -msgstr "음악가순" +msgstr "아티스트순" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" -msgstr "앨범 제목순" +msgstr "앨범순" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" -msgstr "앨범 음악가별" +msgstr "앨범 아티스트순" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" -msgstr "출시일자순" +msgstr "출시 일자순" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" -msgstr "장르별" +msgstr "장르순" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" -msgstr "길이별" +msgstr "길이순" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" -msgstr "지정 제목별" +msgstr "사용자 지정 제목순" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" -msgstr "" +msgstr "주석순" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "목록 순서 뒤섞기" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "목록 순서 뒤집기" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "선택한 항목 정렬" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "목록 정렬" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" -msgstr "" +msgstr "포함하는 폴더 열기" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "잘라내기" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "복사" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "붙여넣기" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" -msgstr "" +msgstr "마지막 부분에 붙여넣기" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "큐에 넣기/큐에서 빼기" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%1$s (%3$d중 %2$d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" -msgstr "오데이셔스 재생 목록 편집기" +msgstr "Audacious 재생목록 편집기" #: src/skins/plugin.cc:49 src/skins-qt/plugin.cc:64 msgid "Winamp Classic Interface" @@ -3887,169 +3852,220 @@ #: src/skins-qt/menus.cc:159 msgid "Add Folder ..." -msgstr "폴더 추가..." +msgstr "폴더 추가하기 ..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "활성 재생목록에서 항목 검색" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"하나 이상의 필드를 채워 재생목록에서 항목을 선택하십시오. 필드는 대소문자를 " +"구분하지 않는 정규식 구문을 사용합니다. 정규식이 어떻게 작동하는지 모른다면 " +"검색하려는 내용의 문장 일부를 넣으시면 됩니다." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "제목:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "앨범:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "아티스트:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "파일 이름:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "검색하기 전에 이전 선택항목 지우기" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "일치하는 항목에 대해 자동으로 대기 목록을 전환하기" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "일치하는 항목에 대해 새 재생목록 만들기" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "검색" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "연주자:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "주 재생기 창 글꼴 선택:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "재생목록:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" -msgstr "재생 목록 글꼴 선택:" +msgstr "재생목록 글꼴 선택:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "스킨" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "창에 초점을 맞출 때 활성 제목 보이기" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "글꼴" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" -msgstr "비트맵 글꼴 사용(아스키 전용 지원)" +msgstr "비트맵 글꼴 사용(ASCII만 지원)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "곡 제목 스크롤" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "양방향으로 곡 제목 스크롤" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "분석기" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "표시기" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "보이스출력 / VU 메터" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "끄기" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "보통" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "불" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "수평선" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "선" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "막대" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "가장 느리게" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "느리게" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "중간" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "빠르게" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "가장 빠르게" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "점" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "선" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" -msgstr "면" +msgstr "솔리드" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "얼음" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "부드럽게" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "색상 적용:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "방식:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "폴 오프:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "최대 폴 오프:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "스코프 모양새:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "보이스 출력 색상 적용:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "VU 메터 모양새:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "방식" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "시각화 방식:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "분석 프로그램" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" -msgstr "피크 표시" +msgstr "피크 표시하기" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "시각화" @@ -4061,58 +4077,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "압축하지 않은 Winamp 2.x 스킨" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "활성 재생 목록에서 항목 검색" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "검색" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"하나 이상의 칸을 채워 재생 목록의 항목을 검색합니다. 대소문자에 관계 없이 정" -"규표현식 문법을 사용합니다. 정규표현식이 어떻게 동작하는지 모르신다면 검색할 " -"문장 일부를 넣으시면 됩니다." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "제목:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "앨범:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "음악가:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "파일 이름:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "검색하기 전에 이전 선택항목 지우기" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "일치하는 항목에 대해 자동으로 대기 목록을 전환하기" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "일치하는 항목에 대해 새 재생 목록 만들기" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Sndfile 플러그인" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4134,22 +4103,22 @@ "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" "xmms_sndfile 플러그인 기반.\n" -"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" +"저작권 (C) 2000, 2002 Erik de Castro Lopo\n" "\n" "Adapted for Audacious by Tony Vroon \n" "\n" "\n" -"이 프로그램은 자유 소프트웨어입니다; 자유 소프트웨어 재단이 발표한 GNU 일반 " -"공중 사용허가서 2판(또는 여러분의 선택에 따라) 이상의 조항에 따라 재배포 또" -"는 수정할 수 있습니다.\n" -"\n" -"이 프로그램이 유용하게 사용되길 바라지만 그 어떤 보증도 없으며 심지어는 상업" -"적 보증이나 일부 목적의 적합성에 대한 암시적 보증도 하지 않습니다. 자세한 내" -"용은 GNU 일반 공중 사용허가서를 보십시오.\n" -"\n" -"이 프로그램과 함께 GNU 일반 공중 사용 허가서 사본을 받아야 합니다. 만약 사본" -"이 없다면 자유 소프트웨어 재단에 요청하십시오. 51 Franklin Street, Fifth " -"Floor, Boston, MA 02110-1301, USA." +"이 프로그램은 자유 소프트웨어입니다; 자유 소프트웨어 재단에서 발행한 GNU 일" +"반 공중 라이선스의 조건에 따라 이를 재배포 및/또는 수정할 수 있습니다; 라이선" +"스 버전 2 또는 (귀하의 선택에 따라) 이후 버전.\n" +"\n" +"이 프로그램은 유용할 것이라는 희망으로 배포되지만 어떠한 보증도 하지 않습니" +"다. 상품성 또는 특정 목적에의 적합성에 대한 묵시적 보증도 없이. 자세한 내용" +"은 GNU 일반 공중 라이선스를 참조하십시오.\n" +"\n" +"이 프로그램과 함께 GNU 일반 공중 라이선스를 받았어야 합니다. 그렇지 않은 경" +"우 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, " +"MA 02110-1301, USA에 문의하십시오." #: src/sndio/sndio.cc:43 msgid "Sndio Output" @@ -4170,19 +4139,19 @@ #: src/sndio/sndio.cc:192 msgid "Sndio error: sio_open() failed" -msgstr "" +msgstr "Sndio 오류: sio_open() 실패" #: src/sndio/sndio.cc:221 msgid "Sndio error: sio_setpar() failed" -msgstr "" +msgstr "Sndio 오류: sio_setpar() 실패" #: src/sndio/sndio.cc:233 msgid "Sndio error: sio_start() failed" -msgstr "" +msgstr "Sndio 오류: sio_start() 실패" #: src/songchange/song_change.cc:30 msgid "Song Change" -msgstr "곡 바꾸기" +msgstr "곡 변경" #: src/songchange/song_change.cc:245 msgid "Commands" @@ -4202,13 +4171,15 @@ #: src/songchange/song_change.cc:256 msgid "Command to run when song title changes (for network streams):" -msgstr "" +msgstr "노래 제목이 변경될 때 실행할 명령(네트워크 스트림의 경우):" #: src/songchange/song_change.cc:259 msgid "" "You can use the following format codes, which will be replaced before " "running the command (not all are useful for the end-of-playlist command):" msgstr "" +"다음 형식 코드를 사용할 수 있습니다. 이 코드는 명령을 실행하기 전에 대체됩니" +"다(모든 재생목록의 끝 명령에 유용하지 않습니다):" #: src/songchange/song_change.cc:262 msgid "" @@ -4224,12 +4195,25 @@ "%t: Playlist position\n" "%T: Title (unformatted)" msgstr "" +"%a: 아티스트\n" +"%b: 앨범\n" +"%c: 채널 수\n" +"%f: 파일 이름(전체 경로)\n" +"%F: 주파수(헤르츠)\n" +"%l: 길이(밀리초)\n" +"%n 또는 %s: 형식이 지정된 제목(재생목록 설정 참조)\n" +"%p: 현재 재생 중(1 또는 0)\n" +"%r: 속도(초당 비트 수)\n" +"%t: 재생목록 위치\n" +"%T: 제목(형식 없음)" #: src/songchange/song_change.cc:273 msgid "" "Parameters passed to the shell should be enclosed in quotation marks. " "Unquoted parameters may lead to unexpected results." msgstr "" +"셸에 전달된 매개변수는 따옴표로 묶어야 합니다. 인용되지 않은 매개변수는 예상" +"치 못한 결과를 초래할 수 있습니다." #: src/song-info-qt/song-info.cc:30 msgid "Song Info" @@ -4247,11 +4231,11 @@ "Based on Sample Rate Converter Plugin:\n" "Copyright 2010-2012 John Lindgren" msgstr "" -"SoX Resampler Plugin for Audacious⏎\n" -"Copyright 2013 Michał Lipski⏎\n" -"⏎\n" -"샘플 주파수 변환 플러그인을 기반으로 하였습니다:\n" -"Copyright 2010-2012 John Lindgren" +"Audacious용 SoX 리샘플러 플러그인\n" +"저작권 2013 Michał Lipski\n" +"\n" +"샘플 레이트 변환기 플러그인 기반:\n" +"저작권 2010-2012 John Lindgren" #: src/soxr/sox-resampler.cc:178 msgid "Quick" @@ -4275,11 +4259,11 @@ #: src/soxr/sox-resampler.cc:187 msgid "Minimum" -msgstr "" +msgstr "최소" #: src/soxr/sox-resampler.cc:188 msgid "Intermediate" -msgstr "" +msgstr "중간" #: src/soxr/sox-resampler.cc:193 msgid "Quality:" @@ -4287,15 +4271,15 @@ #: src/soxr/sox-resampler.cc:196 msgid "Phase:" -msgstr "" +msgstr "위상:" #: src/soxr/sox-resampler.cc:200 msgid "Allow aliasing" -msgstr "" +msgstr "앨리어싱 허용" #: src/soxr/sox-resampler.cc:202 msgid "Use steep filter" -msgstr "" +msgstr "가파른 필터 사용" #: src/speedpitch/speed-pitch.cc:54 msgid "Speed and Pitch" @@ -4307,7 +4291,7 @@ #: src/speedpitch/speed-pitch.cc:248 msgid "Decouple from pitch" -msgstr "" +msgstr "피치에서 분리" #: src/speedpitch/speed-pitch.cc:250 src/speedpitch/speed-pitch.cc:258 msgid "Multiplier:" @@ -4332,6 +4316,14 @@ "This plugin provides a status icon, placed in\n" "the system tray area of the window manager." msgstr "" +"상태 아이콘 플러그인 (Qt 인터페이스용 부분 포트)\n" +"\n" +"저작권 2005-2007 Giacomo Lozito \n" +"저작권 2010 Michał Lipski \n" +"저작권 2015 Eugene Paskevich \n" +"\n" +"이 플러그인은 창 관리자의 시스템 트레이 영역에\n" +"있는 상태 아이콘을 제공합니다." #: src/statusicon-qt/statusicon.cc:86 src/statusicon/statusicon.cc:380 msgid "Mouse Scroll Action" @@ -4339,11 +4331,11 @@ #: src/statusicon-qt/statusicon.cc:87 src/statusicon/statusicon.cc:381 msgid "Change volume" -msgstr "음량 조절하기" +msgstr "음량 변경" #: src/statusicon-qt/statusicon.cc:90 src/statusicon/statusicon.cc:384 msgid "Change playing song" -msgstr "재생중인 곡 바꾸기" +msgstr "재생중인 곡 변경" #: src/statusicon-qt/statusicon.cc:93 src/statusicon/statusicon.cc:387 msgid "Other Settings" @@ -4377,8 +4369,8 @@ msgstr "" "상태 아이콘 플러그인\n" "\n" -"Copyright 2005-2007 Giacomo Lozito \n" -"Copyright 2010 Michał Lipski \n" +"저작권 2005-2007 Giacomo Lozito \n" +"저작권 2010 Michał Lipski \n" "\n" "이 플러그인은 창 관리자의 시스템 표시줄 영역에\n" "뜨는 상태 아이콘을 제공합니다." @@ -4403,39 +4395,39 @@ #: src/streamtuner/icecast-model.cc:126 src/streamtuner/shoutcast-model.cc:131 msgid "Type" -msgstr "" +msgstr "유형" #: src/streamtuner/icecast-model.cc:132 msgid "Current Song" -msgstr "" +msgstr "현재 노래" #: src/streamtuner/icecast-model.cc:164 msgid "Other" -msgstr "" +msgstr "기타" #: src/streamtuner/ihr-model.cc:63 msgid "Market" -msgstr "" +msgstr "장터" #: src/streamtuner/ihr-model.cc:156 msgid "Call Letters" -msgstr "" +msgstr "호출 부호" #: src/streamtuner/ihr-model.cc:162 msgid "Description" -msgstr "" +msgstr "설명" #: src/streamtuner/shoutcast-model.cc:128 msgid "Listeners" -msgstr "" +msgstr "청취자" #: src/streamtuner/shoutcast-model.cc:188 msgid "Top 500 Stations" -msgstr "" +msgstr "상위 500개 방송국" #: src/streamtuner/shoutcast-model.cc:189 msgid "Alternative" -msgstr "" +msgstr "대체" #: src/streamtuner/shoutcast-model.cc:190 msgid "Blues" @@ -4451,15 +4443,15 @@ #: src/streamtuner/shoutcast-model.cc:193 msgid "Decades" -msgstr "" +msgstr "년대" #: src/streamtuner/shoutcast-model.cc:194 msgid "Easy Listening" -msgstr "이지 리스닝" +msgstr "쉬운 듣기" #: src/streamtuner/shoutcast-model.cc:195 msgid "Electronic" -msgstr "" +msgstr "일렉트로닉" #: src/streamtuner/shoutcast-model.cc:196 msgid "Folk" @@ -4467,11 +4459,11 @@ #: src/streamtuner/shoutcast-model.cc:197 msgid "Inspirational" -msgstr "" +msgstr "영감" #: src/streamtuner/shoutcast-model.cc:198 msgid "International" -msgstr "" +msgstr "국가별" #: src/streamtuner/shoutcast-model.cc:199 msgid "Jazz" @@ -4479,11 +4471,11 @@ #: src/streamtuner/shoutcast-model.cc:200 msgid "Latin" -msgstr "" +msgstr "라틴어" #: src/streamtuner/shoutcast-model.cc:201 msgid "Metal" -msgstr "메달" +msgstr "메탈" #: src/streamtuner/shoutcast-model.cc:203 msgid "New Age" @@ -4495,11 +4487,11 @@ #: src/streamtuner/shoutcast-model.cc:205 msgid "Public Radio" -msgstr "" +msgstr "공공 라디오" #: src/streamtuner/shoutcast-model.cc:206 msgid "R&B and Urban" -msgstr "" +msgstr "R&B 및 어반" #: src/streamtuner/shoutcast-model.cc:207 msgid "Rap" @@ -4515,31 +4507,31 @@ #: src/streamtuner/shoutcast-model.cc:210 msgid "Seasonal and Holiday" -msgstr "" +msgstr "계절 및 휴일" #: src/streamtuner/shoutcast-model.cc:211 msgid "Soundtracks" -msgstr "" +msgstr "사운드트랙" #: src/streamtuner/shoutcast-model.cc:212 msgid "Talk" -msgstr "" +msgstr "말하기" #: src/streamtuner/shoutcast-model.cc:213 msgid "Themes" -msgstr "" +msgstr "테마" #: src/streamtuner/streamtuner.cc:59 msgid "Shoutcast" -msgstr "" +msgstr "샤우트캐스트" #: src/streamtuner/streamtuner.cc:60 msgid "Icecast" -msgstr "" +msgstr "아이스캐스트" #: src/streamtuner/streamtuner.cc:71 msgid "Stream Tuner" -msgstr "" +msgstr "스트림 튜너" #: src/tonegen/tonegen.cc:45 msgid "Tone Generator" @@ -4562,26 +4554,39 @@ "To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" "e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" msgstr "" -"사인 톤 생성기by Håvard Kvålen \n" +"사인 톤 생성기: Håvard Kvålen \n" "Daniel J. Peng 이 수정함\n" "\n" "사용하려면 다음 URL을 추가하십시오: tone://frequency1;frequency2;" "frequency3;...\n" -"사용 예) tone://2000;2005는 2000 Hz 톤과 a 2005 Hz 톤으로 재생합니다." +"예를 들어, tone://2000;2005는 2000 Hz 톤과 a 2005 Hz 톤으로 재생합니다." -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(이하 메시지는 숨겨져 있습니다.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "동작중 ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "wjdqh" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "%s은(는) 올바른 폴더가 아닌 것 같습니다." + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "육성 제거" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4601,15 +4606,15 @@ "Gian-Carlo Pascutto \n" "Eugene Zagidullin " msgstr "" -"오데이셔스 Ogg Vorbis 디코더\n" +"Audacious Ogg Vorbis 디코더\n" "\n" -"Xiph.org 재단의 Ogg Vorbis 플러그인을 기반으로 합니다:\n" +"Xiph.org 재단의 Ogg Vorbis 플러그인 기반:\n" "http://www.xiph.org/\n" "\n" "초기 코드 작성자:\n" "Tony Arcieri \n" "\n" -"공헌자:\n" +"기여자:\n" "Chris Montgomery \n" "Peter Alm \n" "Michael Smith \n" @@ -4642,6 +4647,17 @@ "Player Freq: %P\n" "Year: %y" msgstr "" +"제목: %t\n" +"작성자: %a\n" +"From: %f\n" +"트래커: %T\n" +"주석: %C\n" +"칩 유형: %c\n" +"스테레오: %s\n" +"루프: %l\n" +"칩 주파수: %F\n" +"재생기 주파수: %P\n" +"연도: %y" #: src/vtx/vtx.cc:38 msgid "VTX Decoder" @@ -4655,47 +4671,51 @@ msgstr "" "Vortex 파일 형식 재생기 by Sashnov Alexander \n" "Roman Sherbakov 의 in_vtx.dll을 기반으로 함\n" -"Pavel Vymetalek 이 오데이셔스 플러그인 제작" +"Pavel Vymetalek 이 Audacious 플러그인 제작" #: src/vumeter-qt/vumeter_qt.cc:31 msgid "" "VU Meter Plugin for Audacious\n" "Copyright 2017-2019 Marc Sánchez Fauste" msgstr "" +"Audacious용 VU 미터 플러그인\n" +"저작권 2017-2019 Marc Sánchez Fauste" #: src/vumeter-qt/vumeter_qt.cc:35 msgid "VU Meter Settings" -msgstr "" +msgstr "VU 미터 설정" #: src/vumeter-qt/vumeter_qt.cc:37 msgid "Peak hold time:" -msgstr "" +msgstr "피크 홀드 시간:" #: src/vumeter-qt/vumeter_qt.cc:42 msgid "Fall-off time:" -msgstr "" +msgstr "감소 시간:" #: src/vumeter-qt/vumeter_qt.cc:44 msgid "dB/second" -msgstr "" +msgstr "dB/초" #: src/vumeter-qt/vumeter_qt.cc:46 msgid "Display legend" -msgstr "" +msgstr "범례 보이기" #: src/vumeter-qt/vumeter_qt.h:37 msgid "VU Meter" -msgstr "" +msgstr "VU 미터" #: src/waveout/waveout.cc:43 msgid "Win32 waveOut" -msgstr "" +msgstr "Win32 waveOut" #: src/waveout/waveout.cc:69 msgid "" "Win32 waveOut Plugin for Audacious\n" "Copyright 2016 John Lindgren" msgstr "" +"Audacious용 Win32 waveOut 플러그인\n" +"저작권 2016 John Lindgren" #: src/wavpack/wavpack.cc:25 msgid "WavPack Decoder" @@ -4715,18 +4735,45 @@ "\n" "Some of the plugin code was by Miles Egan." msgstr "" -"Copyright 2006 William Pitcock \n" +"저작권 2006 William Pitcock \n" "\n" "플러그인 코드 일부는 Miles Egan이 작성했습니다." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2SF 디코더" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "코사인" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "급격한" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" -msgstr "XSF 설정" +msgstr "XSF 구성" + +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "기본 페이드 시간:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "보간 모드:" #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" -msgstr "XML 공유 가능 재생 목록(XSPF)" +msgstr "XML 공유 가능 재생목록(XSPF)" + +#~ msgid "Sample rate" +#~ msgstr "샘플 레이트" diff -Nru audacious-plugins-4.1/po/lt.po audacious-plugins-4.3.1/po/lt.po --- audacious-plugins-4.1/po/lt.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/lt.po 2023-04-29 20:17:32.000000000 +0000 @@ -8,13 +8,14 @@ # Algimantas Margevičius , 2011-2012 # Algimantas Margevičius , 2012-2013, 2011, 2011-2012, 2013 # gymka , 2011 +# Tadas Masiulionis, 2022-2023 msgid "" msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Tadas Masiulionis, 2022-2023\n" "Language-Team: Lithuanian (http://www.transifex.com/audacious/audacious/" "language/lt/)\n" "Language: lt\n" @@ -27,28 +28,30 @@ #: src/aac/aac.cc:19 msgid "AAC (Raw) Decoder" -msgstr "AAC (Raw) Dekoderis" +msgstr "AAC (Raw) iškoduotuvas" #: src/adplug/adplug-xmms.cc:70 msgid "AdPlug (AdLib Player)" msgstr "AdPlug (AdLib grotuvas)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "nuoseklus" #: src/adplug/adplug-xmms.cc:349 src/sid/xs_config.cc:61 msgid "Output" -msgstr "" +msgstr "Išvestis" #: src/adplug/adplug-xmms.cc:350 msgid "OPL Emulator:" -msgstr "" +msgstr "OPL emuliatorius:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Ėminių sparta:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -64,219 +67,13 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Kita" #: src/adplug/adplug-xmms.cc:356 msgid "Repeat song in endless loop" -msgstr "" - -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Žadintuvas" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Nustatyti perspėjimą..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Įskiepis skirtas paleisti atkūrimą numatytu laiku.\n" -"\n" -"Originaliai parašė Adam Feakin ir Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Tai pabudimo skambutis." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Šiandienos priminimas..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Priminimas" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Pirmadienis" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Antradienis" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Trečiadienis" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Ketvirtadienis" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Penktadienis" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Šeštadienis" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Sekmadienis" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Laikas" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Žadinti (numatyta):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "v" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Nutildyti po:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "valandos" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minutės" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Pasirinkite dienas kuriomis žadinti" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Diena" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Numatytosios" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Dienos" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Išblukimas" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "sekundės" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Garsas" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Pradėti nuo" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Baigti" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Dabartinis" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Papildoma komanda" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "Įjungti" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Grojaraštis (nebūtina)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Pasirinkite grojaraštį" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Pasirinktys" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Ką šios pasirinktys reiškia?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Žinynas" +msgstr "Kartoti dainą begaliniu ciklu" #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" @@ -302,7 +99,7 @@ #: src/alsa/config.cc:61 msgid "(no description)" -msgstr "" +msgstr "(nėra aprašymo)" #: src/alsa/config.cc:166 msgid "Default PCM device" @@ -350,6 +147,25 @@ "Tony Vroon\n" "for the good help with alpha testing" msgstr "" +"AMIDI-Plug\n" +"modulinis MIDI muzikos grotuvas\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"suprogramuotas Giacomo Lozito\n" +"\n" +"\n" +"išskirtinai ačiū...\n" +"\n" +"Clemens Ladisch ir Jaroslav Kysela\n" +"už jų šaunias aplaymidi ir amixer programas; jos\n" +"buvo išties naudingos kartu su alsa-lib dokumentais, siekiant\n" +"sužinoti daugiau apie ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"už puikų midi klaviatūros logotipą\n" +"\n" +"Tony Vroon\n" +"už gerą pagalbą atliekant alfa testavimą" #: src/amidiplug/i_configure.cc:94 msgid "Override default gain:" @@ -381,7 +197,7 @@ #: src/amidiplug/i_configure.cc:131 src/speedpitch/speed-pitch.cc:257 msgid "semitones" -msgstr "" +msgstr "pustoniai" #: src/amidiplug/i_configure.cc:132 msgid "Drum shift:" @@ -389,15 +205,15 @@ #: src/amidiplug/i_configure.cc:134 msgid "note numbers" -msgstr "" +msgstr "pastabų skaičius" #: src/amidiplug/i_configure.cc:135 msgid "Skip leading silence" -msgstr "" +msgstr "Praleisti sekančią tylą" #: src/amidiplug/i_configure.cc:137 msgid "Skip trailing silence" -msgstr "" +msgstr "Praleisti vedančią tylą" #: src/amidiplug/i_configure.cc:141 msgid "SoundFont" @@ -407,93 +223,89 @@ msgid "Synthesizer" msgstr "Sintezatorius" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - pasirinkite SoundFont failą" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Atsisakyti" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Atverti" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" -msgstr "Bylos vardas" +msgstr "Rinkmenos pavadinimas" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" -msgstr "Dydis (bitais)" +msgstr "Dydis (baitais)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Pavadinimas:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " MIDI Info " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Formatas:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Trukmė (ms):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Takelių:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "kintamasis" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Laiko div:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI komentarai ir žodžiai" -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" -msgstr "* Šiame MIDI faile nėra komentarų *" +msgstr "* Šioje MIDI rinkmenoje nėra komentarų *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" -msgstr "* Šiame MIDI faile nėra žodžių *" +msgstr "* Šioje MIDI rinkmenoje nėra žodžių *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" -msgstr "_Uždaryti" +msgstr "_Užverti" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (neteisingas UTF-8)" #: src/ampache/ampache.cc:33 msgid "Ampache Browser" -msgstr "" +msgstr "Ampache naršyklė" #: src/ampache/ampache.cc:46 msgid "" @@ -503,6 +315,11 @@ "Copyright (C) Róbert Čerňanský and John Lindgren\n" "License: GNU GPLv3" msgstr "" +"Ampache naršyklė, skirta Audacious\n" +"http://ampache-browser.org/\n" +"\n" +"Autorių teisės (C) Róbert Čerňanský ir John Lindgren\n" +"Licencija: GNU GPLv3" #: src/aosd/aosd.cc:31 msgid "" @@ -524,7 +341,7 @@ #: src/aosd/aosd.h:37 msgid "AOSD (On-Screen Display)" -msgstr "AOSD (Rodymas ekrane)" +msgstr "AOSD (rodymas ekrane)" #: src/aosd/aosd_style.cc:54 msgid "Rectangle" @@ -538,7 +355,7 @@ msgid "Concave Rectangle" msgstr "Įgaubtas stačiakampis" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Joks" @@ -548,7 +365,7 @@ #: src/aosd/aosd_trigger.cc:50 msgid "Triggers OSD when a playlist entry is played." -msgstr "Sužadina OSD kai grojaraščio elementas grojamas." +msgstr "Suaktyvina OSD, kai grojamas grojaraščio įrašas." #: src/aosd/aosd_trigger.cc:55 msgid "Title Change" @@ -556,11 +373,11 @@ #: src/aosd/aosd_trigger.cc:56 msgid "Triggers OSD when the song title changes (for internet streams)." -msgstr "" +msgstr "Suaktyvina OSD, kai keičiasi dainos pavadinimas (interneto srautams)." #: src/aosd/aosd_trigger.cc:61 msgid "Pause On" -msgstr "Pauzė" +msgstr "Pristabdyti" #: src/aosd/aosd_trigger.cc:62 msgid "Triggers OSD when playback is paused." @@ -572,96 +389,96 @@ #: src/aosd/aosd_trigger.cc:68 msgid "Triggers OSD when playback is unpaused." -msgstr "Sužadina OSD kai atkūrimas atkuriamas po pauzės." +msgstr "Suaktyvina OSD, kai po pristabdymo tęsiamas atkūrimas." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Padėtis" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Reliatyvus X poslinkis:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Reliatyvus Y poslinkis:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Didžiausias OSD plotis:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Kelių vaizduoklių pasirinktys" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Vaizduoklis naudoja OSD:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "visi vaizduokliai" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "vaizduoklis %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Laiko derinimas (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Monitorius:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Nustelbti:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Išblukti:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Šriftai" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Šriftas %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Šešėlis" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Atvaizdavimo stilius" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Spalvos" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Spalva %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Sužadinti" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Įvykis" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Kompozicionavimo tvarkyklė aptikta" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -670,62 +487,62 @@ "Kompozicionavimo tvarkyklė nerasta;\n" "įjunkite kompozicionavimo tvarkyklę, nes OSD neveiks taip kaip priklauso" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Netikram permatomumui kompozicionavimo tvarkyklė nebūtina" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Permatomumas" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Netikras permatomumas" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Tikras permatomumas (reikalinga X kompozicionavimo plėtinys)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" -msgstr "Kompozicionavimo plėtinys neįkrautas" +msgstr "Kompozicionavimo plėtinys neįkeltas" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" -msgstr "Pozicija" +msgstr "Padėtis" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animacija" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Tekstas" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Dekoracijos" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" -msgstr "Sužadintojas" +msgstr "Paleidiklis" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Kita" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Testas" #: src/asx3/asx3.cc:35 msgid "ASXv3 Playlists" -msgstr "ASXv3 Grojaraščiai" +msgstr "ASXv3 grojaraščiai" #: src/asx/asx.cc:33 msgid "ASXv1/ASXv2 Playlists" @@ -735,11 +552,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Audacious grojaraščiai (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Bitų gylis:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Sumažinto ėminio koeficientas:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Spalva" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Išsiliejimo sritis" @@ -749,7 +582,11 @@ #: src/bs2b/plugin.cc:129 msgid "Presets:" -msgstr "Profiliai:" +msgstr "Ruošiniai:" + +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Numatytosios" #: src/bs2b/plugin.cc:136 msgid "Feed level:" @@ -757,13 +594,13 @@ #: src/bs2b/plugin.cc:138 msgid "x1/10 dB" -msgstr "" +msgstr "x1/10 dB" #: src/bs2b/plugin.cc:139 msgid "Cut frequency:" msgstr "Nukirpti dažnius:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Spektro analizatorius" @@ -797,7 +634,7 @@ #: src/cdaudio/cdaudio-ng.cc:135 msgid "Read speed:" -msgstr "Skaitymo greitis:" +msgstr "Skaitymo sparta:" #: src/cdaudio/cdaudio-ng.cc:138 msgid "Override device:" @@ -833,7 +670,7 @@ #: src/cdaudio/cdaudio-ng.cc:220 msgid "Failed to initialize cdio subsystem." -msgstr "Inicijuoti cdio posistemės nepavyko." +msgstr "Įkelti cdio posistemės nepavyko." #: src/cdaudio/cdaudio-ng.cc:250 #, c-format @@ -852,71 +689,71 @@ #: src/cdaudio/cdaudio-ng.cc:329 msgid "Error reading audio CD." -msgstr "Klaida skaitant audio CD." +msgstr "Klaida skaitant garso CD." #: src/cdaudio/cdaudio-ng.cc:398 msgid "Audio CD" -msgstr "Audio CD" +msgstr "Garso CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Atverti CD įrenginio %s nepavyko." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "CD įrenginio suderinamo su audio nerasta." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Diskasukis tuščias." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." -msgstr "Nepalaikomas disko tipas." +msgstr "Nepalaikoma disko rūšis." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Nepavyko užbaigti inicijuoto atverto CD įrenginio." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." -msgstr "Gauti pirmo/paskutinio takelio numerio nepavyko." +msgstr "Gauti pirmo arba paskutinio takelio numerio nepavyko." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Perskaityti LSN takelio %d pradžios/pabaigos nepavyko." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." -msgstr "" +msgstr "Nepavyko sukurti CDDB ryšio." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" -msgstr "Užlausti CDDB serverio nepavyko" +msgstr "Užklausti CDDB serverio nepavyko" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" -msgstr "Užlausti CDDB serverio nepavyko: %s" +msgstr "Užklausti CDDB serverio nepavyko: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" -msgstr "" +msgstr "Nepavyko nuskaityti CDDB informacijos: %s" #: src/cd-menu-items/cd-menu-items.cc:33 msgid "Audio CD Menu Items" -msgstr "Audio CD Meniu elementai" +msgstr "Garso CD Meniu elementai" #: src/cd-menu-items/cd-menu-items.cc:45 msgid "Pla_y CD" -msgstr "" +msgstr "_Groti CD" #: src/cd-menu-items/cd-menu-items.cc:45 msgid "_Add CD" -msgstr "" +msgstr "_Pridėti CD" #: src/compressor/compressor.cc:45 msgid "Compression" @@ -935,10 +772,12 @@ "Dynamic Range Compression Plugin for Audacious\n" "Copyright 2010-2014 John Lindgren" msgstr "" +"Audacious dinaminio diapazono glaudinimo įskiepis\n" +"Autoriaus teisės 2010-2014 John Lindgren" #: src/compressor/compressor.cc:64 msgid "Dynamic Range Compressor" -msgstr "Dynamic Range Compressor" +msgstr "Dinaminio diapazono glaudintuvas" #: src/console/plugin.cc:15 msgid "" @@ -950,7 +789,7 @@ "Shay Green " msgstr "" "Console music decoder engine paremtas Game_Music_Emu 0.5.2\n" -"Palaikomi formatai: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"Palaikomi plėtiniai: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" "\n" "Audacious įskiepį sukūrė:\n" "William Pitcock \n" @@ -958,7 +797,7 @@ #: src/console/plugin.cc:30 msgid "Bass:" -msgstr "Bosas:" +msgstr "Žemi:" #: src/console/plugin.cc:33 msgid "Treble:" @@ -972,6 +811,13 @@ msgid "Default song length:" msgstr "Numatyta dainos trukmė:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "sekundės" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Perdarymas (resampling)" @@ -990,7 +836,7 @@ #: src/console/plugin.cc:52 msgid "Increase reverb" -msgstr "Padidinti reverb" +msgstr "Padidinti aidą" #: src/console/plugin.h:26 msgid "Game Console Music Decoder" @@ -998,9 +844,9 @@ #: src/coreaudio/coreaudio.cc:53 msgid "CoreAudio output" -msgstr "" +msgstr "CoreAudio išvestis" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1011,20 +857,31 @@ "Based on SDL Output Plugin for Audacious\n" "Copyright 2010 John Lindgren" msgstr "" +"Audacious CoreAudio išvesties įskiepis \n" +"Autoriaus teisės 2014 William Pitcock\n" +"Autoriaus teisės 2017,18 René J.V. Bertin\n" +" (pradinis kodas ir kodas pritaikytas iš\n" +" Apple pavyzdžių, (C) Apple 2013)\n" +"\n" +"Remiantis Audacious SDL išvesties įskiepiu\n" +"Autoriaus teisės 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" -msgstr "" +msgstr "Naudoti išskirtinę veikseną" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" +"Naudokite šiek tiek tobulesnį garsą (pritaikykite įrenginio ėminio dažnį)" #: src/crossfade/crossfade.cc:43 msgid "" "Crossfade Plugin for Audacious\n" "Copyright 2010-2014 John Lindgren" msgstr "" +"Audacious Crossfade įskiepis\n" +"Autoriaus teisės 2010-2014 John Lindgren" #: src/crossfade/crossfade.cc:47 msgid "Crossfade" @@ -1032,7 +889,7 @@ #: src/crossfade/crossfade.cc:48 msgid "On automatic song change" -msgstr "" +msgstr "Esant automatiniam dainos keitimui" #: src/crossfade/crossfade.cc:50 src/crossfade/crossfade.cc:56 msgid "Overlap:" @@ -1040,17 +897,19 @@ #: src/crossfade/crossfade.cc:54 msgid "On seek or manual song change" -msgstr "" +msgstr "Ieškant arba rankiniu būdu keičiant dainą" #: src/crossfade/crossfade.cc:60 msgid "Tip" -msgstr "" +msgstr "Patarimas" #: src/crossfade/crossfade.cc:61 msgid "" "For better crossfading, enable\n" "the Silence Removal effect." msgstr "" +"Geresniam perėjimui tarp dainų, įjunkite\n" +"tylos pašalinimo efektą." #: src/crossfade/crossfade.cc:71 msgid "Crossfade" @@ -1058,7 +917,7 @@ #: src/crystalizer/crystalizer.cc:31 msgid "Crystalizer" -msgstr "Crystalizer" +msgstr "Kristalizatorius" #: src/crystalizer/crystalizer.cc:32 src/stereo_plugin/stereo.cc:45 msgid "Intensity:" @@ -1066,7 +925,7 @@ #: src/crystalizer/crystalizer.cc:43 msgid "Crystalizer" -msgstr "Crystalizer" +msgstr "Kristalizatorius" #: src/cue/cue.cc:42 msgid "Cue Sheet Plugin" @@ -1075,54 +934,54 @@ #: src/delete-files/delete-files.cc:53 src/delete-files/delete-files.cc:215 #: src/delete-files/delete-files.cc:230 msgid "Delete Files" -msgstr "Pašalinti failus" +msgstr "Pašalinti rinkmenas" #: src/delete-files/delete-files.cc:120 msgid "No files are selected." -msgstr "" +msgstr "Nepasirinkta rinkmena." #: src/delete-files/delete-files.cc:125 #, c-format msgid "Do you want to move %s to the trash?" -msgstr "" +msgstr "Ar norite perkelti %s į šiukšlinę?" #: src/delete-files/delete-files.cc:126 #, c-format msgid "Do you want to permanently delete %s?" -msgstr "" +msgstr "Ar norite ištrinti visam laikui %s?" #: src/delete-files/delete-files.cc:133 #, c-format msgid "Do you want to move %d files to the trash?" -msgstr "" +msgstr "Ar norite perkelti %d rinkmenas į šiukšlinę?" #: src/delete-files/delete-files.cc:134 #, c-format msgid "Do you want to permanently delete %d files?" -msgstr "" +msgstr "Ar norite visam laikui ištrinti %d rinkmenas?" #: src/delete-files/delete-files.cc:146 msgid "Move to trash" -msgstr "" +msgstr "Perkelti į šiukšlinę" #: src/delete-files/delete-files.cc:146 msgid "Delete" msgstr "Ištrinti" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Atšaukti" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" -msgstr "Pašalinti pasirinktus failus" +msgstr "Pašalinti pasirinktas rinkmenas" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Šalinimo metodas" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Perkelti į šiukšlinę, iškart nepašalinti" @@ -1133,6 +992,10 @@ "Surround echo by Carl van Schaik, 1999\n" "Updated for Audacious by William Pitcock and John Lindgren, 2010-2014" msgstr "" +"Aido įskiepis\n" +"Sukūrė Johan Levin, 1999\n" +"Erdvinį aidą sukūrė Carl van Schaik, 1999\n" +"Audacious pritaikė William Pitcock ir John Lindgren, 2010-2014" #: src/echo_plugin/echo.cc:21 msgid "Echo" @@ -1144,7 +1007,7 @@ msgstr "Delsa:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1160,11 +1023,11 @@ msgid "Echo" msgstr "Aidas" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "FFmpeg įskiepis" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1190,6 +1053,8 @@ "Error opening %s:\n" "%s" msgstr "" +"Klaida atveriant %s:\n" +"%s" #: src/filewriter/filewriter.cc:358 msgid "" @@ -1207,38 +1072,52 @@ "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" +"Ši programa yra nemokama programinė įranga; galite ją platinti ir (arba) " +"keisti pagal GNU bendrosios viešosios licencijos sąlygas, kurias paskelbtė " +"Laisvosios programinės įrangos fondas (angl. Free Software " +"Foundation); 2 licencijos versija arba (jūsų pasirinkimu) bet kuri " +"vėlesnė versija.\n" +"\n" +"Ši programa platinama tikintis, kad ji bus naudinga, bet BE JOKIOS " +"GARANTIJOS; net be numanomos TINKAMUMO PARDUOTI ar TINKAMUMO KONKREČIAM " +"TIKSLUI garantijos. Daugiau informacijos rasite GNU bendrojoje viešojoje " +"licencijoje.\n" +"\n" +"Kartu su šia programa turėjote gauti GNU bendrosios viešosios licencijos " +"kopiją; jei ne, rašykite Free Software Foundation, Inc., 51 Franklin Street, " +"Fifth Floor, Boston, MA 02110-1301, USA." #: src/filewriter/filewriter.cc:385 msgid "Output file format:" -msgstr "Išvesties failo formatas:" +msgstr "Išvesties rinkmenos plėtinys:" #: src/filewriter/filewriter.cc:389 msgid "Save into original directory" -msgstr "Išsaugoti originalo aplanke" +msgstr "Išsaugoti pirminiame aplanke" #: src/filewriter/filewriter.cc:392 msgid "Save into custom directory:" -msgstr "" +msgstr "Išsaugoti pasirinktame aplanke:" #: src/filewriter/filewriter.cc:400 msgid "Generate file name from:" -msgstr "" +msgstr "Sukurti rinkmenos pavadinimą iš:" #: src/filewriter/filewriter.cc:401 msgid "Original file name" -msgstr "" +msgstr "Pradinis rinkmenos pavadinimas" #: src/filewriter/filewriter.cc:404 msgid "Original file name (no suffix)" -msgstr "" +msgstr "Pradinis rinkmenos pavadinimas (be priesagos)" #: src/filewriter/filewriter.cc:407 msgid "Original file tag" -msgstr "" +msgstr "Pradinė rinkmenos žyma" #: src/filewriter/filewriter.cc:411 msgid "Prepend track number to file name" -msgstr "" +msgstr "Pridėti takelio numerį prie rinkmenos pavadinimo" #: src/filewriter/filewriter.cc:417 src/filewriter/filewriter.cc:449 msgid "Auto" @@ -1246,145 +1125,145 @@ #: src/filewriter/filewriter.cc:418 msgid "8000 Hz" -msgstr "" +msgstr "8000 Hz" #: src/filewriter/filewriter.cc:419 msgid "11025 Hz" -msgstr "" +msgstr "11025 Hz" #: src/filewriter/filewriter.cc:420 msgid "12000 Hz" -msgstr "" +msgstr "12000 Hz" #: src/filewriter/filewriter.cc:421 msgid "16000 Hz" -msgstr "" +msgstr "16000 Hz" #: src/filewriter/filewriter.cc:422 msgid "22050 Hz" -msgstr "" +msgstr "22050 Hz" #: src/filewriter/filewriter.cc:423 msgid "24000 Hz" -msgstr "" +msgstr "24000 Hz" #: src/filewriter/filewriter.cc:424 msgid "32000 Hz" -msgstr "" +msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" -msgstr "" +msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" -msgstr "" +msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "" +msgid "8 kbit/s" +msgstr "8 kb/s" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "" +msgid "16 kbit/s" +msgstr "16 kb/s" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "" +msgid "32 kbit/s" +msgstr "32 kb/s" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "" +msgid "40 kbit/s" +msgstr "40 kb/s" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "" +msgid "48 kbit/s" +msgstr "48 kb/s" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "" +msgid "56 kbit/s" +msgstr "56 kb/s" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "" +msgid "64 kbit/s" +msgstr "64 kb/s" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "" +msgid "80 kbit/s" +msgstr "80 kb/s" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "" +msgid "96 kbit/s" +msgstr "96 kb/s" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "" +msgid "112 kbit/s" +msgstr "112 kb/s" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "" +msgid "128 kbit/s" +msgstr "128 kb/s" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "" +msgid "160 kbit/s" +msgstr "160 kb/s" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "" +msgid "192 kbit/s" +msgstr "192 kb/s" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "" +msgid "224 kbit/s" +msgstr "224 kb/s" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "" +msgid "256 kbit/s" +msgstr "256 kb/s" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "" +msgid "320 kbit/s" +msgstr "320 kb/s" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Sujungtas stereo" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" #: src/filewriter/filewriter.cc:456 msgid "VBR" -msgstr "" +msgstr "VBR" #: src/filewriter/filewriter.cc:457 msgid "ABR" -msgstr "" +msgstr "ABR" #: src/filewriter/filewriter.cc:478 msgid "Algorithm quality:" -msgstr "" +msgstr "Algoritmo kokybė:" #: src/filewriter/filewriter.cc:484 msgid "Bitrate:" -msgstr "Bitų dažnis:" +msgstr "Bitų sparta:" #: src/filewriter/filewriter.cc:491 msgid "Compression ratio:" -msgstr "Kompresijos santykis:" +msgstr "Glaudinimo santykis:" #: src/filewriter/filewriter.cc:498 msgid "Audio mode:" -msgstr "" +msgstr "Garso veiksena:" #: src/filewriter/filewriter.cc:501 msgid "Enforce strict ISO compliance" -msgstr "" +msgstr "Vykdyti griežtą ISO atitiktį" #: src/filewriter/filewriter.cc:503 msgid "Error protection" @@ -1396,19 +1275,19 @@ #: src/filewriter/filewriter.cc:510 msgid "Type:" -msgstr "Tipas:" +msgstr "Rūšis:" #: src/filewriter/filewriter.cc:514 msgid "Minimum bitrate:" -msgstr "" +msgstr "Minimali bitų sparta:" #: src/filewriter/filewriter.cc:518 msgid "Maximum bitrate:" -msgstr "" +msgstr "Maksimali bitų sparta:" #: src/filewriter/filewriter.cc:522 msgid "Average bitrate:" -msgstr "" +msgstr "Vidutinė bitų sparta:" #: src/filewriter/filewriter.cc:526 msgid "VBR quality level:" @@ -1420,11 +1299,11 @@ #: src/filewriter/filewriter.cc:533 msgid "Omit Xing VBR header" -msgstr "" +msgstr "Omit Xing VBR antraštė" #: src/filewriter/filewriter.cc:539 msgid "Frame Headers" -msgstr "" +msgstr "Kadro antraštės" #: src/filewriter/filewriter.cc:540 msgid "Mark as copyright" @@ -1436,7 +1315,7 @@ #: src/filewriter/filewriter.cc:544 msgid "ID3 Tags" -msgstr "" +msgstr "ID3 žymės" #: src/filewriter/filewriter.cc:545 msgid "Force addition of version 2 tag" @@ -1464,22 +1343,22 @@ #: src/filewriter/filewriter.cc:566 msgid "Quality (0-1):" -msgstr "" +msgstr "Kokybė (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Pagrindinės" #: src/flac/flacng.h:36 msgid "FLAC Decoder" -msgstr "FLAC dekoderis" +msgstr "FLAC iškoduotuvas" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "lossless" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1505,13 +1384,13 @@ #: src/gio/gio.cc:152 msgid "Read-and-append mode not supported" -msgstr "" +msgstr "Skaitymo ir papildymo veiksena nepalaikoma" #: src/gio/gio.cc:165 msgid "Invalid open mode" -msgstr "" +msgstr "Netinkama atverimo veiksena" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1531,123 +1410,141 @@ "\n" "License: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL spektro analizatorius" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "Įrašo numeris" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "Elemento numeris" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Pavadinimas" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Atlikėjas" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Metai" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Albumas" -#: src/gtkui/columns.cc:40 -msgid "Album artist" -msgstr "" - #: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr "Albumo atlikėjas" + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Takelis" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Žanras" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "Vieta eilėje" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "Eilės padėtis" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Trukmė" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "Bylos kelias" - -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Derintas pavadinimas" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "Rinkmenos kelias" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Rinkmenos pavadinimas" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Pasirinktas pavadinimas" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Bitų seka" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Komentaras" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Prieinami stulpeliai" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Rodomų stulpelių sąrašas" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Paieškos įrankis" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Sumažinti į kairę" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Sumažinti į dešinę" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Sumažinti į viršų" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Sumažinti apačioje" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Padidinti" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Išjungti" #: src/gtkui/menus.cc:79 src/qtui/menus.cc:107 #: src/statusicon-qt/statusicon.cc:112 src/statusicon/statusicon.cc:282 msgid "_Open Files ..." -msgstr "_Atverti failus ..." +msgstr "_Atverti rinkmenas..." #: src/gtkui/menus.cc:80 src/qtui/menus.cc:111 msgid "Open _URL ..." @@ -1655,7 +1552,7 @@ #: src/gtkui/menus.cc:81 src/qtui/menus.cc:113 msgid "_Add Files ..." -msgstr "_Pridėti failus..." +msgstr "_Pridėti rinkmenas..." #: src/gtkui/menus.cc:82 src/qtui/menus.cc:118 msgid "Add U_RL ..." @@ -1680,8 +1577,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Groti" @@ -1709,12 +1606,12 @@ #: src/gtkui/menus.cc:97 src/qtui/menus.cc:145 src/skins/menus.cc:114 #: src/skins-qt/menus.cc:105 msgid "Previous Album" -msgstr "" +msgstr "Ankstesnis albumas" #: src/gtkui/menus.cc:98 src/qtui/menus.cc:146 src/skins/menus.cc:115 #: src/skins-qt/menus.cc:106 msgid "Next Album" -msgstr "" +msgstr "Kitas albumas" #: src/gtkui/menus.cc:100 src/qtui/menus.cc:148 msgid "_Repeat" @@ -1726,7 +1623,7 @@ #: src/gtkui/menus.cc:102 src/qtui/menus.cc:152 msgid "Shuffle by Albu_m" -msgstr "" +msgstr "Maišyti pagal _albumus" #: src/gtkui/menus.cc:103 src/qtui/menus.cc:155 msgid "N_o Playlist Advance" @@ -1768,7 +1665,7 @@ #: src/gtkui/menus.cc:117 src/qtui/menus.cc:174 msgid "By _File Name" -msgstr "" +msgstr "Pagal _Rinkmenos pavadinimą" #: src/gtkui/menus.cc:118 src/qtui/menus.cc:175 msgid "By File _Path" @@ -1792,7 +1689,7 @@ #: src/gtkui/menus.cc:126 src/gtkui/menus.cc:143 src/qtui/menus.cc:183 #: src/qtui/menus.cc:200 msgid "By Albu_m Artist" -msgstr "" +msgstr "Pagal _albumo atlikėją" #: src/gtkui/menus.cc:127 src/gtkui/menus.cc:144 src/qtui/menus.cc:184 #: src/qtui/menus.cc:201 @@ -1802,7 +1699,7 @@ #: src/gtkui/menus.cc:128 src/gtkui/menus.cc:145 src/qtui/menus.cc:185 #: src/qtui/menus.cc:202 msgid "By _Genre" -msgstr "" +msgstr "Pagal ž_anrą" #: src/gtkui/menus.cc:129 src/gtkui/menus.cc:146 src/qtui/menus.cc:186 #: src/qtui/menus.cc:203 @@ -1812,7 +1709,7 @@ #: src/gtkui/menus.cc:130 src/gtkui/menus.cc:147 src/qtui/menus.cc:187 #: src/qtui/menus.cc:204 msgid "By _File Path" -msgstr "Pagal _failo kelią" +msgstr "Pagal _rinkmenos kelią" #: src/gtkui/menus.cc:131 src/gtkui/menus.cc:148 src/qtui/menus.cc:188 #: src/qtui/menus.cc:205 @@ -1822,7 +1719,7 @@ #: src/gtkui/menus.cc:132 src/gtkui/menus.cc:149 src/qtui/menus.cc:189 #: src/qtui/menus.cc:206 msgid "By C_omment" -msgstr "" +msgstr "Pagak _komentarus" #: src/gtkui/menus.cc:134 src/gtkui/menus.cc:151 src/qtui/menus.cc:191 #: src/qtui/menus.cc:208 @@ -1836,7 +1733,7 @@ #: src/gtkui/menus.cc:156 src/qtui/menus.cc:214 msgid "_Play/Resume" -msgstr "" +msgstr "_Groti / Tęsti" #: src/gtkui/menus.cc:157 src/qtui/menus.cc:216 msgid "_Refresh" @@ -1858,8 +1755,8 @@ msgid "Remove _Unavailable Files" msgstr "Pašalinti _neprieinamus failus" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Naujas" @@ -1869,7 +1766,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "_Šalinti" @@ -1899,7 +1796,7 @@ #: src/gtkui/menus.cc:179 src/qtui/menus.cc:247 msgid "_Equalizer ..." -msgstr "" +msgstr "_Vienodintuvas..." #: src/gtkui/menus.cc:180 src/qtui/menus.cc:249 msgid "E_ffects ..." @@ -1907,11 +1804,11 @@ #: src/gtkui/menus.cc:182 msgid "_Record Stream" -msgstr "" +msgstr "Į_rašymo srautas" #: src/gtkui/menus.cc:183 msgid "Audio _Settings ..." -msgstr "" +msgstr "_Garso nustatymai..." #: src/gtkui/menus.cc:187 src/qtui/menus.cc:258 msgid "Show _Menu Bar" @@ -1923,7 +1820,7 @@ #: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 msgid "Show Info Bar _Album Art" -msgstr "" +msgstr "Rodyti informacijos juostą _Albumo viršelis" #: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 msgid "Show Info Bar Vis_ualization" @@ -1973,11 +1870,11 @@ #: src/gtkui/menus.cc:211 src/qtui/menus.cc:297 msgid "_Open Containing Folder" -msgstr "" +msgstr "_Atverti esamą aplanką" #: src/gtkui/menus.cc:212 src/qtui/menus.cc:299 msgid "_Refresh Selected" -msgstr "" +msgstr "_Atnaujinti pasirinktus" #: src/gtkui/menus.cc:214 src/qtui/menus.cc:302 msgid "Cu_t" @@ -1993,14 +1890,14 @@ #: src/gtkui/menus.cc:217 src/qtui/menus.cc:305 msgid "Paste at _End" -msgstr "" +msgstr "Įklijuoti _gale" #: src/gtkui/menus.cc:218 src/qtui/menus.cc:307 msgid "Select _All" msgstr "Pasirinkti _viską" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Pervadinti..." @@ -2028,104 +1925,109 @@ msgid "Show column headers" msgstr "Rodyti stulpelio antraštes" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Keičiantis dainai slinkti" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "GTK naudotojo sąsaja" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." -msgstr "Įkraunama į atmintį ..." +msgstr "Įkeliama į atmintį ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Groti" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Pauzė" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" -msgstr "" +msgstr "Paieška bibliotekoje" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" -msgstr "Atverti failus" +msgstr "Atverti rinkmenas" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" -msgstr "Pridėti failus" +msgstr "Pridėti rinkmenas" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Ankstesnis" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Stabdyti" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Sekantis" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" -msgstr "" +msgstr "Įrašo srautas" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Kartoti" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Maišyti" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" -msgstr "" +msgstr "Meniu" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" @@ -2134,104 +2036,107 @@ msgstr[2] "%d kanalų" msgstr[3] "%d kanalų" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" -msgstr "" +msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "%d kb/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Vieno režimas." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Grojaraščio režimas." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Sustabdymas po dainos." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Ankstesnis takelis" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Sustabdyti/Paleisti" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Kitas takelis" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" -msgstr "" +msgstr "Žingsnis į priekį" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" -msgstr "" +msgstr "Žingsnis atgal" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Nutildyti" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Pagarsinti" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Pritildyti" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" -msgstr "Peršokti į failą" +msgstr "Peršokti į rinkmeną" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Perjungti grotuvo langą (-us)" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Rodyti On-Screen-Display" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Perjungti kartojimą" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Perjungti maišymą" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Perjungti sustabdymą po dabartinės" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Pakelti grotuvą langą (-us)" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(joks)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" "Do you want to continue?" msgstr "" +"Nerekomenduojama susieti pagrindinių pelės mygtukų be modifikatorių.\n" +"\n" +"Ar norite tęsti?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Saistyti pelės mygtukus" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2239,23 +2144,23 @@ "Paspauskite klavišų kombinaciją teksto lauke.\n" "Taip pat galima sieti ir pelės mygtukus." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Spartieji klavišai:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Veiksmas:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Klavišo susiejimas:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Pridėti" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Bendri karštieji klavišai" @@ -2273,6 +2178,18 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Bendrųjų sparčiųjų klavišų įskiepis\n" +"Valdo grotuvą bendraisiais klavišų deriniais arba daugialypės terpės " +"klavišais.\n" +"\n" +"Autoriaus teisės (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Prisidėjusieji:\n" +"Autoriaus teisės (C) 2006-2007 Vladimir Paskov \n" +"Autoriaus teisės (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " #: src/jack/jack-ng.cc:54 msgid "JACK Output" @@ -2280,19 +2197,20 @@ #: src/jack/jack-ng.cc:126 msgid "Client name:" -msgstr "" +msgstr "Kliento vardas:" #: src/jack/jack-ng.cc:128 msgid "Automatically connect to output ports" -msgstr "" +msgstr "Automatiškai prisijungti prie išvesties prievadų" #: src/jack/jack-ng.cc:130 msgid "Filter ports (regex, use any port if blank):" msgstr "" +"Filtruoti prievadus (regex, naudokite bet kurį prievadą, jei jis tuščias):" #: src/jack/jack-ng.cc:136 msgid "Connect to physical ports only" -msgstr "" +msgstr "Prisijungti tik prie fizinių prievadų" #: src/jack/jack-ng.cc:139 msgid "Upmix to" @@ -2300,35 +2218,37 @@ #: src/jack/jack-ng.cc:141 msgid "ports if input has fewer channels" -msgstr "" +msgstr "prievadai, jei įvestyje yra mažiau kanalų" #: src/jack/jack-ng.cc:143 msgid "Ignore insufficient number of ports" -msgstr "" +msgstr "Nepaisyti nepakankamo prievadų skaičiaus" #: src/jack/jack-ng.cc:181 msgid "No JACK output ports were found. Please check settings." -msgstr "" +msgstr "Nerasti JACK išvesties prievadai. Patikrinkite nustatymus." #: src/jack/jack-ng.cc:195 #, c-format msgid "Only %d JACK output ports were found but %d are required." -msgstr "" +msgstr "Rasti tik %d JACK išvesties portai, tačiau reikalingi - %d." #: src/jack/jack-ng.cc:210 #, c-format msgid "Failed to connect to JACK port %s." -msgstr "" +msgstr "Nepavyko prisijungti prie JACK prievado %s." #: src/jack/jack-ng.cc:230 msgid "" "JACK supports only floating-point audio. You must change the output bit " "depth to floating-point in Audacious settings." msgstr "" +"JACK palaiko tik slankiojo kablelio garsą. Audacious nustatymuose turite " +"pakeisti išvesties bitų gylį į slankiojo kablelio." #: src/jack/jack-ng.cc:245 msgid "Failed to connect to the JACK server; is it running?" -msgstr "" +msgstr "Nepavyko prisijungti prie JACK serverio. Ar jis veikia?" #: src/jack/jack-ng.cc:321 #, c-format @@ -2336,17 +2256,20 @@ "The JACK server requires a sample rate of %d Hz, but Audacious is playing at " "%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." msgstr "" +"JACK serveris reikalauja %d Hz ėminio spartos, tačiau Audacious veikia%d " +"Hz. Norėdami ištaisyti neatitikimą, naudokite Ėminių spartos keitiklio " +"efektą." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s nustatymai:" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Modulio kelias:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2357,25 +2280,25 @@ "Kai pridedami nauji keliai, paspauskite ENTER naujų įskiepių paieškai." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Prieinami įskiepiai:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Įjungti" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Įjungti įskiepiai:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Nustatymai" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2431,101 +2354,106 @@ msgid "Wait before reconnecting:" msgstr "Prieš jungiantis iš naujo palaukti:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" -msgstr "" +msgstr "Žodžiai" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" -msgstr "" +msgstr "Niekur" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" -msgstr "" +msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" +"Atlikėjas sutrumpinamas nuo pradžios, Pavadinimas -- nuo galo" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" -msgstr "" +msgstr "Simboliai, pagal kuriuos sutrumpinti:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" -msgstr "" +msgstr "Simboliai, pagal kuriuos padalinti:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" -msgstr "" +msgstr "Toliau sutrumpinkite pagal šiuos simbolius" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" -msgstr "" +msgstr "Bendri" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" +msgstr "Padalinkite pavadinimą į atlikėją ir pavadinimą pagal simbolius" + +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" -msgstr "" +msgstr "Išsaugokite gautus dainų tekstus vietinėje talpykloje" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" -msgstr "" +msgstr "Vietinė saugykla" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" -msgstr "" +msgstr "Įkelti dainų tekstus (.lrc) iš vietinės saugyklos" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Gauti %s nepavyko" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Apdoroti %s nepavyko" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Ieškoma dainų žodžių" -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Klaida" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." -msgstr "" +msgstr "Žodžiai nerasti." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." -msgstr "" +msgstr "Trūksta pavadinimo arba atlikėjo." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" -msgstr "" +msgstr "Išsaugoti vietiškai" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" -msgstr "" +msgstr "Atnaujinti" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "M3U grojaraščiai" @@ -2582,7 +2510,7 @@ #: src/mms/mms.cc:82 msgid "Error connecting to MMS server" -msgstr "" +msgstr "Klaida jungiantis prie MMS serverio" #: src/modplug/modplugbmp.h:57 msgid "ModPlug (Module Player)" @@ -2598,7 +2526,7 @@ #: src/modplug/plugin_main.cc:60 msgid "Linear (fast)" -msgstr "Linijinis (greitas)" +msgstr "Tiesinis (greitas)" #: src/modplug/plugin_main.cc:61 msgid "Spline (good)" @@ -2610,7 +2538,7 @@ #: src/modplug/plugin_main.cc:63 msgid "Sample rate" -msgstr "" +msgstr "Ėminio sparta" #: src/modplug/plugin_main.cc:64 msgid "22 kHz" @@ -2639,11 +2567,11 @@ #: src/modplug/plugin_main.cc:90 msgid "Reverb" -msgstr "Reverb" +msgstr "Aidas" #: src/modplug/plugin_main.cc:93 msgid "Bass Boost" -msgstr "Boso garsinimas" +msgstr "Žemų stiprinimas" #: src/modplug/plugin_main.cc:96 msgid "Surround" @@ -2679,10 +2607,10 @@ #: src/modplug/plugin_main.cc:124 src/sid/xs_config.cc:106 msgid "These settings will take effect when Audacious is restarted." -msgstr "" +msgstr "Šie nustatymai įsigalios, kai Audacious bus paleistas iš naujo." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Sustabdyti po šios dainos" @@ -2691,41 +2619,17 @@ msgid "Moonstone" msgstr "" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" -msgstr "" +msgstr "Atstatyti numatytuosius" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Dabar grojama" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Elementai" @@ -2739,15 +2643,15 @@ #: src/mpg123/mpg123.cc:82 msgid "Use accurate length calculation (slow)" -msgstr "" +msgstr "Naudoti tikslų trukmės skaičiavimą (lėtas)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Erdvinis garsas" #: src/mpris2/plugin.cc:38 msgid "MPRIS 2 Server" -msgstr "MPRIS 2 Serveris" +msgstr "MPRIS 2 serveris" #: src/neon/neon.cc:97 msgid "Neon HTTP/HTTPS Plugin" @@ -2755,19 +2659,19 @@ #: src/neon/neon.cc:526 msgid "Error parsing redirect" -msgstr "" +msgstr "Klaida analizuojant nukreipimą" #: src/neon/neon.cc:540 msgid "Unknown HTTP error" -msgstr "" +msgstr "Nežinoma HTTP klaida" #: src/neon/neon.cc:590 msgid "Error parsing URL" -msgstr "" +msgstr "Klaida analizuojant URL" #: src/neon/neon.cc:660 msgid "Too many redirects" -msgstr "" +msgstr "Per daug nukreipimų" #: src/notify/event.cc:97 msgid "Stopped" @@ -2800,22 +2704,23 @@ "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" -"Desktop Notifications Plugin for Audacious\n" -"Copyright (C) 2010 Maximilian Bogner\n" -"Copyright (C) 2011-2013 John Lindgren and Jean-Alexandre Anglès d'Auriac\n" -"\n" -"This plugin 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 3 of the License, or (at your option) " -"any later version.\n" -"\n" -"This plugin 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.\n" +"Audacious darbalaukio pranešimų įskiepis\n" +"Autorių teisės (C) 2010 Maximilian Bogner\n" +"Autorių teisės (C) 2011–2013 John Lindgren ir Jean-Alexandre Anglès " +"d'Auriac\n" +"\n" +"Šis įskiepis yra nemokama programinė įranga: ją galite platinti ir (arba) " +"keisti pagal GNU bendrosios viešosios licencijos sąlygas, paskelbtas " +"Laisvosios programinės įrangos fondo (angl. Free Software Foundation), arba " +"3 licencijos versiją, arba (jūsų pasirinkimu) bet kurią vėlesnę versiją.\n" +"\n" +"Šis įskiepis platinamas tikintis, kad jis bus naudingas, bet BE JOKIOS " +"GARANTIJOS; net be numanomos TINKAMUMO PARDUOTI ar TINKAMUMO KONKREČIAM " +"TIKSLUI garantijos. Daugiau informacijos rasite GNU bendrojoje viešojoje " +"licencijoje.\n" "\n" -"You should have received a copy of the GNU General Public License along with " -"this program. If not, see ." +"Kartu su šia programa turėjote gauti GNU bendrosios viešosios licencijos " +"kopiją. Jei ne, žr. ." #: src/notify/notify.cc:104 msgid "Show playback controls" @@ -2827,11 +2732,11 @@ #: src/notify/notify.cc:108 msgid "Include album name in notification" -msgstr "" +msgstr "Įterpti albumo pavadinimą pranešime" #: src/notify/notify.cc:110 msgid "Custom notification duration:" -msgstr "" +msgstr "Priskirto pranešimo trukmė:" #: src/notify/osd.cc:74 msgid "Show" @@ -2839,50 +2744,63 @@ #: src/openmpt/mpt.cc:50 msgid "OpenMPT (Module Player)" -msgstr "" +msgstr "OpenMPT (modulinis grotuvas)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" +"Modulinis grotuvas sukurtas pagal libopenmpt\n" +"\n" +"Suprogramavo: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" -msgstr "" +msgstr "Stereo atskyrimas:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" -msgstr "" +msgstr "Interpoliavimas:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" -msgstr "" +msgstr "Tiesinis" #: src/openmpt/mptwrap.h:52 msgid "Cubic" -msgstr "" +msgstr "Kubinis" #: src/openmpt/mptwrap.h:53 msgid "Windowed sinc" +msgstr "Langų sinchronizacija" + +#: src/opus/opus.cc:39 +msgid "Opus Decoder" msgstr "" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4 išvestis" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" -msgstr "" +msgstr "OSS3 išvestis" #: src/oss4/plugin.cc:35 msgid "Default device" -msgstr "" +msgstr "Numatytasis įrenginys" #: src/oss4/plugin.cc:78 msgid "Audio device:" @@ -2912,24 +2830,41 @@ "I would like to thank people on #audacious, especially Tony Vroon and John " "Lindgren and of course the authors of the previous OSS plugin." msgstr "" -"OSS4 Output Plugin skirtas Audacious\n" +"Audacious OSS4 išvesties įskiepis \n" "Autorinės teisės 2010-2012 Michał Lipski\n" "\n" "Norėčiau padėkoti žmonėms #audacious kanale, ypatingai Tony Vroon ir John " "Lindgren ir savaime aišku ankstesnės OSS įskiepio versijos autoriams." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Atkūrimas" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Grojaraščio redaktorius" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Pašalinti" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "_Pervadinti" @@ -2939,15 +2874,15 @@ #: src/psf/plugin.cc:53 msgid "OpenPSF PSF1/PSF2 Decoder" -msgstr "OpenPSF PSF1/PSF2 dekoderis" +msgstr "OpenPSF PSF1/PSF2 iškoduotuvas" #: src/psf/plugin.cc:270 msgid "OpenPSF Configuration" -msgstr "" +msgstr "OpenPSF nustatymai" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" -msgstr "" +msgstr "Nepaisyti rinkmenos trukmės" #: src/pulse/pulse_audio.cc:42 msgid "PulseAudio Output" @@ -2955,11 +2890,11 @@ #: src/pulse/pulse_audio.cc:72 msgid "Context name:" -msgstr "" +msgstr "Konteksto pavadinimas:" #: src/pulse/pulse_audio.cc:74 msgid "Stream name:" -msgstr "" +msgstr "Srauto pavadinimas:" #: src/pulse/pulse_audio.cc:575 msgid "" @@ -2979,10 +2914,26 @@ "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" +"Audacious PulseAudio išvesties įskiepis\n" +"\n" +"Ši programa yra nemokama programinė įranga; galite ją platinti ir (arba) " +"keisti pagal GNU bendrosios viešosios licencijos sąlygas, paskelbtas " +"Laisvosios programinės įrangos fondo (angl. Free Software " +"Foundation); 2 licencijos versija arba (jūsų pasirinkimu) bet kuri " +"vėlesnė versija.\n" +"\n" +"Ši programa platinama tikintis, kad ji bus naudinga, bet BE JOKIOS " +"GARANTIJOS; net be numanomos TINKAMUMO PARDUOTI ar TINKAMUMO KONKREČIAM " +"TIKSLUI garantijos. Daugiau informacijos rasite GNU bendrojoje viešojoje " +"licencijoje.\n" +"\n" +"Kartu su šia programa turėjote gauti GNU bendrosios viešosios licencijos " +"kopiją; jei ne, rašykite Free Software Foundation, Inc., 51 Franklin Street, " +"Fifth Floor, Boston, MA 02110-1301, USA." #: src/qtaudio/qtaudio.cc:44 msgid "QtMultimedia Output" -msgstr "" +msgstr "QtMultimedia išvestis" #: src/qtaudio/qtaudio.cc:72 msgid "" @@ -2992,6 +2943,11 @@ "Based on SDL Output Plugin for Audacious\n" "Copyright 2010 John Lindgren" msgstr "" +"Audacious QtMultimedia garso išvesties įskiepis\n" +"Autoriaus teisės 2014 William Pitcock\n" +"\n" +"Sukurtas pagal Audacious SDL išvesties įskiepį\n" +"Autoriaus teisės 2010 John Lindgren" #: src/qtglspectrum/gl-spectrum.cc:41 msgid "" @@ -3005,12 +2961,21 @@ "\n" "License: GPLv2+" msgstr "" +"Audacious OpenGL spektro analizatorius\n" +"Autorių teisės 2013 Christophe Budé, John Lindgren, ir Carlo Bramini\n" +"Autoriaus teisės 2014, 2020 Ariadne Conill\n" +"\n" +"Remiantis XMMS įskiepiu:\n" +"Autorių teisės 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas " +"Nilsson, ir 4Front Technologies\n" +"\n" +"Licencija: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." -msgstr "" +msgstr "Paspauskite klavišų kombinaciją teksto lauke." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3025,82 +2990,99 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Bendrųjų sparčiųjų klavišų įskiepis\n" +"Valdo grotuvą bendrųjų klavišų deriniais arba daugialypės terpės klavišais.\n" +"\n" +"Autoriaus teisės (C) 2020 i.Dark_Templar \n" +"Autoriaus teisės (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Prisidėjusieji:\n" +"Autoriaus teisės (C) 2006-2007 Vladimir Paskov \n" +"Autoriaus teisės (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " #: src/qtui/menus.cc:109 msgid "_Open Folder ..." -msgstr "" +msgstr "_Atverti aplanką..." #: src/qtui/menus.cc:115 msgid "_Add Folder ..." -msgstr "" +msgstr "_Pridėti aplanką..." #: src/qtui/menus.cc:128 msgid "_Log Inspector ..." -msgstr "" +msgstr "Žurnalo _inspektavimas" #: src/qtui/menus.cc:218 msgid "_Find ..." -msgstr "" +msgstr "_Rasti..." #: src/qtui/menus.cc:254 src/skins/menus.cc:80 src/skins-qt/menus.cc:70 msgid "Audio Settings ..." -msgstr "" +msgstr "Garso nustatymai..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" -msgstr "" +msgstr "Q#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" +msgstr "T#" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" msgstr "" #: src/qtui/qtui.cc:40 msgid "Qt Interface" -msgstr "" +msgstr "Qt sąsaja" #: src/qtui/search_bar.cc:46 msgid "Search playlist" -msgstr "" +msgstr "Ieškoti grojaraščio" #: src/qtui/settings.cc:58 msgid "Always" -msgstr "" +msgstr "Visada" #: src/qtui/settings.cc:59 msgid "Auto-hide" -msgstr "" +msgstr "Autoslėpimas" #: src/qtui/settings.cc:60 msgid "Never" -msgstr "" +msgstr "Niekada" #: src/qtui/settings.cc:64 msgid "Show playlist tabs:" -msgstr "" +msgstr "Rodyti grojaraščių skyrelius:" #: src/qtui/settings.cc:78 msgid "Use bold font for column headers" -msgstr "" +msgstr "Naudoti paryškintą šriftą stulpelių antraštėse" #: src/resample/resample.cc:43 msgid "Sample Rate Converter" -msgstr "Diskretizavimo dažnio keitėjas" +msgstr "Ėminių dažnio keitiklis" #: src/resample/resample.cc:183 msgid "" "Sample Rate Converter Plugin for Audacious\n" "Copyright 2010-2012 John Lindgren" msgstr "" -"Sample Rate Converter Plugin for Audacious\n" +"Audacious ėminių spartos keitiklio įskiepis \n" "Autorinės teisės 2010-2012 John Lindgren" #: src/resample/resample.cc:187 msgid "Skip/repeat samples" -msgstr "Praleisti/kartoti pavyzdžius" +msgstr "Praleisti / kartoti ėminius" #: src/resample/resample.cc:188 msgid "Linear interpolation" -msgstr "Linijinė interpoliacija" +msgstr "Tiesinė interpoliacija" #: src/resample/resample.cc:189 msgid "Fast sinc interpolation" @@ -3176,40 +3158,44 @@ #: src/scrobbler2/config_window.cc:19 msgid "Checking Last.fm access ..." -msgstr "" +msgstr "Tikrinama Last.fm prieiga..." #: src/scrobbler2/config_window.cc:27 msgid "" "Your scrobbles are being saved on your computer temporarily. They will be " "submitted as soon as Audacious is allowed access." msgstr "" +"Jūsų scrobbles laikinai išsaugomi jūsų kompiuteryje. Jie bus pateikti, kai " +"tik Audacious bus suteikta prieiga." #: src/scrobbler2/config_window.cc:33 #, c-format msgid "Permission granted. Scrobbling for user %s." -msgstr "" +msgstr "Leidimas suteiktas. Scrobbling vartotojui%s." #: src/scrobbler2/config_window.cc:37 msgid "" "Permission denied. Open the following URL in a browser, allow Audacious " "access to your account, and then click 'Check Permission' again:" msgstr "" +"Leidimas nesuteiktas. Naršyklėje atidarykite šį URL, leiskite Audacious " +"pasiekti savo paskyrą, tada dar kartą paspauskite „Tikrinti leidimą“:" #: src/scrobbler2/config_window.cc:47 msgid "There was a problem contacting Last.fm." -msgstr "" +msgstr "Atsirado problema susisiekiant su Last.fm." #: src/scrobbler2/config_window.cc:86 msgid "Check Permission" -msgstr "" +msgstr "Patikrinti leidimą" #: src/scrobbler2/config_window.cc:87 msgid "Revoke Permission" -msgstr "" +msgstr "Atšaukti leidimą" #: src/scrobbler2/config_window.cc:91 msgid "You need to allow Audacious to scrobble tracks to your Last.fm account." -msgstr "" +msgstr "Turite leisti Audacious įkelti takelius į jūsų Last.fm paskyrą." #: src/scrobbler2/scrobbler.cc:29 msgid "Scrobbler 2.0" @@ -3221,7 +3207,7 @@ "There might be a problem with your installation." msgstr "" "Scrobbler įskiepio paleisti nepavyko.\n" -"Gali būt jog yra problemų su jūsų įdiegimu." +"Gali būti, kad yra problemų su jūsų įdiegimu." #: src/scrobbler2/scrobbler.cc:291 msgid "" @@ -3257,7 +3243,7 @@ "SDL Output Plugin for Audacious\n" "Copyright 2010 John Lindgren" msgstr "" -"SDL Output Plugin skirtas Audacious\n" +"Audacious SDL išvesties įskiepis \n" "Autorinės teisės 2010 John Lindgren" #: src/search-tool/library.cc:35 src/search-tool/library.cc:46 @@ -3265,40 +3251,40 @@ msgid "Library" msgstr "Fonoteka" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d daina" +msgstr[1] "%d dainos" +msgstr[2] "%d dainų" +msgstr[3] "%d dainų" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" -msgstr "" +msgstr "pagal šį žanrą" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" -msgstr "" +msgstr "pagal" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" -msgstr "" +msgstr "Rezultatų skaičius:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" -msgstr "" +msgstr "Nuskaityti biblioteką paleidimo metu" #: src/search-tool-qt/search-tool-qt.cc:170 msgid "Monitor library for changes" -msgstr "" +msgstr "Stebėti fonotekos pokyčius" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3306,91 +3292,91 @@ "Norėdami importuoti muziką į Audacious fonoteką, pasirinkite aplanką ir " "paspauskite „atnaujinti“ piktogramą." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Palaukite..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Pasirinkite aplanką" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Ieškoti fonotekoje" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Rodomas %d iš %d rezultato" +msgstr[1] "Rodomas %d iš %d rezultatų" +msgstr[2] "Rodomas %d iš %d rezultatų" +msgstr[3] "Rodomas %d iš %d rezultatų" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d rezultatas" +msgstr[1] "%d rezultatai" +msgstr[2] "%d rezultatų" +msgstr[3] "%d rezultatų" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Sukurti grojaraštį" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Pridėti į grojaraštį" #: src/sid/xmms-sid.cc:43 msgid "SID Player" -msgstr "" +msgstr "SID grotuvas" #: src/sid/xs_config.cc:62 msgid "Channels:" -msgstr "" +msgstr "Kanalai:" #: src/sid/xs_config.cc:68 msgid "Emulation" -msgstr "" +msgstr "Emuliavimas" #: src/sid/xs_config.cc:69 msgid "Emulate MOS 8580 (default: MOS 6581)" -msgstr "" +msgstr "Emuliavimas MOS 8580 (numatytasis: MOS 6581)" #: src/sid/xs_config.cc:71 msgid "Do not automatically select chip model" -msgstr "" +msgstr "Automatiškai neparinkti lusto modelio" #: src/sid/xs_config.cc:73 msgid "Emulate filter" -msgstr "" +msgstr "Emuliavimo filtras" #: src/sid/xs_config.cc:75 msgid "Clock speed:" -msgstr "" +msgstr "Takto sparta:" #: src/sid/xs_config.cc:78 msgid "Do not automatically select clock speed" -msgstr "" +msgstr "Automatiškai neparinkti takto spartos" #: src/sid/xs_config.cc:80 msgid "Playback time" -msgstr "" +msgstr "Atkūrimo laikas" #: src/sid/xs_config.cc:81 msgid "Set maximum playback time:" -msgstr "" +msgstr "Nustatyti maksimalų atkūrimo laiką" #: src/sid/xs_config.cc:87 msgid "Use only when song length is unknown" -msgstr "" +msgstr "Naudoti tik tada, kai dainos trukmė nežinoma" #: src/sid/xs_config.cc:90 msgid "Set minimum playback time:" -msgstr "" +msgstr "Nustatyti minimalų atkūrimo laiką" #: src/sid/xs_config.cc:96 msgid "Subtunes" @@ -3406,25 +3392,27 @@ #: src/sid/xs_config.cc:105 msgid "Note" -msgstr "" +msgstr "Pastaba" #: src/silence-removal/silence-removal.cc:39 msgid "Silence Removal" -msgstr "" +msgstr "Tylos pašalinimas" #: src/silence-removal/silence-removal.cc:58 msgid "" "Silence Removal Plugin for Audacious\n" "Copyright 2014 John Lindgren" msgstr "" +"Audacious tylos pašalinimo įskiepis\n" +"Autoriaus teisės 2014 John Lindgren" #: src/silence-removal/silence-removal.cc:67 msgid "Silence Removal" -msgstr "" +msgstr "Tylos pašalinimas" #: src/silence-removal/silence-removal.cc:68 msgid "Threshold:" -msgstr "" +msgstr "Slenkstis:" #: src/silence-removal/silence-removal.cc:70 msgid "dB" @@ -3442,110 +3430,110 @@ msgid "Repeat point B set." msgstr "Kartojimo taškas B nustatytas." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" -msgstr "Preamp" +msgstr "Priešstiprintuvis" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" -msgstr "Audacious ekvalaizeris" +msgstr "Audacious vienodintuvas" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" -msgstr "" +msgstr "Įrašymas įjungtas" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" -msgstr "" +msgstr "Įrašymas išjungtas" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Eiti į %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Garsumas: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Balansas: %d%% kairė" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Balansas: centras" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Balansas: %d%% dešinė" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" -msgstr "Pasirinkčių meniu" +msgstr "Parinkčių meniu" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Išjungti „Visada viršuje“" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Įjungti „Visada viršuje“" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" -msgstr "Failo informacijos langas" +msgstr "Rinkmenos informacijos langas" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" -msgstr "" +msgstr "Dvigubas dydis" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" -msgstr "" +msgstr "Vizualizacijos" #: src/skins/menus.cc:74 src/skins-qt/menus.cc:64 msgid "Volume Up" @@ -3557,27 +3545,23 @@ #: src/skins/menus.cc:77 src/skins-qt/menus.cc:67 msgid "Effects ..." -msgstr "" +msgstr "Efektai..." #: src/skins/menus.cc:84 src/skins-qt/menus.cc:74 msgid "Open Files ..." -msgstr "Atverti failus..." +msgstr "Atverti rinkmenas..." #: src/skins/menus.cc:85 src/skins-qt/menus.cc:76 msgid "Open URL ..." msgstr "Atverti URL..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Atkūrimas" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Grojaraštis" #: src/skins/menus.cc:90 src/skins-qt/menus.cc:81 msgid "Output" -msgstr "" +msgstr "Išvestis" #: src/skins/menus.cc:91 src/skins-qt/menus.cc:82 msgid "View" @@ -3585,7 +3569,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Tarnybos" @@ -3602,13 +3586,13 @@ msgstr "Baigti" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Dainos informacija..." #: src/skins/menus.cc:105 src/skins-qt/menus.cc:96 msgid "Shuffle by Album" -msgstr "" +msgstr "Maišyti pagal albumus" #: src/skins/menus.cc:106 src/skins-qt/menus.cc:97 msgid "No Playlist Advance" @@ -3622,7 +3606,7 @@ msgid "Clear A-B Repeat" msgstr "Išvalyti A-B kartojimą" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Pereiti prie dainos ..." @@ -3632,7 +3616,7 @@ #: src/skins/menus.cc:125 src/skins-qt/menus.cc:118 msgid "Play/Resume" -msgstr "" +msgstr "Groti / Tęsti" #: src/skins/menus.cc:127 src/skins-qt/menus.cc:120 msgid "New Playlist" @@ -3660,7 +3644,7 @@ #: src/skins/menus.cc:135 src/skins-qt/menus.cc:128 msgid "Export Playlist ..." -msgstr "Eksportuoti grojaraštį..." +msgstr "Iškelti grojaraštį..." #: src/skins/menus.cc:137 src/skins-qt/menus.cc:130 msgid "Playlist Manager ..." @@ -3680,7 +3664,7 @@ #: src/skins/menus.cc:145 src/skins-qt/menus.cc:138 msgid "Show Equalizer" -msgstr "Rodyti ekvalaizerį" +msgstr "Rodyti vienodintuvą" #: src/skins/menus.cc:147 src/skins-qt/menus.cc:140 msgid "Show Remaining Time" @@ -3704,7 +3688,7 @@ #: src/skins/menus.cc:155 src/skins-qt/menus.cc:150 msgid "Roll Up Equalizer" -msgstr "Sustumti ekvalaizerį" +msgstr "Sustumti vienodintuvą" #: src/skins/menus.cc:163 src/skins-qt/menus.cc:158 msgid "Add URL ..." @@ -3712,25 +3696,25 @@ #: src/skins/menus.cc:164 src/skins-qt/menus.cc:160 msgid "Add Files ..." -msgstr "Pridėti failus..." +msgstr "Pridėti rinkmenas..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Pagal pavadinimą" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" -msgstr "" +msgstr "Pagal rinkmenos pavadinimą" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" -msgstr "Pagal failo kelią" +msgstr "Pagal rinkmenos kelią" #: src/skins/menus.cc:176 src/skins-qt/menus.cc:172 msgid "Remove All" @@ -3742,11 +3726,11 @@ #: src/skins/menus.cc:179 src/skins-qt/menus.cc:175 msgid "Remove Unavailable Files" -msgstr "Pašalina neprieinamus failus" +msgstr "Pašalinti neprieinamas rinkmenas" #: src/skins/menus.cc:180 src/skins-qt/menus.cc:176 msgid "Remove Duplicates" -msgstr "Pašalinti dubliuotus" +msgstr "Pašalinti pasikartojančias" #: src/skins/menus.cc:182 src/skins-qt/menus.cc:178 msgid "Remove Unselected" @@ -3756,113 +3740,113 @@ msgid "Remove Selected" msgstr "Pašalint pažymėtus" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Ieškoti ir pasirinkti" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Invertuoti pažymėjimą" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Nieko nepasirinkti" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Pasirinkti viską" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Pagal takelio numerį" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Pagal atlikėją" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Pagal albumą" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" -msgstr "" +msgstr "Pagal albumo atlikėją" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Pagal išleidimo datą" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" -msgstr "" +msgstr "Pagal žanrą" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" -msgstr "" +msgstr "Pagal trukmę" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" -msgstr "" +msgstr "Pagal pavadinimą" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" -msgstr "" +msgstr "Pagal komentarus" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Sumaišyti sąrašą" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Apversti sąrašą" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Rikuoti pasirinktus" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Rikiuoti sąrašą" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" -msgstr "" +msgstr "Atverti esamą aplanką" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Iškirpti" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Kopijuoti" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Įklijuoti" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" -msgstr "" +msgstr "Įklijuoti gale" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" -msgstr "Į eilę/Iš eilės" +msgstr "Į eilę / Iš eilės" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d iš %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Audacious grojaraščio redaktorius" @@ -3872,237 +3856,241 @@ #: src/skins-qt/menus.cc:75 msgid "Open Folder ..." -msgstr "" +msgstr "Atverti aplanką..." #: src/skins-qt/menus.cc:159 msgid "Add Folder ..." +msgstr "Pridėti aplanką..." + +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Ieškoti įrašų aktyviame grojaraštyje" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." msgstr "" +"Surasti ir pasirinkti įrašus grojaraštyje užpildant vieną ar kelis " +"laukelius. Laukeliuose naudojama reguliariųjų išraiškų sintaksė, raidžių " +"dydis nesvarbus. Jei nežinote, kaip veikia reguliariosios išraiškos, " +"paprasčiausiai įrašykite paraidžiui tai, ką norite surasti." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Pavadinimas:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Albumas:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Atlikėjas:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Rinkmenos pavadinimas:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Prie ieškant, išvalyti buvusius pasirinkimus" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Atitinkantiems įrašams automatiškai perjungti eilę" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Iš surastų įrašų sukurti naują grojaraštį" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Ieškoti" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" -msgstr "" +msgstr "Grotuvas:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Pasirinkti pagrindinį lango šriftą:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" -msgstr "" +msgstr "Grojaraštis:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Pasirinkti grojaraščio šriftą:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Išvaizda" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "Rodyti aktyvią pavadinimo juostą, kai sufokusuotas bet kuris langas" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Šriftai" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Naudoti bitmap šriftus (palaiko tik ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Slinkti pavadinimą" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Slinkti pavadinimą į abi puses" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analizatorius" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Sritis" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" -msgstr "Voiceprint / VU meter" +msgstr "Balso anspaudas / VU matuoklis" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Išjungta" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normalus" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Ugnis" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Vertikalios linijos" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Linijos" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Juostos" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Lėčiausias" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Lėtas" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Vidutinis" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Greitas" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Greičiausias" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Taškai" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Eilutė " -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Vientisa" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Ledas" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Tolygus" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" -msgstr "Spalvinimas:" +msgstr "Spalvos:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" -msgstr "Stilius:" +msgstr "Išvaizda:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Pikų krytis:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Pikų krytis:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" -msgstr "Srities stilius:" +msgstr "Srities išvaizda:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" -msgstr "Voiceprint spalvojimas:" +msgstr "Balso antspaudo spalvos:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" -msgstr "VU Meter stilius:" +msgstr "VU matuoklio išvaizda:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" -msgstr "Tipas" +msgstr "Rūšis" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Vaizdo efektų tipas:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analizatorius" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Rodyti pikus" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Vizualizacija" #: src/skins-qt/skinselector.cc:98 src/skins/skinselector.cc:111 msgid "Archived Winamp 2.x skin" -msgstr "Archyvuotas Winamp 2.x skin" +msgstr "Archyvuotas Winamp 2.x apvalkalas" #: src/skins-qt/skinselector.cc:102 src/skins/skinselector.cc:115 msgid "Unarchived Winamp 2.x skin" -msgstr "Išarchyvuotas Winamp 2.x skin" - -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Ieškoti įrašų aktyviame grojaraštyje" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Ieškoti" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Surask ir pasirink įrašus grojaraštyje užpildydamas vieną ar kelis " -"laukelius. Laukeliai naudoja reguliariųjų išraiškų sintaksę, raidžių lygis " -"nesvarbus. Jei nežinai kaip veikia reguliariosios išraiškos, paprasčiausiai " -"įrašyk paraidžiui tai ko ieškai." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Prie ieškant, išvalyti buvusius pasirinkimus" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Atitinkantiems įrašams automatiškai perjungti eilę" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Iš surastų įrašų sukurti naują grojaraštį" +msgstr "Išarchyvuotas Winamp 2.x apvalkalas" #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Sndfile įskiepis" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4123,53 +4111,54 @@ "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" -"Paremta xmms_sndfile įskiepiu:\n" -"Autorinės teisės (C) 2000, 2002 Erik de Castro Lopo\n" -"\n" -"Adapted for Audacious by Tony Vroon \n" -"\n" -"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.\n" +"Pagal xmms_sndfile įskiepį:\n" +"Autorių teisės (C) 2000, 2002 Erik de Castro Lopo\n" "\n" -"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.\n" +"Audacious pritaikė Tony Vroon \n" "\n" -"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." +"Ši programa yra nemokama programinė įranga; ją galite platinti ir (arba) " +"keisti pagal GNU bendrosios viešosios licencijos sąlygas, paskelbtas " +"Laisvosios programinės įrangos fondo (angl. Free Software " +"Foundation); 2 licencijos versija arba (jūsų pasirinkimu) bet kuri " +"vėlesnė versija.\n" +"\n" +"Ši programa platinama tikintis, kad ji bus naudinga, bet BE JOKIOS " +"GARANTIJOS; net be numanomos TINKAMUMO PARDUOTI ar TINKAMUMO KONKREČIAM " +"TIKSLUI garantijos. Daugiau informacijos rasite GNU bendrojoje viešojoje " +"licencijoje.\n" +"\n" +"Kartu su šia programa turėjote gauti GNU bendrosios viešosios licencijos " +"kopiją; jei ne, rašykite Free Software Foundation, Inc., 51 Franklin Street, " +"Fifth Floor, Boston, MA 02110-1301, USA." #: src/sndio/sndio.cc:43 msgid "Sndio Output" -msgstr "" +msgstr "Sndio išvestis" #: src/sndio/sndio.cc:98 msgid "Device (blank for default):" -msgstr "" +msgstr "Įrenginys (nepasirinkus bus naudojamas numatytasis)" #: src/sndio/sndio.cc:100 msgid "Save and restore volume:" -msgstr "" +msgstr "Išsaugoti ir atkurti garsumą:" #: src/sndio/sndio.cc:181 #, c-format msgid "Sndio error: Unsupported audio format (%d)" -msgstr "" +msgstr "Sndio klaida: nepalaikomas garso plėtinys (%d)" #: src/sndio/sndio.cc:192 msgid "Sndio error: sio_open() failed" -msgstr "" +msgstr "Sndio klaida: nepavyko paleisti sio_open()" #: src/sndio/sndio.cc:221 msgid "Sndio error: sio_setpar() failed" -msgstr "" +msgstr "Sndio klaida: nepavyko paleisti sio_setpar()" #: src/sndio/sndio.cc:233 msgid "Sndio error: sio_start() failed" -msgstr "" +msgstr "Sndio klaida: nepavyko paleisti sio_start()" #: src/songchange/song_change.cc:30 msgid "Song Change" @@ -4177,29 +4166,32 @@ #: src/songchange/song_change.cc:245 msgid "Commands" -msgstr "" +msgstr "Komandos" #: src/songchange/song_change.cc:247 msgid "Command to run when starting a new song:" -msgstr "" +msgstr "Paleisti komandą dainos pradžioje:" #: src/songchange/song_change.cc:250 msgid "Command to run at the end of a song:" -msgstr "" +msgstr "Paleisti komandą dainos pabaigoje" #: src/songchange/song_change.cc:253 msgid "Command to run at the end of the playlist:" -msgstr "" +msgstr "Komanda paleidimas grojaraščio pabaigoje:" #: src/songchange/song_change.cc:256 msgid "Command to run when song title changes (for network streams):" msgstr "" +"Komanda paleidimas, kai pasikeičia dainos pavadinimas (tinklo srautams):" #: src/songchange/song_change.cc:259 msgid "" "You can use the following format codes, which will be replaced before " "running the command (not all are useful for the end-of-playlist command):" msgstr "" +"Galite naudoti šiuos kodų pavidalus, kurie bus pakeisti prieš paleidžiant " +"komandą (ne visos komandos yra naudingos grojaraščio pabaigai):" #: src/songchange/song_change.cc:262 msgid "" @@ -4215,12 +4207,25 @@ "%t: Playlist position\n" "%T: Title (unformatted)" msgstr "" +"%a: Atlikėjas\n" +"%b: Albumas\n" +"%c: Kanalų skaičius\n" +"%f: Rinkmenos pavadinimas (visas kelias)\n" +"%F: Dažnis (Hz)\n" +"%l: Trukmė (ms)\n" +"%n arba %s: Suformuotas pavadinimas (žr. grojaraščio nustatymus)\n" +"%p: Šiuo metu groja (1 arba 0)\n" +"%r: Sparta (bitai/s)\n" +"%t: Grojaraščio padėtis\n" +"%T: Pavadinimas (nesuformuotas)" #: src/songchange/song_change.cc:273 msgid "" "Parameters passed to the shell should be enclosed in quotation marks. " "Unquoted parameters may lead to unexpected results." msgstr "" +"Parametrai, perduoti apvalkalui, turėtų būti rašomi kabutėse. Nekoduoti " +"parametrai gali sukelti netikėtų rezultatų." #: src/song-info-qt/song-info.cc:30 msgid "Song Info" @@ -4228,7 +4233,7 @@ #: src/soxr/sox-resampler.cc:44 msgid "SoX Resampler" -msgstr "SoX Resampler" +msgstr "SoX pakartotinis ėminys" #: src/soxr/sox-resampler.cc:172 msgid "" @@ -4259,15 +4264,15 @@ #: src/soxr/sox-resampler.cc:183 msgid "Ultra High" -msgstr "" +msgstr "Ypač aukštas" #: src/soxr/sox-resampler.cc:187 msgid "Minimum" -msgstr "" +msgstr "Minimalus" #: src/soxr/sox-resampler.cc:188 msgid "Intermediate" -msgstr "" +msgstr "Vidutinis" #: src/soxr/sox-resampler.cc:193 msgid "Quality:" @@ -4275,23 +4280,23 @@ #: src/soxr/sox-resampler.cc:196 msgid "Phase:" -msgstr "" +msgstr "Fazė:" #: src/soxr/sox-resampler.cc:200 msgid "Allow aliasing" -msgstr "" +msgstr "Leisti naudoti slapyvardį" #: src/soxr/sox-resampler.cc:202 msgid "Use steep filter" -msgstr "" +msgstr "Naudoti statų filtrą" #: src/speedpitch/speed-pitch.cc:54 msgid "Speed and Pitch" -msgstr "Greitis ir žingsnis" +msgstr "Sparta ir žingsnis" #: src/speedpitch/speed-pitch.cc:247 msgid "Speed" -msgstr "" +msgstr "Sparta" #: src/speedpitch/speed-pitch.cc:248 msgid "Decouple from pitch" @@ -4299,11 +4304,11 @@ #: src/speedpitch/speed-pitch.cc:250 src/speedpitch/speed-pitch.cc:258 msgid "Multiplier:" -msgstr "" +msgstr "Daugiklis:" #: src/speedpitch/speed-pitch.cc:254 msgid "Pitch" -msgstr "" +msgstr "Žingsnis" #: src/statusicon-qt/statusicon.cc:44 src/statusicon/statusicon.cc:47 msgid "Status Icon" @@ -4320,6 +4325,14 @@ "This plugin provides a status icon, placed in\n" "the system tray area of the window manager." msgstr "" +"Būsenos piktogramos įskiepis (dalinis prievadas Qt sąsajai)\n" +"\n" +"Autoriaus teisės 2005-2007 Giacomo Lozito \n" +"Autoriaus teisės 2010 Michał Lipski \n" +"Autoriaus teisės 2015 Eugene Paskevich \n" +"\n" +"Šis įskiepis sukuria būsenos piktogramą, kuri matoma\n" +"langų valdiklio sistemos dėklo zonoje." #: src/statusicon-qt/statusicon.cc:86 src/statusicon/statusicon.cc:380 msgid "Mouse Scroll Action" @@ -4363,7 +4376,7 @@ "This plugin provides a status icon, placed in\n" "the system tray area of the window manager." msgstr "" -"Status Icon Plugin\n" +"Status Icon įskiepis\n" "\n" "Autorinės teisės 2005-2007 Giacomo Lozito \n" "Autorinės teisės 2010 Michał Lipski \n" @@ -4381,7 +4394,7 @@ "\n" "By Johan Levin, 1999" msgstr "" -"Extra Stereo Plugin\n" +"Extra Stereo įskiepis\n" "\n" "Sukūrė Johan Levin, 1999" @@ -4391,143 +4404,143 @@ #: src/streamtuner/icecast-model.cc:126 src/streamtuner/shoutcast-model.cc:131 msgid "Type" -msgstr "" +msgstr "Rūšis" #: src/streamtuner/icecast-model.cc:132 msgid "Current Song" -msgstr "" +msgstr "Dabar groja" #: src/streamtuner/icecast-model.cc:164 msgid "Other" -msgstr "" +msgstr "Kita" #: src/streamtuner/ihr-model.cc:63 msgid "Market" -msgstr "" +msgstr "Prekyba" #: src/streamtuner/ihr-model.cc:156 msgid "Call Letters" -msgstr "" +msgstr "Šaukinio raidės" #: src/streamtuner/ihr-model.cc:162 msgid "Description" -msgstr "" +msgstr "Aprašymas" #: src/streamtuner/shoutcast-model.cc:128 msgid "Listeners" -msgstr "" +msgstr "Klausytojai" #: src/streamtuner/shoutcast-model.cc:188 msgid "Top 500 Stations" -msgstr "" +msgstr "Top 500 stočių" #: src/streamtuner/shoutcast-model.cc:189 msgid "Alternative" -msgstr "" +msgstr "Alternatyvioji" #: src/streamtuner/shoutcast-model.cc:190 msgid "Blues" -msgstr "Blues" +msgstr "Bliuzas" #: src/streamtuner/shoutcast-model.cc:191 msgid "Classical" -msgstr "Classical" +msgstr "Klasikinė" #: src/streamtuner/shoutcast-model.cc:192 msgid "Country" -msgstr "Country" +msgstr "Kaimiška" #: src/streamtuner/shoutcast-model.cc:193 msgid "Decades" -msgstr "" +msgstr "Dešimtmečiai" #: src/streamtuner/shoutcast-model.cc:194 msgid "Easy Listening" -msgstr "Easy Listening" +msgstr "Lengvo klausymo" #: src/streamtuner/shoutcast-model.cc:195 msgid "Electronic" -msgstr "" +msgstr "Elektroninė" #: src/streamtuner/shoutcast-model.cc:196 msgid "Folk" -msgstr "Folk" +msgstr "Liaudies" #: src/streamtuner/shoutcast-model.cc:197 msgid "Inspirational" -msgstr "" +msgstr "Įkvepianti" #: src/streamtuner/shoutcast-model.cc:198 msgid "International" -msgstr "" +msgstr "Tarptautinė" #: src/streamtuner/shoutcast-model.cc:199 msgid "Jazz" -msgstr "Jazz" +msgstr "Džiazas" #: src/streamtuner/shoutcast-model.cc:200 msgid "Latin" -msgstr "" +msgstr "Lotynų" #: src/streamtuner/shoutcast-model.cc:201 msgid "Metal" -msgstr "Metal" +msgstr "Metalas" #: src/streamtuner/shoutcast-model.cc:203 msgid "New Age" -msgstr "New Age" +msgstr "Naujasis amžius" #: src/streamtuner/shoutcast-model.cc:204 msgid "Pop" -msgstr "Pop" +msgstr "Popsas" #: src/streamtuner/shoutcast-model.cc:205 msgid "Public Radio" -msgstr "" +msgstr "Visuomeninis radijas" #: src/streamtuner/shoutcast-model.cc:206 msgid "R&B and Urban" -msgstr "" +msgstr "R&B ir urbanistinis" #: src/streamtuner/shoutcast-model.cc:207 msgid "Rap" -msgstr "Rap" +msgstr "Repas" #: src/streamtuner/shoutcast-model.cc:208 msgid "Reggae" -msgstr "Reggae" +msgstr "Regis" #: src/streamtuner/shoutcast-model.cc:209 msgid "Rock" -msgstr "Rock" +msgstr "Rokas" #: src/streamtuner/shoutcast-model.cc:210 msgid "Seasonal and Holiday" -msgstr "" +msgstr "Sezonas ir atostogos" #: src/streamtuner/shoutcast-model.cc:211 msgid "Soundtracks" -msgstr "" +msgstr "Garso takeliai" #: src/streamtuner/shoutcast-model.cc:212 msgid "Talk" -msgstr "" +msgstr "Pokalbiai" #: src/streamtuner/shoutcast-model.cc:213 msgid "Themes" -msgstr "" +msgstr "Temos" #: src/streamtuner/streamtuner.cc:59 msgid "Shoutcast" -msgstr "" +msgstr "Shoutcast" #: src/streamtuner/streamtuner.cc:60 msgid "Icecast" -msgstr "" +msgstr "Icecast" #: src/streamtuner/streamtuner.cc:71 msgid "Stream Tuner" -msgstr "" +msgstr "Srauto derintuvas" #: src/tonegen/tonegen.cc:45 msgid "Tone Generator" @@ -4550,25 +4563,38 @@ "To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" "e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" msgstr "" -"Sine tono generatorius, sukūrė Håvard Kvålen \n" +"Sinuso tono generatorius, sukūrė Håvard Kvålen \n" "Pakeitė Daniel J. Peng \n" "\n" "Norėdami naudoti, pridėkite URL: tone://dažnis1;dažnis2;dažnis3;...\n" -"pvz. tone://2000;2005 norint atkurti 2000 Hz toną ir 2005 Hz toną" +"pvz., tone://2000;2005 norint atkurti 2000 Hz toną ir 2005 Hz toną" -#: src/ui-common/dialogs-qt.cc:31 -msgid "Working ..." +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" msgstr "" +"\n" +"(Sekantys pranešimai paslėpti)" + +#: src/ui-common/dialogs-qt.cc:52 +msgid "Working ..." +msgstr "Veikia..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" -msgstr "" +msgstr "Informacija" + +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "%s neatrodo tinkamu aplanku." #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Balso pašalinimas" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4608,12 +4634,12 @@ #: src/vorbis/vorbis.h:18 msgid "Ogg Vorbis Decoder" -msgstr "Ogg Vorbis dekoderis" +msgstr "Ogg Vorbis iškoduotuvas" #: src/vtx/info.cc:24 #, c-format msgid "Details about %s" -msgstr "" +msgstr "Išsamiau apie %s" #: src/vtx/info.cc:26 msgid "" @@ -4629,10 +4655,20 @@ "Player Freq: %P\n" "Year: %y" msgstr "" +"Pavadinimas: %t\n" +"Autorius: %aIš: %f\n" +"Tracker: %T\n" +"Komentaras: %C\n" +"Lusto rūšis: %c\n" +"Stereo: %s\n" +"Kartojimas: %l\n" +"Lusto dažnis: %F\n" +"Grotuvo dažnis: %P\n" +"Metai: %y" #: src/vtx/vtx.cc:38 msgid "VTX Decoder" -msgstr "VTX Decoder" +msgstr "VTX iškoduotuvas" #: src/vtx/vtx.cc:178 msgid "" @@ -4649,44 +4685,48 @@ "VU Meter Plugin for Audacious\n" "Copyright 2017-2019 Marc Sánchez Fauste" msgstr "" +"Audacious VU matuoklio įskiepis\n" +"Autoriaus teisės 2017-2019 Marc Sánchez Fauste" #: src/vumeter-qt/vumeter_qt.cc:35 msgid "VU Meter Settings" -msgstr "" +msgstr "VU matuoklio nustatymai" #: src/vumeter-qt/vumeter_qt.cc:37 msgid "Peak hold time:" -msgstr "" +msgstr "Smailės išlaikymo trukmė:" #: src/vumeter-qt/vumeter_qt.cc:42 msgid "Fall-off time:" -msgstr "" +msgstr "Kryčio trukmė:" #: src/vumeter-qt/vumeter_qt.cc:44 msgid "dB/second" -msgstr "" +msgstr "dB/sekundę" #: src/vumeter-qt/vumeter_qt.cc:46 msgid "Display legend" -msgstr "" +msgstr "Rodyti legendą" #: src/vumeter-qt/vumeter_qt.h:37 msgid "VU Meter" -msgstr "" +msgstr "VU matuoklis" #: src/waveout/waveout.cc:43 msgid "Win32 waveOut" -msgstr "" +msgstr "Win32 waveOut" #: src/waveout/waveout.cc:69 msgid "" "Win32 waveOut Plugin for Audacious\n" "Copyright 2016 John Lindgren" msgstr "" +"Audacious Win32 waveOut įskiepis\n" +"Autoriaus teisės 2016 John Lindgren" #: src/wavpack/wavpack.cc:25 msgid "WavPack Decoder" -msgstr "WavPack dekoderis" +msgstr "WavPack iškoduotuvas" #: src/wavpack/wavpack.cc:217 msgid "lossy (hybrid)" @@ -4706,13 +4746,37 @@ "\n" "Dalį kodo parašė Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" -msgstr "2SF dekoderis" +msgstr "2SF iškoduotuvas" + +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Kosinusas" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Aštrus" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" -msgstr "" +msgstr "XSF nustatymai" + +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Numatyta perėjimo trukmė:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Interpoliavimo veiksena:" #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" diff -Nru audacious-plugins-4.1/po/lv.po audacious-plugins-4.3.1/po/lv.po --- audacious-plugins-4.1/po/lv.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/lv.po 2023-04-29 20:17:32.000000000 +0000 @@ -5,15 +5,15 @@ # Translators: # hairy_latvian , 2013-2016,2018 # hairy_latvian , 2009,2011-2013 -# Oskars G , 2020 +# Oskars Galanders , 2020 msgid "" msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-24 22:44+0000\n" -"Last-Translator: Oskars G \n" -"Language-Team: Latvian (http://www.transifex.com/audacious/audacious/" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Oskars Galanders , 2020\n" +"Language-Team: Latvian (http://app.transifex.com/audacious/audacious/" "language/lv/)\n" "Language: lv\n" "MIME-Version: 1.0\n" @@ -31,7 +31,7 @@ msgstr "AdPlug (AdLib atskaņotājs)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "sekvencēts" @@ -43,9 +43,11 @@ msgid "OPL Emulator:" msgstr "OPL emulators:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Iztveršanas temps (sample rate)" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Iztveršanas temps:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -61,7 +63,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Dažādi" @@ -69,259 +71,6 @@ msgid "Repeat song in endless loop" msgstr "Atkārtot dziesmu bezgalīgā ciklā" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Modinātājs" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Iestatīt modinātāju/signālu ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Spraudnis, kas var tikt izmantots, lai sāktu atskaņošanu noteiktā laikā.\n" -"\n" -"Sākotnējie autori: Adam Feakin un Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Laiks\n" -" Modinātājs: \n" -" Laiks, kad zvanīs modinātājs.\n" -"\n" -" Kluss pēc: \n" -" Apturēt modinātāju pēc šāda laika perioda.\n" -" (ja pamošanās dialoglogs netiek aizvērts)\n" -"\n" -"\n" -"Dienas\n" -" Diena:\n" -" Izvēlieties, kādās dienās modinātāju aktivizēt.\n" -"\n" -" Laiks:\n" -" Izvēlieties modinātāja laiku katrā dienā, \n" -" vai izvēlieties pārslēgšanas pogu, lai izmantotu\n" -" noklusēto laiku.\n" -"\n" -"\n" -"Skaļums\n" -" Izdzišana:\n" -" Samazināt skaļumu līdz izvēlētajam līmenim\n" -" šādu laika periodu.\n" -"\n" -" Sākt:\n" -" Sākt izdzišanu no šāda skaļuma līmeņa.\n" -"\n" -" Beigt: \n" -" Skaļums, pie kāda apstādināt izdzišanu. Ja\n" -" izdzišanas laiks ir 0, tad iestatiet skaļumu uz\n" -" šo un sāciet atskaņošanu.\n" -"\n" -"\n" -"Opcijas:\n" -" Papildu komanda:\n" -" Palaist šo komandu modināšanas laikā.\n" -"\n" -" Repertuārs: \n" -" Ielādēt šo repertuāru, lai no tā atskaņotu\n" -" dziesmas. Ja repertuārs nav dots, tiks izmantotas\n" -" dziesmas, kuras pašreiz ir sarakstā.\n" -" Šeit var tikt ievadīts arī mp3/ogg straumes URL.\n" -"\n" -" Atgādinātājs:\n" -" Parādīt atgādinājumu, kad palaižas modinātājs;\n" -" ierakstiet atgādinājumu rāmītī un ieslēdziet pārslēgšanas\n" -" pogu, ja vēlaties, lai atgādinājumu parāda." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Šis ir jūsu modinātāja/mošanās zvans." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Jūsu atgādinājums šodienai ir..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Atgādinājums" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Pirmdiena" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Otrdiena" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Trešdiena" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Ceturtdiena" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Piektdiena" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Sestdiena" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Svētdiena" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Laiks" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Modināt (noklusējums):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Kluss pēc:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "stundas" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minūtes" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Izvēlieties dienas, kurās ieslēgsies modinātājs" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Diena" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Noklusētais" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Dienas" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Izdzišana/Izdziestošs" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "sekundes" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Skaļums" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Sākt ar" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Beigu" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Pašreizējais" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Papildu komanda" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "iespējot/ieslēgt" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Repertuārs (neobligāts)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Izvēlieties repertuāru" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Opcijas" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Ko šīs opcijas nozīmē?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Palīdzība" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Albuma vāks" @@ -469,87 +218,83 @@ msgid "Synthesizer" msgstr "Sintezators" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Iztveršanas temps:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug — izvēlieties SoundFont failu" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "At_celt" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Atvērt" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Faila nosaukums" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Izmērs (baitos)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Nosaukums:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " MIDI informācija " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Formāts:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Garums (ms):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Celiņu skaits:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "mainīgs" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Laika dalītājs:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI Komentāri un dziesmu vārdu teksti " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* komentāri šajā MIDI failā nav pieejami *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* dziesmu vārdu teksti šajā MIDI failā nav pieejami *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "Ai_zvērt" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (nederīgs UTF-8)" @@ -605,7 +350,7 @@ msgid "Concave Rectangle" msgstr "Ieliekts taisnstrūris" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Neviens" @@ -641,94 +386,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Palaiž OSD, kad tiek atjaunota atskaņošana pēc pauzes." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Novietojums" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Relatīvā X nobīde:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Relatīvā Y nobīde:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Maksimālais OSD platums:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Daudzmonitoru opcijas" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Rādīt OSD izmantojot:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "visi monitori" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "%i. monitors" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Ilgums (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Rādīt:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Pakāpeniski parādīties:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Pakāpeniski izgaist/izbalēt:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Šrifti" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "%i. fonts:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Ēna" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Renderēšanas stils" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Krāsas" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "%i. krāsa:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Ieslēgt palaidēju/tirgeri" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Notikums" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Kompozitēšanas pārvaldnieks atrasts" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -738,56 +483,56 @@ "ja vien esat pārliecināts, ka jums tas ir palaists, lūdzu, aktivizējiet " "kompozitēšanas pārvaldnieku, citādi OSD nefunkcionēs pareizi" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Viltus caurspīdībai kompozitēšanas pārvaldnieks nav nepieciešams" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Caurspīdība" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Viltus caurspīdība" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Īsta caurspīdība (nepieciešams X Composite paplašin.)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Composite paplašinājums nav ielādēts" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Novietojums" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animācija" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Teksts" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Noformējums" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Palaidējs" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Dažādi" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Testēt" @@ -803,11 +548,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Audacious repertuāri (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Krāsa" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Blur Scope" @@ -819,6 +580,10 @@ msgid "Presets:" msgstr "Gatavie regulējumi/iestatījumi:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Noklusētais" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Ievades līmenis:" @@ -831,7 +596,7 @@ msgid "Cut frequency:" msgstr "Nogriešanas frekvence:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Spektra analizators" @@ -926,50 +691,50 @@ msgid "Audio CD" msgstr "Audio CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Neizdevās atvērt CD ierīci %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Netika atrasts CD dzinis ar audio atskaņošanas iespēju." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Dzinis ir tukšs." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Neatbalstīts diska tips." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Neizdevās pabeigt inicializēt atvērtu CD dzini." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Neizdevās saņemt pirmā/pēdējā celiņa numuru." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Neizdevās nolasīt LSN sākumu/beigas celiņam %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Neizdevās izveidot CDDB savienojumu." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Neizdevās aptaujāt CDDB serveri." -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Neizdevās aptaujāt CDDB serveri: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Neizdevās nolasīt CDDB informāciju: %s" @@ -1043,6 +808,13 @@ msgid "Default song length:" msgstr "Noklusētais dziesmas garums:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "sekundes" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Iztveršanas tempa pārveidošana" @@ -1071,7 +843,7 @@ msgid "CoreAudio output" msgstr "CoreAudio izvade" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1091,11 +863,11 @@ "Balstīts uz SDL Audacious izvades spraudni\n" "Copyright 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Izmantot ekskluzīvo režīmu" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "Izmantot bitu perfektu audio (pielāgot ierīces sampling rate)" @@ -1192,20 +964,20 @@ msgid "Delete" msgstr "Dzēst" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Atcelt" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Dzēst izvēlētos failus" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Dzēšanas metode" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Pārvietot uz miskasti, nevis dzēst nekavējoties" @@ -1232,7 +1004,7 @@ msgstr "Aizture/aizkave:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1248,11 +1020,11 @@ msgid "Echo" msgstr "Atbalss" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "FFmpeg spraudnis" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1374,89 +1146,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Joint Stereo" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1568,7 +1340,7 @@ msgid "Quality (0-1):" msgstr "Kvalitātes līmenis (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Vispārīgi" @@ -1577,11 +1349,11 @@ msgid "FLAC Decoder" msgstr "FLAC dekodētājs" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "bezzudumu" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1613,7 +1385,7 @@ msgid "Invalid open mode" msgstr "Neatļauts atvēršanas režīms" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1633,116 +1405,134 @@ "\n" "Licence: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL spektra analizators" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "Ieraksta numurs" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Nosaukums" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Izpildītājs" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Gads" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Albums" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Albuma izpildītājs" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Celiņš" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Žanrs" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "Novietojums rindā" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "Vieta rindā" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Ilgums" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "Faila ceļš" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Pielāgots nosaukums" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Faila nosaukums" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Pielāgotais nosaukums" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Bitātrums" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Komentārs" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "Izdevējs" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "Kataloga #" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Pieejamās kolonnas" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Parādītās kolonnas" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Meklēšanas rīks" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Pietauvot pa kreisi" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Pietauvot pa labi" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Pietauvot augšā" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Pietauvot apakšā" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Attauvot" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Atslēgt" @@ -1782,8 +1572,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "A_tskaņot" @@ -1960,8 +1750,8 @@ msgid "Remove _Unavailable Files" msgstr "Izņemt _nepieejamos failus" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Jauns" @@ -1971,7 +1761,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "Noņe_mt/izvākt" @@ -2102,7 +1892,7 @@ msgstr "Iezīmēt _visu" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "Pā_rdēvēt ..." @@ -2130,104 +1920,109 @@ msgid "Show column headers" msgstr "Rādīt kolonnu galvenes" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Ritināt dziesmām mainoties" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "GTK saskarne" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Buferizācija ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Atskaņot" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Pauze" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Meklēt bibliotēkā" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Atvērt failus" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Pievienot failus" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Iepriekšējais" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Stop" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Nākošais" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Ierakstīt straumi" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Atkārtot" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Jaukt" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "Izvēlne" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" @@ -2235,93 +2030,93 @@ msgstr[1] "%d kanāli" msgstr[2] "%d kanālu" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "%d kbit/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Vieninstances režīms." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Repertuāra režīms." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Aptur pēc pašreizējās dziesmas." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Iepriekšējais celiņš" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Pauze/Atsākt" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Nākamais celiņš" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "Soli uz priekšu" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "Soli atpakaļ" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Apklusināt" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Skaļāk" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Klusāk" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Pāriet uz failu" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Pārslēgt atskaņotāja logu(s)" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Parādīt virsekrāna displeju" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Pārslēgt atkārtošanu" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Pārslēgt jaukšanu" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Pārslēgt atkārtošanu pēc pašreizējā" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Pacelt atskaņotāja logu(s)" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(nekas)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2331,11 +2126,11 @@ "\n" "Vēlaties turpināt?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Piesaista peles pogas" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2343,23 +2138,23 @@ "Nospiediet taustiņu kombināciju teksta laukā.\n" "Jūs varat piesaistīt arī peles pogas." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Īsinājumtaustiņi:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Darbība:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Taustiņa piesaiste:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "Pi_evienot" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Globālie īsinājumtaustiņi" @@ -2458,16 +2253,16 @@ "atskaņo %d Hz. Lūdzu, izmantojiet diskretizācijas frekvences pārveidotāja " "efektu, lai izlabotu nesakritību." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s iestatījumi" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Moduļu ceļi:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2478,25 +2273,25 @@ "Pēc jauno ceļu pievienošanas nospiediet 'Enter', lai skenētu jaunos " "spraudņus." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Pieejamie spraudņi:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Iespējot/ieslēgt" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Iespējotie spraudņi:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Iestatījumi" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2553,101 +2348,105 @@ msgid "Wait before reconnecting:" msgstr "Gaidīt, pirms atkārtoti pieslēgties:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "Dziesmu vārdi" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Nekur" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "Izpildītājs tiek saīsināts sākumā, Nosaukums -- beigās" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "Rakstuzīmes saīsināt uz:?" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "Rakstzīmes ir ORed iekš RegExp, atstarpju ieskautas" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "Rakstzīmes uz kurām dalīt:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "Turpmāk saīsināt/apgriezt šos uz rakstzīmēm" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "Vispārīgs" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "Sadalīt nosaukumu izpildītājā un nosaukumā, uz rakstzīmēm" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "Interneta avoti" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "Dziesmu vārdu ielādēt no:" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "Ielādētos dziesmu vārdus saglabāt lokālajā kešatmiņā" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Lokālā failu noliktava" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "Ielādēt dziesmu vārdu failus (.lrc) no lokālās noliktavas" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Neizdevās saņemt %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Neizdevās apstrādāt (pārsēt) %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Meklē dziesmas vārdu tekstu ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Kļūda" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "Dziesmas vārdi netika atrasti." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "Trūkst nosaukuma un/vai izpildītāja." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Saglabāt lokāli." -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Aktualizēt" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "M3U repertuāri" @@ -2805,7 +2604,7 @@ msgstr "Šie iestatījumi būs spēkā, pārstartējot Audacious." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Apturēt pēc pašreizējās dziesmas" @@ -2814,41 +2613,17 @@ msgid "Moonstone" msgstr "Mēnessakmens" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Atstatīt uz noklusējumu" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Pašreiz atskaņo" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Ieraksta numurs" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Albuma izpildītājs" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Vieta rindā" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Faila ceļš" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Faila nosaukums" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Pielāgotais nosaukums" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Ieraksti" @@ -2864,7 +2639,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Lietot precīzo ilguma aprēķināšanu (lēni)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Surround skaņa" @@ -2963,7 +2738,7 @@ msgid "OpenMPT (Module Player)" msgstr "OpenMPT (moduļu atskaņotājs)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -2973,19 +2748,19 @@ "\n" "Sarakstījis: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Stereo celiņu atdalīšana:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "Interpolācija:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Linēārā" @@ -2997,11 +2772,21 @@ msgid "Windowed sinc" msgstr "Ielogota sinc (sinhronizācija)" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4 izvade" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "OSS3 izvade" @@ -3043,18 +2828,35 @@ "Autors vēlas pateikties cilvēkiem kanālā #audacious, īpaši Tony Vroon un " "John Lindgren, un, protams, iepriekšējā OSS spraudņa autoriem." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Atskaņošana" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Repertuāru pārvaldnieks" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Noņemt/izvākt" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "Pār_dēvēt" @@ -3070,7 +2872,7 @@ msgid "OpenPSF Configuration" msgstr "OpenPSF konfigurācija" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Ignorēt ilgumu no faila" @@ -3160,11 +2962,11 @@ "\n" "Licence: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "Nospiediet taustiņu kombināciju teksta laukā." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3212,14 +3014,18 @@ msgid "Audio Settings ..." msgstr "Audio iestatījumi ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "R#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "C#" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Qt saskarne" @@ -3437,7 +3243,7 @@ msgid "Library" msgstr "Bibliotēka" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" @@ -3445,23 +3251,23 @@ msgstr[1] "%d dziesma" msgstr[2] "%d dziesmas" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "šajā žanrā" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "uz" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "izpilda" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Attēlojamo rezultātu skaits:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Pārskanēt bibliotēku pie startēšanas laikā" @@ -3469,7 +3275,7 @@ msgid "Monitor library for changes" msgstr "Monitorēt bibliotēkas izmaiņas" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3477,19 +3283,19 @@ "Lai importētu jūsu mūzikas bibliotēku atskaņotājā Audacious, izvēlieties " "mapi un noklikšķiniet uz ikonas \"aktualizēt/atsvaidzināt\"." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Lūdzu, uzgaidiet ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Izvēlieties mapi" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Meklēt bibliotēkā" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" @@ -3497,7 +3303,7 @@ msgstr[1] "" msgstr[2] "" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" @@ -3505,11 +3311,11 @@ msgstr[1] "%d rezultāts" msgstr[2] "%d rezultāti" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "Iz_veidot repertuāru" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "Pi_evienot repertuāru" @@ -3613,108 +3419,108 @@ msgid "Repeat point B set." msgstr "Atkārtošanas punkts B iestatīts." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Priekšpastiprinājums" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Audacious balansieris" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Ierakstīšana ieslēgta" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Ierakstīšana izslēgta" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Pāriet uz %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Skaļums: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Balanss: %d%% pa kreisi" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Balanss: centrs" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Balanss: %d%% pa labi" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Iestatījumu izvēlne" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Atstatīt 'Vienmēr virspusē'" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Iestatīt 'Vienmēr virspusē'" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Faila info lodziņš" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Dubultizmērs" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Vizualizācijas" @@ -3738,10 +3544,6 @@ msgid "Open URL ..." msgstr "Atvērt URL ..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Atskaņošana" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Repertuārs" @@ -3756,7 +3558,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Servisi" @@ -3773,7 +3575,7 @@ msgstr "Iziet" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Dziesmas info ..." @@ -3793,7 +3595,7 @@ msgid "Clear A-B Repeat" msgstr "Atstatīt A-B atkārtošanu" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Pāriet uz dziesmu ..." @@ -3886,20 +3688,20 @@ msgstr "Pievienot failus ..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Pēc dziesmas nosaukuma" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Pēc faila nosaukuma" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Pēc faila ceļa" @@ -3927,113 +3729,113 @@ msgid "Remove Selected" msgstr "Novākt iezīmētos" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Meklēt un iezīmēt" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Invertēt iezīmētos" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Novākt/notīrīt iezīmējumu" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Iezīmēt visus" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Pēc celiņa numura" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Pēc izpildītāja" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Pēc albuma" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Pēc albuma izpildītāja" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Pēc izlaišanas datuma" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Pēc žanra" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Pēc ilguma" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Pēc pielāgotā nosaukuma" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Pēc komentāra" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Sajaukt (nejaušībot) repertuāru" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Reversot repertuāru" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Kārtot iezīmētos" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Kārtot repertuāru" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Atvērt saturošo mapi" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Izgriezt" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Kopēt" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Ievietot" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Ievietot beigās" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Ierindot/Izņemt no rindas" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d of %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Audacious repertuāra redaktors" @@ -4049,167 +3851,218 @@ msgid "Add Folder ..." msgstr "Pievienot mapi ..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Meklēt ierakstus aktīvajā repertuārā" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Iezīmējiet ierakstus repertuārā, aizpildot vienu vai vairākus laukus. Laukos " +"jāizmanto regulāro izteiksmju sintakse, reģistrnejutīga. Ja neziniet, kā " +"regulārās izteiksmes darbojas, vienkārši nosaukuma daļu tam, ko meklējat." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Nosaukums:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Albums: " + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Izpildītājs: " + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Faila nosaukums:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Notīrīt iepriekšējo iezīmējumu pirms meklēšanas" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Automātiski pārslēgt rindošanu atbilstošajiem ierakstiem" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Izveidot jaunu repertuāru no atlasei atbilstošajiem ierakstiem" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Meklēt" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Atskaņotājs:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Izvēlieties galvenā atskaņotāja loga fontu:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Repertuārs:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Izvēlieties repertuāra šriftu:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Apdare/ādiņa" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Šrifti" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Lietot bitmap šriftus (atbalsta tikai ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Ritināt dziesmas nosaukumu" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Ritināt dziesmas nosaukumu abos virzienos" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analizators" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Loks/vēriens/sfēra" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Balss vizualizēšana / VU mērnieks" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Izslēgts" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normāls" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Uguns" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Vertikālas līnijas" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Līnijas" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Stabiņi" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Vislēnāk" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Lēni" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Vidēji" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Ātri" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Visātrāk" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Punkti" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Līnijas" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Aizpildīts" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Ledus" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Gluds" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Krāsa:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Stils:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Krišana:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Virsotņu krišana:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Loka/vēriena/sfēras stils:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Balss vizualizācijas krāsa:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "VU mērnieka stils:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Tips" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Vizualizācijas tips:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analizators" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Rādīt virsotnes" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Vizualizēšana" @@ -4221,58 +4074,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Atarhivēta Winamp 2.x ādiņa" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Meklēt ierakstus aktīvajā repertuārā" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Meklēt" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Iezīmējiet ierakstus repertuārā, aizpildot vienu vai vairākus laukus. Laukos " -"jāizmanto regulāro izteiksmju sintakse, reģistrnejutīga. Ja neziniet, kā " -"regulārās izteiksmes darbojas, vienkārši nosaukuma daļu tam, ko meklējat." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Nosaukums:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Albums: " - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Izpildītājs: " - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Faila nosaukums:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Notīrīt iepriekšējo iezīmējumu pirms meklēšanas" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Automātiski pārslēgt rindošanu atbilstošajiem ierakstiem" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Izveidot jaunu repertuāru no atlasei atbilstošajiem ierakstiem" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Sndfile spraudnis" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4752,19 +4558,32 @@ "frekvence3;...\n" "piem., tone://2000;2005, lai atskaņotu 2000 Hz tonu un 2005 Hz toni" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Turpmākie ziņojumi tika paslēpti.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Darbojas ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Informācija" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Balss notušēšana/noņemšana" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4916,14 +4735,41 @@ "\n" "Daļai koda autors ir Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2SF dekodētājs" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "XSF konfigurācija" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "XML kopīgojamie repertuāri (XSPF)" + +#~ msgid "Sample rate" +#~ msgstr "Iztveršanas temps (sample rate)" diff -Nru audacious-plugins-4.1/po/meson.build audacious-plugins-4.3.1/po/meson.build --- audacious-plugins-4.1/po/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -9,7 +9,7 @@ '--keyword=N_', '--from-code=UTF-8', '--msgid-bugs-address="https://redmine.audacious-media-player.org/"', - '--directory=%0%'.format(meson.source_root()), + '--directory=%0%'.format(meson.current_source_dir()), '--files-from=POTFILES.in' ] ) diff -Nru audacious-plugins-4.1/po/ml_IN.po audacious-plugins-4.3.1/po/ml_IN.po --- audacious-plugins-4.1/po/ml_IN.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/ml_IN.po 2023-04-29 20:17:32.000000000 +0000 @@ -11,9 +11,9 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: ST Alfas, 2014\n" "Language-Team: Malayalam (India) (http://www.transifex.com/audacious/" "audacious/language/ml_IN/)\n" "Language: ml_IN\n" @@ -31,7 +31,7 @@ msgstr "AdPlug (AdLib പ്ലേയര്‍)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "സീക്വന്‍സ്ഡ്" @@ -43,8 +43,10 @@ msgid "OPL Emulator:" msgstr "" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" msgstr "" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 @@ -61,7 +63,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "പലവക" @@ -69,209 +71,6 @@ msgid "Repeat song in endless loop" msgstr "" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "അലാം" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "" - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "ഇത് നിങ്ങളുടെ ഉണര്‍ത്തുപാട്ടാണ്." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "ഇന്നേയ്ക്കുള്ള നിങ്ങളുടെ സ്മാരകം: " - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "സ്മാരകം" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "തിങ്കളാഴ്ച" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "ചൊവ്വാഴ്ച" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "ബുധനാഴ്ച" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "വ്യാഴാഴ്ച" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "വെള്ളിയാഴ്ച" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "ശനിയാഴ്ച" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "ഞായറാഴ്ച" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "സമയം" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "അലാം മുഴങ്ങേണ്ട സമയം (സ്വതവേയുള്ളത്):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "ശേഷം ശാന്തമാകൂ :" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "മണിക്കൂറുകള്‍" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "മിനിറ്റുകള്‍" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "അലാം മുഴങ്ങേണ്ട ദിനങ്ങള്‍ തെരെഞ്ഞെടുക്കുക" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "ദിവസം" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "സ്വതസ്സിദ്ധം" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "ദിവസങ്ങള്‍" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "മായുന്നു" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "സെക്കന്‍ഡുകള്‍" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "ഉച്ചത" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "ഇവിടെ തുടങ്ങുക" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "അവസാനത്തേത്" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "നിലവിലുള്ളത്" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "അധികകല്‍പ്പന" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "സാദ്ധ്യമാക്കുക" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "പ്ലേലിസ്റ്റ് (നിര്‍ബന്ധമില്ല)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "ഒരു പ്ലേലിസ്റ്റ് തിരഞ്ഞെടുക്കുക" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "ഓപ്ഷനുകള്‍" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "ഈ ഓപ്ഷനുകള്‍ എന്താണ് അര്‍ത്ഥമാക്കുന്നത്?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "സഹായം" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "ആല്‍ബം ആര്‍ട്ട്" @@ -396,87 +195,83 @@ msgid "Synthesizer" msgstr "" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-പ്ലഗ്ഗ് - സൗണ്ട് ഫോണ്ട് തെരെഞ്ഞെടുക്കുക" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "ഫയല്‍ നെയിം" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "വലിപ്പം (ബൈറ്റുകള്‍)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "പേര്:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " MIDI വിവരങ്ങള്‍ " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "ഫോര്‍മാറ്റ്:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "നീളം (മില്ലി സെക്കന്‍ഡില്‍):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "ട്രാക്കുകളുടെ എണ്ണം:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "ചരം" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI വിവരണങ്ങളും വരികളും " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* ഈ MIDI ഫയലില്‍ നിലവിലുള്ള വിവരണങ്ങള്‍ ഒന്നുമില്ല *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* ഈ MIDI ഫയലില്‍ നിലവിലുള്ള വരികള്‍ ഒന്നുമില്ല *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_അടയ്ക്കുക" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr "(പ്രാബല്യമില്ലാത്ത UTF-8)" @@ -520,7 +315,7 @@ msgid "Concave Rectangle" msgstr "അവതലചതുരം" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "ശൂന്യം" @@ -556,153 +351,153 @@ msgid "Triggers OSD when playback is unpaused." msgstr "" -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "അവസ്ഥ" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "താരതമ്യേനയുള്ള X ഓഫ്‌സെറ്റ്" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "താരതമ്യേനയുള്ള Y ഓഫ്‌സെറ്റ്" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "പരമാവധി OSD നീളം" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "മള്‍ട്ടി മോണിറ്റര്‍ ക്രമീകരണങ്ങള്‍" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "എല്ലാ മോണിറ്ററുകളും" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "മോണിറ്റര്‍ %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "ഡിസ്പ്ലേ:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "ഫെയ്ഡ് ഇന്‍:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "ഫെയ്ഡ് ഔട്ട്" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "ഫോണ്ടുകള്‍" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "ഫോണ്ട് %i" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "നിഴല്‍" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "റെന്‍ഡര്‍ സ്റ്റൈല്‍" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "നിറങ്ങള്‍" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "നിറം %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "കാഞ്ചി സാദ്ധ്യമാക്കുക" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "സംഭവം" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "കമ്പോസിറ്റ് മാനേജര്‍ ശ്രദ്ധയില്‍ പെട്ടു" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " "manager otherwise the OSD won't work properly" msgstr "" "കമ്പോസിറ്റ് മാനേജര്‍ ശ്രദ്ധയില്‍ പെട്ടിട്ടില്ല;\n" -"മറ്റൊന്ന് പ്രവര്‍ത്തിക്കുന്നത് നിങ്ങള്‍ക്കറിയാമെങ്കില്‍, ദയവ് ചെയ്ത് ഒരു കമ്പോസിറ്റ് മാനേജര്‍ പ്രാവര്‍" -"ത്തികമാക്കുക അല്ലെങ്കില്‍ OSD പ്രവര്‍ത്തിച്ചില്ലെന്ന് വരാം" +"മറ്റൊന്ന് പ്രവര്‍ത്തിക്കുന്നത് നിങ്ങള്‍ക്കറിയാമെങ്കില്‍, ദയവ് ചെയ്ത് ഒരു കമ്പോസിറ്റ് മാനേജര്‍ " +"പ്രാവര്‍ത്തികമാക്കുക അല്ലെങ്കില്‍ OSD പ്രവര്‍ത്തിച്ചില്ലെന്ന് വരാം" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "വ്യാജമായ സുതാര്യതയ്ക്ക് കമ്പോസിറ്റ് മാനേജര്‍ ആവശ്യമില്ല" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "സുതാര്യത" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "കപടസുതാര്യത" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "യഥാര്‍ത്ഥ സുതാര്യത (X composite Ext. ആവശ്യമുണ്ട്)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "കോമ്പോസിറ്റ് എക്സ്റ്റന്‍ഷന്‍ നിലവില്‍ വന്നിട്ടില്ല" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "ഒഡാഷ്യസ് OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "സ്ഥാനം" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "അനിമേഷന്‍" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "എഴുത്ത്" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "അലങ്കാരം" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "കാഞ്ചി" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "പലവക" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "പരിശോധന" @@ -718,11 +513,27 @@ msgid "Audacious Playlists (audpl)" msgstr "" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "നിറം" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "ബ്ലര്‍ സ്കോപ്പ്" @@ -734,6 +545,10 @@ msgid "Presets:" msgstr "പ്രീസെറ്റുകള്‍:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "സ്വതസ്സിദ്ധം" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "ഫീഡ് ലെവല്‍:" @@ -746,7 +561,7 @@ msgid "Cut frequency:" msgstr "ആവൃത്തി മുറിയ്ക്കുക:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "സ്പെക്ട്രം അനലൈസര്‍" @@ -833,50 +648,50 @@ msgid "Audio CD" msgstr "ഓഡിയോ സി.ഡി." -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "സി.ഡി. ഉപകരണം %s തുറക്കുന്നതില്‍ പരാജയപ്പെട്ടു." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "ഓഡിയോ ശേഷിയുള്ള സി.ഡി. ഡ്രൈവ് കണ്ടുകിട്ടിയില്ല." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "ഡ്രൈവ് ശൂന്യമാണ്." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "പിന്തുണയില്ലാത്ത തരം ഡിസ്ക്." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "" @@ -941,6 +756,13 @@ msgid "Default song length:" msgstr "പാട്ടിന്റെ സ്വതസ്സിദ്ധമായ നീളം" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "സെക്കന്‍ഡുകള്‍" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "റീസാംപ്ലിങ്" @@ -969,7 +791,7 @@ msgid "CoreAudio output" msgstr "" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -981,11 +803,11 @@ "Copyright 2010 John Lindgren" msgstr "" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" @@ -1078,20 +900,20 @@ msgid "Delete" msgstr "നീക്കം ചെയ്യുക" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "റദ്ദാക്കുക" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "" @@ -1113,7 +935,7 @@ msgstr "താമസം:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1129,11 +951,11 @@ msgid "Echo" msgstr "പ്രതിധ്വനി" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "FFmpeg പ്ലഗ്ഗിന്‍" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1235,76 +1057,76 @@ msgid "32000 Hz" msgstr "" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" +msgid "8 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" +msgid "16 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" +msgid "32 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" +msgid "40 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" +msgid "48 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" +msgid "56 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" +msgid "64 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" +msgid "80 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" +msgid "96 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" +msgid "112 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" +msgid "128 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" +msgid "160 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" +msgid "192 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" +msgid "224 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" +msgid "256 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" +msgid "320 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:450 @@ -1312,12 +1134,12 @@ msgstr "കൂട്ടിച്ചേര്‍ത്ത സ്റ്റീരിയോ" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "സ്റ്റീരിയോ" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "മോണോ" @@ -1429,7 +1251,7 @@ msgid "Quality (0-1):" msgstr "" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "പൊതുവായവ" @@ -1438,11 +1260,11 @@ msgid "FLAC Decoder" msgstr "FLAC ഡീകോഡര്‍" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "ലോസ്‌ലെസ്സ്" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1468,7 +1290,7 @@ msgid "Invalid open mode" msgstr "" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1480,116 +1302,134 @@ "License: GPLv2+" msgstr "" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL സ്പെക്ട്രം അനലൈസര്‍" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "എന്‍ട്രി നമ്പര്‍" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "ടൈറ്റില്‍" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "ആര്‍ട്ടിസ്റ്റ്" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "വര്‍ഷം" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "ആല്‍ബം" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "ട്രാക്ക്" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "തരം" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "വരിയിലുള്ള സ്ഥാനം" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "നീളം" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "ഫയല്‍ പാത്ത്" - -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "സ്വേച്ഛയാലുള്ള തലക്കെട്ട്" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "ബിറ്റ്‌റേറ്റ്" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "അഭിപ്രായം" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "തിരച്ചില്‍ ടുള്‍" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "ഇടതുവശത്ത് ഡോക്ക് ചെയ്യുക" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "വലതുവശത്ത് ഡോക്ക് ചെയ്യുക" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "മുകളില്‍ ഡോക്ക് ചെയ്യുക" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "താഴെ ഡോക്ക് ചെയ്യുക" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "ഡോക്കിങ് ഒഴിവാക്കുക" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "അസാദ്ധ്യമാക്കുക" @@ -1629,8 +1469,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_പാടുക" @@ -1807,8 +1647,8 @@ msgid "Remove _Unavailable Files" msgstr "_ലഭ്യമല്ലാത്ത ഫയലുകള്‍ നീക്കം ചെയ്യുക" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_പുതിയത്" @@ -1818,7 +1658,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "" @@ -1949,7 +1789,7 @@ msgstr "_എല്ലാം തിരഞ്ഞെടുക്കുക" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "പേര് _മാറ്റുക ..." @@ -1977,208 +1817,213 @@ msgid "Show column headers" msgstr "" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "GTK ഇന്‍ഡര്‍ഫേസ്" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - ഒഡാഷ്യസ്" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "ബഫര്‍ ചെയ്യുന്നു ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "ഒഡാഷ്യസ്" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "പാടുക" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "പോസ് ചെയ്യുക" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "ഫയലുകള്‍ തുറക്കുക" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "ഫയലുകള്‍ ചേര്‍ക്കുക" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "മുമ്പത്തേത്" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "നിര്‍ത്തുക" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "അടുത്തത്" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "ആവര്‍ത്തിയ്ക്കുക" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "കശക്കുക" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "മോണോ" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "സ്റ്റീരിയോ" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d ചാനല്‍" msgstr[1] "%d ചാനലുകള്‍" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "സിംഗ്ള്‍ മോഡ്" -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "പ്ലേലിസ്റ്റ് മോഡ്" -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "പാട്ടിനു ശേഷം നിര്‍ത്തുന്നു." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "മുമ്പത്തെ ട്രാക്ക്" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "പോസ്/റെസ്യൂം" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "അടുത്ത ട്രാക്ക്" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "നിശ്ശബ്ദമാക്കുക" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "ശബ്ദം കൂട്ടുക" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "ശബ്ദം കുറയ്ക്കുക" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "ഫയലിലേയ്ക്ക് ചാടുക" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "ഓണ്‍-സ്ക്രീന്‍-ഡിസ്‌പ്ലേ കാണിയ്ക്കുക" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(ശൂന്യം)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" "Do you want to continue?" msgstr "" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "മൗസ് ബട്ടണുകള്‍ ബൈന്റ് ചെയ്യുന്നു" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2186,23 +2031,23 @@ "ടെക്സ്റ്റ് ഫീല്‍ഡിനുള്ളില്‍ ഒരു കീ കോമ്പിനേഷന്‍ അമര്‍ത്തുക.\n" "മൗസ് ബട്ടണുകളും നിങ്ങള്‍ക്ക് ബൈന്‍ഡ് ചെയ്യാം." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "ഹോട്കീകള്‍" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "പ്രവൃത്തി:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "കീ ബൈന്റിങ്:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "" @@ -2284,41 +2129,41 @@ "%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." msgstr "" -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s ക്രമീകരണങ്ങള്‍" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "മൊഡ്യൂള്‍ പാത്തുകള്‍:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" "After adding new paths, press Enter to scan for new plugins." msgstr "" -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "ലഭ്യമായ പ്ലഗ്ഗിന്നുകള്‍:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "സാദ്ധ്യമാക്കുക" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "പ്ലഗ്ഗിനുകള്‍ സാദ്ധ്യമാക്കുക:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "ക്രമീകരണങ്ങള്‍" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2360,101 +2205,105 @@ msgid "Wait before reconnecting:" msgstr "പുനര്‍ബന്ധത്തിനു മുമ്പ് കാത്തിരിക്കുക:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "വരികള്‍ക്കായി നോക്കുന്നു ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "പിശക്" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "M3U പ്ലേലിസ്റ്റുകള്‍" @@ -2605,7 +2454,7 @@ msgstr "" #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "" @@ -2614,41 +2463,17 @@ msgid "Moonstone" msgstr "" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "ഇപ്പോള്‍ പാടുന്നത്" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "എന്‍ട്രികള്‍" @@ -2664,7 +2489,7 @@ msgid "Use accurate length calculation (slow)" msgstr "" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "സറൗണ്ട്" @@ -2748,26 +2573,26 @@ msgid "OpenMPT (Module Player)" msgstr "" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "" @@ -2779,11 +2604,21 @@ msgid "Windowed sinc" msgstr "" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4 ഔട്പുട്ട്" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "" @@ -2820,18 +2655,35 @@ "Lindgren and of course the authors of the previous OSS plugin." msgstr "" -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "പ്ലേബാക്ക്" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "പ്ലേലിസ്റ്റ് മാനേജര്‍" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "" @@ -2847,7 +2699,7 @@ msgid "OpenPSF Configuration" msgstr "" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "" @@ -2908,11 +2760,11 @@ "License: GPLv2+" msgstr "" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "" -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -2948,14 +2800,18 @@ msgid "Audio Settings ..." msgstr "" -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "" @@ -3153,30 +3009,30 @@ msgid "Library" msgstr "ഗ്രന്ഥശാല" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "" msgstr[1] "" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "" @@ -3184,43 +3040,43 @@ msgid "Monitor library for changes" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "ദയവായി കാത്തിരിക്കുക ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "ഫോള്‍ഡര്‍ തെരെഞ്ഞെടുക്കുക" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "ഗ്രന്ഥശാല തിരയുക" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "" msgstr[1] "" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "" msgstr[1] "" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "പ്ലേലിസ്റ്റ് _നിര്‍മിക്കുക" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "പ്ലേലിസ്റ്റിലേയ്ക്ക് _ചേര്‍ക്കുക" @@ -3322,108 +3178,108 @@ msgid "Repeat point B set." msgstr "" -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "പ്രീആംപ്" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "ഒഡാഷ്യസ് ഈക്വലൈസര്‍" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "തിരയുക %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "ശബ്ദം: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "അവശേഷിക്കുന്നത്: %d%% വലത്" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "അവശേഷിക്കുന്നത്: നടുവില്‍" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "അവശേഷിക്കുന്നത്: %d%% ഇടത്" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "ഓപ്ഷന്‍സ് മെനു" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "'എപ്പോഴും മുകളില്‍' അസാദ്ധ്യമാക്കുക" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "'എപ്പോഴും മുകളില്‍' സാദ്ധ്യമാക്കുക" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "ഫയല്‍ ഇന്‍ഫോ ജാലകം" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "" @@ -3447,10 +3303,6 @@ msgid "Open URL ..." msgstr "" -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "പ്ലേബാക്ക്" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "പ്ലേലിസ്റ്റ്" @@ -3465,7 +3317,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "" @@ -3482,7 +3334,7 @@ msgstr "" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "" @@ -3502,7 +3354,7 @@ msgid "Clear A-B Repeat" msgstr "" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "" @@ -3595,20 +3447,20 @@ msgstr "" #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "ടൈറ്റിലിനനുസരിച്ച്" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "" @@ -3636,113 +3488,113 @@ msgid "Remove Selected" msgstr "തിരഞ്ഞെടുത്തവ നീക്കംചെയ്യുക" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "തിരയുക, തിരഞ്ഞെടുക്കുക" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "തിരഞ്ഞെടുപ്പ് ഇന്‍വേര്‍ട്ട് ചെയ്യുക" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "ഒന്നും തിരഞ്ഞെടുക്കേണ്ട" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "എ​ല്ലാം തിരഞ്ഞെടുക്കുക" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "ട്രാക്ക് നമ്പര്‍ അനുസരിച്ച്" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "ആര്‍ട്ടസ്റ്റിനനുസരിച്ച്" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "ആല്‍ബമനുസരിച്ച്" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "ലിസ്റ്റ് ക്രമമില്ലാതെയാക്കുക" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "പട്ടിക തലതിരിയ്ക്കുക" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "തിരഞ്ഞെടുത്തവ ക്രമീകരിയ്ക്കുക" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "പട്ടിക അക്ഷരമാലാക്രമത്തിലാക്കുക" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "മുറിയ്ക്കുക" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "പകര്‍ത്തുക" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "ഒട്ടിയ്ക്കുക" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d / %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "ഒഡാഷ്യസ് പ്ലേലിസ്റ്റ് എഡിറ്റര്‍" @@ -3758,167 +3610,215 @@ msgid "Add Folder ..." msgstr "" -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "സജീവമായ പ്ലേലിസ്റ്റിലെ എന്‍ട്രികള്‍ തിരയുക" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "തിരയുന്നതിനുമുമ്പ് മുമ്പുള്ള തിരഞ്ഞെടുപ്പ് വെടിപ്പാക്കുക" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "യോജിയ്ക്കുന്ന എന്‍ട്രികള്‍ ഉപയോഗിച്ച് പുതിയൊരു പ്ലേലിസ്റ്റ് ഉണ്ടാക്കുക" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "പ്രധാനപ്പെട്ട പ്ലെയര്‍ വിന്‍ഡോയുടെ ഫോണ്ട് തെരെഞ്ഞെടുക്കുക:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "പ്ലേലിസ്റ്റ് ഫോണ്ട് തെരെഞ്ഞെടുക്കുക:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "ബിറ്റ്മാപ് ഫോണ്ടുകള്‍ ഉപയോഗിക്കാം (ASCII മാത്രം പിന്‍തുണയ്ക്കും)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "രണ്ട് ദിശകളിലും പാട്ടിന്റെ ശീര്‍ഷകം സ്‌ക്രോള്‍ ചെയ്യുക" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "അനലൈസര്‍" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "സ്കോപ്പ്" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "ഓഫ്" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "സാധാരണം" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "തീ" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "വരകള്‍" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "നാടകള്‍" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "വളരെപ്പതുക്കെ" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "പതുക്കെ" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "പാകം" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "വേഗം" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "അതിദ്രുതം" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "ഐസ്" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "മൃദുലം" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "ദൃശ്യവത്കരണം" @@ -3930,55 +3830,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "ശേഖരിക്കാത്ത വിനാമ്പ് 2.x രൂപം" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "സജീവമായ പ്ലേലിസ്റ്റിലെ എന്‍ട്രികള്‍ തിരയുക" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "തിരയുന്നതിനുമുമ്പ് മുമ്പുള്ള തിരഞ്ഞെടുപ്പ് വെടിപ്പാക്കുക" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "യോജിയ്ക്കുന്ന എന്‍ട്രികള്‍ ഉപയോഗിച്ച് പുതിയൊരു പ്ലേലിസ്റ്റ് ഉണ്ടാക്കുക" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Sndfile പ്ലഗ്ഗിന്‍" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4397,19 +4253,32 @@ "e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" msgstr "" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(തുടര്‍ന്നുള്ള സന്ദേശങ്ങള്‍ മറച്ചുവച്ചിരിയ്ക്കുന്നു.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "" -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "വോയ്സ് റിമൂവല്‍" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4524,14 +4393,38 @@ "Some of the plugin code was by Miles Egan." msgstr "" -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2SF ഡീകോഡര്‍" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "" diff -Nru audacious-plugins-4.1/po/ms.po audacious-plugins-4.3.1/po/ms.po --- audacious-plugins-4.1/po/ms.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/ms.po 2023-04-29 20:17:32.000000000 +0000 @@ -3,15 +3,15 @@ # This file is distributed under the same license as the Audacious Plugins package. # # Translators: -# abuyop , 2014-2018 +# abuyop , 2014-2018,2021 # Mick The KN , 2012 msgid "" msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: abuyop , 2014-2018,2021\n" "Language-Team: Malay (http://www.transifex.com/audacious/audacious/language/" "ms/)\n" "Language: ms\n" @@ -29,7 +29,7 @@ msgstr "AdPlug (Pemain AdLib)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "berjujukan" @@ -39,11 +39,13 @@ #: src/adplug/adplug-xmms.cc:350 msgid "OPL Emulator:" -msgstr "" +msgstr "Emulator OPL:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Kadar sampel" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Kadar sampel:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -59,7 +61,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Pelbagai" @@ -67,260 +69,6 @@ msgid "Repeat song in endless loop" msgstr "Ulang lagu dalam gelung tanpa batas" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Penggera" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Tetapkan Penggera ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Pemalam yang boleh digunakan untuk mula memainkan pada\n" -"masa tertentu.\n" -"\n" -"Asalnya ditulis oleh Adam Feakin dan Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Waktu\n" -" Alarm at:\n" -" Waktu penggera berbunyi.\n" -"\n" -" Quiet after:\n" -" Henti penggera selepas sejumlah waktu ini.\n" -" (jika dialog bangun tidak ditutup)\n" -"\n" -"\n" -"Hari\n" -" Day:\n" -" Pilih hari penggera diaktifkan.\n" -"\n" -" Time:\n" -" Pilih waktu penggera pada setiap hari,\n" -" atau pilih butang togol untuk guna waktu\n" -" lalai.\n" -"\n" -"\n" -"Volum\n" -" Fading:\n" -" Resap lenyap volum naik hingga ke volum\n" -" dikehendaki pada sejumlah waktu ini.\n" -"\n" -" Start at:\n" -" Mula meresap lenyap dari volum ini.\n" -"\n" -" Final:\n" -" Volum untuk henti meresap lenyap. Jika waktu\n" -" resap lenyap adalah 0 maka tetapkant volum\n" -" ini ketika dimainkan.\n" -"\n" -"\n" -"Pilihan:\n" -" Additional Command:\n" -" Jalankan perintah ini pada waktu penggera.\n" -"\n" -" Playlist:\n" -" Muat senarai main ini. Jika tiada senarai main\n" -" diberi, yang semasa akan digunakan.\n" -" URL strim mp3/ogg boleh juga digunakan\n" -" di sini.\n" -"\n" -" Reminder:\n" -" Papar peringatan bila penggera dimatikan.\n" -" Taip peringatan dalam medan input dan\n" -" tanda kotak tanda jika anda mahu ia dipaparkan." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Ini adalah panggilan bangun tidur anda." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Peringatan untuk hari ini ialah..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Peringatan" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Isnin" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Selasa" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Rabu" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Khamis" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Jumaat" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Sabtu" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Ahad" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Masa" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Penggera pada (lalai):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Tenang selepas:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "jam" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minit" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Pilih hari bagi penggera beraktif" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Hari" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Lalai" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Hari" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Pudar" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "Saat" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Volum" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Bermula pada" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Terakhir" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Semasa" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Perintah Tambahan" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "Aktif" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Senarai Main (pilihan)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Pilih satu senarai main" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Pilihan" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Apa pilihan ini bermakna?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Bantuan" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Seni Album" @@ -469,87 +217,83 @@ msgid "Synthesizer" msgstr "Pensintesis" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Kadar sampel:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - pilih fail SoundFont" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Batal" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Buka" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Nama fail" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Saiz (bait)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Nama:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " Maklumat MIDI " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Format:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Panjang (msaat):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Nombor Trek:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "pembolehubah" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Masa Div:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " Ulasan dan Lirik MIDI " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* tiada ulasan tersedi dalam fail MIDI ini *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* tiada lirik didapati dalam fail MIDI ini *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "T_utup" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr "(UTF-8 tidak sah)" @@ -605,7 +349,7 @@ msgid "Concave Rectangle" msgstr "Cekung Segiempat Tepat" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Tiada" @@ -641,94 +385,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Mencetus OSD apabila main tidak dijeda" -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Penempatan" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "X relatif diimbangi:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Y relatif diimbangi:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Max lebar OSD:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "pilihan Pelbagai-Monitor" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Paparkan OSD digunakan:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "semua monitor" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "monitor %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Masa (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Paparan:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Pudar dalam:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Pudar luar:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Font" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Font %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Bayang" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Realisasi Gaya" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Warna" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Warna %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Aktifkan pencetus" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Acara" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Pengurus komposit dikesan" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -738,56 +482,56 @@ "melainkan anda tahu bahawa anda mempunyai satu berjalan, sila mengaktifkan " "pengurus komposit sebaliknya OSD tidak akan berfungsi dengan betul" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Komposit pengurus tidak diperlukan untuk ketelusan palsu" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Ketelusan" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Ketelusan palsu" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Ketelusan sebenar (minta X Composite Ext.)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Lanjutan komposit tidak dimuatkan" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Kedudukan" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animasi" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Teks" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Hiasan" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Pemicu" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Pelbagai" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Uji" @@ -803,11 +547,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Senarai Main Audacious (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Warna" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Skop Kabur" @@ -819,6 +579,10 @@ msgid "Presets:" msgstr "Praset:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Lalai" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Aras suapan:" @@ -831,7 +595,7 @@ msgid "Cut frequency:" msgstr "Frekuensi kerat:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Penganalisis Spektrum" @@ -926,50 +690,50 @@ msgid "Audio CD" msgstr "CD Audio" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Gagal membuka peranti CD %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Tiada pemacu CD upaya audio ditemui." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Pemacu kosong." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Jenis cakera tidak disokong." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Gagal menyelesaikan pengawalan pemacu CD dibuka." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Gagal mendapatkan nombor trek pertama/terakhir." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Tidak dapat baca/tamatkan LSN untuk trek %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Gagal mencipta sambungan CDDB." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Gagal menanya pelayan CDDB" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Gagal menanya pelayan CDDB: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Gagal membaca maklumat CDDB: %s" @@ -1042,6 +806,13 @@ msgid "Default song length:" msgstr "Panjang lagu lalai:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "Saat" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Persampelan Semula" @@ -1070,7 +841,7 @@ msgid "CoreAudio output" msgstr "Output CoreAudio" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1090,11 +861,11 @@ "Berdasarkan pada Pemalam Output SDL untukr Audacious\n" "Hakcipta 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Guna mod ekslusif" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "Guna audio sempurna bit (suaikan kadar persampelan peranti)" @@ -1191,20 +962,20 @@ msgid "Delete" msgstr "Padam" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Batal" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Padam Fail Terpilih" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Kaedah Padam" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Alih ke tong sampah selain dari memadam serta-merta" @@ -1230,7 +1001,7 @@ msgstr "Lengah:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1246,11 +1017,11 @@ msgid "Echo" msgstr "Gema" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Pemalam FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1373,89 +1144,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Stereo Gabung" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1567,7 +1338,7 @@ msgid "Quality (0-1):" msgstr "Kualiti (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Am" @@ -1576,11 +1347,11 @@ msgid "FLAC Decoder" msgstr "Penyahkod FLAC" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "tak hilang" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1612,7 +1383,7 @@ msgid "Invalid open mode" msgstr "Mod buka tidak sah" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1632,116 +1403,134 @@ "\n" "Lesen: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "Penganalisis Spektrum OpenGL" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "Nombor masukan" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "Nombor Masukan" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Tajuk" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Artis" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Tahun" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Album" -#: src/gtkui/columns.cc:40 -msgid "Album artist" -msgstr "Artis album" - #: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr "Album Artis" + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Trek" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Genre" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "Kedudukan baris gilir" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "Kedudukan Baris Gilir" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Panjang" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "Laluan fail" - -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Tajuk suai" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "Laluan Fail" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Nama Fail" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Tajuk Suai" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Kadar bit" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Ulasan" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Lajur tersedia" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Lajur dipapar" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Alat Gelintar" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Labuh di Kiri" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Labuh di Kanan" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Labuh di Atas" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Labuh di Bawah" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Tanggalkan" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Lumpuhkan" @@ -1781,8 +1570,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Main" @@ -1810,12 +1599,12 @@ #: src/gtkui/menus.cc:97 src/qtui/menus.cc:145 src/skins/menus.cc:114 #: src/skins-qt/menus.cc:105 msgid "Previous Album" -msgstr "" +msgstr "Album Terdahulu" #: src/gtkui/menus.cc:98 src/qtui/menus.cc:146 src/skins/menus.cc:115 #: src/skins-qt/menus.cc:106 msgid "Next Album" -msgstr "" +msgstr "Album Berikutnya" #: src/gtkui/menus.cc:100 src/qtui/menus.cc:148 msgid "_Repeat" @@ -1959,8 +1748,8 @@ msgid "Remove _Unavailable Files" msgstr "Buang Fail Yang _Tiada" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Baharu" @@ -1970,7 +1759,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "B_uang" @@ -2024,7 +1813,7 @@ #: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 msgid "Show Info Bar _Album Art" -msgstr "" +msgstr "Tunjuk Seni _Album Palang Maklumat" #: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 msgid "Show Info Bar Vis_ualization" @@ -2101,7 +1890,7 @@ msgstr "Pilih Semu_a" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Nama Semula ..." @@ -2129,196 +1918,201 @@ msgid "Show column headers" msgstr "Tunjuk pengepala lajur" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Tatal bila lagu berubah" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Antaramuka GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Menimbal ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Main" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Jeda" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Gelintar Pustaka" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Buka Fail" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Tambah Fail" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Terdahulu" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Henti" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Berikutnya" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Rakam Strim" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Ulang" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Kocok" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" -msgstr "" +msgstr "Menu" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d saluran" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Mod tunggal." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Mod senarai main." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Dihentikan selepas lagu." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Trek terdahulu" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Jeda/Sambung Semula" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Trek berikutnya" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" -msgstr "" +msgstr "Langkah maju" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" -msgstr "" +msgstr "Langkah undur" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Senyap" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Volum naik" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Volum turun" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Lompat ke fail" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Togol tetingkap pemain" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Tunjuk Paparan-Atas-Skrin" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Togol ulang" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Togol kocok" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Togol henti selepas semasa" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Naik tetingkap pemain" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(tiada)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2328,11 +2122,11 @@ "\n" "Anda mahu teruskan?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Pengikatan butang tetikus" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2340,23 +2134,23 @@ "Tekan gabungan kekunci di dalam medan teks.\n" "Anda juga boleh mengikat butang tetikus." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Kekunci Panas:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Tindakan:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Pengikatan Kekunci:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "T_ambah" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Kekunci Panas Sejagat" @@ -2374,6 +2168,17 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Pemalam Kekunci Panas Sejagat\n" +"Kawal pemain dengan gabungan kekunci sejagat atau kekunci multimedia.\n" +"\n" +"Hak cipta (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Penyumbang terlibat:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " #: src/jack/jack-ng.cc:54 msgid "JACK Output" @@ -2381,7 +2186,7 @@ #: src/jack/jack-ng.cc:126 msgid "Client name:" -msgstr "" +msgstr "Nama klien:" #: src/jack/jack-ng.cc:128 msgid "Automatically connect to output ports" @@ -2393,11 +2198,11 @@ #: src/jack/jack-ng.cc:136 msgid "Connect to physical ports only" -msgstr "" +msgstr "Sambung ke port fizikal sahaja" #: src/jack/jack-ng.cc:139 msgid "Upmix to" -msgstr "" +msgstr "Upmix ke" #: src/jack/jack-ng.cc:141 msgid "ports if input has fewer channels" @@ -2405,7 +2210,7 @@ #: src/jack/jack-ng.cc:143 msgid "Ignore insufficient number of ports" -msgstr "" +msgstr "Abai bilangan port yang tidak mencukupi" #: src/jack/jack-ng.cc:181 msgid "No JACK output ports were found. Please check settings." @@ -2443,16 +2248,16 @@ "%d Hz. Sila guna kesan Penukar Kadar Sampel untuk membetulkan ketidakpadanan " "ini." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "Tetapan %s" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Laluan Modul:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2463,25 +2268,25 @@ "Selepas menambah laluan baharu, tekan Enter untuk imbas pemalam baharu." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Pemalam tersedia:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Benarkan" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Pemalam dibenarkan:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Tetapan" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2538,101 +2343,105 @@ msgid "Wait before reconnecting:" msgstr "Tunggu sebelum disambung semula:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" -msgstr "" +msgstr "Lirik" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" -msgstr "" +msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" -msgstr "" +msgstr "Aksara dipangkas pada:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" -msgstr "" +msgstr "Aksara diasing pada:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" -msgstr "" +msgstr "Am" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 -msgid "Store fetched lyrics in local cache" +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:146 +msgid "Store fetched lyrics in local cache" +msgstr "Simpan lirik yang diperoleh dalam cache setempat" + +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" -msgstr "" +msgstr "Storan Setempat" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" -msgstr "" +msgstr "Muat fail lirik (.lrc) dari storan setempat" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Tidak boleh dapatkan %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Tidak boleh hurai %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Mencari lirik ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Ralat" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." -msgstr "" +msgstr "Lirik tidak ditemui." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." -msgstr "" +msgstr "Tajuk dan/atau artis hilang." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" -msgstr "" +msgstr "Simpan secara Setempat" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" -msgstr "" +msgstr "Segar Semula" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "Senarai Main M3U" @@ -2790,50 +2599,26 @@ msgstr "Tetapan ini akan berkesan bila Audacious dimulakan semula." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Henti Selepas Lagu Ini" #: src/moonstone/moonstone.cc:39 msgid "Moonstone" -msgstr "" +msgstr "Moonstone" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Tetap Semula ke Lalai" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Kini Dimainkan" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Nombor Masukan" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Album Artis" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Kedudukan Baris Gilir" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Laluan Fail" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Nama Fail" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Tajuk Suai" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Masukan" @@ -2849,7 +2634,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Guna pengiraan lebih tepat (perlahan)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Keliling" @@ -2939,7 +2724,7 @@ #: src/notify/notify.cc:110 msgid "Custom notification duration:" -msgstr "" +msgstr "Tempoh pemberitahuan suai:" #: src/notify/osd.cc:74 msgid "Show" @@ -2947,44 +2732,54 @@ #: src/openmpt/mpt.cc:50 msgid "OpenMPT (Module Player)" -msgstr "" +msgstr "OpenMPT (Pemain Module)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" -msgstr "" +msgstr "Interpolasi:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Linear" #: src/openmpt/mptwrap.h:52 msgid "Cubic" -msgstr "" +msgstr "Kuib" #: src/openmpt/mptwrap.h:53 msgid "Windowed sinc" msgstr "" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "Output OSS4" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "Output OSS3" @@ -3026,18 +2821,35 @@ "Terima kasih buat individu di #audacious, terutamanya Tony Vroon dan John " "Lindgren serta bekas pengarang pemalam OSS." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Main Balik" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Pengurus Senarai Main" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Buang" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "N_ama Semula" @@ -3053,7 +2865,7 @@ msgid "OpenPSF Configuration" msgstr "" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Abai panjang dari fail" @@ -3063,11 +2875,11 @@ #: src/pulse/pulse_audio.cc:72 msgid "Context name:" -msgstr "" +msgstr "Nama konteks:" #: src/pulse/pulse_audio.cc:74 msgid "Stream name:" -msgstr "" +msgstr "Nama stream:" #: src/pulse/pulse_audio.cc:575 msgid "" @@ -3133,11 +2945,11 @@ "License: GPLv2+" msgstr "" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "" -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3173,12 +2985,16 @@ msgid "Audio Settings ..." msgstr "Tetapan Audio ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" -msgstr "" +msgstr "Q#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" +msgstr "T#" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" msgstr "" #: src/qtui/qtui.cc:40 @@ -3191,23 +3007,23 @@ #: src/qtui/settings.cc:58 msgid "Always" -msgstr "" +msgstr "Sentiasa" #: src/qtui/settings.cc:59 msgid "Auto-hide" -msgstr "" +msgstr "Auto-sembunyi" #: src/qtui/settings.cc:60 msgid "Never" -msgstr "" +msgstr "Tidak Sesekali" #: src/qtui/settings.cc:64 msgid "Show playlist tabs:" -msgstr "" +msgstr "Tunjuk tab senarai main:" #: src/qtui/settings.cc:78 msgid "Use bold font for column headers" -msgstr "" +msgstr "Guna fon tebal untuk pengepala lajur" #: src/resample/resample.cc:43 msgid "Sample Rate Converter" @@ -3396,37 +3212,37 @@ msgid "Library" msgstr "Pustaka" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d lagu" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "dari genre ini" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "hidup" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "oleh" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Bilangan keputusan ditunjukkan:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Imbas semula pustaka ketika permulaan" #: src/search-tool-qt/search-tool-qt.cc:170 msgid "Monitor library for changes" -msgstr "" +msgstr "Pantau pustaka jika ada perubahan" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3434,35 +3250,35 @@ "Untuk mengimport pustaka muzik anda ke dalam Audacious, pilih satu folder " "dan kemudian klik pada ikon \"segar semula\"." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Tunggu sebentar ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Pilih Folder" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Gelintar pustaka" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "%d dari %d keputusan ditunjukkan" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d keputusan" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Cipta Senarai Main" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "T_ambah ke Senarai Main" @@ -3566,108 +3382,108 @@ msgid "Repeat point B set." msgstr "Ulang titik B ditetapkan" -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Praamp" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Penyama Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Rakaman hidup" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Rakaman mati" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Jangkau ke %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Volum: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Imbangan: %d%% kiri" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Imbangan: tengah" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Imbangan: %d%% kanan" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Menu Pilihan" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Lumpuhkan 'Sentiasa Di Atas'" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Benarkan 'Sentiasa Di Atas'" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Kotak Maklumat Fail" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Saiz Dua Kali Ganda" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Pengvisualan" @@ -3691,10 +3507,6 @@ msgid "Open URL ..." msgstr "Buka URL ..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Main Balik" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Senarai Main" @@ -3709,7 +3521,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Perkhidmatan" @@ -3726,7 +3538,7 @@ msgstr "Keluar" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Maklumat Lagu ..." @@ -3746,7 +3558,7 @@ msgid "Clear A-B Repeat" msgstr "Kosongkan Ulang A-B" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Lompat ke Lagu ..." @@ -3839,20 +3651,20 @@ msgstr "Tambah Fail ..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Mengikut Tajuk" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Mengikut Nama Fail" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Mengikut Laluan Fail" @@ -3880,113 +3692,113 @@ msgid "Remove Selected" msgstr "Buang Terpilih" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Gelintar dan Pilih" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Songsangkan Pemilihan" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Pilih Tiada" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Pilih Semua" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Mengikut Nombor Trek" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Mengikut Artis" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Mengikut Album" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Mengikut Album Artis" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Mengikut Tarikh Keluaran" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Mengikut Genre" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Mengikut Panjang" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Mengikut Tajuk Suai" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Mengikut Ulasan" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Rawakkan Senarai" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Songsangkan Senarai" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Isih Terpilih" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Isih Senarai" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Buka Folder Dikandungi" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Potong" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Salin" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Tampal" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Tampal di Penghujung" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Baris Gilir/Nyahbaris Gilir" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d dar %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Penyunting Senarai Main Audacious" @@ -4002,167 +3814,219 @@ msgid "Add Folder ..." msgstr "Tambah Folder ..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Gelintar masukan dalam senarai main aktif" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Pilih masukan dalam senarai main dengan mengisi satu atau lebih medan. Medan " +"guna sintaks ungkapan nalar, tidak-sensitif-kata. Jika anda tidak tahu " +"bagaimana ungkapan nalar berfungsi, hanya masukkan bahagian harfiah apa yang " +"anda gelintar." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Tajuk:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Album:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Artis:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Nama Fail:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Kosongkan pemilihan terdahulu sebelum menggelintar" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Togol baris gilir secara automatik untuk pemadanan masukan" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Cipta senarai main baharu dengan masukan sepadan" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Gelintar" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Pemain:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Pilih fon tetingkap pemain utama:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Senarai Main:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Pilih fon senarai main:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Kulit" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Fon" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Guna fon peta bit (sokong ASCII sahaja)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Tatal tajuk lagu" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Tatal tajuk lagu dalam kedua-dua arah" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Penganalisis" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Skop" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Voiceprint / VU meter" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Mati" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Biasa" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Api" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Garis menegak" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Garis" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Palang" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Paling lambat" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Lambat" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Sederhana" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Pantas" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Paling pantas" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Titik" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Garis" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Tegar" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Ais" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Licin" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Pewarnaan:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Gaya:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Jatuhan:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Jatuhan puncak:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Gaya Skop:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Pewarnaan Voiceprint:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "Gaya Meter VU:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Jenis" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Jenis pengvisualan:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Penganalisis" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Tunjuk puncak" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Pengvisualan" @@ -4174,59 +4038,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Kulit Winamp 2.x tidak berarkib" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Gelintar masukan dalam senarai main aktif" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Gelintar" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Pilih masukan dalam senarai main dengan mengisi satu atau lebih medan. Medan " -"guna sintaks ungkapan nalar, tidak-sensitif-kata. Jika anda tidak tahu " -"bagaimana ungkapan nalar berfungsi, hanya masukkan bahagian harfiah apa yang " -"anda gelintar." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Tajuk:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Album:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Artis:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Nama Fail:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Kosongkan pemilihan terdahulu sebelum menggelintar" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Togol baris gilir secara automatik untuk pemadanan masukan" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Cipta senarai main baharu dengan masukan sepadan" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Pemalam Sndfile" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4544,15 +4360,15 @@ #: src/streamtuner/icecast-model.cc:126 src/streamtuner/shoutcast-model.cc:131 msgid "Type" -msgstr "" +msgstr "Jenis" #: src/streamtuner/icecast-model.cc:132 msgid "Current Song" -msgstr "" +msgstr "Lagu Semasa" #: src/streamtuner/icecast-model.cc:164 msgid "Other" -msgstr "" +msgstr "Lain-lain" #: src/streamtuner/ihr-model.cc:63 msgid "Market" @@ -4564,19 +4380,19 @@ #: src/streamtuner/ihr-model.cc:162 msgid "Description" -msgstr "" +msgstr "Keterangan" #: src/streamtuner/shoutcast-model.cc:128 msgid "Listeners" -msgstr "" +msgstr "Pendengar" #: src/streamtuner/shoutcast-model.cc:188 msgid "Top 500 Stations" -msgstr "" +msgstr "500 Stesen Teratas" #: src/streamtuner/shoutcast-model.cc:189 msgid "Alternative" -msgstr "" +msgstr "Alternatif" #: src/streamtuner/shoutcast-model.cc:190 msgid "Blues" @@ -4592,7 +4408,7 @@ #: src/streamtuner/shoutcast-model.cc:193 msgid "Decades" -msgstr "" +msgstr "Dekad" #: src/streamtuner/shoutcast-model.cc:194 msgid "Easy Listening" @@ -4600,7 +4416,7 @@ #: src/streamtuner/shoutcast-model.cc:195 msgid "Electronic" -msgstr "" +msgstr "Elektronik" #: src/streamtuner/shoutcast-model.cc:196 msgid "Folk" @@ -4608,11 +4424,11 @@ #: src/streamtuner/shoutcast-model.cc:197 msgid "Inspirational" -msgstr "" +msgstr "Inspirasi" #: src/streamtuner/shoutcast-model.cc:198 msgid "International" -msgstr "" +msgstr "Antara Bangsa" #: src/streamtuner/shoutcast-model.cc:199 msgid "Jazz" @@ -4620,7 +4436,7 @@ #: src/streamtuner/shoutcast-model.cc:200 msgid "Latin" -msgstr "" +msgstr "Latin" #: src/streamtuner/shoutcast-model.cc:201 msgid "Metal" @@ -4636,11 +4452,11 @@ #: src/streamtuner/shoutcast-model.cc:205 msgid "Public Radio" -msgstr "" +msgstr "Radio Awam" #: src/streamtuner/shoutcast-model.cc:206 msgid "R&B and Urban" -msgstr "" +msgstr "R&B dan Urban" #: src/streamtuner/shoutcast-model.cc:207 msgid "Rap" @@ -4656,27 +4472,27 @@ #: src/streamtuner/shoutcast-model.cc:210 msgid "Seasonal and Holiday" -msgstr "" +msgstr "Bermusim dan Perayaan" #: src/streamtuner/shoutcast-model.cc:211 msgid "Soundtracks" -msgstr "" +msgstr "Runut Bunyi" #: src/streamtuner/shoutcast-model.cc:212 msgid "Talk" -msgstr "" +msgstr "Bicara" #: src/streamtuner/shoutcast-model.cc:213 msgid "Themes" -msgstr "" +msgstr "Tema" #: src/streamtuner/streamtuner.cc:59 msgid "Shoutcast" -msgstr "" +msgstr "Shoutcast" #: src/streamtuner/streamtuner.cc:60 msgid "Icecast" -msgstr "" +msgstr "Icecast" #: src/streamtuner/streamtuner.cc:71 msgid "Stream Tuner" @@ -4709,19 +4525,32 @@ "Untuk guna ia, tambah URL: tone://frequency1;frequency2;frequency3;...\n" "cth. tone://2000;2005 untuk mainkan nada 2000 Hz dan nada 2005 Hz" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Mesej lanjut telah disembunyi.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Berfungsi ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Maklumat" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Pembuangan Suara" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4872,14 +4701,38 @@ "\n" "Sebahagian kod pemalam oleh Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "Penyahkod 2SF" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "Konfigurasi XSF" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "Senarai Main Boleh Kongsi XML (XSPF)" diff -Nru audacious-plugins-4.1/po/nl.po audacious-plugins-4.3.1/po/nl.po --- audacious-plugins-4.1/po/nl.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/nl.po 2023-04-29 20:17:32.000000000 +0000 @@ -8,15 +8,16 @@ # dragnadh, 2015,2017 # Farioko , 2014 # Freek1A , 2012 -# Heimen Stoffels , 2018,2020 +# Heimen Stoffels , 2022-2023 +# Heimen Stoffels , 2018,2020 # shured , 2014 msgid "" msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-21 11:30+0000\n" -"Last-Translator: Heimen Stoffels \n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Heimen Stoffels , 2022-2023\n" "Language-Team: Dutch (http://www.transifex.com/audacious/audacious/language/" "nl/)\n" "Language: nl\n" @@ -27,14 +28,14 @@ #: src/aac/aac.cc:19 msgid "AAC (Raw) Decoder" -msgstr "AAC (Raw) Decoder" +msgstr "AAC (Raw)-decodering" #: src/adplug/adplug-xmms.cc:70 msgid "AdPlug (AdLib Player)" -msgstr "AdPlug (AdLib Player)" +msgstr "AdPlug (AdLib-speler)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "stapsgewijs" @@ -46,9 +47,11 @@ msgid "OPL Emulator:" msgstr "OPL-emulator:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Samplesnelheid" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Sample-rate:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -64,7 +67,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Overig" @@ -72,260 +75,6 @@ msgid "Repeat song in endless loop" msgstr "Nummer eindeloos herhalen" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Alarm" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Alarm instellen..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Een plug-in die gebruikt kan worden om het afspelen te starten op een " -"bepaalde tijd.\n" -"\n" -"Oorspronkelijk ontwikkeld door Adam Feakin en Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Tijd\n" -" Alarm op:\n" -" De tijd waarop het alarm wordt ingeschakeld.\n" -"\n" -" Stil na:\n" -" Alarm stoppen na deze hoeveelheid tijd.\n" -" (als het waarschuwingsvenster niet gesloten is)\n" -"\n" -"\n" -"Dagen\n" -" Dag:\n" -" Selecteer de dagen waarop het alarm moet worden ingeschakeld.\n" -"\n" -" Tijd:\n" -" Kies de tijd waarop het alarm op elke dag moet aangaan,\n" -" of selecteer de aan/uit knop om de standaard tijd te \n" -" selecteren.\n" -"\n" -"\n" -"Volume\n" -" Vervagen:\n" -" Het volume laten vervagen tot het gekozen volume voor deze\n" -" hoeveelheid tijd.\n" -"\n" -" Begin bij:\n" -" Start vervagen bij dit volume.\n" -"\n" -" Laatste:\n" -" Het volume laten stoppen bij. Als de tijd voor \n" -" vervagen 0 is zet dan het volume naar dit en\n" -" start het afspelen.\n" -"\n" -"Opties:\n" -" Extra commando:\n" -" Start dit commando op de alarm tijd.\n" -"\n" -" Afspeellijst:\n" -" Laad deze afspeellijst. Als geen afspeellijst is\n" -" opgegeven dan zullen de tracks die op dit moment\n" -" in de lijst staan gebruikt worden.\n" -" Het URL van een mp3/ogg stream kan ook hier \n" -" ingevoerd worden\n" -"\n" -" Herinnering:\n" -" Laat een herinnering zien wanneer het alarm afgaat,\n" -" tik de herinnering in het tekstvak en vink het selectievakje\n" -" aan als u wilt dat het word weergegeven." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Dit is je waarschuwingsmelding." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Je herinnering voor vandaag is..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Herinnering" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Maandag" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Dinsdag" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Woensdag" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Donderdag" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Vrijdag" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Zaterdag" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Zondag" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Tijd" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Alarm op (standaard):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "u" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Stil na:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "uur" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minuten" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Kies de dagen waarop het alarm moet afgaan" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Dag" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Standaard" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Dagen" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Vervagen" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "seconden" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Volume" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Starten op" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Laatste" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Huidige" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Extra opdracht" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "inschakelen" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Afspeellijst (optioneel)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Selecteer een afspeellijst" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Opties" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Wat betekenen deze opties?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Hulp" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Albumhoes" @@ -405,7 +154,7 @@ "\n" "Gemaakt door Giacomo Lozito\n" "\n" -"Met speciale dank aan...\n" +"Met speciale dank aan…\n" "\n" "Clemens Ladisch en Jaroslav Kysela\n" "Voor hun coole programma's aplaymidi en amixer; \n" @@ -474,87 +223,83 @@ msgid "Synthesizer" msgstr "Synthesizer" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Sample-rate:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - SoundFont-bestand selecteren" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Annuleren" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Openen" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Bestandsnaam" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Grootte (bytes)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Naam:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " MIDI-informatie " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Formaat:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Duur (msec):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Aantal nummers:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "variabel" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Time Div:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI-commentaar en songtekst " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* geen commentaar beschikbaar in dit MIDI-bestand *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* geen songtekst beschikbaar in dit MIDI-bestand *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Sluiten" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (onjuiste UTF-8)" @@ -610,7 +355,7 @@ msgid "Concave Rectangle" msgstr "Vierkant met bolle hoeken" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Geen" @@ -646,94 +391,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "OSD tonen als het afspelen wordt hervat." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Plaatsing" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Relatieve X-plaatsing:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Relatieve Y-plaatsing:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Max. OSD-breedte:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Meerdere monitors-opties" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "OSD tonen op:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "alle monitors" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "monitor %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Timing (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Tonen:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Fade-in:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Fade-out:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Lettertypen" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Lettertype %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Schaduw" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Weergavestijl" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Kleuren" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Kleur %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Trigger inschakelen" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Gebeurtenis" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "3D-vensterbeheerder gedetecteerd" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -743,56 +488,56 @@ "Als je weet dat er wél één draait, activeer hem dan. Zonder 3D-" "vensterbeheerder zal OSD niet goed werken." -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Geen 3D-vensterbeheerder vereist voor nep-doorzichtigheid" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Doorzichtigheid" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Nep-doorzichtigheid" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Echte doorzichtigheid (vereist X Composite-uitbreiding)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Composite-uitbreiding is niet geladen" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Positie" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animatie" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Tekst" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Decoratie" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Trigger" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Overig" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Test" @@ -808,11 +553,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Audacious-afspeellijsten (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Bitvertraging" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Bitdiepte:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Downsample-verhouding:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Bitvertraging" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Kleur" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Omtrek vervagen" @@ -824,6 +585,10 @@ msgid "Presets:" msgstr "Voorinstellingen:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Standaard" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Feedniveau:" @@ -836,13 +601,13 @@ msgid "Cut frequency:" msgstr "Knipfrequentie:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Spectrum-analyse" #: src/cdaudio/cdaudio-ng.cc:71 msgid "Audio CD Plugin" -msgstr "Audio-CD-plug-in" +msgstr "Audio-cd-plug-in" #: src/cdaudio/cdaudio-ng.cc:118 msgid "" @@ -908,7 +673,7 @@ #: src/cdaudio/cdaudio-ng.cc:250 #, c-format msgid "Invalid URI %s." -msgstr "Ongeldige URI %s." +msgstr "Ongeldige uri: %s." #: src/cdaudio/cdaudio-ng.cc:252 #, c-format @@ -922,63 +687,63 @@ #: src/cdaudio/cdaudio-ng.cc:329 msgid "Error reading audio CD." -msgstr "Fout bij lezen van Audio-CD" +msgstr "De audio-cd kan niet worden uitgelezen" #: src/cdaudio/cdaudio-ng.cc:398 msgid "Audio CD" -msgstr "Audio-CD" +msgstr "Audio-cd" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." -msgstr "Het openen van het CD-apparaat '%s' is mislukt." +msgstr "Het openen van het cd-apparaat ‘%s’ is mislukt." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." -msgstr "Geen CD-speler met audiomogelijkheid aangetroffen." +msgstr "Geen cd-speler met audiomogelijkheid aangetroffen." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Schijfstation is leeg." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Niet-ondersteund schijftype." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." -msgstr "Het initialiseren van de geopende CD-schijf is mislukt." +msgstr "Het initialiseren van de geopende cd-schijf is mislukt." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Het herstellen van het eerste/laatste titelnummer is mislukt." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." -msgstr "Kan begin-/eind-LSN van het nummer '%d' niet lezen." +msgstr "Kan begin-/eind-LSN van het nummer ‘%d’ niet uitlezen." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Fout bij verbinden met de CDDB." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Fout bij indienen van verzoek bij de CDDB-server" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Fout bij indienen van verzoek bij de CDDB-server: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Fout bij uitlezen van CDDB-informatie: %s" #: src/cd-menu-items/cd-menu-items.cc:33 msgid "Audio CD Menu Items" -msgstr "Audio-CD - menu-items" +msgstr "Audio-cd - menu-items" #: src/cd-menu-items/cd-menu-items.cc:45 msgid "Pla_y CD" @@ -1045,6 +810,13 @@ msgid "Default song length:" msgstr "Standaard nummerduur:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "seconden" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Resampling" @@ -1073,7 +845,7 @@ msgid "CoreAudio output" msgstr "CoreAudio-uitvoer" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1093,11 +865,11 @@ "Gebaseerd op de SDL-uitvoerplug-in voor Audacious\n" "Copyright 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Exclusieve modus gebruiken" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" "Bitperfect-audio gebruiken (aanpassen aan samplingsnelheid van apparaat)" @@ -1195,20 +967,20 @@ msgid "Delete" msgstr "Verwijderen" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Annuleren" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Geselecteerde bestanden verwijderen" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Verwijdermethode" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Verplaatsen naar prullenbak i.p.v. permanent verwijderen" @@ -1234,7 +1006,7 @@ msgstr "Vertraging:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1250,11 +1022,11 @@ msgid "Echo" msgstr "Echo" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "FFmpeg-plug-in" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1379,89 +1151,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "8 kbit/s" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "16 kbit/s" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "32 kbit/s" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "40 kbit/s" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "48 kbit/s" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "56 kbit/s" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "64 kbit/s" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "80 kbit/s" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "96 kbit/s" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "112 kbit/s" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "128 kbit/s" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "160 kbit/s" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "192 kbit/s" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "224 kbit/s" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "256 kbit/s" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "320 kbit/s" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Samengevoegde stereo" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1573,7 +1345,7 @@ msgid "Quality (0-1):" msgstr "Kwaliteit (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Algemeen" @@ -1582,11 +1354,11 @@ msgid "FLAC Decoder" msgstr "FLAC-decoder" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "lossless" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1618,7 +1390,7 @@ msgid "Invalid open mode" msgstr "Ongeldige open-modus" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1639,135 +1411,153 @@ "\n" "Licentie: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL-spectrumanalyse" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "Itemnummer" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Titel" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Artiest" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Jaar" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Album" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Albumartiest" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Nummer" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Genre" -#: src/gtkui/columns.cc:43 -msgid "Queue position" +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" msgstr "Positie in wachtrij" -#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Duur" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "Bestandspad" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Aangepaste titel" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Bestandsnaam" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Aangepaste titel" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Bitsnelheid" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Commentaar" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "Uitgever" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "Catalogusnummer" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Beschikbare kolommen" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Getoonde kolommen" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Zoekhulpmiddel" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Vastmaken aan linkerzijde" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Vastmaken aan rechterzijde" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Vastmaken aan bovenkant" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Vastmaken aan onderkant" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Losmaken" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Uitschakelen" #: src/gtkui/menus.cc:79 src/qtui/menus.cc:107 #: src/statusicon-qt/statusicon.cc:112 src/statusicon/statusicon.cc:282 msgid "_Open Files ..." -msgstr "Bestanden _openen..." +msgstr "Bestanden _openen…" #: src/gtkui/menus.cc:80 src/qtui/menus.cc:111 msgid "Open _URL ..." -msgstr "_URL openen..." +msgstr "_URL openen…" #: src/gtkui/menus.cc:81 src/qtui/menus.cc:113 msgid "_Add Files ..." -msgstr "Best_anden toevoegen..." +msgstr "Best_anden toevoegen…" #: src/gtkui/menus.cc:82 src/qtui/menus.cc:118 msgid "Add U_RL ..." -msgstr "U_RL toevoegen..." +msgstr "U_RL toevoegen…" #: src/gtkui/menus.cc:84 src/qtui/menus.cc:120 msgid "Search _Library" @@ -1775,11 +1565,11 @@ #: src/gtkui/menus.cc:86 src/qtui/menus.cc:123 msgid "A_bout ..." -msgstr "O_ver..." +msgstr "O_ver…" #: src/gtkui/menus.cc:87 src/qtui/menus.cc:125 msgid "_Settings ..." -msgstr "In_stellingen..." +msgstr "In_stellingen…" #: src/gtkui/menus.cc:88 src/qtui/menus.cc:131 #: src/statusicon-qt/statusicon.cc:114 src/statusicon/statusicon.cc:284 @@ -1788,8 +1578,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "Afs_pelen" @@ -1847,15 +1637,15 @@ #: src/gtkui/menus.cc:106 src/gtkui/menus.cc:208 src/qtui/menus.cc:162 #: src/qtui/menus.cc:292 msgid "Song _Info ..." -msgstr "Nummer_informatie..." +msgstr "Nummer_informatie…" #: src/gtkui/menus.cc:107 msgid "Jump to _Time ..." -msgstr "Spoelen naar _tijd..." +msgstr "Spoelen naar _tijd…" #: src/gtkui/menus.cc:108 msgid "_Jump to Song ..." -msgstr "_Spoelen naar nummer..." +msgstr "_Spoelen naar nummer…" #: src/gtkui/menus.cc:110 src/qtui/menus.cc:165 msgid "Set Repeat Point _A" @@ -1966,36 +1756,36 @@ msgid "Remove _Unavailable Files" msgstr "_Niet-beschikbare bestanden verwijderen" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Nieuw" #: src/gtkui/menus.cc:165 src/qtui/menus.cc:228 msgid "Ren_ame ..." -msgstr "_Naam wijzigen..." +msgstr "_Naam wijzigen…" #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "_Verwijderen" #: src/gtkui/menus.cc:168 src/qtui/menus.cc:231 msgid "_Import ..." -msgstr "_Importeren..." +msgstr "_Importeren…" #: src/gtkui/menus.cc:169 src/qtui/menus.cc:232 msgid "_Export ..." -msgstr "_Exporteren..." +msgstr "_Exporteren…" #: src/gtkui/menus.cc:171 src/qtui/menus.cc:235 msgid "Playlist _Manager ..." -msgstr "Afspeellijst_beheer..." +msgstr "Afspeellijst_beheer…" #: src/gtkui/menus.cc:172 src/qtui/menus.cc:237 msgid "_Queue Manager ..." -msgstr "_Wachtrijbeheer..." +msgstr "_Wachtrijbeheer…" #: src/gtkui/menus.cc:176 src/qtui/menus.cc:241 msgid "Volume _Up" @@ -2007,11 +1797,11 @@ #: src/gtkui/menus.cc:179 src/qtui/menus.cc:247 msgid "_Equalizer ..." -msgstr "_Equalizer..." +msgstr "_Equalizer…" #: src/gtkui/menus.cc:180 src/qtui/menus.cc:249 msgid "E_ffects ..." -msgstr "E_ffecten..." +msgstr "E_ffecten…" #: src/gtkui/menus.cc:182 msgid "_Record Stream" @@ -2019,7 +1809,7 @@ #: src/gtkui/menus.cc:183 msgid "Audio _Settings ..." -msgstr "Audio-in_stellingen..." +msgstr "Audio-in_stellingen…" #: src/gtkui/menus.cc:187 src/qtui/menus.cc:258 msgid "Show _Menu Bar" @@ -2048,7 +1838,7 @@ #: src/gtkui/menus.cc:195 src/qtui/menus.cc:274 src/skins/menus.cc:157 #: src/skins-qt/menus.cc:152 msgid "_Visualizations ..." -msgstr "_Visualisaties..." +msgstr "_Visualisaties…" #: src/gtkui/menus.cc:199 src/qtui/menus.cc:278 msgid "_File" @@ -2108,9 +1898,9 @@ msgstr "_Alles selecteren" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." -msgstr "_Naam wijzigen..." +msgstr "_Naam wijzigen…" #: src/gtkui/settings.cc:35 src/qtui/settings.cc:63 msgid "Playlist Tabs" @@ -2136,197 +1926,202 @@ msgid "Show column headers" msgstr "Kolomkoppen tonen" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "Symbolische werkbalkpictogrammen" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Scrollen bij nummerwijziging" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "GTK-interface" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." -msgstr "Bezig met bufferen..." +msgstr "Bezig met bufferen…" -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Afspelen" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Pauzeren" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Bibliotheek doorzoeken" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Bestanden openen" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Bestanden toevoegen" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Vorige" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Stoppen" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Volgende" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Stream opnemen" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Herhalen" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Willekeurig" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "Menu" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d kanaal" msgstr[1] "%d kanalen" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "%d kbit/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Enkele modus." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Afspeellijstmodus." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Stoppen na dit nummer." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Vorig nummer" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Pauzeren/Hervatten" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Volgende nummer" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "Vooruitspoelen" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "Terugspoelen" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Dempen" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Volume omhoog" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Volume omlaag" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Spoelen naar bestand" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Spelersvenster(s) in-/uitschakelen" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "On-Screen-Display tonen" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Herhalen in-/uitschakelen" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Willekeurig in-/uitschakelen" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Stoppen na huidig nummer in-/uitschakelen" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Spelersvenster(s) verhogen" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(geen)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2337,11 +2132,11 @@ "\n" "Wil je doorgaan?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Muisknopkoppelingen" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2349,23 +2144,23 @@ "Druk op een toetscombinatie in een tekstveld.\n" "Je kunt ook de muisknoppen koppelen." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Sneltoetsen:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Actie:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Sneltoetsen:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Toevoegen" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Algemene sneltoetsen" @@ -2465,16 +2260,16 @@ "speelt af op %d Hz. Gebruik het samplesnelheidomvormer-effect om het " "verschil te corrigeren." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s Instellingen" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Modulepaden:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2485,25 +2280,25 @@ "Nadat u nieuwe paden heeft toegevoegd, hoeft u alleen op Enter te drukken om " "nieuwe plugins te zoeken." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Beschikbare plug-ins:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Inschakelen" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Ingeschakelde plug-ins:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Instellingen" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2560,101 +2355,105 @@ msgid "Wait before reconnecting:" msgstr "Wachten met opnieuw verbinden:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "Songtekst" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Nergens" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "Artiest is aan hen begin verkort - Titel aan het eind" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "Verkorten naar:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "Tekens zijn ORed in RegExp, omgeven door witruimte" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "Splitsen na:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "Verder verkorten" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "Algemeen" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "Titel splitsen naar artiest en titel na" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "Online-bronnen" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "Songtekst opvragen bij:" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "Bronnen" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "Meegeleverde songteksten tonen (uit songtekst-tag)" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "Songteksten ophalen van internet:" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "Opgevraagde songteksten opslaan in lokale cache" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Lokale opslag" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "Songtekstbestanden (.lrc) laden uit lokale opslag" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Kan %s niet ophalen" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Kan %s niet verwerken" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." -msgstr "Bezig met zoeken naar songteksten..." +msgstr "Bezig met zoeken naar songteksten…" -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Fout" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "Er is geen songtekst beschikbaar." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "De titel en/of artiest ontbreekt." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Lokaal opslaan" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Verversen" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "M3U-afspeellijsten" @@ -2682,7 +2481,7 @@ msgstr "" "Een Tactgenerator door Martin Strauss \n" "\n" -"Om het te gebruiken, voeg een URL toe: tact://beats*num/den\n" +"Voeg een url toe om te gebruiken: tact://beats*num/den\n" "bijv. tact://77 om 77 beats per minuut (bpm) af te spelen\n" "of tact://60*3/4 om 60 bpm af te spelen in 3/4 tacts" @@ -2813,7 +2612,7 @@ "Deze instellingen worden toegepast zodra Audacious opnieuw wordt gestart." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Stoppen na dit nummer" @@ -2822,41 +2621,17 @@ msgid "Moonstone" msgstr "Maansteen" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Standaardwaarden herstellen" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Nu aan het afspelen" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Itemnummer" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Albumartiest" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Positie in wachtrij" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Bestandspad" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Bestandsnaam" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Aangepaste titel" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Items" @@ -2872,7 +2647,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Nauwkeurige duurberekening gebruiken (langzaam)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Surround" @@ -2894,7 +2669,7 @@ #: src/neon/neon.cc:590 msgid "Error parsing URL" -msgstr "Fout bij verwerken van URL" +msgstr "De url kan niet worden verwerkt" #: src/neon/neon.cc:660 msgid "Too many redirects" @@ -2973,7 +2748,7 @@ msgid "OpenMPT (Module Player)" msgstr "OpenMPT (Modulespeler)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -2983,19 +2758,19 @@ "\n" "Gemaakt door: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Stereoscheiding:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "Interpolatie:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Lineair" @@ -3007,11 +2782,23 @@ msgid "Windowed sinc" msgstr "Venstersinc" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "Opus-decoder" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" +"Opus Decoder-plug-in voor Audacious\n" +"Copyright 2022 Thomas Lange" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4-uitvoer" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "OSS3-uitvoer" @@ -3050,21 +2837,43 @@ "OSS4-uitvoerplug-in voor Audacious\n" "Auteursrecht 2010-2012 Michał Lipski\n" "\n" -"Ik wil graag de mensen op #audacious bedanken. Speciaal Tony Vroon en John " -"Lindgren en natuurlijk de auteurs van de vorige OSS-plug-in." +"Ik wil graag de mensen op #audacious bedanken, in het bijzonder Tony Vroon " +"en John Lindgren en natuurlijk de auteurs van de vorige OSS-plug-in." + +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "PipeWire-uitvoer" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" +"PipeWire-uitvoerplug-in voor Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Gebaseerd op de PipeWire-uitvoerplug-in voor Qmmp\n" +"Copyright 2021 Ilya Kotov" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Afspelen" -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Afspeellijstbeheer" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "Ve_rwijderen" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "N_aam wijzigen" @@ -3080,7 +2889,7 @@ msgid "OpenPSF Configuration" msgstr "OpenPSF-instellingen" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Duur negeren volgens bestand" @@ -3171,11 +2980,11 @@ "\n" "Licentie: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "Druk op een toetscombinatie in een tekstveld." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3205,32 +3014,36 @@ #: src/qtui/menus.cc:109 msgid "_Open Folder ..." -msgstr "Map _openen..." +msgstr "Map _openen…" #: src/qtui/menus.cc:115 msgid "_Add Folder ..." -msgstr "M_ap toevoegen..." +msgstr "M_ap toevoegen…" #: src/qtui/menus.cc:128 msgid "_Log Inspector ..." -msgstr "_Logboekinspectie..." +msgstr "_Logboekinspectie…" #: src/qtui/menus.cc:218 msgid "_Find ..." -msgstr "_Zoeken..." +msgstr "_Zoeken…" #: src/qtui/menus.cc:254 src/skins/menus.cc:80 src/skins-qt/menus.cc:70 msgid "Audio Settings ..." -msgstr "Audio-instellingen..." +msgstr "Audio-instellingen…" -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "Q#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "T#" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "C#" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Qt-interface" @@ -3353,7 +3166,7 @@ #: src/scrobbler2/config_window.cc:19 msgid "Checking Last.fm access ..." -msgstr "Bezig met controleren op Last.fm-toegang..." +msgstr "Bezig met controleren op Last.fm-toegang…" #: src/scrobbler2/config_window.cc:27 msgid "" @@ -3366,15 +3179,15 @@ #: src/scrobbler2/config_window.cc:33 #, c-format msgid "Permission granted. Scrobbling for user %s." -msgstr "Machtiging afgegeven; scrobbling voor gebruiker %s." +msgstr "Machtiging verleend; scrobbling voor gebruiker %s." #: src/scrobbler2/config_window.cc:37 msgid "" "Permission denied. Open the following URL in a browser, allow Audacious " "access to your account, and then click 'Check Permission' again:" msgstr "" -"Geen machtiging. Open de volgende URL in een browser, geef Audacious toegang " -"tot je account en klik vervolgens opnieuw op 'Machtiging controleren':" +"Niet bevoegd. Open de volgende url in een browser, geef Audacious toegang " +"tot je account en klik vervolgens opnieuw op ‘Machtiging controleren’:" #: src/scrobbler2/config_window.cc:47 msgid "There was a problem contacting Last.fm." @@ -3448,30 +3261,30 @@ msgid "Library" msgstr "Bibliotheek" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d nummer" msgstr[1] "%d nummers" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "van dit genre" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "op" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "volgens" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Aantal te tonen resultaten:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Bibliotheek opnieuw doorzoeken bij opstarten" @@ -3479,45 +3292,45 @@ msgid "Monitor library for changes" msgstr "Verzameling blijvend doorzoeken" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." msgstr "" "Om je muziekbibliotheek in Audacious te importeren, kies je een map en klik " -"je vervolgens op het pictogram 'Vernieuwen'." +"je vervolgens op het pictogram ‘Vernieuwen’." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." -msgstr "Even geduld..." +msgstr "Even geduld…" -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Map kiezen" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Bibliotheek doorzoeken" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "%dvan%d getoond resultaat" msgstr[1] "%dvan%d getoonde resultaten" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d resultaat" msgstr[1] "%d resultaten" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "Afspeellijst _creëren" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "Toevoegen _aan afspeellijst" @@ -3621,108 +3434,108 @@ msgid "Repeat point B set." msgstr "Herhaalpunt B ingesteld." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Voorversterker" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Audacious-equalizer" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Opname aan" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Opname uit" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Spoelen naar %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Volume: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Balans: %d%% links" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Balans: centrum" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Balans: %d%% rechts" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Optiesmenu" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" -msgstr "'Altijd bovenaan' uitschakelen" +msgstr "‘Altijd bovenaan’ uitschakelen" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" -msgstr "'Altijd bovenaan' inschakelen" +msgstr "‘Altijd bovenaan’ inschakelen" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Bestandsinformatieveld" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Dubbele grootte" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Visualisaties" @@ -3736,19 +3549,15 @@ #: src/skins/menus.cc:77 src/skins-qt/menus.cc:67 msgid "Effects ..." -msgstr "Effecten..." +msgstr "Effecten…" #: src/skins/menus.cc:84 src/skins-qt/menus.cc:74 msgid "Open Files ..." -msgstr "Bestanden openen..." +msgstr "Bestanden openen…" #: src/skins/menus.cc:85 src/skins-qt/menus.cc:76 msgid "Open URL ..." -msgstr "URL openen..." - -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Afspelen" +msgstr "URL openen…" #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" @@ -3764,26 +3573,26 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Diensten" #: src/skins/menus.cc:95 src/skins-qt/menus.cc:86 msgid "About ..." -msgstr "Over..." +msgstr "Over…" #: src/skins/menus.cc:96 src/skins-qt/menus.cc:87 msgid "Settings ..." -msgstr "Instellingen..." +msgstr "Instellingen…" #: src/skins/menus.cc:97 src/skins-qt/menus.cc:88 msgid "Quit" msgstr "Afsluiten" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." -msgstr "Nummerinformatie..." +msgstr "Nummerinformatie…" #: src/skins/menus.cc:105 src/skins-qt/menus.cc:96 msgid "Shuffle by Album" @@ -3801,13 +3610,13 @@ msgid "Clear A-B Repeat" msgstr "A-B-herhaling wissen" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." -msgstr "Spoelen naar nummer..." +msgstr "Spoelen naar nummer…" #: src/skins/menus.cc:121 src/skins-qt/menus.cc:113 msgid "Jump to Time ..." -msgstr "Spoelen naar tijd..." +msgstr "Spoelen naar tijd…" #: src/skins/menus.cc:125 src/skins-qt/menus.cc:118 msgid "Play/Resume" @@ -3819,7 +3628,7 @@ #: src/skins/menus.cc:128 src/skins-qt/menus.cc:121 msgid "Rename Playlist ..." -msgstr "Afspeellijstnaam wijzigen..." +msgstr "Afspeellijstnaam wijzigen…" #: src/skins/menus.cc:129 src/skins-qt/menus.cc:122 msgid "Remove Playlist" @@ -3835,19 +3644,19 @@ #: src/skins/menus.cc:134 src/skins-qt/menus.cc:127 msgid "Import Playlist ..." -msgstr "Afspeellijst importeren..." +msgstr "Afspeellijst importeren…" #: src/skins/menus.cc:135 src/skins-qt/menus.cc:128 msgid "Export Playlist ..." -msgstr "Afspeellijst exporteren..." +msgstr "Afspeellijst exporteren…" #: src/skins/menus.cc:137 src/skins-qt/menus.cc:130 msgid "Playlist Manager ..." -msgstr "Afspeellijstbeheer..." +msgstr "Afspeellijstbeheer…" #: src/skins/menus.cc:138 src/skins-qt/menus.cc:131 msgid "Queue Manager ..." -msgstr "Wachtrijbeheer..." +msgstr "Wachtrijbeheer…" #: src/skins/menus.cc:140 src/skins-qt/menus.cc:133 msgid "Refresh Playlist" @@ -3887,27 +3696,27 @@ #: src/skins/menus.cc:163 src/skins-qt/menus.cc:158 msgid "Add URL ..." -msgstr "URL toevoegen..." +msgstr "URL toevoegen…" #: src/skins/menus.cc:164 src/skins-qt/menus.cc:160 msgid "Add Files ..." -msgstr "Bestanden toevoegen..." +msgstr "Bestanden toevoegen…" #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Op titel" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Op bestandsnaam" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Op bestandspad" @@ -3935,113 +3744,113 @@ msgid "Remove Selected" msgstr "Selectie verwijderen" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Zoeken-en-selecteren" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Selectie omkeren" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Niks selecteren" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Alles selecteren" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Op nummer" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Op artiest" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Op album" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Op albumartiest" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Op uitgavedatum" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Op genre" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Op duur" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Op aangepaste titel" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Op commentaar" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Lijst in willekeurige volgorde" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Lijst omkeren" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Selectie sorteren" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Lijst sorteren" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Bijbehorende map openen" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Knippen" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Kopiëren" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Plakken" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Plakken aan het einde" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "In/Uit wachtrij" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d van %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Audacious-afspeellijstbewerker" @@ -4051,173 +3860,225 @@ #: src/skins-qt/menus.cc:75 msgid "Open Folder ..." -msgstr "Map openen..." +msgstr "Map openen…" #: src/skins-qt/menus.cc:159 msgid "Add Folder ..." -msgstr "Map toevoegen..." +msgstr "Map toevoegen…" + +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Items doorzoeken in actieve afspeellijst" -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Selecteer de items in de afspeellijst door één of meerdere velden in te " +"vullen. Deze velden maken gebruik van een regelmatige expressie-syntax, die " +"niet hoofdlettergevoelig zijn. Als je niet weet hoe reguliere expressies " +"werken, voer dan gewoon een letterlijk gedeelte in van wat je zoekt." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Titel:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Album:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Artiest:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Bestandsnaam:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Vorige selectie wissen voordat zoekopdracht start" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Wachtrij automatisch omschakelen voor overeenkomende items" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Nieuwe afspeellijst creëren met overeenkomende items" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Zoeken" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Speler:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Selecteer het hoofdvensterlettertype:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Afspeellijst:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Selecteer het afspeellijstlettertype:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Thema" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "Actieve titelbalk tonen na focussen van eender welk venster" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Lettertypen" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Bitmap-lettertypen gebruiken (ondersteunt alleen ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Titel scrollen" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Titel in beide richtingen scrollen" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analyse" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Omvang" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Stemafdruk / VU-meter" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Uit" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normaal" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Vuur" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Verticale strepen" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Strepen" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Horizontale strepen" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Traagst" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Traag" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Matig" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Snel" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Snelst" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Punten" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Streep" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Solide" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "IJs" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Glad" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Verkleuring:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Stijl:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Uitvallen:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Hoogtepunt afzwakken:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Omvangstijl:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Stemafdrukverkleuring:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "VU-meterstijl:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Type" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Visualisatietype:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analyse" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Pieken tonen" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Visualisatie " @@ -4229,59 +4090,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Niet-gearchiveerd Winamp 2.x-thema" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Items doorzoeken in actieve afspeellijst" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Zoeken" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Selecteer de items in de afspeellijst door één of meerdere velden in te " -"vullen. Deze velden maken gebruik van een regelmatige expressie-syntax, die " -"niet hoofdlettergevoelig zijn. Als je niet weet hoe reguliere expressies " -"werken, voer dan gewoon een letterlijk gedeelte in van wat je zoekt." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Titel:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Album:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Artiest:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Bestandsnaam:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Vorige selectie wissen voordat zoekopdracht start" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Wachtrij automatisch omschakelen voor overeenkomende items" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Nieuwe afspeellijst creëren met overeenkomende items" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Sndfile-plug-in" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4558,7 +4371,7 @@ #: src/statusicon-qt/statusicon.cc:113 src/statusicon/statusicon.cc:283 msgid "Se_ttings ..." -msgstr "Ins_tellingen..." +msgstr "Ins_tellingen…" #: src/statusicon/statusicon.cc:373 msgid "" @@ -4757,26 +4570,38 @@ "To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" "e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" msgstr "" -"Sinus toongenerator door Håvard Kvålen \n" +"Sinus-toongenerator door Håvard Kvålen \n" "Aangepast door Daniel J. Peng \n" "\n" -"Om deze te gebruiken, voeg een URL toe: tone://frequency1;frequency2;" -"frequency3;...\n" +"Voeg een url toe om te gebruiken: tone://frequency1;frequency2;frequency3;…\n" "bijv. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Verdere berichten zijn verborgen.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." -msgstr "Bezig met werken..." +msgstr "Bezig met uitvoeren…" -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Informatie" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "%s lijkt geen geldige map te zijn." + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Stemverwijdering" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4929,14 +4754,38 @@ "\n" "Enkele regels code van de plugin zijn door Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2SF Decoder" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Cosinus" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Scherp" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "XSF Configuratie" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Standaard vervaagtijd::" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Interpolatiemodus:" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "XML deelbare afspeellijsten (XSPF)" diff -Nru audacious-plugins-4.1/po/pl.po audacious-plugins-4.3.1/po/pl.po --- audacious-plugins-4.1/po/pl.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/pl.po 2023-04-29 20:17:32.000000000 +0000 @@ -13,10 +13,11 @@ # mkkot , 2013 # Marco Oliver Grunwald , 2013 # Marco Oliver Grunwald , 2013 +# Marek Adamski, 2022-2023 # Marco Oliver Grunwald , 2013 # mkkot , 2013-2014 -# No Ne, 2020 -# No Ne, 2017-2018,2020 +# Marek Adamski, 2020 +# Marek Adamski, 2017-2018,2020 # Piotr Sokół , 2012 # Piotr Strębski , 2017 # Piotr Strębski , 2014-2015 @@ -28,18 +29,18 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-21 06:36+0000\n" -"Last-Translator: No Ne\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Marek Adamski, 2022-2023\n" "Language-Team: Polish (http://www.transifex.com/audacious/audacious/language/" "pl/)\n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n" -"%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n" -"%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && " +"(n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && " +"n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" #: src/aac/aac.cc:19 msgid "AAC (Raw) Decoder" @@ -50,7 +51,7 @@ msgstr "AdPlug (Odtwarzacz AdLib)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "sekwencjonowane" @@ -62,9 +63,11 @@ msgid "OPL Emulator:" msgstr "Emulator OPL:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Częstotliwość próbkowania" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Częstotliwość próbkowania:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -80,7 +83,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Różne" @@ -88,258 +91,6 @@ msgid "Repeat song in endless loop" msgstr "Powtarzaj piosenkę w nieskończonej pętli" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Alarm" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Ustaw alarm..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Wtyczka do zaplanowania odtwarzania w określonym czasie.\n" -"Pierwotni autorzy: Adam Feakin i Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Czas\n" -" Alarm o: \n" -" Określ czas uruchomienia.\n" -"\n" -" Wycisz po: \n" -" Zatrzymaj alarm po upływie określonego czasu.\n" -" (jeśli okno alarmu nie zostanie wcześniej zamknięte)\n" -"\n" -"\n" -"Dni\n" -" Dzień:\n" -" Wybierz dni, w których alarm zostanie włączony.\n" -"\n" -" Czas:\n" -" Wybierz czas dla budzika każdego dnia,\n" -" albo ustaw opcję domyślną.\n" -"\n" -"\n" -"Głośność\n" -" Narastanie: \n" -" Ustaw czas narastania głośności \n" -" do wybranej wartości.\n" -"\n" -" Narastaj od: \n" -" Narastaj od tej głośności.\n" -"\n" -" Końcowa głośność: \n" -" Końcowa głośność dla alarmu. Jeśli czas narastania\n" -" ustawiony jest na 0, to wtedy następuje natychmiastowe\n" -" ustawienie tej głośności i rozpoczęcie odtwarzania.\n" -"\n" -"\n" -"Ustawienia:\n" -" Dodatkowe komendy:\n" -" Uruchom wybrane programy/skrypty podczas alarmu.\n" -"\n" -" Playlista: \n" -" Załaduj wybraną listę odtwarzania. Jeśli nie wybrano\n" -" playlisty, to zostaną użyte utwory znajdujące się\n" -" w danej chwili na liście.\n" -" Adres URL strumienia mp3/ogg może również zostać\n" -" tutaj użyty.\n" -"\n" -" Przypominacz:\n" -" Wyświetl powiadomienie, gdy alarm zostanie wyłączony.\n" -" Wpisz treść komunkatu i zaznacz odpowiednią\n" -" opcję, jeśli chcesz, aby było ono pokazywane.." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "To jest twój sygnał budzenia." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Twoje przypomnienie na dzisiaj to..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Przypominacz" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Poniedziałek" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Wtorek" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Środa" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Czwartek" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Piątek" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Sobota" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Niedziela" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Czas" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Domyślnie alarm o:" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "[hh:mm]" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Wyciszenie po:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "godziny" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minuty" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Wybierz dni, w których alarm będzie aktywny" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Dzień" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Domyślny" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Dni" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Czas przejścia" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "sekundy" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Głośność" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Początkowa" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Końcowa" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Bieżąca" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Dodatkowe polecenie" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "włącz" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Lista odtwarzania (opcjonalnie)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Wybierz listę odtwarzania" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Ustawienia" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Co oznaczają te ustawienia?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Pomoc" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Okładka albumu" @@ -488,87 +239,83 @@ msgid "Synthesizer" msgstr "Syntezator" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Częstotliwość próbkowania:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - wybierz plik SoundFont" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Anuluj" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Otwórz" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Nazwa pliku" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Wielkość (w bajtach)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Nazwa:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " Informacje MIDI " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Format:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Długość (ms):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Liczba ścieżek:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "zmienna" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "Uderzenia na minutę:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "Uderzenia na minutę (średnia ważona):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Podział czasu:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " -msgstr " Komentarze i teksty utworów MIDI " +msgstr " Komentarze i teksty piosenek MIDI " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* brak dostępnych komentarzy w tym pliku MIDI *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" -msgstr "* brak dostępnych tekstów utworów w tym pliku MIDI *" +msgstr "* brak dostępnego tekstu piosenki w tym pliku MIDI *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Zamknij" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (niepoprawne kodowanie UTF-8)" @@ -624,7 +371,7 @@ msgid "Concave Rectangle" msgstr "Wklęsły prostokąt" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Brak" @@ -663,94 +410,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Wyświetla informację ekranową po wznowieniu odtwarzania." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Rozmieszczenie" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Przesunięcie wzdłuż osi X:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Przesunięcie wzdłuż osi Y:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Maksymalna szerokość informacji:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Wiele ekranów" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Wyświetlanie informacji ekranowej na:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "wszystkie ekrany" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "ekran %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Czas (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Wyświetlanie:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Pojawianie się:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Zanikanie:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Czcionki" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Czcionka %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Cień" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Kształt" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Kolory" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Kolor %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Włączenie" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Zdarzenia" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Wykryto menedżer okien obsługujący kompozycje" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -760,58 +507,58 @@ "Aby menu ekranowe było wyświetlanie prawidłowo, należy uruchomić menedżer " "okien obsługujący kompozycje" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "" "Menedżer okien obsługujący kompozycje nie jest wymagany dla udawanej " "przezroczystości" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Przezroczystość" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Udawana przeźroczystość" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Prawdziwa przezroczystość (wymaga rozszerzenia X Composite)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Nie wczytano rozszerzenia kompozycji" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Pozycja" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animacja" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Tekst" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Obramowanie" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Wyzwalanie" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Różne" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Przetestuj" @@ -827,11 +574,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Listy odtwarzania Audacious (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Kruszarka bitów" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Głębia bitowa:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Współczynnik próbkowania w dół:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Kruszarka bitów" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Kolor" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Rozmyty zakres" @@ -843,6 +606,10 @@ msgid "Presets:" msgstr "Profile ustawień:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Domyślny" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Poziom sygnału wejściowego:" @@ -855,7 +622,7 @@ msgid "Cut frequency:" msgstr "Częstotliwość obcięcia:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Analizator spektrum" @@ -951,50 +718,50 @@ msgid "Audio CD" msgstr "Audio CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Nie udało się otworzyć urządzenia CD %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Nie znaleziono napędu CD." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Brak płyty w napędzie." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Nieobsługiwany rodzaj płyty." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Nie udało się zainicjalizować otwarcia napędu CD." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Nie udało się odzyskać pierwszego/ostatniego numeru ścieżki." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Nie mogę odczytać LSN początku/końca ścieżki %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Nie udało się połączyć z CDDB." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Nie udało się uzyskać odpowiedzi z serwera CDDB" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Nie udało się uzyskać odpowiedzi z serwera CDDB: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Nie udało się odczytać informacji z CDDB: %s" @@ -1067,6 +834,13 @@ msgid "Default song length:" msgstr "Domyślna długość piosenki:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "sekundy" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "" @@ -1097,7 +871,7 @@ msgid "CoreAudio output" msgstr "Wyjście CoreAudio" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1117,11 +891,11 @@ "Oparta na wtyczce wyjścia SDL dla Audacious\n" "Prawa autorskie 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Użyj trybu wyłączności" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" "Użyj dźwięku bit perfect (dostosuj częstotliwość próbkowania urządzenia)" @@ -1219,20 +993,20 @@ msgid "Delete" msgstr "Usuń" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Anuluj" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Usuń zaznaczone pliki" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Sposób usuwania" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Przesuń do kosza zamiast kasować" @@ -1259,7 +1033,7 @@ msgstr "Opóźnienie:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1275,11 +1049,11 @@ msgid "Echo" msgstr "Echo" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Wtyczka FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1403,89 +1177,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "8 kbit/s" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "16 kbit/s" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "32 kbit/s" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "40 kbit/s" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "48 kbit/s" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "56 kbit/s" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "64 kbit/s" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "80 kbit/s" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "96 kbit/s" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "112 kbit/s" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "128 kbit/s" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "160 kbit/s" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "192 kbit/s" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "224 kbit/s" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "256 kbit/s" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "320 kbit/s" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Połączone stereo" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1597,7 +1371,7 @@ msgid "Quality (0-1):" msgstr "Jakość (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Ogólne" @@ -1606,11 +1380,11 @@ msgid "FLAC Decoder" msgstr "Dekoder FLAC" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "bezstratna" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1642,7 +1416,7 @@ msgid "Invalid open mode" msgstr "Nieprawidłowy tryb otwierania" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1662,116 +1436,134 @@ "\n" "Licencja: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "Analizator spektrum OpenGL" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "Numer porządkowy" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Tytuł" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Wykonawca" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Rok" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Album" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Wykonawca albumu" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Ścieżka" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Gatunek" -#: src/gtkui/columns.cc:43 -msgid "Queue position" +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" msgstr "Pozycja w kolejce" -#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Czas trwania" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "Położenie pliku" - -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Własny tytuł (z ustawień)" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "Ścieżka pliku" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Nazwa pliku" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Własny tytuł" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Tempo transmisji" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Komentarz" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "Wydawca" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "Numer katalogowy" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Dostępne kolumny" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Wyświetlane kolumny" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Narzędzie wyszukiwania" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Zaczep po lewej" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Zaczep po prawej" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Zaczep na górze" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Zaczep na dole" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Odczep" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Wyłącz" @@ -1811,8 +1603,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Odtwarzaj" @@ -1989,8 +1781,8 @@ msgid "Remove _Unavailable Files" msgstr "_Usuń niedostępne pliki" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Nowa" @@ -2000,7 +1792,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "_Usuń" @@ -2131,7 +1923,7 @@ msgstr "_Zaznacz wszystko" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "Z_mień nazwę..." @@ -2159,104 +1951,109 @@ msgid "Show column headers" msgstr "Pokaż nagłówki listy odtwarzania" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "Używaj ikon symbolicznych na pasku narzędzi" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Przewiń przy zmianie piosenki" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Interfejs GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Buforowanie..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Odtwarzaj" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Wstrzymaj" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Przeszukaj bibliotekę" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Otwórz pliki" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Dodaj pliki" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Poprzednie" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Zatrzymaj" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Następne" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Nagraj strumień" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Powtarzaj" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Losowa kolejność" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "Menu" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" @@ -2265,93 +2062,93 @@ msgstr[2] "%d kanałów" msgstr[3] "%d kanałów" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kb/s" +msgid "%d kbit/s" +msgstr "%d kbit/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Tryb prosty." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Tryb listy odtwarzania." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Zatrzymaj po tej piosence." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Poprzedna ścieżka" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Wstrzymaj/wznów" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Następna ścieżka" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "Krok do przodu" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "Krok do tyłu" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Wyciszenie dźwięku" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Zwiększ głośność" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Zmniejsz głośność" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Przejdź do pliku" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Przełącz okno(a) odtwarzacza" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Pokaż menu ekranowe" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Włącz/Wyłącz powtarzanie" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Włącz/Wyłącz odtwaranie losowe" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Zatrzymanie po bieżącej ścieżce" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Przesuń na wierzch okno(a) odtwarzacza" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(brak)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2362,11 +2159,11 @@ "\n" "Czy chcesz kontynuować?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Przyciski dowiązań myszy" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2374,23 +2171,23 @@ "Proszę wcisnąć kombinację klawiszy wewnątrz pola\n" "tekstowego. Można również użyć przycisków myszy." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Skróty klawiszowe:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Czynność:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Kombinacja klawiszy:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Dodaj" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Globalne skróty klawiszowe" @@ -2489,16 +2286,16 @@ "Hz. Użyj proszę Konwertera częstotliwości próbkowania (wtyczki) aby usunąć " "niezgodność." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "Ustawienia %s" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Położenia modułów:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2509,25 +2306,25 @@ "Po dodaniu nowych ścieżek proszę wcisnąć Enter, aby wyszukać nowe wtyczki." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Dostępne wtyczki:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Włącz" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Włączone wtyczki:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Ustawienia" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2584,101 +2381,105 @@ msgid "Wait before reconnecting:" msgstr "Odczekaj przed ponownym połączeniem:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" -msgstr "Teksty utworów" +msgstr "Teksty piosenek" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Nigdzie" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "Wykonawca jest skracany na początku, tytuł -- na końcu" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "Znaki do obcięcia:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "Znaki są OR-owane w RegExp, otoczone białymi znakami" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "Znaki do podziału:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "Dalsze obcięcie tych na znakach" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "Główne" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "Podziel tytuł na wykonawcę i tytuł na znakach" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "Źródła internetowe" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "Pobierz teksty utworów z:" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "Źródła" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "Użyj osadzonych tekstów piosenek (z tagu Teksty piosenek)" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "Pobierz teksty piosenek z Internetu:" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" -msgstr "Przechowuj pobrane teksty utworów w lokalnej pamięci podręcznej" +msgstr "Przechowuj pobrane teksty piosenek w lokalnej pamięci podręcznej" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Pamięć lokalna" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "Załaduj pliki tekstów utworów (.lrc) z pamięci lokalnej" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Nie można pobrać %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Nie można odczytać %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Szukanie tekstu piosenki ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Błąd" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." -msgstr "Nie można znaleźć tekstu utworu." +msgstr "Nie można znaleźć tekstu piosenki." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "Brak tytułu i/lub wykonawcy." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Zapisz lokalnie" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Odśwież" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "Lista odtwarzania M3U" @@ -2838,7 +2639,7 @@ "Poniższe ustawienia zostaną wprowadzone w życie po restarcie Audaciousa." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Zatrzymaj odtwarzanie po tej piosence" @@ -2847,41 +2648,17 @@ msgid "Moonstone" msgstr "Kamień księżycowy" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Przywróć do domyślnych" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Teraz odtwarzane" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Numer porządkowy" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Wykonawca albumu" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Pozycja w kolejce" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Ścieżka pliku" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Nazwa pliku" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Własny tytuł" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Wpisy" @@ -2897,7 +2674,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Użyj dokładnego obliczania długości (wolne)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Dźwięk przestrzenny" @@ -2999,7 +2776,7 @@ msgid "OpenMPT (Module Player)" msgstr "OpenMPT (odtwarzacz modułów)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -3009,19 +2786,19 @@ "\n" "Napisany przez: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Separacja stereo:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "Interpolacja:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Liniowa" @@ -3033,11 +2810,23 @@ msgid "Windowed sinc" msgstr "Okienkowa sinc" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "Dekoder Opus" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" +"Dekoder Opus dla Audaciousa\n" +"Prawa autorskie 2022 Thomas Lange" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "Wyjście OSS4" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "Wyjście OSS3" @@ -3080,18 +2869,40 @@ "Tony'emu Vroonowi oraz Johnowi Lindgrenowi, a także, naturalnie, autorom " "poprzedniej wtyczki OSS." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "Wyjście PipeWire" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" +"Wtyczka wyjścia PipeWire dla Audaciousa\n" +"Prawa autorskie 2022 Thomas Lange\n" +"\n" +"Oparta na wtyczce wyjścia PipeWire dla Audaciousa\n" +"Prawa autorskie 2021 Ilya Kotov" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Odtwarzanie" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Menedżer list odtwarzania" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Usuń" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "_Zmień nazwę" @@ -3107,7 +2918,7 @@ msgid "OpenPSF Configuration" msgstr "Konfiguracja OpenPSF" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Ignorowanie czasu trwania z pliku" @@ -3197,11 +3008,11 @@ "\n" "Licencja: GPL wersja 2 i późniejsze" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "Naciśnij kombinację klawiszy w polu tekstowym." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3251,14 +3062,18 @@ msgid "Audio Settings ..." msgstr "Ustawienia dźwięku..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "P#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "Ś#" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "C#" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Interfejs Qt" @@ -3475,7 +3290,7 @@ msgid "Library" msgstr "Biblioteka" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" @@ -3484,23 +3299,23 @@ msgstr[2] "%d piosenek" msgstr[3] "%d piosenek" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "tego gatunku" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "na" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "przez" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Liczba pokazanych wyników:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Przeszukaj bibliotekę podczas uruchamiania" @@ -3508,7 +3323,7 @@ msgid "Monitor library for changes" msgstr "Monitoruj bibliotekę pod kątem zmian" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3516,19 +3331,19 @@ "Aby zaimportować kolekcję muzyczną, proszę wybrać katalog i kliknąć przycisk " "ponownego wczytywania." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Proszę czekać ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Wybierz katalog" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Przeszukaj bibliotekę" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" @@ -3537,7 +3352,7 @@ msgstr[2] "%d z %d pokazanych wyników" msgstr[3] "%d z %d pokazanych wyników" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" @@ -3546,11 +3361,11 @@ msgstr[2] "%d wyników" msgstr[3] "%d wyników" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Utwórz listę odtwarzania" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Dodaj do listy odtwarzania" @@ -3654,108 +3469,108 @@ msgid "Repeat point B set." msgstr "Ustawiono punkt końcowy pętli." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Przedwzmacniacz" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Korektor graficzny Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Nagrywanie włączone" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Nagrywanie wyłączone" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Skocz do: %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Głośność: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Balans: %d%% lewy" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Balans: centralny" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Balans: %d%% prawy" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Menu opcji" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Wyłącz 'Zawsze na wierzchu'" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Włącz 'Zawsze na wierzchu'" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Obszar informacji o pliku" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Podwójny rozmiar" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Wizualizacje" @@ -3779,10 +3594,6 @@ msgid "Open URL ..." msgstr "Otwórz URL..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Odtwarzanie" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Lista odtwarzania" @@ -3797,7 +3608,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Usługi" @@ -3814,7 +3625,7 @@ msgstr "Zakończ" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Informacje o piosence..." @@ -3834,7 +3645,7 @@ msgid "Clear A-B Repeat" msgstr "Usuń powtarzanie A-B" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Przejdź do piosenki..." @@ -3927,20 +3738,20 @@ msgstr "Dodaj pliki..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Według tytułu" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Według nazwy pliku" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Według ścieżki dostępu" @@ -3968,113 +3779,113 @@ msgid "Remove Selected" msgstr "Usuń zaznaczone" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Szukaj i wybierz" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Odwróć zaznaczenie" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Wyczyść zaznaczenie" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Zaznacz wszystko" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "według numeru ścieżki" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "według wykonawcy" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "według albumu" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "według wykonawcy albumu" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "według daty wydania" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Według gatunku" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Według długości" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Według własnego tytułu" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Według komentarza" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Wymieszaj listę odtwarzania" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Odwróć kolejność listy odtwarzania" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Posortuj zaznaczone" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Sortuj" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Otwórz nadrzędny katalog" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Wytnij" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Kopiuj" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Wklej" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Wklej na końcu" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Przełącz kolejkę" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d z %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Edytor listy odtwarzania Audacious" @@ -4090,167 +3901,219 @@ msgid "Add Folder ..." msgstr "Dodaj katalog..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Wyszukaj wpisy w aktywnej playliście" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Zaznacz wpisy na playliście poprzez wypełnienie jednego lub więcej pól. Pola " +"używają składni wyrażeń regularnych, z uwzględnieniem wielkości liter. Jeśli " +"nie wiesz, jak działają wyrażenia regularne, wpisz po prostu to, czego " +"szukasz." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Tytuł:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Album:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Artysta:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Nazwa pliku:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Wyczyść poprzednie zaznaczenie przed szukaniem" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Automatycznie przełącz kolejkę dla pasujących wpisów" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Utwórz nową playlistę z pasującymi wpisami" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Szukaj" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Odtwarzacz:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Wybór czcionki okna odtwarzacza:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Lista odtwarzania:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Wybór czcionki listy odtwarzania:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Skórka" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "Wyświetlaj aktywny pasek tytułu, gdy aktywne jest dowolne okno" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Czcionki" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Czcionki bitmapowe (obsługuje tylko kodowanie ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Przewijaj tytuł piosenki" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Przewijanie tytułu piosenki w obydwu kierunkach" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analizator" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Zakres" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Spektogram / wskaźnik wysterowania" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Wyłączony" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Zwykły" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Ognisty" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Pionowe linie" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Linie" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Kolumny" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Najwolniejszy" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Wolny" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Średni" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Szybki" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Najszybszy" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Kropki" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Linia" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Zwykły" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Lodowy" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Wygładzony" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Kolorowanie:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Styl:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Upadanie:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Upadanie wartości szczytowych:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Stylistyka kształtu:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Kolor spektogramu:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "Styl wskaźnika wysterowania:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Sposób" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Sposób wizualizacji:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analizator" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Pokaż wartości szczytowe" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Wizualizacja" @@ -4262,59 +4125,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Styl programu Winamp 2.x" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Wyszukaj wpisy w aktywnej playliście" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Szukaj" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Zaznacz wpisy na playliście poprzez wypełnienie jednego lub więcej pól. Pola " -"używają składni wyrażeń regularnych, z uwzględnieniem wielkości liter. Jeśli " -"nie wiesz, jak działają wyrażenia regularne, wpisz po prostu to, czego " -"szukasz." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Tytuł:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Album:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Artysta:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Nazwa pliku:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Wyczyść poprzednie zaznaczenie przed szukaniem" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Automatycznie przełącz kolejkę dla pasujących wpisów" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Utwórz nową playlistę z pasującymi wpisami" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Wtyczka Sndfile" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4797,19 +4612,32 @@ "przykładowo wprowadzenie: tone://2000;2005 wytworzy dźwięk o częstotliwości " "2000 Hz oraz 2005 Hz" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Dalsze komunikaty zostały ukryte.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Działanie..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Informacje" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "%s nie wygląda na prawidłowy katalog." + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Usuwanie głosu (karaoke)" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4963,14 +4791,38 @@ "\n" "Część kodu napisana przez Milesa Egana." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "Dekoder 2SF" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Cosinus" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Ostry" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "Konfiguracja XSF" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Domyślny czas zanikania:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Tryb interpolacji:" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "Współdzielone listy odtwarzania XML (XSPF)" diff -Nru audacious-plugins-4.1/po/process-transifex-po audacious-plugins-4.3.1/po/process-transifex-po --- audacious-plugins-4.1/po/process-transifex-po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/process-transifex-po 2023-04-29 20:17:32.000000000 +0000 @@ -1,6 +1,9 @@ #!/bin/sh case "$1" in +af.po) + LANGUAGE="Afrikaans" + ;; ar.po) LANGUAGE="Arabic" ;; @@ -145,6 +148,9 @@ uk.po) LANGUAGE="Ukrainian" ;; +uz.po) + LANGUAGE="Uzbek" + ;; vi.po) LANGUAGE="Vietnamese" ;; diff -Nru audacious-plugins-4.1/po/pt_BR.po audacious-plugins-4.3.1/po/pt_BR.po --- audacious-plugins-4.1/po/pt_BR.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/pt_BR.po 2023-04-29 20:17:32.000000000 +0000 @@ -10,13 +10,14 @@ # Fabiano Ramos , 2018 # F Marcelo O Amarante , 2015 # Fuad Saud , 2012 -# Fúlvio Alves , 2020-2021 +# Fúlvio Alves , 2020-2023 # mcnd2 , 2012 # Iuri Suzano , 2017 # John_Norum , 2012 # Jorgebadad , 2016 -# Juliano da Silva Silva , 2019 +# Juliano Silva , 2019 # Bruno Bacelar , 2012 +# Mark Dave, 2022 # Rafael Fontenelle , 2012 # rafael garcia , 2017 # Rodrigo de Araujo , 2016 @@ -29,27 +30,28 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2021-01-10 20:36+0000\n" -"Last-Translator: Fúlvio Alves \n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Fúlvio Alves , 2020-2023\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/audacious/" "audacious/language/pt_BR/)\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % " +"1000000 == 0 ? 1 : 2;\n" #: src/aac/aac.cc:19 msgid "AAC (Raw) Decoder" -msgstr "Decodificador AAC (Bruto)" +msgstr "Decodificador AAC (RAW)" #: src/adplug/adplug-xmms.cc:70 msgid "AdPlug (AdLib Player)" msgstr "AdPlug (Reprodutor AdLib)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "sequenciado" @@ -61,9 +63,11 @@ msgid "OPL Emulator:" msgstr "Emulador OPL:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Taxa de amostragem" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Taxa de amostragem:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -79,7 +83,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Diversos" @@ -87,261 +91,6 @@ msgid "Repeat song in endless loop" msgstr "Repetir música em loop infinito" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Alarme" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Definir Alarme ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Um plugin que pode ser utilizado para iniciar a reprodução num tempo " -"determinado.\n" -"\n" -"Originalmente escrito por Adam Feakin e Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Horário\n" -"Alarme ás:\n" -"A hora em que o alarme inicia.\n" -"\n" -"Silenciar após:\n" -"A duração do alarme.\n" -"(se a caixa de diálogo não for fechada)\n" -"\n" -"\n" -"Dias\n" -"Dia:\n" -"Selecionar os dias do alarme.\n" -"\n" -"Horário:\n" -"Escolha a hora do alarme em cada dia,\n" -"ou selecione o botão habilitar/desabilitar para usar o padrão\n" -"hora.\n" -"\n" -"\n" -"Volume\n" -"Enfraquecimento:\n" -"Aumentar o volume até ao volume escolhido\n" -"para este período de tempo.\n" -"\n" -"Começar no:\n" -"Começar enfraquecendo neste valor.\n" -"\n" -"Final:\n" -"O volume para ser enfraquecido em. Se o enfraquecer\n" -"a hora é 0 quanto se define o volume para começar\n" -"tocando.\n" -"\n" -"\n" -"Opções:\n" -"Comando Adicional:\n" -"Executar esse comando no momento do alarme.\n" -"\n" -"Lista de Reprodução:\n" -"Carregar esta lista de reprodução e reproduzir\n" -"Se nenhuma lista for dada, as músicas são\n" -"atualmente na lista sera usada.\n" -"A URL de um mp3/ogg stream também pode ser\n" -"coloque aqui.\n" -"\n" -"Lembrete:\n" -"Exibir um aviso quando o alarme for desligado\n" -"digite o lembrete na caixa e ligue-o\n" -"botão habilitar/desabilitar, se você quer que ele seja mostrado." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Este é o seu alerta de despertar." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Seu lembrete para hoje é..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Lembrete" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Segunda-feira" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Terça-feira" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Quarta-feira" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Quinta-feira" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Sexta-feira" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Sábado" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Domingo" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Horário" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Alarme às (padrão):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Silenciar após:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "horas" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minutos" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Escolha os dias para o alarme tocar" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Dia" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Padrão" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Dias" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Desvanecimento" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "segundos" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Volume" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Começar às" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Final" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Atual" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Comando Adicional" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "habilitar" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Lista de Reprodução (opcional)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Selecionar uma Lista de Reprodução" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Opções" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "O que significam estas opções?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Ajuda" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Capa do Álbum" @@ -492,87 +241,83 @@ msgid "Synthesizer" msgstr "Sintetizador" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Taxa de amostragem:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - Selecione o arquivo SoundFont" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Cancelar" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Abrir" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Nome do Arquivo" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Tamanho (bytes)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Nome:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr "Informações MIDI" -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Formato:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Duração (msec):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "N.º de Faixas;" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "variável" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Div. de tempo:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " Comentários de MIDI e Letras " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* Sem comentários disponíveis neste arquivo MIDI *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* Sem letras disponíveis neste arquivo MIDI *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Fechar" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (UTF-8 invalido)" @@ -628,7 +373,7 @@ msgid "Concave Rectangle" msgstr "Retângulo Côncavo" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Nada" @@ -664,94 +409,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Ativar OSD ao retomar a reprodução" -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Localização" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Desvio X relativo:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Desvio Y relativo:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Largura máxima do OSD:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Opções de múltiplos monitores " -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Exibir uso do OSD:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "todos os monitores" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "monitor %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Duração (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Exibição:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Aparecer gradual:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Desaparecer gradual:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Tipo de letra" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Tipo de letra %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Sombra" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Estilo de renderização" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Cores" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Cor %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Habilitar gatilho" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Evento " -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Gerenciador Composite detectado" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -761,56 +506,56 @@ "ao menos que você saiba que tenha executado, por favor ative um gerenciador " "composite, caso contrario o OSD não vai funcionar corretamente " -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Não é necessário o gerenciador Composite para falsa transparência." -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Transparência " -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Falsa transparência " -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Transparência Real (requer a Extensão X Composite.)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Extensão Composite não carregada" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Posição" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animação" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Texto" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Decoração" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Gatilho" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Vários" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Teste" @@ -826,11 +571,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Listas de Reproduções Audacious (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Profundidade de bits:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Relação de redução:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Cor" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Ofuscar Escopo" @@ -842,6 +603,10 @@ msgid "Presets:" msgstr "Predefinições:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Padrão" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Nível de alimentação:" @@ -854,7 +619,7 @@ msgid "Cut frequency:" msgstr "Frequência de corte:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Analisador Espectro" @@ -950,50 +715,50 @@ msgid "Audio CD" msgstr "Audio CD " -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Falha ao abrir dispositivo de CD %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Não se encontrou drive de CD capaz de reproduzir áudio." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Unidade está vazia." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Tipo de disco não suportado." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Falha ao terminar de inicializar drive de CD aberto." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Falha ao recuperar primeiro/ultimo número de faixa." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Não foi possível começar/terminar LSN da faixa %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Falha ao criar a conexão CDDB" -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Falha ao consultar o servidor CDDB." -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Falha ao consultar o servidor CDDB: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Falha ao ler as informações CDDB: %s" @@ -1066,6 +831,13 @@ msgid "Default song length:" msgstr " Predefinição da duração da faixa:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "segundos" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Reamostragem" @@ -1094,7 +866,7 @@ msgid "CoreAudio output" msgstr "Saída CoreAudio" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1114,11 +886,11 @@ "Baseado no Plugin de saída SDL para Audacious\n" "Direitos Reservados à John Lindgren - 2010" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Usar modo exclusivo" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "Usar áudio perfeito (ajusta a taxa de amostragem do dispositivo)" @@ -1215,20 +987,20 @@ msgid "Delete" msgstr "Excluir" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Cancelar" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Excluir Arquivos Selecionados" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Excluir Método" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Mover para a lixeira ao invés de excluir imediatamente" @@ -1254,7 +1026,7 @@ msgstr "Atraso:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1270,11 +1042,11 @@ msgid "Echo" msgstr "Eco" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Plugin FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1398,89 +1170,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "8 kbit/s" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "16 kbit/s" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "32 kbit/s" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "40 kbit/s" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "40 kbps" +msgid "48 kbit/s" +msgstr "48 kbit/s" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "56 kbit/s" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "64 kbit/s" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "80 kbit/s" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "112 kbps" +msgid "96 kbit/s" +msgstr "96 kbit/s" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "112 kbit/s" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "128 kbit/s" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "160 kbit/s" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "192 kbit/s" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "224 kbit/s" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "256 kbit/s" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "320 kbit/s" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Joint Stereo" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1592,7 +1364,7 @@ msgid "Quality (0-1):" msgstr "Qualidade (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Geral" @@ -1601,11 +1373,11 @@ msgid "FLAC Decoder" msgstr "Decodificador FLAG" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "sem perdas" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1637,7 +1409,7 @@ msgid "Invalid open mode" msgstr "Modo de abertura inválido" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1657,116 +1429,134 @@ "\n" "Licença: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "Analisador de Espectro OpenGL" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "Número de entrada" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "Número de Entrada" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Título" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Artista" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Ano" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Álbum" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Artista do Álbum" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Faixa" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Gênero" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "Posição na fila de reprodução" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "Posição Na Fila De Reprodução" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Duração" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "Localização do arquivo" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "Diretório Do Arquivo" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Título personalizado" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Nome do Arquivo" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Título personalizado" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Taxa de dados" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Comentário" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "Editora" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "Número de catálogo" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Colunas disponíveis" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Colunas visíveis" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Ferramenta de Busca" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Apontar na esquerda" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Apontar na direita" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Apontar no topo" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Apontar na parte inferior" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Desencaixar" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Desabilitar" @@ -1806,8 +1596,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Reproduzir" @@ -1984,8 +1774,8 @@ msgid "Remove _Unavailable Files" msgstr "Remover _Arquivos Indisponíveis" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Novo" @@ -1995,7 +1785,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "Remo_ver" @@ -2126,7 +1916,7 @@ msgstr "Selecionar _Tudo" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Renomear ..." @@ -2154,197 +1944,203 @@ msgid "Show column headers" msgstr "Mostrar cabeçalho das colunas" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "Use ícones simbólicos na barra de ferramentas" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Deslocar ao mudar de faixa" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Interface GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "A processar ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Reproduzir" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Pausa" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Procurar Biblioteca" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Abrir arquivos" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Adicionar arquivos" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Anterior" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Parar" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Próxima" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Fluxo do arquivo" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Repetir" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Embaralhar" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "Menu" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d canal" msgstr[1] "%d canais" +msgstr[2] "%d canais" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "%d kbit/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Modo simples." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Modo Lista de Reprodução." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Parar após faixa" -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Faixa anterior" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Pausa/Retornar" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Próxima faixa" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "Avançar" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "Retroceder" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Mudo" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Aumentar volume" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Diminuir volume" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Ir para o arquivo" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Habilitar/Desabilitar janela(s) do player" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Mostrar OSD" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Habilitar/Desabilitar repetir" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Habilitar/Desabilitar embaralhar" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Habilitar/Desabilitar parar depois da atual" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Aumentar janela(s) do player" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(nada)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2355,11 +2151,11 @@ "\n" "Continuar?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Associação do botão do mouse" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2367,23 +2163,23 @@ "Pressionar uma combinação de teclas no campo de texto.\n" "Você também pode associar os botoes do mouse." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Hotkeys:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Ação:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Combinação de Teclas:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Adicionar" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Global Hotkeys" @@ -2486,16 +2282,16 @@ "reproduzindo à %d Hz. Utilize o efeito Conversor de Taxa de Amostragem para " "corrigir a incompatibilidade." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "Configurações de %s" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Diretório do Modulo:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2506,25 +2302,25 @@ "Após a adição dos caminhos, pressione Enter para procurar os novos plugins." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Plugins disponíveis:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Habilitar" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Plugins ativos:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Configurações" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2582,103 +2378,107 @@ msgid "Wait before reconnecting:" msgstr "Espere antes de reconectar:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "Letras" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Nenhum lugar" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "Artista é truncado no início, Título -- no fim" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "Caracteres para truncar em:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" "Os caracteres são ORed em RegExp, cercados por espaços em branco" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "Caracteres para dividir em:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "Truncar ainda mais aqueles em caracteres" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "Geral" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "Dividir título entre artista e título nos caracteres" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "Fontes da Internet" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "Obter letras de:" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "Fontes" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "Usar letras incorporadas (da etiqueta Letras)" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "Buscar letras na internet:" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "Armazenar letras obtidas no cache local" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Armazenamento local" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "Carregar arquivos de letra (.lrc) do armazenamento local" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Não foi possível obter %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Não foi possível analisar %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Procurando a letra da faixa ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Erro" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "Não foi possível encontrar a letra." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "Título e/ou artista ausentes." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Salvar localmente" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Atualizar" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "Listas de Reproduções M3U" @@ -2740,7 +2540,7 @@ #: src/modplug/modplugbmp.h:57 msgid "ModPlug (Module Player)" -msgstr "ModPlug (Módulo Reprodutor)" +msgstr "ModPlug (Reprodutor de Module music)" #: src/modplug/plugin_main.cc:55 msgid "Channels" @@ -2836,7 +2636,7 @@ msgstr "Essas configurações entrarão em vigor quando Audacious for reiniciado." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Parar Após Esta Faixa" @@ -2845,41 +2645,17 @@ msgid "Moonstone" msgstr "Moonstone" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Redefinir para o Padrão" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Reproduzindo" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Número de Entrada" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Artista do Álbum" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Posição Na Fila De Reprodução" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Diretório Do Arquivo" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Nome do Arquivo" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Título personalizado" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Entradas" @@ -2895,7 +2671,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Usar cálculo exato da duração (lento)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Surround" @@ -2994,7 +2770,7 @@ msgid "OpenMPT (Module Player)" msgstr "OpenMPT (Módulo Reprodutor)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -3004,19 +2780,19 @@ "\n" "Escrito por: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Separação estéreo:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "Interpolação:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Linear" @@ -3028,11 +2804,23 @@ msgid "Windowed sinc" msgstr "Sinc em janela" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "Decodificador Opus" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" +"Opus Decoder Plugin para Audacious\n" +"Copyright 2022 Thomas Lange" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "Saída OSS4" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "Saída OSS3" @@ -3074,18 +2862,40 @@ "Gostaria de agradecer as pessoas em #audacious, especialmente Tony Vroon e " "John Lindgren e a todos os autores anteriores do plugin OSS." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "Saída PipeWire" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" +"PipeWire Output Plugin para Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Baseado no Plugin de Saída PipeWire para Qmmp\n" +"Copyright 2021 Ilya Kotov" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Reprodução:" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Gerenciador de Lista de Reprodução" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Remover" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "Ren_omear" @@ -3095,13 +2905,13 @@ #: src/psf/plugin.cc:53 msgid "OpenPSF PSF1/PSF2 Decoder" -msgstr "Decodificador OpenPSF PDF1/PSF2" +msgstr "OpenPSF (Reprodutor de PSF1/PSF2)" #: src/psf/plugin.cc:270 msgid "OpenPSF Configuration" msgstr "Configuração do OpenPSF" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Ignorar duração do arquivo" @@ -3192,11 +3002,11 @@ "\n" "Licença: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "Pressione uma combinação de teclas dentro de um campo de texto." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3245,14 +3055,18 @@ msgid "Audio Settings ..." msgstr "Configurações de Audio ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "Q#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "F#" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "C#" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Interface Qt" @@ -3471,30 +3285,31 @@ msgid "Library" msgstr "Biblioteca" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d faixa" msgstr[1] "%d faixas" +msgstr[2] "%d faixas" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "deste gênero" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "sobre" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "por" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Número de resultados para exibir:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Re-escanear lista de reprodução na inicialização" @@ -3502,7 +3317,7 @@ msgid "Monitor library for changes" msgstr "Monitorar a biblioteca por alterações" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3510,37 +3325,39 @@ "Para importar sua biblioteca de música no Audacious, escolha uma pasta e em " "seguida no ícone \"atualizar\"." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Por favor aguarde ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Escolha pasta" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Procurar biblioteca" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] " %d de %d resultado mostrado" msgstr[1] "%d de %d resultados mostrados" +msgstr[2] "%d de %d resultados mostrados" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d resultado" msgstr[1] "%d resultados" +msgstr[2] "%d resultados" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Criar Lista de Reprodução" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Adicionar à Lista de Reprodução" @@ -3558,11 +3375,11 @@ #: src/sid/xs_config.cc:69 msgid "Emulate MOS 8580 (default: MOS 6581)" -msgstr "Emulatar MOS 8580 (Padrão: MOS 6581)" +msgstr "Emular MOS 8580 (Padrão: MOS 6581)" #: src/sid/xs_config.cc:71 msgid "Do not automatically select chip model" -msgstr "Não selecionar automaticamente o modelo do chip" +msgstr "Não selecionar o modelo do chip automaticamente" #: src/sid/xs_config.cc:73 msgid "Emulate filter" @@ -3644,108 +3461,108 @@ msgid "Repeat point B set." msgstr "Repetir ponto de definição B." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Amplificador" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Equalizador do Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Iniciar gravação" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Encerrar gravação" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Ir para %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Volume: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Equilíbrio: %d%% esquerda" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Equilíbrio centro" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Equilíbrio: %d%% direita" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Menu de Opções" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Desativar 'Sempre No Topo'" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Ativar 'Sempre No Topo'" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Caixa de Informações do Arquivo" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Tamanho Duplo" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Visualizações" @@ -3769,10 +3586,6 @@ msgid "Open URL ..." msgstr "Abrir URL ..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Reprodução:" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Lista de Reprodução" @@ -3787,7 +3600,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Serviços" @@ -3804,7 +3617,7 @@ msgstr "Sair" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Informações da Faixa ..." @@ -3824,7 +3637,7 @@ msgid "Clear A-B Repeat" msgstr "Limpar Repetição A-B" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Ir para a Música ..." @@ -3917,20 +3730,20 @@ msgstr "Adicionar Arquivos ..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Por Título" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Por Nome de Arquivo" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Por Localização do Arquivo" @@ -3958,113 +3771,113 @@ msgid "Remove Selected" msgstr "Remover Selecionados" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Pesquisar e Selecionar" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Inverter Seleção" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Não Selecionar" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Selecionar Tudo" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Por Número da Faixa" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Por Artista" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Por Album" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Por Artista do Álbum" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Por Data de Lançamento" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Por Gênero" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Por Duração" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Por Título Personalizado" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Por Comentário" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Randomizar Lista" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Reverter Lista" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Organizar Selecionado" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Organizar Lista" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Abrir Pasta de Conteúdo" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Cortar" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Copiar" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Colar" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Colar no final" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Adicionar/Remover da Fila de Reprodução" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d de %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Editor de lista de reprodução do Audacious" @@ -4080,167 +3893,220 @@ msgid "Add Folder ..." msgstr "Adicionar Pasta ..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Procurar entradas na lista de reprodução ativa" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Seleciona as entradas da lista de reprodução, preenchendo um ou mais campos. " +"Os campos utilizam expressões regulares, sem distinção entre maiúsculas e " +"minúsculas. Se não sabe o que são expressões regulares, basta inserir uma " +"parte do que pretende procurar." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Título:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Álbum:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Artista:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Nome do Arquivo:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Apagar seleção anterior antes de pesquisar" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "" +"Automaticamente habilitar/desabilitar fila para as entradas coincidentes" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Criar uma nova lista de reprodução com as entradas correspondentes" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Pesquisar" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Reprodutor:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Selecionar o tipo de letra do player:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Lista de Reprodução:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Selecionar o tipo de letra da lista de reprodução:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Aparência" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "Exibir barra de título ativa quando qualquer janela estiver focada" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Fontes" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" -msgstr "Usar letras bitmap (suporta ASCII somente)" +msgstr "Usar fontes bitmap (suporta somente ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" -msgstr "Rolagem do título da faixa" +msgstr "Rolar o título da faixa" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" -msgstr "Título da musica rola em ambas as direções" +msgstr "Rolar o título da faixa em ambas as direções" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analisador" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Escopo" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Gravador de Voz / medidor de VU" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Desligado" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normal" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Fogo" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Linhas Verticais" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Linhas" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Barras" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Mais Lento" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Lento" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Médio" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Rápido" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Muito Rápido" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Dots" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Linha" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Solido" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Gelo" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Suave" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Coloração:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Estilo:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Queda:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Queda Máxima:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Estilo do Escopo" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Coloração do Gravador de Voz:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "Estilo do Medidor de VU" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Tipo" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Tipo de Visualização:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analisador" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Mostrar picos" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Visualização" @@ -4252,60 +4118,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Tema Winamp 2.x não arquivado" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Procurar entradas na lista de reprodução ativa" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Pesquisar" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Seleciona as entradas da lista de reprodução, preenchendo um ou mais campos. " -"Os campos utilizam expressões regulares, sem distinção entre maiúsculas e " -"minúsculas. Se não sabe o que são expressões regulares, basta inserir uma " -"parte do que pretende procurar." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Título:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Álbum:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Artista:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Nome do Arquivo:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Apagar seleção anterior antes de pesquisar" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "" -"Automaticamente habilitar/desabilitar fila para as entradas coincidentes" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Criar uma nova lista de reprodução com as entradas correspondentes" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Plugin Sndfile" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4790,19 +4607,32 @@ "frequência3;...\n" "Exemplo: tone://2000;2005 para reproduzir um tom 2000 Hz e outro de 2005 Hz." -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Demais mensagens foram escondidas.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Processando ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Informação" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "%s não parece ser uma pasta válida." + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Remoção de voz" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4956,14 +4786,38 @@ "\n" "Parte do código do plugin foi por Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "Decodificador 2SF" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Cosseno" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Afiado" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "Configuração XSF" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Tempo de desvanecimento padrão:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Modo de interpolação:" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "Lista de Reprodução Compartilhável XML (XSPF)" diff -Nru audacious-plugins-4.1/po/pt_PT.po audacious-plugins-4.3.1/po/pt_PT.po --- audacious-plugins-4.1/po/pt_PT.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/pt_PT.po 2023-04-29 20:17:32.000000000 +0000 @@ -5,6 +5,7 @@ # Translators: # Alexandro Casanova , 2012 # Bruno Martins , 2011 +# Miguel Diaz Gonçalves, 2022 # Pitxyoki , 2013 # Pitxyoki , 2013 # Sérgio Marques , 2012-2018 @@ -13,16 +14,17 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Miguel Diaz Gonçalves, 2022\n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/audacious/" "audacious/language/pt_PT/)\n" "Language: pt_PT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % " +"1000000 == 0 ? 1 : 2;\n" #: src/aac/aac.cc:19 msgid "AAC (Raw) Decoder" @@ -33,7 +35,7 @@ msgstr "AdPlug (Reprodutor AdLib)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "sequencial" @@ -43,11 +45,13 @@ #: src/adplug/adplug-xmms.cc:350 msgid "OPL Emulator:" -msgstr "" +msgstr "Emulador OPL:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Frequência" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Frequência:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -63,7 +67,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Diversos" @@ -71,259 +75,6 @@ msgid "Repeat song in endless loop" msgstr "Repetir faixa eternamente" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Alarme" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Definir alarme..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Um suplemento para agendar a reprodução a uma determinada hora.\n" -"\n" -"Versão original desenvolvida por Adam Feakin e Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Horário\n" -"Alarme às:\n" -"A hora em que o alarme inicia.\n" -"\n" -"Silenciar após:\n" -"A duração do alarme.\n" -"(se a caixa de diálogo não for fechada)\n" -"\n" -"\n" -"Dias\n" -"Dia:\n" -"Selecione os dias de ativação do alarme.\n" -"\n" -"Hora:\n" -"Escolha a hora do alarme em cada dia,\n" -"ou o botão alternar para utilizar\n" -"a hora pré-definida.\n" -"\n" -"\n" -"Volume\n" -"Desvanecimento:\n" -"Aumentar som até ao volume escolhido\n" -"durante este intervalo de tempo.\n" -"\n" -"Iniciar em: \n" -"Iniciar o desvanecimento neste valor.\n" -"\n" -"Finalizar: \n" -"O volume em que o desvanecimento para.\n" -"Se o valor for 0, definir este valor como\n" -"volume e iniciar a reprodução.\n" -"\n" -"\n" -"Opções:\n" -"Comando adicional:\n" -"Executar este comando com o alarme.\n" -"\n" -"Lista de reprodução:\n" -"Carregar esta lista de reprodução.\n" -"Se não indicar a lista de reprodução,\n" -"será utilizada a faixa atual.\n" -"Também pode indicar um URL de uma emissão mp3/ogg.\n" -"\n" -"Lembrete:\n" -"Mostra um lembrete se o alarme for desligado.\n" -"Digite-o na caixa e ative o a caixa de seleção\n" -"se quiser mostrar o lembrete." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Este é o seu alerta." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "O seu lembrete de hoje é:" - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Lembrete" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "segunda" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "terça" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "quarta" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "quinta" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "sexta" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "sábado" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "domingo" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Horário" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Alarme às (pré-definido):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Silenciar após:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "horas" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minutos" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Escolha os dias para o alarme tocar" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Dia" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Pré-definido" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Dias" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Desvanecimento" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "segundos" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Volume" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Ao iniciar" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Ao terminar" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Atual" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Comando adicional" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "ativar" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Lista de reprodução (opcional)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Escolha a lista de reprodução" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Opções" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "O que significam estas opções?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Ajuda" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Imagem de álbum" @@ -473,87 +224,83 @@ msgid "Synthesizer" msgstr "Sintetizador" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Frequência:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - selecione o ficheiro SoundFont" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Cancelar" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Abrir" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Nome do ficheiro" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Tamanho (bytes)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Nome:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr "Informações MIDI" -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Formato:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Duração (mseg):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "N.º de faixas:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "variável" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Div. de tempo:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr "Comentários e letras das faixas MIDI" -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* sem comentários para este ficheiro MIDI *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* sem letra da música para este ficheiro MIDI *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "Fe_char" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (UTF-8 inválido)" @@ -609,7 +356,7 @@ msgid "Concave Rectangle" msgstr "Retângulo côncavo" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Nenhum" @@ -645,94 +392,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Ativar OSD ao retomar a reprodução." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Posicionamento" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "X relativo:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Y relativo:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Largura máxima do OSD:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Opções de monitores múltiplos" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Mostrar OSD:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "em todos os monitores" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "no monitor %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Duração (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Exibição:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Aparecer gradual:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Desaparecer gradual:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Tipo de letra" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Tipo de letra %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Sombra" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Estilo" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Cores" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Cor %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Ativar" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Evento" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Detetado um gestor de composição." -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -742,56 +489,56 @@ "A menos que tenha a certeza que o gestor está ativo, tem que ativar um " "gestor de composição para mostrar o OSD." -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "A transparência fictícia não precisa de um gestor de composição" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Transparência" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Transparência fictícia" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Transparência efetiva (requer a extensão X Composite)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Extensão de composição não carregada" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Posição" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animação" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Texto" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Decoração" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Ativador" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Outras" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Teste" @@ -807,11 +554,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Listas de reprodução Audacious (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Cor" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Blur Scope" @@ -823,6 +586,10 @@ msgid "Presets:" msgstr "Pré-ajuste:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Pré-definido" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Nível:" @@ -835,7 +602,7 @@ msgid "Cut frequency:" msgstr "Frequência de corte:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Analisador de espetro" @@ -931,50 +698,50 @@ msgid "Audio CD" msgstr "CD áudio" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Ocorreu um erro ao abrir o dispositivo %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Não foi encontrada uma unidade de CD." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Unidade vazia." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Tipo de disco não suportado." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Ocorreu um erro ao iniciar a unidade de CD." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Ocorreu um erro ao obter o número da primeira/última faixa." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Não foi possível ler inicio/fim LSN da faixa %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Falha ao estabelecer a ligação à CDDB." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Ocorreu um erro ao consultar o servidor cddb." -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Ocorreu um erro ao consultar o servidor cddb: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Falha ao ler as informações CDDB: %s" @@ -1047,6 +814,13 @@ msgid "Default song length:" msgstr "Duração pré-definida da faixa:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "segundos" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Remistura" @@ -1075,7 +849,7 @@ msgid "CoreAudio output" msgstr "Suplemento CoreAudio" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1095,11 +869,11 @@ "Baseado no suplemento SDL Output\n" "Copyright 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Usar modo exclusivo" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "Utilizar áudio 'bit perfect' (ajustar frequência do dispositivo)" @@ -1196,20 +970,20 @@ msgid "Delete" msgstr "Eliminar" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Cancelar" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Eliminar ficheiros selecionados" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Método de eliminação" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Mover para o lixo em vez de os eliminar" @@ -1235,7 +1009,7 @@ msgstr "Atraso:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1251,11 +1025,11 @@ msgid "Echo" msgstr "Eco" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Suplemento FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1377,89 +1151,89 @@ msgid "32000 Hz" msgstr "32 000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44 100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48 000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Joint estéreo" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Estéreo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1571,7 +1345,7 @@ msgid "Quality (0-1):" msgstr "Qualidade (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Geral" @@ -1580,11 +1354,11 @@ msgid "FLAC Decoder" msgstr "Descodificador FLAC" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "sem perda" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1616,7 +1390,7 @@ msgid "Invalid open mode" msgstr "Modo inválido de abertura" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1636,116 +1410,134 @@ "\n" "Licença: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "Analisador de espetro OpenGL" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "Número da entrada" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Título" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Artista" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Ano" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Álbum" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Artista do álbum" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Faixa" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Género" -#: src/gtkui/columns.cc:43 -msgid "Queue position" +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" msgstr "Posição na fila" -#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Duração" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "Caminho do ficheiro" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Título personalizado" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Nome de ficheiro" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Título personalizado" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Taxa de dados" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Comentário" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Colunas disponíveis" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Colunas mostradas" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Ferramenta de procura" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Doca à esquerda" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Doca à direita" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Doca em cima" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Doca em baixo" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Desacoplar" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Desativar" @@ -1785,8 +1577,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "Re_produzir" @@ -1814,12 +1606,12 @@ #: src/gtkui/menus.cc:97 src/qtui/menus.cc:145 src/skins/menus.cc:114 #: src/skins-qt/menus.cc:105 msgid "Previous Album" -msgstr "" +msgstr "Álbum anterior" #: src/gtkui/menus.cc:98 src/qtui/menus.cc:146 src/skins/menus.cc:115 #: src/skins-qt/menus.cc:106 msgid "Next Album" -msgstr "" +msgstr "Próximo álbum" #: src/gtkui/menus.cc:100 src/qtui/menus.cc:148 msgid "_Repeat" @@ -1963,8 +1755,8 @@ msgid "Remove _Unavailable Files" msgstr "Remover ficheiros indisponívei_s" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Nova" @@ -1974,7 +1766,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "Remo_ver" @@ -2028,7 +1820,7 @@ #: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 msgid "Show Info Bar _Album Art" -msgstr "" +msgstr "Mostrar _arte do álbum na barra de informações" #: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 msgid "Show Info Bar Vis_ualization" @@ -2105,7 +1897,7 @@ msgstr "Selecion_ar tudo" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "Muda_r nome..." @@ -2133,197 +1925,203 @@ msgid "Show column headers" msgstr "Mostrar título das colunas" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Deslocar ao mudar de faixa" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Interface GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "A processar..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Reproduzir" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Pausa" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Procurar na coleção" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Abrir ficheiros" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Adicionar ficheiros" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Anterior" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Parar" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Seguinte" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Gravar emissão" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Repetir" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Baralhar" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" -msgstr "" +msgstr "Menu" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "estéreo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d canal" msgstr[1] "%d canais" +msgstr[2] "%d canais" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Modo simples" -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Modo lista de reprodução" -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Para após a faixa" -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Faixa anterior" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Pausa/Retomar" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Faixa seguinte" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" -msgstr "" +msgstr "Avançar" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" -msgstr "" +msgstr "Retroceder" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Silenciar" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Aumentar volume" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Diminuir volume" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Ir para ficheiro" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Ativar/desativar janela(s) do reprodutor" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Mostrar OSD" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Ativar/desativar repetição" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Ativar/desativar desorganização" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Ativar/desativar paragem após a faixa atual" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Mostrar janela(s) do reprodutor" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(nada)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2333,11 +2131,11 @@ "\n" "Continuar?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Associação dos botões do rato" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2345,23 +2143,23 @@ "Prima a combinação de teclas no campo de texto.\n" "Também pode associar os botões do rato." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Teclas de atalho:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Ação:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Associação de teclas:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Adicionar" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Atalhos globais" @@ -2379,6 +2177,18 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Plugin Global Hotkey\n" +"Controla o player com combinações globais de teclas ou com teclas " +"multimídia.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Outros colaboradores:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan ." #: src/jack/jack-ng.cc:54 msgid "JACK Output" @@ -2386,7 +2196,7 @@ #: src/jack/jack-ng.cc:126 msgid "Client name:" -msgstr "" +msgstr "Nome do cliente:" #: src/jack/jack-ng.cc:128 msgid "Automatically connect to output ports" @@ -2394,27 +2204,29 @@ #: src/jack/jack-ng.cc:130 msgid "Filter ports (regex, use any port if blank):" -msgstr "" +msgstr "Filtrar portas (regex, usar qualquer porta se estiver em branco):" #: src/jack/jack-ng.cc:136 msgid "Connect to physical ports only" -msgstr "" +msgstr "Ligar apenas a portas físicas" #: src/jack/jack-ng.cc:139 msgid "Upmix to" -msgstr "" +msgstr "Upmix para" #: src/jack/jack-ng.cc:141 msgid "ports if input has fewer channels" -msgstr "" +msgstr "portas se a entrada tiver menos canais" #: src/jack/jack-ng.cc:143 msgid "Ignore insufficient number of ports" -msgstr "" +msgstr "Ignorar número insuficiente de portas" #: src/jack/jack-ng.cc:181 msgid "No JACK output ports were found. Please check settings." msgstr "" +"Não foram encontradas portas de saída JACK. Por favor, verifique as " +"configurações." #: src/jack/jack-ng.cc:195 #, c-format @@ -2449,16 +2261,16 @@ "reproduzir a %d Hz. Utilize o efeito Sample Rate Converter para corrigir a " "diferença." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "Definições de %s" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Caminhos do módulo:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2469,25 +2281,25 @@ "Após a adição dos caminhos, prima Enter para procurar os novos suplementos." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Suplemento disponíveis:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Ativar" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Suplementos ativos:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Definições" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2543,101 +2355,107 @@ msgid "Wait before reconnecting:" msgstr "Intervalo entre ligações:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" -msgstr "" +msgstr "Letras" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" -msgstr "" +msgstr "Em nenhum lugar" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" -msgstr "" +msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" -msgstr "" +msgstr "Artista é truncado no início, Título -- no final" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" -msgstr "" +msgstr "Caracteres para truncar em:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" +"Os caracteres são ORed em RegExp, cercados por espaços em branco" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" -msgstr "" +msgstr "Caracteres para dividir em:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" -msgstr "" +msgstr "Truncar ainda mais os que se encontram em caracteres" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" -msgstr "" +msgstr "Geral" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" +msgstr "Dividir título entre artista e título nos caracteres" + +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" -msgstr "" +msgstr "Armazenar letras obtidas no cache local" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" -msgstr "" +msgstr "Armazenamento local" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" -msgstr "" +msgstr "Carregar arquivos de letra (.lrc) do armazenamento local" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Não foi possível obter %s." -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Não foi possível processar %s." -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "A procurar letra da faixa..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Erro" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." -msgstr "" +msgstr "Não foi possível encontrar a letra." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." -msgstr "" +msgstr "Título e/ou artista em falta." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" -msgstr "" +msgstr "Gravar localmente" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" -msgstr "" +msgstr "Atualizar" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "Listas de reprodução M3U" @@ -2795,50 +2613,26 @@ msgstr "Estas definições serão aplicadas após reiniciar o Audacious." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Parar após esta faixa" #: src/moonstone/moonstone.cc:39 msgid "Moonstone" -msgstr "" +msgstr "Moonstone" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Repor predefinições" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "A reproduzir" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Número da entrada" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Artista do álbum" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Posição na fila" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Caminho do ficheiro" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Nome de ficheiro" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Título personalizado" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Entradas" @@ -2854,7 +2648,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Usar cálculo preciso de duração (lento)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Surround" @@ -2944,7 +2738,7 @@ #: src/notify/notify.cc:110 msgid "Custom notification duration:" -msgstr "" +msgstr "Duração de notificação personalizada:" #: src/notify/osd.cc:74 msgid "Show" @@ -2952,44 +2746,57 @@ #: src/openmpt/mpt.cc:50 msgid "OpenMPT (Module Player)" -msgstr "" +msgstr "OpenMPT (Reprodutor de módulos)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" +"Reprodutor de módulos baseado em libopenmpt\n" +"\n" +"Escrito por: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" -msgstr "" +msgstr "Separação estéreo:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" -msgstr "" +msgstr "Interpolação:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Linear" #: src/openmpt/mptwrap.h:52 msgid "Cubic" -msgstr "" +msgstr "Cúbica" #: src/openmpt/mptwrap.h:53 msgid "Windowed sinc" +msgstr "Sinc em janela" + +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" msgstr "" -#: src/oss4/oss.h:75 +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "Sistema OSS4" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "Saída OSS3" @@ -3031,18 +2838,35 @@ "Gostaria de agradecer às pessoas em #audacious, especialmente a Tony Vroon, " "a John Lindgren e a todos os anteriores autores do suplemento OSS." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Reprodução" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Gestor de lista de reprodução" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Remover" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "Mud_ar nome" @@ -3056,9 +2880,9 @@ #: src/psf/plugin.cc:270 msgid "OpenPSF Configuration" -msgstr "" +msgstr "Configuração do OpenPSF" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Ignorar duração do ficheiro" @@ -3068,11 +2892,11 @@ #: src/pulse/pulse_audio.cc:72 msgid "Context name:" -msgstr "" +msgstr "Nome do contexto:" #: src/pulse/pulse_audio.cc:74 msgid "Stream name:" -msgstr "" +msgstr "Nome do stream:" #: src/pulse/pulse_audio.cc:575 msgid "" @@ -3139,12 +2963,21 @@ "\n" "License: GPLv2+" msgstr "" +"Analisador de Espectro OpenGL para Audacious\n" +"Copyright 2013 Christophe Budé, John Lindgren, e Carlo Bramini\n" +"Copyright 2014, 2020 Ariadne Conill\n" +"\n" +"Baseado no plugin XMMS:\n" +"Copyright 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, e " +"4Front \n" +"\n" +"Licença: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." -msgstr "" +msgstr "Prima uma combinação de teclas dentro de um campo de texto." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3159,6 +2992,19 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Plugin Global Hotkey\n" +"Controla o reprodutor com combinações de teclas globais ou teclas " +"multimídia.\n" +"\n" +"Copyright (C) 2020 i.Dark_Templar \n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Os colaboradores incluem:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +"Bryn Davies ,\n" +"Jonathan A. Davis ,\n" +"Jeremy Tan " #: src/qtui/menus.cc:109 msgid "_Open Folder ..." @@ -3180,12 +3026,16 @@ msgid "Audio Settings ..." msgstr "Definições áudio..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" -msgstr "" +msgstr "Q#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" +msgstr "F#" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" msgstr "" #: src/qtui/qtui.cc:40 @@ -3198,23 +3048,23 @@ #: src/qtui/settings.cc:58 msgid "Always" -msgstr "" +msgstr "Sempre" #: src/qtui/settings.cc:59 msgid "Auto-hide" -msgstr "" +msgstr "Ocultar automaticamente" #: src/qtui/settings.cc:60 msgid "Never" -msgstr "" +msgstr "Nunca" #: src/qtui/settings.cc:64 msgid "Show playlist tabs:" -msgstr "" +msgstr "Mostrar guias da lista de reprodução:" #: src/qtui/settings.cc:78 msgid "Use bold font for column headers" -msgstr "" +msgstr "Usar tipo de letra em negrito nos cabeçalhos de coluna" #: src/resample/resample.cc:43 msgid "Sample Rate Converter" @@ -3406,38 +3256,39 @@ msgid "Library" msgstr "Coleção" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d faixa" msgstr[1] "%d faixas" +msgstr[2] "%d faixas" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "deste género" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "em" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "por" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Número de resultados a mostrar:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Analisar coleção ao iniciar" #: src/search-tool-qt/search-tool-qt.cc:170 msgid "Monitor library for changes" -msgstr "" +msgstr "Monitorizar biblioteca quanto a alterações" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3445,37 +3296,39 @@ "Para importar a coleção de músicas para o Audacious, escolha a pasta e " "clique no ícone \"Atualizar\"." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Aguarde..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Escolha a pasta" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Procurar coleção" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "Mostrado %d de %d resultado" msgstr[1] "Mostrados %d de %d resultados" +msgstr[2] "Mostrados %d de %d resultados" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d resultado" msgstr[1] "%d resultados" +msgstr[2] "%d resultados" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Criar lista de reprodução" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Adicionar à lista de reprodução" @@ -3579,108 +3432,108 @@ msgid "Repeat point B set." msgstr "Ponto de repetição B definido" -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Amplificador" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Equalizador do Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Gravação ativa" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Gravação inativa" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Ir para %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Volume: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Equilíbrio: %d%% à esquerda" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Equilíbrio: centro" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Equilíbrio: %d%% à direita" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Menu de opções" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Desativar \"Sempre visível\"" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Ativar \"Sempre visível\"" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Caixa de informações de ficheiro" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Tamanho duplo" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Visualizações" @@ -3704,10 +3557,6 @@ msgid "Open URL ..." msgstr "Abrir URL..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Reprodução" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Lista de reprodução" @@ -3722,7 +3571,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Serviços" @@ -3739,7 +3588,7 @@ msgstr "Sair" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Informações da faixa..." @@ -3759,7 +3608,7 @@ msgid "Clear A-B Repeat" msgstr "Remover repetição A-B" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Ir para a faixa..." @@ -3852,20 +3701,20 @@ msgstr "Adicionar ficheiros..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Por título" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Por nome de ficheiro" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Por caminho" @@ -3893,113 +3742,113 @@ msgid "Remove Selected" msgstr "Remover seleção" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Procurar e selecionar" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Inverter seleção" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Não selecionar" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Selecionar tudo" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Por número de faixa" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Por artista" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Por álbum" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Por artista do álbum" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Por data de lançamento" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Por género" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Por duração" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Por título personalizado" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Por comentário" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Lista aleatória" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Inverter lista" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Organizar seleção" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Ordenação" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Abrir pasta respetiva" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Cortar" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Copiar" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Colar" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Colar no final" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Colocar/retirar da fila" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d de %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Editor de listas de reprodução" @@ -4015,167 +3864,219 @@ msgid "Add Folder ..." msgstr "Adicionar pasta..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Procurar entradas na lista de reprodução ativa" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Seleciona as entradas da lista de reprodução, preenchendo um ou mais campos. " +"Os campos utilizam expressões regulares, sem distinção entre maiúsculas e " +"minúsculas. Se não sabe o que são expressões regulares, basta inserir uma " +"parte do que pretende procurar." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Título:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Álbum: " + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Artista: " + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Nome de ficheiro:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Limpar seleção anterior antes de procurar" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Alternar fila automaticamente para as entradas coincidentes" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Criar lista de reprodução com as entradas coincidentes" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Procura" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Reprodutor:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Selecione o tipo de letra do reprodutor:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Lista de reprodução:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Escolha o tipo de letra da lista de reprodução:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Tema" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Tipos de letra" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Utilizar letras bitmap (só para ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Deslocar título da faixa" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Deslocar título em ambas as direções" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analisador" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Scope" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Voiceprint/Medidor VU" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Desligado" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normal" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Fogo" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Linhas verticais" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Linhas" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Barras" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Mais lento" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Lento" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Normal" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Rápido" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Mais rápido" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Pontos" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Linha" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Sólido" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Gelo" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Suave" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Coloração:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Estilo:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Recurso:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Recurso de picos:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Estilo de scope:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Coloração Voiceprint:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "Estilo do medidor VU:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Tipo" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Tipo de visualização:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analisador" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Mostrar picos" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Visualização" @@ -4187,59 +4088,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Tema Winamp 2.x não arquivado" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Procurar entradas na lista de reprodução ativa" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Procura" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Seleciona as entradas da lista de reprodução, preenchendo um ou mais campos. " -"Os campos utilizam expressões regulares, sem distinção entre maiúsculas e " -"minúsculas. Se não sabe o que são expressões regulares, basta inserir uma " -"parte do que pretende procurar." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Título:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Álbum: " - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Artista: " - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Nome de ficheiro:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Limpar seleção anterior antes de procurar" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Alternar fila automaticamente para as entradas coincidentes" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Criar lista de reprodução com as entradas coincidentes" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Suplemento Sndfile" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4555,39 +4408,39 @@ #: src/streamtuner/icecast-model.cc:126 src/streamtuner/shoutcast-model.cc:131 msgid "Type" -msgstr "" +msgstr "Tipo" #: src/streamtuner/icecast-model.cc:132 msgid "Current Song" -msgstr "" +msgstr "Música atual" #: src/streamtuner/icecast-model.cc:164 msgid "Other" -msgstr "" +msgstr "Outro" #: src/streamtuner/ihr-model.cc:63 msgid "Market" -msgstr "" +msgstr "Mercado" #: src/streamtuner/ihr-model.cc:156 msgid "Call Letters" -msgstr "" +msgstr "Indicativo" #: src/streamtuner/ihr-model.cc:162 msgid "Description" -msgstr "" +msgstr "Descrição" #: src/streamtuner/shoutcast-model.cc:128 msgid "Listeners" -msgstr "" +msgstr "Ouvintes" #: src/streamtuner/shoutcast-model.cc:188 msgid "Top 500 Stations" -msgstr "" +msgstr "Estações do Top 500" #: src/streamtuner/shoutcast-model.cc:189 msgid "Alternative" -msgstr "" +msgstr "Alternativa" #: src/streamtuner/shoutcast-model.cc:190 msgid "Blues" @@ -4603,7 +4456,7 @@ #: src/streamtuner/shoutcast-model.cc:193 msgid "Decades" -msgstr "" +msgstr "Décadas" #: src/streamtuner/shoutcast-model.cc:194 msgid "Easy Listening" @@ -4611,7 +4464,7 @@ #: src/streamtuner/shoutcast-model.cc:195 msgid "Electronic" -msgstr "" +msgstr "Electrónica" #: src/streamtuner/shoutcast-model.cc:196 msgid "Folk" @@ -4619,11 +4472,11 @@ #: src/streamtuner/shoutcast-model.cc:197 msgid "Inspirational" -msgstr "" +msgstr "Inspiracional" #: src/streamtuner/shoutcast-model.cc:198 msgid "International" -msgstr "" +msgstr "Internacional" #: src/streamtuner/shoutcast-model.cc:199 msgid "Jazz" @@ -4631,7 +4484,7 @@ #: src/streamtuner/shoutcast-model.cc:200 msgid "Latin" -msgstr "" +msgstr "Latina" #: src/streamtuner/shoutcast-model.cc:201 msgid "Metal" @@ -4647,11 +4500,11 @@ #: src/streamtuner/shoutcast-model.cc:205 msgid "Public Radio" -msgstr "" +msgstr "Rádio Pública" #: src/streamtuner/shoutcast-model.cc:206 msgid "R&B and Urban" -msgstr "" +msgstr "R&B e Urbana" #: src/streamtuner/shoutcast-model.cc:207 msgid "Rap" @@ -4667,31 +4520,31 @@ #: src/streamtuner/shoutcast-model.cc:210 msgid "Seasonal and Holiday" -msgstr "" +msgstr "Sazonais e Férias" #: src/streamtuner/shoutcast-model.cc:211 msgid "Soundtracks" -msgstr "" +msgstr "Bandas sonoras" #: src/streamtuner/shoutcast-model.cc:212 msgid "Talk" -msgstr "" +msgstr "Talk" #: src/streamtuner/shoutcast-model.cc:213 msgid "Themes" -msgstr "" +msgstr "Temas" #: src/streamtuner/streamtuner.cc:59 msgid "Shoutcast" -msgstr "" +msgstr "Shoutcast" #: src/streamtuner/streamtuner.cc:60 msgid "Icecast" -msgstr "" +msgstr "Icecast" #: src/streamtuner/streamtuner.cc:71 msgid "Stream Tuner" -msgstr "" +msgstr "Stream Tuner" #: src/tonegen/tonegen.cc:45 msgid "Tone Generator" @@ -4722,19 +4575,32 @@ "exemplo: tone://2000;2005 para reproduzir um tom de 2000 Hz e outro de 2005 " "Hz" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Foram ocultas algumas mensagens.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Execução..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Informações" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Remoção de voz" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4827,30 +4693,32 @@ "VU Meter Plugin for Audacious\n" "Copyright 2017-2019 Marc Sánchez Fauste" msgstr "" +"Plugin Medidor de VU para Audacious\n" +"Copyright 2017-2019 Marc Sánchez Fauste" #: src/vumeter-qt/vumeter_qt.cc:35 msgid "VU Meter Settings" -msgstr "" +msgstr "Configurações do medidor VU" #: src/vumeter-qt/vumeter_qt.cc:37 msgid "Peak hold time:" -msgstr "" +msgstr "Tempo de espera de pico:" #: src/vumeter-qt/vumeter_qt.cc:42 msgid "Fall-off time:" -msgstr "" +msgstr "Tempo de queda:" #: src/vumeter-qt/vumeter_qt.cc:44 msgid "dB/second" -msgstr "" +msgstr "dB/segundo" #: src/vumeter-qt/vumeter_qt.cc:46 msgid "Display legend" -msgstr "" +msgstr "Mostrar legenda" #: src/vumeter-qt/vumeter_qt.h:37 msgid "VU Meter" -msgstr "" +msgstr "Medidor de VU" #: src/waveout/waveout.cc:43 msgid "Win32 waveOut" @@ -4886,14 +4754,38 @@ "\n" "Parte do código foi desenvolvido por Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "Descodificador 2SF" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "Configuração XSF" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "Listas de reprodução XML Shareable (XSPF)" diff -Nru audacious-plugins-4.1/po/ro.po audacious-plugins-4.3.1/po/ro.po --- audacious-plugins-4.1/po/ro.po 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/po/ro.po 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,4567 @@ +# Romanian translation for Audacious Plugins +# Copyright (C) Audacious translators +# This file is distributed under the same license as the Audacious Plugins package. +# +# Translators: +# 3d5ab56b1b83fefceeab671c39a98a6d_999ae54, 2014 +# Cristi , 2007 +# Emil Ungurean , 2014 +# Marie J, 2022 +# Mihai Michael, 2022 +# xyz32 , 2013 +# Warui-chan <>, 2012 +msgid "" +msgstr "" +"Project-Id-Version: Audacious Plugins\n" +"Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Mihai Michael, 2022\n" +"Language-Team: Romanian (http://www.transifex.com/audacious/audacious/" +"language/ro/)\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" + +#: src/aac/aac.cc:19 +msgid "AAC (Raw) Decoder" +msgstr "AAC (Raw) Decodor" + +#: src/adplug/adplug-xmms.cc:70 +msgid "AdPlug (AdLib Player)" +msgstr "AdPlug (AdLib Player)" + +#: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 +msgid "sequenced" +msgstr "eşalonat" + +#: src/adplug/adplug-xmms.cc:349 src/sid/xs_config.cc:61 +msgid "Output" +msgstr "Ieșire" + +#: src/adplug/adplug-xmms.cc:350 +msgid "OPL Emulator:" +msgstr "Emulator OPL:" + +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Rată de eșantionare:" + +#: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 +#: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 +#: src/modplug/plugin_main.cc:77 src/resample/resample.cc:201 +#: src/resample/resample.cc:207 src/resample/resample.cc:211 +#: src/resample/resample.cc:215 src/resample/resample.cc:219 +#: src/resample/resample.cc:223 src/resample/resample.cc:227 +#: src/resample/resample.cc:231 src/resample/resample.cc:235 +#: src/resample/resample.cc:239 src/resample/resample.cc:243 +#: src/sid/xs_config.cc:67 src/soxr/sox-resampler.cc:205 +msgid "Hz" +msgstr "Hz" + +#: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 +#: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 +msgid "Miscellaneous" +msgstr "Diverse" + +#: src/adplug/adplug-xmms.cc:356 +msgid "Repeat song in endless loop" +msgstr "Repeta melodia într-o buclă infinită" + +#: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 +msgid "Album Art" +msgstr "Album Art" + +#: src/alsa/alsa.h:64 +msgid "ALSA Output" +msgstr "ALSA Output" + +#: src/alsa/config.cc:28 +msgid "" +"ALSA Output Plugin for Audacious\n" +"Copyright 2009-2012 John Lindgren\n" +"\n" +"My thanks to William Pitcock, author of the ALSA Output Plugin NG, whose " +"code served as a reference when the ALSA manual was not enough." +msgstr "" +"ALSA Output Plugin for Audacious\n" +"Copyright 2009-2012 John Lindgren\n" +"\n" +"Multe mulțumiri lui William Pitcock, autorul ALSA Output Plugin NG, al cărui " +"cod sursă a servit ca și referință când ALSA nu a fost îndeajuns." + +#: src/alsa/config.cc:61 +msgid "(no description)" +msgstr "(fără descriere)" + +#: src/alsa/config.cc:166 +msgid "Default PCM device" +msgstr "Dispozitiv PCM implicit" + +#: src/alsa/config.cc:188 +msgid "Default mixer device" +msgstr "Dispozitiv de mixare implicit" + +#: src/alsa/config.cc:296 +msgid "PCM device:" +msgstr "Dispozitiv PCM:" + +#: src/alsa/config.cc:299 +msgid "Mixer device:" +msgstr "Dispozitiv mixer:" + +#: src/alsa/config.cc:302 +msgid "Mixer element:" +msgstr "Element de mixat:" + +#: src/amidiplug/amidi-plug.cc:42 +msgid "AMIDI-Plug (MIDI Player)" +msgstr "AMIDI-Plug (Player MIDI)" + +#: src/amidiplug/amidi-plug.cc:445 +msgid "" +"AMIDI-Plug\n" +"modular MIDI music player\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"written by Giacomo Lozito\n" +"\n" +"\n" +"special thanks to...\n" +"\n" +"Clemens Ladisch and Jaroslav Kysela\n" +"for their cool programs aplaymidi and amixer; those\n" +"were really useful, along with alsa-lib docs, in order\n" +"to learn more about the ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"for the nice midi keyboard logo\n" +"\n" +"Tony Vroon\n" +"for the good help with alpha testing" +msgstr "" +"AMIDI-Plug\n" +"MIDI player muzical modular\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"scris de Giacomo Lozito\n" +"\n" +"\n" +"multumiri speciale către...\n" +"\n" +"Clemens Ladisch și Jaroslav Kysela\n" +"pentru programele lor cool aplaymidi și amixer; acestea\n" +"au fost extrem de folositoare, împreună cu alsa-lib docs, pentru\n" +"a învăța mai multe despre ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"pentru logoul frumos cu a clapă midi\n" +"\n" +"Tony Vroon\n" +"pentru bunul ajutor oferit cu testarea veriunii alpha" + +#: src/amidiplug/i_configure.cc:94 +msgid "Override default gain:" +msgstr "Suprascrie gain implicit:" + +#: src/amidiplug/i_configure.cc:102 +msgid "Override default polyphony:" +msgstr "Suprascrie polyfonia implicită" + +#: src/amidiplug/i_configure.cc:110 +msgid "Override default reverb:" +msgstr "Suprascrie reverberaţia implicită" + +#: src/amidiplug/i_configure.cc:112 src/amidiplug/i_configure.cc:120 +msgid "On" +msgstr "Pornit" + +#: src/amidiplug/i_configure.cc:118 +msgid "Override default chorus:" +msgstr "Suprascrie chorus implicit:" + +#: src/amidiplug/i_configure.cc:128 src/console/plugin.cc:29 +msgid "Playback" +msgstr "Redare" + +#: src/amidiplug/i_configure.cc:129 +msgid "Transpose:" +msgstr "Transpune:" + +#: src/amidiplug/i_configure.cc:131 src/speedpitch/speed-pitch.cc:257 +msgid "semitones" +msgstr "semitonuri" + +#: src/amidiplug/i_configure.cc:132 +msgid "Drum shift:" +msgstr "Drum shift:" + +#: src/amidiplug/i_configure.cc:134 +msgid "note numbers" +msgstr "Numere în loc de note muzicale" + +#: src/amidiplug/i_configure.cc:135 +msgid "Skip leading silence" +msgstr "Sari peste liniștea de la început" + +#: src/amidiplug/i_configure.cc:137 +msgid "Skip trailing silence" +msgstr "Sari peste liniștea de la final" + +#: src/amidiplug/i_configure.cc:141 +msgid "SoundFont" +msgstr "SoundFont" + +#: src/amidiplug/i_configure.cc:148 +msgid "Synthesizer" +msgstr "Sintetizator" + +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 +msgid "AMIDI-Plug - select SoundFont file" +msgstr "AMIDI-Plug - Selectaţi fişierul SoundFont" + +#: src/amidiplug/i_configure-fluidsynth.cc:61 +msgid "_Cancel" +msgstr "_Anulează" + +#: src/amidiplug/i_configure-fluidsynth.cc:62 +msgid "_Open" +msgstr "_Deschide" + +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 +msgid "File name" +msgstr "Nume fișier" + +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 +msgid "Size (bytes)" +msgstr "Mărime (octeti)" + +#: src/amidiplug/i_fileinfo.cc:184 +msgid "Name:" +msgstr "Nume:" + +#: src/amidiplug/i_fileinfo.cc:202 +msgid " MIDI Info " +msgstr " Informații MIDI " + +#: src/amidiplug/i_fileinfo.cc:216 +msgid "Format:" +msgstr "Format:" + +#: src/amidiplug/i_fileinfo.cc:219 +msgid "Length (msec):" +msgstr "Lungime (msec):" + +#: src/amidiplug/i_fileinfo.cc:222 +msgid "No. of Tracks:" +msgstr "Numărul de piste:" + +#: src/amidiplug/i_fileinfo.cc:228 +msgid "variable" +msgstr "variabil" + +#: src/amidiplug/i_fileinfo.cc:230 +msgid "BPM:" +msgstr "BPM:" + +#: src/amidiplug/i_fileinfo.cc:238 +msgid "BPM (wavg):" +msgstr "BPM (wavg):" + +#: src/amidiplug/i_fileinfo.cc:241 +msgid "Time Div:" +msgstr "Diviziunea timpului:" + +#: src/amidiplug/i_fileinfo.cc:252 +msgid " MIDI Comments and Lyrics " +msgstr " Comentarii şi versuri MIDI " + +#: src/amidiplug/i_fileinfo.cc:299 +msgid "* no comments available in this MIDI file *" +msgstr "* nici un comentariu disponibil în acest fişier MIDI *" + +#: src/amidiplug/i_fileinfo.cc:311 +msgid "* no lyrics available in this MIDI file *" +msgstr "* versuri ne-disponibile în acest fişier MIDI *" + +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 +msgid "_Close" +msgstr "_Închide" + +#: src/amidiplug/i_fileinfo.cc:346 +msgid " (invalid UTF-8)" +msgstr " (invalid UTF-8)" + +#: src/ampache/ampache.cc:33 +msgid "Ampache Browser" +msgstr "Browser Ampache" + +#: src/ampache/ampache.cc:46 +msgid "" +"Ampache Browser for Audacious\n" +"http://ampache-browser.org/\n" +"\n" +"Copyright (C) Róbert Čerňanský and John Lindgren\n" +"License: GNU GPLv3" +msgstr "" +"Ampache Browser pentru Audacious\n" +"http://ampache-browser.org/\n" +"\n" +"Drepturi de autor (C) Róbert Čerňanský și John Lindgren\n" +"Licență: GNU GPLv3" + +#: src/aosd/aosd.cc:31 +msgid "" +"Audacious OSD\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"\n" +"Written by Giacomo Lozito \n" +"\n" +"Based in part on Evan Martin's Ghosd library:\n" +"http://neugierig.org/software/ghosd/" +msgstr "" +"Audacious OSD\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"\n" +"Scris de Giacomo Lozito \n" +"\n" +"PArțial bazat pe librăria Evan Martin's Ghosd:\n" +"http://neugierig.org/software/ghosd/" + +#: src/aosd/aosd.h:37 +msgid "AOSD (On-Screen Display)" +msgstr "AOSD (On-Screen Display)" + +#: src/aosd/aosd_style.cc:54 +msgid "Rectangle" +msgstr "Dreptunghi" + +#: src/aosd/aosd_style.cc:59 +msgid "Rounded Rectangle" +msgstr "Dreptunghi rotunjit" + +#: src/aosd/aosd_style.cc:64 +msgid "Concave Rectangle" +msgstr "Dreptunghi concav" + +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 +msgid "None" +msgstr "Nici unul" + +#: src/aosd/aosd_trigger.cc:49 +msgid "Playback Start" +msgstr "Start redare" + +#: src/aosd/aosd_trigger.cc:50 +msgid "Triggers OSD when a playlist entry is played." +msgstr "Pornește afișajul OSD în momentul redării" + +#: src/aosd/aosd_trigger.cc:55 +msgid "Title Change" +msgstr "Schimbare Titlu" + +#: src/aosd/aosd_trigger.cc:56 +msgid "Triggers OSD when the song title changes (for internet streams)." +msgstr "" +"Pornește afișajul OSD în momentul schimbării titlului (pentru stream-uri de " +"pe internet)." + +#: src/aosd/aosd_trigger.cc:61 +msgid "Pause On" +msgstr "Pornește pauza" + +#: src/aosd/aosd_trigger.cc:62 +msgid "Triggers OSD when playback is paused." +msgstr "Pornește afișajul OSD când se pune pauză." + +#: src/aosd/aosd_trigger.cc:67 +msgid "Pause Off" +msgstr "Oprește pauza" + +#: src/aosd/aosd_trigger.cc:68 +msgid "Triggers OSD when playback is unpaused." +msgstr "Pornește afișajul OSD când redarea este repornită" + +#: src/aosd/aosd_ui.cc:204 +msgid "Placement" +msgstr "Pozitionare" + +#: src/aosd/aosd_ui.cc:241 +msgid "Relative X offset:" +msgstr "Decalajul relativ pe axa X:" + +#: src/aosd/aosd_ui.cc:245 +msgid "Relative Y offset:" +msgstr "Decalajul relativ pe axa Y:" + +#: src/aosd/aosd_ui.cc:249 +msgid "Max OSD width:" +msgstr "Lungimea maximă a afișajului OSD:" + +#: src/aosd/aosd_ui.cc:281 +msgid "Multi-Monitor options" +msgstr "Opțiuni multi pentru mai multe monitoare" + +#: src/aosd/aosd_ui.cc:285 +msgid "Display OSD using:" +msgstr "Afișajul OSD folosind:" + +#: src/aosd/aosd_ui.cc:287 +msgid "all monitors" +msgstr "tote monitoarele" + +#: src/aosd/aosd_ui.cc:290 +#, c-format +msgid "monitor %i" +msgstr "monitor %i" + +#: src/aosd/aosd_ui.cc:342 +msgid "Timing (ms)" +msgstr "Sincronizare (ms)" + +#: src/aosd/aosd_ui.cc:347 +msgid "Display:" +msgstr "Ecran:" + +#: src/aosd/aosd_ui.cc:352 +msgid "Fade in:" +msgstr "Fade in:" + +#: src/aosd/aosd_ui.cc:357 +msgid "Fade out:" +msgstr "Fade out:" + +#: src/aosd/aosd_ui.cc:442 +msgid "Fonts" +msgstr "Fonturi" + +#: src/aosd/aosd_ui.cc:449 +#, c-format +msgid "Font %i:" +msgstr "Fonturi %i:" + +#: src/aosd/aosd_ui.cc:466 +msgid "Shadow" +msgstr "umbră" + +#: src/aosd/aosd_ui.cc:589 +msgid "Render Style" +msgstr "Stil de randare" + +#: src/aosd/aosd_ui.cc:605 +msgid "Colors" +msgstr "Culori" + +#: src/aosd/aosd_ui.cc:616 +#, c-format +msgid "Color %i:" +msgstr "Culoare %i:" + +#: src/aosd/aosd_ui.cc:714 +msgid "Enable trigger" +msgstr "Metoda de declanșare" + +#: src/aosd/aosd_ui.cc:741 +msgid "Event" +msgstr "Eveniment" + +#: src/aosd/aosd_ui.cc:768 +msgid "Composite manager detected" +msgstr "Manager compozit detectat" + +#: src/aosd/aosd_ui.cc:775 +msgid "" +"Composite manager not detected;\n" +"unless you know that you have one running, please activate a composite " +"manager otherwise the OSD won't work properly" +msgstr "" +"Managerul compozit nu a fost găsit;\n" +"dacă știi că nu ai un manager compozit pornit; te rugăm să activezi un " +"manager compozit, altfel afișajul OSD nu va funcționa corect" + +#: src/aosd/aosd_ui.cc:783 +msgid "Composite manager not required for fake transparency" +msgstr "" +"Managerul compozit nu este necesar pentru efectul de transparență falsă" + +#: src/aosd/aosd_ui.cc:820 +msgid "Transparency" +msgstr "Transparenţă" + +#: src/aosd/aosd_ui.cc:826 +msgid "Fake transparency" +msgstr "Transparenţă falsă" + +#: src/aosd/aosd_ui.cc:828 +msgid "Real transparency (requires X Composite Ext.)" +msgstr "Transparenţă reală (necesita Extensia X Composite)" + +#: src/aosd/aosd_ui.cc:875 +msgid "Composite extension not loaded" +msgstr "Extensia composită nu a fost încărcată" + +#: src/aosd/aosd_ui.cc:892 +#, c-format +msgid "Audacious OSD" +msgstr "Audacious OSD" + +#: src/aosd/aosd_ui.cc:955 +msgid "Position" +msgstr "Poziţie" + +#: src/aosd/aosd_ui.cc:960 +msgid "Animation" +msgstr "Animaţie" + +#: src/aosd/aosd_ui.cc:965 +msgid "Text" +msgstr "Text" + +#: src/aosd/aosd_ui.cc:970 +msgid "Decoration" +msgstr "Decoraţii" + +#: src/aosd/aosd_ui.cc:975 +msgid "Trigger" +msgstr "Declanşator" + +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 +msgid "Misc" +msgstr "Diverse" + +#: src/aosd/aosd_ui.cc:989 +msgid "Test" +msgstr "Test" + +#: src/asx3/asx3.cc:35 +msgid "ASXv3 Playlists" +msgstr "Playlisturi ASXv3" + +#: src/asx/asx.cc:33 +msgid "ASXv1/ASXv2 Playlists" +msgstr "Playlisturi ASXv1/ASXv2" + +#: src/audpl/audpl.cc:33 +msgid "Audacious Playlists (audpl)" +msgstr "Playlisturi Audacious (audpl)" + +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Rezoluție:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Rație de subeșantionare:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 +msgid "Color" +msgstr "Culoare" + +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 +msgid "Blur Scope" +msgstr "Ecran încețoșat" + +#: src/bs2b/plugin.cc:38 +msgid "Bauer Stereophonic-to-Binaural (BS2B)" +msgstr "Bauer Stereofonic-la-Binaural (BS2B)" + +#: src/bs2b/plugin.cc:129 +msgid "Presets:" +msgstr "Presetări:" + +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Implicit" + +#: src/bs2b/plugin.cc:136 +msgid "Feed level:" +msgstr "Nivelul de intrare" + +#: src/bs2b/plugin.cc:138 +msgid "x1/10 dB" +msgstr "x1/10 dB" + +#: src/bs2b/plugin.cc:139 +msgid "Cut frequency:" +msgstr "Frecvența de tăiere:" + +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 +msgid "Spectrum Analyzer" +msgstr "Analizor de spectru" + +#: src/cdaudio/cdaudio-ng.cc:71 +msgid "Audio CD Plugin" +msgstr "Plugin pentru CD audio" + +#: src/cdaudio/cdaudio-ng.cc:118 +msgid "" +"Copyright (C) 2007-2012 Calin Crisan and others.\n" +"\n" +"Many thanks to libcdio developers \n" +"and to libcddb developers .\n" +"\n" +"Also thank you to Tony Vroon for mentoring and guiding me.\n" +"\n" +"This was a Google Summer of Code 2007 project." +msgstr "" +"Copyright (C) 2007-2012 Calin Crisan și alții.\n" +"\n" +"Multe mulțumiri dezvoltatorilor libcdio \n" +"și dezvoltatorilor libcddb .\n" +"\n" +"De asemenea mulțumesc lui Tony Vroon pentru mentoratul și gidajul oferit.\n" +"\n" +"Acesta a fost un proiect Google Summer of Code din 2007." + +#: src/cdaudio/cdaudio-ng.cc:134 +msgid "Device" +msgstr "Dispozitiv" + +#: src/cdaudio/cdaudio-ng.cc:135 +msgid "Read speed:" +msgstr "Viteză de citire:" + +#: src/cdaudio/cdaudio-ng.cc:138 +msgid "Override device:" +msgstr "Suprascrie dispozitivul:" + +#: src/cdaudio/cdaudio-ng.cc:140 +msgid "Metadata" +msgstr "Metadata" + +#: src/cdaudio/cdaudio-ng.cc:141 +msgid "Use CD-Text" +msgstr "Folosește textul din CD" + +#: src/cdaudio/cdaudio-ng.cc:143 +msgid "Use CDDB" +msgstr "Folosește CDDB" + +#: src/cdaudio/cdaudio-ng.cc:145 +msgid "Use HTTP instead of CDDBP" +msgstr "Folosește HTTP în locul CDDBP" + +#: src/cdaudio/cdaudio-ng.cc:148 +msgid "Server:" +msgstr "Server:" + +#: src/cdaudio/cdaudio-ng.cc:152 +msgid "Path:" +msgstr "Cale:" + +#: src/cdaudio/cdaudio-ng.cc:156 +msgid "Port:" +msgstr "Port:" + +#: src/cdaudio/cdaudio-ng.cc:220 +msgid "Failed to initialize cdio subsystem." +msgstr "Nu s-a putut inițializa subsistemul cdio." + +#: src/cdaudio/cdaudio-ng.cc:250 +#, c-format +msgid "Invalid URI %s." +msgstr "URI invalid %s." + +#: src/cdaudio/cdaudio-ng.cc:252 +#, c-format +msgid "Track %d not found." +msgstr "Piesa %d nu a fost găsită." + +#: src/cdaudio/cdaudio-ng.cc:254 +#, c-format +msgid "Track %d is a data track." +msgstr "Piesa %d este o piesă cu date." + +#: src/cdaudio/cdaudio-ng.cc:329 +msgid "Error reading audio CD." +msgstr "Eroare citire CD audio." + +#: src/cdaudio/cdaudio-ng.cc:398 +msgid "Audio CD" +msgstr "Audio CD" + +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 +#, c-format +msgid "Failed to open CD device %s." +msgstr "Nu s-a putut deschide unitatea CD %s." + +#: src/cdaudio/cdaudio-ng.cc:446 +msgid "No audio capable CD drive found." +msgstr "Nu a fost găsită unitatea CD cu capabilități audio." + +#: src/cdaudio/cdaudio-ng.cc:469 +msgid "Drive is empty." +msgstr "Unitatea este goală." + +#: src/cdaudio/cdaudio-ng.cc:471 +msgid "Unsupported disk type." +msgstr "Tipul de disc nu este suportat." + +#: src/cdaudio/cdaudio-ng.cc:495 +msgid "Failed to finish initializing opened CD drive." +msgstr "Nu s-a putut finaliza inițializarea unitatea CD deschisă." + +#: src/cdaudio/cdaudio-ng.cc:508 +msgid "Failed to retrieve first/last track number." +msgstr "Nu s-au putut obține numerele de ordine aferente pieselor. " + +#: src/cdaudio/cdaudio-ng.cc:529 +#, c-format +msgid "Cannot read start/end LSN for track %d." +msgstr "Nu se poate citi începutul și/sau sfârșitul LSN pentru piesa %d." + +#: src/cdaudio/cdaudio-ng.cc:611 +msgid "Failed to create the CDDB connection." +msgstr "Nu s-a putut creea conexiunea CDDB." + +#: src/cdaudio/cdaudio-ng.cc:677 +msgid "Failed to query the CDDB server" +msgstr "Nu s-a putut interoga serverul CDDB" + +#: src/cdaudio/cdaudio-ng.cc:679 +#, c-format +msgid "Failed to query the CDDB server: %s" +msgstr "Nu s-a putut interoga serverul CDDB: %s" + +#: src/cdaudio/cdaudio-ng.cc:703 +#, c-format +msgid "Failed to read the CDDB info: %s" +msgstr "Nu s-au putut citi informațiile CDDB: %s" + +#: src/cd-menu-items/cd-menu-items.cc:33 +msgid "Audio CD Menu Items" +msgstr "Elemente din meniul CD-ului audio" + +#: src/cd-menu-items/cd-menu-items.cc:45 +msgid "Pla_y CD" +msgstr "Redă CD" + +#: src/cd-menu-items/cd-menu-items.cc:45 +msgid "_Add CD" +msgstr "Adaugă CD" + +#: src/compressor/compressor.cc:45 +msgid "Compression" +msgstr "Compresie" + +#: src/compressor/compressor.cc:46 +msgid "Center volume:" +msgstr "Centrul volumului:" + +#: src/compressor/compressor.cc:49 +msgid "Dynamic range:" +msgstr "Interval dinamic:" + +#: src/compressor/compressor.cc:57 +msgid "" +"Dynamic Range Compression Plugin for Audacious\n" +"Copyright 2010-2014 John Lindgren" +msgstr "" +"Dynamic Range Compression Plugin pentru Audacious\n" +"Drepturi de autor 2010-2014 John Lindgren" + +#: src/compressor/compressor.cc:64 +msgid "Dynamic Range Compressor" +msgstr "Compresor interval dinamic" + +#: src/console/plugin.cc:15 +msgid "" +"Console music decoder engine based on Game_Music_Emu 0.5.2\n" +"Supported formats: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"\n" +"Audacious plugin by:\n" +"William Pitcock \n" +"Shay Green " +msgstr "" +"Decodor de muzică bazat pe Game_Music_Emu 0.5.2\n" +"Formate suportate: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"\n" +"Plugin Audacious de:\n" +"William Pitcock \n" +"Shay Green " + +#: src/console/plugin.cc:30 +msgid "Bass:" +msgstr "Bass:" + +#: src/console/plugin.cc:33 +msgid "Treble:" +msgstr "Inalte:" + +#: src/console/plugin.cc:36 +msgid "Echo:" +msgstr "Ecou:" + +#: src/console/plugin.cc:39 +msgid "Default song length:" +msgstr "Lungimea implicită a melodiei:" + +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "secunde" + +#: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 +msgid "Resampling" +msgstr "Reeșantionare" + +#: src/console/plugin.cc:43 +msgid "Enable audio resampling" +msgstr "Activează reeșantionarea audio" + +#: src/console/plugin.cc:49 +msgid "SPC" +msgstr "SPC" + +#: src/console/plugin.cc:50 +msgid "Ignore length from SPC tags" +msgstr "Ignoră lungimea din etichetele SPC" + +#: src/console/plugin.cc:52 +msgid "Increase reverb" +msgstr "Măreşte reverbul" + +#: src/console/plugin.h:26 +msgid "Game Console Music Decoder" +msgstr "Game Console Music Decoder" + +#: src/coreaudio/coreaudio.cc:53 +msgid "CoreAudio output" +msgstr "Ieșirea CoreAudio" + +#: src/coreaudio/coreaudio.cc:155 +msgid "" +"CoreAudio Output Plugin for Audacious\n" +"Copyright 2014 William Pitcock\n" +"Copyright 2017,18 René J.V. Bertin\n" +" (original code and code adapted from\n" +" Apple examples, (C) Apple 2013)\n" +"\n" +"Based on SDL Output Plugin for Audacious\n" +"Copyright 2010 John Lindgren" +msgstr "" +"CoreAudio Output Plugin pentru Audacious\n" +"Drepturi de autor 2014 William Pitcock\n" +"Drepturi de autor 2017,18 René J.V. Bertin\n" +" (codul original și codul adaptat din\n" +" exemplele provenite de la Apple, (C) Apple 2013)\n" +"\n" +"Bazat pe SDL Output Plugin pentru Audacious\n" +"Drepturi de autor 2010 John Lindgren" + +#: src/coreaudio/coreaudio.cc:171 +msgid "Use exclusive mode" +msgstr "Folosește modul exclusiv" + +#: src/coreaudio/coreaudio.cc:173 +msgid "Use bit perfect audio (adapt device sampling rate)" +msgstr "Folosește numărul de biți ideali (adaptează rata de eșantionare)" + +#: src/crossfade/crossfade.cc:43 +msgid "" +"Crossfade Plugin for Audacious\n" +"Copyright 2010-2014 John Lindgren" +msgstr "" +"Crossfade Plugin pentru Audacious\n" +"Drepturi de autor 2010-2014 John Lindgren" + +#: src/crossfade/crossfade.cc:47 +msgid "Crossfade" +msgstr "Crossfade" + +#: src/crossfade/crossfade.cc:48 +msgid "On automatic song change" +msgstr "La schimbarea automată a melodiei" + +#: src/crossfade/crossfade.cc:50 src/crossfade/crossfade.cc:56 +msgid "Overlap:" +msgstr "Suprapune:" + +#: src/crossfade/crossfade.cc:54 +msgid "On seek or manual song change" +msgstr "La căutare sau la schimbarea manuală a melodiei" + +#: src/crossfade/crossfade.cc:60 +msgid "Tip" +msgstr "Vârf" + +#: src/crossfade/crossfade.cc:61 +msgid "" +"For better crossfading, enable\n" +"the Silence Removal effect." +msgstr "" +"Pentru un efect de crossfading, activează\n" +"efectul de eliminare a liniștii." + +#: src/crossfade/crossfade.cc:71 +msgid "Crossfade" +msgstr "Crossfade" + +#: src/crystalizer/crystalizer.cc:31 +msgid "Crystalizer" +msgstr "Crystalizer" + +#: src/crystalizer/crystalizer.cc:32 src/stereo_plugin/stereo.cc:45 +msgid "Intensity:" +msgstr "Intensitate:" + +#: src/crystalizer/crystalizer.cc:43 +msgid "Crystalizer" +msgstr "Crystalizer" + +#: src/cue/cue.cc:42 +msgid "Cue Sheet Plugin" +msgstr "Plugin pentru fișiere Cue" + +#: src/delete-files/delete-files.cc:53 src/delete-files/delete-files.cc:215 +#: src/delete-files/delete-files.cc:230 +msgid "Delete Files" +msgstr "Șterge fișiere" + +#: src/delete-files/delete-files.cc:120 +msgid "No files are selected." +msgstr "Fișierele nu sunt selectate." + +#: src/delete-files/delete-files.cc:125 +#, c-format +msgid "Do you want to move %s to the trash?" +msgstr "Dorești să muți %s la gunoi ?" + +#: src/delete-files/delete-files.cc:126 +#, c-format +msgid "Do you want to permanently delete %s?" +msgstr "Dorești să ștergi permanent %s ?" + +#: src/delete-files/delete-files.cc:133 +#, c-format +msgid "Do you want to move %d files to the trash?" +msgstr "Dorești să muți %d fișiere la gunoi ?" + +#: src/delete-files/delete-files.cc:134 +#, c-format +msgid "Do you want to permanently delete %d files?" +msgstr "Dorești să ștergi permanent %d fișiere ?" + +#: src/delete-files/delete-files.cc:146 +msgid "Move to trash" +msgstr "Mută la gunoi" + +#: src/delete-files/delete-files.cc:146 +msgid "Delete" +msgstr "Șterge" + +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 +msgid "Cancel" +msgstr "Anulează" + +#: src/delete-files/delete-files.cc:267 +msgid "Delete Selected Files" +msgstr "Șterge fișierele selectate" + +#: src/delete-files/delete-files.cc:287 +msgid "Delete Method" +msgstr "Methoda de ștergere" + +#: src/delete-files/delete-files.cc:288 +msgid "Move to trash instead of deleting immediately" +msgstr "Muta la gunoi în locul ștergerii imediate" + +#: src/echo_plugin/echo.cc:9 +msgid "" +"Echo Plugin\n" +"By Johan Levin, 1999\n" +"Surround echo by Carl van Schaik, 1999\n" +"Updated for Audacious by William Pitcock and John Lindgren, 2010-2014" +msgstr "" +"Echo Plugin\n" +"De Johan Levin, 1999\n" +"Ecou Surround de Carl van Schaik, 1999\n" +"Uploadat pentru Audacious de William Pitcock și John Lindgren, 2010-2014" + +#: src/echo_plugin/echo.cc:21 +msgid "Echo" +msgstr "Ecou" + +#: src/echo_plugin/echo.cc:22 src/modplug/plugin_main.cc:72 +#: src/modplug/plugin_main.cc:82 +msgid "Delay:" +msgstr "Întârziere:" + +#: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 +msgid "ms" +msgstr "ms" + +#: src/echo_plugin/echo.cc:25 +msgid "Feedback:" +msgstr "Feedback:" + +#: src/echo_plugin/echo.cc:28 src/modplug/plugin_main.cc:86 +msgid "Volume:" +msgstr "Volum:" + +#: src/echo_plugin/echo.cc:39 +msgid "Echo" +msgstr "Ecou" + +#: src/ffaudio/ffaudio-core.cc:50 +msgid "FFmpeg Plugin" +msgstr "FFmpeg Plugin" + +#: src/ffaudio/ffaudio-core.cc:650 +msgid "" +"Multi-format audio decoding plugin for Audacious using\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"\n" +"Audacious plugin by:\n" +"William Pitcock \n" +"Matti Hämäläinen " +msgstr "" +"Plugin de decodare audio multi format pentru Audacious folosind\n" +"librăriile multimedia FFmpeg (http://www.ffmpeg.org/)\n" +"\n" +"Plugin Audacious de:\n" +"William Pitcock \n" +"Matti Hämäläinen " + +#: src/filewriter/filewriter.cc:48 +msgid "FileWriter Plugin" +msgstr "FileWriter Plugin" + +#: src/filewriter/filewriter.cc:316 +#, c-format +msgid "" +"Error opening %s:\n" +"%s" +msgstr "" +"Eroare la deschiderea %s:\n" +"%s" + +#: src/filewriter/filewriter.cc:358 +msgid "" +"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.\n" +"\n" +"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.\n" +"\n" +"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." +msgstr "" + +#: src/filewriter/filewriter.cc:385 +msgid "Output file format:" +msgstr "Fișier de ieșire:" + +#: src/filewriter/filewriter.cc:389 +msgid "Save into original directory" +msgstr "Salvează în directorul original" + +#: src/filewriter/filewriter.cc:392 +msgid "Save into custom directory:" +msgstr "Salvează într-un dosar personalizat:" + +#: src/filewriter/filewriter.cc:400 +msgid "Generate file name from:" +msgstr "Generează numele de fișiere din:" + +#: src/filewriter/filewriter.cc:401 +msgid "Original file name" +msgstr "Numele original al fișierului" + +#: src/filewriter/filewriter.cc:404 +msgid "Original file name (no suffix)" +msgstr "Nmele original al fișierului (fără sufix)" + +#: src/filewriter/filewriter.cc:407 +msgid "Original file tag" +msgstr "Eticheta originală a fișierului" + +#: src/filewriter/filewriter.cc:411 +msgid "Prepend track number to file name" +msgstr "Adaugă numele piesei la începutul numelui fișierului" + +#: src/filewriter/filewriter.cc:417 src/filewriter/filewriter.cc:449 +msgid "Auto" +msgstr "Auto" + +#: src/filewriter/filewriter.cc:418 +msgid "8000 Hz" +msgstr "8000 Hz" + +#: src/filewriter/filewriter.cc:419 +msgid "11025 Hz" +msgstr "11025 Hz" + +#: src/filewriter/filewriter.cc:420 +msgid "12000 Hz" +msgstr "12000 Hz" + +#: src/filewriter/filewriter.cc:421 +msgid "16000 Hz" +msgstr "16000 Hz" + +#: src/filewriter/filewriter.cc:422 +msgid "22050 Hz" +msgstr "22050 Hz" + +#: src/filewriter/filewriter.cc:423 +msgid "24000 Hz" +msgstr "24000 Hz" + +#: src/filewriter/filewriter.cc:424 +msgid "32000 Hz" +msgstr "32000 Hz" + +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 +msgid "44100 Hz" +msgstr "44100 Hz" + +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 +msgid "48000 Hz" +msgstr "48000 Hz" + +#: src/filewriter/filewriter.cc:430 +msgid "8 kbit/s" +msgstr "8 kbit/s" + +#: src/filewriter/filewriter.cc:431 +msgid "16 kbit/s" +msgstr "16 kbit/s" + +#: src/filewriter/filewriter.cc:432 +msgid "32 kbit/s" +msgstr "32 kbit/s" + +#: src/filewriter/filewriter.cc:433 +msgid "40 kbit/s" +msgstr "40 kbit/s" + +#: src/filewriter/filewriter.cc:434 +msgid "48 kbit/s" +msgstr "48 kbit/s" + +#: src/filewriter/filewriter.cc:435 +msgid "56 kbit/s" +msgstr "56 kbit/s" + +#: src/filewriter/filewriter.cc:436 +msgid "64 kbit/s" +msgstr "64 kbit/s" + +#: src/filewriter/filewriter.cc:437 +msgid "80 kbit/s" +msgstr "80 kbit/s" + +#: src/filewriter/filewriter.cc:438 +msgid "96 kbit/s" +msgstr "96 kbit/s" + +#: src/filewriter/filewriter.cc:439 +msgid "112 kbit/s" +msgstr "112 kbit/s" + +#: src/filewriter/filewriter.cc:440 +msgid "128 kbit/s" +msgstr "128 kbit/s" + +#: src/filewriter/filewriter.cc:441 +msgid "160 kbit/s" +msgstr "160 kbit/s" + +#: src/filewriter/filewriter.cc:442 +msgid "192 kbit/s" +msgstr "192 kbit/s" + +#: src/filewriter/filewriter.cc:443 +msgid "224 kbit/s" +msgstr "224 kbit/s" + +#: src/filewriter/filewriter.cc:444 +msgid "256 kbit/s" +msgstr "256 kbit/s" + +#: src/filewriter/filewriter.cc:445 +msgid "320 kbit/s" +msgstr "320 kbit/s" + +#: src/filewriter/filewriter.cc:450 +msgid "Joint Stereo" +msgstr "Stereo combinat" + +#: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 +#: src/mpg123/mpg123.cc:259 +msgid "Stereo" +msgstr "Stereo" + +#: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 +#: src/mpg123/mpg123.cc:260 +msgid "Mono" +msgstr "Mono" + +#: src/filewriter/filewriter.cc:456 +msgid "VBR" +msgstr "VBR" + +#: src/filewriter/filewriter.cc:457 +msgid "ABR" +msgstr "ABR" + +#: src/filewriter/filewriter.cc:478 +msgid "Algorithm quality:" +msgstr "Calitatea algoritmului:" + +#: src/filewriter/filewriter.cc:484 +msgid "Bitrate:" +msgstr "Bitrate:" + +#: src/filewriter/filewriter.cc:491 +msgid "Compression ratio:" +msgstr "Rația de compresie:" + +#: src/filewriter/filewriter.cc:498 +msgid "Audio mode:" +msgstr "Mod audio:" + +#: src/filewriter/filewriter.cc:501 +msgid "Enforce strict ISO compliance" +msgstr "Impune conformarea strictă la standardul ISO" + +#: src/filewriter/filewriter.cc:503 +msgid "Error protection" +msgstr "Protecție la erori" + +#: src/filewriter/filewriter.cc:508 +msgid "Enable VBR/ABR" +msgstr "Pornește VBR/ABR" + +#: src/filewriter/filewriter.cc:510 +msgid "Type:" +msgstr "Tip:" + +#: src/filewriter/filewriter.cc:514 +msgid "Minimum bitrate:" +msgstr "Bitrare minim:" + +#: src/filewriter/filewriter.cc:518 +msgid "Maximum bitrate:" +msgstr "Bitrate maxim:" + +#: src/filewriter/filewriter.cc:522 +msgid "Average bitrate:" +msgstr "Bitrate mediu:" + +#: src/filewriter/filewriter.cc:526 +msgid "VBR quality level:" +msgstr "Nivelul de calitate al VBR:" + +#: src/filewriter/filewriter.cc:530 +msgid "Strictly enforce minimum bitrate" +msgstr "Impune în mod strict un bitrate minim" + +#: src/filewriter/filewriter.cc:533 +msgid "Omit Xing VBR header" +msgstr "Omite antentul Xing VBR" + +#: src/filewriter/filewriter.cc:539 +msgid "Frame Headers" +msgstr "Antetul cadrelor" + +#: src/filewriter/filewriter.cc:540 +msgid "Mark as copyright" +msgstr "Marchează cu drepturi de autor" + +#: src/filewriter/filewriter.cc:542 +msgid "Mark as original" +msgstr "Marchează ca original" + +#: src/filewriter/filewriter.cc:544 +msgid "ID3 Tags" +msgstr "Etichete ID3" + +#: src/filewriter/filewriter.cc:545 +msgid "Force addition of version 2 tag" +msgstr "Forțează adiția etichetelor versiunea 2 " + +#: src/filewriter/filewriter.cc:547 +msgid "Only add v1 tag" +msgstr "Adaugă numai tag-ul v1" + +#: src/filewriter/filewriter.cc:549 +msgid "Only add v2 tag" +msgstr "Adaugă numai tag-ul v2" + +#: src/filewriter/filewriter.cc:554 +msgid "Quality" +msgstr "Calitate" + +#: src/filewriter/filewriter.cc:555 +msgid "VBR/ABR" +msgstr "VBR/ABR" + +#: src/filewriter/filewriter.cc:556 +msgid "Tags" +msgstr "Tag-uri" + +#: src/filewriter/filewriter.cc:566 +msgid "Quality (0-1):" +msgstr "Calitate (0-1):" + +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 +#: src/skins/skins_cfg.cc:285 +msgid "General" +msgstr "General" + +#: src/flac/flacng.h:36 +msgid "FLAC Decoder" +msgstr "Decodor FLAC" + +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 +msgid "lossless" +msgstr "lossless" + +#: src/flac/plugin.cc:214 +msgid "" +"Original code by\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" +msgstr "" +"Codul original de\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" + +#: src/gio/gio.cc:34 +msgid "" +"GIO Plugin for Audacious\n" +"Copyright 2009-2012 John Lindgren" +msgstr "" +"GIO Plugin pentru Audacious\n" +"Drepturi de autor 2009-2012 John Lindgren" + +#: src/gio/gio.cc:42 +msgid "GIO Plugin" +msgstr "GIO Plugin" + +#: src/gio/gio.cc:152 +msgid "Read-and-append mode not supported" +msgstr "Modul de citire și lipire nu este suportat" + +#: src/gio/gio.cc:165 +msgid "Invalid open mode" +msgstr "Mod deschid invalid" + +#: src/glspectrum/gl-spectrum.cc:52 +msgid "" +"OpenGL Spectrum Analyzer for Audacious\n" +"Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" +"\n" +"Based on the XMMS plugin:\n" +"Copyright 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, and " +"4Front Technologies\n" +"\n" +"License: GPLv2+" +msgstr "" +"Analizor de spectru bazat pe OpenGL pentru Audacious\n" +"Drepturi de autor 2013 Christophe Budé, John Lindgren, și Carlo Bramini\n" +"\n" +"Bazat pe pluginul XMMS:\n" +"Drepturi de autor 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas " +"Nilsson, și 4Front Technologies\n" +"\n" +"Licență: GPLv2+" + +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 +msgid "OpenGL Spectrum Analyzer" +msgstr "Analizor de spectru bazat pe OpenGL" + +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "Numărul de intrare" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 +#: src/moonstone/playlist_selection.cc:62 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 +#: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 +msgid "Title" +msgstr "Titlu" + +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/qtui/playlist_model.cc:33 +msgid "Artist" +msgstr "Artist" + +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/qtui/playlist_model.cc:33 +msgid "Year" +msgstr "An" + +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 +#: src/qtui/playlist_model.cc:34 +msgid "Album" +msgstr "Album" + +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr "Artist Album" + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Track" +msgstr "Pista" + +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 +#: src/streamtuner/shoutcast-model.cc:125 +#: src/streamtuner/shoutcast-model.cc:236 +msgid "Genre" +msgstr "Genul" + +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "Poziția la coadă" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Length" +msgstr "Lungime" + +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Numele fișierului" + +#: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Nume personalizat" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 +#: src/streamtuner/shoutcast-model.cc:134 +msgid "Bitrate" +msgstr "Bitrate" + +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 +#: src/qtui/playlist_model.cc:36 +msgid "Comment" +msgstr "Comentariu" + +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "Casă de discuri" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "Numărul de catalog" + +#: src/gtkui/columns.cc:322 +msgid "Available columns" +msgstr "Coloanele disponibile" + +#: src/gtkui/columns.cc:348 +msgid "Displayed columns" +msgstr "Coloanele afișate" + +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 +msgid "Search Tool" +msgstr "Instrument de căutare" + +#: src/gtkui/layout.cc:170 +msgid "Dock at Left" +msgstr "Dock-ul la stânga" + +#: src/gtkui/layout.cc:170 +msgid "Dock at Right" +msgstr "Dock-ul la dreapta" + +#: src/gtkui/layout.cc:171 +msgid "Dock at Top" +msgstr "Dock-ul deasupra" + +#: src/gtkui/layout.cc:171 +msgid "Dock at Bottom" +msgstr "Dock-ul jos" + +#: src/gtkui/layout.cc:171 +msgid "Undock" +msgstr "Undock" + +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 +msgid "Disable" +msgstr "Dezactivează" + +#: src/gtkui/menus.cc:79 src/qtui/menus.cc:107 +#: src/statusicon-qt/statusicon.cc:112 src/statusicon/statusicon.cc:282 +msgid "_Open Files ..." +msgstr "_Deschide Fișiere ..." + +#: src/gtkui/menus.cc:80 src/qtui/menus.cc:111 +msgid "Open _URL ..." +msgstr "Deschide _URL ..." + +#: src/gtkui/menus.cc:81 src/qtui/menus.cc:113 +msgid "_Add Files ..." +msgstr "Adaugă fișiere ..." + +#: src/gtkui/menus.cc:82 src/qtui/menus.cc:118 +msgid "Add U_RL ..." +msgstr "Adaugă URL ..." + +#: src/gtkui/menus.cc:84 src/qtui/menus.cc:120 +msgid "Search _Library" +msgstr "Caută_în_librarie" + +#: src/gtkui/menus.cc:86 src/qtui/menus.cc:123 +msgid "A_bout ..." +msgstr "Despre ..." + +#: src/gtkui/menus.cc:87 src/qtui/menus.cc:125 +msgid "_Settings ..." +msgstr "_Setări ..." + +#: src/gtkui/menus.cc:88 src/qtui/menus.cc:131 +#: src/statusicon-qt/statusicon.cc:114 src/statusicon/statusicon.cc:284 +msgid "_Quit" +msgstr "_Ieșire" + +#: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 +#: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 +#: src/statusicon/statusicon.cc:276 +msgid "_Play" +msgstr "_Redare" + +#: src/gtkui/menus.cc:93 src/qtui/menus.cc:137 +#: src/statusicon-qt/statusicon.cc:107 src/statusicon/statusicon.cc:277 +msgid "Paus_e" +msgstr "Pauză" + +#: src/gtkui/menus.cc:94 src/qtui/menus.cc:139 +#: src/statusicon-qt/statusicon.cc:108 src/statusicon/statusicon.cc:278 +msgid "_Stop" +msgstr "_Oprește" + +#: src/gtkui/menus.cc:95 src/qtui/menus.cc:141 +#: src/statusicon-qt/statusicon.cc:109 src/statusicon/statusicon.cc:279 +msgid "Pre_vious" +msgstr "Precedent" + +#: src/gtkui/menus.cc:96 src/qtui/menus.cc:143 +#: src/statusicon-qt/statusicon.cc:110 src/statusicon/statusicon.cc:280 +msgid "_Next" +msgstr "_Următorul" + +#: src/gtkui/menus.cc:97 src/qtui/menus.cc:145 src/skins/menus.cc:114 +#: src/skins-qt/menus.cc:105 +msgid "Previous Album" +msgstr "Albumul precedent" + +#: src/gtkui/menus.cc:98 src/qtui/menus.cc:146 src/skins/menus.cc:115 +#: src/skins-qt/menus.cc:106 +msgid "Next Album" +msgstr "Albumul următor" + +#: src/gtkui/menus.cc:100 src/qtui/menus.cc:148 +msgid "_Repeat" +msgstr "_Repetă" + +#: src/gtkui/menus.cc:101 src/qtui/menus.cc:150 +msgid "S_huffle" +msgstr "Aleatoriu" + +#: src/gtkui/menus.cc:102 src/qtui/menus.cc:152 +msgid "Shuffle by Albu_m" +msgstr "Aleatoriu după album" + +#: src/gtkui/menus.cc:103 src/qtui/menus.cc:155 +msgid "N_o Playlist Advance" +msgstr "Fără avansul playlistului" + +#: src/gtkui/menus.cc:104 src/qtui/menus.cc:157 +msgid "Stop A_fter This Song" +msgstr "Oprește după această melodie" + +#: src/gtkui/menus.cc:106 src/gtkui/menus.cc:208 src/qtui/menus.cc:162 +#: src/qtui/menus.cc:292 +msgid "Song _Info ..." +msgstr "Informații_despre_ melodie ..." + +#: src/gtkui/menus.cc:107 +msgid "Jump to _Time ..." +msgstr "Sari la_timp ..." + +#: src/gtkui/menus.cc:108 +msgid "_Jump to Song ..." +msgstr "_Sari la melodia ..." + +#: src/gtkui/menus.cc:110 src/qtui/menus.cc:165 +msgid "Set Repeat Point _A" +msgstr "Setează punctul de redare _A" + +#: src/gtkui/menus.cc:111 src/qtui/menus.cc:167 +msgid "Set Repeat Point _B" +msgstr "Setează punctul de redare _B" + +#: src/gtkui/menus.cc:112 src/qtui/menus.cc:169 +msgid "_Clear Repeat Points" +msgstr "_elimină punctele de repetiție" + +#: src/gtkui/menus.cc:116 src/gtkui/menus.cc:123 src/gtkui/menus.cc:140 +#: src/qtui/menus.cc:173 src/qtui/menus.cc:180 src/qtui/menus.cc:197 +msgid "By _Title" +msgstr "După titlu" + +#: src/gtkui/menus.cc:117 src/qtui/menus.cc:174 +msgid "By _File Name" +msgstr "După numele fișierului" + +#: src/gtkui/menus.cc:118 src/qtui/menus.cc:175 +msgid "By File _Path" +msgstr "După calea de pe disc" + +#: src/gtkui/menus.cc:122 src/gtkui/menus.cc:139 src/qtui/menus.cc:179 +#: src/qtui/menus.cc:196 +msgid "By Track _Number" +msgstr "După numarul de ordine" + +#: src/gtkui/menus.cc:124 src/gtkui/menus.cc:141 src/qtui/menus.cc:181 +#: src/qtui/menus.cc:198 +msgid "By _Artist" +msgstr "După artist" + +#: src/gtkui/menus.cc:125 src/gtkui/menus.cc:142 src/qtui/menus.cc:182 +#: src/qtui/menus.cc:199 +msgid "By Al_bum" +msgstr "După album" + +#: src/gtkui/menus.cc:126 src/gtkui/menus.cc:143 src/qtui/menus.cc:183 +#: src/qtui/menus.cc:200 +msgid "By Albu_m Artist" +msgstr "După artistul albumului" + +#: src/gtkui/menus.cc:127 src/gtkui/menus.cc:144 src/qtui/menus.cc:184 +#: src/qtui/menus.cc:201 +msgid "By Release _Date" +msgstr "După anul lansării" + +#: src/gtkui/menus.cc:128 src/gtkui/menus.cc:145 src/qtui/menus.cc:185 +#: src/qtui/menus.cc:202 +msgid "By _Genre" +msgstr "După gen" + +#: src/gtkui/menus.cc:129 src/gtkui/menus.cc:146 src/qtui/menus.cc:186 +#: src/qtui/menus.cc:203 +msgid "By _Length" +msgstr "După lungime" + +#: src/gtkui/menus.cc:130 src/gtkui/menus.cc:147 src/qtui/menus.cc:187 +#: src/qtui/menus.cc:204 +msgid "By _File Path" +msgstr "După calea fișierului" + +#: src/gtkui/menus.cc:131 src/gtkui/menus.cc:148 src/qtui/menus.cc:188 +#: src/qtui/menus.cc:205 +msgid "By _Custom Title" +msgstr "După titlul personalizat" + +#: src/gtkui/menus.cc:132 src/gtkui/menus.cc:149 src/qtui/menus.cc:189 +#: src/qtui/menus.cc:206 +msgid "By C_omment" +msgstr "După comentariu" + +#: src/gtkui/menus.cc:134 src/gtkui/menus.cc:151 src/qtui/menus.cc:191 +#: src/qtui/menus.cc:208 +msgid "R_everse Order" +msgstr "Ordine inversă" + +#: src/gtkui/menus.cc:135 src/gtkui/menus.cc:152 src/qtui/menus.cc:193 +#: src/qtui/menus.cc:210 +msgid "_Random Order" +msgstr "Ordine aleatorie" + +#: src/gtkui/menus.cc:156 src/qtui/menus.cc:214 +msgid "_Play/Resume" +msgstr "Start/Reia" + +#: src/gtkui/menus.cc:157 src/qtui/menus.cc:216 +msgid "_Refresh" +msgstr "Reîmprospătează" + +#: src/gtkui/menus.cc:159 src/qtui/menus.cc:220 +msgid "_Sort" +msgstr "Sortează" + +#: src/gtkui/menus.cc:160 src/qtui/menus.cc:221 +msgid "Sort Se_lected" +msgstr "Sortează selecțiile" + +#: src/gtkui/menus.cc:161 src/qtui/menus.cc:223 +msgid "Remove _Duplicates" +msgstr "Eliminiă dublurile" + +#: src/gtkui/menus.cc:162 src/qtui/menus.cc:224 +msgid "Remove _Unavailable Files" +msgstr "Elimină fișierele nedisponibile" + +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 +msgid "_New" +msgstr "_Nou" + +#: src/gtkui/menus.cc:165 src/qtui/menus.cc:228 +msgid "Ren_ame ..." +msgstr "Redenumește" + +#: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 +#: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 +#: src/qtui/playlist_tabs.cc:335 +msgid "Remo_ve" +msgstr "Elimină" + +#: src/gtkui/menus.cc:168 src/qtui/menus.cc:231 +msgid "_Import ..." +msgstr "_Importă ..." + +#: src/gtkui/menus.cc:169 src/qtui/menus.cc:232 +msgid "_Export ..." +msgstr "_Exportă ..." + +#: src/gtkui/menus.cc:171 src/qtui/menus.cc:235 +msgid "Playlist _Manager ..." +msgstr "Manager de playslist" + +#: src/gtkui/menus.cc:172 src/qtui/menus.cc:237 +msgid "_Queue Manager ..." +msgstr "_Queue Manager ..." + +#: src/gtkui/menus.cc:176 src/qtui/menus.cc:241 +msgid "Volume _Up" +msgstr "Volum _Sus" + +#: src/gtkui/menus.cc:177 src/qtui/menus.cc:243 +msgid "Volume _Down" +msgstr "Volum _Jos" + +#: src/gtkui/menus.cc:179 src/qtui/menus.cc:247 +msgid "_Equalizer ..." +msgstr "Egalizator" + +#: src/gtkui/menus.cc:180 src/qtui/menus.cc:249 +msgid "E_ffects ..." +msgstr "Efecte" + +#: src/gtkui/menus.cc:182 +msgid "_Record Stream" +msgstr "Înregistrează strem" + +#: src/gtkui/menus.cc:183 +msgid "Audio _Settings ..." +msgstr "Setări audio" + +#: src/gtkui/menus.cc:187 src/qtui/menus.cc:258 +msgid "Show _Menu Bar" +msgstr "Arată bara de meniu" + +#: src/gtkui/menus.cc:188 src/qtui/menus.cc:260 +msgid "Show I_nfo Bar" +msgstr "Arată bara de informații" + +#: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 +msgid "Show Info Bar _Album Art" +msgstr "Arată bara de informații _Coperta" + +#: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 +msgid "Show Info Bar Vis_ualization" +msgstr "Arată vizualizarea în bara de informații" + +#: src/gtkui/menus.cc:191 src/qtui/menus.cc:266 +msgid "Show _Status Bar" +msgstr "Arată bara de stare" + +#: src/gtkui/menus.cc:193 src/qtui/menus.cc:270 +msgid "Show _Remaining Time" +msgstr "Arată timpul rămas" + +#: src/gtkui/menus.cc:195 src/qtui/menus.cc:274 src/skins/menus.cc:157 +#: src/skins-qt/menus.cc:152 +msgid "_Visualizations ..." +msgstr "Vizualizare" + +#: src/gtkui/menus.cc:199 src/qtui/menus.cc:278 +msgid "_File" +msgstr "_Filă" + +#: src/gtkui/menus.cc:200 src/qtui/menus.cc:279 +msgid "_Playback" +msgstr "Redare" + +#: src/gtkui/menus.cc:201 src/qtui/menus.cc:280 +msgid "P_laylist" +msgstr "Playlist" + +#: src/gtkui/menus.cc:202 src/gtkui/menus.cc:220 src/qtui/menus.cc:281 +#: src/qtui/menus.cc:310 +msgid "_Services" +msgstr "_Servicii" + +#: src/gtkui/menus.cc:203 src/qtui/menus.cc:282 +msgid "_Output" +msgstr "Ieșire" + +#: src/gtkui/menus.cc:204 src/qtui/menus.cc:283 +msgid "_View" +msgstr "Vizualizează" + +#: src/gtkui/menus.cc:209 src/qtui/menus.cc:294 +msgid "_Queue/Unqueue" +msgstr "_Queue/Unqueue" + +#: src/gtkui/menus.cc:211 src/qtui/menus.cc:297 +msgid "_Open Containing Folder" +msgstr "Deschide folderul ce conține" + +#: src/gtkui/menus.cc:212 src/qtui/menus.cc:299 +msgid "_Refresh Selected" +msgstr "Reîmprospătează selecțiile" + +#: src/gtkui/menus.cc:214 src/qtui/menus.cc:302 +msgid "Cu_t" +msgstr "Taie" + +#: src/gtkui/menus.cc:215 src/qtui/menus.cc:303 +msgid "_Copy" +msgstr "Copiază" + +#: src/gtkui/menus.cc:216 src/qtui/menus.cc:304 +msgid "_Paste" +msgstr "Lipire" + +#: src/gtkui/menus.cc:217 src/qtui/menus.cc:305 +msgid "Paste at _End" +msgstr "Lipește la final" + +#: src/gtkui/menus.cc:218 src/qtui/menus.cc:307 +msgid "Select _All" +msgstr "Selectează tot" + +#: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 +#: src/qtui/playlist_tabs.cc:333 +msgid "_Rename ..." +msgstr "Redenumește" + +#: src/gtkui/settings.cc:35 src/qtui/settings.cc:63 +msgid "Playlist Tabs" +msgstr "Taburile playlistului" + +#: src/gtkui/settings.cc:36 +msgid "Always show tabs" +msgstr "Arată întodeauna taburi" + +#: src/gtkui/settings.cc:38 src/qtui/settings.cc:68 +msgid "Show entry counts" +msgstr "Arată numărul intrăriilor" + +#: src/gtkui/settings.cc:40 src/qtui/settings.cc:71 +msgid "Show close buttons" +msgstr "Arată butonul de închidere" + +#: src/gtkui/settings.cc:42 src/qtui/settings.cc:74 +msgid "Playlist Columns" +msgstr "Coloanele Playlistului" + +#: src/gtkui/settings.cc:44 src/qtui/settings.cc:76 +msgid "Show column headers" +msgstr "Arată antetul coloanei" + +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 +msgid "Scroll on song change" +msgstr "Derulează la schimbarea melodiei" + +#: src/gtkui/ui_gtk.cc:81 +msgid "GTK Interface" +msgstr "Interfața GTK" + +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 +#, c-format +msgid "%s - Audacious" +msgstr "%s - Audacious" + +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 +msgid "Buffering ..." +msgstr "Se încarcă ..." + +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 +msgid "Audacious" +msgstr "Audacious" + +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 +#: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 +#: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 +msgid "Play" +msgstr "Play" + +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 +#: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 +#: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 +msgid "Pause" +msgstr "Pauză" + +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +msgid "Search Library" +msgstr "Caută în librărie" + +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 +msgid "Open Files" +msgstr "Deschide Fișiere" + +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 +msgid "Add Files" +msgstr "Adaugă Fișiere" + +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +msgid "Previous" +msgstr "Anterior" + +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 +#: src/skins-qt/menus.cc:102 +msgid "Stop" +msgstr "Stop" + +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +msgid "Next" +msgstr "Următorul" + +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/skins-qt/menus.cc:69 +msgid "Record Stream" +msgstr "Înregistrează streamul" + +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +msgid "Repeat" +msgstr "Repetă" + +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +msgid "Shuffle" +msgstr "Aleatoriu" + +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 +msgid "Menu" +msgstr "Meniu" + +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 +msgid "mono" +msgstr "mono" + +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 +msgid "stereo" +msgstr "stereo" + +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d canal" +msgstr[1] "%d canale" +msgstr[2] "%d de canale" + +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 +#, c-format +msgid "%d kHz" +msgstr "%d kHz" + +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 +#, c-format +msgid "%d kbit/s" +msgstr "%d kbit/s" + +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 +msgid "Single mode." +msgstr "Mod singular." + +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 +msgid "Playlist mode." +msgstr "Mod playlist." + +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 +msgid "Stopping after song." +msgstr "Oprește după melodia." + +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 +msgid "Previous track" +msgstr "Piesa anterioară" + +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 +msgid "Pause/Resume" +msgstr "Pauză/Reia" + +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 +msgid "Next track" +msgstr "Piesa următoare" + +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 +msgid "Step forward" +msgstr "Sari înainte" + +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 +msgid "Step backward" +msgstr "Sari înapoi" + +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 +msgid "Mute" +msgstr "Mut" + +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 +msgid "Volume up" +msgstr "Crește volumul" + +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 +msgid "Volume down" +msgstr "Scade volumul" + +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 +msgid "Jump to file" +msgstr "Sari la fișier" + +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 +msgid "Toggle player window(s)" +msgstr "Comută între ferestrele player-ului" + +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 +msgid "Show On-Screen-Display" +msgstr "Arată afișajul OSD" + +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 +msgid "Toggle repeat" +msgstr "Schimbă funcția de a repeta" + +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 +msgid "Toggle shuffle" +msgstr "Schimbă funcția de redare aleatoriu" + +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 +msgid "Toggle stop after current" +msgstr "Schimbă funcția de oprire după piesa curentă" + +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 +msgid "Raise player window(s)" +msgstr "Mărește fereastra(le) player-ului" + +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 +msgid "(none)" +msgstr "(nimic)" + +#: src/hotkey/gui.cc:261 +msgid "" +"It is not recommended to bind the primary mouse buttons without modifiers.\n" +"\n" +"Do you want to continue?" +msgstr "" +"Nu este recomandat să asignați butoanele pricipale ale mouse-ului fără a " +"folosi modificatori.\n" +"\n" +"Dorești să continui ?" + +#: src/hotkey/gui.cc:264 +msgid "Binding mouse buttons" +msgstr "Asignează butonele mouse-ului" + +#: src/hotkey/gui.cc:434 +msgid "" +"Press a key combination inside a text field.\n" +"You can also bind mouse buttons." +msgstr "" +"Apasă o combinație de taste în interiorul câmpului.\n" +"Poți de asemenea să asignezi butoanele de pe mouse." + +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 +msgid "Hotkeys:" +msgstr "Taste rapide:" + +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 +msgid "Action:" +msgstr "Acțiune:" + +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 +msgid "Key Binding:" +msgstr "Tasta asignată:" + +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 +msgid "_Add" +msgstr "_Adaugă" + +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 +msgid "Global Hotkeys" +msgstr "Taste rapide globale" + +#: src/hotkey/plugin.cc:76 +msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributors include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " +msgstr "" +"Global Hotkey Plugin\n" +"Controlează playerul cu combinațiile globale de taste sau taste multimedia.\n" +"\n" +"Drepturi de autor(C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Colaboratorii sunt:\n" +"Drepturi de autor(C) 2006-2007 Vladimir Paskov \n" +"Drepturi de autor (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " + +#: src/jack/jack-ng.cc:54 +msgid "JACK Output" +msgstr "Portul Jack de ieșire" + +#: src/jack/jack-ng.cc:126 +msgid "Client name:" +msgstr "Numele clientului:" + +#: src/jack/jack-ng.cc:128 +msgid "Automatically connect to output ports" +msgstr "Conectează-te automat la porturile de ieșire" + +#: src/jack/jack-ng.cc:130 +msgid "Filter ports (regex, use any port if blank):" +msgstr "" +"Filtrează porturile (regex, folosește orice port dacă acest câmp este liber):" + +#: src/jack/jack-ng.cc:136 +msgid "Connect to physical ports only" +msgstr "Conectează-te numai la porturile fizice" + +#: src/jack/jack-ng.cc:139 +msgid "Upmix to" +msgstr "Împarte canalele audio în" + +#: src/jack/jack-ng.cc:141 +msgid "ports if input has fewer channels" +msgstr "porturi în cazul în care intrarea are mai puține canale" + +#: src/jack/jack-ng.cc:143 +msgid "Ignore insufficient number of ports" +msgstr "Ignoră numărul insuficient de porturi" + +#: src/jack/jack-ng.cc:181 +msgid "No JACK output ports were found. Please check settings." +msgstr "Nu a fost găsit un port Jack. Te rugăm să verifici setările." + +#: src/jack/jack-ng.cc:195 +#, c-format +msgid "Only %d JACK output ports were found but %d are required." +msgstr "Doar %d porturi Jack au fost găsite dar sunt necesare %d. " + +#: src/jack/jack-ng.cc:210 +#, c-format +msgid "Failed to connect to JACK port %s." +msgstr "Conectarea la portul Jack %s a eșuat." + +#: src/jack/jack-ng.cc:230 +msgid "" +"JACK supports only floating-point audio. You must change the output bit " +"depth to floating-point in Audacious settings." +msgstr "" +"Portul Jack suportă numai audio în virgulă mobilă. Trebuie să schimbi " +"rezoluția de ieșire în virgulă mobilă în setările Audacious." + +#: src/jack/jack-ng.cc:245 +msgid "Failed to connect to the JACK server; is it running?" +msgstr "Conectarea la serverul Jack a eșuat; acesta este funcțional ?" + +#: src/jack/jack-ng.cc:321 +#, c-format +msgid "" +"The JACK server requires a sample rate of %d Hz, but Audacious is playing at " +"%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." +msgstr "" +"Serverul JACK necesită o rată de eșantionare de %d Hz, dar Audacious " +"folosește rata de %d Hz. Te rugăm să folosești efectul de convertor de rată " +"a eșantionării pentru a corecta diferența." + +#: src/ladspa/plugin.cc:416 +#, c-format +msgid "%s Settings" +msgstr "%s Setări" + +#: src/ladspa/plugin.cc:482 +msgid "Module paths:" +msgstr "Calea către modul:" + +#: src/ladspa/plugin.cc:487 +msgid "" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." +msgstr "" +" Separă mai multe căi cu două puncte.\n" +"Aceste căi sunt căutate în adiția căii LADSPA_PATH.\n" +"După ce ai adăugat o cale nouă, apasă Enter pentru a scana pentru un plugin " +"nou." + +#: src/ladspa/plugin.cc:508 +msgid "Available plugins:" +msgstr "Pluginuri disponibile:" + +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 +#: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 +#: src/modplug/plugin_main.cc:100 +msgid "Enable" +msgstr "Activează" + +#: src/ladspa/plugin.cc:527 +msgid "Enabled plugins:" +msgstr "Activează plugin-urile:" + +#: src/ladspa/plugin.cc:543 +msgid "Settings" +msgstr "Setări" + +#: src/ladspa/plugin.cc:560 +msgid "" +"LADSPA Host for Audacious\n" +"Copyright 2011 John Lindgren" +msgstr "" +"Gazdă LADSPA pentru Audacious\n" +"Drepturi de autor 2011 John Lindgren" + +#: src/ladspa/plugin.h:78 +msgid "LADSPA Host" +msgstr "Gazdă LADSPA" + +#: src/lirc/lirc.cc:55 +msgid "LIRC Plugin" +msgstr "Plugin LIRC" + +#: src/lirc/lirc.cc:379 +msgid "" +"A simple plugin to control Audacious using the LIRC remote control daemon\n" +"\n" +"Adapted for Audacious by:\n" +"Tony Vroon \n" +"Joonas Harjumäki \n" +"\n" +"Based on the XMMS LIRC plugin by:\n" +"Carl van Schaik \n" +"Christoph Bartelmus \n" +"Andrew O. Shadoura \n" +"\n" +"For more information about LIRC, see http://lirc.org." +msgstr "" + +#: src/lirc/lirc.cc:390 +msgid "Connection" +msgstr "Conexiune" + +#: src/lirc/lirc.cc:391 +msgid "Reconnect to LIRC server" +msgstr "Reconectare la serverul LIRC" + +#: src/lirc/lirc.cc:393 +msgid "Wait before reconnecting:" +msgstr "Așteaptă înainte de reconectare:" + +#: src/lyricwiki-qt/lyricwiki.cc:90 +msgid "Lyrics" +msgstr "Versui" + +#: src/lyricwiki-qt/lyricwiki.cc:118 +msgid "Nowhere" +msgstr "Nicăieri" + +#: src/lyricwiki-qt/lyricwiki.cc:119 +msgid "lyrics.ovh" +msgstr "versuri.ovh" + +#: src/lyricwiki-qt/lyricwiki.cc:123 +msgid "Artist is truncated at the start, Title -- at the end" +msgstr "" +"NUmele artistului este trunchiat la început, Titlu -- la final" + +#: src/lyricwiki-qt/lyricwiki.cc:124 +msgid "Chars to truncate on:" +msgstr "Caractere de trunchiat:" + +#: src/lyricwiki-qt/lyricwiki.cc:128 +msgid "Chars are ORed in RegExp, surrounded by whitespace" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:129 +msgid "Chars to split on:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:130 +msgid "Further truncate those on chars" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:136 +msgid "General" +msgstr "General" + +#: src/lyricwiki-qt/lyricwiki.cc:137 +msgid "Split title into artist and title on chars" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:146 +msgid "Store fetched lyrics in local cache" +msgstr "Stochează versurile obținute în memoria cache locală" + +#: src/lyricwiki-qt/lyricwiki.cc:148 +msgid "Local Storage" +msgstr "Stocare locală" + +#: src/lyricwiki-qt/lyricwiki.cc:149 +msgid "Load lyric files (.lrc) from local storage" +msgstr "Încarcă fișierele cu versuri (.lrc) din stocarea locală" + +#: src/lyricwiki-qt/lyricwiki.cc:360 +#, c-format +msgid "Unable to fetch %s" +msgstr "Nu se poate prelua %s" + +#: src/lyricwiki-qt/lyricwiki.cc:369 +#, c-format +msgid "Unable to parse %s" +msgstr "Nu se poate procesa %s" + +#: src/lyricwiki-qt/lyricwiki.cc:407 +msgid "Looking for lyrics ..." +msgstr "Se caută versurile ..." + +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 +msgid "Error" +msgstr "Eroare" + +#: src/lyricwiki-qt/lyricwiki.cc:437 +msgid "Lyrics could not be found." +msgstr "Versurile nu au putut fi găsite." + +#: src/lyricwiki-qt/lyricwiki.cc:518 +msgid "Missing title and/or artist." +msgstr "Titlul și/sau artistul lipsesc." + +#: src/lyricwiki-qt/lyricwiki.cc:576 +msgid "Save Locally" +msgstr "Salvează local" + +#: src/lyricwiki-qt/lyricwiki.cc:584 +msgid "Refresh" +msgstr "Reîmprospătează" + +#: src/m3u/m3u.cc:33 +msgid "M3U Playlists" +msgstr "Playlisturi M3U" + +#: src/metronom/metronom.cc:44 +msgid "Tact Generator" +msgstr "Metronom" + +#: src/metronom/metronom.cc:145 +#, c-format +msgid "Tact generator: %d bpm" +msgstr "Metronom: %d bpm" + +#: src/metronom/metronom.cc:147 +#, c-format +msgid "Tact generator: %d bpm %d/%d" +msgstr "Metronom: %d bpm %d/%d" + +#: src/metronom/metronom.cc:235 +msgid "" +"A Tact Generator by Martin Strauss \n" +"\n" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" +msgstr "" +"Metronom de Martin Strauss \n" +"\n" +"Pentru a-l folosi, adaugă un URL: tact://beats*num/den\n" +"ex. tact://77 pentru a reda 77 bătăi pe minut\n" +"sau tact://60*3/4 pentru a reda 60 bpm în măsura 3/4" + +#: src/mixer/mixer.cc:43 +msgid "Channel Mixer" +msgstr "Mixer de canale" + +#: src/mixer/mixer.cc:255 +msgid "" +"Channel Mixer Plugin for Audacious\n" +"Copyright 2011-2012 John Lindgren and Michał Lipski" +msgstr "" +"Channel Mixer Plugin pentru Audacious\n" +"Drepturi de autor 2011-2012 John Lindgren și Michał Lipski" + +#: src/mixer/mixer.cc:259 +msgid "Channel Mixer" +msgstr "Mixer de canale" + +#: src/mixer/mixer.cc:260 +msgid "Output channels:" +msgstr "Canale de ieșire:" + +#: src/mms/mms.cc:35 +msgid "MMS Plugin" +msgstr "Plugin MMS" + +#: src/mms/mms.cc:82 +msgid "Error connecting to MMS server" +msgstr "Eroare la conectarea la serverul MMS" + +#: src/modplug/modplugbmp.h:57 +msgid "ModPlug (Module Player)" +msgstr "ModPlug (Module Player)" + +#: src/modplug/plugin_main.cc:55 +msgid "Channels" +msgstr "Canale" + +#: src/modplug/plugin_main.cc:59 +msgid "Nearest (fastest)" +msgstr "Cel mai apropiat (cel mai rapid)" + +#: src/modplug/plugin_main.cc:60 +msgid "Linear (fast)" +msgstr "Linear (rapid)" + +#: src/modplug/plugin_main.cc:61 +msgid "Spline (good)" +msgstr "" + +#: src/modplug/plugin_main.cc:62 +msgid "Polyphase (best)" +msgstr "" + +#: src/modplug/plugin_main.cc:63 +msgid "Sample rate" +msgstr "Rata de eșantionare" + +#: src/modplug/plugin_main.cc:64 +msgid "22 kHz" +msgstr "22 kHz" + +#: src/modplug/plugin_main.cc:65 +msgid "44 kHz" +msgstr "44 kHz" + +#: src/modplug/plugin_main.cc:66 +msgid "48 kHz" +msgstr "48 kHz" + +#: src/modplug/plugin_main.cc:67 +msgid "96 kHz" +msgstr "96 kHz" + +#: src/modplug/plugin_main.cc:71 src/modplug/plugin_main.cc:76 +#: src/modplug/plugin_main.cc:81 +msgid "Level:" +msgstr "Nivel:" + +#: src/modplug/plugin_main.cc:77 +msgid "Cutoff:" +msgstr "Tăiere:" + +#: src/modplug/plugin_main.cc:90 +msgid "Reverb" +msgstr "Reverb" + +#: src/modplug/plugin_main.cc:93 +msgid "Bass Boost" +msgstr "Bass Boost" + +#: src/modplug/plugin_main.cc:96 +msgid "Surround" +msgstr "Surround" + +#: src/modplug/plugin_main.cc:99 +msgid "Preamp" +msgstr "Preamplificator" + +#: src/modplug/plugin_main.cc:106 +msgid "Oversample" +msgstr "Supraeșantionare" + +#: src/modplug/plugin_main.cc:107 +msgid "Noise reduction" +msgstr "Reducerea zgomotului" + +#: src/modplug/plugin_main.cc:108 +msgid "Play Amiga MODs" +msgstr "Redă MOD-uri Amiga" + +#: src/modplug/plugin_main.cc:109 +msgid "Repeat" +msgstr "Repetă" + +#: src/modplug/plugin_main.cc:110 +msgid "Repeat count:" +msgstr "Numărul de repetări:" + +#: src/modplug/plugin_main.cc:111 +msgid "To repeat forever, set the repeat count to -1." +msgstr "Pentru a repeta mereu, setează umărul de repetări al -1." + +#: src/modplug/plugin_main.cc:124 src/sid/xs_config.cc:106 +msgid "These settings will take effect when Audacious is restarted." +msgstr "Aceste setări vor avea efect după ce Audacious va fi repornit." + +#: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 +#: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 +msgid "Stop After This Song" +msgstr "Oprește după această melodie" + +#: src/moonstone/moonstone.cc:39 +msgid "Moonstone" +msgstr "" + +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 +msgid "Reset to Defaults" +msgstr "Resetează la setările prestabilite" + +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 +msgid "Now Playing" +msgstr "Se redă acum" + +#: src/moonstone/playlist_selection.cc:64 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 +msgid "Entries" +msgstr "Intrări" + +#: src/mpg123/mpg123.cc:54 +msgid "MPG123 Plugin" +msgstr "MPG123 Plugin" + +#: src/mpg123/mpg123.cc:81 +msgid "Advanced" +msgstr "Avansat" + +#: src/mpg123/mpg123.cc:82 +msgid "Use accurate length calculation (slow)" +msgstr "" + +#: src/mpg123/mpg123.cc:260 +msgid "Surround" +msgstr "Surround" + +#: src/mpris2/plugin.cc:38 +msgid "MPRIS 2 Server" +msgstr "MPRIS 2 Server" + +#: src/neon/neon.cc:97 +msgid "Neon HTTP/HTTPS Plugin" +msgstr "" + +#: src/neon/neon.cc:526 +msgid "Error parsing redirect" +msgstr "" + +#: src/neon/neon.cc:540 +msgid "Unknown HTTP error" +msgstr "Eroare HTTP necunoscută" + +#: src/neon/neon.cc:590 +msgid "Error parsing URL" +msgstr "" + +#: src/neon/neon.cc:660 +msgid "Too many redirects" +msgstr "" + +#: src/notify/event.cc:97 +msgid "Stopped" +msgstr "" + +#: src/notify/event.cc:97 +msgid "Audacious is not playing." +msgstr "" + +#: src/notify/notify.cc:39 +msgid "Desktop Notifications" +msgstr "" + +#: src/notify/notify.cc:57 +msgid "" +"Desktop Notifications Plugin for Audacious\n" +"Copyright (C) 2010 Maximilian Bogner\n" +"Copyright (C) 2011-2013 John Lindgren and Jean-Alexandre Anglès d'Auriac\n" +"\n" +"This plugin 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 3 of the License, or (at your option) " +"any later version.\n" +"\n" +"This plugin 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.\n" +"\n" +"You should have received a copy of the GNU General Public License along with " +"this program. If not, see ." +msgstr "" + +#: src/notify/notify.cc:104 +msgid "Show playback controls" +msgstr "" + +#: src/notify/notify.cc:106 +msgid "Always show notification" +msgstr "" + +#: src/notify/notify.cc:108 +msgid "Include album name in notification" +msgstr "" + +#: src/notify/notify.cc:110 +msgid "Custom notification duration:" +msgstr "" + +#: src/notify/osd.cc:74 +msgid "Show" +msgstr "" + +#: src/openmpt/mpt.cc:50 +msgid "OpenMPT (Module Player)" +msgstr "" + +#: src/openmpt/mpt.cc:132 +msgid "" +"Module player based on libopenmpt\n" +"\n" +"Written by: Chris Spiegel " +msgstr "" + +#: src/openmpt/mpt.cc:151 +msgid "Stereo separation:" +msgstr "" + +#: src/openmpt/mpt.cc:153 +msgid "%" +msgstr "%" + +#: src/openmpt/mpt.cc:157 +msgid "Interpolation:" +msgstr "" + +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 +msgid "Linear" +msgstr "" + +#: src/openmpt/mptwrap.h:52 +msgid "Cubic" +msgstr "" + +#: src/openmpt/mptwrap.h:53 +msgid "Windowed sinc" +msgstr "" + +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 +msgid "OSS4 Output" +msgstr "" + +#: src/oss4/oss.h:72 +msgid "OSS3 Output" +msgstr "" + +#: src/oss4/plugin.cc:35 +msgid "Default device" +msgstr "" + +#: src/oss4/plugin.cc:78 +msgid "Audio device:" +msgstr "" + +#: src/oss4/plugin.cc:81 +msgid "Use alternate device:" +msgstr "" + +#: src/oss4/plugin.cc:85 +msgid "Save volume between sessions." +msgstr "" + +#: src/oss4/plugin.cc:87 +msgid "Enable format conversions made by the OSS software." +msgstr "" + +#: src/oss4/plugin.cc:89 +msgid "Enable exclusive mode to prevent virtual mixing." +msgstr "" + +#: src/oss4/plugin.cc:101 +msgid "" +"OSS4 Output Plugin for Audacious\n" +"Copyright 2010-2012 Michał Lipski\n" +"\n" +"I would like to thank people on #audacious, especially Tony Vroon and John " +"Lindgren and of course the authors of the previous OSS plugin." +msgstr "" + +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Redare" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 +msgid "Playlist Manager" +msgstr "Manager de Playlist" + +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 +msgid "_Remove" +msgstr "_Elimină" + +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 +msgid "Ren_ame" +msgstr "" + +#: src/pls/pls.cc:35 +msgid "PLS Playlists" +msgstr "" + +#: src/psf/plugin.cc:53 +msgid "OpenPSF PSF1/PSF2 Decoder" +msgstr "" + +#: src/psf/plugin.cc:270 +msgid "OpenPSF Configuration" +msgstr "" + +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 +msgid "Ignore length from file" +msgstr "" + +#: src/pulse/pulse_audio.cc:42 +msgid "PulseAudio Output" +msgstr "" + +#: src/pulse/pulse_audio.cc:72 +msgid "Context name:" +msgstr "" + +#: src/pulse/pulse_audio.cc:74 +msgid "Stream name:" +msgstr "" + +#: src/pulse/pulse_audio.cc:575 +msgid "" +"Audacious PulseAudio Output Plugin\n" +"\n" +"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.\n" +"\n" +"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.\n" +"\n" +"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." +msgstr "" + +#: src/qtaudio/qtaudio.cc:44 +msgid "QtMultimedia Output" +msgstr "" + +#: src/qtaudio/qtaudio.cc:72 +msgid "" +"QtMultimedia Audio Output Plugin for Audacious\n" +"Copyright 2014 William Pitcock\n" +"\n" +"Based on SDL Output Plugin for Audacious\n" +"Copyright 2010 John Lindgren" +msgstr "" + +#: src/qtglspectrum/gl-spectrum.cc:41 +msgid "" +"OpenGL Spectrum Analyzer for Audacious\n" +"Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" +"Copyright 2014, 2020 Ariadne Conill\n" +"\n" +"Based on the XMMS plugin:\n" +"Copyright 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, and " +"4Front Technologies\n" +"\n" +"License: GPLv2+" +msgstr "" + +#: src/qthotkey/gui.cc:177 +msgid "Press a key combination inside a text field." +msgstr "" + +#: src/qthotkey/plugin.cc:107 +msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2020 i.Dark_Templar \n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributors include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " +msgstr "" + +#: src/qtui/menus.cc:109 +msgid "_Open Folder ..." +msgstr "" + +#: src/qtui/menus.cc:115 +msgid "_Add Folder ..." +msgstr "" + +#: src/qtui/menus.cc:128 +msgid "_Log Inspector ..." +msgstr "" + +#: src/qtui/menus.cc:218 +msgid "_Find ..." +msgstr "" + +#: src/qtui/menus.cc:254 src/skins/menus.cc:80 src/skins-qt/menus.cc:70 +msgid "Audio Settings ..." +msgstr "" + +#: src/qtui/playlist_model.cc:188 +msgid "Q#" +msgstr "" + +#: src/qtui/playlist_model.cc:190 +msgid "T#" +msgstr "" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + +#: src/qtui/qtui.cc:40 +msgid "Qt Interface" +msgstr "" + +#: src/qtui/search_bar.cc:46 +msgid "Search playlist" +msgstr "" + +#: src/qtui/settings.cc:58 +msgid "Always" +msgstr "" + +#: src/qtui/settings.cc:59 +msgid "Auto-hide" +msgstr "" + +#: src/qtui/settings.cc:60 +msgid "Never" +msgstr "" + +#: src/qtui/settings.cc:64 +msgid "Show playlist tabs:" +msgstr "" + +#: src/qtui/settings.cc:78 +msgid "Use bold font for column headers" +msgstr "" + +#: src/resample/resample.cc:43 +msgid "Sample Rate Converter" +msgstr "" + +#: src/resample/resample.cc:183 +msgid "" +"Sample Rate Converter Plugin for Audacious\n" +"Copyright 2010-2012 John Lindgren" +msgstr "" + +#: src/resample/resample.cc:187 +msgid "Skip/repeat samples" +msgstr "" + +#: src/resample/resample.cc:188 +msgid "Linear interpolation" +msgstr "" + +#: src/resample/resample.cc:189 +msgid "Fast sinc interpolation" +msgstr "" + +#: src/resample/resample.cc:190 +msgid "Medium sinc interpolation" +msgstr "" + +#: src/resample/resample.cc:191 +msgid "Best sinc interpolation" +msgstr "" + +#: src/resample/resample.cc:195 +msgid "Conversion" +msgstr "" + +#: src/resample/resample.cc:196 +msgid "Method:" +msgstr "Metodă:" + +#: src/resample/resample.cc:199 src/soxr/sox-resampler.cc:203 +msgid "Rate:" +msgstr "" + +#: src/resample/resample.cc:202 +msgid "Rate Mappings" +msgstr "" + +#: src/resample/resample.cc:203 +msgid "Use rate mappings" +msgstr "" + +#: src/resample/resample.cc:205 +msgid "8 kHz:" +msgstr "" + +#: src/resample/resample.cc:209 +msgid "16 kHz:" +msgstr "" + +#: src/resample/resample.cc:213 +msgid "22.05 kHz:" +msgstr "" + +#: src/resample/resample.cc:217 +msgid "32.0 kHz:" +msgstr "" + +#: src/resample/resample.cc:221 +msgid "44.1 kHz:" +msgstr "" + +#: src/resample/resample.cc:225 +msgid "48 kHz:" +msgstr "" + +#: src/resample/resample.cc:229 +msgid "88.2 kHz:" +msgstr "" + +#: src/resample/resample.cc:233 +msgid "96 kHz:" +msgstr "" + +#: src/resample/resample.cc:237 +msgid "176.4 kHz:" +msgstr "" + +#: src/resample/resample.cc:241 +msgid "192 kHz:" +msgstr "" + +#: src/scrobbler2/config_window.cc:19 +msgid "Checking Last.fm access ..." +msgstr "" + +#: src/scrobbler2/config_window.cc:27 +msgid "" +"Your scrobbles are being saved on your computer temporarily. They will be " +"submitted as soon as Audacious is allowed access." +msgstr "" + +#: src/scrobbler2/config_window.cc:33 +#, c-format +msgid "Permission granted. Scrobbling for user %s." +msgstr "" + +#: src/scrobbler2/config_window.cc:37 +msgid "" +"Permission denied. Open the following URL in a browser, allow Audacious " +"access to your account, and then click 'Check Permission' again:" +msgstr "" + +#: src/scrobbler2/config_window.cc:47 +msgid "There was a problem contacting Last.fm." +msgstr "" + +#: src/scrobbler2/config_window.cc:86 +msgid "Check Permission" +msgstr "" + +#: src/scrobbler2/config_window.cc:87 +msgid "Revoke Permission" +msgstr "" + +#: src/scrobbler2/config_window.cc:91 +msgid "You need to allow Audacious to scrobble tracks to your Last.fm account." +msgstr "" + +#: src/scrobbler2/scrobbler.cc:29 +msgid "Scrobbler 2.0" +msgstr "" + +#: src/scrobbler2/scrobbler.cc:226 +msgid "" +"The Scrobbler plugin could not be started.\n" +"There might be a problem with your installation." +msgstr "" + +#: src/scrobbler2/scrobbler.cc:291 +msgid "" +"Audacious Scrobbler Plugin 2.0 by Pitxyoki,\n" +"\n" +"Copyright © 2012-2013 Luís M. Picciochi Oliveira \n" +"\n" +"Thanks to John Lindgren for giving me a hand at the beginning of this " +"project.\n" +"\n" +msgstr "" + +#: src/scrobbler2/scrobbler_communication.cc:663 +msgid "" +"Audacious is now using an improved version of the Last.fm Scrobbler.\n" +"Please check the Preferences for the Scrobbler plugin." +msgstr "" + +#: src/sdlout/sdlout.cc:43 +msgid "SDL Output" +msgstr "" + +#: src/sdlout/sdlout.cc:72 +msgid "" +"SDL Output Plugin for Audacious\n" +"Copyright 2010 John Lindgren" +msgstr "" + +#: src/search-tool/library.cc:35 src/search-tool/library.cc:46 +#: src/search-tool-qt/library.cc:35 src/search-tool-qt/library.cc:46 +msgid "Library" +msgstr "" + +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 +#, c-format +msgid "%d song" +msgid_plural "%d songs" +msgstr[0] "%dcântec" +msgstr[1] "%dcântece" +msgstr[2] "%dcântece" + +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 +msgid "of this genre" +msgstr "" + +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 +msgid "on" +msgstr "" + +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 +msgid "by" +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 +msgid "Number of results to show:" +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 +msgid "Rescan library at startup" +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:170 +msgid "Monitor library for changes" +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 +msgid "" +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 +msgid "Please wait ..." +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 +msgid "Choose Folder" +msgstr "Alege un director" + +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 +msgid "Search library" +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 +#, c-format +msgid "%d of %d result shown" +msgid_plural "%d of %d results shown" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 +#, c-format +msgid "%d result" +msgid_plural "%d results" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 +msgid "_Create Playlist" +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 +msgid "_Add to Playlist" +msgstr "" + +#: src/sid/xmms-sid.cc:43 +msgid "SID Player" +msgstr "" + +#: src/sid/xs_config.cc:62 +msgid "Channels:" +msgstr "" + +#: src/sid/xs_config.cc:68 +msgid "Emulation" +msgstr "" + +#: src/sid/xs_config.cc:69 +msgid "Emulate MOS 8580 (default: MOS 6581)" +msgstr "" + +#: src/sid/xs_config.cc:71 +msgid "Do not automatically select chip model" +msgstr "" + +#: src/sid/xs_config.cc:73 +msgid "Emulate filter" +msgstr "" + +#: src/sid/xs_config.cc:75 +msgid "Clock speed:" +msgstr "" + +#: src/sid/xs_config.cc:78 +msgid "Do not automatically select clock speed" +msgstr "" + +#: src/sid/xs_config.cc:80 +msgid "Playback time" +msgstr "" + +#: src/sid/xs_config.cc:81 +msgid "Set maximum playback time:" +msgstr "" + +#: src/sid/xs_config.cc:87 +msgid "Use only when song length is unknown" +msgstr "" + +#: src/sid/xs_config.cc:90 +msgid "Set minimum playback time:" +msgstr "" + +#: src/sid/xs_config.cc:96 +msgid "Subtunes" +msgstr "" + +#: src/sid/xs_config.cc:97 +msgid "Enable subtunes" +msgstr "" + +#: src/sid/xs_config.cc:99 +msgid "Ignore subtunes shorter than:" +msgstr "" + +#: src/sid/xs_config.cc:105 +msgid "Note" +msgstr "" + +#: src/silence-removal/silence-removal.cc:39 +msgid "Silence Removal" +msgstr "" + +#: src/silence-removal/silence-removal.cc:58 +msgid "" +"Silence Removal Plugin for Audacious\n" +"Copyright 2014 John Lindgren" +msgstr "" + +#: src/silence-removal/silence-removal.cc:67 +msgid "Silence Removal" +msgstr "" + +#: src/silence-removal/silence-removal.cc:68 +msgid "Threshold:" +msgstr "" + +#: src/silence-removal/silence-removal.cc:70 +msgid "dB" +msgstr "dB" + +#: src/skins/actions.cc:45 src/skins-qt/actions.cc:43 +msgid "Repeat points cleared." +msgstr "" + +#: src/skins/actions.cc:60 src/skins-qt/actions.cc:58 +msgid "Repeat point A set." +msgstr "" + +#: src/skins/actions.cc:65 src/skins-qt/actions.cc:63 +msgid "Repeat point B set." +msgstr "" + +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 +msgid "Preamp" +msgstr "Preamplificator" + +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 +msgid "31 Hz" +msgstr "31 Hz" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "63 Hz" +msgstr "63 Hz" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "125 Hz" +msgstr "125 Hz" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "250 Hz" +msgstr "250 Hz" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "500 Hz" +msgstr "500 Hz" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "1 kHz" +msgstr "1 kHz" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "2 kHz" +msgstr "2 kHz" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "4 kHz" +msgstr "4 kHz" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "8 kHz" +msgstr "8 kHz" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "16 kHz" +msgstr "16 kHz" + +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 +msgid "Audacious Equalizer" +msgstr "" + +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 +msgid "Recording on" +msgstr "" + +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 +msgid "Recording off" +msgstr "" + +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 +#, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "" + +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 +#, c-format +msgid "Volume: %d%%" +msgstr "Volum: %d%%" + +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 +#, c-format +msgid "Balance: %d%% left" +msgstr "" + +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 +msgid "Balance: center" +msgstr "" + +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 +#, c-format +msgid "Balance: %d%% right" +msgstr "" + +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 +msgid "Options Menu" +msgstr "" + +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 +msgid "Disable 'Always On Top'" +msgstr "" + +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 +msgid "Enable 'Always On Top'" +msgstr "" + +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 +msgid "File Info Box" +msgstr "" + +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 +#: src/skins-qt/menus.cc:142 +msgid "Double Size" +msgstr "" + +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 +msgid "Visualizations" +msgstr "" + +#: src/skins/menus.cc:74 src/skins-qt/menus.cc:64 +msgid "Volume Up" +msgstr "" + +#: src/skins/menus.cc:75 src/skins-qt/menus.cc:65 +msgid "Volume Down" +msgstr "" + +#: src/skins/menus.cc:77 src/skins-qt/menus.cc:67 +msgid "Effects ..." +msgstr "" + +#: src/skins/menus.cc:84 src/skins-qt/menus.cc:74 +msgid "Open Files ..." +msgstr "" + +#: src/skins/menus.cc:85 src/skins-qt/menus.cc:76 +msgid "Open URL ..." +msgstr "" + +#: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 +msgid "Playlist" +msgstr "Listă de redare" + +#: src/skins/menus.cc:90 src/skins-qt/menus.cc:81 +msgid "Output" +msgstr "" + +#: src/skins/menus.cc:91 src/skins-qt/menus.cc:82 +msgid "View" +msgstr "" + +#: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 +#: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 +msgid "Services" +msgstr "Servicii" + +#: src/skins/menus.cc:95 src/skins-qt/menus.cc:86 +msgid "About ..." +msgstr "" + +#: src/skins/menus.cc:96 src/skins-qt/menus.cc:87 +msgid "Settings ..." +msgstr "" + +#: src/skins/menus.cc:97 src/skins-qt/menus.cc:88 +msgid "Quit" +msgstr "" + +#: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 +#: src/skins-qt/menus.cc:229 +msgid "Song Info ..." +msgstr "" + +#: src/skins/menus.cc:105 src/skins-qt/menus.cc:96 +msgid "Shuffle by Album" +msgstr "" + +#: src/skins/menus.cc:106 src/skins-qt/menus.cc:97 +msgid "No Playlist Advance" +msgstr "" + +#: src/skins/menus.cc:117 src/skins-qt/menus.cc:108 +msgid "Set A-B Repeat" +msgstr "" + +#: src/skins/menus.cc:118 src/skins-qt/menus.cc:109 +msgid "Clear A-B Repeat" +msgstr "" + +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 +msgid "Jump to Song ..." +msgstr "" + +#: src/skins/menus.cc:121 src/skins-qt/menus.cc:113 +msgid "Jump to Time ..." +msgstr "" + +#: src/skins/menus.cc:125 src/skins-qt/menus.cc:118 +msgid "Play/Resume" +msgstr "" + +#: src/skins/menus.cc:127 src/skins-qt/menus.cc:120 +msgid "New Playlist" +msgstr "Listă de redare nouă" + +#: src/skins/menus.cc:128 src/skins-qt/menus.cc:121 +msgid "Rename Playlist ..." +msgstr "" + +#: src/skins/menus.cc:129 src/skins-qt/menus.cc:122 +msgid "Remove Playlist" +msgstr "Elimină Lista de redare" + +#: src/skins/menus.cc:131 src/skins-qt/menus.cc:124 +msgid "Previous Playlist" +msgstr "" + +#: src/skins/menus.cc:132 src/skins-qt/menus.cc:125 +msgid "Next Playlist" +msgstr "" + +#: src/skins/menus.cc:134 src/skins-qt/menus.cc:127 +msgid "Import Playlist ..." +msgstr "" + +#: src/skins/menus.cc:135 src/skins-qt/menus.cc:128 +msgid "Export Playlist ..." +msgstr "" + +#: src/skins/menus.cc:137 src/skins-qt/menus.cc:130 +msgid "Playlist Manager ..." +msgstr "" + +#: src/skins/menus.cc:138 src/skins-qt/menus.cc:131 +msgid "Queue Manager ..." +msgstr "" + +#: src/skins/menus.cc:140 src/skins-qt/menus.cc:133 +msgid "Refresh Playlist" +msgstr "" + +#: src/skins/menus.cc:144 src/skins-qt/menus.cc:137 +msgid "Show Playlist Editor" +msgstr "" + +#: src/skins/menus.cc:145 src/skins-qt/menus.cc:138 +msgid "Show Equalizer" +msgstr "" + +#: src/skins/menus.cc:147 src/skins-qt/menus.cc:140 +msgid "Show Remaining Time" +msgstr "" + +#: src/skins/menus.cc:150 src/skins-qt/menus.cc:143 +msgid "Always on Top" +msgstr "" + +#: src/skins/menus.cc:151 src/skins-qt/menus.cc:145 +msgid "On All Workspaces" +msgstr "" + +#: src/skins/menus.cc:153 src/skins-qt/menus.cc:148 +msgid "Roll Up Player" +msgstr "" + +#: src/skins/menus.cc:154 src/skins-qt/menus.cc:149 +msgid "Roll Up Playlist Editor" +msgstr "" + +#: src/skins/menus.cc:155 src/skins-qt/menus.cc:150 +msgid "Roll Up Equalizer" +msgstr "" + +#: src/skins/menus.cc:163 src/skins-qt/menus.cc:158 +msgid "Add URL ..." +msgstr "" + +#: src/skins/menus.cc:164 src/skins-qt/menus.cc:160 +msgid "Add Files ..." +msgstr "" + +#: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 +msgid "By Title" +msgstr "" + +#: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 +msgid "By File Name" +msgstr "" + +#: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 +msgid "By File Path" +msgstr "" + +#: src/skins/menus.cc:176 src/skins-qt/menus.cc:172 +msgid "Remove All" +msgstr "" + +#: src/skins/menus.cc:177 src/skins-qt/menus.cc:173 +msgid "Clear Queue" +msgstr "" + +#: src/skins/menus.cc:179 src/skins-qt/menus.cc:175 +msgid "Remove Unavailable Files" +msgstr "" + +#: src/skins/menus.cc:180 src/skins-qt/menus.cc:176 +msgid "Remove Duplicates" +msgstr "" + +#: src/skins/menus.cc:182 src/skins-qt/menus.cc:178 +msgid "Remove Unselected" +msgstr "" + +#: src/skins/menus.cc:183 src/skins-qt/menus.cc:179 +msgid "Remove Selected" +msgstr "" + +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 +msgid "Search and Select" +msgstr "" + +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 +msgid "Invert Selection" +msgstr "" + +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 +msgid "Select None" +msgstr "" + +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 +msgid "Select All" +msgstr "" + +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 +msgid "By Track Number" +msgstr "" + +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 +msgid "By Artist" +msgstr "" + +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 +msgid "By Album" +msgstr "" + +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 +msgid "By Album Artist" +msgstr "" + +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 +msgid "By Release Date" +msgstr "" + +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 +msgid "By Genre" +msgstr "" + +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 +msgid "By Length" +msgstr "" + +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 +msgid "By Custom Title" +msgstr "" + +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 +msgid "By Comment" +msgstr "" + +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 +msgid "Randomize List" +msgstr "" + +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 +msgid "Reverse List" +msgstr "" + +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 +msgid "Sort Selected" +msgstr "" + +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 +msgid "Sort List" +msgstr "" + +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 +msgid "Open Containing Folder" +msgstr "" + +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 +msgid "Cut" +msgstr "" + +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 +msgid "Copy" +msgstr "Copiază" + +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 +msgid "Paste" +msgstr "" + +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 +msgid "Paste at End" +msgstr "" + +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 +msgid "Queue/Unqueue" +msgstr "" + +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 +#, c-format +msgid "%s (%d of %d)" +msgstr "" + +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 +msgid "Audacious Playlist Editor" +msgstr "" + +#: src/skins/plugin.cc:49 src/skins-qt/plugin.cc:64 +msgid "Winamp Classic Interface" +msgstr "" + +#: src/skins-qt/menus.cc:75 +msgid "Open Folder ..." +msgstr "" + +#: src/skins-qt/menus.cc:159 +msgid "Add Folder ..." +msgstr "" + +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 +msgid "Player:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 +msgid "Select main player window font:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 +msgid "Playlist:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 +msgid "Select playlist font:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 +msgid "Skin" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 +msgid "Fonts" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 +msgid "Scroll song title" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 +msgid "Scroll song title in both directions" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 +msgid "Analyzer" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 +msgid "Scope" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 +msgid "Voiceprint / VU meter" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 +msgid "Off" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 +#: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 +msgid "Normal" +msgstr "Normal" + +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 +#: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 +msgid "Fire" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 +msgid "Vertical lines" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 +msgid "Lines" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 +msgid "Bars" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 +msgid "Slowest" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 +msgid "Slow" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 +#: src/soxr/sox-resampler.cc:180 +msgid "Medium" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 +msgid "Fast" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 +msgid "Fastest" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 +msgid "Dots" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 +msgid "Line" +msgstr "Linie" + +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 +msgid "Solid" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 +msgid "Ice" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 +msgid "Smooth" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 +msgid "Coloring:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 +msgid "Style:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 +msgid "Falloff:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 +msgid "Peak falloff:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 +msgid "Scope Style:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 +msgid "Voiceprint Coloring:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 +msgid "VU Meter Style:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 +msgid "Type" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 +msgid "Visualization type:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 +msgid "Analyzer" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 +msgid "Show peaks" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 +msgid "Visualization" +msgstr "Vizualizare" + +#: src/skins-qt/skinselector.cc:98 src/skins/skinselector.cc:111 +msgid "Archived Winamp 2.x skin" +msgstr "" + +#: src/skins-qt/skinselector.cc:102 src/skins/skinselector.cc:115 +msgid "Unarchived Winamp 2.x skin" +msgstr "" + +#: src/sndfile/plugin.cc:38 +msgid "Sndfile Plugin" +msgstr "" + +#: src/sndfile/plugin.cc:372 +msgid "" +"Based on the xmms_sndfile plugin:\n" +"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" +"\n" +"Adapted for Audacious by Tony Vroon \n" +"\n" +"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.\n" +"\n" +"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.\n" +"\n" +"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." +msgstr "" + +#: src/sndio/sndio.cc:43 +msgid "Sndio Output" +msgstr "" + +#: src/sndio/sndio.cc:98 +msgid "Device (blank for default):" +msgstr "" + +#: src/sndio/sndio.cc:100 +msgid "Save and restore volume:" +msgstr "" + +#: src/sndio/sndio.cc:181 +#, c-format +msgid "Sndio error: Unsupported audio format (%d)" +msgstr "" + +#: src/sndio/sndio.cc:192 +msgid "Sndio error: sio_open() failed" +msgstr "" + +#: src/sndio/sndio.cc:221 +msgid "Sndio error: sio_setpar() failed" +msgstr "" + +#: src/sndio/sndio.cc:233 +msgid "Sndio error: sio_start() failed" +msgstr "" + +#: src/songchange/song_change.cc:30 +msgid "Song Change" +msgstr "" + +#: src/songchange/song_change.cc:245 +msgid "Commands" +msgstr "" + +#: src/songchange/song_change.cc:247 +msgid "Command to run when starting a new song:" +msgstr "" + +#: src/songchange/song_change.cc:250 +msgid "Command to run at the end of a song:" +msgstr "" + +#: src/songchange/song_change.cc:253 +msgid "Command to run at the end of the playlist:" +msgstr "" + +#: src/songchange/song_change.cc:256 +msgid "Command to run when song title changes (for network streams):" +msgstr "" + +#: src/songchange/song_change.cc:259 +msgid "" +"You can use the following format codes, which will be replaced before " +"running the command (not all are useful for the end-of-playlist command):" +msgstr "" + +#: src/songchange/song_change.cc:262 +msgid "" +"%a: Artist\n" +"%b: Album\n" +"%c: Number of channels\n" +"%f: File name (full path)\n" +"%F: Frequency (Hertz)\n" +"%l: Length (milliseconds)\n" +"%n or %s: Formatted title (see playlist settings)\n" +"%p: Currently playing (1 or 0)\n" +"%r: Rate (bits per second)\n" +"%t: Playlist position\n" +"%T: Title (unformatted)" +msgstr "" + +#: src/songchange/song_change.cc:273 +msgid "" +"Parameters passed to the shell should be enclosed in quotation marks. " +"Unquoted parameters may lead to unexpected results." +msgstr "" + +#: src/song-info-qt/song-info.cc:30 +msgid "Song Info" +msgstr "Informații despre melodie" + +#: src/soxr/sox-resampler.cc:44 +msgid "SoX Resampler" +msgstr "" + +#: src/soxr/sox-resampler.cc:172 +msgid "" +"SoX Resampler Plugin for Audacious\n" +"Copyright 2013 Michał Lipski\n" +"\n" +"Based on Sample Rate Converter Plugin:\n" +"Copyright 2010-2012 John Lindgren" +msgstr "" + +#: src/soxr/sox-resampler.cc:178 +msgid "Quick" +msgstr "" + +#: src/soxr/sox-resampler.cc:179 +msgid "Low" +msgstr "" + +#: src/soxr/sox-resampler.cc:181 +msgid "High" +msgstr "" + +#: src/soxr/sox-resampler.cc:182 +msgid "Very High" +msgstr "" + +#: src/soxr/sox-resampler.cc:183 +msgid "Ultra High" +msgstr "" + +#: src/soxr/sox-resampler.cc:187 +msgid "Minimum" +msgstr "" + +#: src/soxr/sox-resampler.cc:188 +msgid "Intermediate" +msgstr "" + +#: src/soxr/sox-resampler.cc:193 +msgid "Quality:" +msgstr "Calitate:" + +#: src/soxr/sox-resampler.cc:196 +msgid "Phase:" +msgstr "" + +#: src/soxr/sox-resampler.cc:200 +msgid "Allow aliasing" +msgstr "" + +#: src/soxr/sox-resampler.cc:202 +msgid "Use steep filter" +msgstr "" + +#: src/speedpitch/speed-pitch.cc:54 +msgid "Speed and Pitch" +msgstr "" + +#: src/speedpitch/speed-pitch.cc:247 +msgid "Speed" +msgstr "" + +#: src/speedpitch/speed-pitch.cc:248 +msgid "Decouple from pitch" +msgstr "" + +#: src/speedpitch/speed-pitch.cc:250 src/speedpitch/speed-pitch.cc:258 +msgid "Multiplier:" +msgstr "" + +#: src/speedpitch/speed-pitch.cc:254 +msgid "Pitch" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:44 src/statusicon/statusicon.cc:47 +msgid "Status Icon" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:65 +msgid "" +"Status Icon Plugin (partial port for Qt interface)\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 Michał Lipski \n" +"Copyright 2015 Eugene Paskevich \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager." +msgstr "" + +#: src/statusicon-qt/statusicon.cc:86 src/statusicon/statusicon.cc:380 +msgid "Mouse Scroll Action" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:87 src/statusicon/statusicon.cc:381 +msgid "Change volume" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:90 src/statusicon/statusicon.cc:384 +msgid "Change playing song" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:93 src/statusicon/statusicon.cc:387 +msgid "Other Settings" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:94 src/statusicon/statusicon.cc:388 +msgid "Disable the popup window" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:96 src/statusicon/statusicon.cc:390 +msgid "Close to the system tray" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:98 src/statusicon/statusicon.cc:392 +msgid "Advance in playlist when scrolling upward" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:113 src/statusicon/statusicon.cc:283 +msgid "Se_ttings ..." +msgstr "" + +#: src/statusicon/statusicon.cc:373 +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 Michał Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager." +msgstr "" + +#: src/stereo_plugin/stereo.cc:19 +msgid "Extra Stereo" +msgstr "" + +#: src/stereo_plugin/stereo.cc:36 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin, 1999" +msgstr "" + +#: src/stereo_plugin/stereo.cc:44 +msgid "Extra Stereo" +msgstr "" + +#: src/streamtuner/icecast-model.cc:126 src/streamtuner/shoutcast-model.cc:131 +msgid "Type" +msgstr "" + +#: src/streamtuner/icecast-model.cc:132 +msgid "Current Song" +msgstr "" + +#: src/streamtuner/icecast-model.cc:164 +msgid "Other" +msgstr "" + +#: src/streamtuner/ihr-model.cc:63 +msgid "Market" +msgstr "" + +#: src/streamtuner/ihr-model.cc:156 +msgid "Call Letters" +msgstr "" + +#: src/streamtuner/ihr-model.cc:162 +msgid "Description" +msgstr "Descriere" + +#: src/streamtuner/shoutcast-model.cc:128 +msgid "Listeners" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:188 +msgid "Top 500 Stations" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:189 +msgid "Alternative" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:190 +msgid "Blues" +msgstr "Blues" + +#: src/streamtuner/shoutcast-model.cc:191 +msgid "Classical" +msgstr "Clasic" + +#: src/streamtuner/shoutcast-model.cc:192 +msgid "Country" +msgstr "Country" + +#: src/streamtuner/shoutcast-model.cc:193 +msgid "Decades" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:194 +msgid "Easy Listening" +msgstr "Easy Listening" + +#: src/streamtuner/shoutcast-model.cc:195 +msgid "Electronic" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:196 +msgid "Folk" +msgstr "Folk" + +#: src/streamtuner/shoutcast-model.cc:197 +msgid "Inspirational" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:198 +msgid "International" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:199 +msgid "Jazz" +msgstr "Jazz" + +#: src/streamtuner/shoutcast-model.cc:200 +msgid "Latin" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:201 +msgid "Metal" +msgstr "Metal" + +#: src/streamtuner/shoutcast-model.cc:203 +msgid "New Age" +msgstr "New Age" + +#: src/streamtuner/shoutcast-model.cc:204 +msgid "Pop" +msgstr "Pop" + +#: src/streamtuner/shoutcast-model.cc:205 +msgid "Public Radio" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:206 +msgid "R&B and Urban" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:207 +msgid "Rap" +msgstr "Rap" + +#: src/streamtuner/shoutcast-model.cc:208 +msgid "Reggae" +msgstr "Reggae" + +#: src/streamtuner/shoutcast-model.cc:209 +msgid "Rock" +msgstr "Rock" + +#: src/streamtuner/shoutcast-model.cc:210 +msgid "Seasonal and Holiday" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:211 +msgid "Soundtracks" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:212 +msgid "Talk" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:213 +msgid "Themes" +msgstr "" + +#: src/streamtuner/streamtuner.cc:59 +msgid "Shoutcast" +msgstr "" + +#: src/streamtuner/streamtuner.cc:60 +msgid "Icecast" +msgstr "" + +#: src/streamtuner/streamtuner.cc:71 +msgid "Stream Tuner" +msgstr "" + +#: src/tonegen/tonegen.cc:45 +msgid "Tone Generator" +msgstr "" + +#: src/tonegen/tonegen.cc:92 +#, c-format +msgid "%s %.1f Hz" +msgstr "%s %.1f Hz" + +#: src/tonegen/tonegen.cc:92 +msgid "Tone Generator: " +msgstr "" + +#: src/tonegen/tonegen.cc:161 +msgid "" +"Sine tone generator by Håvard Kvålen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" +msgstr "" + +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Mesajele următoare au fost ascunse.)" + +#: src/ui-common/dialogs-qt.cc:52 +msgid "Working ..." +msgstr "Se lucrează ..." + +#: src/ui-common/dialogs-qt.cc:73 +msgid "Information" +msgstr "Informații" + +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + +#: src/voice_removal/voice_removal.cc:28 +msgid "Voice Removal" +msgstr "" + +#: src/vorbis/vorbis.cc:431 +msgid "" +"Audacious Ogg Vorbis Decoder\n" +"\n" +"Based on the Xiph.org Foundation's Ogg Vorbis Plugin:\n" +"http://www.xiph.org/\n" +"\n" +"Original code by:\n" +"Tony Arcieri \n" +"\n" +"Contributions from:\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Håvard Kvålen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin " +msgstr "" + +#: src/vorbis/vorbis.h:18 +msgid "Ogg Vorbis Decoder" +msgstr "" + +#: src/vtx/info.cc:24 +#, c-format +msgid "Details about %s" +msgstr "" + +#: src/vtx/info.cc:26 +msgid "" +"Title: %t\n" +"Author: %a\n" +"From: %f\n" +"Tracker: %T\n" +"Comment: %C\n" +"Chip type: %c\n" +"Stereo: %s\n" +"Loop: %l\n" +"Chip freq: %F\n" +"Player Freq: %P\n" +"Year: %y" +msgstr "" + +#: src/vtx/vtx.cc:38 +msgid "VTX Decoder" +msgstr "" + +#: src/vtx/vtx.cc:178 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Based on in_vtx.dll by Roman Sherbakov \n" +"Audacious plugin by Pavel Vymetalek " +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:31 +msgid "" +"VU Meter Plugin for Audacious\n" +"Copyright 2017-2019 Marc Sánchez Fauste" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:35 +msgid "VU Meter Settings" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:37 +msgid "Peak hold time:" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:42 +msgid "Fall-off time:" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:44 +msgid "dB/second" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:46 +msgid "Display legend" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.h:37 +msgid "VU Meter" +msgstr "" + +#: src/waveout/waveout.cc:43 +msgid "Win32 waveOut" +msgstr "" + +#: src/waveout/waveout.cc:69 +msgid "" +"Win32 waveOut Plugin for Audacious\n" +"Copyright 2016 John Lindgren" +msgstr "" + +#: src/wavpack/wavpack.cc:25 +msgid "WavPack Decoder" +msgstr "" + +#: src/wavpack/wavpack.cc:217 +msgid "lossy (hybrid)" +msgstr "" + +#: src/wavpack/wavpack.cc:219 +msgid "lossy" +msgstr "" + +#: src/wavpack/wavpack.cc:259 +msgid "" +"Copyright 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan." +msgstr "" + +#: src/xsf/plugin.cc:74 +msgid "2SF Decoder" +msgstr "" + +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 +msgid "XSF Configuration" +msgstr "" + +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + +#: src/xspf/xspf.cc:95 +msgid "XML Shareable Playlists (XSPF)" +msgstr "" diff -Nru audacious-plugins-4.1/po/ru.po audacious-plugins-4.3.1/po/ru.po --- audacious-plugins-4.1/po/ru.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/ru.po 2023-04-29 20:17:32.000000000 +0000 @@ -7,7 +7,8 @@ # Alexander Orlov , 2007 # Alexa Poruch , 2020 # Денис , 2014 -# Andrei Stepanov , 2014-2015 +# Andrei Stepanov, 2014-2015,2022-2023 +# Arnold Layne, 2021 # Danila E , 2018 # dartraiden, 2018 # 85f5ad14c5f803c69d22f4aeb4ef6a7e, 2018 @@ -45,7 +46,9 @@ # Oleg , 2012 # Victor Ponomarev , 2013 # Volk Daemon , 2016,2018 +# Алексей , 2022 # Алексей , 2013 +# Артём Котлубай , 2022 # Виктор Голованенко , 2020 # Денис , 2014-2015 # Денис Локтев , 2017 @@ -54,18 +57,18 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Andrei Stepanov, 2014-2015,2022-2023\n" "Language-Team: Russian (http://www.transifex.com/audacious/audacious/" "language/ru/)\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" -"%100>=11 && n%100<=14)? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || " +"(n%100>=11 && n%100<=14)? 2 : 3);\n" #: src/aac/aac.cc:19 msgid "AAC (Raw) Decoder" @@ -76,7 +79,7 @@ msgstr "AdPlug (проигрыватель AdLib)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "последовательный" @@ -88,9 +91,11 @@ msgid "OPL Emulator:" msgstr "Эмулятор OPL:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Частота дискретизации" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Частота дискретизации:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -106,7 +111,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Разное" @@ -114,258 +119,6 @@ msgid "Repeat song in endless loop" msgstr "Повторить песню в бесконечном цикле" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Будильник" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Установить будильник ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Модуль, который используется для запуска воспроизведения в определённое " -"время.\n" -"\n" -"Изначально написан Adam Feakin и Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Время\n" -" Сигнал в:\n" -" Время, в которое произойдёт сигнал.\n" -"\n" -" Тишина после:\n" -" Прекратить сигнал после заданного промежутка времени.\n" -" (если диалог пробуждения не закрыт)\n" -"\n" -"\n" -"Дни\n" -" День:\n" -" Выберите дни активации сигнала.\n" -"\n" -" Время:\n" -" Выберите время сигнала для выбранных дней,\n" -" или выберите кнопку-тумблер для времени по умолчанию.\n" -"\n" -"\n" -"Уровень\n" -" Угасание:\n" -" Приглушите уровень относительно текущего уровня.\n" -" для выбранного периода времени.\n" -"\n" -" Начать в:\n" -" Начать угасание с этого уровня.\n" -"\n" -" Завершение:\n" -" Уровень остановки угасания. Если время\n" -" угасания 0, тогда установить уровень на указанное значение\n" -" и начать воспроизведение.\n" -"\n" -"\n" -"Опции:\n" -" Дополнительная команда:\n" -" Запустить эту команду во время сигнала.\n" -"\n" -" Список воспроизведения:\n" -" Загрузить данный список. Если не указан\n" -" список, будет использоваться текущий.\n" -" Сюда может быть введён URL потока mp3/ogg.\n" -"\n" -" Напоминание:\n" -" Показать напоминание, когда сигнал закончится.\n" -" Введите напоминание в поле ввода и поставьте\n" -" галочку, если хотите чтобы оно отображалось." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Это ваш звонок будильника" - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Напоминание на сегодняшний день..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Напоминание" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Понедельник" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Вторник" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Среда" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Четверг" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Пятница" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Суббота" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Воскресенье" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Время" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Будильник в (по умолчанию):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "ч" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Перестать звонить после:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "часы" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "минуты" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Выберите дни, в которые будет срабатывать будильник" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "День" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "По умолчанию" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Дни" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Плавное нарастание громкости" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "секунд" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Громкость" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Начать c" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "В конце" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Текущее" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Дополнительная команда" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "включить" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Плейлист (необязательно)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Выберите список воспроизведения" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Параметры" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Что означают эти опции?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Справка" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Обложка альбома" @@ -468,7 +221,7 @@ #: src/amidiplug/i_configure.cc:110 msgid "Override default reverb:" -msgstr "Заменить ревербацию по умолчанию:" +msgstr "Заменить реверберацию по умолчанию:" #: src/amidiplug/i_configure.cc:112 src/amidiplug/i_configure.cc:120 msgid "On" @@ -484,7 +237,7 @@ #: src/amidiplug/i_configure.cc:129 msgid "Transpose:" -msgstr "Транспонирование: " +msgstr "Транспонирование:" #: src/amidiplug/i_configure.cc:131 src/speedpitch/speed-pitch.cc:257 msgid "semitones" @@ -492,7 +245,7 @@ #: src/amidiplug/i_configure.cc:132 msgid "Drum shift:" -msgstr "Смещение ударных: " +msgstr "Смещение ударных:" #: src/amidiplug/i_configure.cc:134 msgid "note numbers" @@ -514,87 +267,83 @@ msgid "Synthesizer" msgstr "Синтезатор" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Частота дискретизации:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - выбор файла SoundFont" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" -msgstr "Закончить" +msgstr "От_мена" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Открыть" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Имя файла" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Размер (байт)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Имя:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr "Информация MIDI " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Формат:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Длительность (мс):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Количество дорожек:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "переменный" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Time Div:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr "Комментарии и тексты MIDI " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* в этом MIDI-файле нет комментариев *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* в этом MIDI-файле нет текстов *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" -msgstr "Закрыть" +msgstr "З_акрыть" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (неверный UTF-8)" @@ -650,7 +399,7 @@ msgid "Concave Rectangle" msgstr "Вогнутый прямоугольник" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Нет" @@ -682,100 +431,100 @@ #: src/aosd/aosd_trigger.cc:67 msgid "Pause Off" -msgstr "Пауза выкл." +msgstr "Пауза откл." #: src/aosd/aosd_trigger.cc:68 msgid "Triggers OSD when playback is unpaused." msgstr "Показать OSD, когда воспроизведение возобновляется." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Расположение" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Смещение по оси X:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Смещение по оси Y:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Максимальная ширина OSD:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Параметры для систем с несколькими мониторами" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Показать OSD:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "на всех мониторах" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "на мониторе %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Время (мс)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" -msgstr "отображения:" +msgstr "Отображения:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" -msgstr "появления:" +msgstr "Появления:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" -msgstr "затухания:" +msgstr "Затухания:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Шрифты" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Шрифт %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Тень" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Стиль отображения" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Цвета" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Цвет %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Включить событие" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Событие" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Найден композитный менеджер" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -783,65 +532,65 @@ msgstr "" "Композитный менеджер не найден;\n" "Пожалуйста, запустите композитный менеджер; в противном случае\n" -"OSD не будет работать корректно." +"OSD не будет работать правильно." -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "" "Для режима \"Имитированная прозрачность\" композитный менеджер не требуется." -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Прозрачность" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Имитированная прозрачность" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Настоящая прозрачность (требуется расширение X Composite)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Расширение X Composite не загружено" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Положение" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Анимация" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Текст" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Стиль" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "События" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Прочее" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Тест" #: src/asx3/asx3.cc:35 msgid "ASXv3 Playlists" -msgstr "Плейлисты ASXv3" +msgstr "Списки воспроизведения ASXv3" #: src/asx/asx.cc:33 msgid "ASXv1/ASXv2 Playlists" @@ -851,11 +600,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Списки воспроизведения Audacious (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Биткрашер" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Разрядность:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Коэффициент понижения дискретизации:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Биткрашер" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Цвет" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Размывающийся уровень" @@ -867,6 +632,10 @@ msgid "Presets:" msgstr "Заготовки:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "По умолчанию" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Уровень смешивания каналов:" @@ -879,13 +648,13 @@ msgid "Cut frequency:" msgstr "Частота среза:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Анализатор спектра" #: src/cdaudio/cdaudio-ng.cc:71 msgid "Audio CD Plugin" -msgstr "Модуль аудио CD" +msgstr "Модуль аудио-CD" #: src/cdaudio/cdaudio-ng.cc:118 msgid "" @@ -898,7 +667,7 @@ "\n" "This was a Google Summer of Code 2007 project." msgstr "" -"Copyright (c) 2007-2012 Calin Crisan и команда " +"Авторское право (c) 2007-2012 Calin Crisan и команда " "разработчиков Audacious.\n" "\n" "Автор выражает благодарность разработчикам библиотеки libcdio Compression" @@ -1093,13 +862,20 @@ msgid "Default song length:" msgstr "Длительность композиции по умолчанию:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "секунд" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Передискретизация" #: src/console/plugin.cc:43 msgid "Enable audio resampling" -msgstr "Включить преобразование" +msgstr "Включить передискретизацию аудио" #: src/console/plugin.cc:49 msgid "SPC" @@ -1107,7 +883,7 @@ #: src/console/plugin.cc:50 msgid "Ignore length from SPC tags" -msgstr "Игнорировать длительность из тегов SPC" +msgstr "Игнорировать длительность из меток SPC" #: src/console/plugin.cc:52 msgid "Increase reverb" @@ -1121,7 +897,7 @@ msgid "CoreAudio output" msgstr "Выход CoreAudio" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1141,11 +917,11 @@ "Основан на Модуле Вывода SDL для Audacious\n" "Copyright 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Эксклюзивный режим" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" "Использовать улучшение звука (адаптация частоты дискретизации устройства)" @@ -1155,12 +931,12 @@ "Crossfade Plugin for Audacious\n" "Copyright 2010-2014 John Lindgren" msgstr "" -"Модуль наложения для Audacious\n" +"Модуль перекрёстного затухания для Audacious\n" "Copyright 2010-2014 John Lindgren" #: src/crossfade/crossfade.cc:47 msgid "Crossfade" -msgstr "Плавный переход" +msgstr "Перекрёстное затухание" #: src/crossfade/crossfade.cc:48 msgid "On automatic song change" @@ -1183,12 +959,12 @@ "For better crossfading, enable\n" "the Silence Removal effect." msgstr "" -"Для лучшего наложения включите\n" -"эффект удаления тишины." +"Для лучшего перекрёстного затухания\n" +"включите эффект удаления тишины." #: src/crossfade/crossfade.cc:71 msgid "Crossfade" -msgstr "Плавный переход" +msgstr "Перекрёстное затухание" #: src/crystalizer/crystalizer.cc:31 msgid "Crystalizer" @@ -1204,16 +980,16 @@ #: src/cue/cue.cc:42 msgid "Cue Sheet Plugin" -msgstr "Модуль Cue листов" +msgstr "Модуль файлов разметки Cue Sheet" #: src/delete-files/delete-files.cc:53 src/delete-files/delete-files.cc:215 #: src/delete-files/delete-files.cc:230 msgid "Delete Files" -msgstr "Удалить файлы" +msgstr "Удаление файлов" #: src/delete-files/delete-files.cc:120 msgid "No files are selected." -msgstr "Файлы не выбраны" +msgstr "Файлы не выбраны." #: src/delete-files/delete-files.cc:125 #, c-format @@ -1243,20 +1019,20 @@ msgid "Delete" msgstr "Удалить" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Отмена" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Удалить выбранный файлы" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" -msgstr "Метод удаления" +msgstr "Способ удаления" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Перемещать в корзину вместо немедленного удаления" @@ -1282,7 +1058,7 @@ msgstr "Задержка:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "мс" @@ -1298,11 +1074,11 @@ msgid "Echo" msgstr "Эхо" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Модуль FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1311,7 +1087,7 @@ "William Pitcock \n" "Matti Hämäläinen " msgstr "" -"Модуль мультиформатного аудио-декодера для Audacious\n" +"Модуль мультиформатного звукового декодера для Audacious\n" "основан на FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" "\n" "Авторы модуля для Audacious:\n" @@ -1347,17 +1123,17 @@ "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" -"Это свободная программа; вы можете повторно распространять ее и/или " -"модифицировать его в соответствии с условиями GNU General Public License, " -"опубликованной Free Software Foundation; либо версии 2 Лицензии, либо (по " +"Это свободное приложение; вы можете повторно распространять его и/или " +"изменять его в соответствии с условиями GNU General Public License, " +"размещённой Free Software Foundation; либо версии 2 Лицензии, либо (по " "вашему выбору) любой более поздней версии.\n" "\n" -"Эта программа распространяется в надежде, что она будет полезной, но БЕЗ " -"всякой ГАРАНТИИ; даже без подразумеваемых гарантий Коммерческой ценности или " -"ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. См. GNU General Public License.\n" +"Это приложение распространяется в надежде, что оно будет полезным, но БЕЗ " +"всякой ГАРАНТИИ; даже без подразумеваемых гарантий коммерческой ценности или " +"ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННОЙ ЦЕЛИ. См. GNU General Public License.\n" "\n" "Вы должны были получить копию лицензии GNU General Public License вместе с " -"этой программой; если нет, напишите в Free Software Foundation, Inc., 51 " +"этим приложением; если нет, напишите во Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, США." #: src/filewriter/filewriter.cc:385 @@ -1370,7 +1146,7 @@ #: src/filewriter/filewriter.cc:392 msgid "Save into custom directory:" -msgstr "Сохранить в другой каталог:" +msgstr "Сохранить в другую папку:" #: src/filewriter/filewriter.cc:400 msgid "Generate file name from:" @@ -1424,76 +1200,76 @@ msgid "32000 Hz" msgstr "32000 Гц" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Гц" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Гц" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" +msgid "8 kbit/s" msgstr "8 кбит/с" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" +msgid "16 kbit/s" msgstr "16 кбит/с" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" +msgid "32 kbit/s" msgstr "32 кбит/с" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" +msgid "40 kbit/s" msgstr "40 кбит/с" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" +msgid "48 kbit/s" msgstr "48 кбит/с" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" +msgid "56 kbit/s" msgstr "56 кбит/с" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" +msgid "64 kbit/s" msgstr "64 кбит/с" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" +msgid "80 kbit/s" msgstr "80 кбит/с" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" +msgid "96 kbit/s" msgstr "96 кбит/с" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" +msgid "112 kbit/s" msgstr "112 кбит/с" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" +msgid "128 kbit/s" msgstr "128 кбит/с" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" +msgid "160 kbit/s" msgstr "160 кбит/с" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" +msgid "192 kbit/s" msgstr "192 кбит/с" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" +msgid "224 kbit/s" msgstr "224 кбит/с" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" +msgid "256 kbit/s" msgstr "256 кбит/с" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" +msgid "320 kbit/s" msgstr "320 кбит/с" #: src/filewriter/filewriter.cc:450 @@ -1501,12 +1277,12 @@ msgstr "Объединённое стерео" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Стерео" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Моно" @@ -1588,19 +1364,19 @@ #: src/filewriter/filewriter.cc:544 msgid "ID3 Tags" -msgstr "Теги ID3" +msgstr "Метки ID3" #: src/filewriter/filewriter.cc:545 msgid "Force addition of version 2 tag" -msgstr "Принудительное добавление тегов 2-й версии" +msgstr "Принудительное добавление меток 2-й версии" #: src/filewriter/filewriter.cc:547 msgid "Only add v1 tag" -msgstr "Только 1-я версия тегов" +msgstr "Только 1-я версия меток" #: src/filewriter/filewriter.cc:549 msgid "Only add v2 tag" -msgstr "Только 2-я версия тегов" +msgstr "Только 2-я версия меток" #: src/filewriter/filewriter.cc:554 msgid "Quality" @@ -1612,13 +1388,13 @@ #: src/filewriter/filewriter.cc:556 msgid "Tags" -msgstr "Теги" +msgstr "Метки" #: src/filewriter/filewriter.cc:566 msgid "Quality (0-1):" msgstr "Качество (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Основной" @@ -1627,18 +1403,18 @@ msgid "FLAC Decoder" msgstr "Декодер FLAC" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "lossless" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" "\n" "http://www.skytale.net/projects/bmp-flac2/" msgstr "" -"Оригинальный код написал\n" +"Исходный код написал\n" "Ralf Ertzinger \n" "\n" "http://www.skytale.net/projects/bmp-flac2/" @@ -1649,7 +1425,7 @@ "Copyright 2009-2012 John Lindgren" msgstr "" "Модуль GIO для Audacious\n" -"Copyright 2009-2012 John Lindgren" +"Авторское право 2009-2012 John Lindgren" #: src/gio/gio.cc:42 msgid "GIO Plugin" @@ -1657,13 +1433,13 @@ #: src/gio/gio.cc:152 msgid "Read-and-append mode not supported" -msgstr "Режим Чтение-и-добавление не поддерживается" +msgstr "Режим чтения-и-добавления не поддерживается" #: src/gio/gio.cc:165 msgid "Invalid open mode" msgstr "Недопустимый метод открытия" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1683,147 +1459,165 @@ "\n" "Лицензия: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "Спектральный анализатор (OpenGL)" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "Номер записи" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Название" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Исполнитель" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Год" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Альбом" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Исполнитель альбома" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Дорожка" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Жанр" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "Положение в очереди" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "Позиция в очереди" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Длительность" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "Путь к файлу" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "Путь файла" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Задать название" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Имя файла" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Пользовательский заголовок" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Битрейт" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Комментарий" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "Издатель" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "Каталожный номер " + +#: src/gtkui/columns.cc:322 msgid "Available columns" -msgstr "Доступные колонки" +msgstr "Доступные столбцы" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" -msgstr "Показанные колонки" +msgstr "Показанные столбцы" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Поиск" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Прикрепить слева" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Прикрепить справа" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Прикрепить наверху" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Прикрепить внизу" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Открепить" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Отключить" #: src/gtkui/menus.cc:79 src/qtui/menus.cc:107 #: src/statusicon-qt/statusicon.cc:112 src/statusicon/statusicon.cc:282 msgid "_Open Files ..." -msgstr "_Открыть файлы ..." +msgstr "_Открыть файлы..." #: src/gtkui/menus.cc:80 src/qtui/menus.cc:111 msgid "Open _URL ..." -msgstr "Открыть _URL ..." +msgstr "Отк_рыть ссылку..." #: src/gtkui/menus.cc:81 src/qtui/menus.cc:113 msgid "_Add Files ..." -msgstr "_Добавить файлы ..." +msgstr "_Добавить файлы..." #: src/gtkui/menus.cc:82 src/qtui/menus.cc:118 msgid "Add U_RL ..." -msgstr "Добавить U_RL ..." +msgstr "Доба_вить ссылку..." #: src/gtkui/menus.cc:84 src/qtui/menus.cc:120 msgid "Search _Library" -msgstr "Поиск в библиотеке" +msgstr "Поиск в фонотеке" #: src/gtkui/menus.cc:86 src/qtui/menus.cc:123 msgid "A_bout ..." -msgstr "О _программе ..." +msgstr "О _приложении..." #: src/gtkui/menus.cc:87 src/qtui/menus.cc:125 msgid "_Settings ..." -msgstr "_Настройки ..." +msgstr "_Настройки..." #: src/gtkui/menus.cc:88 src/qtui/menus.cc:131 #: src/statusicon-qt/statusicon.cc:114 src/statusicon/statusicon.cc:284 @@ -1832,11 +1626,11 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" -msgstr "_Воспроизведение" +msgstr "_Играть" #: src/gtkui/menus.cc:93 src/qtui/menus.cc:137 #: src/statusicon-qt/statusicon.cc:107 src/statusicon/statusicon.cc:277 @@ -1891,27 +1685,27 @@ #: src/gtkui/menus.cc:106 src/gtkui/menus.cc:208 src/qtui/menus.cc:162 #: src/qtui/menus.cc:292 msgid "Song _Info ..." -msgstr "Информация о _песне" +msgstr "Сведения о _песне" #: src/gtkui/menus.cc:107 msgid "Jump to _Time ..." -msgstr "Перейти ко _времени ..." +msgstr "Перейти ко _времени..." #: src/gtkui/menus.cc:108 msgid "_Jump to Song ..." -msgstr "_Перейти к песне ..." +msgstr "_Перейти к песне..." #: src/gtkui/menus.cc:110 src/qtui/menus.cc:165 msgid "Set Repeat Point _A" -msgstr "Повтор установки _A" +msgstr "Установить точку повтора _А" #: src/gtkui/menus.cc:111 src/qtui/menus.cc:167 msgid "Set Repeat Point _B" -msgstr "Повтор установки _B" +msgstr "Установить точку повтора _Б" #: src/gtkui/menus.cc:112 src/qtui/menus.cc:169 msgid "_Clear Repeat Points" -msgstr "_Повтор чистых пунктов" +msgstr "О_чистить точки повтора" #: src/gtkui/menus.cc:116 src/gtkui/menus.cc:123 src/gtkui/menus.cc:140 #: src/qtui/menus.cc:173 src/qtui/menus.cc:180 src/qtui/menus.cc:197 @@ -1949,7 +1743,7 @@ #: src/gtkui/menus.cc:127 src/gtkui/menus.cc:144 src/qtui/menus.cc:184 #: src/qtui/menus.cc:201 msgid "By Release _Date" -msgstr "По _дате выпуска" +msgstr "По дате _выпуска" #: src/gtkui/menus.cc:128 src/gtkui/menus.cc:145 src/qtui/menus.cc:185 #: src/qtui/menus.cc:202 @@ -2000,7 +1794,7 @@ #: src/gtkui/menus.cc:160 src/qtui/menus.cc:221 msgid "Sort Se_lected" -msgstr "Сортировать выбранные" +msgstr "Упорядочивать вы_бранные" #: src/gtkui/menus.cc:161 src/qtui/menus.cc:223 msgid "Remove _Duplicates" @@ -2010,8 +1804,8 @@ msgid "Remove _Unavailable Files" msgstr "Убрать _недоступные файлы" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Новый" @@ -2021,17 +1815,17 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "Убрать" #: src/gtkui/menus.cc:168 src/qtui/menus.cc:231 msgid "_Import ..." -msgstr "_Импортировать ..." +msgstr "_Импортировать..." #: src/gtkui/menus.cc:169 src/qtui/menus.cc:232 msgid "_Export ..." -msgstr "_Экспортировать ..." +msgstr "_Экспортировать..." #: src/gtkui/menus.cc:171 src/qtui/menus.cc:235 msgid "Playlist _Manager ..." @@ -2039,7 +1833,7 @@ #: src/gtkui/menus.cc:172 src/qtui/menus.cc:237 msgid "_Queue Manager ..." -msgstr "_Управление очередью ..." +msgstr "_Управление очередью..." #: src/gtkui/menus.cc:176 src/qtui/menus.cc:241 msgid "Volume _Up" @@ -2051,7 +1845,7 @@ #: src/gtkui/menus.cc:179 src/qtui/menus.cc:247 msgid "_Equalizer ..." -msgstr "_Эквалайзер ..." +msgstr "_Эквалайзер..." #: src/gtkui/menus.cc:180 src/qtui/menus.cc:249 msgid "E_ffects ..." @@ -2063,7 +1857,7 @@ #: src/gtkui/menus.cc:183 msgid "Audio _Settings ..." -msgstr "Настрой_ки звука ..." +msgstr "Настрой_ки звука..." #: src/gtkui/menus.cc:187 src/qtui/menus.cc:258 msgid "Show _Menu Bar" @@ -2075,7 +1869,7 @@ #: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 msgid "Show Info Bar _Album Art" -msgstr "" +msgstr "Показать ин_фопанель с обложкой альбома" #: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 msgid "Show Info Bar Vis_ualization" @@ -2121,7 +1915,7 @@ #: src/gtkui/menus.cc:209 src/qtui/menus.cc:294 msgid "_Queue/Unqueue" -msgstr "_Элемент очереди" +msgstr "_В очередь / из очереди" #: src/gtkui/menus.cc:211 src/qtui/menus.cc:297 msgid "_Open Containing Folder" @@ -2152,7 +1946,7 @@ msgstr "Выбрать _всё" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "Пере_именовать..." @@ -2174,110 +1968,115 @@ #: src/gtkui/settings.cc:42 src/qtui/settings.cc:74 msgid "Playlist Columns" -msgstr "Колонки плейлиста" +msgstr "Столбцы плейлиста" #: src/gtkui/settings.cc:44 src/qtui/settings.cc:76 msgid "Show column headers" msgstr "Показывать заголовки столбцов" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "Использовать символические значки на панели инструментов" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Прокручивать при смене песни" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Интерфейс GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." -msgstr "Буферизация ..." +msgstr "Буферизация..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Воспроизвести" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Пауза" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" -msgstr "Поиск в библиотеке" +msgstr "Поиск в фонотеке" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Открыть файлы" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Добавить файлы" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Предыдущая дорожка" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Остановить" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Следующая дорожка" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Запись потока" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Повтор" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Вразброс" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" -msgstr "" +msgstr "Меню" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "моно" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "стерео" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" @@ -2286,131 +2085,131 @@ msgstr[2] "%d каналов" msgstr[3] "%d каналов" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d кГц" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" +msgid "%d kbit/s" msgstr "%d кбит/с" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Одиночный режим" -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Режим списка воспроизведения" -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Остановить после дорожки" -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Предыдущая дорожка" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" -msgstr "Пауза/Продолжить" +msgstr "Прервать/продолжить" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Следующая дорожка" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "Следующая дорожка" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "Предыдущая дорожка" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Приглушить" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Увеличить громкость" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Уменьшить громкость" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Перейти к файлу" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Переключить состояние окон проигрывателя" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Отобразить экранное сообщение (OSD)" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Повтор" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" -msgstr "Вкл/выкл вразброс" +msgstr "Вкл. / откл. вразброс" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Остановить после текущего" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" -msgstr "Поднять окно(а) плеера" +msgstr "Поднять окно(а) проигрывателя" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(нет)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" "Do you want to continue?" msgstr "" -"Не рекомендуется связывать основные кнопки мыши без модификаторов.\n" +"Не желательно связывать основные кнопки мыши без модификаторов.\n" "\n" "Вы хотите продолжить?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Привязки к кнопкам мыши" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." msgstr "" -"Нажмите комбинацию клавиш в текстовом поле.\n" +"Зажмите сочитания клавиш в текстовом поле.\n" "Можно также сделать привязки к кнопкам мыши." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Горячие клавиши:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Действие:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Привязка клавиш:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "Добавить" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Глобальные горячие клавиши" @@ -2428,15 +2227,15 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" -"Плагин Global Hotkey \n" -"Управляйте плеером с помощью глобальных комбинаций клавиш или мультимедийных " -"клавиш.\n" +"Модуль Global Hotkey \n" +"Управляйте проигрывателем с помощью глобальных сочетаний клавиш или " +"мультимедийных клавиш.\n" "\n" -"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"Авторское право (C) 2007-2008 Sascha Hlusiak \n" "\n" "При участии:\n" -"Copyright (C) 2006-2007 Vladimir Paskov \n" -"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +"Авторское право (C) 2006-2007 Владимир Пасков \n" +"Авторское право (C) 2000-2002 Ville Syrjälä ,\n" "Bryn Davies ,\n" "Jonathan A. Davis ,\n" "Jeremy Tan " @@ -2447,7 +2246,7 @@ #: src/jack/jack-ng.cc:126 msgid "Client name:" -msgstr "Название клиента" +msgstr "Название клиента:" #: src/jack/jack-ng.cc:128 msgid "Automatically connect to output ports" @@ -2465,7 +2264,7 @@ #: src/jack/jack-ng.cc:139 msgid "Upmix to" -msgstr "Повысить микшер до" +msgstr "Повысить число канало до" #: src/jack/jack-ng.cc:141 msgid "ports if input has fewer channels" @@ -2512,16 +2311,16 @@ "Гц. Пожалуйста, используйте эффект конвертера частоты семплов для устранения " "несовпадений." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s Настройки" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Путь к модулям:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2531,25 +2330,25 @@ "Поиск осуществляется по указанным путям и переменной LADSPA_PATH.\n" "Указав пути, нажмите Enter для поиска новых модулей." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Доступные модули:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Включить" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" -msgstr "Включенные модули:" +msgstr "Включённые модули:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Настройки" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2580,19 +2379,19 @@ "\n" "For more information about LIRC, see http://lirc.org." msgstr "" -"Простой модуль для управления Audacious, используя демон дистанционного " +"Простой модуль для управления Audacious, используя службу удалённого " "управления LIRC\n" "\n" -"Адаптирован для Audacious:\n" +"Приспособлен для Audacious:\n" "Tony Vroon \n" "Joonas Harjumäki \n" "\n" -"Основан на XMMS LIRC плагине:\n" +"Основан на XMMS LIRC расширении:\n" "Carl van Schaik \n" "Christoph Bartelmus \n" "Andrew O. Shadoura \n" "\n" -"Больше информации про LIRC смотрите на http://lirc.org." +"Подробности про LIRC смотрите на http://lirc.org." #: src/lirc/lirc.cc:390 msgid "Connection" @@ -2606,101 +2405,105 @@ msgid "Wait before reconnecting:" msgstr "Ждать перед переподключением:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" -msgstr "Текст песни" +msgstr "Слова песни" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Нет" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "текст.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" -msgstr "" +msgstr "Исполнитель -- с начала, Название -- с конца" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" -msgstr "" +msgstr "Обрезать до:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" -msgstr "" +msgstr "Варианты перечисляются через пробел" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" -msgstr "" +msgstr "Разделители:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" -msgstr "" +msgstr "Далее обрезать до символа" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" -msgstr "" +msgstr "Основные" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" -msgstr "" +msgstr "Разделить название на название и исполнителя" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "Интернет-источники" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "Извлекать слова из:" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "Источники" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "Использовать встроенные тексты песен (из метки Lyrics)" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "Получать тексты песен из Интернета:" + +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "Сохранять извлечённые тексты в локальном кэше" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Локальное хранилище" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" -msgstr "Загружать файлы текста песен (.lrc) из локального хранилища" +msgstr "Загружать файлы слов песен (.lrc) из локального хранилища" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Не удалось получить %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Не удалось проанализировать %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." -msgstr "Поиск текста песни ..." +msgstr "Поиск слов песни..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Ошибка" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." -msgstr "Не удалось найти текст песни." +msgstr "Не удалось найти слова песни." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." -msgstr "Отсутствует название и/или исполнитель." +msgstr "Отсутствует название и / или исполнитель." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Сохранить локально" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Обновить" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "Списки воспроизведения M3U" @@ -2728,7 +2531,7 @@ msgstr "" "Тактовый генератор от Martin Strauss \n" "\n" -"Чтобы использовать его, добавьте URL: tact://beats*num/den\n" +"Чтобы использовать его, добавьте адрес: tact://beats*num/den\n" "например, tact://77 для 77 ударов в минуту\n" "или tact://60*3/4 для 60 ударов в минуту в 3/4 такта" @@ -2762,7 +2565,7 @@ #: src/modplug/modplugbmp.h:57 msgid "ModPlug (Module Player)" -msgstr "ModPlug (модульный плеер)" +msgstr "ModPlug (модульный проигрыватель)" #: src/modplug/plugin_main.cc:55 msgid "Channels" @@ -2858,50 +2661,26 @@ msgstr "Настройки вступят в силу после перезапуска Audacious." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Остановить после этой песни" #: src/moonstone/moonstone.cc:39 msgid "Moonstone" -msgstr "" +msgstr "Moonstone" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" -msgstr "Сбросить по умолчанию" +msgstr "Сбросить на изначальные" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Сейчас Воспроизводится" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Номер записи" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Исполнитель альбома" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Позиция в очереди" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Путь файла" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Имя файла" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Пользовательский заголовок" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Элементы" @@ -2917,7 +2696,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Использовать аккуратное вычисление длины (медленно)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Объёмное звучание" @@ -2931,7 +2710,7 @@ #: src/neon/neon.cc:526 msgid "Error parsing redirect" -msgstr "Ошибка парсинга перенаправлений" +msgstr "Ошибка разбора перенаправлений" #: src/neon/neon.cc:540 msgid "Unknown HTTP error" @@ -2939,7 +2718,7 @@ #: src/neon/neon.cc:590 msgid "Error parsing URL" -msgstr "Ошибка парсинга URL" +msgstr "Ошибка разбора ссылки" #: src/neon/neon.cc:660 msgid "Too many redirects" @@ -3002,7 +2781,7 @@ #: src/notify/notify.cc:110 msgid "Custom notification duration:" -msgstr "" +msgstr "Длительность уведомления:" #: src/notify/osd.cc:74 msgid "Show" @@ -3012,29 +2791,29 @@ msgid "OpenMPT (Module Player)" msgstr "OpenMPT (модуль проигрывателя)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" -"Модульный плеер основан на libopenmpt\n" +"Модульный проигрыватель основан на libopenmpt\n" "\n" "Написан: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Разделение стерео:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "Интерполяция:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Линейный" @@ -3046,11 +2825,23 @@ msgid "Windowed sinc" msgstr "Оконная синхронизация" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "Декодер Opus" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" +"Модуль декодера Opus для Audacious\n" +"Авторское право 2022 Томас Ланге" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "Вывод OSS4" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "Выход OSS3" @@ -3092,18 +2883,40 @@ "Я хочу поблагодарить людей из #audacious, особенно Тони Vroon и John " "Lindgren, и, конечно же, авторов предыдущего модуля OSS." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "Вывод PipeWire" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" +"Модуль вывода PipeWire для Audacious\n" +"Авторское право 2022 Томас Ланге\n" +"\n" +"На основе модуля вывода PipeWire для Qmmp\n" +"Авторское право 2021 Илья Котов" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Воспроизведение" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Списки воспроизведения" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Удалить" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "Пере_именовать" @@ -3119,7 +2932,7 @@ msgid "OpenPSF Configuration" msgstr "Настройка OpenPSF" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Не придавать значение длительности из файла" @@ -3180,7 +2993,7 @@ "Based on SDL Output Plugin for Audacious\n" "Copyright 2010 John Lindgren" msgstr "" -"Плагин QtMultimedia Audio Output для Audacious\n" +"Модуль QtMultimedia Audio Output для Audacious\n" "Copyright 2014 Уиллиам Питкок\n" "\n" "Основан на плагине SDL Output для Audacious\n" @@ -3198,12 +3011,21 @@ "\n" "License: GPLv2+" msgstr "" +"OpenGL спектральный анализатор для Audacious\n" +"Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" +"Copyright 2014, 2020 Ariadne Conill\n" +"\n" +"Основан на плагине XMMS:\n" +"Copyright 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, and " +"4Front Technologies\n" +"\n" +"Лицензия: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." -msgstr "" +msgstr "Зажмите сочетание клавиш в текстовом поле." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3218,34 +3040,50 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Плагин горячих клавиш\n" +"Управление проигрывателем горячими клавишами или кнопками мультимедиа.\n" +"\n" +"Copyright (C) 2020 i.Dark_Templar \n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributors include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " #: src/qtui/menus.cc:109 msgid "_Open Folder ..." -msgstr "_Oткрыть каталог ..." +msgstr "_Открыть папку ..." #: src/qtui/menus.cc:115 msgid "_Add Folder ..." -msgstr "_Добавить каталог ..." +msgstr "_Добавить папку ..." #: src/qtui/menus.cc:128 msgid "_Log Inspector ..." -msgstr "_Инспектор журнала ..." +msgstr "_Инспектор журнала..." #: src/qtui/menus.cc:218 msgid "_Find ..." -msgstr "_Найти ..." +msgstr "_Найти..." #: src/qtui/menus.cc:254 src/skins/menus.cc:80 src/skins-qt/menus.cc:70 msgid "Audio Settings ..." msgstr "Настройки звука ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" -msgstr "" +msgstr "О#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" -msgstr "" +msgstr "T#" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "C#" #: src/qtui/qtui.cc:40 msgid "Qt Interface" @@ -3261,7 +3099,7 @@ #: src/qtui/settings.cc:59 msgid "Auto-hide" -msgstr "Авто-скрытие" +msgstr "Автоскрытие" #: src/qtui/settings.cc:60 msgid "Never" @@ -3273,7 +3111,7 @@ #: src/qtui/settings.cc:78 msgid "Use bold font for column headers" -msgstr "" +msgstr "Использовать жирный шрифт в заголовках столбцов" #: src/resample/resample.cc:43 msgid "Sample Rate Converter" @@ -3284,12 +3122,12 @@ "Sample Rate Converter Plugin for Audacious\n" "Copyright 2010-2012 John Lindgren" msgstr "" -"Плагин конвертера частоты дискретизации для Audacious\n" +"Модуль конвертера частоты дискретизации для Audacious\n" "Copyright 2010-2012 John Lindgren" #: src/resample/resample.cc:187 msgid "Skip/repeat samples" -msgstr "Пропустить/повторить сэмплы" +msgstr "Пропустить / повторить отрывки" #: src/resample/resample.cc:188 msgid "Linear interpolation" @@ -3325,7 +3163,7 @@ #: src/resample/resample.cc:203 msgid "Use rate mappings" -msgstr "Использвать карту частот" +msgstr "Использовать карту частот" #: src/resample/resample.cc:205 msgid "8 kHz:" @@ -3337,15 +3175,15 @@ #: src/resample/resample.cc:213 msgid "22.05 kHz:" -msgstr "22.05 кГц:" +msgstr "22,05 кГц:" #: src/resample/resample.cc:217 msgid "32.0 kHz:" -msgstr "32.0 кГц:" +msgstr "32,0 кГц:" #: src/resample/resample.cc:221 msgid "44.1 kHz:" -msgstr "44.1 кГц:" +msgstr "44,1 кГц:" #: src/resample/resample.cc:225 msgid "48 kHz:" @@ -3353,7 +3191,7 @@ #: src/resample/resample.cc:229 msgid "88.2 kHz:" -msgstr "88.2 кГц:" +msgstr "88,2 кГц:" #: src/resample/resample.cc:233 msgid "96 kHz:" @@ -3361,7 +3199,7 @@ #: src/resample/resample.cc:237 msgid "176.4 kHz:" -msgstr "176.4 кГц:" +msgstr "176,4 кГц:" #: src/resample/resample.cc:241 msgid "192 kHz:" @@ -3369,7 +3207,7 @@ #: src/scrobbler2/config_window.cc:19 msgid "Checking Last.fm access ..." -msgstr "Проверяется доступ к Last.fm ..." +msgstr "Проверяется доступ к Last.fm..." #: src/scrobbler2/config_window.cc:27 msgid "" @@ -3390,7 +3228,7 @@ "access to your account, and then click 'Check Permission' again:" msgstr "" "В доступе отказано. Откройте ссылку ниже в вашем браузере, предоставьте " -"доступ для Audacious, а затем нажмите \"Проверить доступ\" ещё раз:" +"доступ для Audacious, а затем нажмите «Проверить доступ» ещё раз:" #: src/scrobbler2/config_window.cc:47 msgid "There was a problem contacting Last.fm." @@ -3419,7 +3257,7 @@ "The Scrobbler plugin could not be started.\n" "There might be a problem with your installation." msgstr "" -"Модуль скробблера не может быть запущен.\n" +"Не удалось запустить модуль скробблера\n" "Возможно проблемы с вашей установкой." #: src/scrobbler2/scrobbler.cc:291 @@ -3462,62 +3300,62 @@ #: src/search-tool/library.cc:35 src/search-tool/library.cc:46 #: src/search-tool-qt/library.cc:35 src/search-tool-qt/library.cc:46 msgid "Library" -msgstr "Библиотека" +msgstr "Фонотека" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d песня" -msgstr[1] "%d песен" +msgstr[1] "%d песни" msgstr[2] "%d песен" msgstr[3] "%d песен" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "этого жанра" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "на" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "от" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Количество результатов, чтобы показать:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" -msgstr "Пересканировать библиотеку при запуске" +msgstr "Пересканировать фонотеку при запуске" #: src/search-tool-qt/search-tool-qt.cc:170 msgid "Monitor library for changes" -msgstr "Мониторинг библиотеки на предмет изменений" +msgstr "Следить за изменениями фонотеки" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." msgstr "" -"Для импорта музыки в библиотеку Audacious выберите каталог, затем нажмите " -"иконку \"обновить\"." +"Для импорта музыки в фонотеку Audacious выберите папку, затем нажмите на " +"значок «обновить»." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." -msgstr "Пожалуйста, подождите ..." +msgstr "Пожалуйста, подождите..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" -msgstr "Выберите каталог" +msgstr "Выберите папку" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" -msgstr "Поиск в библиотеке" +msgstr "Поиск в фонотеке" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" @@ -3526,7 +3364,7 @@ msgstr[2] "%d of %d results shown" msgstr[3] "%dиз%d результатов показаны" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" @@ -3535,11 +3373,11 @@ msgstr[2] "%d результатов" msgstr[3] "%d результатов" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Создать список воспроизведения" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Добавить в список воспроизведения" @@ -3581,7 +3419,7 @@ #: src/sid/xs_config.cc:81 msgid "Set maximum playback time:" -msgstr "Назначить максимальное время воспроизведения:" +msgstr "Назначить предельное время воспроизведения:" #: src/sid/xs_config.cc:87 msgid "Use only when song length is unknown" @@ -3589,7 +3427,7 @@ #: src/sid/xs_config.cc:90 msgid "Set minimum playback time:" -msgstr "Назначить минимальное время воспроизведения:" +msgstr "Назначить наименьшее время воспроизведения:" #: src/sid/xs_config.cc:96 msgid "Subtunes" @@ -3601,7 +3439,7 @@ #: src/sid/xs_config.cc:99 msgid "Ignore subtunes shorter than:" -msgstr "Игнорировать подстройку короче чем:" +msgstr "Не учитывать подстройку короче чем:" #: src/sid/xs_config.cc:105 msgid "Note" @@ -3637,128 +3475,128 @@ #: src/skins/actions.cc:60 src/skins-qt/actions.cc:58 msgid "Repeat point A set." -msgstr "Повторить установки A" +msgstr "Точка повтора А установлена." #: src/skins/actions.cc:65 src/skins-qt/actions.cc:63 msgid "Repeat point B set." -msgstr "Повторить установки B" +msgstr "Точка повтора Б установлена." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Предусиление" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Гц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Гц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Гц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Гц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Гц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 кГц" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 кГц" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 кГц" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 кГц" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 кГц" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Эквалайзер Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Запись включена" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" -msgstr "Запись выключена" +msgstr "Запись отключена" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Переход к %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Громкость: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Баланс: %d%% влево" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Баланс: по центру" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Баланс: %d%% вправо" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" -msgstr "Меню параметров" +msgstr "Список настроек" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" -msgstr "Отключить \"Поверх всех окон\"" +msgstr "Отключить «Поверх всех окон»" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" -msgstr "Включить \"Поверх всех окон\"" +msgstr "Включить «Поверх всех окон»" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" -msgstr "Информация о файле" +msgstr "Сведения о файле" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Двойной размер" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Зрительные образы" #: src/skins/menus.cc:74 src/skins-qt/menus.cc:64 msgid "Volume Up" -msgstr "Громкость вверх" +msgstr "Увеличить громкость" #: src/skins/menus.cc:75 src/skins-qt/menus.cc:65 msgid "Volume Down" -msgstr "Громкость вниз" +msgstr "Уменьшить громкость" #: src/skins/menus.cc:77 src/skins-qt/menus.cc:67 msgid "Effects ..." -msgstr "Эффекты ..." +msgstr "Эффекты..." #: src/skins/menus.cc:84 src/skins-qt/menus.cc:74 msgid "Open Files ..." @@ -3766,11 +3604,7 @@ #: src/skins/menus.cc:85 src/skins-qt/menus.cc:76 msgid "Open URL ..." -msgstr "Открыть URL..." - -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Воспроизведение" +msgstr "Открыть ссылку..." #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" @@ -3786,26 +3620,26 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Службы" #: src/skins/menus.cc:95 src/skins-qt/menus.cc:86 msgid "About ..." -msgstr "О..." +msgstr "О приложении..." #: src/skins/menus.cc:96 src/skins-qt/menus.cc:87 msgid "Settings ..." -msgstr "Настройки ..." +msgstr "Настройки..." #: src/skins/menus.cc:97 src/skins-qt/menus.cc:88 msgid "Quit" msgstr "Выход" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." -msgstr "Информация о песне" +msgstr "Сведения о песне" #: src/skins/menus.cc:105 src/skins-qt/menus.cc:96 msgid "Shuffle by Album" @@ -3817,19 +3651,19 @@ #: src/skins/menus.cc:117 src/skins-qt/menus.cc:108 msgid "Set A-B Repeat" -msgstr "Установить A-B повтор" +msgstr "Установить повтор А-Б" #: src/skins/menus.cc:118 src/skins-qt/menus.cc:109 msgid "Clear A-B Repeat" -msgstr "Удалить A-B повтор" +msgstr "Удалить повтор А-Б" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." -msgstr "Перейти к песне ..." +msgstr "Перейти к песне..." #: src/skins/menus.cc:121 src/skins-qt/menus.cc:113 msgid "Jump to Time ..." -msgstr "Перейти ко времени ..." +msgstr "Перейти ко времени..." #: src/skins/menus.cc:125 src/skins-qt/menus.cc:118 msgid "Play/Resume" @@ -3869,7 +3703,7 @@ #: src/skins/menus.cc:138 src/skins-qt/menus.cc:131 msgid "Queue Manager ..." -msgstr "Управление очередью ..." +msgstr "Управление очередью..." #: src/skins/menus.cc:140 src/skins-qt/menus.cc:133 msgid "Refresh Playlist" @@ -3909,27 +3743,27 @@ #: src/skins/menus.cc:163 src/skins-qt/menus.cc:158 msgid "Add URL ..." -msgstr "Добавить URL ..." +msgstr "Добавить ссылку..." #: src/skins/menus.cc:164 src/skins-qt/menus.cc:160 msgid "Add Files ..." msgstr "Добавить файлы..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "По названию" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "По имени файла" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "По расположению _файла" @@ -3957,353 +3791,357 @@ msgid "Remove Selected" msgstr "Удалить выбранные" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Найти и выбрать" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Инвертировать выбор" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Снять выделение" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Выбрать все" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "По номеру дорожки" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "По исполнителю" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "По альбому" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "По исполнителю" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" -msgstr "По _дате выпуска" +msgstr "По дате выпуска" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "По жанру" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "По длительности" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "По _заданному названию файла" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "По комментарию" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" -msgstr "Сортировать в случайном порядке" +msgstr "Упорядочивать в случайном порядке" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "В обратном порядке" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" -msgstr "Сортировать выбранные" +msgstr "Упорядочивать выбранные" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" -msgstr "Сортировать список" +msgstr "Упорядочивать список" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" -msgstr "Открыть директорию" +msgstr "Открыть папку, содержащую" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Вырезать" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Копировать" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Вставить" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Вставить в конец" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" -msgstr "В очередь/Из очереди" +msgstr "В очередь / из очереди" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d из %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Редактор списков воспроизведения Audacious" #: src/skins/plugin.cc:49 src/skins-qt/plugin.cc:64 msgid "Winamp Classic Interface" -msgstr "Интерфейс классического Winamp" +msgstr "Классическая оболочка Winamp" #: src/skins-qt/menus.cc:75 msgid "Open Folder ..." -msgstr "Oткрыть каталог ..." +msgstr "Открыть папку..." #: src/skins-qt/menus.cc:159 msgid "Add Folder ..." -msgstr "Добавить каталог ..." +msgstr "Добавить папку..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Поиск записей в текущем списке воспроизведения" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Выберите записи в списке воспроизведения, заполнив соответствующие поля. В " +"полях используется написание регулярных выражений, не чувствительное к " +"регистру. Если вы не знаете, как работают регулярные выражения, просто " +"вставьте часть букв из слова, которые хотите найти." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Заголовок:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Альбом:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Артист:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Имя файла:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Очистить предыдущий выбор до начала поиска" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Автоматически переключать поочерёдно на соответствующим записям" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Создать новый список воспроизведения с соответствующими записями" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Поиск" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Проигрыватель:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Выберите шрифт основного окна проигрывателя:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Список:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Выберите шрифт плейлиста:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Скин" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "Отображать активный заголовок, когда любые окна находятся в фокусе" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Шрифты" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Использовать растровые шрифты (поддерживает только ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Прокручивать название песни " -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Прокручивать название песни в обоих направлениях" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Анализатор" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Осциллограмма" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" -msgstr "Отпечаток голоса / VU измеритель" +msgstr "Отпечаток голоса / волюметр" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" -msgstr "Выкл." +msgstr "Откл." -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Обычный" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Огонь" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Вертикальные линии" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Линии" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Полоски" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Очень медленно" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Медленно" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Средне" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Быстро" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Очень быстро" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Точки" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Линия" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Сплошная" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Лёд" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Сглаженный" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Окраска:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Стиль:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Спад:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Спад пиков:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Стиль осциллограммы:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Окраска отпечатка голоса:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" -msgstr "Стиль VU измерителя:" +msgstr "Стиль волюметра:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Тип" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Тип визуализации:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Анализатор" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Показывать пики" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Визуализация" #: src/skins-qt/skinselector.cc:98 src/skins/skinselector.cc:111 msgid "Archived Winamp 2.x skin" -msgstr "Архивированная тема Winamp 2.x" +msgstr "Архивированный скин Winamp 2.x" #: src/skins-qt/skinselector.cc:102 src/skins/skinselector.cc:115 msgid "Unarchived Winamp 2.x skin" -msgstr "Не архивированная тема Winamp 2.x" - -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Поиск записей в активном списке воспроизведения" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Поиск" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Выберите записи в списке воспроизведения, заполнив соответствующие поля. В " -"полях используется написание регулярных выражений, не чувствительное к " -"регистру. Если вы не знаете, как работают регулярные выражения, просто " -"вставьте часть букв из слова, которые хотите найти." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Заголовок:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Альбом:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Артист:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Имя файла:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Очистить предыдущий выбор до начала поиска" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Автоматически переключать поочерёдно на соответствующим записям" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Создать новый список воспроизведения с соответствующими записями" +msgstr "Разархивированный скин Winamp 2.x" #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Модуль Sndfile" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4358,7 +4196,7 @@ #: src/sndio/sndio.cc:181 #, c-format msgid "Sndio error: Unsupported audio format (%d)" -msgstr "Ошибка Sndio: Неподдерживаемый звуковой формат (%d)" +msgstr "Ошибка Sndio: Неподдерживаемый формат аудио (%d)" #: src/sndio/sndio.cc:192 msgid "Sndio error: sio_open() failed" @@ -4443,7 +4281,7 @@ #: src/song-info-qt/song-info.cc:30 msgid "Song Info" -msgstr "Информация о песне" +msgstr "Сведения о песне" #: src/soxr/sox-resampler.cc:44 msgid "SoX Resampler" @@ -4485,7 +4323,7 @@ #: src/soxr/sox-resampler.cc:187 msgid "Minimum" -msgstr "Минимальный" +msgstr "Наименьший" #: src/soxr/sox-resampler.cc:188 msgid "Intermediate" @@ -4529,7 +4367,7 @@ #: src/statusicon-qt/statusicon.cc:44 src/statusicon/statusicon.cc:47 msgid "Status Icon" -msgstr "Иконка статуса" +msgstr "Значок состояния" #: src/statusicon-qt/statusicon.cc:65 msgid "" @@ -4542,14 +4380,14 @@ "This plugin provides a status icon, placed in\n" "the system tray area of the window manager." msgstr "" -"Модуль иконки статуса\n" -"(частичное портирование для интерфейса Qt)\n" +"Модуль значка состояния\n" +"(частичный перенос для интерфейса Qt)\n" "\n" -"Copyright 2005-2007 Giacomo Lozito \n" -"Copyright 2010 Michał Lipski \n" -"Copyright 2015 Eugene Paskevich \n" +"Авторское право 2005-2007 Giacomo Lozito \n" +"Авторское право 2010 Michał Lipski \n" +"Авторское право 2015 Евгений Паскевич \n" "\n" -"Этот модуль отображает значок программы\n" +"Этот модуль отображает значок приложения\n" "в системном лотке оконного менеджера." #: src/statusicon-qt/statusicon.cc:86 src/statusicon/statusicon.cc:380 @@ -4582,7 +4420,7 @@ #: src/statusicon-qt/statusicon.cc:113 src/statusicon/statusicon.cc:283 msgid "Se_ttings ..." -msgstr "Настройки ..." +msgstr "_Настройки..." #: src/statusicon/statusicon.cc:373 msgid "" @@ -4594,7 +4432,7 @@ "This plugin provides a status icon, placed in\n" "the system tray area of the window manager." msgstr "" -"Модуль иконки статуса\n" +"Модуль значка статуса\n" "\n" "Copyright 2005-2007 Giacomo Lozito \n" "Copyright 2010 Michał Lipski \n" @@ -4690,7 +4528,7 @@ #: src/streamtuner/shoutcast-model.cc:198 msgid "International" -msgstr "Интернациональная" +msgstr "Международная" #: src/streamtuner/shoutcast-model.cc:199 msgid "Jazz" @@ -4738,7 +4576,7 @@ #: src/streamtuner/shoutcast-model.cc:211 msgid "Soundtracks" -msgstr "Аудиодорожки" +msgstr "Звуковые дорожки" #: src/streamtuner/shoutcast-model.cc:212 msgid "Talk" @@ -4788,19 +4626,32 @@ "частота1;частота2;частота3;...\n" "Например, tone://2000;2005 для воспроизведения сигналов 2000 Гц и 2005 Гц" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Подробные сообщения были скрыты.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." -msgstr "Работаю ..." +msgstr "Работает.." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" -msgstr "Информация" +msgstr "Сведения" + +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "%s является недопустимой папкой." #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Удаление вокала" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4892,12 +4743,12 @@ "VU Meter Plugin for Audacious\n" "Copyright 2017-2019 Marc Sánchez Fauste" msgstr "" -"Плагин измерителя VU для Audacious\n" +"Модуль волюметра для Audacious\n" "Copyright 2017-2019 Marc Sánchez Fauste" #: src/vumeter-qt/vumeter_qt.cc:35 msgid "VU Meter Settings" -msgstr "Настройки измерителя VU" +msgstr "Настройки волюметра" #: src/vumeter-qt/vumeter_qt.cc:37 msgid "Peak hold time:" @@ -4909,7 +4760,7 @@ #: src/vumeter-qt/vumeter_qt.cc:44 msgid "dB/second" -msgstr "dB/сек" +msgstr "дБ/с" #: src/vumeter-qt/vumeter_qt.cc:46 msgid "Display legend" @@ -4917,7 +4768,7 @@ #: src/vumeter-qt/vumeter_qt.h:37 msgid "VU Meter" -msgstr "Измеритель VU" +msgstr "Волюметр" #: src/waveout/waveout.cc:43 msgid "Win32 waveOut" @@ -4953,14 +4804,38 @@ "\n" "Частично код от Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "Декодер 2SF" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Гц" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Гц" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Косинус" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Резкий" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "Настройки XSF" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Время затухания по умолчанию:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Режим интерполяции:" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "Списки воспроизведения XSPF" diff -Nru audacious-plugins-4.1/po/si.po audacious-plugins-4.3.1/po/si.po --- audacious-plugins-4.1/po/si.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/si.po 2023-04-29 20:17:32.000000000 +0000 @@ -13,9 +13,9 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Ashintha Rukmal Perera , 2013-2014\n" "Language-Team: Sinhala (http://www.transifex.com/audacious/audacious/" "language/si/)\n" "Language: si\n" @@ -33,7 +33,7 @@ msgstr "Adකෙවෙනිය (AdLib ධාවකය)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "අනුපිළිවෙළ" @@ -45,8 +45,10 @@ msgid "OPL Emulator:" msgstr "" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" msgstr "" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 @@ -63,7 +65,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "විවිධ" @@ -71,212 +73,6 @@ msgid "Repeat song in endless loop" msgstr "" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "සිහි කැඳවීම​" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "" - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"කිසියම් වෙලාවකදී ධාවනය කිරීමට යොදාගත හැකි පේනු මෘදුකාංගයක්.⏎\n" -"⏎\n" -"මුලින් ලියන ලද්දේ ඇඩම් ෆීකින් සහ ඩැනියෙල් ස්ටොඩ්ඩන් විසිනි." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "මේ ඔබගේ සිහි කැඳවීමේ ඇමතුමයි." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "ඔබගේ අද දවසේ මතක් කිරීම වන්නේ..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "මතක් කිරීම​" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "සඳුදා" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "අඟහරුවාදා" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "බදාදා" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "බ්‍රහස්පතින්දා" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "සිකුරාදා" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "සෙනසුරාදා" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "ඉරිදා" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "වෙලාව​" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "සිහිකැඳවීම​ (පෙරනිමිය​)" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "පැ" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "පසු නිහඬවන්න:​" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "පැය​" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "මිනිත්තු" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "සිහි කැඳවීම් ලැබිය යුතු දිනයන් තෝරන්න​" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "දවස​" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "පෙරනිමිය​" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "දවස්" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "හායනය" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "තප්පර​" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "ශබ්ද මට්ටම​" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "ආරම්භ කරන්න​" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "අවසානය​" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "දැන්" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "අමතර විධාන​" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "සක්‍රීය​" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "ධාවනය වන ගොනුව (අමතර​)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "ධාවන ලැයිස්තුවක්​ තෝරන්න" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "විකල්ප​" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "මොනවාද මේ විකල්පයන්ගෙන් අදහස් වන්නේ?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "උදව්" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "ඇල්බම් කලාව" @@ -405,87 +201,83 @@ msgid "Synthesizer" msgstr "" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-පේනු - SoundFont ගොනුව තෝරන්න​" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_අවලංගු කරන්න​" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "ගොනු නම​" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "ප්‍රමාණය (බයිට්ස්)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "නම​:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " MIDI තොරතුරු " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "හැඩතලය​:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "දිග (මිලි තප්පර​):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "ඛණ්ඩ ගණන:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "විචල්‍යය" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "කාලය​ බෙදීම​:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI අදහස් දැක්වීම් සහ පද රචනයන් " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* මෙම MIDI ගොනුවෙහි අදහස් දැක්වීම් නොමැත​ *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* මෙම MIDI ගොනුවෙහි පද රචනා නොමැත​ *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_වසන්න​" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr "(අවලංගු UTF-8)" @@ -529,7 +321,7 @@ msgid "Concave Rectangle" msgstr "අවතල ඍජුකෝණාශ්‍රය" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "කිසිවක් නැත​" @@ -565,94 +357,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "පිළිවැයීම් විරාමය අවසානයේදී OSD ක්‍රියාත්මක කිරීම​" -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "ස්ථාපනය" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "සාපේක්ෂ X අනුලම්බය:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "සාපේක්ෂ Y අනුලම්බය:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "උපරිම OSD පළල:​" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "බහු මොනිටර විකල්ප​" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "OSD දර්ශනයට​ භාවිතා කරන්න​:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "සියලුම මොනිටර​" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "මොනිටර​ය​ %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "කාල නියමය (මිලි තප්පර​)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "දර්ශනය​:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "ක්‍රමෝද්දීපනය:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "ක්‍රමාවදීපනය:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "අකුරු වර්ගය​" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "අකුරු වර්ගය ​%i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "සෙවනැල්ල​" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "විදැහුම් අන්දම" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "පාට​" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "පාට​ %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "ක්‍රියාරම්භකය සක්‍රිය කිරිම" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "සිද්ධිය​" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "සංයුක්ත කළමනාකාරකය හඳුනා ගන්නා ලදී" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -662,56 +454,56 @@ "දැනටමත් එකක් ධාවනය වෙමින් නොපවතී නම් කරුණාකර සංයුක්ත කළමනාකාරකයක් සක්‍රීය කරන්න​. එසේ නැතිනම් " "OSD නිසි ලෙස ක්‍රියා නොකරයි" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "ව්‍යාජ විනිවිද පෙනීම සඳහා සංයුක්ත කළමනාකාරකය අවශ්‍ය නැත​" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "විනිවිද පෙනීම" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "ව්‍යාජ විනිවිද පෙනීම​" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "සත්‍ය විනිවිද පෙනීම​ (X සංයුක්ත Ext. අවශ්‍යයයි)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "සංයුක්ත දිගුව​ ප්‍රවේශනය වී නොමැත​" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "පිහිටීම​" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "සජීවනය​" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "පෙළ​" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "අලංකරණය" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "ක්‍රියාරම්භකය" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "විවිධ" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "පරික්‍ෂා කිරීම​" @@ -727,11 +519,27 @@ msgid "Audacious Playlists (audpl)" msgstr "ඔඩෙෂස් ධාවන ලැස්තු (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "වර්ණ" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "නොපැහැදිලි විෂය පථය" @@ -743,6 +551,10 @@ msgid "Presets:" msgstr "පෙර සකසන ලද:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "පෙරනිමිය​" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "සංග්‍රහ මට්ටම:" @@ -755,7 +567,7 @@ msgid "Cut frequency:" msgstr "සංඛ්‍යාතය කපන්න:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "වර්ණාවලි විශ්ලේශකය" @@ -847,50 +659,50 @@ msgid "Audio CD" msgstr "ශ්‍රව්‍ය CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "CD අම්පන්නය %s විවෘත කිරීම අසාර්ථක විය." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "ශ්‍රව්‍ය ක්‍රියා කල හැකි CD අම්පන්නය සොයාගත නොහැක." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "ධාවකය හිස්." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "සහාය නොමැති තැටි වර්ගයකි." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "විවෘත කරන ලද CD අම්පන්නය අවසානය තෙක් ක්‍රියාත්මක කිරීම අසාර්ථක විය." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "පළමු/අවසාන ඛණ්ඩ අංකය සොයාගැනීම අසාර්ථක විය." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "ඛණ්ඩ %d හි පළමු/අවසාන LSN කියවීමට නොහැක." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "CDDB සේවාදායකය විමසුමට අපොහොසත් විය." -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "CDDB සේවාදායකය : %s විමසුමට අපොහොසත් විය." -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "" @@ -961,6 +773,13 @@ msgid "Default song length:" msgstr "පෙරනිමි ගීත දිග​:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "තප්පර​" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr " නැවත සාම්පල කිරීම" @@ -989,7 +808,7 @@ msgid "CoreAudio output" msgstr "" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1001,11 +820,11 @@ "Copyright 2010 John Lindgren" msgstr "" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" @@ -1098,20 +917,20 @@ msgid "Delete" msgstr "මකන්න " -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "අවලංගු කිරීම​" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "" @@ -1133,7 +952,7 @@ msgstr "ප්‍රමාදය:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "මාත සංවේද්‍යතාව" @@ -1149,11 +968,11 @@ msgid "Echo" msgstr "ප්‍රතිරාව" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "FFmpeg පේනු මෘදුකාංගය " -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1261,76 +1080,76 @@ msgid "32000 Hz" msgstr "" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" +msgid "8 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" +msgid "16 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" +msgid "32 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" +msgid "40 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" +msgid "48 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" +msgid "56 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" +msgid "64 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" +msgid "80 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" +msgid "96 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" +msgid "112 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" +msgid "128 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" +msgid "160 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" +msgid "192 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" +msgid "224 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" +msgid "256 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" +msgid "320 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:450 @@ -1338,12 +1157,12 @@ msgstr "එකතු වූ ත්‍රිමාණ​" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "ත‍්‍ර‍්‍රිමාණ " #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "තනි " @@ -1455,7 +1274,7 @@ msgid "Quality (0-1):" msgstr "" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "සාමාන්‍ය" @@ -1464,11 +1283,11 @@ msgid "FLAC Decoder" msgstr "FLAC විකේතකය" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "හානි වී නොමැති " -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1500,7 +1319,7 @@ msgid "Invalid open mode" msgstr "" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1512,116 +1331,134 @@ "License: GPLv2+" msgstr "" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL වර්ණාවලි විශ්ලේශකය" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "ඇතුලත් කිරීමේ අංකය​" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "මාතෘකාව" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "ශිල්පියා " -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "වර්ෂය " -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "ඇල්බමය " -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "ඛණ්ඩය " -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "ප්‍රභේදය" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "පේලියෙහි පිහිටන ස්ථානය​" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "දිග" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "ගොනු පථය" - -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "අභිරුචි මාතෘකාව​" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "බිට් රේටය​" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "විවරණය" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "සෙවීමේ මෙවලම " -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "වමට ඈඳන්න​" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "දකුණට ​ඈඳන්න​" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "ඉහළට​ ඈඳන්න​" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr " පහළට ඈඳන්න​" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "ඈඳීම​ අවලංගු කරන්න​" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "අක්‍රීය කරන්න​" @@ -1661,8 +1498,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_ධාවනය කරන්න​" @@ -1839,8 +1676,8 @@ msgid "Remove _Unavailable Files" msgstr "අනුපයෝජ්‍ය_ගොනු ඉවත් කරන්න" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_නව​" @@ -1850,7 +1687,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "" @@ -1981,7 +1818,7 @@ msgstr "සියල්ල_තෝරන්න" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_නැවත නම් කිරීම​ ..." @@ -2009,208 +1846,213 @@ msgid "Show column headers" msgstr "" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "GTK අතුරු මුහුණත" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "අන්තරාචයනය..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "ඔඩෙෂස් " -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "ධාවනය කරන්න " -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "විරාමය " -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "ගොනු විවෘත කරන්න" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "ගොනු එකතු කරන්න" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "පෙර " -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "නැවතීම " -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "ඊළඟ " -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "නැවත කරන්න " -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "කලවම් කරන්න " -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr " තනි " -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "ත්‍රිමාන " -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d නාලිකාව " msgstr[1] "%d නාලිකා " -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d තත්පරයට කිලෝ බයිට් " +msgid "%d kbit/s" +msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "තනි ප්‍රකාරය." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "ධාවන ලැස්තු ප්‍රකාරය." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "ගීතයකින් පසු නැවතීම." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "පෙර ඛණ්ඩය" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "නැවතීම/නැවත ඇරඹීම " -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "පසු ඛණ්ඩය " -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "නිහඬ කරන්න " -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "ශබ්ද මට්ටම​ වැඩි කරන්න" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "ශබ්ද මට්ටම​ අඩු කරන්න" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "මගහැර ගොනුවට පිවිසෙන්න " -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "ධාවක කවුළු(ව) පුරුක් කරන්න" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "තිරය මත සංදර්ශනය කර පෙන්වන්න " -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "නැවත කිරීම ටොගල් කරන්න" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "කළවම් කිරිම ටොගල් කරන්න" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "පවතින ගීතයෙන් පසු නැවතීම ටොගල් කරන්න " -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "ධාවක කවුළු(ව) පෙන්වන්න" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(කිසිවක් නැත)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" "Do you want to continue?" msgstr "" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "බැඳෙන මූසික බොත්තම් " -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2218,23 +2060,23 @@ "පෙළ ක්ෂේත්‍රය ඇතුලත යතුරු එකතුව ඔබන්න.\n" "ඔබට මූසික බොත්තමද බැඳීය හැක." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "විශේෂ බොත්තම්:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "ක්‍රියාව:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "යතුරු බැඳීම:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "ගෝලීය විශේෂ බොත්තම්:" @@ -2316,16 +2158,16 @@ "%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." msgstr "" -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s සිටුවම " -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "මොඩියුල පථය:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2335,25 +2177,25 @@ "මෙම පථ සොයන්නේ LADSPA_PATH එකට අමතරවය.\n" "නව පථ ඇතුලත් කිරීමෙන් පසුව, නව පේනු මෘදුකාංග සදහා Enter යතුර ඔබන්න." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "උපයෝජ්‍ය පේනු මෘදුකාංග:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "සක්‍රිය " -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "සක්‍රිය පේනු මෘදුකාංග:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "සිටුවම් " -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2409,101 +2251,105 @@ msgid "Wait before reconnecting:" msgstr "ප්‍රතිසම්බන්ධ වීමට පෙර මදක් සිටින්න:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "කැඳවාගෙන යා නොහැක​ %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "parse කළ නොහැක​ %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "පද රචනා සොයමින් පවතී ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "දෝෂය " -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "M3U ධාවන ලැයිස්තුව​" @@ -2661,7 +2507,7 @@ msgstr "" #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "" @@ -2670,41 +2516,17 @@ msgid "Moonstone" msgstr "" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "දැන් ධාවනයවේ" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "සටහන්" @@ -2720,7 +2542,7 @@ msgid "Use accurate length calculation (slow)" msgstr "" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "සිසාළ " @@ -2818,26 +2640,26 @@ msgid "OpenMPT (Module Player)" msgstr "" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "" @@ -2849,11 +2671,21 @@ msgid "Windowed sinc" msgstr "" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4 ප්‍රතිදානය" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "" @@ -2895,18 +2727,35 @@ "#audacious හි මිනිසුන් වෙත ස්තූති කරමි, විශේෂයෙන් Tony Vroon සහ​ John Lindgren මෙන්ම පෙර " "OSS පේනු මෘදුකාංගයයෙහි කතෘන් හට ." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "පිළිවැයීම" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "\tධාවන ලැයිස්තු කළමනාකරු" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "" @@ -2922,7 +2771,7 @@ msgid "OpenPSF Configuration" msgstr "" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "" @@ -2983,11 +2832,11 @@ "License: GPLv2+" msgstr "" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "" -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3023,14 +2872,18 @@ msgid "Audio Settings ..." msgstr "" -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "" @@ -3239,30 +3092,30 @@ msgid "Library" msgstr "පුස්තකාලය " -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "" msgstr[1] "" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "" @@ -3270,44 +3123,44 @@ msgid "Monitor library for changes" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." msgstr "" "ඔඩෙෂස් තුලට ඔබගේ ගීත පුස්තකාලය ආයාත කිරීමට, ෆෝල්ඩරයක් තෝරා \"නැවුම් කරන්න\" නිරූපකය ඔබන්න." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "කරුණාකර රැඳී සිටින්න ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "ෆෝල්ඩරය තෝරන්න " -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "පුස්තකාලය සොයන්න " -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "" msgstr[1] "" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "" msgstr[1] "" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_ධාවන ලැයිස්තුව​ තනන්න " -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_ධාවන ලැයිස්තුව​ට එකතු කරන්න " @@ -3409,108 +3262,108 @@ msgid "Repeat point B set." msgstr "පුනරාවර්ථන ස්ථානය B කුලකය." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "පූර්ව වර්ධකය" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 හරට්ස් " -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 හරට්ස් " -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 හරට්ස් " -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 හරට්ස් " -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 හරට්ස් " -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 හරට්ස් " -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 හරට්ස් " -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 හරට්ස් " -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 හරට්ස් " -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 හරට්ස් " -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "ඔඩෙෂස් ඉකුවලිසරය " -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "සොයනවා %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "ශබ්ද මට්ටම​ : %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "තුලනය : %d%% වමට " -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "තුලනය: මැදට " -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "තුලනය: %d%% දකුණට " -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "විකල්ප මෙනුව " -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "අක්‍රිය කරන්න 'සැමවිටම ඉහළ '" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "සක්‍රිය කරන්න 'සැමවිටම ඉහළ '" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "ගොනු තොරතුරු පෙට්ටිය " -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "" @@ -3534,10 +3387,6 @@ msgid "Open URL ..." msgstr "" -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "පිළිවැයීම" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "ධාවන ලැයිස්තුව​" @@ -3552,7 +3401,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "" @@ -3569,7 +3418,7 @@ msgstr "" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "" @@ -3589,7 +3438,7 @@ msgid "Clear A-B Repeat" msgstr "" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "" @@ -3682,20 +3531,20 @@ msgstr "" #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "මාතෘකාවෙන් " #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "" @@ -3723,113 +3572,113 @@ msgid "Remove Selected" msgstr "තෝරාගත් ඒවා ඉවත් කරන්න " -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "සොයන්න සහ තෝරන්න " -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "වරණය පෙරලන්න " -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "කිසිවක් තෝරානොගන්න " -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "සියල්ල තෝරන්න" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "ඛණ්ඩ අංකයෙන් " -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "ශිල්පියාගෙන් " -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "ඇල්බමයෙන් " -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "සසම්භාවී ධාවන ලැයිස්තුව " -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "ලැස්තුවේ ආපස්සට යන්න " -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "තෝරාගත් අනුපිළිවලට " -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "ලැයිස්තුව අනුපිළිවලට සකසන්න " -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "කපන්න " -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "පිටපත් කරන්න " -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "අලවන්න " -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d ගෙන් %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "ඔඩෙෂස් ධාවන ලැස්තු සකසනය " @@ -3845,167 +3694,218 @@ msgid "Add Folder ..." msgstr "" -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "සක්‍රිය ධාවන ලැයිස්තුවේ පිවිසුම් සොයන්න " + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"ධාවන ලැයිස්තුවේ පිවිසුම්, ක්ෂේත්‍ර එකක් හෝ වැඩි ගණනක් ගොනු කිරිමනේ තෝරන්න. ක්ෂේත්‍ර විධිමත් ප්‍රකාශන " +"වාග් රීති, අකුරු තටු-සංවේදී නැති භාවිතා කරයි. ඔබට විධිමත් ප්‍රකාශන වාග් රීති ක්‍රියාත්මක වන ආකාරය " +"පිළිබඳ අවබෝධයක් නැති නම්, ඔබ සොයන වචන කොටස ඇතුල් කරන්න." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "පෙර තේරීම සෙවීමට පෙර හිස් කරන්න " + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "ගැලපෙන පිවිසුම් සඳහා ස්වයංක්‍රියව පෙළගැස්ම ටෝගල කරන්න " + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "ගැලපෙන පිවිසුම් සමග නව ධාවන ලැයිස්තුව තනන්න " + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "කවුළු ෆොන්ටයේ ප්‍රධාන ධාවකය තෝරන්න:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "ධාවන ලැස්තු ෆොන්ටය තෝරන්න:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "බිට්මැප් ෆොන්ට භාවිතා කරන්න (ASCII පමණක් සහය වන )" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "ගීත තේමාව දෙපසට චලනය කරන්න " -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "විශ්ලේශකය " -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "විෂය පථය " -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "වහනවා " -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "සාමාන්‍ය " -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "දල්වනවා " -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr " රේඛා" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "තීරු " -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "මන්දගාමිම " -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "මන්දගාමි" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "මධ්‍යම " -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "වේගවත් " -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "වේගවත්ම " -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "හිම " -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "මෘදු " -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "දෘෂ්ටි කල්පනය " @@ -4017,58 +3917,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "සංරක්ෂණය නොකරන ලද Winamp 2.x මතුපිට" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "සක්‍රිය ධාවන ලැයිස්තුවේ පිවිසුම් සොයන්න " - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"ධාවන ලැයිස්තුවේ පිවිසුම්, ක්ෂේත්‍ර එකක් හෝ වැඩි ගණනක් ගොනු කිරිමනේ තෝරන්න. ක්ෂේත්‍ර විධිමත් ප්‍රකාශන " -"වාග් රීති, අකුරු තටු-සංවේදී නැති භාවිතා කරයි. ඔබට විධිමත් ප්‍රකාශන වාග් රීති ක්‍රියාත්මක වන ආකාරය " -"පිළිබඳ අවබෝධයක් නැති නම්, ඔබ සොයන වචන කොටස ඇතුල් කරන්න." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "පෙර තේරීම සෙවීමට පෙර හිස් කරන්න " - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "ගැලපෙන පිවිසුම් සඳහා ස්වයංක්‍රියව පෙළගැස්ම ටෝගල කරන්න " - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "ගැලපෙන පිවිසුම් සමග නව ධාවන ලැයිස්තුව තනන්න " - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Snd ගොනු පේනු මෘදුකාංගය" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4524,19 +4377,32 @@ "භාවිතා කිරීම සඳහා, add a URL: tone://frequency1;frequency2;frequency3;...\n" "e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(අතිරේක පණිවිඩ සඟවන ලඳි.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "" -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "කටහඬ ඉවත් කිරීම​" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4673,14 +4539,38 @@ "ප්‍රකාශන හිමිකම 2006 William Pitcock \n" "ඇතැම් පේනු මෘදුකාංග කේත Miles Egan විසිනි." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr " 2SF විකේතකය" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "XML හුවමාරු කළ හැකි ධාවන ලැයිස්තුව​ (XSPF)" diff -Nru audacious-plugins-4.1/po/sk.po audacious-plugins-4.3.1/po/sk.po --- audacious-plugins-4.1/po/sk.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/sk.po 2023-04-29 20:17:32.000000000 +0000 @@ -5,7 +5,9 @@ # Translators: # Andrej Časo , 2017 # Andrej Herceg , 2007, 2008, 2010, 2011 +# awg awg, 2022 # Lukáš Dobránsky , 2012 +# Mastný Chleba, 2022 # Tomáš Tomovčík , 2016 # 7dcd6f74323fe8d9c477949ff8fcbb1c_c427b63 <3fcd202e3dfab15fda15b8e88e54d449_7173>, 2012 # Corduroy , 2013 @@ -14,9 +16,9 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: awg awg, 2022\n" "Language-Team: Slovak (http://www.transifex.com/audacious/audacious/language/" "sk/)\n" "Language: sk\n" @@ -28,14 +30,14 @@ #: src/aac/aac.cc:19 msgid "AAC (Raw) Decoder" -msgstr "AAC (Raw) dekodér" +msgstr "AAC (Raw) Dekodér" #: src/adplug/adplug-xmms.cc:70 msgid "AdPlug (AdLib Player)" msgstr "AdPlug (AdLib prehrávač)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "sekvenčný" @@ -45,11 +47,13 @@ #: src/adplug/adplug-xmms.cc:350 msgid "OPL Emulator:" -msgstr "" +msgstr "OPL Emulátor:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Vzorkovacia frekvencia:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -65,265 +69,13 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Rôzne" #: src/adplug/adplug-xmms.cc:356 msgid "Repeat song in endless loop" -msgstr "" - -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Budík" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "_Nastaviť budík..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Zásuvný modul na spustenie prehrávania v presne určený čas.\n" -"\n" -"Napísali Adam Feakin a Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Čas\n" -"Zobudiť o:\n" -"Čas Budíka.\n" -"\n" -"Ticho po:\n" -"Zastaviť budík po uplynutí tejto doby.\n" -"(ak nebude budiace okno zavreté)\n" -"\n" -"Dni\n" -"Deň:\n" -"Vyberte dni, kedy sa ma budík zapnúť.\n" -"\n" -"Čas:\n" -"Vyberte čas budíka na každý deň,\n" -"alebo použite predvolený čas.\n" -"\n" -"Hlasitosť\n" -"Zvýšiť hlasitosť:\n" -"Zvyšuje hlasitosť na určenú úroveň po zvolenú dobu.\n" -"\n" -"Začať na:\n" -"Zvyšovanie hlasitosti začne na tejto úrovni.\n" -"\n" -"Skončiť na:\n" -"Koniec zvyšovania hlasitosti.\n" -"Ak je doba zvyšovania hlasitosti nastavená na 0,\n" -"tak hlasitosť ostane na tejto úrovni a začne sa \n" -"prehrávanie.\n" -"\n" -"Možnosti:\n" -"Dodatočný príkaz:\n" -"Tento príkaz sa bude vykonávať počas budenia.\n" -"\n" -"Zoznam skladieb:\n" -"Nahrá zoznam skladieb, z ktorého sa bude\n" -"prehrávať - musí mať príponu m3u.\n" -"Ak žiadny zoznam skladieb nieje nahratý použijú sa\n" -" skladby, ktoré budú v aktuálnom zozname skladieb.\n" -"Môže byť sem zadaná aj URL MP3/OGG streamu ,\n" -"ale nahratie zoznamu skladieb z URL\n" -"nieje v súčasnosti podporované.\n" -"\n" -"Pripomienka:\n" -"Pri vypnutí budíka sa zobrazí odkaz.\n" -"Text odkazu zapíšte do vstupného poľa a\n" -"ak si želáte odkaz zobraziť stlačte tlačidlo ." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Toto je budiaci signál." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Vaša pripomienka na dnes je..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Pripomienka" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Pondelok" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Utorok" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Streda" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Štvrtok" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Piatok" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Sobota" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Nedeľa" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Čas" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Zobudiť o (predvolené):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Ticho po:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "h" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "min." - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Vyberte dni, kedy má budík budiť" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Deň" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Predvolené" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Dni" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Zosilnenie" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "sekúnd" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Hlasitosť" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Začať na" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Skončiť na" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Aktuálna hlasitosť" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Dodatočný príkaz" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "povoliť" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Zoznam skladieb (voliteľné)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Zvoliť zoznam skladieb" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Možnosti" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Čo tieto možnosti znamenajú?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Pomocník" +msgstr "Nekonečné opakovanie skladby" #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" @@ -473,87 +225,83 @@ msgid "Synthesizer" msgstr "Synthesizer" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Vzorkovacia frekvencia:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - zvoľte SoundFont súbor" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Zrušiť" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Otvoriť" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Názov súboru" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Veľkosť (v bajtoch)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Názov:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " Podrobnosti o MIDI " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Formát:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Dĺžka (ms):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Počet stôp:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "premenlivé" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (váž.):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Čas. pomer:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " Komentáre a text MIDI skladby " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* v MIDI súbore sa nenachádzajú žiadne komentáre *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* v MIDI súbore sa nenachádzajú žiadne texty skladby *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Zatvoriť" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (neplatné UTF-8)" @@ -609,7 +357,7 @@ msgid "Concave Rectangle" msgstr "Konkávny obdĺžnik" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Žiadne" @@ -647,94 +395,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "OSD sa zobrazí keď je prehrávanie obnovené." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Umiestnenie" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Relatívne odsadenie v smere osi X:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Relatívne odsadenie v smere osi Y:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Maximálna šírka OSD:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Možnosti pre viac monitorov" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Zobraziť OSD na:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "všetkých monitoroch" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "monitore %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Časovanie (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Zobraziť:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Zosvetliť:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Stmavnúť:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Písma" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Písmo %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Tieň" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Štýl zobrazenia" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Farby" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Farba %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Povoliť spúšťač" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Udalosť" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Bol zistený kompozitný správca" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -744,56 +492,56 @@ "Ak viete, že žiadny nebeží, prosím, aktivujte kompozitného správcu, inak " "nebude OSD pracovať správne" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Pri falošnej priehľadnosti nie je potrebný kompozitný správca" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Priehľadnosť" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Falošná priehľadnosť" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Skutočná priehľadnosť (vyžaduje kompozitné rozšírenie X servera)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Kompozitné rozšírenie nie je načítané" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "OSD Audacious" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Umiestnenie" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animácia" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Text" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Výzdoba" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Spúšťač" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Rôzne" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Test" @@ -809,11 +557,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Audacious zoznamy skladieb (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Farba" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Rozsah rozostrenia" @@ -825,6 +589,10 @@ msgid "Presets:" msgstr "Predvoľby:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Predvolené" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Úroveň zdroja:" @@ -837,7 +605,7 @@ msgid "Cut frequency:" msgstr "Frekvencia pre vystrihnutie:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Analyzátor spektra" @@ -932,50 +700,50 @@ msgid "Audio CD" msgstr "Zvukové CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Zlyhalo CD zariadenie %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Nebolo nájdené žiadne vhodné CD zariadenie." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Mechanika je prázdna." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Nepodporovaný typ disku." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Zlyhalo dokončenie inicializácie otvorenia CD zariadenia." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Zlyhalo načítanie prvého/posledného čísla skladby." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Nie je možné prečítať začiatok/koniec LSN pre stopu %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." -msgstr "" +msgstr "Zlyhalo pripojenie k CDDB databáze" -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Nepodaril sa dotaz na CDDB server" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Nepodaril sa dotaz na CDDB server: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "" @@ -1048,6 +816,13 @@ msgid "Default song length:" msgstr "Predvolená dĺžka skladby:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "sekúnd" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Prevzorkovanie" @@ -1076,7 +851,7 @@ msgid "CoreAudio output" msgstr "CoreAudio výstup" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1088,11 +863,11 @@ "Copyright 2010 John Lindgren" msgstr "" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Použite exkluzívny mód" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" @@ -1189,20 +964,20 @@ msgid "Delete" msgstr "Odstrániť" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Zrušiť" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Odstrániť zvolené súbory" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Metóda odstraňovania" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Namiesto okamžitého odstránenia presunúť do koša" @@ -1228,7 +1003,7 @@ msgstr "Oneskorenie:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1244,11 +1019,11 @@ msgid "Echo" msgstr "Ozvena" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "FFmpeg zásuvný modul" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1372,89 +1147,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kb/s" +msgid "8 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kb/s" +msgid "16 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kb/s" +msgid "32 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40kb/s" +msgid "40 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48kb/s" +msgid "48 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56kb/s" +msgid "56 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64kb/s" +msgid "64 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80kb/s" +msgid "80 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96kb/s" +msgid "96 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112kb/s" +msgid "112 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128kb/s" +msgid "128 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160kb/s" +msgid "160 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192kb/s" +msgid "192 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224kb/s" +msgid "224 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256kb/s" +msgid "256 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Joint Stereo" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1566,7 +1341,7 @@ msgid "Quality (0-1):" msgstr "Kvalita (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Všeobecné" @@ -1575,11 +1350,11 @@ msgid "FLAC Decoder" msgstr "FLAC dekodér" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "bezstratový" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1611,7 +1386,7 @@ msgid "Invalid open mode" msgstr "Neplatný spôsob otvárania" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1631,116 +1406,134 @@ "\n" "Licencia: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL analyzátor spektra" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "Číslo položky" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "Vstupné číslo" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Názov" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Umelec" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Rok" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Album" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Umelec albumu" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Stopa" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Žáner" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "Poradie vo fronte" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "Pozícia fronty" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Dĺžka" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "Cesta k súboru" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "Cesta súboru" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Názov súboru" -#: src/gtkui/columns.cc:47 -msgid "Custom title" +#: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" msgstr "Vlastný názov" -#: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Dátový tok" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Komentár" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Dostupné stĺpce" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Zobrazené stĺpce" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Vyhľadávací nástroj" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Ukotviť vľavo" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Ukotviť vpravo" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Ukotviť hore" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Ukotviť dole" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Uvolniť" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Zakázať" @@ -1780,8 +1573,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Hrať" @@ -1958,8 +1751,8 @@ msgid "Remove _Unavailable Files" msgstr "Odstrániť nedost_upné súbory" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Nový" @@ -1969,7 +1762,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "Od_strániť" @@ -2100,7 +1893,7 @@ msgstr "Ozn_ačiť všetko" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "P_remenovať ..." @@ -2128,104 +1921,109 @@ msgid "Show column headers" msgstr "Zobrazovať hlavičky stĺpcov" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Posuň pri zmene skladby" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Prostredie GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Napĺňanie vyrovnávajúcej pamäte ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Prehrať" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Pozastaviť" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Prehľadať knižnicu" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Otvoriť súbory" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Pridať súbory" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Predchádzajúca" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Zastaviť" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Nasledujúca" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Záznam streamu" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Opako_vať" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Náhodné prehrávanie" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" @@ -2234,104 +2032,104 @@ msgstr[2] "%d kanály" msgstr[3] "%d kanály" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kb/s" +msgid "%d kbit/s" +msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Režim jednej skladby." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Režim zoznamu skladieb." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Zastaviť po skončení skladby." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Predchádzajúca skladba" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Pozastaviť/Pokračovať" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Nasledujúca skladba" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Stlmiť" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Zvýšenie hlasitosti" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Zníženie hlasitosti" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Prejsť na súbor" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Prepnúť okno prehrávača" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Zobraziť OSD" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Opakovanie" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Náhodné prehrávanie" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Zastaviť po skončení aktuálnej skladby" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Vyvolať okno/á prehrávača" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(žiadne)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" "Do you want to continue?" msgstr "" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Priradenie tlačidiel myši" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2339,23 +2137,23 @@ "V textovom poli stlačte kombináciu klávesov.\n" "Môžete priradiť aj tlačítka na myši." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Klávesové skratky:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Činnosť:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Priradenie klávesu:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "Pridať" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Globálne klávesové skratky" @@ -2441,16 +2239,16 @@ "ACK server vyžaduje vzorkovací kmitočet %d Hz, ale Audacious prehráva na %d " "Hz. Prosím použite efekt Prevodník vzorkovacieho kmitočtu na opravu." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "Nastavenia %s" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Cesty modulu:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2461,25 +2259,25 @@ "Po pridaní novej cesty, stlačte Enter pre vyhľadanie nových modulov. " -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Dostupné moduly:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Povoliť" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Povolené moduly:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Nastavenie" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2534,101 +2332,105 @@ msgid "Wait before reconnecting:" msgstr "Počkajte pred opätovným pripojením:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Nedá sa načítať %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Nedá sa analyzovať %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Vyhľadáva sa text skladby..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Chyba" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "M3U zoznam skladieb" @@ -2786,7 +2588,7 @@ msgstr "Tieto nastavenia sa prejavia až po reštartovaní Audacious." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "_Zastaviť po tejto skladbe" @@ -2795,41 +2597,17 @@ msgid "Moonstone" msgstr "" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Obnoviť predvolené nastavenia" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Práve hrá" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Vstupné číslo" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Umelec albumu" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Pozícia fronty" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Cesta súboru" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Názov súboru" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Vlastný názov" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Počet položiek" @@ -2845,7 +2623,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Použiť presný výpočet dĺžky (pomalé)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Priestorový zvuk" @@ -2946,26 +2724,26 @@ msgid "OpenMPT (Module Player)" msgstr "" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "" @@ -2977,11 +2755,21 @@ msgid "Windowed sinc" msgstr "" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4 výstup" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "OSS3 výstup" @@ -3023,18 +2811,35 @@ "Chcem poďakovať ľuďom z #audacious, najmä Tonymu Vroonovy a Johnovy " "Lindgrenovy a samozrejme autorom predošlého OSS zásuvného modulu." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Prehrávanie" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Správca zoznamu skladieb" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Odstrániť" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "Premenovať" @@ -3050,7 +2855,7 @@ msgid "OpenPSF Configuration" msgstr "" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Ignorovať dĺžku zo súboru" @@ -3131,11 +2936,11 @@ "License: GPLv2+" msgstr "" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "" -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3171,14 +2976,18 @@ msgid "Audio Settings ..." msgstr "Nastavenie zvuku ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Qt prostredie" @@ -3397,7 +3206,7 @@ msgid "Library" msgstr "Knižnica" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" @@ -3406,23 +3215,23 @@ msgstr[2] "%d skladieb" msgstr[3] "%d skladieb" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "tohto žánru" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "na" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "od" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "" @@ -3430,7 +3239,7 @@ msgid "Monitor library for changes" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3438,19 +3247,19 @@ "Pre import hudobnej knižnice do Audacious, vyberte priečinok a potom " "kliknite na ikonu \"obnoviť\"." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Čakajte prosím ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Vybrať priečinok" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Vyhľadať knižnicu" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" @@ -3459,7 +3268,7 @@ msgstr[2] "Zobrazené %d z(o) %d výledkov" msgstr[3] "Zobrazené %d z(o) %d výledkov" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" @@ -3468,11 +3277,11 @@ msgstr[2] "%d výsledkov" msgstr[3] "%d výsledkov" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Vytvoriť zoznam skladieb" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Pridať do zoznamu skladieb" @@ -3576,108 +3385,108 @@ msgid "Repeat point B set." msgstr "Nastaviť bod opakovania B." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Predzosilnenie" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz " -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz " -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Ekvalizér Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Nahrávanie zapnuté" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Nahrávanie vypnuté" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "prejsť na %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Hlasitosť: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Vyváženie: %d%% vľavo" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Vyváženie: stred" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Vyváženie: %d%% vpravo" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Ponuka s možnosťami" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Vypnúť „Vždy navrchu“" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Zapnúť „Vždy navrchu“" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Informácie o súbore" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Dvojnásobná veľkosť" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Vizualizácia" @@ -3701,10 +3510,6 @@ msgid "Open URL ..." msgstr "Otvoriť URL ..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Prehrávanie" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Zoznam skladieb" @@ -3719,7 +3524,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Služby" @@ -3736,7 +3541,7 @@ msgstr "Ukončiť" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Informácie o skladbe ..." @@ -3756,7 +3561,7 @@ msgid "Clear A-B Repeat" msgstr "Odstrániť A-B opakovanie" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Prejsť na skladbu ..." @@ -3849,20 +3654,20 @@ msgstr "Pridať súbory …" #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Podľa názvu" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Podľa názvu súboru" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Podľa cesty k súboru" @@ -3890,113 +3695,113 @@ msgid "Remove Selected" msgstr "Odstrániť označené" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Hľadanie a výber" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Invertovať výber" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Zrušiť výber" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Označiť všetko" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Podľa čísla stopy" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Podľa umelca" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Podľa albumu" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Podľa umelca albumu" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Podľa dátumu vydania" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Podľa žánru" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Podľa dĺžky" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Podľa vlastného názvu" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Podľa komentára" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Premiešať poradie" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Obrátiť poradie" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Triediť výber" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Triediť zoznam" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Otvoriť priečinok" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Vystrihnúť" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Kopírovať" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Vložiť" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Vložiť na koniec" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Pridať alebo odobrať z fronty" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d z %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Editor zoznamu skladieb" @@ -4012,167 +3817,219 @@ msgid "Add Folder ..." msgstr "Pridať priečinok ..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Vyhľadať skladby v aktívnom zozname skladieb" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Položky v zozname skladieb vyberiete vyplnením jedného alebo viacerých polí. " +"Polia používajú regulárne výrazy a neberie sa ohľad na veľkosť písmen. Ak " +"regulárnym výrazom nerozumiete, jednoducho zadajte časť textu, ktorý chcete " +"vyhľadať." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Názov: " + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Album: " + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Umelec: " + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Názov súboru:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Pred hľadaním vymazať predchádzajúci výber" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Zhodujúce sa položky pridať do (odstrániť z) frontu" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Zo zhodujúcich sa položiek vytvoriť nový zoznam skladieb" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Hľadať" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Prehrávač:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Vyberte písmo pre hlavné okno prehrávača:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Zoznam skladieb:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Zvoliť písmo pre zoznam skladieb:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Téma vzhľadu" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Písma" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Použiť bitmapové písma (podporuje iba ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Rolovať názov skladby" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Rolovať názov skladby obidvoma smermi" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analyzátor" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Osciloskop" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Zvukový odtlačok / VU meter" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Žiadne" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normálny" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Oheň" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Vertikálne čiary" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Čiary" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Obdĺžniky" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Najpomalšie" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Pomaly" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Stredne" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Rýchlo" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Najrýchlejšie" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Body" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Čiara" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Plná vlnovka" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Ľad" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Plynulý" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Farebná schéma:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Štýl:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Klesanie:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Klesanie vrcholu:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Štýl vlnovky:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Farebná schéma zvukového odtlačku:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "Štýl VU metera:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Typ" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Typ vizualizácie:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analyzátor" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Zobrazovať zvukové špičky" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Vizualizácia" @@ -4184,59 +4041,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Nezabalený vzhľad pre WinAMP 2.x" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Vyhľadať skladby v aktívnom zozname skladieb" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Hľadať" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Položky v zozname skladieb vyberiete vyplnením jedného alebo viacerých polí. " -"Polia používajú regulárne výrazy a neberie sa ohľad na veľkosť písmen. Ak " -"regulárnym výrazom nerozumiete, jednoducho zadajte časť textu, ktorý chcete " -"vyhľadať." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Názov: " - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Album: " - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Umelec: " - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Názov súboru:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Pred hľadaním vymazať predchádzajúci výber" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Zhodujúce sa položky pridať do (odstrániť z) frontu" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Zo zhodujúcich sa položiek vytvoriť nový zoznam skladieb" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Sndfile zásuvný modul" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4716,19 +4525,32 @@ "Pre použitie, pridajte URL: tone://frequency1;frequency2;frequency3;...\n" "napr.. tone://2000;2005 prehrá 2000 Hz tón a 2005 Hz tón" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Ďalšie správy boli skryté.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Pracujem..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Informácie" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Odstránenie hlasu" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4879,14 +4701,38 @@ "\n" "časť kódu zásuvného modulu napísal Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2SF dekodér" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "Konfigurácia XSF" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "XML Shareable Playlists (XSPF)" diff -Nru audacious-plugins-4.1/po/sl.po audacious-plugins-4.3.1/po/sl.po --- audacious-plugins-4.1/po/sl.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/sl.po 2023-04-29 20:17:32.000000000 +0000 @@ -3,22 +3,24 @@ # This file is distributed under the same license as the Audacious Plugins package. # # Translators: -# Nejc Bertoncelj , 2020 +# Arnold Marko , 2021-2023 +# Nejc Bertoncelj, 2020 +# Nejc Bertoncelj , 2020-2021 msgid "" msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-27 17:36+0000\n" -"Last-Translator: Thomas Lange\n" -"Language-Team: Slovenian (http://www.transifex.com/audacious/audacious/" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Arnold Marko , 2021-2023\n" +"Language-Team: Slovenian (http://app.transifex.com/audacious/audacious/" "language/sl/)\n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" -"%100==4 ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || " +"n%100==4 ? 2 : 3);\n" #: src/aac/aac.cc:19 msgid "AAC (Raw) Decoder" @@ -29,7 +31,7 @@ msgstr "AdPlug (AdLib Player)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "sekvenčno" @@ -39,11 +41,13 @@ #: src/adplug/adplug-xmms.cc:350 msgid "OPL Emulator:" -msgstr "Emulator OPL:" +msgstr "OPL emulator:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Hitrost vzorčenja" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Frekvenca vzorčenja:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -59,267 +63,21 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Razno" #: src/adplug/adplug-xmms.cc:356 msgid "Repeat song in endless loop" -msgstr "Ponavljaj skladbe v neskončni zanki" - -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Alarm" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Nastavi alarm ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Vtičnik, ki zažene predvajanje ob določenem času.\n" -"\n" -"Avtorja: Adam Feakin in Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Čas\n" -" Budilka ob:\n" -" Čas vklopa budilke.\n" -"\n" -" Izklopi ob:\n" -" Izklopi, če budilka ni bila ročno ugasnjena\n" -"\n" -"\n" -"Dnevi\n" -" Dan:\n" -" Izberite, na kateri dan se bo budilka vklopila.\n" -"\n" -" Čas:\n" -" Izberite, ob kateri uri se bo budilka vklopila vsak dan,\n" -" ali pa pritisnite na gumb za izbiro privzetega časa.\n" -"\n" -"\n" -"Glasnost\n" -" Postopno višanje:\n" -" Postopno višaj do izbrane glasnosti toliko časa.\n" -"\n" -" Začni ob:\n" -" Začni višati od te glasnosti.\n" -"\n" -" Dvigni do:\n" -" Glasnost, kjer se višanje konča. Če je čas višanja 0,\n" -" bo budilka začela predvajati pri tej glasnosti.\n" -"\n" -"\n" -"Nastavitve:\n" -" Dodaten ukaz:\n" -" Zaženi ta ukaz ob bujenju.\n" -"\n" -" Seznam predvajanja:\n" -" Naloži ta seznam. Če ni vnešen, se bo uporabil trenutni.\n" -" Lahko vnesete tudi naslov URL pretoka mp3/ogg.\n" -"\n" -" Opomnik:\n" -" Prikaži to besedilo, ko se budilka vklopi. Ne\n" -" pozabite na kljukico." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "To je vaš klic bujenja." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Vaš opomnik za danes..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Opomnik" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Ponedeljek" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Torek" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Sreda" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Četrtek" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Petek" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Sobota" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Nedelja" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Čas" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Alarm ob (privzeto):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Utišaj čez:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "h" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "min" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Ob katerih dneh se alarm vklopi?" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Dan" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Privzeto" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Dni" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Pojemanje" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "sekund" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Glasnost" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Začni ob" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Zaključek" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Trenutno" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Dodaten ukaz" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "omogoči" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Seznam predvajanja (neobvezno)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Izberite seznam predvajanja" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Nastavitve" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Kaj te nastavitve pomenijo?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Pomoč" +msgstr "Ponavljaj skladbo v neskončni zanki" #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" -msgstr "Platnica albuma" +msgstr "Naslovnica albuma" #: src/alsa/alsa.h:64 msgid "ALSA Output" -msgstr "Izhod ALSA" +msgstr "ALSA" #: src/alsa/config.cc:28 msgid "" @@ -345,7 +103,7 @@ #: src/alsa/config.cc:188 msgid "Default mixer device" -msgstr "Privzet mešalnik" +msgstr "Privzeta mešalka" #: src/alsa/config.cc:296 msgid "PCM device:" @@ -353,11 +111,11 @@ #: src/alsa/config.cc:299 msgid "Mixer device:" -msgstr "Mešalnik:" +msgstr "Mešalka:" #: src/alsa/config.cc:302 msgid "Mixer element:" -msgstr "Mešalniški element:" +msgstr "Element mešalke:" #: src/amidiplug/amidi-plug.cc:42 msgid "AMIDI-Plug (MIDI Player)" @@ -415,15 +173,15 @@ #: src/amidiplug/i_configure.cc:110 msgid "Override default reverb:" -msgstr "Prezri privzet reverb:" +msgstr "Prezri privzeti odjek:" #: src/amidiplug/i_configure.cc:112 src/amidiplug/i_configure.cc:120 msgid "On" -msgstr "Vklop" +msgstr "vklopi" #: src/amidiplug/i_configure.cc:118 msgid "Override default chorus:" -msgstr "Prezri privzet zbor:" +msgstr "Prezri privzeti odmev:" #: src/amidiplug/i_configure.cc:128 src/console/plugin.cc:29 msgid "Playback" @@ -431,15 +189,15 @@ #: src/amidiplug/i_configure.cc:129 msgid "Transpose:" -msgstr "Transponiraj:" +msgstr "Transpozicija:" #: src/amidiplug/i_configure.cc:131 src/speedpitch/speed-pitch.cc:257 msgid "semitones" -msgstr "poltoni" +msgstr "poltonov" #: src/amidiplug/i_configure.cc:132 msgid "Drum shift:" -msgstr "Zamik bobnov:" +msgstr "Premik bobnov:" #: src/amidiplug/i_configure.cc:134 msgid "note numbers" @@ -461,87 +219,83 @@ msgid "Synthesizer" msgstr "Sintetizator" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Hitrost vzorčenja:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - izberite datoteko SoundFont" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Prekliči" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Odpri" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Ime datoteke" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Velikost (biti)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Ime:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " Podatki MIDI " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Vrsta:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" -msgstr "Dolžina (msec):" +msgstr "Dolžina (ms):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Št. skladb:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "spremenljivo" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Časovni razdelki:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI komentarji in besedila " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" -msgstr "* ta datoteka MIDI ne vsebuje komentarjev *" +msgstr "* ta MIDI datoteka ne vsebuje komentarjev *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" -msgstr "* ta datoteka MIDI ne vsebuje besedil *" +msgstr "* ta MIDI datoteka ne vsebuje besedil *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Zapri" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (neveljaven UTF-8)" @@ -597,7 +351,7 @@ msgid "Concave Rectangle" msgstr "Udrti pravokotnik" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Ničesar" @@ -633,94 +387,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Ob koncu premora prikaži OSD." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Postavitev" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Relativni zamik na osi X:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Relativni zamik na osi Y:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Največja širina OSD:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Nastavitve za več zaslonov" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Prikaži OSD z uporabo:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "vseh zaslonov" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "zaslona %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Trajanje (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Prikaz:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Zvokovno naraščanje:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Zvokovno pojemanje:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Pisave" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Pisava %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Senca" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Slog izrisovanja" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Barve" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Barva %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Vklopi prožilnik" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Dogodek" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Zaznan upravljalnik skladnje" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -729,56 +483,56 @@ "Upravljalnik skladnje ni bil zaznan;\n" "razen če veste, da deluje, ga prosimo zaradi delovanja OSD aktivirajte" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Upravljalnik skladnje ni potreben za lažno prosojnost" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Prosojnost" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Lažna prosojnost" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Prosojnost (zahteva X Composite Extensions)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Skladenjske razširitve niso naložene" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Mesto" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animacija" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Besedilo" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Okras" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Prožilnik" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Razno" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Test" @@ -794,13 +548,29 @@ msgid "Audacious Playlists (audpl)" msgstr "Seznami predvajanja Audacious Playlists (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Lomilec bitov" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Bitna globina:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Stopnja prevzorčenja na manj:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Lomilec bitov" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Barva" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" -msgstr "Obseg zabrisa" +msgstr "Osciloskop" #: src/bs2b/plugin.cc:38 msgid "Bauer Stereophonic-to-Binaural (BS2B)" @@ -810,6 +580,10 @@ msgid "Presets:" msgstr "Predloge:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Privzeto" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Nivo dovajanja:" @@ -822,7 +596,7 @@ msgid "Cut frequency:" msgstr "Mejna frekvenca:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Spektralni analizator" @@ -917,65 +691,65 @@ msgid "Audio CD" msgstr "Glasbeni CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Napaka odpiranja naprave CD %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Naprave za branje nosilcev CD niso bile najdene." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Pogon je prazen." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Nepodprt tip nosilca." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." -msgstr "Napaka inicializiranja odprtega CD-pogona." +msgstr "Napaka inicializacije odprtega CD-pogona." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Napaka pridobivanja prve/zadnje skladbe." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Ne morem brati začetka/konca LSN za skladbo %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Napaka vzpostavljanja povezave s CDDB." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Napaka poizvedovanja v bazi CDDB." -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Napaka poizvedovanja v bazi CDDB: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Napaka branja baze CDDB: %s" #: src/cd-menu-items/cd-menu-items.cc:33 msgid "Audio CD Menu Items" -msgstr "Elementi glasbenega CD" +msgstr "Menijski vnos za predvajanje CD-nosilca" #: src/cd-menu-items/cd-menu-items.cc:45 msgid "Pla_y CD" -msgstr "Predvaja_j CD" +msgstr "_Predvajaj CD" #: src/cd-menu-items/cd-menu-items.cc:45 msgid "_Add CD" -msgstr "Dod_aj CD" +msgstr "_Dodaj CD" #: src/compressor/compressor.cc:45 msgid "Compression" @@ -1033,6 +807,13 @@ msgid "Default song length:" msgstr "Privzeta dolžina skladbe:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "sek" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Vnovično vzorčenje" @@ -1059,9 +840,9 @@ #: src/coreaudio/coreaudio.cc:53 msgid "CoreAudio output" -msgstr "Izhod CoreAudio" +msgstr "CoreAudio" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1081,11 +862,11 @@ "Based on SDL Output Plugin for Audacious\n" "Copyright 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Uporabi ekskluzivni način" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "Uporabi bitno točen zvok (prilagodi mero vzorčenja)" @@ -1148,7 +929,7 @@ #: src/delete-files/delete-files.cc:53 src/delete-files/delete-files.cc:215 #: src/delete-files/delete-files.cc:230 msgid "Delete Files" -msgstr "Izbiši datoteke" +msgstr "Izbris datotek" #: src/delete-files/delete-files.cc:120 msgid "No files are selected." @@ -1167,12 +948,12 @@ #: src/delete-files/delete-files.cc:133 #, c-format msgid "Do you want to move %d files to the trash?" -msgstr "Želite premakniti %d datotek v koš?" +msgstr "Želite premakniti toliko datotek v koš: %d?" #: src/delete-files/delete-files.cc:134 #, c-format msgid "Do you want to permanently delete %d files?" -msgstr "Želite trajno izbrisati %d datotek?" +msgstr "Želite trajno izbrisati toliko datotek: %d?" #: src/delete-files/delete-files.cc:146 msgid "Move to trash" @@ -1182,20 +963,20 @@ msgid "Delete" msgstr "Izbriši" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Prekliči" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Izbriši izbrane datoteke" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Način brisanja" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Namesto trajnega brisanja premakni v koš" @@ -1221,7 +1002,7 @@ msgstr "Zamik:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1237,11 +1018,11 @@ msgid "Echo" msgstr "Odmev" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Vtičnik FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1259,7 +1040,7 @@ #: src/filewriter/filewriter.cc:48 msgid "FileWriter Plugin" -msgstr "Vtičnik FileWriter" +msgstr "FileWriter" #: src/filewriter/filewriter.cc:316 #, c-format @@ -1330,7 +1111,7 @@ #: src/filewriter/filewriter.cc:411 msgid "Prepend track number to file name" -msgstr "Pripni številko skladbe imenu datoteke" +msgstr "Pred ime datoteke pripiši številko skladbe" #: src/filewriter/filewriter.cc:417 src/filewriter/filewriter.cc:449 msgid "Auto" @@ -1364,89 +1145,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "8 kbit/s" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "16 kbit/s" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "32 kbit/s" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "40 kbit/s" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "48 kbit/s" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "56 kbit/s" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "64 kbit/s" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "80 kbit/s" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "96 kbit/s" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "112 kbit/s" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "128 kbit/s" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "160 kbit/s" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "192 kbit/s" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "224 kbit/s" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "256 kbit/s" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "320 kbit/s" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Združen stereo" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1460,7 +1241,7 @@ #: src/filewriter/filewriter.cc:478 msgid "Algorithm quality:" -msgstr "Kvaliteta algoritma:" +msgstr "Kakovost algoritma:" #: src/filewriter/filewriter.cc:484 msgid "Bitrate:" @@ -1558,7 +1339,7 @@ msgid "Quality (0-1):" msgstr "Kakovost (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Splošno" @@ -1567,11 +1348,11 @@ msgid "FLAC Decoder" msgstr "Dekodirnik FLAC" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "brezizgubno" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1603,7 +1384,7 @@ msgid "Invalid open mode" msgstr "Napačen način odpiranja" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1623,223 +1404,241 @@ "\n" "License: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "Spektralni analizator OpenGL" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "Številka vnosa" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Naslov" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Izvajalec" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Leto" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Album" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Izvajalec albuma" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Skladba" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Zvrst" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "Pozicija v vrsti" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "Mesto na vrsti" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Dolžina" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "Pot do datoteke" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "Datotečna pot" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Naslov po meri" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Datotečno ime" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Naslov po meri" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Bitna hitrost" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Komentar" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "Založnik" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "Kataloška številka" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Vrstice na voljo" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Prikazane vrstice" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Orodje za iskanje" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Pripni na levo" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Pripni na desno" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Pripni na vrh" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Pripni na dno" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Odpni" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Onemogoči" #: src/gtkui/menus.cc:79 src/qtui/menus.cc:107 #: src/statusicon-qt/statusicon.cc:112 src/statusicon/statusicon.cc:282 msgid "_Open Files ..." -msgstr "Odpri datoteke ..." +msgstr "Odpri _datoteke" #: src/gtkui/menus.cc:80 src/qtui/menus.cc:111 msgid "Open _URL ..." -msgstr "Odpri URL ..." +msgstr "Odpri _URL" #: src/gtkui/menus.cc:81 src/qtui/menus.cc:113 msgid "_Add Files ..." -msgstr "Dodaj datoteke ..." +msgstr "Dodaj datotek_e" #: src/gtkui/menus.cc:82 src/qtui/menus.cc:118 msgid "Add U_RL ..." -msgstr "Dodaj URL ..." +msgstr "Dodaj UR_L" #: src/gtkui/menus.cc:84 src/qtui/menus.cc:120 msgid "Search _Library" -msgstr "Išči po knjižnici" +msgstr "Išči po _knjižnici" #: src/gtkui/menus.cc:86 src/qtui/menus.cc:123 msgid "A_bout ..." -msgstr "O Audacious ..." +msgstr "O programu _Audacious" #: src/gtkui/menus.cc:87 src/qtui/menus.cc:125 msgid "_Settings ..." -msgstr "Nastavitve ..." +msgstr "_Nastavitve" #: src/gtkui/menus.cc:88 src/qtui/menus.cc:131 #: src/statusicon-qt/statusicon.cc:114 src/statusicon/statusicon.cc:284 msgid "_Quit" -msgstr "Izhod ..." +msgstr "_Izhod" #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" -msgstr "Predvajaj" +msgstr "_Predvajaj" #: src/gtkui/menus.cc:93 src/qtui/menus.cc:137 #: src/statusicon-qt/statusicon.cc:107 src/statusicon/statusicon.cc:277 msgid "Paus_e" -msgstr "Premor" +msgstr "P_remor" #: src/gtkui/menus.cc:94 src/qtui/menus.cc:139 #: src/statusicon-qt/statusicon.cc:108 src/statusicon/statusicon.cc:278 msgid "_Stop" -msgstr "Ustavi" +msgstr "_Ustavi" #: src/gtkui/menus.cc:95 src/qtui/menus.cc:141 #: src/statusicon-qt/statusicon.cc:109 src/statusicon/statusicon.cc:279 msgid "Pre_vious" -msgstr "Prejšnja" +msgstr "Pr_ejšnja" #: src/gtkui/menus.cc:96 src/qtui/menus.cc:143 #: src/statusicon-qt/statusicon.cc:110 src/statusicon/statusicon.cc:280 msgid "_Next" -msgstr "Naslednja" +msgstr "Nas_lednja" #: src/gtkui/menus.cc:97 src/qtui/menus.cc:145 src/skins/menus.cc:114 #: src/skins-qt/menus.cc:105 msgid "Previous Album" -msgstr "Prejšnji album" +msgstr "Prejš_nji album" #: src/gtkui/menus.cc:98 src/qtui/menus.cc:146 src/skins/menus.cc:115 #: src/skins-qt/menus.cc:106 msgid "Next Album" -msgstr "Naslednji album" +msgstr "Nasledn_ji album" #: src/gtkui/menus.cc:100 src/qtui/menus.cc:148 msgid "_Repeat" -msgstr "Ponavljaj" +msgstr "P_onavljaj" #: src/gtkui/menus.cc:101 src/qtui/menus.cc:150 msgid "S_huffle" -msgstr "Mešaj" +msgstr "_Mešaj" #: src/gtkui/menus.cc:102 src/qtui/menus.cc:152 msgid "Shuffle by Albu_m" -msgstr "Mešaj med albumi" +msgstr "Me_šaj med albumi" #: src/gtkui/menus.cc:103 src/qtui/menus.cc:155 msgid "N_o Playlist Advance" -msgstr "Ne nadaljuj po seznamu predvajanja" +msgstr "Ne nadaljuj po _seznamu predvajanja" #: src/gtkui/menus.cc:104 src/qtui/menus.cc:157 msgid "Stop A_fter This Song" -msgstr "Ustavi po tej skladbi" +msgstr "Ustavi po _tej skladbi" #: src/gtkui/menus.cc:106 src/gtkui/menus.cc:208 src/qtui/menus.cc:162 #: src/qtui/menus.cc:292 msgid "Song _Info ..." -msgstr "Informacije o skladbi ..." +msgstr "_Informacije o skladbi" #: src/gtkui/menus.cc:107 msgid "Jump to _Time ..." -msgstr "Skoči na ..." +msgstr "Skoči na" #: src/gtkui/menus.cc:108 msgid "_Jump to Song ..." -msgstr "Skoči na skladbo ..." +msgstr "Skoči na skladbo" #: src/gtkui/menus.cc:110 src/qtui/menus.cc:165 msgid "Set Repeat Point _A" @@ -1851,7 +1650,7 @@ #: src/gtkui/menus.cc:112 src/qtui/menus.cc:169 msgid "_Clear Repeat Points" -msgstr "Počisti točke ponavljanja" +msgstr "Počisti to_čki ponavljanja" #: src/gtkui/menus.cc:116 src/gtkui/menus.cc:123 src/gtkui/menus.cc:140 #: src/qtui/menus.cc:173 src/qtui/menus.cc:180 src/qtui/menus.cc:197 @@ -1928,111 +1727,111 @@ #: src/gtkui/menus.cc:156 src/qtui/menus.cc:214 msgid "_Play/Resume" -msgstr "Predvajaj/premor" +msgstr "_Predvajaj/nadaljuj" #: src/gtkui/menus.cc:157 src/qtui/menus.cc:216 msgid "_Refresh" -msgstr "Osveži" +msgstr "_Osveži" #: src/gtkui/menus.cc:159 src/qtui/menus.cc:220 msgid "_Sort" -msgstr "Razvrsti" +msgstr "_Razvrsti" #: src/gtkui/menus.cc:160 src/qtui/menus.cc:221 msgid "Sort Se_lected" -msgstr "Razvrsti izbrane" +msgstr "Razvrsti _izbrane" #: src/gtkui/menus.cc:161 src/qtui/menus.cc:223 msgid "Remove _Duplicates" -msgstr "Odstani dvojnike" +msgstr "Odstrani _dvojnike" #: src/gtkui/menus.cc:162 src/qtui/menus.cc:224 msgid "Remove _Unavailable Files" -msgstr "Odstrani nedosegljive datoteke" +msgstr "Odstrani _nedosegljive datoteke" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" -msgstr "Novo" +msgstr "No_v" #: src/gtkui/menus.cc:165 src/qtui/menus.cc:228 msgid "Ren_ame ..." -msgstr "Preimenuj ..." +msgstr "Pr_eimenuj" #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" -msgstr "Odstrani" +msgstr "Od_strani" #: src/gtkui/menus.cc:168 src/qtui/menus.cc:231 msgid "_Import ..." -msgstr "Uvozi ..." +msgstr "_Uvozi" #: src/gtkui/menus.cc:169 src/qtui/menus.cc:232 msgid "_Export ..." -msgstr "Izvozi ..." +msgstr "I_zvozi" #: src/gtkui/menus.cc:171 src/qtui/menus.cc:235 msgid "Playlist _Manager ..." -msgstr "Upravljalnik seznamov predvajanj ..." +msgstr "Upravljalnik seznamov predvajan_j" #: src/gtkui/menus.cc:172 src/qtui/menus.cc:237 msgid "_Queue Manager ..." -msgstr "Upravljalnik vrste ..." +msgstr "Upravljalnik vrs_te" #: src/gtkui/menus.cc:176 src/qtui/menus.cc:241 msgid "Volume _Up" -msgstr "Zvišaj glasnost" +msgstr "Z_višaj glasnost" #: src/gtkui/menus.cc:177 src/qtui/menus.cc:243 msgid "Volume _Down" -msgstr "Znižaj glasnost" +msgstr "Z_nižaj glasnost" #: src/gtkui/menus.cc:179 src/qtui/menus.cc:247 msgid "_Equalizer ..." -msgstr "Uravnalnik" +msgstr "_Izenačevalnik" #: src/gtkui/menus.cc:180 src/qtui/menus.cc:249 msgid "E_ffects ..." -msgstr "Učinki ..." +msgstr "_Učinki" #: src/gtkui/menus.cc:182 msgid "_Record Stream" -msgstr "Snemanje pretoka" +msgstr "Snemanje _pretoka" #: src/gtkui/menus.cc:183 msgid "Audio _Settings ..." -msgstr "Zvočne nastavitve" +msgstr "_Zvočne nastavitve" #: src/gtkui/menus.cc:187 src/qtui/menus.cc:258 msgid "Show _Menu Bar" -msgstr "Prikaži vrstico z meniji" +msgstr "Prikaži _menijsko vrstico" #: src/gtkui/menus.cc:188 src/qtui/menus.cc:260 msgid "Show I_nfo Bar" -msgstr "Prikažo informacijsko vrstico" +msgstr "Prikaži _informacijsko vrstico" #: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 msgid "Show Info Bar _Album Art" -msgstr "" +msgstr "V informacijski vrstici prikaži _platnico" #: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 msgid "Show Info Bar Vis_ualization" -msgstr "Prikaži stolpično vizualizacijo" +msgstr "Prikaži stolpčno _vizualizacijo" #: src/gtkui/menus.cc:191 src/qtui/menus.cc:266 msgid "Show _Status Bar" -msgstr "Prikaži vrstico stanja" +msgstr "Prikaži vrstico _stanja" #: src/gtkui/menus.cc:193 src/qtui/menus.cc:270 msgid "Show _Remaining Time" -msgstr "Prikaži preostali čas" +msgstr "Prikaži preostali _čas" #: src/gtkui/menus.cc:195 src/qtui/menus.cc:274 src/skins/menus.cc:157 #: src/skins-qt/menus.cc:152 msgid "_Visualizations ..." -msgstr "Vizualizacije ..." +msgstr "Vi_zualizacije" #: src/gtkui/menus.cc:199 src/qtui/menus.cc:278 msgid "_File" @@ -2057,7 +1856,7 @@ #: src/gtkui/menus.cc:204 src/qtui/menus.cc:283 msgid "_View" -msgstr "Poglej" +msgstr "Pogled" #: src/gtkui/menus.cc:209 src/qtui/menus.cc:294 msgid "_Queue/Unqueue" @@ -2092,9 +1891,9 @@ msgstr "Izberi vse" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." -msgstr "Preimenuj ..." +msgstr "Preimenuj" #: src/gtkui/settings.cc:35 src/qtui/settings.cc:63 msgid "Playlist Tabs" @@ -2106,118 +1905,123 @@ #: src/gtkui/settings.cc:38 src/qtui/settings.cc:68 msgid "Show entry counts" -msgstr "Prikaži števec vnosov" +msgstr "Prikaži število skladb v naslovu zavihka" #: src/gtkui/settings.cc:40 src/qtui/settings.cc:71 msgid "Show close buttons" -msgstr "Prikaži gumbe za zaprtje" +msgstr "Prikaži gumb za zaprtje zavihka" #: src/gtkui/settings.cc:42 src/qtui/settings.cc:74 msgid "Playlist Columns" -msgstr "Stolpci seznamov predvajanj" +msgstr "Glava seznama predvajanja" #: src/gtkui/settings.cc:44 src/qtui/settings.cc:76 msgid "Show column headers" -msgstr "Prikaži glave stolpcev" +msgstr "Prikaži glavo" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "V orodni vrstici uporabi simbolične ikone" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" -msgstr "Pomakni seznam ob zamenjavi skladbe" +msgstr "Zamakni dolg seznam ob zamenjavi skladbe" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Vmesnik GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Nalagam ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Predvajaj" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Premor" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" -msgstr "Knjižnjica iskanja" +msgstr "Knjižnica iskanja" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Odpri datoteke" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Dodaj datoteke" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Prejšnja" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Ustavi" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Naslednja" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Pretočno snemanje" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Ponavljanje" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Mešaj" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" -msgstr "" +msgstr "Meni" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" @@ -2226,93 +2030,93 @@ msgstr[2] "%d kanali" msgstr[3] "%d kanalov" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "%d kbit/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Enojni način." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Način seznama predvajanja." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Ustavljam po skladbi." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Prejšnja skladba" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" -msgstr "Premor/predvajaj" +msgstr "Premor/nadaljuj" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Naslednja skladba" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "Korak naprej" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "Korak nazaj" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Utišaj" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Zvišaj glasnost" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Znižaj glasnost" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Skoči na datoteko" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Preklopi okna predvajalnika" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Prikaži OSD" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Preklopi ponavljanje" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Preklopi mešanje" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" -msgstr "Preklopi ustavitev po trenutnjem" +msgstr "Preklopi ustavitev po trenutnem" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Dvigni okna predvajalnika" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(brez)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2322,11 +2126,11 @@ "\n" "Želite nadaljevati?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Vežem miškine gumbe" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2334,23 +2138,23 @@ "V besedilno okno vnesite kombinacijo tipk.\n" "Uporabite lahko tudi miškine gumbe." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Hitre tipke:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Dejanje:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Tipkovne bližnjice:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Dodaj" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Globalne bližnjice" @@ -2382,7 +2186,7 @@ #: src/jack/jack-ng.cc:54 msgid "JACK Output" -msgstr "Izhod JACK" +msgstr "JACK" #: src/jack/jack-ng.cc:126 msgid "Client name:" @@ -2406,7 +2210,7 @@ #: src/jack/jack-ng.cc:141 msgid "ports if input has fewer channels" -msgstr "vrat, če ima vhod manj kanalov" +msgstr "vrat(a), če ima vhod manj kanalov" #: src/jack/jack-ng.cc:143 msgid "Ignore insufficient number of ports" @@ -2420,7 +2224,7 @@ #: src/jack/jack-ng.cc:195 #, c-format msgid "Only %d JACK output ports were found but %d are required." -msgstr "Le %d izhodnih vrat za JACK je bilo najdenih, potrebnih pa je %d" +msgstr "Najdenih toliko izhodnih vrat za JACK: %d, potrebnih pa toliko: %d." #: src/jack/jack-ng.cc:210 #, c-format @@ -2433,7 +2237,7 @@ "depth to floating-point in Audacious settings." msgstr "" "JACK podpira le zvok s plavajočo vejico. V nastavitvah za Audacious morate " -"nastaviti ozhodno bitno globino na tisto s plavajočo vejico." +"nastaviti izhodno bitno globino na tisto s plavajočo vejico." #: src/jack/jack-ng.cc:245 msgid "Failed to connect to the JACK server; is it running?" @@ -2449,16 +2253,16 @@ "Prosimo, uporabite učinek Pretvornik vzorčne hitrosti, da odpravite " "neujemanje." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "Nastavitve za %s" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Poti do modulov:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2468,25 +2272,25 @@ "Iskanje bo poleg LADSPA_PATH potekalo tudi po njih.\n" "Pritisnite Enter po dodajanju novih poti." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Vtičniki na voljo:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Omogoči" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Omogočeni vtičniki:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Nastavitve" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2542,101 +2346,107 @@ msgid "Wait before reconnecting:" msgstr "Počakaj pred ponovnim povezovanjem:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" -msgstr "Besedilo" +msgstr "Besedilo skladbe" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" -msgstr "Nikamor" +msgstr "ne išči" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" -msgstr "" +msgstr "Izvajalec je skrajšan na začetku, naslov -- na koncu" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" -msgstr "" +msgstr "Skrajšaj na znakih:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" +"Nad regularnimi izrazi, ločenimi s presledkom, je izvedena operacija " +"OR" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" -msgstr "" +msgstr "Razdruži na znakih:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" -msgstr "" +msgstr "Nadalje skrajšaj na znakih" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" -msgstr "" +msgstr "Splošno" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" -msgstr "" +msgstr "Razdeli naslov v izvajalca in naslov na znakih" + +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "Viri" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "Uporabni vključena besedilo (z oznake Besedila)" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "Internetni viri" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "Išči besedila na:" +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "Pridobi besedilo s spleta:" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "Shrani besedila v krajevnem medpomnilniku" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Krajevna shramba" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "Naloži besedilne datoteke (.lrc) iz krajevne shrambe" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Napaka pri iskanju %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Napaka pri obdelovanju %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." -msgstr "Iščem besedilo ..." +msgstr "Iščem besedilo..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Napaka" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "Besedilo ni bilo najdeno." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "Manjkajo naslov in/ali izvajalec." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Shrani krajevno" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Osveži" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "Seznami predvajanja M3U" @@ -2686,7 +2496,7 @@ #: src/mixer/mixer.cc:260 msgid "Output channels:" -msgstr "Izhodni kanali:" +msgstr "Št. izhodnih kanalov:" #: src/mms/mms.cc:35 msgid "MMS Plugin" @@ -2710,15 +2520,15 @@ #: src/modplug/plugin_main.cc:60 msgid "Linear (fast)" -msgstr "Linearno (hitro)" +msgstr "Linearni (hitro)" #: src/modplug/plugin_main.cc:61 msgid "Spline (good)" -msgstr "Zlepek (dobro)" +msgstr "Spline (dobro)" #: src/modplug/plugin_main.cc:62 msgid "Polyphase (best)" -msgstr "Polifazno (najboljše)" +msgstr "Polifazni (najboljše)" #: src/modplug/plugin_main.cc:63 msgid "Sample rate" @@ -2747,7 +2557,7 @@ #: src/modplug/plugin_main.cc:77 msgid "Cutoff:" -msgstr "Odrez:" +msgstr "Odreži pri:" #: src/modplug/plugin_main.cc:90 msgid "Reverb" @@ -2794,50 +2604,26 @@ msgstr "Nastavitve se bodo uveljavile po vnovičnem zagonu programa." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Ustavi po tej skladbi" #: src/moonstone/moonstone.cc:39 msgid "Moonstone" -msgstr "" +msgstr "Moonstone" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Ponastavi na privzete nastavitve" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Predvaja se" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Številka vnosa" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Izvajalec albuma" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Mesto na vrsti" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Datotečna pot" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Datotečno ime" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Naslov po meri" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Vnosi" @@ -2853,7 +2639,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Uporabi točen izračun dolžine (počasno)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Surround" @@ -2931,7 +2717,7 @@ #: src/notify/notify.cc:104 msgid "Show playback controls" -msgstr "Prikaži nadzornike predvajanja" +msgstr "Prikaži gumbe za nadzor predvajanja" #: src/notify/notify.cc:106 msgid "Always show notification" @@ -2943,7 +2729,7 @@ #: src/notify/notify.cc:110 msgid "Custom notification duration:" -msgstr "" +msgstr "Trajanje po meri:" #: src/notify/osd.cc:74 msgid "Show" @@ -2953,7 +2739,7 @@ msgid "OpenMPT (Module Player)" msgstr "OpenMPT (predvajalnik modulov)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -2963,37 +2749,49 @@ "\n" "Written by: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Stereo separacija:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "Interpolacija:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" -msgstr "Linearno" +msgstr "Linearna" #: src/openmpt/mptwrap.h:52 msgid "Cubic" -msgstr "Kubično" +msgstr "Kubična" #: src/openmpt/mptwrap.h:53 msgid "Windowed sinc" -msgstr "Okenski sinc" +msgstr "Oknjeni sinc" + +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "Opus dekodirnik" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" +"Opus dekodirnik vtičnik za Audacious\n" +"Avtorstvo 2022 Thomas Lange" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" -msgstr "Izhod OSS4" +msgstr "OSS4" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" -msgstr "Izhod OSS3" +msgstr "OSS3" #: src/oss4/plugin.cc:35 msgid "Default device" @@ -3001,7 +2799,7 @@ #: src/oss4/plugin.cc:78 msgid "Audio device:" -msgstr "Zvokona naprava:" +msgstr "Zvočna naprava:" #: src/oss4/plugin.cc:81 msgid "Use alternate device:" @@ -3033,18 +2831,40 @@ "I would like to thank people on #audacious, especially Tony Vroon and John " "Lindgren and of course the authors of the previous OSS plugin." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "PipeWire izhod" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" +"PipeWire izhod vtičnik za Audacious\n" +"Avtorstvo 2022 Thomas Lange\n" +"\n" +"Na osnovi vtičnika PipeWire Output Plugin for Qmmp\n" +"Avtorstvo 2021 Ilya Kotov" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Predvajanje" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Upravljalnik seznamov predvajanja" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Odstrani" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "_Preimenuj" @@ -3060,13 +2880,13 @@ msgid "OpenPSF Configuration" msgstr "Nastavitve OpenPSF" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Prezri dolžino iz datoteke" #: src/pulse/pulse_audio.cc:42 msgid "PulseAudio Output" -msgstr "Izhod PulseAudio" +msgstr "PulseAudio" #: src/pulse/pulse_audio.cc:72 msgid "Context name:" @@ -3112,7 +2932,7 @@ #: src/qtaudio/qtaudio.cc:44 msgid "QtMultimedia Output" -msgstr "Izhod QtMultimedia" +msgstr "QtMultimedia" #: src/qtaudio/qtaudio.cc:72 msgid "" @@ -3140,12 +2960,21 @@ "\n" "License: GPLv2+" msgstr "" +"OpenGL Spectrum Analyzer for Audacious\n" +"Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" +"Copyright 2014, 2020 Ariadne Conill\n" +"\n" +"Based on the XMMS plugin:\n" +"Copyright 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, and " +"4Front Technologies\n" +"\n" +"License: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." -msgstr "" +msgstr "Vnesite tipkovno kombinacijo v besedilno polje." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3160,34 +2989,50 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2020 i.Dark_Templar \n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributors include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " #: src/qtui/menus.cc:109 msgid "_Open Folder ..." -msgstr "_Odpri mapo ..." +msgstr "_Odpri mapo" #: src/qtui/menus.cc:115 msgid "_Add Folder ..." -msgstr "_Dodaj mapo ..." +msgstr "Dodaj _mapo" #: src/qtui/menus.cc:128 msgid "_Log Inspector ..." -msgstr "Pregledovalnik _zapisnika ..." +msgstr "Pregledovalnik _zapisnika" #: src/qtui/menus.cc:218 msgid "_Find ..." -msgstr "_Išči ..." +msgstr "_Išči" #: src/qtui/menus.cc:254 src/skins/menus.cc:80 src/skins-qt/menus.cc:70 msgid "Audio Settings ..." -msgstr "Zvočne nastavitve ..." +msgstr "Zvočne nastavitve" -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" -msgstr "" +msgstr "Q#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" -msgstr "" +msgstr "T#" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "C#" #: src/qtui/qtui.cc:40 msgid "Qt Interface" @@ -3203,7 +3048,7 @@ #: src/qtui/settings.cc:59 msgid "Auto-hide" -msgstr "Samodejno skrij" +msgstr "Če je odprt več kot eden" #: src/qtui/settings.cc:60 msgid "Never" @@ -3215,7 +3060,7 @@ #: src/qtui/settings.cc:78 msgid "Use bold font for column headers" -msgstr "" +msgstr "Prikaži z odebeljeno pisavo" #: src/resample/resample.cc:43 msgid "Sample Rate Converter" @@ -3259,7 +3104,7 @@ #: src/resample/resample.cc:199 src/soxr/sox-resampler.cc:203 msgid "Rate:" -msgstr "Hitrost:" +msgstr "Hitrost vzorčenja:" #: src/resample/resample.cc:202 msgid "Rate Mappings" @@ -3311,7 +3156,7 @@ #: src/scrobbler2/config_window.cc:19 msgid "Checking Last.fm access ..." -msgstr "Preverjam dostop do Last.fm ..." +msgstr "Preverjam dostop do Last.fm..." #: src/scrobbler2/config_window.cc:27 msgid "" @@ -3344,7 +3189,7 @@ #: src/scrobbler2/config_window.cc:87 msgid "Revoke Permission" -msgstr "Odvzemi pravico" +msgstr "Odvzemi pravice" #: src/scrobbler2/config_window.cc:91 msgid "You need to allow Audacious to scrobble tracks to your Last.fm account." @@ -3391,7 +3236,7 @@ #: src/sdlout/sdlout.cc:43 msgid "SDL Output" -msgstr "Izhod SDL" +msgstr "SDL" #: src/sdlout/sdlout.cc:72 msgid "" @@ -3404,9 +3249,9 @@ #: src/search-tool/library.cc:35 src/search-tool/library.cc:46 #: src/search-tool-qt/library.cc:35 src/search-tool-qt/library.cc:46 msgid "Library" -msgstr "Knjižnjica" +msgstr "Knjižnica" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" @@ -3415,51 +3260,51 @@ msgstr[2] "%d skladbe" msgstr[3] "%d skladb" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "tega žanra" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "na" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "od" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Število zadetkov za prikaz:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" -msgstr "Vnovič preišči knjižnjico ob zagonu" +msgstr "Ob zagonu ponovno preišči knjižnico" #: src/search-tool-qt/search-tool-qt.cc:170 msgid "Monitor library for changes" -msgstr "Opazuj knjižnjico za spremembe" +msgstr "Opazuj knjižnico za spremembe" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." msgstr "" -"Za uvoz vaše knjižnjice v program Audacious izberite mapo in kliknite ikono " +"Za uvoz vaše knjižnice v program Audacious izberite mapo in kliknite ikono " "za osvežitev." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." -msgstr "Prosimo počajakte ..." +msgstr "Prosimo počakajte..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Izberite mapo" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" -msgstr "Išči po knjižnjici" +msgstr "Išči po knjižnici" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" @@ -3468,7 +3313,7 @@ msgstr[2] "%d od %d zadetkov prikazani" msgstr[3] "%d od %d zadetkov prikazanih" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" @@ -3477,11 +3322,11 @@ msgstr[2] "%d zadetki" msgstr[3] "%d zadetkov" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Ustvari seznam predvajanja" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Dodaj na seznam predvajanja" @@ -3491,7 +3336,7 @@ #: src/sid/xs_config.cc:62 msgid "Channels:" -msgstr "Kanali:" +msgstr "Št. kanalov:" #: src/sid/xs_config.cc:68 msgid "Emulation" @@ -3523,7 +3368,7 @@ #: src/sid/xs_config.cc:81 msgid "Set maximum playback time:" -msgstr "Nastavi največji čas predvajanja:" +msgstr "Nastavi najdaljši čas predvajanja:" #: src/sid/xs_config.cc:87 msgid "Use only when song length is unknown" @@ -3531,7 +3376,7 @@ #: src/sid/xs_config.cc:90 msgid "Set minimum playback time:" -msgstr "Nastavi najmanjši čas predvajanja:" +msgstr "Nastavi najkrajši čas predvajanja:" #: src/sid/xs_config.cc:96 msgid "Subtunes" @@ -3547,7 +3392,7 @@ #: src/sid/xs_config.cc:105 msgid "Note" -msgstr "Nota" +msgstr "Opomba" #: src/silence-removal/silence-removal.cc:39 msgid "Silence Removal" @@ -3575,7 +3420,7 @@ #: src/skins/actions.cc:45 src/skins-qt/actions.cc:43 msgid "Repeat points cleared." -msgstr "Točke ponavljanja izbrisane." +msgstr "Točki ponavljanja izbrisani." #: src/skins/actions.cc:60 src/skins-qt/actions.cc:58 msgid "Repeat point A set." @@ -3585,108 +3430,108 @@ msgid "Repeat point B set." msgstr "Točka ponavljanja B nastavljena." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Predojačevalnik" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" -msgstr "Uravnalnik Audacious" +msgstr "Izenačevalnik Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Snemanje vklopljeno" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Snemanje izklopljeno" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Skoči na %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Glasnost: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Ravnovesje: %d%% levo" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Ravnovesje: sredina" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Ravnovesje: %d%% desno" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Nastavitve" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Onemogoči 'Vselej na vrhu'" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Omogoči 'Vselej na vrhu'" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Okno z datotečnimi podatki" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Dvojna velikost" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Vizualizacije" @@ -3700,19 +3545,15 @@ #: src/skins/menus.cc:77 src/skins-qt/menus.cc:67 msgid "Effects ..." -msgstr "Učinki ..." +msgstr "Učinki" #: src/skins/menus.cc:84 src/skins-qt/menus.cc:74 msgid "Open Files ..." -msgstr "Odpri datoteke ..." +msgstr "Odpri datoteke" #: src/skins/menus.cc:85 src/skins-qt/menus.cc:76 msgid "Open URL ..." -msgstr "Odpri URL ..." - -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Predvajanje" +msgstr "Odpri URL" #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" @@ -3724,30 +3565,30 @@ #: src/skins/menus.cc:91 src/skins-qt/menus.cc:82 msgid "View" -msgstr "Poglej" +msgstr "Pogled" #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Storitve" #: src/skins/menus.cc:95 src/skins-qt/menus.cc:86 msgid "About ..." -msgstr "O programu ..." +msgstr "O programu" #: src/skins/menus.cc:96 src/skins-qt/menus.cc:87 msgid "Settings ..." -msgstr "Nastavitve ..." +msgstr "Nastavitve" #: src/skins/menus.cc:97 src/skins-qt/menus.cc:88 msgid "Quit" msgstr "Izhod" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." -msgstr "Podatki o skladbi ..." +msgstr "Podatki o skladbi" #: src/skins/menus.cc:105 src/skins-qt/menus.cc:96 msgid "Shuffle by Album" @@ -3765,13 +3606,13 @@ msgid "Clear A-B Repeat" msgstr "Počisti ponavljanje A-B" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." -msgstr "Skoči na skladbo ..." +msgstr "Skoči na skladbo" #: src/skins/menus.cc:121 src/skins-qt/menus.cc:113 msgid "Jump to Time ..." -msgstr "Skoči na čas ..." +msgstr "Skoči na čas" #: src/skins/menus.cc:125 src/skins-qt/menus.cc:118 msgid "Play/Resume" @@ -3783,7 +3624,7 @@ #: src/skins/menus.cc:128 src/skins-qt/menus.cc:121 msgid "Rename Playlist ..." -msgstr "Preimenuj seznam predvajanja ..." +msgstr "Preimenuj seznam predvajanja" #: src/skins/menus.cc:129 src/skins-qt/menus.cc:122 msgid "Remove Playlist" @@ -3799,19 +3640,19 @@ #: src/skins/menus.cc:134 src/skins-qt/menus.cc:127 msgid "Import Playlist ..." -msgstr "Uvozi seznam predvajanja ..." +msgstr "Uvozi seznam predvajanja" #: src/skins/menus.cc:135 src/skins-qt/menus.cc:128 msgid "Export Playlist ..." -msgstr "Izvozi seznam predvajanja ..." +msgstr "Izvozi seznam predvajanja" #: src/skins/menus.cc:137 src/skins-qt/menus.cc:130 msgid "Playlist Manager ..." -msgstr "Upravljalnik seznamov predvajanj ..." +msgstr "Upravljalnik seznamov predvajanj" #: src/skins/menus.cc:138 src/skins-qt/menus.cc:131 msgid "Queue Manager ..." -msgstr "Upravljalnik vrste ..." +msgstr "Upravljalnik vrste" #: src/skins/menus.cc:140 src/skins-qt/menus.cc:133 msgid "Refresh Playlist" @@ -3823,7 +3664,7 @@ #: src/skins/menus.cc:145 src/skins-qt/menus.cc:138 msgid "Show Equalizer" -msgstr "Prikaži uravnalnik" +msgstr "Prikaži izenačevalnik" #: src/skins/menus.cc:147 src/skins-qt/menus.cc:140 msgid "Show Remaining Time" @@ -3847,31 +3688,31 @@ #: src/skins/menus.cc:155 src/skins-qt/menus.cc:150 msgid "Roll Up Equalizer" -msgstr "Privzdigni uravnalnik" +msgstr "Privzdigni izenačevalnik" #: src/skins/menus.cc:163 src/skins-qt/menus.cc:158 msgid "Add URL ..." -msgstr "Dodaj URL ..." +msgstr "Dodaj URL" #: src/skins/menus.cc:164 src/skins-qt/menus.cc:160 msgid "Add Files ..." -msgstr "Dodaj datoteke ..." +msgstr "Dodaj datoteke" #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Po naslovu" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Po imenu datoteke" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Po poti datoteke" @@ -3899,113 +3740,113 @@ msgid "Remove Selected" msgstr "Odstrani izbrane" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Išči in izberi" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Obrni izbor" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Izberi nič" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Izberi vse" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Po številki skladbe" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Po izvajalcu" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Po albumu" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Po izvajalcu albuma" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Po datumu izdaje" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Po žanru" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Po dolžini" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Po naslovu po meri" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Po komentarju" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Razvrsti seznam naključno" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Razvrsti seznam vzvratno " -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Razvrsti izbrane" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Razvrsti seznam" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Odpri vsebujočo mapo" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Izreži" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Kopiraj" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Prilepi" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Prilepi na konec" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Dodaj/odstrani iz vrste" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d od %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Urejevalnik seznamov predvajanj Audacious" @@ -4015,173 +3856,224 @@ #: src/skins-qt/menus.cc:75 msgid "Open Folder ..." -msgstr "Odpri mapo ..." +msgstr "Odpri mapo" #: src/skins-qt/menus.cc:159 msgid "Add Folder ..." -msgstr "Dodaj mapo ..." +msgstr "Dodaj mapo" + +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Išči v dejavnem seznamu predvajanja" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Iščite po seznamu predvajanja z izpolnjevanjem enega ali več polj. Uporablja " +"se regex, neodvisen od velikosti črk. Če sintakse regex ne poznate, " +"dobesedno vpišite termine za iskanje." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Naslov:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Album:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Izvajalec:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Ime datoteke:" -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Počisti prejšnji izbor pred iskanjem" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Samodejno prikaži vrsto za ujemajoče zadetke" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Ustvari nov seznam predvajanja z ujemajočimi zadetki" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Išči" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Predvajalnik:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Izberite pisavo glavnega okna predvajalnika:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Seznam predvajanja:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Izberite pisavo seznama predvajanja:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Preobleka" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "Prikaži aktivno naslovno pasico, ko je neko okno v fokusu." + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Pisave" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Uporabi bitne pisave (podpirajo le znake ASCII, brez šumnikov)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Drseč naslov skladbe" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Drseč naslov skladbe v obeh smereh" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analizator" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Osciloskop" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Spektrogram / VU-meter" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Izklop" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Običajno" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Ogenj" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Navpične črte" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Črte" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Vrstice" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Najpočasneje" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Počasi" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Srednje" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Hitro" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Najhitreje" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Pike" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Črta" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Trdno" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Led" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Gladko" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Barvanje:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Slog:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Padec:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Vrh padca:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Slog osciloskopa:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Barve spektrograma:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" -msgstr "Stil VU-metra:" +msgstr "Slog VU-metra:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Vrsta" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Vrsta vizualizacije:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analizator" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Prikaži vrhe" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Vizualizacija" @@ -4193,58 +4085,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Nearhivirane Winamp 2.x preobleke" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Išči v dejavnem seznamu predvajanja" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Išči" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Iščite po seznamu predvajanja z izpolnjevanjem enega ali več polj. Uporablja " -"se regex, neodvisen od velikosti črk. Če sintakse regex ne poznate, " -"dobesedno vpišite termine za iskanje." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Naslov:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Album:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Izvajalec:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Ime datoteke:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Počisti prejšen izbor pred iskanjem" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Samodejno prikaži vrsto za ujemajoče zadetke" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Ustvari nov seznam predvajanja z ujemajočimi zadetki" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Vtičnik Sndfile" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4286,7 +4131,7 @@ #: src/sndio/sndio.cc:43 msgid "Sndio Output" -msgstr "Izhod Sndio" +msgstr "Sndio" #: src/sndio/sndio.cc:98 msgid "Device (blank for default):" @@ -4315,7 +4160,7 @@ #: src/songchange/song_change.cc:30 msgid "Song Change" -msgstr "Sprememba skladbe" +msgstr "Dejanja ob spremembi skladbe" #: src/songchange/song_change.cc:245 msgid "Commands" @@ -4376,8 +4221,8 @@ "Parameters passed to the shell should be enclosed in quotation marks. " "Unquoted parameters may lead to unexpected results." msgstr "" -"Parametri, podani ukazni lupini morajo biti obdani z narekovaji, da se " -"izognete nepričakovanim ukazom." +"Parametri, podani ukazni lupini, morajo biti obdani z narekovaji, da se " +"izognete nepričakovanim odzivom." #: src/song-info-qt/song-info.cc:30 msgid "Song Info" @@ -4403,31 +4248,31 @@ #: src/soxr/sox-resampler.cc:178 msgid "Quick" -msgstr "Hitro" +msgstr "hitra" #: src/soxr/sox-resampler.cc:179 msgid "Low" -msgstr "Nizko" +msgstr "nizka" #: src/soxr/sox-resampler.cc:181 msgid "High" -msgstr "Visoko" +msgstr "visoka" #: src/soxr/sox-resampler.cc:182 msgid "Very High" -msgstr "Zelo visoko" +msgstr "zelo visoka" #: src/soxr/sox-resampler.cc:183 msgid "Ultra High" -msgstr "Izjemno visoko" +msgstr "izjemno visoka" #: src/soxr/sox-resampler.cc:187 msgid "Minimum" -msgstr "Najmanjše" +msgstr "najmanjša" #: src/soxr/sox-resampler.cc:188 msgid "Intermediate" -msgstr "Srednje" +msgstr "srednja" #: src/soxr/sox-resampler.cc:193 msgid "Quality:" @@ -4455,11 +4300,11 @@ #: src/speedpitch/speed-pitch.cc:248 msgid "Decouple from pitch" -msgstr "Loči od višine tona" +msgstr "Razdruži od višine tona" #: src/speedpitch/speed-pitch.cc:250 src/speedpitch/speed-pitch.cc:258 msgid "Multiplier:" -msgstr "Množilnik:" +msgstr "Faktor:" #: src/speedpitch/speed-pitch.cc:254 msgid "Pitch" @@ -4467,7 +4312,7 @@ #: src/statusicon-qt/statusicon.cc:44 src/statusicon/statusicon.cc:47 msgid "Status Icon" -msgstr "Statusna ikona" +msgstr "Ikona v orodni vrstici" #: src/statusicon-qt/statusicon.cc:65 msgid "" @@ -4519,7 +4364,7 @@ #: src/statusicon-qt/statusicon.cc:113 src/statusicon/statusicon.cc:283 msgid "Se_ttings ..." -msgstr "Nas_tavitve ..." +msgstr "Nas_tavitve" #: src/statusicon/statusicon.cc:373 msgid "" @@ -4575,7 +4420,7 @@ #: src/streamtuner/ihr-model.cc:156 msgid "Call Letters" -msgstr "Klicne črke" +msgstr "Klicni znak" #: src/streamtuner/ihr-model.cc:162 msgid "Description" @@ -4651,7 +4496,7 @@ #: src/streamtuner/shoutcast-model.cc:205 msgid "Public Radio" -msgstr "Javni radio" +msgstr "Public Radio" #: src/streamtuner/shoutcast-model.cc:206 msgid "R&B and Urban" @@ -4708,7 +4553,7 @@ #: src/tonegen/tonegen.cc:92 msgid "Tone Generator: " -msgstr "Generator tonov: " +msgstr "Generator tonov:" #: src/tonegen/tonegen.cc:161 msgid "" @@ -4724,19 +4569,32 @@ "To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" "e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(nadaljnja sporočila so bila skrita)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." -msgstr "Nalagam ..." +msgstr "Nalagam..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Podatki" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "%s ni zaznan kot mapa" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Odstranitev glasu" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4889,14 +4747,41 @@ "\n" "Some of the plugin code was by Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "Dekodirnik 2SF" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "kosinus" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Ostro" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "Nastavitve XSF" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Privzeti čas prehoda:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Način prepletanja:" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "Deljivi seznami predvajanja XML (XSPF)" + +#~ msgid "Sample rate" +#~ msgstr "Frekvenca vzorčenja" diff -Nru audacious-plugins-4.1/po/sq.po audacious-plugins-4.3.1/po/sq.po --- audacious-plugins-4.1/po/sq.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/sq.po 2023-04-29 20:17:32.000000000 +0000 @@ -10,9 +10,9 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2021-01-17 21:35+0000\n" -"Last-Translator: Besnik Bleta \n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Milot Shala , 2013\n" "Language-Team: Albanian (http://www.transifex.com/audacious/audacious/" "language/sq/)\n" "Language: sq\n" @@ -30,7 +30,7 @@ msgstr "" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "" @@ -42,8 +42,10 @@ msgid "OPL Emulator:" msgstr "Emulues OPL:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" msgstr "" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 @@ -60,7 +62,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Të ndryshme" @@ -68,209 +70,6 @@ msgid "Repeat song in endless loop" msgstr "" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Alarm" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Caktoni Alarm …" - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Kjo është thirrja juaj për t’u zgjuar." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Kujtuesi juaj për sot është…" - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Kujtues" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "E hënë" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "E martë" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "E mërkurë" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "E enjte" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "E premte" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "E shtunë" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "E diel" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Kohë" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Alarm më (parazgjedhje):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Qetësi pas:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "orë" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minuta" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Zgjidhni ditët për të cilat të punojë alarmi" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Ditë" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Parazgjedhje" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Ditë" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Ndërzbehje" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "sekonda" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Volum" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Fillo në" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Finalr" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Aktual" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Urdhër Shtesë" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "aktivizoje" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Luajlistë (opsionale)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Përzgjidhni një luajlistë" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Mundësi" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Ç’do të thonë këto mundësi?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Ndihmë" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Figurë Albumi" @@ -395,87 +194,83 @@ msgid "Synthesizer" msgstr "Syntetizator" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - përzgjidhni kartelë SoundFont" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Anuloje" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Hape" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Emër kartele" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Madhësi (bajte)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Emër:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " Të dhëna MIDI " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Format:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Gjatësi (ms):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Nr. Pjesësh:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "i luhatshëm" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Koha Div:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI Comments and Lyrics " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* s’ka komentet në këtë kartelë MIDI *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* s’ka vargje në këtë kartelë MIDI *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Mbylle" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (UTF-8 e pavlefshme)" @@ -519,7 +314,7 @@ msgid "Concave Rectangle" msgstr "Drejtkëndësh i Lugët" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Asnjë" @@ -555,150 +350,150 @@ msgid "Triggers OSD when playback is unpaused." msgstr "" -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Vendosje" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Shmangie X relative:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Shmangie Y relative:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Gjerësi maksimum OSD-je:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Mundësi Për Multi-Monitor" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "krejt monitorët" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "monitori %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Shfaq:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Shkronja" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Shkronja %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Hije" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Stil Vizatimi" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Ngjyra" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Ngjyrë %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Akt" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " "manager otherwise the OSD won't work properly" msgstr "" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Tejdukshmëri" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Tejdukshmëri e rreme" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Pozicion" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animacion" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Tekst" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Zbukurim" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Të ndryshme" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Provë" @@ -714,11 +509,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Luajlista Audacious (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Ngjyrë" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "" @@ -730,6 +541,10 @@ msgid "Presets:" msgstr "Paracaktime:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Parazgjedhje" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "" @@ -742,7 +557,7 @@ msgid "Cut frequency:" msgstr "" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Analizues Spektri" @@ -839,50 +654,50 @@ msgid "Audio CD" msgstr "CD Audio" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "S’u arrit të hapet pajisje CD %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Pajisja është e zbrazët." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Lloj i pambuluar disku." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "S’u arrit të krijohet lidhja CDDB." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "S’u arrit të kërkohej te shërbyesi CDDB" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "S’u arrit të kërkohej te shërbyesi CDDB: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "S’u arrit të lexohen të dhëna CDDB: %s" @@ -947,6 +762,13 @@ msgid "Default song length:" msgstr "Gjatësi parazgjedhje kënge:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "sekonda" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "" @@ -975,7 +797,7 @@ msgid "CoreAudio output" msgstr "" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -987,11 +809,11 @@ "Copyright 2010 John Lindgren" msgstr "" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" @@ -1086,20 +908,20 @@ msgid "Delete" msgstr "Fshije" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Anuloje" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Fshiji Kartelat e Përzgjedhura" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Metodë Fshirjeje" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "" @@ -1121,7 +943,7 @@ msgstr "Vonesë:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1137,11 +959,11 @@ msgid "Echo" msgstr "Eko" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Shtojcë FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1258,89 +1080,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1452,7 +1274,7 @@ msgid "Quality (0-1):" msgstr "Cilësi (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Të përgjithshme" @@ -1461,11 +1283,11 @@ msgid "FLAC Decoder" msgstr "Shkodues FLAC" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "pa humbje" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1493,7 +1315,7 @@ msgid "Invalid open mode" msgstr "" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1505,116 +1327,134 @@ "License: GPLv2+" msgstr "" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "Analizues OpenGL Spektri" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Titull" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Artist" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Vit" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Album" -#: src/gtkui/columns.cc:40 -msgid "Album artist" -msgstr "Artist albumi" - #: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr "Artist Albumi" + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Pjesë" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Zhanër" -#: src/gtkui/columns.cc:43 -msgid "Queue position" +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" msgstr "" -#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Gjatësi" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "Shteg kartele" - -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Titull vetjak" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "Shteg Kartele" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Emër Kartele" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Titull Vetjak" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Bitrate" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Koment" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Shtylla të Mundshme" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Shtylla të Shfaqura" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Mjet Kërkimi" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Fiksoje Majtas" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Fiksoje Djathtas" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Fiksoje Në Krye" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Fiskoje Në Fund" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Çaktivizoje" @@ -1654,8 +1494,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Luaje" @@ -1832,8 +1672,8 @@ msgid "Remove _Unavailable Files" msgstr "" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "E _re" @@ -1843,7 +1683,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "_Hiqe" @@ -1974,7 +1814,7 @@ msgstr "Përzgjidhe _Krejt" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Riemërtoni…" @@ -2002,230 +1842,235 @@ msgid "Show column headers" msgstr "" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Ndërfaqe GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "" -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Luaje" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Pushim" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Kërkoni në Fonotekë" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Hapni Kartela" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Shto Kartela" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "E mëparshmja" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Ndale" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Pasuesja" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Përsërite" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Përzieji" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "Menu" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d kanal" msgstr[1] "%d kanale" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "" -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "" -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "" -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Pjesa e mëparshme" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Pushim/Vazhdim" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Pjesa pasuese" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Pa zë" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Ngrije volumin" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Ule volumin" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Hidhu te kartelë" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(asnjë)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" "Do you want to continue?" msgstr "" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." msgstr "" -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Veprim" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Shtoje" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "" @@ -2307,41 +2152,41 @@ "%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." msgstr "" -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "Rregullime për %s" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Shtigje modulesh:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" "After adding new paths, press Enter to scan for new plugins." msgstr "" -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Shtojca të gatshme:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Aktivizoje" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Shtojca të aktivizuara:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Rregullime" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2383,101 +2228,105 @@ msgid "Wait before reconnecting:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "Vargje" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Askund" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "Të përgjithshme" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "Burime Internet" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Depozitim Vendor" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Po kërkohet për vargje …" -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Gabim" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "S’u gjetën vargje." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Ruaje Lokalisht" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Rifreskoje" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "Luajlista M3U" @@ -2628,7 +2477,7 @@ msgstr "" #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Ndalu Pas Kësaj Kënge" @@ -2637,41 +2486,17 @@ msgid "Moonstone" msgstr "" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Riktheji te Parazgjedhjet" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Po Luhet Tani" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Artist Albumi" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Shteg Kartele" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Emër Kartele" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Titull Vetjak" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Zëra" @@ -2687,7 +2512,7 @@ msgid "Use accurate length calculation (slow)" msgstr "" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "" @@ -2788,26 +2613,26 @@ msgid "OpenMPT (Module Player)" msgstr "" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Ndarje stereo:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "" @@ -2819,11 +2644,21 @@ msgid "Windowed sinc" msgstr "" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "" @@ -2860,18 +2695,35 @@ "Lindgren and of course the authors of the previous OSS plugin." msgstr "" -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Luajtje" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Përgjegjësi Luajlistash" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Hiqe" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "" @@ -2887,7 +2739,7 @@ msgid "OpenPSF Configuration" msgstr "Formësim OpenPFS-je" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Shpërfille gjatësinë prej kartele" @@ -2948,11 +2800,11 @@ "License: GPLv2+" msgstr "" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "" -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -2988,14 +2840,18 @@ msgid "Audio Settings ..." msgstr "Rregullime Për Audion …" -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Ndërfaqe Qt" @@ -3193,30 +3049,30 @@ msgid "Library" msgstr "" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d këngë" msgstr[1] "%d këngë" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "të këtij zhanri" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Numër përfundimesh për shfaqje:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "" @@ -3224,43 +3080,43 @@ msgid "Monitor library for changes" msgstr "Mbikëqyr fonotekën për ndryshime" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Ju lutemi, prisni …" -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Zgjidhni Dosje" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Kërkoni në fonotekë" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "" msgstr[1] "" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d përfundim" msgstr[1] "%d përfundime" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "" @@ -3362,108 +3218,108 @@ msgid "Repeat point B set." msgstr "" -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Paraamplifikator" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Balancues Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Volum: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Balancë: %d%% majtas" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Balancë: në qendër" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Balancë: %d%% djathtas" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Menu Mundësish" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Vizualizime" @@ -3487,10 +3343,6 @@ msgid "Open URL ..." msgstr "Hap URL …" -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Luajtje" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Luajlistë" @@ -3505,7 +3357,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Shërbime" @@ -3522,7 +3374,7 @@ msgstr "Dil" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Të dhëna Kënge …" @@ -3542,7 +3394,7 @@ msgid "Clear A-B Repeat" msgstr "Spastro Përsëritje A-B" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "" @@ -3635,20 +3487,20 @@ msgstr "Shtoni Kartela …" #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Sipas Titujsh" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Sipas Emrash Kartelash" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Sipas Shtigjesh Kartelash" @@ -3676,113 +3528,113 @@ msgid "Remove Selected" msgstr "Hiq të Përzgjedhurën" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Kërkoni dhe Përzgjidhni" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Mos Përzgjidh Gjë" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Përzgjidhi Krejt" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Sipas Numrash Pjesësh" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Sipas Artistësh" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Hap Dosjen Që e Përmban" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Prije" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Kopjoje" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Ngjite" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Ngjite në Fund" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d nga %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "" @@ -3798,167 +3650,215 @@ msgid "Add Folder ..." msgstr "Shtoni Dosje …" -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Titull:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Album:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Artist:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Emër Kartele:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Lojtës:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Luajlistë:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Lëkurçe" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Shkronja" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analizues" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Fokus" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Off" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normal" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Zjarr" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Vija vertikale" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Vija" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Shtylla" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Pika" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Vijë" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Stil:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "Stil Matësi VU:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Lloj" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Lloj vizualizimi:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analizues" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Shfaq kulme" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Vizualizim" @@ -3970,55 +3870,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Titull:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Album:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Artist:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Emër Kartele:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4447,19 +4303,32 @@ "e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" msgstr "" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Mesazhet e mëtejshëm janë fshehur.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Po punohet …" -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Informacion" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Heqje Zëri" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4577,14 +4446,38 @@ "\n" "Një pjesë e kodit të shtojcës qe nga Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "Shkodues 2SF" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "Formësim XSF-je" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "Listat e dëgjimit XML shareable (XSPF)" diff -Nru audacious-plugins-4.1/po/sr.po audacious-plugins-4.3.1/po/sr.po --- audacious-plugins-4.1/po/sr.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/sr.po 2023-04-29 20:17:32.000000000 +0000 @@ -3,23 +3,24 @@ # This file is distributed under the same license as the Audacious Plugins package. # # Translators: -# Мирослав Николић , 2014-2015 -# Мирослав Николић , 2020 +# Мирослав Николић , 2014-2015,2020,2022 +# Мирослав Николић , 2020,2022 msgid "" msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2021-01-12 14:22+0000\n" -"Last-Translator: Мирослав Николић \n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Мирослав Николић , " +"2014-2015,2020,2022\n" "Language-Team: Serbian (http://www.transifex.com/audacious/audacious/" "language/sr/)\n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: src/aac/aac.cc:19 msgid "AAC (Raw) Decoder" @@ -30,7 +31,7 @@ msgstr "Ад прикључак (АдБибл програм)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "низовни" @@ -42,9 +43,11 @@ msgid "OPL Emulator:" msgstr "ОПЛ емулатор:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Проток узорка" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Проток узорка:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -60,7 +63,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Разно" @@ -68,259 +71,6 @@ msgid "Repeat song in endless loop" msgstr "Понављај песму бесконачно" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Аларм" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Подеси аларм ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Прикључак који може бити коришћен да започне пуштање у одређено време.\n" -"\n" -"Првобитни аутори су Адам Фикин и Данијел Стоден." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Време\n" -" Активирај аларм у:\n" -" Време када ће се активирати аларм.\n" -"\n" -" Утишај након: \n" -" Зауставља аларм након истека овог времена.\n" -" (ако није затворено прозорче буђења)\n" -"\n" -"\n" -"Дани\n" -" Дан:\n" -" Изаберите којим данима ће бити активиран аларм.\n" -"\n" -" Време:\n" -" Изаберите време аларма за сваки дан, или\n" -" штиклирајте квадратић да користите основно време.\n" -"\n" -"\n" -"Јачина\n" -" Ишчезавање:\n" -" Повећава јачину звука до изабране јачине\n" -" у овом временском периоду.\n" -"\n" -" Започни при:\n" -" Започиње појачавање од ове јачине.\n" -"\n" -" Заврши при:\n" -" Јачина при којој ће бити заустављено појачање.\n" -" Ако је време појачања 0 онда подешава јачину\n" -" на ову и започиње пуштање.\n" -"\n" -"\n" -"Опције:\n" -" Додатна наредба:\n" -" Покреће ову наредбу за време аларма.\n" -"\n" -" Списак нумера:\n" -" Учитава овај списак нумера. Ако није дат\n" -" списак нумера, биће коришћене песме\n" -" које се тренутно налазе на списку.\n" -" Адреса мп3/огг тока може такође\n" -" бити унешена овде.\n" -"\n" -" Подсетник:\n" -" Приказује подсетник након искључења аларма.\n" -" Упишите подсетник у поље за унос и укључите\n" -" кућицу за избор ако желите да буде приказиван." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Ово је ваш позив за буђење." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Ваш подсетник за данас је..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Подсетник" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Понедељак" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Уторак" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Среда" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Четвртак" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Петак" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Субота" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Недеља" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Време" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Активирај аларм у (основно):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "часова" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Утишај након:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "сат(а)" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "минута" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Изаберите којим данима ће се активирати аларм" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Дан" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Основно" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Дани" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Ишчезавање" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "секунде" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Јачина" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Започни при" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Заврши при" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Тренутно" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Додатна наредба" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "укључи" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Списак нумера (необавезно)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Изаберите списак нумера" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Опције" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Шта значе ове опције?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Помоћ" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Омот албума" @@ -469,87 +219,83 @@ msgid "Synthesizer" msgstr "Синтисајзер" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Проток узорка:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "АМИДИ прикључак — изаберите СаундФонт датотеку" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "От_кажи" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "От_вори" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Назив датотеке" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Величина (бајтова)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Назив:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " МИДИ подаци " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Запис:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Трајање (msec):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Број нумера:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "променљиво" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "БПМ:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "БПМ (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Див време:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " МИДИ коментари и текстови песама " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* нема доступних коментара у овој МИДИ датотеци *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* нема доступних текстова песама у овој МИДИ датотеци *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Затвори" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (неисправан УТФ-8)" @@ -605,7 +351,7 @@ msgid "Concave Rectangle" msgstr "Удубљен правоугаоник" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Ништа" @@ -641,94 +387,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Приказује ОСД када је репродукција поново покренута." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Постављање" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Релативан хоризонтални померај:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Релативан вертикални померај:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Највећа ширина приказа:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Опција више монитора" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Прикажи ОСД на:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "свим мониторима" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "на монитору бр. %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Време трајања (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Приказ:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Појављивање:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Ишчезавање:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Словни ликови" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Писмо %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Сенка" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Стил исцртавања" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Боје" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Боја %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Омогући активирање" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Догађај" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Откривен је композитни управник" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -738,56 +484,56 @@ "осим ако знате да је један већ покренут, молим покрените композитног " "управника јер у супротном ОСД неће радити исправно" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Композитни управник није потребан за лажну провидност" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Провидност" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Лажна провидност" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Стварна провидност (захтева Х композитно проширење)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Композитно проширење није учитано" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Аудацијус — ОСД" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Положај" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Анимација" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Текст" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Декорација" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Укључивање" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Остало" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Испробај" @@ -803,11 +549,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Аудацијусови спискови нумера (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Боје" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Обим замућења" @@ -819,6 +581,10 @@ msgid "Presets:" msgstr "Претподешавања:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Основно" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Ниво довода:" @@ -831,7 +597,7 @@ msgid "Cut frequency:" msgstr "Учестаност исецања:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Анализатор спектра" @@ -926,50 +692,50 @@ msgid "Audio CD" msgstr "Аудио ЦД" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Нисам успео да отворим ЦД уређај „%s“." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Нисам пронашао уређај за читање ЦД-а." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Уређај је празан." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Неподржана врста диска." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Нисам успео да завршим покретање отвореног ЦД уређаја." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Нисам успео да пронађем број прве/последње нумере." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Не могу да прочитам почетак/крај ЛСН-а за нумеру „%d“." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Нисам успео да направим везу базе података ЦД-а." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Нисам успео да пропитам сервер базе података ЦД-а" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Нисам успео да пропитам сервер базе података ЦД-а: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Нисам успео да прочитам информације базе података ЦД-а: %s" @@ -1042,6 +808,13 @@ msgid "Default song length:" msgstr "Основно трајање песме:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "секунде" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Поновно узорковање" @@ -1070,7 +843,7 @@ msgid "CoreAudio output" msgstr "Коре‑аудио излаз" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1090,11 +863,11 @@ "Заснован на прикључку СДЛ излаза за Аудацијуса\n" "Ауторска права 2010 Џон Линдгрен" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Користи искључиви режим" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "Користи звук савршеног бита (прилагоди проток узорка уређаја)" @@ -1191,20 +964,20 @@ msgid "Delete" msgstr "Обриши" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Откажи" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Обришите изабране датотеке" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Начин брисања" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Преместите у смеће уместо да одмах обришете" @@ -1230,7 +1003,7 @@ msgstr "Застој:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1246,11 +1019,11 @@ msgid "Echo" msgstr "Одјек" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Прикључак ФФмпег-а" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1373,89 +1146,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kb/s" +msgid "8 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kb/s" +msgid "16 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kb/s" +msgid "32 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kb/s" +msgid "40 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kb/s" +msgid "48 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kb/s" +msgid "56 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kb/s" +msgid "64 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kb/s" +msgid "80 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kb/s" +msgid "96 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kb/s" +msgid "112 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kb/s" +msgid "128 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kb/s" +msgid "160 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kb/s" +msgid "192 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kb/s" +msgid "224 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kb/s" +msgid "256 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kb/s" +msgid "320 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Удружени стерео" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Стерео" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Моно" @@ -1567,7 +1340,7 @@ msgid "Quality (0-1):" msgstr "Квалитет (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Опште" @@ -1576,11 +1349,11 @@ msgid "FLAC Decoder" msgstr "ФЛАЦ декодер" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "без губитака" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1612,7 +1385,7 @@ msgid "Invalid open mode" msgstr "Неисправан режим отварања" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1632,116 +1405,134 @@ "\n" "Дозвола: ОЈЛв2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "ОпенГЛ Анализатор спектра" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "Број ставке" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Наслов" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Извођач" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Година" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Албум" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Извођач албума" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Нумера" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Жанр" -#: src/gtkui/columns.cc:43 -msgid "Queue position" +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" msgstr "Положај колоне" -#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Трајање" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "Путања датотеке" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Произвољан наслов" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Назив датотеке" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Произвољан наслов" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Битски проток" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Напомена" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Доступни ступци" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Приказани ступци" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Алат за претрагу" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Усидри на лево" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Усидри на десно" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Усидри на врх" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Усидри на дно" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Откачи" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Искључи" @@ -1781,8 +1572,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "Пу_сти" @@ -1959,8 +1750,8 @@ msgid "Remove _Unavailable Files" msgstr "Уклони _недоступне датотеке" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Ново" @@ -1970,7 +1761,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "_Уклони" @@ -2101,7 +1892,7 @@ msgstr "_Изабери све" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Преименуј ..." @@ -2129,104 +1920,109 @@ msgid "Show column headers" msgstr "Прикажи заглавља колона" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Клизај при промени песме" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "ГТК сучеље" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s — Аудацијус" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Баферујем ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Аудацијус" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Пусти" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Паузирај" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Претражи библиотеку" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Отвори датотеке" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Додај датотеке" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Претходна" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Заустави" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Следећа" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Сними ток" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Понови" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Насумично" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "Изборник" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "моно" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "стерео" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" @@ -2234,93 +2030,93 @@ msgstr[1] "%d канала" msgstr[2] "%d канала" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kb/s" +msgid "%d kbit/s" +msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Једноставни режим." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Режим списка нумера." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Зауставља након песме." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Претходна нумера" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Паузирај/настави" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Следећа нумера" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "Иди напред" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "Иди назад" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Искључи звук" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Појачај" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Утишај" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Скочи до датотеке" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Укључи/искључи главни прозор" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Прикажи приказ на екрану" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Укључи/искључи понављање" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Укључи/искључи премештање" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Заустави после текуће песме" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Издигни главни прозор" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(ништа)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2330,11 +2126,11 @@ "\n" "Да ли желите да наставите?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Повезујем дугмад миша" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2342,23 +2138,23 @@ "Притисните комбинацију тастера унутар поља за текст.\n" "Можете такође да повежете дугмад миша." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Пречице:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Радња:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Свезе тастера:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Додај" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Опште пречице" @@ -2457,16 +2253,16 @@ "ЏЕК сервер захтева проток узорка од %d Hz, али Аудацијус пушта при %d Hz. " "Користите дејство претварача протока узорка да исправите несагласност." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "Подешавања за %s" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Путање модула:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2477,25 +2273,25 @@ "Након додавања нових путања, притисните Унеси да потражите нове прикључке." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Доступни прикључци:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Укључи" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Укључени прикључци:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Подешавања" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2552,102 +2348,106 @@ msgid "Wait before reconnecting:" msgstr "Сачекај пре поновног повезивања:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "Текстови" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Нигде" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "Извођач је скраћен на почетку, Наслов -- на крају" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "Знаци на којима скратити:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" "Знаци су „ORed“ у регуларном изразу, опкољени празнинама" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "Знаци на којима поделити:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "Даље скрати то на знацима" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "Опште" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "Подели наслов на извођача и наслова на знацима" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "Интернет извори" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "Довуци текстове са:" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "Смести довучене текстове у локалној остави" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Локални смештај" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "Учитај датотеке текстова (.lrc) са локалног смештаја" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Не могу да довучем „%s“" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Не могу да обрадим „%s“" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Тражим текст песме ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Грешка" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "Не могу да пронађем текстове." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "Недостаје наслов и/или извођач." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Сачувај локално" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Освежи" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "М3У списак нумера" @@ -2806,7 +2606,7 @@ "Ова подешавања ће ступити у дејство након поновног покретања Аудацијуса." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Заустави након ове песме" @@ -2815,41 +2615,17 @@ msgid "Moonstone" msgstr "Месечев камен" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Поврати на подразумевано" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Сад пуштам" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Број ставке" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Извођач албума" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Положај колоне" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Путања датотеке" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Назив датотеке" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Произвољан наслов" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Уноси" @@ -2865,7 +2641,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Користи тачан прорачун трајања (споро)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Окружење" @@ -2965,7 +2741,7 @@ msgid "OpenMPT (Module Player)" msgstr "ОпенМПТ (Пуштач модула)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -2975,19 +2751,19 @@ "\n" "Написао је: Крис Шпигел " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Стерео раздвајање:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "Уметање:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Линеарно" @@ -2999,11 +2775,21 @@ msgid "Windowed sinc" msgstr "Упрозорчено усклађивање" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "ОСС4 излаз" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "ОСС3 излаз" @@ -3045,18 +2831,35 @@ "Желим да се захвалим људима на „#audacious“, нарочито Тони Вруну и Џону " "Линдгрину и наравно ауторима претходног ОСС прикључка." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Пуштање" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Управник списка нумера" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Уклони" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "_Преименуј" @@ -3072,7 +2875,7 @@ msgid "OpenPSF Configuration" msgstr "ОпенПСФ подешавања" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Занемари трајање из датотеке" @@ -3162,11 +2965,11 @@ "\n" "Дозвола: ОЈЛв2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "Притисните комбинацију тастера унутар поља за текст." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3216,14 +3019,18 @@ msgid "Audio Settings ..." msgstr "Подешавања звука ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "Q#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "T#" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Кут сучеље" @@ -3440,7 +3247,7 @@ msgid "Library" msgstr "Библиотека" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" @@ -3448,23 +3255,23 @@ msgstr[1] "%d песме" msgstr[2] "%d песама" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "овог жанра" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr " " -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "изводи" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Број резултата за приказивање:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Поново прегледај збирку приликом покретања" @@ -3472,7 +3279,7 @@ msgid "Monitor library for changes" msgstr "Надгледај збирку за изменама" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3480,19 +3287,19 @@ "Да увезете вашу музичку библиотеку у Аудацијусу, изаберите фасциклу и затим " "кликните на иконицу „освежи“." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Молим сачекајте ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Изаберите фасциклу" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Претражите библиотеку" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" @@ -3500,7 +3307,7 @@ msgstr[1] "Приказана су %d од %d резултата" msgstr[2] "Приказано је %d од %d резултата" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" @@ -3508,11 +3315,11 @@ msgstr[1] "%d резултата" msgstr[2] "%d резултата" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Направи списак нумера" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Додај у списак нумера" @@ -3616,108 +3423,108 @@ msgid "Repeat point B set." msgstr "Понови скуп тачке Б." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Претпојачање" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Уједначавач Аудацијуса" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Снимање је укључено" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Снимање је искључено" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Тражи до: %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Јачина звука: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Уравнотеженост: %d%% леви" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Уравнотеженост: центрирано" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Уравнотеженост: %d%% десни" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Изборник опција" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Искључи „Увек у првом плану“" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Укључи „Увек у првом плану“" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Поље података датотеке" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Двострука величина" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Визуализације" @@ -3741,10 +3548,6 @@ msgid "Open URL ..." msgstr "Отвори адресу ..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Пуштање" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Списак нумера" @@ -3759,7 +3562,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Услуге" @@ -3776,7 +3579,7 @@ msgstr "Изађи" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Подаци о песми ..." @@ -3796,7 +3599,7 @@ msgid "Clear A-B Repeat" msgstr "Очисти А—Б понављања" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Пређи на песму ..." @@ -3889,20 +3692,20 @@ msgstr "Додај датотеке ..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Према наслову" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Према називу датотеке" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Према путањи датотеке" @@ -3930,113 +3733,113 @@ msgid "Remove Selected" msgstr "Уклони означене" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Претражи и означи" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Обрни избор" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Означи ништа" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Означи све" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Према броју нумере" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Према извођачу" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Према албуму" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Према извођачу албума" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Према датуму издавања" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Према жанру" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Према трајању" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Према произвољном наслову" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Према коментару" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Насумице испремештај списак" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Преокрени списак" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Поређај означене" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Поређај списак" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Отвори садржавајућу фасциклу" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Исеци" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Умножи" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Убаци" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Убаци на крај" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Стави у ред/Избаци из реда" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d од %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Уређивач списка нумера" @@ -4052,167 +3855,219 @@ msgid "Add Folder ..." msgstr "Додај фасциклу ..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Претражи ставке у активном списку нумера" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Обележите ставке у списку нумера попуњавајући једно или више поља. Поља " +"користе синтаксу обичних израза, не разликују величину слова. Ако не знате " +"како обични изрази функционишу, једноставно дословно унесите део онога што " +"тражите." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Наслов:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Албум:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Извођач:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Назив датотеке:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Обриши претходни избор пре претраге" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Подударајуће ставке самостално пребаци у ред" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Направи нови списак нумера са подударајућим ставкама" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Потражи" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Пуштач:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Изаберите словни лик главног прозора програма:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Списак нумера:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Изабери словни лик списка нумера:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Маска" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "Приказује активну траку наслова када је било који прозор у фокусу" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Слова" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Користи битмап словне ликове (подржава само АСКРИ)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Померај наслов песме" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Померај наслов песме у оба смера" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Анализатор" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Досег" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Режим отиска гласа / ВУ мерач" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Искључено" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Нормалан" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Ватра" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Усправне линије" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Линије" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Траке" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Најспорије" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Споро" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Средње" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Брзо" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Најбрже" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Тачке" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Линија" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Испуњено" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Лед" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Глатко" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Боја:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Изглед:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Опадање:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Опадање врхова:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Режим досега:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Обојавање отиска гласа:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "Стил ВУ мерача:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Врста" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Врста приказивања:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Анализатор" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Прикажи врхунце" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Приказивање" @@ -4224,59 +4079,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Неархивирана Винамп 2.x маска" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Претражи ставке у активном списку нумера" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Потражи" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Обележите ставке у списку нумера попуњавајући једно или више поља. Поља " -"користе синтаксу обичних израза, не разликују величину слова. Ако не знате " -"како обични изрази функционишу, једноставно дословно унесите део онога што " -"тражите." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Наслов:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Албум:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Извођач:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Назив датотеке:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Обриши претходни избор пре претраге" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Подударајуће ставке самостално пребаци у ред" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Направи нови списак нумера са подударајућим ставкама" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Прикључак звучне датотеке" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4758,19 +4565,32 @@ "учесталост3;...\n" "нпр.: tone://2000;2005 да пустите тонове 2000 Hz и 2005 Hz" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Додатне поруке су скривене.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Радим ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Информације" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Уклањање гласа" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4925,14 +4745,38 @@ "\n" "Нешто кода прикључка је написао Мајлс Иган." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2СФ декодер" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Косинусно" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Оштро" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "ИксСФ подешавања" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Основно време ишчезавања:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Режим уметања:" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "ИксМЛ дељиви спискови пуштања (XSPF)" diff -Nru audacious-plugins-4.1/po/sr_RS.po audacious-plugins-4.3.1/po/sr_RS.po --- audacious-plugins-4.1/po/sr_RS.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/sr_RS.po 2023-04-29 20:17:32.000000000 +0000 @@ -8,17 +8,18 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Мирослав Николић , " +"2011-2012\n" "Language-Team: Serbian (Serbia) (http://www.transifex.com/audacious/" "audacious/language/sr_RS/)\n" "Language: sr_RS\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: src/aac/aac.cc:19 msgid "AAC (Raw) Decoder" @@ -29,7 +30,7 @@ msgstr "Ад прикључак (АдБибл програм)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "низовни" @@ -41,8 +42,10 @@ msgid "OPL Emulator:" msgstr "" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" msgstr "" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 @@ -59,7 +62,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Разно" @@ -67,212 +70,6 @@ msgid "Repeat song in endless loop" msgstr "" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Аларм" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "" - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Прикључак који може бити коришћен да започне пуштање у одређено време.\n" -"\n" -"Првобитни аутори су Адам Фикин и Данијел Стоден." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Ово је ваш позив за буђење." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "" - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Подсетник" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Понедељак" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Уторак" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Среда" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Четвртак" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Петак" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Субота" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Недеља" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Време" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Активирај аларм у (основно):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "часова" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Утишај након:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "сат(а)" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "минута" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Изаберите којим данима ће се активирати аларм" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Дан" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Основно" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Дани" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Ишчезавање" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "секунде" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Јачина" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Започни при" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Заврши при" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Тренутно" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Додатна наредба" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "укључи" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Списак нумера (необавезно)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Изаберите списак нумера" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Опције" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Шта значе ове опције?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Помоћ" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Омот албума" @@ -402,87 +199,83 @@ msgid "Synthesizer" msgstr "" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "АМИДИ прикључак — изаберите СаундФонт датотеку" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Откажи" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Отвори" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Назив датотеке" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Величина (бајтова)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Назив:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " МИДИ Информације " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Формат:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Трајање (msec):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Број нумера:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "променљиво" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "БПМ:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "БПМ (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Див време:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " МИДИ коментари и текстови песама " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* нема доступних коментара у овој МИДИ датотеци *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* нема доступних текстова песама у овој МИДИ датотеци *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Затвори" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (неисправан УТФ-8)" @@ -526,7 +319,7 @@ msgid "Concave Rectangle" msgstr "Удубљен правоугаоник" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Ништа" @@ -562,94 +355,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Приказује ОСД када је репродукција поново покренута." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Постављање" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Релативан хоризонтални померај:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Релативан вертикални померај:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Највећа ширина приказа:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Опција више монитора" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Прикажи ОСД на:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "свим мониторима" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "на монитору бр. %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Време трајања (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Приказ:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Појављивање:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Ишчезавање:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Словни ликови" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Писмо %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Сенка" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Стил исцртавања" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Боје" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Боја %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Омогући активирање" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Догађај" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Откривен је композитни управник" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -659,56 +452,56 @@ "осим ако знате да је један већ покренут, молим покрените композитног " "управника јер у супротном ОСД неће радити исправно" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Композитни управник није потребан за лажну провидност" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Провидност" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Лажна провидност" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Стварна провидност (захтева Х композитно проширење)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Композитно проширење није учитано" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Безочник — ОСД" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Положај" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Анимација" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Текст" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Декорација" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Укључивање" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Остало" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Испробај" @@ -724,11 +517,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Безочникови спискови нумера (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Боје" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Обим замућења" @@ -740,6 +549,10 @@ msgid "Presets:" msgstr "Претподешавања:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Основно" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Ниво довода:" @@ -752,7 +565,7 @@ msgid "Cut frequency:" msgstr "Учестаност исецања:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Анализатор спектра" @@ -847,50 +660,50 @@ msgid "Audio CD" msgstr "Аудио ЦД" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Нисам успео да отворим ЦД уређај „%s“." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Нисам пронашао уређај за читање ЦД-а." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Уређај је празан." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Неподржана врста диска." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Нисам успео да завршим покретање отвореног ЦД уређаја." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Нисам успео да пронађем број прве/последње нумере." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Не могу да прочитам почетак/крај ЛСН-а за нумеру „%d“." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Нисам успео да пропитам сервер базе података ЦД-а" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Нисам успео да пропитам сервер базе података ЦД-а: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "" @@ -960,6 +773,13 @@ msgid "Default song length:" msgstr "Основно трајање песме:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "секунде" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "" @@ -988,7 +808,7 @@ msgid "CoreAudio output" msgstr "" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1000,11 +820,11 @@ "Copyright 2010 John Lindgren" msgstr "" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" @@ -1097,20 +917,20 @@ msgid "Delete" msgstr "Обриши" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Откажи" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "" @@ -1132,7 +952,7 @@ msgstr "Застој:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1148,11 +968,11 @@ msgid "Echo" msgstr "Одјек" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Прикључак ФФмпег-а" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1262,76 +1082,76 @@ msgid "32000 Hz" msgstr "" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" +msgid "8 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" +msgid "16 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" +msgid "32 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" +msgid "40 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" +msgid "48 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" +msgid "56 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" +msgid "64 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" +msgid "80 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" +msgid "96 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" +msgid "112 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" +msgid "128 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" +msgid "160 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" +msgid "192 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" +msgid "224 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" +msgid "256 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" +msgid "320 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:450 @@ -1339,12 +1159,12 @@ msgstr "Удружени стерео" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Стерео" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Моно" @@ -1456,7 +1276,7 @@ msgid "Quality (0-1):" msgstr "" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Опште" @@ -1465,11 +1285,11 @@ msgid "FLAC Decoder" msgstr "ФЛАЦ декодер" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "без губитака" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1501,7 +1321,7 @@ msgid "Invalid open mode" msgstr "" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1513,116 +1333,134 @@ "License: GPLv2+" msgstr "" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "Број ставке" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Наслов" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Извођач" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Година" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Албум" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Извођач албума" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Нумера" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Жанр" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "Положај колоне" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Трајање" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "Путања датотеке" - -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Произвољан наслов" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Битски проток" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Напомена" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Алат за претрагу" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Усидри на лево" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Усидри на десно" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Усидри на врх" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Усидри на дно" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Откачи" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Искључи" @@ -1662,8 +1500,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "Пу_сти" @@ -1840,8 +1678,8 @@ msgid "Remove _Unavailable Files" msgstr "Уклони _недоступне датотеке" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Ново" @@ -1851,7 +1689,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "" @@ -1982,7 +1820,7 @@ msgstr "_Изабери све" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Преименуј ..." @@ -2010,104 +1848,109 @@ msgid "Show column headers" msgstr "" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "ГТК сучеље" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s — Безочник" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Баферујем ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Безочник" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Пусти" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Паузирај" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Отвори датотеке" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Додај датотеке" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Претходна" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Заустави" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Следећа" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Понови" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Насумично" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "моно" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "стерео" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" @@ -2115,104 +1958,104 @@ msgstr[1] "%d канала" msgstr[2] "%d један канал" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kb/s" +msgid "%d kbit/s" +msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Једноставни режим." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Режим списка нумера." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Зауставља након песме." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Паузирај/настави" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Искључи звук" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Прикажи приказ на екрану" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(ништа)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" "Do you want to continue?" msgstr "" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Повезујем дугмад миша" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2220,23 +2063,23 @@ "Притисните комбинацију тастера унутар поља за текст.\n" "Можете такође да повежете дугмад миша." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Пречице:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Радња:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Свезе тастера:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Додај" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Опште пречице" @@ -2318,16 +2161,16 @@ "%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." msgstr "" -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "Подешавања за %s" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Путање модула:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2338,25 +2181,25 @@ "Након додавања нових путања, притисните Унеси да потражите нове прикључке." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Доступни прикључци:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Укључи" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Укључени прикључци:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Подешавања" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2413,101 +2256,105 @@ msgid "Wait before reconnecting:" msgstr "Сачекај пре поновног повезивања:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Не могу да довучем „%s“" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Не могу да обрадим „%s“" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Тражим текст песме ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Грешка" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "М3У списак нумера" @@ -2665,7 +2512,7 @@ msgstr "" #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "" @@ -2674,41 +2521,17 @@ msgid "Moonstone" msgstr "" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Сад пуштам" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Извођач албума" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Ставке" @@ -2724,7 +2547,7 @@ msgid "Use accurate length calculation (slow)" msgstr "" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Окружење" @@ -2808,26 +2631,26 @@ msgid "OpenMPT (Module Player)" msgstr "" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "" @@ -2839,11 +2662,21 @@ msgid "Windowed sinc" msgstr "" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "ОСС4 излаз" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "" @@ -2885,18 +2718,35 @@ "Желим да се захвалим људима на „#audacious“, нарочито Тони Вруну и Џону " "Линдгрину и наравно ауторима претходног ОСС прикључка." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Репродукција" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Управник списка нумера" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Уклони" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "_Преименуј" @@ -2912,7 +2762,7 @@ msgid "OpenPSF Configuration" msgstr "" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "" @@ -2973,11 +2823,11 @@ "License: GPLv2+" msgstr "" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "" -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3013,14 +2863,18 @@ msgid "Audio Settings ..." msgstr "" -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "" @@ -3222,7 +3076,7 @@ msgid "Library" msgstr "Библиотека" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" @@ -3230,23 +3084,23 @@ msgstr[1] "" msgstr[2] "" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "" @@ -3254,7 +3108,7 @@ msgid "Monitor library for changes" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3262,19 +3116,19 @@ "Да увезете вашу музичку библиотеку у Безочнику, изаберите фасциклу и затим " "кликните на иконицу „освежи“." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Молим сачекајте ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Изаберите фасциклу" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Претражите библиотеку" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" @@ -3282,7 +3136,7 @@ msgstr[1] "" msgstr[2] "" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" @@ -3290,11 +3144,11 @@ msgstr[1] "" msgstr[2] "" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Направи списак нумера" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Додај у списак нумера" @@ -3396,108 +3250,108 @@ msgid "Repeat point B set." msgstr "" -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Претпојачање" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Уједначавач Безочника" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Тражи до: %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Јачина звука: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Уравнотеженост: %d%% леви" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Уравнотеженост: центрирано" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Уравнотеженост: %d%% десни" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Изборник опција" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Искључи „Увек у првом плану“" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Укључи „Увек у првом плану“" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Поље информација о датотеци" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "" @@ -3521,10 +3375,6 @@ msgid "Open URL ..." msgstr "" -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Репродукција" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Списак нумера" @@ -3539,7 +3389,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Услуге" @@ -3556,7 +3406,7 @@ msgstr "" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "" @@ -3576,7 +3426,7 @@ msgid "Clear A-B Repeat" msgstr "" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "" @@ -3669,20 +3519,20 @@ msgstr "" #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Према наслову" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "" @@ -3710,113 +3560,113 @@ msgid "Remove Selected" msgstr "Уклони означене" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Претражи и означи" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Обрни избор" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Означи ништа" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Означи све" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Према броју нумере" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Према извођачу" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Према албуму" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Насумице испремештај списак" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Преокрени списак" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Поређај означене" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Поређај списак" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Исеци" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Умножи" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Убаци" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d од %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Уређивач списка нумера" @@ -3832,167 +3682,219 @@ msgid "Add Folder ..." msgstr "" -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Претражи ставке у активном списку нумера" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Обележите ставке у списку нумера попуњавајући једно или више поља. Поља " +"користе синтаксу обичних израза, не разликују величину слова. Ако не знате " +"како обични изрази функционишу, једноставно дословно унесите део онога што " +"тражите." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Обриши претходни избор пре претраге" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Подударајуће ставке самостално пребаци у ред" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Направи нови списак нумера са подударајућим ставкама" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Изаберите словни лик главног прозора плејера:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Изабери словни лик списка нумера:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Користи битмап словне ликове (подржава само АСКРИ)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Померај наслов песме у оба смера" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Анализатор" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Досег" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Искључено" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Нормалан" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Ватра" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Линије" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Траке" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Најспорије" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Споро" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Средње" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Брзо" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Најбрже" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Лед" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Глатко" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Приказивање" @@ -4004,59 +3906,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Неархивирана Винамп 2.x маска" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Претражи ставке у активном списку нумера" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Обележите ставке у списку нумера попуњавајући једно или више поља. Поља " -"користе синтаксу обичних израза, не разликују величину слова. Ако не знате " -"како обични изрази функционишу, једноставно дословно унесите део онога што " -"тражите." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Обриши претходни избор пре претраге" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Подударајуће ставке самостално пребаци у ред" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Направи нови списак нумера са подударајућим ставкама" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Прикључак звучне датотеке" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4510,19 +4364,32 @@ "учесталост3;...\n" "нпр.: tone://2000;2005 да пустите тонове 2000 Hz и 2005 Hz" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Додатне поруке су скривене.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Радим ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Информације" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Уклањање гласа" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4662,14 +4529,38 @@ "\n" "Нешто кода прикључка је написао Мајлс Иган." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2СФ декодер" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "ИксМЛ дељиви спискови пуштања (XSPF)" diff -Nru audacious-plugins-4.1/po/sv.po audacious-plugins-4.3.1/po/sv.po --- audacious-plugins-4.1/po/sv.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/sv.po 2023-04-29 20:17:32.000000000 +0000 @@ -3,24 +3,25 @@ # This file is distributed under the same license as the Audacious Plugins package. # # Translators: -# Anders Jonsson , 2017-2018 +# Anders Jonsson , 2017-2018,2022 # Bo Serrander , 2013,2016 # cb445fb3dfd1fe3c2b9f58ac5638f478, 2015-2016 # Henrik Mattsson-Mårn , 2015 -# Jonatan Nyberg , 2018-2020 -# Jonatan Nyberg , 2017-2018 +# Jonatan Nyberg, 2021-2022 +# Jonatan Nyberg, 2018-2021 +# efef6ec5b435a041fce803c7f8af77d2_2341d43, 2017-2018 # Josef Gottlander , 2020 # Kristoffer Grundström , 2016 -# Luna Jernberg , 2020 +# Luna Jernberg , 2020-2023 # Luna Jernberg , 2014 msgid "" msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-23 00:57+0000\n" -"Last-Translator: Luna Jernberg \n" -"Language-Team: Swedish (http://www.transifex.com/audacious/audacious/" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Luna Jernberg , 2020-2023\n" +"Language-Team: Swedish (http://app.transifex.com/audacious/audacious/" "language/sv/)\n" "Language: sv\n" "MIME-Version: 1.0\n" @@ -37,7 +38,7 @@ msgstr "AdPlug (AdLib spelare)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "sekvensierad" @@ -49,9 +50,11 @@ msgid "OPL Emulator:" msgstr "OPL Emulator:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Samplingshastighet" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Samplingsfrekvens:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -67,7 +70,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Diverse" @@ -75,259 +78,6 @@ msgid "Repeat song in endless loop" msgstr "Upprepa låt i ändlös slinga" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Alarm" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Ställ in alarm ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"En insticksmodul som kan starta uppspelning vid en speciell tidpunkt.\n" -"\n" -"Ursprungligen skriven av Adam Feakin och Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Tid\n" -" Larm vid:\n" -" Tiden för larmet att komma på.\n" -"\n" -"Tyst efter:\n" -" Stoppa larmet efter denna tid.\n" -" (om vakna-dialogrutan inte stängs)\n" -"\n" -"\n" -"Dagar\n" -" Dag:\n" -" Välj de dagar då larmet ska aktiveras.\n" -"\n" -" Tid:\n" -" Välj tid för larmet varje dag, eller välj växlings-\n" -" knappen för att använda standardvärdet\n" -" för tid.\n" -"\n" -"\n" -"Volym\n" -" Avtar:\n" -" Tona volymen upp till den valda volymen\n" -" för denna tid.\n" -"\n" -" Börja vid:\n" -" Börja avta från den här volymen.\n" -"\n" -" Slutlig:\n" -" Volymen slutar avta vid. Om den bleknade\n" -" tiden är 0, ställ sedan in volymen till detta och \n" -" börja spela.\n" -"\n" -"\n" -"Alternativ:\n" -" Ytterligare kommando:\n" -" Kör detta kommando vid alarmtiden.\n" -"\n" -" Spellista:\n" -" Läs in den här spellistan. Om ingen spellista\n" -" ges, kommer den aktuella att användas.\n" -" Webbadressen till en mp3/ogg-ström\n" -" kan också anges här.\n" -"\n" -" Påminnelse:\n" -" Visa en påminnelse när larmet stängs.\n" -" Skriv på påminnelsen i inmatningsfältet och aktivera\n" -" kryssrutan om du vill att den ska visas." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Detta är din väckarklocka." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Din påminnelse för idag är..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Påminnelse" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Måndag" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Tisdag" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Onsdag" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Torsdag" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Fredag" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Lördag" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Söndag" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Tid" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Larm på (standard):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Tyst efter:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "timmar" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "minuter" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Välj dagar då alarmet ska sättas igång" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Dag" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Standard" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Dagar" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Tonar" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "sekunder" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Volym" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "Börja på" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Slutlig" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Aktuell" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Ytterligare kommando" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "aktivera" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Spellista (valfritt)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Välj en spellista" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Inställningar" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Vad betyder dessa inställningar?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Hjälp" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Skivomslag" @@ -476,87 +226,83 @@ msgid "Synthesizer" msgstr "Synthesizer" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Samplingsfrekvens:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - välj SoundFont-fil" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Avbryt" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Öppna" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Filnamn" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" -msgstr "Storlek (bytes)" +msgstr "Storlek (byte)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Namn:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " MIDI-info " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Format:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Längd (ms):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Antal spår:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "variabel" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "Slag/minut:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "Slag/minut (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Tids division:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI-kommentarer och låttexter " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* inga kommentarer finns i denna MIDI-fil *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* inga låttexter finns i denna MIDI-fil *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Stäng" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (ogiltig UTF-8)" @@ -612,7 +358,7 @@ msgid "Concave Rectangle" msgstr "Konkav rektangel" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Ingen" @@ -648,153 +394,153 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Startar OSD när uppspelningen återupptas." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Placering" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Relativ X-utjämning:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Relativ Y-utjämning:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Största OSD-bredd:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Alternativ för flera bildskärmar" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Visa OSD med:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "alla skärmar" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "skärm %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Tidtagning (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Skärm:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Tona in:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Tona ut:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Teckensnitt" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Teckensnitt %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Skugga" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Renderingsstil" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Färger" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Färg %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Aktivera utösare" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Evenemang" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Kompositionshanterare upptäckt" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " "manager otherwise the OSD won't work properly" msgstr "" -"Kompositionshanterare inte detekterad;\n" -"om du inte vet att du har en körande, vänligen aktivera en " -"kompositionshanterare, annars kommer inte OSD att fungera korrekt" +"Kompositionshanterare inte upptäckt;\n" +"om du inte vet att du har en igång, aktivera en kompositionshanterare annars " +"fungerar inte OSD korrekt" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Kompositionshanterare krävs inte för falsk transparens" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Genomskinlighet" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Falsk genomskinlighet" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Verklig transparens (kräver X Composite Ext.)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Kompositutbyggnad ej inläst" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Position" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Animation" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Text" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Dekoration" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Utlösare" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Misc" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Test" @@ -810,11 +556,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Audacious-spellistor (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Överföringsdjup:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Nedsamplingsförhållande:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Färg" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Oskärpa omfattning" @@ -826,6 +588,10 @@ msgid "Presets:" msgstr "Förinställningar:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Standard" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Flödesnivå:" @@ -838,7 +604,7 @@ msgid "Cut frequency:" msgstr "Klippfrekvens:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Spektrumanalysator" @@ -933,50 +699,50 @@ msgid "Audio CD" msgstr "Ljud-CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Misslyckades med att öppna CD-enheten %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Ingen ljud kapabel CD-enhet hittades." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Enheten är tom." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Ogiltig typ av skiva." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Misslyckades med att slutföra initieringen av den öppna CD-enheten." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Misslyckades med mottagandet av det första/sista spårnumret." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Kan inte läsa start/slut-LSN för spår %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Misslyckades med att skapa CDDB-anslutning." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Misslyckades med att fråga CDDB-server" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Misslyckades med att fråga CDDB-server: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Misslyckades med att läsa CDDB-data: %s" @@ -1049,6 +815,13 @@ msgid "Default song length:" msgstr "Standard låtlängd:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "sekunder" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Återsampling" @@ -1077,7 +850,7 @@ msgid "CoreAudio output" msgstr "CoreAudio-utgång" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1097,11 +870,11 @@ "Baserat på SDL Output Plugin för Audacious\n" "Copyright 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Använd exklusivt läge" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "Använd bit perfekt ljud (anpassa enhetens samplingsfrekvens)" @@ -1198,20 +971,20 @@ msgid "Delete" msgstr "Ta bort" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Avsluta" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Ta bort valda filer" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Borttagningsmetod" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Flytta till papperskorgen istället för att ta bort direkt" @@ -1237,7 +1010,7 @@ msgstr "Fördröjning:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1253,11 +1026,11 @@ msgid "Echo" msgstr "Eko" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "FFmpeg Plugin" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1380,89 +1153,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "8 kbit/s" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "16 kbit/s" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "32 kbit/s" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "40 kbit/s" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "48 kbit/s" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "56 kbit/s" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "64 kbit/s" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "80 kbit/s" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "96 kbit/s" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "112 kbit/s" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "128 kbit/s" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "160 kbit/s" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "192 kbit/s" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "224 kbit/s" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "256 kbit/s" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "320 kbit/s" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Joint Stereo" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1574,7 +1347,7 @@ msgid "Quality (0-1):" msgstr "Kvalitet (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Allmänt" @@ -1583,11 +1356,11 @@ msgid "FLAC Decoder" msgstr "FLAC-avkodare" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "felfri kompression" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1619,7 +1392,7 @@ msgid "Invalid open mode" msgstr "Ogiltigt öppet läge" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1639,116 +1412,134 @@ "\n" "Licens: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL Spectrum Analyzer" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "Ingångsnummer" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Titel" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Artist" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "År" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Album" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Albumartist" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Spår" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Genre" -#: src/gtkui/columns.cc:43 -msgid "Queue position" +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" msgstr "Köplats" -#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Längd" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "Filsökväg" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "Sökväg" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Filnamn" -#: src/gtkui/columns.cc:47 -msgid "Custom title" +#: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" msgstr "Anpassad titel" -#: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Överföringskapacitet" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Kommentar" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "Utgivare" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "Katalognummer" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Tillgängliga kolumner" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Visade kolumner" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Sökverktyg" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Docka till vänster" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Docka till höger" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Docka upptill" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Docka nedtill" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Avdocka" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Inaktivera" @@ -1771,7 +1562,7 @@ #: src/gtkui/menus.cc:84 src/qtui/menus.cc:120 msgid "Search _Library" -msgstr "Sök i _biblioteket" +msgstr "Sök i _bibliotek" #: src/gtkui/menus.cc:86 src/qtui/menus.cc:123 msgid "A_bout ..." @@ -1788,8 +1579,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Spela" @@ -1966,8 +1757,8 @@ msgid "Remove _Unavailable Files" msgstr "Ta bort _otillgängliga filer" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Ny" @@ -1977,7 +1768,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "Ta bor_t" @@ -2108,7 +1899,7 @@ msgstr "Välj _alla" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Byt namn ..." @@ -2122,7 +1913,7 @@ #: src/gtkui/settings.cc:38 src/qtui/settings.cc:68 msgid "Show entry counts" -msgstr "Visa inmatningsräkningar" +msgstr "Visa inmatningsantal" #: src/gtkui/settings.cc:40 src/qtui/settings.cc:71 msgid "Show close buttons" @@ -2136,197 +1927,202 @@ msgid "Show column headers" msgstr "Visa kolumnrubriker" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "Använd symboliska ikoner i verktygsfältet" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Bläddra vid låtbyte" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "GTK-gränssnitt" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Buffrar ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Spela" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Pausa" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" -msgstr "Sök i biblioteket" +msgstr "Sök i bibliotek" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Öppna filer" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Lägg till filer" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Föregående" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Stoppa" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Nästa" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Spela in ström" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Upprepa" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Blanda" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "Meny" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d kanal" msgstr[1] "%d kanaler" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "%d kbit/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Singelläge." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Spellistsläge" -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Stoppar efter låt." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Föregående spår" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Pausa/Återuppta" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Nästa spår" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "Steg framåt" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "Steg bakåt" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" -msgstr "Tysta" +msgstr "Ljud av" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Volym upp" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Volym ner" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Hoppa till fil" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Växla spelarfönster" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Visa On-Screen-Display" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Växla upprepa" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Växla blandning" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Växla stoppa efter aktuell" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Höja spelarfönster" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(ingen)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2336,11 +2132,11 @@ "\n" "Vill du fortsätta?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Binder musknappar" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2348,23 +2144,23 @@ "Tryck en tangentkombination i ett textfält.\n" "Du kan också binda musknapparna." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Snabbtangenter:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Åtgärd:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Tangentbindning:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Lägg till" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Globala snabbtangenter" @@ -2417,7 +2213,7 @@ #: src/jack/jack-ng.cc:139 msgid "Upmix to" -msgstr "" +msgstr "Upmix till" #: src/jack/jack-ng.cc:141 msgid "ports if input has fewer channels" @@ -2463,16 +2259,16 @@ "%d Hz. Använd Sample Rate Converter-effekten för att korrigera " "felmatchningen." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s-inställningar" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Modulsökvägar:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2480,28 +2276,28 @@ msgstr "" "Separera flera sökvägar med ett kolon.\n" "Dessa sökvägar söks utöver LADSPA_PATH.\n" -"Efter att nya sökvägar lagts till, trycka på Enter för att söka efter nya " +"Efter att nya sökvägar lagts till, trycka på Enter för att skanna efter nya " "insticksmoduler." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Tillgängliga insticksmoduler:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Aktivera" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Aktiverade insticksmoduler:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Inställningar" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2558,101 +2354,105 @@ msgid "Wait before reconnecting:" msgstr "Vänta innan du ansluter igen:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "Låttexter" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Ingenstans" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" -msgstr "" +msgstr "Artist är avkortad i början, Titel -- i slutet" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" -msgstr "" +msgstr "Tecken att avkorta vid:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" -msgstr "" +msgstr "Tecken är ORed i RegExp, omgivet av mellanrum" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" -msgstr "" +msgstr "Tecken att uppdela vid: " -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" -msgstr "" +msgstr "Ytterligare avkorta vid dessa tecken" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "Allmänt" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" -msgstr "" +msgstr "Dela upp titel i artist och titel vid tecken" + +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "Källor" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "Använd inbäddade sångtexter (från Låttexter-taggen)" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "Internetkällor" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "Hämta låttexter från:" +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "Hämta låttexter från internet:" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "Lagra hämtade låttexter i lokal cache" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Lokal lagring" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "Läs in låttext-filer (.lrc) från lokal lagring" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Det gick inte att hämta %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Kan inte tolka %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Letar efter låttexter ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Fel" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "Låttexter kunde inte hittas." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "Saknar titel och/eller artist." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Spara lokalt" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Uppdatera" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "M3U-spellistor" @@ -2803,57 +2603,33 @@ #: src/modplug/plugin_main.cc:111 msgid "To repeat forever, set the repeat count to -1." -msgstr "För att repetera för alltid, sätt uppräkningsantalet till -1." +msgstr "För att upprepa för evigt, ställ in upprepningsantalet till -1." #: src/modplug/plugin_main.cc:124 src/sid/xs_config.cc:106 msgid "These settings will take effect when Audacious is restarted." msgstr "Dessa inställningar träder i kraft när Audacious startas om." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Sluta efter den här låten" #: src/moonstone/moonstone.cc:39 msgid "Moonstone" -msgstr "" +msgstr "Månsten" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Återställ till standardvärden" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Spelar nu" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Ingångsnummer" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Albumartist" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Köplats" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Sökväg" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Filnamn" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Anpassad titel" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Poster" @@ -2869,7 +2645,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Använd exakt längdberäkning (långsam)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Surround" @@ -2969,7 +2745,7 @@ msgid "OpenMPT (Module Player)" msgstr "OpenMPT (Modulspelare)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -2979,19 +2755,19 @@ "\n" "Skriven av: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Stereo separation:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "Interpolation:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Linjär" @@ -3001,13 +2777,26 @@ #: src/openmpt/mptwrap.h:53 msgid "Windowed sinc" +msgstr "Fönsterfönster" + +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "Opus-avkodare" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" msgstr "" +"Opus avkodare Plugin för Audacious\n" +"Copyright 2022 Thomas Lange\n" +" " -#: src/oss4/oss.h:75 +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4-utgång" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "OSS3-utgång" @@ -3049,18 +2838,40 @@ "Jag skulle vilja tacka folk på #audacious, särskilt Tony Vroon och John " "Lindgren och naturligtvis författarna till den tidigare OSS-insticksmodulen." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "Pipewire utgång" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" +"Pipewire utgång plugin för Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Baserad på Pipewire utgång plugin för Qmmp\n" +"Copyright 2021 Ilya Kotov " + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Uppspelning" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Spellisthanterare" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Ta bort" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "_Byt namn" @@ -3076,7 +2887,7 @@ msgid "OpenPSF Configuration" msgstr "OpenPSF konfiguration" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Ignorera längd från fil" @@ -3166,11 +2977,11 @@ "\n" "Licens: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "Tryck en tangentkombination inuti ett textfält." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3218,14 +3029,18 @@ msgid "Audio Settings ..." msgstr "Ljudinställlningar ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "Q#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "T#" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "C#" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Qt-gränssnitt" @@ -3300,11 +3115,11 @@ #: src/resample/resample.cc:202 msgid "Rate Mappings" -msgstr "" +msgstr "Hastighetskartläggningar" #: src/resample/resample.cc:203 msgid "Use rate mappings" -msgstr "" +msgstr "Använd hastighetskartläggningar" #: src/resample/resample.cc:205 msgid "8 kHz:" @@ -3441,38 +3256,38 @@ msgid "Library" msgstr "Bibliotek" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d sång" msgstr[1] "%d låtar" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "av denna genre" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "på" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "av" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Antal resultat som ska visas:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" -msgstr "Sök igenom biblioteket vid uppstart" +msgstr "Skanna om biblioteket vid uppstart" #: src/search-tool-qt/search-tool-qt.cc:170 msgid "Monitor library for changes" msgstr "Övervaka bibliotek för ändringar" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3480,37 +3295,37 @@ "För att importera ditt musikbibliotek till Audacious, välj en mapp och " "klicka sedan på ikonen \"uppdatera\"." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Vänta ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Välj mapp" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Sök bibliotek" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "%d av %d visat reslutat" msgstr[1] "%d av %d visade resultat" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d resultat" msgstr[1] "%d resultat" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Skapa spellista" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Lägg till spellista" @@ -3614,108 +3429,108 @@ msgid "Repeat point B set." msgstr "Upprepningspunkt B inställd." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Förförstärkare" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Audacious-frekvenskorrigerare" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Inspelning på" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Inspelning av" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Söka till %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Volym: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Balans: %d%% kvar" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Balans: centrera" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Balans: %d%% höger" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Alternativmeny" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Inaktivera \"Alltid överst\"" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Aktivera \"Alltid överst\"" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Filinforuta" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Dubbel storlek" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Visualiseringar" @@ -3739,10 +3554,6 @@ msgid "Open URL ..." msgstr "Öppna webbadress ..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Uppspelning" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Spellista" @@ -3757,7 +3568,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Tjänster" @@ -3767,14 +3578,14 @@ #: src/skins/menus.cc:96 src/skins-qt/menus.cc:87 msgid "Settings ..." -msgstr "Inställningar..." +msgstr "Inställningar ..." #: src/skins/menus.cc:97 src/skins-qt/menus.cc:88 msgid "Quit" msgstr "Avsluta" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Låtinformation ..." @@ -3794,7 +3605,7 @@ msgid "Clear A-B Repeat" msgstr "Rensa A-B-upprepning" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Hoppa till låt ..." @@ -3824,7 +3635,7 @@ #: src/skins/menus.cc:132 src/skins-qt/menus.cc:125 msgid "Next Playlist" -msgstr "Nästa Spellista" +msgstr "Nästa spellista" #: src/skins/menus.cc:134 src/skins-qt/menus.cc:127 msgid "Import Playlist ..." @@ -3887,26 +3698,26 @@ msgstr "Lägg till filer ..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Efter titel" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Efter filnamn" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Efter sökväg" #: src/skins/menus.cc:176 src/skins-qt/menus.cc:172 msgid "Remove All" -msgstr "Ta Bort Alla" +msgstr "Ta bort alla" #: src/skins/menus.cc:177 src/skins-qt/menus.cc:173 msgid "Clear Queue" @@ -3928,113 +3739,113 @@ msgid "Remove Selected" msgstr "Ta bort valda" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Sök och välj" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Invertera valet" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" -msgstr "Välj inga" +msgstr "Välj ingen" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Välj alla" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Efter spårnummer" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Efter artist" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Efter album" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Efter albumartist" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Efter utgivningsdatum" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Efter genre" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Efter längd" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Efter anpassad titel" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Efter kommentar" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" -msgstr "Slumpa lista" +msgstr "Slumpmässig lista" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Omvänd lista" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" -msgstr "Sortera vald" +msgstr "Sortera valda" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Sortera lista" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "Öppna innehållande mapp" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Klipp" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Kopiera" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Klistra in" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Klistra in i slutet" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Lägg till i kö/Ta bort från kö" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d av %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Audacious spellistsredigerare" @@ -4050,167 +3861,219 @@ msgid "Add Folder ..." msgstr "Lägg till mapp ..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Sök poster i aktiv spellista" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Välj poster i spellistan genom att fylla i ett eller flera fält. Fält " +"använder syntax för regeluttryck, skiftlägeskänslig. Om du inte vet hur " +"vanliga uttryck fungerar, sätt bara in en bokstavlig del av det du söker " +"efter." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Titel:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Album:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Artist:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Filnamn:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Rensa tidigare val innan du söker" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Växla automatiskt till kö för matchande poster" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Skapa en ny spellista med matchande poster" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Sök" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Spelare:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Välj teckensnitt för huvudfönster:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Spellista:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Välj teckensnitt för spellista:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Skal" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "Visa aktiv titelrad när något fönster är fokuserat" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Teckensnitt" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Använd bitmappsteckensnitt (stöder endast ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Rulla låttitel" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Rulla låttitel i båda riktningarna" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analysator" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Omfattning" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Röstavtryck / VU-mätare" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Av" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normal" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Eld" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Vertikala linjer" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Linjer" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Staplar" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Långsammast" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Långsam" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Mellan" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Snabb" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Snabbast" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Punkter" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Linje" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Fast" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Is" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Mjuk" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Färgläggning:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Stil:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Minskning:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Största minskning:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Omfattningsstil:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Röstavtrycksfärgning:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "VU-mätarstil:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Typ" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Visualiseringstyp:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Analysator" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Visa toppar" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Visualisering" @@ -4222,59 +4085,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Oarkiverat Winamp 2.x skal" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Sök poster i aktiv spellista" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Sök" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Välj poster i spellistan genom att fylla i ett eller flera fält. Fält " -"använder syntax för regeluttryck, skiftlägeskänslig. Om du inte vet hur " -"vanliga uttryck fungerar, sätt bara in en bokstavlig del av det du söker " -"efter." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Titel:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Album:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Artist:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Filnamn:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Rensa tidigare val innan du söker" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Växla automatiskt till kö för matchande poster" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Skapa en ny spellista med matchande poster" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Sndfile Plugin" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4605,7 +4420,7 @@ #: src/streamtuner/ihr-model.cc:156 msgid "Call Letters" -msgstr "" +msgstr "Ringbrev" #: src/streamtuner/ihr-model.cc:162 msgid "Description" @@ -4755,19 +4570,32 @@ "frequency3;...\n" "t.ex. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Ytterligare meddelanden har dolts.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Arbetar ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Information" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "%s verkar inte vara en giltig mapp." + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Röstavlägsnande" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4868,11 +4696,11 @@ #: src/vumeter-qt/vumeter_qt.cc:37 msgid "Peak hold time:" -msgstr "" +msgstr "Högsta hålltid:" #: src/vumeter-qt/vumeter_qt.cc:42 msgid "Fall-off time:" -msgstr "" +msgstr "Reduktionstid:" #: src/vumeter-qt/vumeter_qt.cc:44 msgid "dB/second" @@ -4920,14 +4748,41 @@ "\n" "En del av insticksmodulskoden var av Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2SF-avkodare" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Cosinus" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Skarp" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "XSF-konfiguration" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Standardtoningstid:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Interpolationsläge:" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "XML-delbara spellistor (XSPF)" + +#~ msgid "Sample rate" +#~ msgstr "Samplingshastighet" diff -Nru audacious-plugins-4.1/po/ta.po audacious-plugins-4.3.1/po/ta.po --- audacious-plugins-4.1/po/ta.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/ta.po 2023-04-29 20:17:32.000000000 +0000 @@ -11,9 +11,9 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Nareshwar Raju Vaneshwar , 2013\n" "Language-Team: Tamil (http://www.transifex.com/audacious/audacious/language/" "ta/)\n" "Language: ta\n" @@ -31,7 +31,7 @@ msgstr "AdPlug (AdLib Player)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "" @@ -43,8 +43,10 @@ msgid "OPL Emulator:" msgstr "" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" msgstr "" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 @@ -61,7 +63,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "" @@ -69,209 +71,6 @@ msgid "Repeat song in endless loop" msgstr "" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "அலாரம்" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "" - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "இது உங்களை எழுப்புவதற்கான அழைப்பு" - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "" - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "நினைவூட்டி" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "திங்கட்கிழமை " - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "செவ்வாய்கிழமை " - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "புதன்கிழமை " - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "வியாழக்கிழமை " - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "வெள்ளிக்கிழமை " - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "சனிக்கிழமை " - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "ஞாயிற்றுகிழமை " - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "நேரம் " - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "அலாரம் அடிக்கும் நேரம் (இயல்புநிலை) :" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "பின் நிசப்தமாக்குக: " - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "மணித்தியாலங்கள் " - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "நிமிடங்கள் " - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "அலாரம் வேண்டிய நாட்களை தெரிவு செய்க " - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "நாள் " - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "இயல்புநிலை" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "நாட்கள் " - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "மங்குதல் " - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "வினாடிகள் " - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "ஒலி அளவு " - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "இங்கு ஆரம்பிக்குக " - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "இறுதி " - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "தற்போதைய " - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "மேலதிக பின்னூட்டு" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "செயல்படுத்துக " - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "பாடல் பட்டியல் (விரும்பினால் மட்டும்)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "பாடல் பட்டியலினை தெரிவு செய்க" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "விருப்பத்தேர்வுகள் " - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "இவ்விருப்ப தேர்வுகள் எதனை உணர்த்துகின்றன?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "உதவி " - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "குறுவட்டு வரைவு " @@ -396,87 +195,83 @@ msgid "Synthesizer" msgstr "" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-சொருகி - ஒலி எழுத்துரு கோப்பினை தெரிவு செய்க " -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_இரத்து செய் " -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_திற " -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "கோப்பின் பெயர் " -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "அளவு (பயிட்ஸ்)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "பெயர்: " -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " MIDI தகவல் " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "வடிவமைப்பு: " -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "நீளம் (மில்லி வினாடிகள்): " -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "பாடல்களின் இலக்கங்கள்:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "மாறி " -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "துடிப்புகள் ஒரு நிமிடத்திற்கு: " -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "துடிப்புகள் ஒரு நிமிடத்திற்கு (wavg): " -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "நேரப் பிரிவு:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI பின்னூட்டுகள் மற்றும் பாடல் வரிகள் " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "*இந்த MIDI கோப்பிற்கான எந்தவொரு பின்னூட்டும் கிடைக்கப்படவில்லை * " -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "*இந்த MIDI கோப்பிற்கான எந்தவொரு பாடல்வரிகளும் கிடைக்கப்படவில்லை * " -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_மூடவும்" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr "(செல்லுபடியற்ற UTF-8 )" @@ -520,7 +315,7 @@ msgid "Concave Rectangle" msgstr "குழிவான செவ்வகம் " -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "ஏதுமில்லை " @@ -556,94 +351,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "மீளியக்கம் நிறுத்தப்படுகையில் திரையில் தோன்றும் காட்சி தூண்டப்படுகிறது. " -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "ஒன்றின் நிறுத்தப்பட்ட நிலை " -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "ஒப்பீட்டு X விலக்கம்:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "ஒப்பீட்டு Y விலக்கம்: " -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "அதிகூடிய திரையில் தோன்றும் காட்சியின் அகலம்:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "பல்-கணினித்திரை தேர்வுகள் " -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "திரையில் தோன்றும் காட்சியினை காட்டுக இதனை பயன்படுத்தி: " -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "அனைத்து கணினித்திரைகள் " -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "கணினித்திரை %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "நேரம் (மில்லி வினாடிகளில்) " -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "காட்சிப்படுத்துக:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "உண்மங்கியடைதல்:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "வெளிமங்குதல்:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "எழுத்துருக்கள் " -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "எழுத்துரு %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "நிழல் " -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "வழங்கும் பாங்கு " -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "நிறங்கள் " -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "நிறம் %i " -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "தூண்டுதலினை செயல்படுத்துக " -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "நிகழ்வு " -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "தொகுப்பு நிர்வாகி கண்டறியப்பட்டது" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -654,56 +449,56 @@ "கட்டாயமாக தொகுப்பு நிர்வாகியொன்று செயற்படுத்தப்பட வேண்டும். இல்லையெனில் திரையில் " "தோன்றும் காட்சி ஒழுங்காக இயங்காது. " -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "போலி வெளிப்படைத்தன்மையிற்கு தொகுப்பு நிர்வாகியொன்று தேவையில்லை " -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "வெளிப்படைத்தன்மை " -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "போலி வெளிப்படைத்தன்மை " -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "உண்மையான வெளிப்படைத்தன்மை ( X தொகுப்பு நீடிப்பு தேவைப்படுகிறது.)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "தொகுப்பு நீட்டிப்பு ஏற்றப்படவில்லை " -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "ஔடகிவஸ் திரையில் தோன்றும் காட்சி " -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "இடம் " -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "உயிரூட்டுதல் " -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "எழுத்து " -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "அலங்காரம் " -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "தூண்டுதல் " -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "மற்றவை" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "பரீட்சிக்க " @@ -719,11 +514,27 @@ msgid "Audacious Playlists (audpl)" msgstr "ஔடகிவஸ் பாடல் பட்டியல்கள் " -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "நிறம்" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "மங்கலான குறியிலக்கம்" @@ -735,6 +546,10 @@ msgid "Presets:" msgstr "முன்னமைப்புகள்:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "இயல்புநிலை" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "நிலை ஊட்டல்:" @@ -747,7 +562,7 @@ msgid "Cut frequency:" msgstr "குறை அதிர்வெண்:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "நிறமாலை பகுப்பாய்வி " @@ -834,50 +649,50 @@ msgid "Audio CD" msgstr "ஒலி இறுவட்டு" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "வட்டு வெறுமையாக உள்ளது." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "ஆதரவற்ற வட்டு வகை." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "" -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "" @@ -942,6 +757,13 @@ msgid "Default song length:" msgstr "இயல்புநிலை பாடல் நீளம்:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "வினாடிகள் " + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "" @@ -970,7 +792,7 @@ msgid "CoreAudio output" msgstr "" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -982,11 +804,11 @@ "Copyright 2010 John Lindgren" msgstr "" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" @@ -1079,20 +901,20 @@ msgid "Delete" msgstr "அழிக்குக " -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "ரத்து செய்க " -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "" @@ -1114,7 +936,7 @@ msgstr "தாமதம் :" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1130,11 +952,11 @@ msgid "Echo" msgstr "எதிரொலி " -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "FFmpeg நீட்சி" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1236,76 +1058,76 @@ msgid "32000 Hz" msgstr "" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" +msgid "8 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" +msgid "16 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" +msgid "32 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" +msgid "40 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" +msgid "48 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" +msgid "56 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" +msgid "64 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" +msgid "80 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" +msgid "96 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" +msgid "112 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" +msgid "128 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" +msgid "160 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" +msgid "192 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" +msgid "224 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" +msgid "256 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" +msgid "320 kbit/s" msgstr "" #: src/filewriter/filewriter.cc:450 @@ -1313,12 +1135,12 @@ msgstr "கூட்டு பேரொலி" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "பேரொலி" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "ஒற்றை" @@ -1430,7 +1252,7 @@ msgid "Quality (0-1):" msgstr "" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "பொதுவான" @@ -1439,11 +1261,11 @@ msgid "FLAC Decoder" msgstr "FLAC குறிவிலக்கி " -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1469,7 +1291,7 @@ msgid "Invalid open mode" msgstr "" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1481,118 +1303,134 @@ "License: GPLv2+" msgstr "" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL நிறமாலை பகுப்பாய்வி" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "பதிவு எண்" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "தலைப்பு" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "பாடகர்" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "வருடம்" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "குறுவட்டு" -#: src/gtkui/columns.cc:40 -msgid "Album artist" -msgstr "" -"செருகேடு கலைஞர் \n" -" " - #: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr "செருகேடு கலைஞர் " + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "பாடல் " -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "இலக்கியநடை" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "வரிசையில் இடம் " - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "நீளம்" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "கோப்பு vali" - -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "விருப்ப தலைப்பு " +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "பிட்வீதம்" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "பின்னூட்டம்" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "தேடல் கருவி" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "இடது பக்கம் தரையிறக்குக " -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "வலது பக்கம் தரையிறக்குக" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "மேல் பக்கம் தரையிறக்குக" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "கீழ் பக்கம் தரையிறக்குக" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "தரையிறக்க வேண்டாம் " -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "முடக்குக " @@ -1632,8 +1470,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_இயக்குக " @@ -1810,8 +1648,8 @@ msgid "Remove _Unavailable Files" msgstr "_கிடைக்கப்பெறாத கோப்புகளை அகற்றுக" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_புதிய " @@ -1821,7 +1659,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "" @@ -1952,7 +1790,7 @@ msgstr "_அனைத்தையும் தேர்ந்தெடுக்குக " #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "மறுபெயர்" @@ -1980,208 +1818,213 @@ msgid "Show column headers" msgstr "" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "GTK இடைமுகம் " -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - ஔடகிவஸ்" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "இடைநிலைப்படுத்துகிறது ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "ஔடகிவஸ்" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "இயக்குக " -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "இடைநிறுத்துக " -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "கோப்புக்களைத் திறkkavum" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "கோப்புக்களை சேர்kkavum" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "முந்தைய" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "நிறுத்துக " -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "அடுத்தது " -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "மறுமுறை" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "குலுக்குக " -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "தனித்த " -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "ஒலிப்பிரிப்பு" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "" msgstr[1] "" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "ஒற்றை முறை." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "பாடல் பட்டியல் murai" -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "பாடலின் பின்னர் நிறுத்துக." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "இடைநிறுத்து / மீண்டும் இயக்கு " -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "ஒலியடக்கவும்" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "ஒலிஉரப்பான் அதிகரிக்குக" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "ஒலிஉரப்பான் குறைக்குக" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "கோப்பிற்கு தாவவும்." -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr " திரையில் தோன்றும் காட்சியினை kaattuga" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(எதுவுமல்ல)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" "Do you want to continue?" msgstr "" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "சுட்டி பொத்தான்களை பிணைத்தல்" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2189,23 +2032,23 @@ "எழுத்து புலத்தில் ஒரு விசை சேர்க்கையை அழுத்தவும்.⏎\n" "உங்களுக்கு சுட்டி பொத்தான்களை பிணைக்கவும் முடியும்." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "குறுக்குவிசைகள்:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "நடவடிக்கை: " -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "சாவி பிணைத்தல்:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_சேர் " -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "உலகளாவிய குறுக்குவிசைகள்:" @@ -2287,16 +2130,16 @@ "%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." msgstr "" -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s அமைப்புகள்" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "தொகுதிக்கூறு பாதைகள்:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2307,25 +2150,25 @@ "புதிய பாதைகள் சேர்த்ததன் பின்னர், புதிய செருகுநிரல்கள் வருட உள்ளிடுகவினை அழுத்தக." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "இருப்பிலுள்ள செருகுநிரல்கள்:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "செயல்படுத்துக " -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "செருகுநிரல்களினை செயல்ப்படுத்துக:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "அமைப்புக்கள்" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2367,101 +2210,105 @@ msgid "Wait before reconnecting:" msgstr "மீள் இணைக்க முன் பொறுக்க :" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "thavaruthal" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "M3U பாடல் பட்டியல்" @@ -2612,7 +2459,7 @@ msgstr "" #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "" @@ -2621,41 +2468,17 @@ msgid "Moonstone" msgstr "" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "தற்போது இயக்கப்படுவது" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "செருகேடு கலைஞர் " - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "varavugal" @@ -2671,7 +2494,7 @@ msgid "Use accurate length calculation (slow)" msgstr "" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "சூழ்ந்த" @@ -2755,26 +2578,26 @@ msgid "OpenMPT (Module Player)" msgstr "" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "" @@ -2786,11 +2609,21 @@ msgid "Windowed sinc" msgstr "" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4 வெளியீடு " -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "" @@ -2827,18 +2660,35 @@ "Lindgren and of course the authors of the previous OSS plugin." msgstr "" -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "மீள் இயக்கு" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "பாடல் பட்டிய நிர்வாகி " -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "நீக்கு " -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "" @@ -2854,7 +2704,7 @@ msgid "OpenPSF Configuration" msgstr "" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "" @@ -2915,11 +2765,11 @@ "License: GPLv2+" msgstr "" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "" -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -2955,14 +2805,18 @@ msgid "Audio Settings ..." msgstr "" -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "" @@ -3160,30 +3014,30 @@ msgid "Library" msgstr "நூலகம்" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "" msgstr[1] "" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "" @@ -3191,7 +3045,7 @@ msgid "Monitor library for changes" msgstr "" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3199,37 +3053,37 @@ "ஔடகிவஸ் இல் இசை நூகலமொன்றை இறக்குமதி செய்ய கோப்பகமொன்றை தெரிவு செய்து புதுப்பிப்பு " "பொத்தானை அழுத்துக. " -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "தயவு செய்து பொருத்திருக்குக ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "கோப்பகமொன்றை தேர்க " -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "நூலகத்தில் தேடுக " -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "" msgstr[1] "" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "" msgstr[1] "" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "பாடல் பட்டியலொன்றை _உருவாக்குக " -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "பாடல் பட்டியலிற்கு _சேர்க்க " @@ -3331,108 +3185,108 @@ msgid "Repeat point B set." msgstr "" -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "முன் விரிவாக்கி " -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "ஔடகிவஸ் சமமாக்கி " -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "%d:%-2.2d / %d:%-2.2d இனை நாடுக" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "ஒலி அளவு: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "சமநிலை:% d%% இடது" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "சமநிலை:மத்தி " -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "சமநிலை:% d%% வலது " -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "தேர்வு பட்டியல்" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "'எப்போதும் மேலே' என்பதை முடக்குக " -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "'எப்போதும் மேலே' என்பதை செயற்படுத்துக " -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "கோப்பு தகவல் பெட்டி" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "" @@ -3456,10 +3310,6 @@ msgid "Open URL ..." msgstr "" -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "மீள் இயக்கு" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "பாடல் பட்டியல்" @@ -3474,7 +3324,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "சேவைகள் " @@ -3491,7 +3341,7 @@ msgstr "" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "" @@ -3511,7 +3361,7 @@ msgid "Clear A-B Repeat" msgstr "" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "" @@ -3604,20 +3454,20 @@ msgstr "" #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "தலைப்பின் படி " #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "" @@ -3645,113 +3495,113 @@ msgid "Remove Selected" msgstr "தெரிவுசெய்தவற்றை அகற்றுக" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "தேடி தேர்ந்தெடுக்கவும்" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "தலைகீழ் தேர்ந்தெடுப்பு" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "எதனையும் தேர்ந்தெடுக்க வேண்டாம்." -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "அனைத்தையும் தேர்ந்தெடுக்குக " -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "பாடல் இலக்க அடிப்படையில் " -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "பாடகர்களின் படி " -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "குறுவட்டின் படி " -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "பட்டியலினை தற்போக்காக தோன்றச்செய்க " -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "பட்டியலினை தலைகீழாக்குக" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "வரிசையானவற்றை தெரிக." -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "பட்டியலை வரிசையாக்குக " -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "வெட்டுக " -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "நகleடுக்குக" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "ஒட்டுக " -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d இன் %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "ஔடகிவஸ் பாடல் பட்டியல் திருத்தி" @@ -3767,167 +3617,218 @@ msgid "Add Folder ..." msgstr "" -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "செய்வினை பாடல் பட்டியலிலுள்ள பதிவுகளை தேடுக " + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"ஒன்று அல்லது மேற்பட்ட வெற்றிடங்களை நிரப்புவதன் மூலம் பட்டியல் பதிவுகளை தெரிக. வெற்றிடங்கள் " +"வழக்கமான வெளிப்பாடுகள் தொடரியலை கொண்டவை. வழக்கமான வெளிப்பாடுகள் எவ்வாறு இயங்கும் என " +"தெரியாவிடின் நீங்கள் தேடுவதின் துல்லியமான பகுதியினை உள்ளிடுக. " + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "தேட முன் முன்னைய தெரிவுகளை துடைத்தழிக்குக " + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "தேர்வடையும் பதிவுகளை தானாக நிலைமாற்று வரிசையாக்குக" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "தேர்வடையும் பதிவுகளுக்கு புதிய பாடல் பட்டியலொன்றை உருவாக்குக." + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "பிரதான இயக்கி சாளரத்தின் எழுத்துருவை தெரிவு செய்க :" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "பாடல் பட்டியலின் எழுத்துருவை தெரிவு செய்க :" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "பிட்மாப் பட எழுத்துருக்களை உபயோகிக்க (ASCII இணை மட்டும் ஆதரிக்கிறது)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "இரு திசைகளிலும் பாடல் தலைப்பை ururavaikkuga " -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "பகுப்பாய்வி " -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "குறியிலக்கம்" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "அணைக்குக " -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "இயல்பான" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "நெருப்பு " -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "கோடுகள் " -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "பட்டைகள்" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "மெதுவான " -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "மெதுவாய் " -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "நடுத்தரம் " -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "விரைவு " -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "மிக விரைவாக " -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "பனி " -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "மிருதுவான " -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "உருவக காட்சிப்படுத்தல் " @@ -3939,58 +3840,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "ஆவணப்படுத்தப்படாத Winamp 2.x தோல் " -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "செய்வினை பாடல் பட்டியலிலுள்ள பதிவுகளை தேடுக " - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"ஒன்று அல்லது மேற்பட்ட வெற்றிடங்களை நிரப்புவதன் மூலம் பட்டியல் பதிவுகளை தெரிக. வெற்றிடங்கள் " -"வழக்கமான வெளிப்பாடுகள் தொடரியலை கொண்டவை. வழக்கமான வெளிப்பாடுகள் எவ்வாறு இயங்கும் என " -"தெரியாவிடின் நீங்கள் தேடுவதின் துல்லியமான பகுதியினை உள்ளிடுக. " - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "தேட முன் முன்னைய தெரிவுகளை துடைத்தழிக்குக " - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "தேர்வடையும் பதிவுகளை தானாக நிலைமாற்று வரிசையாக்குக" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "தேர்வடையும் பதிவுகளுக்கு புதிய பாடல் பட்டியலொன்றை உருவாக்குக." - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4409,19 +4263,30 @@ "e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" msgstr "" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "" -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "தகவல் " +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "குரல் நீக்கம்" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4536,14 +4401,38 @@ "Some of the plugin code was by Miles Egan." msgstr "" -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "" diff -Nru audacious-plugins-4.1/po/tr.po audacious-plugins-4.3.1/po/tr.po --- audacious-plugins-4.1/po/tr.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/tr.po 2023-04-29 20:17:32.000000000 +0000 @@ -18,6 +18,7 @@ # Murat Şenel , 2007 # Muzaffer Cagda , 2016 # Onur Küçük , 2007 +# Sabri Ünal , 2023 # seckin Yılmaz , 2013 # seckin Yılmaz , 2013 # tarkan255 , 2012 @@ -30,9 +31,9 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Sabri Ünal , 2023\n" "Language-Team: Turkish (http://www.transifex.com/audacious/audacious/" "language/tr/)\n" "Language: tr\n" @@ -50,21 +51,23 @@ msgstr "AdPlug(AdLib Oynatıcı)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "sıralı" #: src/adplug/adplug-xmms.cc:349 src/sid/xs_config.cc:61 msgid "Output" -msgstr "Çıktı" +msgstr "Çıkış" #: src/adplug/adplug-xmms.cc:350 msgid "OPL Emulator:" msgstr "OPL Emülatorü:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Örnekleme oranı" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Örnekleme oranı:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -80,7 +83,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Karışık" @@ -88,262 +91,9 @@ msgid "Repeat song in endless loop" msgstr "Sonsuz döngüde şarkıyı tekrarla" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Alarm" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Alarm ayarla..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Belirli bir zamanda oynatmaya başlamak için kullanılabilen bir eklenti.\n" -"\n" -"Aslen Adam Feakin ve Daniel Stodden tarafından yazıldı." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Zaman\n" -"Alarm zamanı:\n" -"Alarmın çalacağı zaman.\n" -"\n" -"Sonra kıs:\n" -"Alarmı bu süre sonunda durdur.\n" -"(uyandırma diyaloğu kapanmdıysa)\n" -"\n" -"\n" -"Günler\n" -"Gün:\n" -"Alarmın çalacağı günleri seçin.\n" -"\n" -"Zaman:\n" -"Hergün için ayrı alarm zamanı ayarlayın.\n" -"yada geçiş düğmesini kullanarak varsayılan\n" -"zamanı seçin.\n" -"\n" -"\n" -"Ses\n" -"Geçiş:\n" -"Seçilen ses düzeyine belirtilen\n" -"süre zarfında geçiş yap.\n" -"\n" -"Başla:\n" -"Bu ses düzeyinden geçiş yapmaya başla.\n" -"\n" -"Son:\n" -"Geçişin biteceği ses düzeyi. Geçiş süresi \n" -"0 isesesi bu düzeye ayarlayın ve oynatın.\n" -"\n" -"\n" -"Ayarlar:\n" -"Ek Komut:\n" -"Alarm zamanında bu komutu çalıştır.\n" -"\n" -"Oynatma Listesi:\n" -"Bu oynatma listesini yükle. Oynatma listesi\n" -"verilmediği takdirde varolan oynatma listesi \n" -"kullanılır. Mp3/ogg ortam akışı URL'si de buraya\n" -"girilebilir.\n" -"\n" -"Hatırlatma:\n" -"Alarm çaldığında hatırlatıcı göster.\n" -"Hatırlatma gösterilmesini istiyorsanız\n" -"girdi alanına hatırlatmanızı yazın ve onay \n" -"kutucuğunu doldurun." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Bu uyandırma çağrısıdır." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Bugünkü hatırlatıcınız..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Hatırlatıcı" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Pazartesi" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Salı" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Çarşamba" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Perşembe" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "Cuma" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Cumartesi" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Pazar" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Zaman" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Alarm (Varsayılan)" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Sonra sessiz:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "saat" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "dakika" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Sonraki alarm için günleri seçiniz" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "Gün" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Öntanımlı" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Günler" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Bozulma" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "saniye" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Ses" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "İle başla" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "Son" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Şu anda" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Ek Komut" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "izin ver" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Çalma Listesi (isteğe bağlı)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Çalma listesi Seç" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Seçenekler" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Bu ayarlar ne anlama geliyor?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Yardım" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" -msgstr "Albüm kapağı" +msgstr "Albüm Kapağı" #: src/alsa/alsa.h:64 msgid "ALSA Output" @@ -489,87 +239,83 @@ msgid "Synthesizer" msgstr "Sentezleyici" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Örnekleme oranı:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - SoundFont dosyası seç" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_İptal" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Aç" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Dosya adı" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Boyut (bayt)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "İsim:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " MIDI Bilgisi " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Biçim:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Uzunluk (ms):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Parça Sayısı:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "değişken" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Zamanı Böl:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI Yorumları ve Sözleri " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* bu midi dosyasında yorum bulunamadı *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* bu midi dosyasında şarkı sözü bulunamadı *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Kapat" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (geçersiz UTF-8)" @@ -625,7 +371,7 @@ msgid "Concave Rectangle" msgstr "İçbükey Dikdörtgen" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Hiçbiri" @@ -661,94 +407,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Çalmaya yeniden başladığında OSD'yi başlatır." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Yerleştirme" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Değişken X değeri:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Değişken Y değeri:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Maksimum OSD genişliği:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Çoklu Ekran seçenekleri" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "OSD kullanımını göster:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "tüm ekranlar" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "ekran %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Zamanlama (ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Görüntü:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Gecikme:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Kaybolma:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Yazı Tipleri" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Yazı tipi %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Gölge" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Tarama Biçemi" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Renkler" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Renk %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Tetikleyiciyi etkinleştir" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Olay" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Bileşiklik yöneticisi tespit edildi" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -758,56 +504,56 @@ "Çalışan bir bileşiklik yöneticisinin olduğundan emin değilseniz lütfen " "OSD'nin düzgün çalışması için bir bileşiklik yöneticisi çalıştırınız" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Sahte şeffaflık için bileşiklik yöneticisi gerekli değil" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Şeffaflık" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Sahte şeffaflık" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Gerçek Şeffaflık (X Bileşiklik Eklentisi gerekli)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Bileşiklik eklentisi yüklü değil" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Konum" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Canlandırma" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Metin" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Dekorasyon" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Başlat" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Çeşitli" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Test" @@ -823,11 +569,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Audacious Çalma Listeleri (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "Bit Derinliği:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "Aşağı ölçekleme oranı:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "Bitcrusher" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Renk" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Bulanıklık Kapsamı" @@ -839,6 +601,10 @@ msgid "Presets:" msgstr "Önayarlar:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Varsayılan" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Besleme seviyesi:" @@ -851,7 +617,7 @@ msgid "Cut frequency:" msgstr "Kesim frekansı:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "İzgesel Çözümleyici" @@ -947,50 +713,50 @@ msgid "Audio CD" msgstr "Ses CD'si" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "%s CD aygıtı açılamadı." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Ses özellikli CD sürücüsü bulunamadı." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Sürücü boş." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Desteklenmeyen disk türü." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Açılan CD sürücüsü başlatılamadı." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "İlk/son parça numarası alınamadı." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "%d parçası için başlangıç/bitiş LSN okunamıyor." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "CDDB bağlantısı oluşturulamadı." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "CDDB sunucusu sorgulanamadı" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "CDDB sunucusu sorgulanamadı: %s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "CDDB bilgisi okunamadı: %s" @@ -1063,6 +829,13 @@ msgid "Default song length:" msgstr "Varsayılan şarkı uzunluğu:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "saniye" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Yeniden örnekleme" @@ -1091,7 +864,7 @@ msgid "CoreAudio output" msgstr "Çekirdek Ses çıkışı" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1111,11 +884,11 @@ "Audacious için SDL Çıkış Eklentisine Dayalı\n" "Telif Hakkı 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Özel mod kullan" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "Bit mükemmel ses kullan (cihaz örnekleme oranını uyarla)" @@ -1212,20 +985,20 @@ msgid "Delete" msgstr "Sil" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "İptal" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Seçilen Dosyaları Sil" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Silme Yöntemi" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Hemen silmek yerine çöp kutusuna taşı" @@ -1252,7 +1025,7 @@ msgstr "Gecikme:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "ms" @@ -1268,11 +1041,11 @@ msgid "Echo" msgstr "Yankı" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "FFmpeg Eklentisi" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1332,7 +1105,7 @@ #: src/filewriter/filewriter.cc:385 msgid "Output file format:" -msgstr "Çıktı dosya biçimi:" +msgstr "Çıkış dosya biçimi:" #: src/filewriter/filewriter.cc:389 msgid "Save into original directory" @@ -1394,89 +1167,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "8 kbit/s" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "16 kbit/s" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "32 kbit/s" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "40 kbit/s" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "48 kbit/s" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "56 kbit/s" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "64 kbit/s" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "80 kbit/s" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "96 kbit/s" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "112 kbit/s" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "128 kbit/s" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "160 kbit/s" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "192 kbit/s" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "224 kbit/s" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "256 kbit/s" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "320 kbit/s" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Birleşik Stereo" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Stereo" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Mono" @@ -1588,7 +1361,7 @@ msgid "Quality (0-1):" msgstr "Kalite (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Genel" @@ -1597,11 +1370,11 @@ msgid "FLAC Decoder" msgstr "FLAC Çözücü" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "kayıpsız" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1633,7 +1406,7 @@ msgid "Invalid open mode" msgstr "Geçersiz açma modu" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1653,116 +1426,134 @@ "\n" "Lisans: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "Opengl İzgesel Çözümleyici" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "Sayı girin" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "Sayı Girin" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Başlık" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Sanatçı" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Yıl" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Albüm" -#: src/gtkui/columns.cc:40 -msgid "Album artist" -msgstr "Albüm sanatçısı" - #: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr "Albüm Sanatçısı" + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Parça" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Tür" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "Liste sırası" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "Sıra Konumu" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Uzunluk" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "Dosya yolu" - -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "Özel başlık" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "Dosya Yolu" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Dosya Adı" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Özel Başlık" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Bit oranı" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Yorum" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "Yayıncı" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "Kalatog Numarası" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Kullanılabilir sütunlar" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Görüntülenen sütunlar" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Arama Aracı" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Sola kenetle" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Sağa kenetle" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Üste kenetle" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Aşağıya kenetle" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Çıkar" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Devre Dışı" @@ -1802,8 +1593,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Oynat" @@ -1980,8 +1771,8 @@ msgid "Remove _Unavailable Files" msgstr "K_ullanılamayan Dosyaları Kaldır" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Yeni" @@ -1991,7 +1782,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "_Kaldır" @@ -2045,7 +1836,7 @@ #: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 msgid "Show Info Bar _Album Art" -msgstr "" +msgstr "Bilgi Çubuğu _Albüm Resmini Göster" #: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 msgid "Show Info Bar Vis_ualization" @@ -2122,7 +1913,7 @@ msgstr "Tümünü_Seç" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "Yeniden adlandı_r ..." @@ -2150,197 +1941,202 @@ msgid "Show column headers" msgstr "Sütun başlıklarını göster" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "Araç çubuğunda sembolik simgeler kullan" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Şarkı değişikliğinde kaydır" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "GTK Arayüzü" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Arabelleğe alınıyor ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Çal" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Duraklat" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Kitaplığı Ara" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Dosyaları Aç" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Dosyaları Ekle" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Önceki Parça" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Dur" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Sonraki Parça" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Canlı Kayıt" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Tekrar et" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Karıştır" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" -msgstr "" +msgstr "Menü" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "stereo" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d kanal" msgstr[1] "%d kanallar" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "%d kbit/s" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Tekli mod." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Çalma Listesi modu" -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Şarkıdan sonra duruyor." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Önceki parça" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Ara ver/Devam et" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Sonraki parça" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "İleri git" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "Geri git" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Sessiz" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Sesi aç" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Sesi kıs" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Dosyaya Atla" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Oynatıcı pencere(leri)si aç" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "On-Screen-Display Göster" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Tekrarlama yap" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Karıştırmayı aç" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Şimdiki çalmadan sonra durdurmayı aç" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Oynatma pencere(ler)sini yükselt" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(hiçbiri)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2350,11 +2146,11 @@ "\n" "Devam etmek istiyor musunuz?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Fare düğmeleri bağlaması" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2362,23 +2158,23 @@ "Bir metin alanının içindeki tuş kombinasyonuna basın.\n" "Fare düğmelerini de bağlayabilirsiniz." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Kısayollar:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Eylem:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Anahtar Bağlama:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Ekle" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Genel Kısayollar" @@ -2411,7 +2207,7 @@ #: src/jack/jack-ng.cc:54 msgid "JACK Output" -msgstr "Jack Çıkış baglantısı" +msgstr "JACK Çıkışı" #: src/jack/jack-ng.cc:126 msgid "Client name:" @@ -2419,7 +2215,7 @@ #: src/jack/jack-ng.cc:128 msgid "Automatically connect to output ports" -msgstr "Çıkış bağlantı noktalarına otomatik olarak bağlanma" +msgstr "Çıkış bağlantı noktalarına otomatik olarak bağlan" #: src/jack/jack-ng.cc:130 msgid "Filter ports (regex, use any port if blank):" @@ -2479,16 +2275,16 @@ "çalar. Uyumsuzluğu düzeltmek için lütfen Örnek Hızı Dönüştürücü efekti " "kullanın." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s Ayarlar" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Modül Yolu:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2499,25 +2295,25 @@ "Yeni yollar ekledikten sonra, yeni eklentileri taramak için Enter tuşuna " "basın." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Kullanılabilir Eklentiler:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "İzin ver" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Eklentilere İzin ver:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Ayarlar" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2575,101 +2371,105 @@ msgid "Wait before reconnecting:" msgstr "Yeniden bağlanmadan önce bekleyin:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "Şarkı sözleri" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Nowhere" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" -msgstr "" +msgstr "Sanatçı başlangıçta kısaltılmış, Başlık -- sonunda" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" -msgstr "" +msgstr "Kısaltılacak karakterler:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" -msgstr "" +msgstr "Bölünecek karakterler:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" -msgstr "" +msgstr "Karakterlerde daha fazla kısalt" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" -msgstr "" +msgstr "Genel" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" -msgstr "" +msgstr "Başlığı sanatçıya ve başlığa karakter olarak böl" + +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "Kaynaklar" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "Internet Kaynakları" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "Şuradan şarkı sözleri al:" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "Gömülü şarkı sözlerini kullan (Lyrics etiketinden)" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "İnternetten şarkı sözleri al:" + +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "Alınan şarkı sözlerini yerel önbellekte depola" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Yerel Depolama" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "Yerel depodan şarkı sözü dosyaları (.lrc) yükle" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "%s getirilemiyor" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "%s ayrıştırılamıyor" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Şarkı sözü ara ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Hata" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "Şarkı sözleri bulunamadı." -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "Başlık ve/veya sanatçı eksik." -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Yerel Olarak Kaydet" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Yenile" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "M3U Çalma Listeleri" @@ -2827,50 +2627,26 @@ msgstr "Audacious yeniden başlatıldığında bu ayarlar yürürlüğe girer." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Şarkıdan Sonra Durdur" #: src/moonstone/moonstone.cc:39 msgid "Moonstone" -msgstr "" +msgstr "Moonstone" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Varsayılanlara Dön" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Şimdi Çalınıyor" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Sayı Girin" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Albüm Sanatçısı" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Sıra Konumu" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Dosya Yolu" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Dosya Adı" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Özel Başlık" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Girdiler" @@ -2886,7 +2662,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Doğru uzunluk hesaplaması kullan (yavaş)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Surround" @@ -2976,7 +2752,7 @@ #: src/notify/notify.cc:110 msgid "Custom notification duration:" -msgstr "" +msgstr "Özel bildirim süresi:" #: src/notify/osd.cc:74 msgid "Show" @@ -2986,7 +2762,7 @@ msgid "OpenMPT (Module Player)" msgstr "OpenMPT (Modül Oynatıcı)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -2996,19 +2772,19 @@ "\n" "Yazan: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Stereo ayırma:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "İnterpolasyon:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Doğrusal" @@ -3020,11 +2796,23 @@ msgid "Windowed sinc" msgstr "Pencereli sinc" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "Opus Çözücü" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" +"Audacious için Opus Çözücü eklentisi\n" +"Telif Hakkı 2022 Thomas Lange" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4 Çıkışı" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "OSS3 Çıkışı" @@ -3066,18 +2854,40 @@ "#audacious için emeği insanlara teşekkür etmek isterim, özellikle Tony Vroon " "ve John Lindgren ve tabii ki önceki OSS eklentisinin yazarlarına." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "PipeWire Çıkışı" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" +"Audacious için PipeWire Çıktı Eklentisi\n" +"Telif Hakkı 2022 Thomas Lange\n" +"\n" +"Qmmp PipeWire Çıktı Eklentisi temelli\n" +"Telif Hakkı 2021 Ilya Kotov" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Çal" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Çalma Listesi Düzenleyici" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Sil" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "_Adlandır" @@ -3093,7 +2903,7 @@ msgid "OpenPSF Configuration" msgstr "OpenPSF Yapılandırması" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Dosyadan uzunluğu yoksay" @@ -3173,12 +2983,21 @@ "\n" "License: GPLv2+" msgstr "" +"Audacious için OpenGL İsgesel Çözümleyici\n" +"Telif Hakkı 2013 Christophe Budé, John Lindgren, ve Carlo Bramini\n" +"Telif Hakkı 2014, 2020 Ariadne Conill\n" +"\n" +"XMMS eklentisi temelli:\n" +"Telif Hakkı 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, " +"ve 4Front Technologies\n" +"\n" +"Lisans: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." -msgstr "" +msgstr "Metin alanı içinde bir tuş birleşimine bas." -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3193,6 +3012,19 @@ " Jonathan A. Davis ,\n" " Jeremy Tan " msgstr "" +"Küresel Kısayol Tuşu Eklentisi\n" +"Küresel tuş kombinasyonları veya çoklu ortam tuşları ile oynatıcıyı kontrol " +"edin.\n" +"\n" +"Telif Hakkı (C) 2020 i.Dark_Templar \n" +"Telif Hakkı (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Katkıda bulunanlar:\n" +"Telif Hakkı (C) 2006-2007 Vladimir Paskov \n" +"Telif Hakkı (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " #: src/qtui/menus.cc:109 msgid "_Open Folder ..." @@ -3214,13 +3046,17 @@ msgid "Audio Settings ..." msgstr "Ses Ayarları ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" -msgstr "" +msgstr "Q#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" -msgstr "" +msgstr "T#" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "C#" #: src/qtui/qtui.cc:40 msgid "Qt Interface" @@ -3248,7 +3084,7 @@ #: src/qtui/settings.cc:78 msgid "Use bold font for column headers" -msgstr "" +msgstr "Sütun başlıkları için kalın yazı tipi kullan" #: src/resample/resample.cc:43 msgid "Sample Rate Converter" @@ -3438,30 +3274,30 @@ msgid "Library" msgstr "Kitaplık" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d şarkı" msgstr[1] "%d şarkılar" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "bu türün" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "üzerinde" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "tarafından" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Gösterilecek sonuç sayısı:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Başlangıçta kitaplığı yeniden tara" @@ -3469,7 +3305,7 @@ msgid "Monitor library for changes" msgstr "Kütüphaneleri değişiklikler için izleyin" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3477,37 +3313,37 @@ "Müzik kitaplığınızı Audacious'a aktarmak için bir dizin seçin ve ardından " "\"yenileme\" simgesine tıklayın." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Lütfen bekleyin ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Klasör Seçin" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Kitaplığı ara" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "%d sonucun %di gösteriliyor" msgstr[1] "%d sonuçların %d'si gösteriliyor" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d sonuç" msgstr[1] "%d sonuçlar" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Çalma Listesi Oluştur" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "Ç_alma Listesine Ekle" @@ -3611,108 +3447,108 @@ msgid "Repeat point B set." msgstr "Tekrarlama noktası B ayarlı" -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Ön güçlendirme" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Audacious Ekolayzır" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Kaydetme açık" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Kaydetme kapalı" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Zıpla %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Ses: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Denge: %d%% sol" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Denge: merkez" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Denge: %d%% sağ" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Seçenekler Menüsü" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Devre dışı bırak 'Her Zaman Görünür' " -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Etkinleştir 'Her Zaman Görünür' " -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Dosya bilgilendirme kutusu" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Çift Boyut" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Görseller" @@ -3736,10 +3572,6 @@ msgid "Open URL ..." msgstr "URL Aç ..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Çal" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Çalma Listesi" @@ -3754,7 +3586,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Hizmetler" @@ -3771,7 +3603,7 @@ msgstr "Çıkış" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Şarkı Bilgisi ..." @@ -3791,7 +3623,7 @@ msgid "Clear A-B Repeat" msgstr "A-B Tekrarlama'yı Kaldır" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Şarkı'ya Geç" @@ -3884,20 +3716,20 @@ msgstr "Dosyaları Ekle ..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "Başlığa Göre" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "Dosya İsmine Göre" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "Dosya Yoluna Göre" @@ -3925,113 +3757,113 @@ msgid "Remove Selected" msgstr "Seçilenleri Kaldır" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Ara ve Seç" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Seçimi Ters Çevir" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Hiçbiri Seçilmedi" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Tümünü_Seç" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "Parça Numarasına Göre" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "Sanatçıya Göre" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "Albüme Göre" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "Albüm Sanatçısına Göre" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "Yayınlama Tarihine Göre" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "Türüne Göre" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "Uzunluğuna Göre" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "Özel Başlığa Göre" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "Yoruma Göre" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Rastgele Listele" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Ters Liste" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Seçileni Sırala" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Kısa Liste" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "İçeren Dizini Aç" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Kes" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Kopyala" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Yapıştır" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Sonunda Yapıştır" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "Kuyruğa Ekle/Kaldır" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d 'den %d 'si)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Audacious Çalma Listesi Düzenleyici" @@ -4047,167 +3879,219 @@ msgid "Add Folder ..." msgstr "Dizin Ekle ..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Etkin oynatma listesinde arama girişleri" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Bir veya daha fazla alanı doldurarak oynatma listesindeki girişleri seçin. " +"Alanlarda normal ifadeler sözdizimi, büyük / küçük harf duyarlı değil. " +"Normal ifadelerin nasıl çalıştığını bilmiyorsanız, aradığınız şeylerin basit " +"bir kısmını eklemeniz yeterlidir." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Başlık:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Albüm:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Sanatçı:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Dosya Adı:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Önceki aramaları temizle" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Eşleşen girişler için sıraya otomatik olarak geçiş yap" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Eşleşen girişlerle yeni bir oynatma listesi oluşturun" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Ara" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Çalıcı:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Arayüz yazı tipini seçiniz:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Çalma Listesi:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Çalma listesi yazıtipi seç:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Kabuk" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "Herhangi bir pencere odaklandığında aktif başlık çubuğunu görüntüle" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Yazıtipleri" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Bitmap yazı tiplerini kullan (yalnızca ASCII'yi destekler)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Şarkı başlığını kaydır" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Her iki yönde şarkı başlığını kaydır" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Analiz Et" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Kapsam" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Ses izi / VU metre" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Kapalı" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Normal" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Ateş" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Dikey çizgiler" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Çizgiler" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Çubuk" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "En yavaş" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Yavaş" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Orta" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Hızlı" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "En hızlı" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Noktalar" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Satır" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Katı" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Buz" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Pürüzsüz" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Boyama:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Tarz:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Düşme:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Tepe düşme:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Kapsam Tarzı:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Ses izi Boyama:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "VU Metre Tarzı:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Tür" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Görselleştirme türü:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Çözümleyici" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Tepeleri göster" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Görselleştirme" @@ -4219,59 +4103,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Arşivlenmemiş Winamp 2.x kabuğu" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Etkin oynatma listesinde arama girişleri" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Ara" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Bir veya daha fazla alanı doldurarak oynatma listesindeki girişleri seçin. " -"Alanlarda normal ifadeler sözdizimi, büyük / küçük harf duyarlı değil. " -"Normal ifadelerin nasıl çalıştığını bilmiyorsanız, aradığınız şeylerin basit " -"bir kısmını eklemeniz yeterlidir." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Başlık:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Albüm:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Sanatçı:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Dosya Adı:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Önceki aramaları temizle" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Eşleşen girişler için sıraya otomatik olarak geçiş yap" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Eşleşen girişlerle yeni bir oynatma listesi oluşturun" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Sndfile Eklentisi" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4750,19 +4586,32 @@ "Kullanmak için bir URL ekleyin: tone://frequency1;frequency2;frequency3;...\n" "örneğin tone://2000;2005 bir 2000 Hz ton ve bir 2005 Hz ton çalmak için" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Devam eden iletiler gizlendi.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Çalışıyor..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Bilgi" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "%s geçerli bir klasör görünmüyor." + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Ses yok etme" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4916,14 +4765,38 @@ "\n" "Bazı eklentiler Miles Egan tarafından kodlanmıştır." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2SF Çözücü" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Hz" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Hz" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Kosinüs" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Keskin" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "XSF Yapılandırması" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Varsayılan ses azalma süresi:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Ara değerleme kipi:" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "XML Paylaşılabilir çalma listesi (XSPF)" diff -Nru audacious-plugins-4.1/po/uk.po audacious-plugins-4.3.1/po/uk.po --- audacious-plugins-4.1/po/uk.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/uk.po 2023-04-29 20:17:32.000000000 +0000 @@ -28,9 +28,9 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: First Last , 2020\n" "Language-Team: Ukrainian (http://www.transifex.com/audacious/audacious/" "language/uk/)\n" "Language: uk\n" @@ -51,7 +51,7 @@ msgstr "AdPlug (програвач AdLib)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "послідовний" @@ -63,9 +63,11 @@ msgid "OPL Emulator:" msgstr "Емулятор OPL:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "Частота дискретизації" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Висота семплів:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -81,7 +83,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "Різне" @@ -89,262 +91,6 @@ msgid "Repeat song in endless loop" msgstr "Зациклити пісню у вічному повторенні" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "Будильник" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "Встановити будильника..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"Відтворення в заданий час.\n" -"\n" -"Автори джерельного втулку: Adam Feakin, Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"Час\n" -" Починати о: \n" -" Час початку відтворення.\n" -"\n" -" Закінчити через: \n" -" Тривалість відтворення.\n" -" (якщо діалогове вікно пробудження\n" -" не закрито примусово)\n" -"\n" -"\n" -"Дні\n" -" День:\n" -" День тижня, в який працюватиме будильник.\n" -"\n" -" Час:\n" -" Час спрацювання в обраний день.\n" -" Якщо вибрано «Як типово», будильник спрацює\n" -" в типовий час (вкладка «Час»).\n" -"\n" -"\n" -"Гучність\n" -" Наростання: \n" -" Період наростання гучності.\n" -"\n" -" На початку: \n" -" Гучність на початку наростання.\n" -"\n" -" По закінченню: \n" -" Гучність наприкінці наростання. Якщо часом\n" -" наростання є «0», то все відтворення йтиме\n" -" з цією гучністю.\n" -"\n" -"\n" -"Опції:\n" -" Виконувати команду:\n" -" Команда запускатиметься при спрацьовуванні.\n" -"\n" -" Список відтворення (необов’язково): \n" -" Відтворювати список відтворення (лише\n" -" з суфіксом .m3u). Якщо не вказано, то\n" -" відтворюватимуться останні відкриті\n" -" доріжки.\n" -" Можна ввести сюди URL mp3- чи ogg-потоку.\n" -" Поки що звантаження списків відтворення\n" -" за URL не підтримується.\n" -"\n" -" Нагадування:\n" -" Повідомлення буде показано при спрацьовуванні.\n" -" Введіть повідомлення в поле\n" -" й увімкніть Використовувати, якщо ви хочети його бачити." - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "Ваш текст для пробудження." - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "Нагадування на сьогодні..." - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "Повідомлення" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "Понеділок" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "Вівторок" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "Середа" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "Четвер" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "П’ятниця" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "Субота" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "Неділя" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "Час" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "Починати о (типово):" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr " г" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "Закінчити через:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "годин" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "хвилин" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "Налаштуйте дні тижня, в які працюватиме будильник." - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "День" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "Як типово" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "Дні" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "Наростання" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "секунд" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "Гучність" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "На початку:" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "По закінченню:" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "Як зараз" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "Виконувати команду" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "увімкнути" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "Список відтворення (необов’язково)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "Обрати список відтворення" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "Опції" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "Як це все налаштувати?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "Як налаштувати?" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "Обкладинка альбому" @@ -492,87 +238,83 @@ msgid "Synthesizer" msgstr "Синтезатор" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "Висота семплів:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - вибір файлу SoundFont" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "_Скасувати" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "_Відкрити" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "Назва файлу" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "Розмір (у байтах)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "Назва:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " Інформація MIDI " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "Формат:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "Тривалість (мс):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "Кількість стежок:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "змінна" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "Темп (BMP):" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "Часовий код MIDI:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " Коментарі й слова пісні в MIDI " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* цей MIDI-файл не має коментарів *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* цей MIDI-файл не має тексту пісні *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "_Закрити" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (недійсний UTF-8)" @@ -628,7 +370,7 @@ msgid "Concave Rectangle" msgstr "Увігнутий прямокутник" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "Тільки текст" @@ -664,94 +406,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Показує повідомлення при продовженні відтворення." -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "Розташування" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "Відносний горизонтальний зсув:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Відносний вертикальний зсув:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "Максимальна ширина повідомлення:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "Опції для кількох моніторів" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "Показувати на:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "всіх моніторах" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "моніторові %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "Часова витримка (мс)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "Показ:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "Поява:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "Зникнення:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "Шрифти" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "Шрифт %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "Тінь" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "Показати стиль" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "Кольори" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "Колір %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "Задіяти спусковий гачок" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "Подія" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "Композитний " -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -761,56 +503,56 @@ "Якщо він не запущений, увімкніть його, інакше екранне меню працюватиме " "неправильно." -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "Композитний менеджер не потрібен для фальшивої прозорості" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "Прозорість" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "Фальшива прозорість" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "Справжня прозорість (потребує композитні розширення X)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Композитне розширення вимкнене" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "OSD-повідомлення Audacious" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "Розташування" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "Анімація" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "Текст" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "Оздоблення" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "Спусковий гачок" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "Різне" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "Тест" @@ -826,11 +568,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Списки відтворення Audacious (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "Колір" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "Осцилоскоп" @@ -842,6 +600,10 @@ msgid "Presets:" msgstr "Пресети:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Як типово" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "Рівень змішування каналів:" @@ -854,7 +616,7 @@ msgid "Cut frequency:" msgstr "Частота зрізу:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "Стовпці (аналізатор спектру)" @@ -949,50 +711,50 @@ msgid "Audio CD" msgstr "Авдіодиск" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "Не вдалося відкрити CD-пристрій %s." -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "Не знайдено CD-пристрою з підтримкою авдіо." -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "Привід порожній." -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "Непідтримуваний тип диску." -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "Не вдалося задіяти відкритий CD-привід." -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "Не вдалося отримати номер першої/останньої стежки." -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "Не вдалося прочитати LSN початку/кінця стежки %d." -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "Не вдалося створити з'єднання з CDDB." -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "Не вдалося запитати сервер CDDB." -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "Не вдалося запитати сервер CDDB: %s." -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "Не вдалося прочитати дані з CDDB: %s" @@ -1065,6 +827,13 @@ msgid "Default song length:" msgstr "Типова тривалість пісні:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "секунд" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "Ресемплінг" @@ -1093,7 +862,7 @@ msgid "CoreAudio output" msgstr "Вивід CoreAudio" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1113,11 +882,11 @@ "Основано на вихідному втулкові SDL для Audacious\n" "Копірайт 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "Користати винятковий режим" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "" "Використовувати покращення звуку (адаптацiя частоти дискредитації пристрою )" @@ -1215,20 +984,20 @@ msgid "Delete" msgstr "Вилучити" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "Скасувати" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "Видалити обрані файли" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "Метод видалення" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "Перемістити до смітнику замість негайного видалення" @@ -1254,7 +1023,7 @@ msgstr "Затримка:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "мс" @@ -1270,11 +1039,11 @@ msgid "Echo" msgstr "Відлуння" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "Втулок FFmpeg" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1400,89 +1169,89 @@ msgid "32000 Hz" msgstr "32000 Гц" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Гц" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Гц" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 кб/с" +msgid "8 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 кб/с" +msgid "16 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 кб/с" +msgid "32 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 кб/с" +msgid "40 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 кб/с" +msgid "48 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 кб/с" +msgid "56 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 кб/с" +msgid "64 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 кб/с" +msgid "80 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 кб/с" +msgid "96 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 кб/с" +msgid "112 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 кб/с" +msgid "128 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 кб/с" +msgid "160 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 кб/с" +msgid "192 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 кб/с" +msgid "224 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 кб/с" +msgid "256 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 кб/с" +msgid "320 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "Об’єднане стерео" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "Стерео" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "Моно" @@ -1594,7 +1363,7 @@ msgid "Quality (0-1):" msgstr "Якість (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "Загальне" @@ -1603,11 +1372,11 @@ msgid "FLAC Decoder" msgstr "Декодер FLAC" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "без втрат" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1639,7 +1408,7 @@ msgid "Invalid open mode" msgstr "Недійсний режим відкривання" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1659,116 +1428,134 @@ "\n" "Ліцензія: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL спектровий аналізатор" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "Списковий номер" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "Назва" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "Виконавець" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "Рік" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "Альбом" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "Виконавець альбому" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "Стежка" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "Напрямок" -#: src/gtkui/columns.cc:43 -msgid "Queue position" -msgstr "Позиція у черзі" - #: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "Місце у черзі" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "Тривалість" -#: src/gtkui/columns.cc:45 -msgid "File path" -msgstr "Шлях до файлу" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "Шлях файлу" -#: src/gtkui/columns.cc:47 -msgid "Custom title" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" msgstr "Назва файлу" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Користувацько-налаштовна назва" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "Бітова швидкість" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "Коментар" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "Доступні колонки" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "Відображені колонки" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "Пошуковий інструмент" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "Прикріпити зліва" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "Прикріпити справа" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "Прикріпити вгорі" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "Прикріпити долі" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "Відкріпити" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "Вимкнути" @@ -1808,8 +1595,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "_Відтворити" @@ -1986,8 +1773,8 @@ msgid "Remove _Unavailable Files" msgstr "Прибрати _недоступні файли" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "_Новий" @@ -1997,7 +1784,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "Усуну_ти" @@ -2128,7 +1915,7 @@ msgstr "Виді_лити все" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "_Змінити назву ..." @@ -2156,104 +1943,109 @@ msgid "Show column headers" msgstr "Показувати заголовки колонок" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "Прокручувати плейлист при зміні доріжки" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "Інтерфейс GTK" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "Буферую ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "Відтворити" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "Призупинити відтворення" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "Шукати бібліотеку" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "Відкрити файли" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "Додати файли" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "Попередня cтежка" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "Зупинити" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "Наступна стежка" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "Записування потоку" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "Повторювати" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "Випадково" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "моно" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "стерео" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" @@ -2262,93 +2054,93 @@ msgstr[2] "%d каналів" msgstr[3] "%d каналів" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d кГц" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d кб/с" +msgid "%d kbit/s" +msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "Одностежковий режим." -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "Режим списку відтворення." -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "Зупинити після цієї стежки." -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "Попередня стежка" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "Призупинити/продовжити" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "Наступна стежка" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "Крок уперед" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "Крок назад" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "Вимкнути звук" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "Збільшити гучність" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "Зменшити гучність" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "Перейти до файлу" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "Перемкнути стан вікон програвача" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "Показати OSD-повідомлення" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "Перемкнути повтор" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "Перемкнути тасування" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "Перемкнути зупинку після поточної" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "Підняти вікна програвача" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(немає)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2358,11 +2150,11 @@ "\n" "Продовжувати попри це?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "Пов’язування кнопок миші" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2371,23 +2163,23 @@ "поля.\n" "Можна також прив’язувати кнопки миші." -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "Гарячі клавіші:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "Дія:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "Прив’язка до клавіш:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "_Додати" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "Гарячі клавіші" @@ -2485,16 +2277,16 @@ "Audacious має %d Гц. Будь ласка, використайте ефект конвертору частоти " "дискретизації для усунення невідповідності." -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "Налаштування %s" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "Шляхи до модулів:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2504,25 +2296,25 @@ "Пошук відбувається за вказаними шляхами та змінною LADSPA_PATH.\n" "Вказавши шляхи, натисніть Enter для пошуку втулків." -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "Наявні втулки:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "Увімкнути" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "Ввімкнені втулки:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "Налаштування" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2579,101 +2371,105 @@ msgid "Wait before reconnecting:" msgstr "Чекати перед перез’єднанням:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "Тексти пісень" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Ніде" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "Ресурси інтернета" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "Підвантажити тексти пісень з:" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "Зберігати завантажені тексти пісень у локальному кешеві" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "Локальний пам'ять" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "Завантажити файли текстів (.lrc) пісень з локальної пам'яті" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "Не вдалося отримати %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "Не вдалося проаналізувати %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "Шукаю текст пісні..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "Помилка" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "Не вдалося знайти тексти пісень" -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "Відсутня назва файлу та/або ім'я співака" -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "Зберегти локально" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "Оновити" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "M3U-списки відтворення" @@ -2834,7 +2630,7 @@ msgstr "Налаштування вступлять у дію після перезапуску." #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "Зупинити після цієї стежки" @@ -2843,41 +2639,17 @@ msgid "Moonstone" msgstr "" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "Скинути до всталених налаштувань" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "Зараз відтворюється" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "Списковий номер" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "Виконавець альбому" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "Місце у черзі" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "Шлях файлу" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "Назва файлу" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "Користувацько-налаштовна назва" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "Елементи" @@ -2893,7 +2665,7 @@ msgid "Use accurate length calculation (slow)" msgstr "Використовувати точне підрахування часу (повільно)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "Об’ємний звук" @@ -2994,7 +2766,7 @@ msgid "OpenMPT (Module Player)" msgstr "OpenMPT (Module Player)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -3004,19 +2776,19 @@ "\n" "Створив: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "Стереорозділення:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "Інтерполяція:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "Лінійна" @@ -3028,11 +2800,21 @@ msgid "Windowed sinc" msgstr "Вікнова sinc" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4-вивід" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "Вихід OSS3" @@ -3075,18 +2857,35 @@ "Дякуємо #audacious, особливо Тоні Врунові, Джонові Ліндґрену й, звісно, " "авторам попереднього втулку OSS." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Відтворення" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "Керування списками відтворення" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "_Усунути" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "Змінити_назву" @@ -3102,7 +2901,7 @@ msgid "OpenPSF Configuration" msgstr "Конфігурація OpenPSF" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "Іґнорувати час програвання з файлу" @@ -3184,11 +2983,11 @@ "License: GPLv2+" msgstr "" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "" -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3224,14 +3023,18 @@ msgid "Audio Settings ..." msgstr "Звукові налаштування ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Вигляд Qt" @@ -3451,7 +3254,7 @@ msgid "Library" msgstr "Бібліотека" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" @@ -3460,23 +3263,23 @@ msgstr[2] "%dпісень" msgstr[3] "%dпісень" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "За напрямком" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "on" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "by" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "Кількість результатів для показу:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "Пересканувати каталог при запускові" @@ -3484,7 +3287,7 @@ msgid "Monitor library for changes" msgstr "Спостерігати за бібліотекою на наявність змін" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." @@ -3492,19 +3295,19 @@ "Аби імпортувати свою музичну бібліотеку до Audacious, виберіть теку й " "натисніть на значок оновлення." -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "Зачекайте ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "Вибрати теку" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "Шукати в бібліотеці" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" @@ -3513,7 +3316,7 @@ msgstr[2] "Показано результатів %dз%d" msgstr[3] "Показано результатів %dз%d" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" @@ -3522,11 +3325,11 @@ msgstr[2] "%dрезультатів" msgstr[3] "%dрезультатів" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "_Створити список відтворення" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "_Додати до списку відтворення" @@ -3630,108 +3433,108 @@ msgid "Repeat point B set." msgstr "Точку повтору B встановлено." -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "Попередній підсилювач" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Гц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Гц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Гц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Гц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Гц" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 кГц" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 кГц" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 кГц" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 кГц" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 кГц" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Еквалайзер Audacious" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "Увімкнути записування" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "Вимкнути записування" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Перехід до %d:%-2.2d / %d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "Гучність: %d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "Баланс: %d%% вліво" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "Баланс: центр" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "Баланс: %d%% вправо" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "Меню опцій" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "Вимкнути відображення над іншими вікнами" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "Відображати над іншими вікнами" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "Редактор інформації про доріжку" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "Збільшити вдвічі" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "Візерунки" @@ -3755,10 +3558,6 @@ msgid "Open URL ..." msgstr "Відкрити адресу ..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "Відтворення" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "Список відтворення" @@ -3773,7 +3572,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "Служби" @@ -3790,7 +3589,7 @@ msgstr "Вихід" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "Інформація про стежку ..." @@ -3810,7 +3609,7 @@ msgid "Clear A-B Repeat" msgstr "Скинути A-B повтор" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "Перейти до стежки ..." @@ -3903,20 +3702,20 @@ msgstr "Додати файли ..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "За назвою" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "За назвою файлу" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "За шляхом до файлу" @@ -3944,113 +3743,113 @@ msgid "Remove Selected" msgstr "Вилучити виділені" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "Пошук і вибрання" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "Інвертувати вибрання" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "Зняти вибрання" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "Виділити все" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "За номером стежки" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "За виконавцем" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "За альбомом" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "За виконавцем альбому" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "За датою видання" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "За напрямком" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "За часом" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "За налаштовною назвою" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "За коментарями" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "Порушити порядок" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "Обернути список" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "Сортувати виділене" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "Сортувати список..." -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "За текою вмісту" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "Вирізати" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "Копіювати" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "Вставити" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "Унести у кінці" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "В чергу/З черги" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d із %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Редактор списків відтворення Audacious" @@ -4066,167 +3865,218 @@ msgid "Add Folder ..." msgstr "Додати теку ..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "Пошук у чинному спискові відтворення" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Аби шукати стежки в спискові відтворення, заповніть одне чи більше полів. " +"Можна використовувати літери, цифри, інші знаки, регулярні вирази. Поля " +"нечутливі до регістру." + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "Назва:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "Альбом:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "Виконавець:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "Назва файлу:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "Зняти попереднє вибрання перед пошуком" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "Автоматично перемикати стан черги знайдених елементів" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "Виділити знайдене в новий список відтворення" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "Пошук" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "Програвач:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "Шрифт основного вікна програвача" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "Плейлист:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "Шрифт списку відтворення:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "Жупан" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "Шрифти" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "Використовувати растрові шрифти (підтримується тільки ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "Прокручувати назву пісні" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "Прокручувати назву пісні в обох напрямках" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "Аналізатор" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "Осцилограф" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "Спектрограма / VU-вимірювач" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "Вимкнено" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "Звичайний" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "Вогонь" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "Вертикальні лінії" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "Лінії" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "Стовпчики" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "Дуже повільне" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "Повільне" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "Помірне" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "Швидке" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "Найшвидше" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "Точки" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "Лінія" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "Суцільна" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "Лід" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "Плавний" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "Забарвлення:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "Стиль:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "Спад" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "Спадання часового піку" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "Стиль осцилограми:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "Забарвлення спектрограми:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "Стиль VU-вимірювача:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "Тип" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "Тип візуалізації:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "Аналізатор" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "Показувати піки часу" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "Візуалізація" @@ -4238,58 +4088,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "Розархівлений жупан Winamp 2.x" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "Пошук у чинному спискові відтворення" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "Пошук" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"Аби шукати стежки в спискові відтворення, заповніть одне чи більше полів. " -"Можна використовувати літери, цифри, інші знаки, регулярні вирази. Поля " -"нечутливі до регістру." - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "Назва:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "Альбом:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "Виконавець:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "Назва файлу:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "Зняти попереднє вибрання перед пошуком" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "Автоматично перемикати стан черги знайдених елементів" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "Виділити знайдене в новий список відтворення" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Втулок Sndfile" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4775,19 +4578,32 @@ "Наприклад, tone://2000;2005 — послідовне відтворення тонів з частотою 2000 " "Гц і 2005 Гц." -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Наступні повідомлення були приховані.)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "Опрацювання ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "Інформація" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "Видалення голосу" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4941,14 +4757,38 @@ "\n" "Деякий код написав Майлс Еґен." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "Декодер 2SF" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "Конфіґурація XSF" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "XML-списки відтворення (XSPF)" diff -Nru audacious-plugins-4.1/po/uz.po audacious-plugins-4.3.1/po/uz.po --- audacious-plugins-4.1/po/uz.po 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/po/uz.po 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,4711 @@ +# Uzbek translation for Audacious Plugins +# Copyright (C) Audacious translators +# This file is distributed under the same license as the Audacious Plugins package. +# +# Translators: +# Umidjon Almasov , 2022 +# Umidjon Almasov , 2013 +# Umidjon Almasov , 2022 +# 9ce67d7e9a84f219fd63ae516bbe9dee_5a4e663 , 2022 +msgid "" +msgstr "" +"Project-Id-Version: Audacious Plugins\n" +"Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: Umidjon Almasov , 2022\n" +"Language-Team: Uzbek (http://www.transifex.com/audacious/audacious/language/" +"uz/)\n" +"Language: uz\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/aac/aac.cc:19 +msgid "AAC (Raw) Decoder" +msgstr "AAC (Raw) dekoder" + +#: src/adplug/adplug-xmms.cc:70 +msgid "AdPlug (AdLib Player)" +msgstr "AdPlug (AdLib pleyer)" + +#: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 +msgid "sequenced" +msgstr "ketma-ket" + +#: src/adplug/adplug-xmms.cc:349 src/sid/xs_config.cc:61 +msgid "Output" +msgstr "Chiqarish" + +#: src/adplug/adplug-xmms.cc:350 +msgid "OPL Emulator:" +msgstr "OPL emulyatori:" + +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "Namuna tezligi:" + +#: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 +#: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 +#: src/modplug/plugin_main.cc:77 src/resample/resample.cc:201 +#: src/resample/resample.cc:207 src/resample/resample.cc:211 +#: src/resample/resample.cc:215 src/resample/resample.cc:219 +#: src/resample/resample.cc:223 src/resample/resample.cc:227 +#: src/resample/resample.cc:231 src/resample/resample.cc:235 +#: src/resample/resample.cc:239 src/resample/resample.cc:243 +#: src/sid/xs_config.cc:67 src/soxr/sox-resampler.cc:205 +msgid "Hz" +msgstr "Gts" + +#: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 +#: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 +msgid "Miscellaneous" +msgstr "Turli xil" + +#: src/adplug/adplug-xmms.cc:356 +msgid "Repeat song in endless loop" +msgstr "Qo'shiqni cheksiz siklda takrorlash" + +#: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 +msgid "Album Art" +msgstr "Albom qoplamasi" + +#: src/alsa/alsa.h:64 +msgid "ALSA Output" +msgstr "ALSA chiqishi" + +#: src/alsa/config.cc:28 +msgid "" +"ALSA Output Plugin for Audacious\n" +"Copyright 2009-2012 John Lindgren\n" +"\n" +"My thanks to William Pitcock, author of the ALSA Output Plugin NG, whose " +"code served as a reference when the ALSA manual was not enough." +msgstr "" +"Audacious uchun ALSA chiqish plagini\n" +"Mualliflik huquqi 2009-2012 Jon Lindgren\n" +"\n" +"ALSA qoʻllanmasi yetarli boʻlmaganda kodi maʼlumotnoma boʻlib xizmat qilgan " +"ALSA Output Plugin NG muallifi Uilyam Pitkokka rahmat." + +#: src/alsa/config.cc:61 +msgid "(no description)" +msgstr "(tavsif yo'q)" + +#: src/alsa/config.cc:166 +msgid "Default PCM device" +msgstr "Standart PCM qurilmasi" + +#: src/alsa/config.cc:188 +msgid "Default mixer device" +msgstr "Standart mikser qurilmasi" + +#: src/alsa/config.cc:296 +msgid "PCM device:" +msgstr "PCM qurilmasi:" + +#: src/alsa/config.cc:299 +msgid "Mixer device:" +msgstr "Mikser qurilmasi:" + +#: src/alsa/config.cc:302 +msgid "Mixer element:" +msgstr "Mikser elementi:" + +#: src/amidiplug/amidi-plug.cc:42 +msgid "AMIDI-Plug (MIDI Player)" +msgstr "AMIDI-Plug (MIDI pleyer)" + +#: src/amidiplug/amidi-plug.cc:445 +msgid "" +"AMIDI-Plug\n" +"modular MIDI music player\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"written by Giacomo Lozito\n" +"\n" +"\n" +"special thanks to...\n" +"\n" +"Clemens Ladisch and Jaroslav Kysela\n" +"for their cool programs aplaymidi and amixer; those\n" +"were really useful, along with alsa-lib docs, in order\n" +"to learn more about the ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"for the nice midi keyboard logo\n" +"\n" +"Tony Vroon\n" +"for the good help with alpha testing" +msgstr "" +"AMIDI-Plug\n" +"modulli MIDI musiqa pleyeri\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"Giakomo Lozito tomonidan yozilgan\n" +"\n" +"\n" +"alohida rahmat...\n" +"\n" +"Klemens Ladish va Yaroslav Kisela\n" +"aplaymidi va amikser ajoyib dasturlari uchun; bular\n" +"alsa-lib hujjatlari bilan bir qatorda haqiqatdan ham foydali edi\n" +"ALSA API haqida ko'proq ma'lumot olish uchun\n" +"\n" +"Alfredo Spadafina\n" +"Chiroyli midi klaviatura logotipi uchun\n" +"\n" +"Toni Vroon\n" +"alfa sinovida yaxshi yordam uchun" + +#: src/amidiplug/i_configure.cc:94 +msgid "Override default gain:" +msgstr "Standart kuchayishni o'zgartirish" + +#: src/amidiplug/i_configure.cc:102 +msgid "Override default polyphony:" +msgstr "Standart polifoniyani o'zgartirish:" + +#: src/amidiplug/i_configure.cc:110 +msgid "Override default reverb:" +msgstr "Standart reverberatsiyani o'zgartirish:" + +#: src/amidiplug/i_configure.cc:112 src/amidiplug/i_configure.cc:120 +msgid "On" +msgstr "Yoqilgan" + +#: src/amidiplug/i_configure.cc:118 +msgid "Override default chorus:" +msgstr "Standart xorni o'zgartirish:" + +#: src/amidiplug/i_configure.cc:128 src/console/plugin.cc:29 +msgid "Playback" +msgstr "Ijro" + +#: src/amidiplug/i_configure.cc:129 +msgid "Transpose:" +msgstr "Ko'chirish:" + +#: src/amidiplug/i_configure.cc:131 src/speedpitch/speed-pitch.cc:257 +msgid "semitones" +msgstr "yarim tonlar" + +#: src/amidiplug/i_configure.cc:132 +msgid "Drum shift:" +msgstr "Baraban almashinuvi:" + +#: src/amidiplug/i_configure.cc:134 +msgid "note numbers" +msgstr "raqamlarga e'tibor berish" + +#: src/amidiplug/i_configure.cc:135 +msgid "Skip leading silence" +msgstr "Oldingi jimlikni o'tkazib yuborish" + +#: src/amidiplug/i_configure.cc:137 +msgid "Skip trailing silence" +msgstr "Keyingi jimlikni o'tkazib yuborish" + +#: src/amidiplug/i_configure.cc:141 +msgid "SoundFont" +msgstr "SoundFont" + +#: src/amidiplug/i_configure.cc:148 +msgid "Synthesizer" +msgstr "Sintezator" + +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 +msgid "AMIDI-Plug - select SoundFont file" +msgstr "AMIDI-Plug - SoundFont faylini tanlang" + +#: src/amidiplug/i_configure-fluidsynth.cc:61 +msgid "_Cancel" +msgstr "_Bekor qilish" + +#: src/amidiplug/i_configure-fluidsynth.cc:62 +msgid "_Open" +msgstr "_Ochish" + +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 +msgid "File name" +msgstr "Fayl nomi" + +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 +msgid "Size (bytes)" +msgstr "Hajmi (bayt)" + +#: src/amidiplug/i_fileinfo.cc:184 +msgid "Name:" +msgstr "Nomi:" + +#: src/amidiplug/i_fileinfo.cc:202 +msgid " MIDI Info " +msgstr "MIDI haqida ma'lumot" + +#: src/amidiplug/i_fileinfo.cc:216 +msgid "Format:" +msgstr "Format:" + +#: src/amidiplug/i_fileinfo.cc:219 +msgid "Length (msec):" +msgstr "Uzunlik (msek):" + +#: src/amidiplug/i_fileinfo.cc:222 +msgid "No. of Tracks:" +msgstr "Qo'shiqlar raqami:" + +#: src/amidiplug/i_fileinfo.cc:228 +msgid "variable" +msgstr "o'zgaruvchan" + +#: src/amidiplug/i_fileinfo.cc:230 +msgid "BPM:" +msgstr "BPM:" + +#: src/amidiplug/i_fileinfo.cc:238 +msgid "BPM (wavg):" +msgstr "BPM (wavg):" + +#: src/amidiplug/i_fileinfo.cc:241 +msgid "Time Div:" +msgstr "Vaqt taqsimoti:" + +#: src/amidiplug/i_fileinfo.cc:252 +msgid " MIDI Comments and Lyrics " +msgstr "MIDI izohlari va matni" + +#: src/amidiplug/i_fileinfo.cc:299 +msgid "* no comments available in this MIDI file *" +msgstr "* ushbu MIDI faylida hech qanday izoh mavjud emas *" + +#: src/amidiplug/i_fileinfo.cc:311 +msgid "* no lyrics available in this MIDI file *" +msgstr "* ushbu MIDI faylda hech qanday matn mavjud emas *" + +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 +msgid "_Close" +msgstr "_Yopish" + +#: src/amidiplug/i_fileinfo.cc:346 +msgid " (invalid UTF-8)" +msgstr "(yaroqsiz UTF-8)" + +#: src/ampache/ampache.cc:33 +msgid "Ampache Browser" +msgstr "Ampache brauzeri" + +#: src/ampache/ampache.cc:46 +msgid "" +"Ampache Browser for Audacious\n" +"http://ampache-browser.org/\n" +"\n" +"Copyright (C) Róbert Čerňanský and John Lindgren\n" +"License: GNU GPLv3" +msgstr "" +"Audacious uchun Ampache brauzeri\n" +"http://ampache-browser.org/\n" +"\n" +"Mualliflik huquqi (C) Róbert Čerňanski va Jon Lindgren\n" +"Litsenziya: GNU GPLv3" + +#: src/aosd/aosd.cc:31 +msgid "" +"Audacious OSD\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"\n" +"Written by Giacomo Lozito \n" +"\n" +"Based in part on Evan Martin's Ghosd library:\n" +"http://neugierig.org/software/ghosd/" +msgstr "" +"Audacious OSD\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"\n" +"Giakomo Lozito tomonidan yozilgan \n" +"\n" +"Qisman Evan Martinning Ghosd kutubxonasiga asoslangan:\n" +"http://neugierig.org/software/ghosd/" + +#: src/aosd/aosd.h:37 +msgid "AOSD (On-Screen Display)" +msgstr "AOSD (ekrandagi displey)" + +#: src/aosd/aosd_style.cc:54 +msgid "Rectangle" +msgstr "To'rtburchak" + +#: src/aosd/aosd_style.cc:59 +msgid "Rounded Rectangle" +msgstr "Dumaloq to'rtburchak" + +#: src/aosd/aosd_style.cc:64 +msgid "Concave Rectangle" +msgstr "Botiq to'rtburchak" + +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 +msgid "None" +msgstr "Yo'q" + +#: src/aosd/aosd_trigger.cc:49 +msgid "Playback Start" +msgstr "Ijroni boshlash" + +#: src/aosd/aosd_trigger.cc:50 +msgid "Triggers OSD when a playlist entry is played." +msgstr "Pleylist yozuvi ijro etilganda OSD ni ishga tushiradi." + +#: src/aosd/aosd_trigger.cc:55 +msgid "Title Change" +msgstr "Sarlavhani o'zgartirish" + +#: src/aosd/aosd_trigger.cc:56 +msgid "Triggers OSD when the song title changes (for internet streams)." +msgstr "" +"Qo'shiq nomi o'zgarganda OSD ni ishga tushiradi (internet oqimlari uchun)." + +#: src/aosd/aosd_trigger.cc:61 +msgid "Pause On" +msgstr "Pauza yoqilgan" + +#: src/aosd/aosd_trigger.cc:62 +msgid "Triggers OSD when playback is paused." +msgstr "Ijro toʻxtatilganda OSD ni ishga tushiradi." + +#: src/aosd/aosd_trigger.cc:67 +msgid "Pause Off" +msgstr "Pauza oʻchirilgan" + +#: src/aosd/aosd_trigger.cc:68 +msgid "Triggers OSD when playback is unpaused." +msgstr "Ijro davom etganda OSD ni ishga tushiradi." + +#: src/aosd/aosd_ui.cc:204 +msgid "Placement" +msgstr "Joylashuv" + +#: src/aosd/aosd_ui.cc:241 +msgid "Relative X offset:" +msgstr "Nisbiy X ofset:" + +#: src/aosd/aosd_ui.cc:245 +msgid "Relative Y offset:" +msgstr "Nisbiy Y ofset:" + +#: src/aosd/aosd_ui.cc:249 +msgid "Max OSD width:" +msgstr "Maksimal OSD kengligi:" + +#: src/aosd/aosd_ui.cc:281 +msgid "Multi-Monitor options" +msgstr "Ko'p monitorli variantlar" + +#: src/aosd/aosd_ui.cc:285 +msgid "Display OSD using:" +msgstr "OSD ni ko'rsatish:" + +#: src/aosd/aosd_ui.cc:287 +msgid "all monitors" +msgstr "hamma monitorlarda" + +#: src/aosd/aosd_ui.cc:290 +#, c-format +msgid "monitor %i" +msgstr "%i monitorda" + +#: src/aosd/aosd_ui.cc:342 +msgid "Timing (ms)" +msgstr "Vaqt (ms)" + +#: src/aosd/aosd_ui.cc:347 +msgid "Display:" +msgstr "Displey:" + +#: src/aosd/aosd_ui.cc:352 +msgid "Fade in:" +msgstr "Paydo bo'lish" + +#: src/aosd/aosd_ui.cc:357 +msgid "Fade out:" +msgstr "Yo'qolish" + +#: src/aosd/aosd_ui.cc:442 +msgid "Fonts" +msgstr "Shriftlar" + +#: src/aosd/aosd_ui.cc:449 +#, c-format +msgid "Font %i:" +msgstr "Shrift %i:" + +#: src/aosd/aosd_ui.cc:466 +msgid "Shadow" +msgstr "Soya" + +#: src/aosd/aosd_ui.cc:589 +msgid "Render Style" +msgstr "Render uslubi" + +#: src/aosd/aosd_ui.cc:605 +msgid "Colors" +msgstr "Ranglar" + +#: src/aosd/aosd_ui.cc:616 +#, c-format +msgid "Color %i:" +msgstr "Rang %i:" + +#: src/aosd/aosd_ui.cc:714 +msgid "Enable trigger" +msgstr "Triggerni yoqish" + +#: src/aosd/aosd_ui.cc:741 +msgid "Event" +msgstr "Voqea" + +#: src/aosd/aosd_ui.cc:768 +msgid "Composite manager detected" +msgstr "Kompozit boshqaruvchi aniqlandi" + +#: src/aosd/aosd_ui.cc:775 +msgid "" +"Composite manager not detected;\n" +"unless you know that you have one running, please activate a composite " +"manager otherwise the OSD won't work properly" +msgstr "" +"Kompozit boshqaruvchi aniqlanmadi;\n" +"Agar siz uni ishlayotganini bilmangiz, kompozit boshqaruvchini " +"faollashtiring, aks holda OSD to‘g‘ri ishlamaydi." + +#: src/aosd/aosd_ui.cc:783 +msgid "Composite manager not required for fake transparency" +msgstr "Soxta shaffoflik uchun kompozit menejer talab qilinmaydi" + +#: src/aosd/aosd_ui.cc:820 +msgid "Transparency" +msgstr "Shaffoflik" + +#: src/aosd/aosd_ui.cc:826 +msgid "Fake transparency" +msgstr "Soxta shaffoflik" + +#: src/aosd/aosd_ui.cc:828 +msgid "Real transparency (requires X Composite Ext.)" +msgstr "Haqiqiy shaffoflik (X Composite Ext. talab qilinadi)" + +#: src/aosd/aosd_ui.cc:875 +msgid "Composite extension not loaded" +msgstr "Kompozit kengaytma yuklanmagan" + +#: src/aosd/aosd_ui.cc:892 +#, c-format +msgid "Audacious OSD" +msgstr "Audacious OSD" + +#: src/aosd/aosd_ui.cc:955 +msgid "Position" +msgstr "Joy" + +#: src/aosd/aosd_ui.cc:960 +msgid "Animation" +msgstr "Animatsiya" + +#: src/aosd/aosd_ui.cc:965 +msgid "Text" +msgstr "Matn" + +#: src/aosd/aosd_ui.cc:970 +msgid "Decoration" +msgstr "Bezatish" + +#: src/aosd/aosd_ui.cc:975 +msgid "Trigger" +msgstr "Trigger" + +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 +msgid "Misc" +msgstr "Boshqa" + +#: src/aosd/aosd_ui.cc:989 +msgid "Test" +msgstr "Sinov" + +#: src/asx3/asx3.cc:35 +msgid "ASXv3 Playlists" +msgstr "ASXv3 pleylistlari" + +#: src/asx/asx.cc:33 +msgid "ASXv1/ASXv2 Playlists" +msgstr "ASXv1/ASXv2 pleylistlari" + +#: src/audpl/audpl.cc:33 +msgid "Audacious Playlists (audpl)" +msgstr "Audacious pleylistlari (audpl)" + +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 +msgid "Color" +msgstr "Rang" + +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 +msgid "Blur Scope" +msgstr "Blur Scope" + +#: src/bs2b/plugin.cc:38 +msgid "Bauer Stereophonic-to-Binaural (BS2B)" +msgstr "Bauer Stereophonic-to-Binaural (BS2B)" + +#: src/bs2b/plugin.cc:129 +msgid "Presets:" +msgstr "Sozlamalar:" + +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "Standart" + +#: src/bs2b/plugin.cc:136 +msgid "Feed level:" +msgstr "Ta'minot darajasi:" + +#: src/bs2b/plugin.cc:138 +msgid "x1/10 dB" +msgstr "x1/10 dB" + +#: src/bs2b/plugin.cc:139 +msgid "Cut frequency:" +msgstr "Kesish chastotasi:" + +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 +msgid "Spectrum Analyzer" +msgstr "Spektr analizatori" + +#: src/cdaudio/cdaudio-ng.cc:71 +msgid "Audio CD Plugin" +msgstr "Audio CD plagini" + +#: src/cdaudio/cdaudio-ng.cc:118 +msgid "" +"Copyright (C) 2007-2012 Calin Crisan and others.\n" +"\n" +"Many thanks to libcdio developers \n" +"and to libcddb developers .\n" +"\n" +"Also thank you to Tony Vroon for mentoring and guiding me.\n" +"\n" +"This was a Google Summer of Code 2007 project." +msgstr "" +"Mualliflik huquqi (C) 2007-2012 Calin Crisan va " +"boshqalar.\n" +"\n" +"Libcdio dasturchilariga katta rahmat \n" +"va libcddb dasturchilariga .\n" +"\n" +"Toni Vroonga ham menga maslahat bergani va yo'l-yo'riq ko'rsatgani uchun " +"rahmat.\n" +"\n" +"Bu Google Summer of Code 2007 loyihasi edi." + +#: src/cdaudio/cdaudio-ng.cc:134 +msgid "Device" +msgstr "Qurilma" + +#: src/cdaudio/cdaudio-ng.cc:135 +msgid "Read speed:" +msgstr "O'qish tezligi:" + +#: src/cdaudio/cdaudio-ng.cc:138 +msgid "Override device:" +msgstr "Qurilmani o'zgartirish" + +#: src/cdaudio/cdaudio-ng.cc:140 +msgid "Metadata" +msgstr "Metamaʼlumot" + +#: src/cdaudio/cdaudio-ng.cc:141 +msgid "Use CD-Text" +msgstr "CD-Text dan foydalanish" + +#: src/cdaudio/cdaudio-ng.cc:143 +msgid "Use CDDB" +msgstr "CDDB dan foydalanish" + +#: src/cdaudio/cdaudio-ng.cc:145 +msgid "Use HTTP instead of CDDBP" +msgstr "CDDBP o'rniga HTTP dan foydalanish" + +#: src/cdaudio/cdaudio-ng.cc:148 +msgid "Server:" +msgstr "Server:" + +#: src/cdaudio/cdaudio-ng.cc:152 +msgid "Path:" +msgstr "Yoʻl:" + +#: src/cdaudio/cdaudio-ng.cc:156 +msgid "Port:" +msgstr "Port:" + +#: src/cdaudio/cdaudio-ng.cc:220 +msgid "Failed to initialize cdio subsystem." +msgstr "cdio quyi tizimini ishga tushirib boʻlmadi." + +#: src/cdaudio/cdaudio-ng.cc:250 +#, c-format +msgid "Invalid URI %s." +msgstr "Yaroqsiz URI %s." + +#: src/cdaudio/cdaudio-ng.cc:252 +#, c-format +msgid "Track %d not found." +msgstr "Trek %d topilmadi." + +#: src/cdaudio/cdaudio-ng.cc:254 +#, c-format +msgid "Track %d is a data track." +msgstr "Trek %d bu ma'lumotlar treki." + +#: src/cdaudio/cdaudio-ng.cc:329 +msgid "Error reading audio CD." +msgstr "Audio CD ni o'qishda xatolik yuz berdi." + +#: src/cdaudio/cdaudio-ng.cc:398 +msgid "Audio CD" +msgstr "Audio CD" + +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 +#, c-format +msgid "Failed to open CD device %s." +msgstr "%s CD qurilmasini ochib bo'lmadi." + +#: src/cdaudio/cdaudio-ng.cc:446 +msgid "No audio capable CD drive found." +msgstr "Hech qanday audio moslamasi mavjud CD drayvi topilmadi." + +#: src/cdaudio/cdaudio-ng.cc:469 +msgid "Drive is empty." +msgstr "Drayv bo'sh." + +#: src/cdaudio/cdaudio-ng.cc:471 +msgid "Unsupported disk type." +msgstr "Qo'llab-quvvatlanmaydigan disk turi." + +#: src/cdaudio/cdaudio-ng.cc:495 +msgid "Failed to finish initializing opened CD drive." +msgstr "Ochiq CD diskini ishga tushirishni tugatib bo'lmadi." + +#: src/cdaudio/cdaudio-ng.cc:508 +msgid "Failed to retrieve first/last track number." +msgstr "Birinchi/oxirgi trek raqamini olib bo‘lmadi." + +#: src/cdaudio/cdaudio-ng.cc:529 +#, c-format +msgid "Cannot read start/end LSN for track %d." +msgstr "%d Trek uchun boshlash/tugatish LSNni o'qib bo'lmadi." + +#: src/cdaudio/cdaudio-ng.cc:611 +msgid "Failed to create the CDDB connection." +msgstr "CDDB ulanishini yaratib bo‘lmadi." + +#: src/cdaudio/cdaudio-ng.cc:677 +msgid "Failed to query the CDDB server" +msgstr "CDDB serverini so‘rash bajarilmadi" + +#: src/cdaudio/cdaudio-ng.cc:679 +#, c-format +msgid "Failed to query the CDDB server: %s" +msgstr "CDDB serverini so'rash bajarilmadi: %s" + +#: src/cdaudio/cdaudio-ng.cc:703 +#, c-format +msgid "Failed to read the CDDB info: %s" +msgstr "CDDB ma'lumotlarini o'qib bo'lmadi: %s" + +#: src/cd-menu-items/cd-menu-items.cc:33 +msgid "Audio CD Menu Items" +msgstr "Audio CD menyu bandlari" + +#: src/cd-menu-items/cd-menu-items.cc:45 +msgid "Pla_y CD" +msgstr "CD ni ijro ettirish" + +#: src/cd-menu-items/cd-menu-items.cc:45 +msgid "_Add CD" +msgstr "CD qo'shish" + +#: src/compressor/compressor.cc:45 +msgid "Compression" +msgstr "Siqish" + +#: src/compressor/compressor.cc:46 +msgid "Center volume:" +msgstr "Markaz ovoz balandligi:" + +#: src/compressor/compressor.cc:49 +msgid "Dynamic range:" +msgstr "Dinamik diapazon:" + +#: src/compressor/compressor.cc:57 +msgid "" +"Dynamic Range Compression Plugin for Audacious\n" +"Copyright 2010-2014 John Lindgren" +msgstr "" +"Audacious uchun dinamik diapazonni siqish plagini\n" +"Mualliflik huquqi 2010-2014 Jon Lindgren" + +#: src/compressor/compressor.cc:64 +msgid "Dynamic Range Compressor" +msgstr "Dinamik diapazon kompressori" + +#: src/console/plugin.cc:15 +msgid "" +"Console music decoder engine based on Game_Music_Emu 0.5.2\n" +"Supported formats: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"\n" +"Audacious plugin by:\n" +"William Pitcock \n" +"Shay Green " +msgstr "" +"Game_Music_Emu 0.5.2 asosidagi konsol musiqa dekoder mexanizmi\n" +"Qo'llab-quvvatlanadigan formatlar: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, " +"SPC, VGM, VGZ\n" +"\n" +"Audacious plagin mualliflari:\n" +"Uilyam Pitkok \n" +"Shay Green " + +#: src/console/plugin.cc:30 +msgid "Bass:" +msgstr "Bass:" + +#: src/console/plugin.cc:33 +msgid "Treble:" +msgstr "Treble:" + +#: src/console/plugin.cc:36 +msgid "Echo:" +msgstr "Aks sado:" + +#: src/console/plugin.cc:39 +msgid "Default song length:" +msgstr "Standart qo‘shiq uzunligi:" + +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "soniya" + +#: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 +msgid "Resampling" +msgstr "Qayta namuna olish" + +#: src/console/plugin.cc:43 +msgid "Enable audio resampling" +msgstr "Ovozni qayta namuna olishni yoqish" + +#: src/console/plugin.cc:49 +msgid "SPC" +msgstr "SPC" + +#: src/console/plugin.cc:50 +msgid "Ignore length from SPC tags" +msgstr "SPC teglaridan uzunlikni e'tiborsiz qoldirish" + +#: src/console/plugin.cc:52 +msgid "Increase reverb" +msgstr "Reverberatsiyani ko'paytirish" + +#: src/console/plugin.h:26 +msgid "Game Console Music Decoder" +msgstr "O'yin konsoli musiqa dekoderi" + +#: src/coreaudio/coreaudio.cc:53 +msgid "CoreAudio output" +msgstr "CoreAudio chiqishi" + +#: src/coreaudio/coreaudio.cc:155 +msgid "" +"CoreAudio Output Plugin for Audacious\n" +"Copyright 2014 William Pitcock\n" +"Copyright 2017,18 René J.V. Bertin\n" +" (original code and code adapted from\n" +" Apple examples, (C) Apple 2013)\n" +"\n" +"Based on SDL Output Plugin for Audacious\n" +"Copyright 2010 John Lindgren" +msgstr "" +"Audacious uchun CoreAudio chiqish plagini\n" +"Mualliflik huquqi 2014 Uilyam Pitkok\n" +"Mualliflik huquqi 2017,18 René J.V. Bertin\n" +"(asl kod va kod moslashtirilgan\n" +"Apple misollari, (C) Apple 2013)\n" +"\n" +"Audacious uchun SDL chiqish plaginiga asoslangan\n" +"Mualliflik huquqi 2010 Jon Lindgren" + +#: src/coreaudio/coreaudio.cc:171 +msgid "Use exclusive mode" +msgstr "Maxsus rejimdan foydalanish" + +#: src/coreaudio/coreaudio.cc:173 +msgid "Use bit perfect audio (adapt device sampling rate)" +msgstr "" +"Bit mukammal audiodan foydalanish (qurilma namuna olish tezligini " +"moslashtirish)" + +#: src/crossfade/crossfade.cc:43 +msgid "" +"Crossfade Plugin for Audacious\n" +"Copyright 2010-2014 John Lindgren" +msgstr "" +"Audacious uchun Crossfade plagini\n" +"Mualliflik huquqi 2010-2014 Jon Lindgren" + +#: src/crossfade/crossfade.cc:47 +msgid "Crossfade" +msgstr "Oʻzaro oʻtish" + +#: src/crossfade/crossfade.cc:48 +msgid "On automatic song change" +msgstr "Qo'shiqni avtomatik o'zgartirishda" + +#: src/crossfade/crossfade.cc:50 src/crossfade/crossfade.cc:56 +msgid "Overlap:" +msgstr "Overlap:" + +#: src/crossfade/crossfade.cc:54 +msgid "On seek or manual song change" +msgstr "Qidiruv yoki qo'lda qo'shiqni o'zgartirishda" + +#: src/crossfade/crossfade.cc:60 +msgid "Tip" +msgstr "Maslahat" + +#: src/crossfade/crossfade.cc:61 +msgid "" +"For better crossfading, enable\n" +"the Silence Removal effect." +msgstr "" +"Yaxshiroq oʻzaro oʻtish uchun\n" +"jimlikni olib tashlash effektini yoqing." + +#: src/crossfade/crossfade.cc:71 +msgid "Crossfade" +msgstr "Oʻzaro oʻtish" + +#: src/crystalizer/crystalizer.cc:31 +msgid "Crystalizer" +msgstr "Kristalizator" + +#: src/crystalizer/crystalizer.cc:32 src/stereo_plugin/stereo.cc:45 +msgid "Intensity:" +msgstr "Intensivlik:" + +#: src/crystalizer/crystalizer.cc:43 +msgid "Crystalizer" +msgstr "Kristalizator" + +#: src/cue/cue.cc:42 +msgid "Cue Sheet Plugin" +msgstr "Cue Sheet plagini" + +#: src/delete-files/delete-files.cc:53 src/delete-files/delete-files.cc:215 +#: src/delete-files/delete-files.cc:230 +msgid "Delete Files" +msgstr "Fayllarni o'chirish" + +#: src/delete-files/delete-files.cc:120 +msgid "No files are selected." +msgstr "Hech qanday fayl tanlanmagan." + +#: src/delete-files/delete-files.cc:125 +#, c-format +msgid "Do you want to move %s to the trash?" +msgstr "%s chiqindiga o'tkazmoqchimisiz?" + +#: src/delete-files/delete-files.cc:126 +#, c-format +msgid "Do you want to permanently delete %s?" +msgstr "%s butunlay o'chirib tashlamoqchimisiz?" + +#: src/delete-files/delete-files.cc:133 +#, c-format +msgid "Do you want to move %d files to the trash?" +msgstr "%dfayllarni chiqindiga o'tkazmoqchimisiz?" + +#: src/delete-files/delete-files.cc:134 +#, c-format +msgid "Do you want to permanently delete %d files?" +msgstr "%d fayllarni butunlay oʻchirib tashlamoqchimisiz?" + +#: src/delete-files/delete-files.cc:146 +msgid "Move to trash" +msgstr "Chiqindiga o'tkazish" + +#: src/delete-files/delete-files.cc:146 +msgid "Delete" +msgstr "Oʻchirish" + +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 +msgid "Cancel" +msgstr "Bekor qilish" + +#: src/delete-files/delete-files.cc:267 +msgid "Delete Selected Files" +msgstr "Tanlangan fayllarni o'chirish" + +#: src/delete-files/delete-files.cc:287 +msgid "Delete Method" +msgstr "O'chirish usuli" + +#: src/delete-files/delete-files.cc:288 +msgid "Move to trash instead of deleting immediately" +msgstr "Darhol oʻchirish oʻrniga chiqindiga oʻtkazish" + +#: src/echo_plugin/echo.cc:9 +msgid "" +"Echo Plugin\n" +"By Johan Levin, 1999\n" +"Surround echo by Carl van Schaik, 1999\n" +"Updated for Audacious by William Pitcock and John Lindgren, 2010-2014" +msgstr "" +"Aks sado plagini\n" +"Yohan Levin tomonidan, 1999 yil\n" +"Surround echo Karl van Schaik tomonidan, 1999 yil\n" +"Uilyam Pitkok va Jon Lindgren tomonidan Audacious uchun yangilangan, " +"2010-2014" + +#: src/echo_plugin/echo.cc:21 +msgid "Echo" +msgstr "Aks sado" + +#: src/echo_plugin/echo.cc:22 src/modplug/plugin_main.cc:72 +#: src/modplug/plugin_main.cc:82 +msgid "Delay:" +msgstr "Kechikish:" + +#: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 +msgid "ms" +msgstr "ms" + +#: src/echo_plugin/echo.cc:25 +msgid "Feedback:" +msgstr "Fikr-mulohaza:" + +#: src/echo_plugin/echo.cc:28 src/modplug/plugin_main.cc:86 +msgid "Volume:" +msgstr "Ovoz balandligi:" + +#: src/echo_plugin/echo.cc:39 +msgid "Echo" +msgstr "Aks sado" + +#: src/ffaudio/ffaudio-core.cc:50 +msgid "FFmpeg Plugin" +msgstr "FFmpeg plagini" + +#: src/ffaudio/ffaudio-core.cc:650 +msgid "" +"Multi-format audio decoding plugin for Audacious using\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"\n" +"Audacious plugin by:\n" +"William Pitcock \n" +"Matti Hämäläinen " +msgstr "" +"Audacious foydalanish uchun ko'p formatli audio dekodlash plagini\n" +"FFmpeg multimedia freymvorki (http://www.ffmpeg.org/)\n" +"\n" +"Audacious plagin mualliflari:\n" +"William Pitcock \n" +"Matti Hämäläinen " + +#: src/filewriter/filewriter.cc:48 +msgid "FileWriter Plugin" +msgstr "FileWriter plagini" + +#: src/filewriter/filewriter.cc:316 +#, c-format +msgid "" +"Error opening %s:\n" +"%s" +msgstr "" +" %s ochilishda xatolik:\n" +"%s" + +#: src/filewriter/filewriter.cc:358 +msgid "" +"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.\n" +"\n" +"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.\n" +"\n" +"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." +msgstr "" +"Bu dastur bepul dastur hisoblanadi; siz uni qayta tarqatishingiz va/yoki uni " +"Free Software Foundation tomonidan nashr etilgan GNU General Public License " +"shartlariga muvofiq o'zgartirishingiz mumkin; Litsenziyaning 2-versiyasi " +"yoki (sizning xohishingizga ko'ra) har qanday keyingi versiyasi.\n" +"\n" +"Ushbu dastur foydali bo'ladi degan umidda tarqatiladi, lekin HECH QANDAY " +"KAFOLATSIZ; SOVLASH MUVOFIQligi yoki MAQSUS MAQSADGA MUVOFIQligi haqidagi " +"nazarda tutilgan kafolatsiz. Batafsil ma'lumot uchun GNU General Public " +"License-ga qarang.\n" +"\n" +"Siz ushbu dastur bilan birga GNU General Public License nusxasini olishingiz " +"kerak edi; bo'lmasa, Free Software Foundation, Inc., 51 Franklin Street, " +"Fifth Floor, Boston, MA 02110-1301, AQSH ga yozing." + +#: src/filewriter/filewriter.cc:385 +msgid "Output file format:" +msgstr "Chiqarish fayl formati:" + +#: src/filewriter/filewriter.cc:389 +msgid "Save into original directory" +msgstr "Asl katalogga saqlash" + +#: src/filewriter/filewriter.cc:392 +msgid "Save into custom directory:" +msgstr "Maxsus katalogga saqlash:" + +#: src/filewriter/filewriter.cc:400 +msgid "Generate file name from:" +msgstr "Fayl nomini quyidagidan yarating:" + +#: src/filewriter/filewriter.cc:401 +msgid "Original file name" +msgstr "Asl fayl nomi" + +#: src/filewriter/filewriter.cc:404 +msgid "Original file name (no suffix)" +msgstr "Asl fayl nomi (qo'shimchasi yo'q)" + +#: src/filewriter/filewriter.cc:407 +msgid "Original file tag" +msgstr "Asl fayl yorlig'i" + +#: src/filewriter/filewriter.cc:411 +msgid "Prepend track number to file name" +msgstr "Fayl nomiga trek raqamini qo'ying" + +#: src/filewriter/filewriter.cc:417 src/filewriter/filewriter.cc:449 +msgid "Auto" +msgstr "Avtomatik" + +#: src/filewriter/filewriter.cc:418 +msgid "8000 Hz" +msgstr "8000 Gts" + +#: src/filewriter/filewriter.cc:419 +msgid "11025 Hz" +msgstr "11025 Gts" + +#: src/filewriter/filewriter.cc:420 +msgid "12000 Hz" +msgstr "12000 Gts" + +#: src/filewriter/filewriter.cc:421 +msgid "16000 Hz" +msgstr "16000 Gts" + +#: src/filewriter/filewriter.cc:422 +msgid "22050 Hz" +msgstr "22050 Gts" + +#: src/filewriter/filewriter.cc:423 +msgid "24000 Hz" +msgstr "24000 Gts" + +#: src/filewriter/filewriter.cc:424 +msgid "32000 Hz" +msgstr "32000 Gts" + +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 +msgid "44100 Hz" +msgstr "44100 Gts" + +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 +msgid "48000 Hz" +msgstr "48000 Gts" + +#: src/filewriter/filewriter.cc:430 +msgid "8 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:431 +msgid "16 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:432 +msgid "32 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:433 +msgid "40 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:434 +msgid "48 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:435 +msgid "56 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:436 +msgid "64 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:437 +msgid "80 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:438 +msgid "96 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:439 +msgid "112 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:440 +msgid "128 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:441 +msgid "160 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:442 +msgid "192 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:443 +msgid "224 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:444 +msgid "256 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:445 +msgid "320 kbit/s" +msgstr "" + +#: src/filewriter/filewriter.cc:450 +msgid "Joint Stereo" +msgstr "Joint Stereo" + +#: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 +#: src/mpg123/mpg123.cc:259 +msgid "Stereo" +msgstr "Stereo" + +#: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 +#: src/mpg123/mpg123.cc:260 +msgid "Mono" +msgstr "Mono" + +#: src/filewriter/filewriter.cc:456 +msgid "VBR" +msgstr "VBR" + +#: src/filewriter/filewriter.cc:457 +msgid "ABR" +msgstr "ABR" + +#: src/filewriter/filewriter.cc:478 +msgid "Algorithm quality:" +msgstr "Algoritm sifati:" + +#: src/filewriter/filewriter.cc:484 +msgid "Bitrate:" +msgstr "Bit tezligi:" + +#: src/filewriter/filewriter.cc:491 +msgid "Compression ratio:" +msgstr "Siqish nisbati:" + +#: src/filewriter/filewriter.cc:498 +msgid "Audio mode:" +msgstr "Audio rejimi:" + +#: src/filewriter/filewriter.cc:501 +msgid "Enforce strict ISO compliance" +msgstr "ISO talablariga qat'iy rioya qilish" + +#: src/filewriter/filewriter.cc:503 +msgid "Error protection" +msgstr "Xatolardan himoya qilish" + +#: src/filewriter/filewriter.cc:508 +msgid "Enable VBR/ABR" +msgstr "VBR/ABR ni yoqish" + +#: src/filewriter/filewriter.cc:510 +msgid "Type:" +msgstr "Turi:" + +#: src/filewriter/filewriter.cc:514 +msgid "Minimum bitrate:" +msgstr "Minimal bit tezligi:" + +#: src/filewriter/filewriter.cc:518 +msgid "Maximum bitrate:" +msgstr "Maksimal bit tezligi:" + +#: src/filewriter/filewriter.cc:522 +msgid "Average bitrate:" +msgstr "O'rtacha bit tezligi:" + +#: src/filewriter/filewriter.cc:526 +msgid "VBR quality level:" +msgstr "VBR sifat darajasi:" + +#: src/filewriter/filewriter.cc:530 +msgid "Strictly enforce minimum bitrate" +msgstr "Minimal bit tezligiga qat'iy rioya qilish" + +#: src/filewriter/filewriter.cc:533 +msgid "Omit Xing VBR header" +msgstr "Xing VBR sarlavhasini o'tkazib yubormaslik" + +#: src/filewriter/filewriter.cc:539 +msgid "Frame Headers" +msgstr "Kadr sarlavhalari" + +#: src/filewriter/filewriter.cc:540 +msgid "Mark as copyright" +msgstr "Mualliflik huquqi sifatida belgilash" + +#: src/filewriter/filewriter.cc:542 +msgid "Mark as original" +msgstr "Asl sifatida belgilash" + +#: src/filewriter/filewriter.cc:544 +msgid "ID3 Tags" +msgstr "ID3 teglari" + +#: src/filewriter/filewriter.cc:545 +msgid "Force addition of version 2 tag" +msgstr "2 versiya tegini majburan qo‘shish" + +#: src/filewriter/filewriter.cc:547 +msgid "Only add v1 tag" +msgstr "Faqat v1 tegini qo'shish" + +#: src/filewriter/filewriter.cc:549 +msgid "Only add v2 tag" +msgstr "Faqat v2 tegini qo'shish" + +#: src/filewriter/filewriter.cc:554 +msgid "Quality" +msgstr "Sifat" + +#: src/filewriter/filewriter.cc:555 +msgid "VBR/ABR" +msgstr "VBR/ABR" + +#: src/filewriter/filewriter.cc:556 +msgid "Tags" +msgstr "Teglar" + +#: src/filewriter/filewriter.cc:566 +msgid "Quality (0-1):" +msgstr "Sifat (0-1):" + +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 +#: src/skins/skins_cfg.cc:285 +msgid "General" +msgstr "Umumiy" + +#: src/flac/flacng.h:36 +msgid "FLAC Decoder" +msgstr "FLAC dekoder" + +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 +msgid "lossless" +msgstr "yo'qotishsiz" + +#: src/flac/plugin.cc:214 +msgid "" +"Original code by\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" +msgstr "" +"Asl kod muallifi\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" + +#: src/gio/gio.cc:34 +msgid "" +"GIO Plugin for Audacious\n" +"Copyright 2009-2012 John Lindgren" +msgstr "" +"Audacious uchun GIO plagini\n" +"Mualliflik huquqi 2009-2012 Jon Lindgren" + +#: src/gio/gio.cc:42 +msgid "GIO Plugin" +msgstr "GIO plagini" + +#: src/gio/gio.cc:152 +msgid "Read-and-append mode not supported" +msgstr "O‘qish va qo‘shish rejimi qo‘llab-quvvatlanmaydi" + +#: src/gio/gio.cc:165 +msgid "Invalid open mode" +msgstr "Yaroqsiz ochiq rejim" + +#: src/glspectrum/gl-spectrum.cc:52 +msgid "" +"OpenGL Spectrum Analyzer for Audacious\n" +"Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" +"\n" +"Based on the XMMS plugin:\n" +"Copyright 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, and " +"4Front Technologies\n" +"\n" +"License: GPLv2+" +msgstr "" +"Audacious uchun OpenGL spektr analizatori\n" +"Mualliflik huquqi 2013 Kristof Bude, Jon Lindgren va Karlo Bramini\n" +"\n" +"XMMS plagini asosida:\n" +"Mualliflik huquqi 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Tomas " +"Nilsson va 4Front Technologies\n" +"\n" +"Litsenziya: GPLv2+" + +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 +msgid "OpenGL Spectrum Analyzer" +msgstr "OpenGL spektr analizatori" + +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "Kiritish raqami" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 +#: src/moonstone/playlist_selection.cc:62 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 +#: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 +msgid "Title" +msgstr "Sarlavha" + +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/qtui/playlist_model.cc:33 +msgid "Artist" +msgstr "Artist" + +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/qtui/playlist_model.cc:33 +msgid "Year" +msgstr "Yil" + +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 +#: src/qtui/playlist_model.cc:34 +msgid "Album" +msgstr "Albom" + +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" +msgstr "Albom artisti" + +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Track" +msgstr "Trek" + +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 +#: src/streamtuner/shoutcast-model.cc:125 +#: src/streamtuner/shoutcast-model.cc:236 +msgid "Genre" +msgstr "Janr" + +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" +msgstr "Navbatdagi joylashuv" + +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Length" +msgstr "Uzunligi" + +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" +msgstr "Fayl yo'li" + +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "Fayl nomi" + +#: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "Maxsus sarlavha" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 +#: src/streamtuner/shoutcast-model.cc:134 +msgid "Bitrate" +msgstr "Bit tezligi" + +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 +#: src/qtui/playlist_model.cc:36 +msgid "Comment" +msgstr "Izoh" + +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 +msgid "Available columns" +msgstr "Mavjud ustunlar" + +#: src/gtkui/columns.cc:348 +msgid "Displayed columns" +msgstr "Ko'rsatilgan ustunlar" + +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 +msgid "Search Tool" +msgstr "Qidiruv vositasi" + +#: src/gtkui/layout.cc:170 +msgid "Dock at Left" +msgstr "Chapga o'rnatish" + +#: src/gtkui/layout.cc:170 +msgid "Dock at Right" +msgstr "Oʻngga oʻrnatish" + +#: src/gtkui/layout.cc:171 +msgid "Dock at Top" +msgstr "Yuqoriga oʻrnatish" + +#: src/gtkui/layout.cc:171 +msgid "Dock at Bottom" +msgstr "Pastga o'rnatish" + +#: src/gtkui/layout.cc:171 +msgid "Undock" +msgstr "Yechish" + +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 +msgid "Disable" +msgstr "Oʻchirish" + +#: src/gtkui/menus.cc:79 src/qtui/menus.cc:107 +#: src/statusicon-qt/statusicon.cc:112 src/statusicon/statusicon.cc:282 +msgid "_Open Files ..." +msgstr "_Fayllarni ochish..." + +#: src/gtkui/menus.cc:80 src/qtui/menus.cc:111 +msgid "Open _URL ..." +msgstr "URL ochish..." + +#: src/gtkui/menus.cc:81 src/qtui/menus.cc:113 +msgid "_Add Files ..." +msgstr "Fayllarni qo'shish..." + +#: src/gtkui/menus.cc:82 src/qtui/menus.cc:118 +msgid "Add U_RL ..." +msgstr "URL qo'shish..." + +#: src/gtkui/menus.cc:84 src/qtui/menus.cc:120 +msgid "Search _Library" +msgstr "Kutubxonani qidirish" + +#: src/gtkui/menus.cc:86 src/qtui/menus.cc:123 +msgid "A_bout ..." +msgstr "Haqida..." + +#: src/gtkui/menus.cc:87 src/qtui/menus.cc:125 +msgid "_Settings ..." +msgstr "Sozlamalar..." + +#: src/gtkui/menus.cc:88 src/qtui/menus.cc:131 +#: src/statusicon-qt/statusicon.cc:114 src/statusicon/statusicon.cc:284 +msgid "_Quit" +msgstr "Chiqish" + +#: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 +#: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 +#: src/statusicon/statusicon.cc:276 +msgid "_Play" +msgstr "Ijro ettirish" + +#: src/gtkui/menus.cc:93 src/qtui/menus.cc:137 +#: src/statusicon-qt/statusicon.cc:107 src/statusicon/statusicon.cc:277 +msgid "Paus_e" +msgstr "Pauza" + +#: src/gtkui/menus.cc:94 src/qtui/menus.cc:139 +#: src/statusicon-qt/statusicon.cc:108 src/statusicon/statusicon.cc:278 +msgid "_Stop" +msgstr "To'xtatish" + +#: src/gtkui/menus.cc:95 src/qtui/menus.cc:141 +#: src/statusicon-qt/statusicon.cc:109 src/statusicon/statusicon.cc:279 +msgid "Pre_vious" +msgstr "Oldingi" + +#: src/gtkui/menus.cc:96 src/qtui/menus.cc:143 +#: src/statusicon-qt/statusicon.cc:110 src/statusicon/statusicon.cc:280 +msgid "_Next" +msgstr "_Keyingi" + +#: src/gtkui/menus.cc:97 src/qtui/menus.cc:145 src/skins/menus.cc:114 +#: src/skins-qt/menus.cc:105 +msgid "Previous Album" +msgstr "Oldingi albom" + +#: src/gtkui/menus.cc:98 src/qtui/menus.cc:146 src/skins/menus.cc:115 +#: src/skins-qt/menus.cc:106 +msgid "Next Album" +msgstr "Keyingi albom" + +#: src/gtkui/menus.cc:100 src/qtui/menus.cc:148 +msgid "_Repeat" +msgstr "Takrorlash" + +#: src/gtkui/menus.cc:101 src/qtui/menus.cc:150 +msgid "S_huffle" +msgstr "Aralashtirish" + +#: src/gtkui/menus.cc:102 src/qtui/menus.cc:152 +msgid "Shuffle by Albu_m" +msgstr "Albom bo'yicha aralashtirish" + +#: src/gtkui/menus.cc:103 src/qtui/menus.cc:155 +msgid "N_o Playlist Advance" +msgstr "Pleylist harakati yo'q" + +#: src/gtkui/menus.cc:104 src/qtui/menus.cc:157 +msgid "Stop A_fter This Song" +msgstr "Ushbu qo'shiqdan keyin to'xtash" + +#: src/gtkui/menus.cc:106 src/gtkui/menus.cc:208 src/qtui/menus.cc:162 +#: src/qtui/menus.cc:292 +msgid "Song _Info ..." +msgstr "Qo'shiq haqida ma'lumot..." + +#: src/gtkui/menus.cc:107 +msgid "Jump to _Time ..." +msgstr "Vaqtga o'tish..." + +#: src/gtkui/menus.cc:108 +msgid "_Jump to Song ..." +msgstr "Qo'shiqqa o'tish..." + +#: src/gtkui/menus.cc:110 src/qtui/menus.cc:165 +msgid "Set Repeat Point _A" +msgstr "A takrorlash nuqtasini sozlash" + +#: src/gtkui/menus.cc:111 src/qtui/menus.cc:167 +msgid "Set Repeat Point _B" +msgstr "B takrorlash nuqtasini sozlash" + +#: src/gtkui/menus.cc:112 src/qtui/menus.cc:169 +msgid "_Clear Repeat Points" +msgstr "Takrorlash nuqtalarini tozalash" + +#: src/gtkui/menus.cc:116 src/gtkui/menus.cc:123 src/gtkui/menus.cc:140 +#: src/qtui/menus.cc:173 src/qtui/menus.cc:180 src/qtui/menus.cc:197 +msgid "By _Title" +msgstr "Sarlavha bo'yicha" + +#: src/gtkui/menus.cc:117 src/qtui/menus.cc:174 +msgid "By _File Name" +msgstr "Fayl nomi bo'yicha" + +#: src/gtkui/menus.cc:118 src/qtui/menus.cc:175 +msgid "By File _Path" +msgstr "Fayl yo'li bo'yicha" + +#: src/gtkui/menus.cc:122 src/gtkui/menus.cc:139 src/qtui/menus.cc:179 +#: src/qtui/menus.cc:196 +msgid "By Track _Number" +msgstr "Trek raqami bo'yicha" + +#: src/gtkui/menus.cc:124 src/gtkui/menus.cc:141 src/qtui/menus.cc:181 +#: src/qtui/menus.cc:198 +msgid "By _Artist" +msgstr "Artist bo'yicha" + +#: src/gtkui/menus.cc:125 src/gtkui/menus.cc:142 src/qtui/menus.cc:182 +#: src/qtui/menus.cc:199 +msgid "By Al_bum" +msgstr "Albom bo'yicha" + +#: src/gtkui/menus.cc:126 src/gtkui/menus.cc:143 src/qtui/menus.cc:183 +#: src/qtui/menus.cc:200 +msgid "By Albu_m Artist" +msgstr "Albom artisti bo'yicha" + +#: src/gtkui/menus.cc:127 src/gtkui/menus.cc:144 src/qtui/menus.cc:184 +#: src/qtui/menus.cc:201 +msgid "By Release _Date" +msgstr "Chiqarilgan sana bo'yicha" + +#: src/gtkui/menus.cc:128 src/gtkui/menus.cc:145 src/qtui/menus.cc:185 +#: src/qtui/menus.cc:202 +msgid "By _Genre" +msgstr "Janr bo'yicha" + +#: src/gtkui/menus.cc:129 src/gtkui/menus.cc:146 src/qtui/menus.cc:186 +#: src/qtui/menus.cc:203 +msgid "By _Length" +msgstr "Uzunlik bo'yicha" + +#: src/gtkui/menus.cc:130 src/gtkui/menus.cc:147 src/qtui/menus.cc:187 +#: src/qtui/menus.cc:204 +msgid "By _File Path" +msgstr "Fayl yo'li bo'yicha" + +#: src/gtkui/menus.cc:131 src/gtkui/menus.cc:148 src/qtui/menus.cc:188 +#: src/qtui/menus.cc:205 +msgid "By _Custom Title" +msgstr "Maxsus sarlavha bo'yicha" + +#: src/gtkui/menus.cc:132 src/gtkui/menus.cc:149 src/qtui/menus.cc:189 +#: src/qtui/menus.cc:206 +msgid "By C_omment" +msgstr "Izoh bo'yicha" + +#: src/gtkui/menus.cc:134 src/gtkui/menus.cc:151 src/qtui/menus.cc:191 +#: src/qtui/menus.cc:208 +msgid "R_everse Order" +msgstr "Teskari tartib" + +#: src/gtkui/menus.cc:135 src/gtkui/menus.cc:152 src/qtui/menus.cc:193 +#: src/qtui/menus.cc:210 +msgid "_Random Order" +msgstr "Tasodifiy tartib" + +#: src/gtkui/menus.cc:156 src/qtui/menus.cc:214 +msgid "_Play/Resume" +msgstr "Ijro ettirish/Davom etish" + +#: src/gtkui/menus.cc:157 src/qtui/menus.cc:216 +msgid "_Refresh" +msgstr "Yangilash" + +#: src/gtkui/menus.cc:159 src/qtui/menus.cc:220 +msgid "_Sort" +msgstr "Saralash" + +#: src/gtkui/menus.cc:160 src/qtui/menus.cc:221 +msgid "Sort Se_lected" +msgstr "Tanlangan saralash" + +#: src/gtkui/menus.cc:161 src/qtui/menus.cc:223 +msgid "Remove _Duplicates" +msgstr "Dublikatlarni olib tashlash" + +#: src/gtkui/menus.cc:162 src/qtui/menus.cc:224 +msgid "Remove _Unavailable Files" +msgstr "Mavjud bo'lmagan fayllarni olib tashlash" + +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 +msgid "_New" +msgstr "Yangi" + +#: src/gtkui/menus.cc:165 src/qtui/menus.cc:228 +msgid "Ren_ame ..." +msgstr "Nomini o'zgartirish..." + +#: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 +#: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 +#: src/qtui/playlist_tabs.cc:335 +msgid "Remo_ve" +msgstr "O'chirish" + +#: src/gtkui/menus.cc:168 src/qtui/menus.cc:231 +msgid "_Import ..." +msgstr "Import..." + +#: src/gtkui/menus.cc:169 src/qtui/menus.cc:232 +msgid "_Export ..." +msgstr "Eksport..." + +#: src/gtkui/menus.cc:171 src/qtui/menus.cc:235 +msgid "Playlist _Manager ..." +msgstr "Pleylist menejeri..." + +#: src/gtkui/menus.cc:172 src/qtui/menus.cc:237 +msgid "_Queue Manager ..." +msgstr "Navbat menejeri..." + +#: src/gtkui/menus.cc:176 src/qtui/menus.cc:241 +msgid "Volume _Up" +msgstr "Ovozni oshirish" + +#: src/gtkui/menus.cc:177 src/qtui/menus.cc:243 +msgid "Volume _Down" +msgstr "Ovozni pasaytirish" + +#: src/gtkui/menus.cc:179 src/qtui/menus.cc:247 +msgid "_Equalizer ..." +msgstr "Ekvalayzer..." + +#: src/gtkui/menus.cc:180 src/qtui/menus.cc:249 +msgid "E_ffects ..." +msgstr "Effektlar..." + +#: src/gtkui/menus.cc:182 +msgid "_Record Stream" +msgstr "Oqim yozib olish" + +#: src/gtkui/menus.cc:183 +msgid "Audio _Settings ..." +msgstr "Audio sozlamalari..." + +#: src/gtkui/menus.cc:187 src/qtui/menus.cc:258 +msgid "Show _Menu Bar" +msgstr "Menyu panelini ko'rsatish" + +#: src/gtkui/menus.cc:188 src/qtui/menus.cc:260 +msgid "Show I_nfo Bar" +msgstr "Ma'lumot panelini ko'rsatish" + +#: src/gtkui/menus.cc:189 src/qtui/menus.cc:262 +msgid "Show Info Bar _Album Art" +msgstr "Ma'lumot panelidagi albom qoplamasini ko'rsatish" + +#: src/gtkui/menus.cc:190 src/qtui/menus.cc:264 +msgid "Show Info Bar Vis_ualization" +msgstr "Ma'lumot paneli vizualizatsiyasini ko'rsatish" + +#: src/gtkui/menus.cc:191 src/qtui/menus.cc:266 +msgid "Show _Status Bar" +msgstr "Holat panelini ko‘rsatish" + +#: src/gtkui/menus.cc:193 src/qtui/menus.cc:270 +msgid "Show _Remaining Time" +msgstr "Qolgan vaqtni ko'rsatish" + +#: src/gtkui/menus.cc:195 src/qtui/menus.cc:274 src/skins/menus.cc:157 +#: src/skins-qt/menus.cc:152 +msgid "_Visualizations ..." +msgstr "Vizualizatsiya..." + +#: src/gtkui/menus.cc:199 src/qtui/menus.cc:278 +msgid "_File" +msgstr "Fayl" + +#: src/gtkui/menus.cc:200 src/qtui/menus.cc:279 +msgid "_Playback" +msgstr "Ijro ettirish" + +#: src/gtkui/menus.cc:201 src/qtui/menus.cc:280 +msgid "P_laylist" +msgstr "Pleylist" + +#: src/gtkui/menus.cc:202 src/gtkui/menus.cc:220 src/qtui/menus.cc:281 +#: src/qtui/menus.cc:310 +msgid "_Services" +msgstr "Xizmatlar" + +#: src/gtkui/menus.cc:203 src/qtui/menus.cc:282 +msgid "_Output" +msgstr "Chiqarish" + +#: src/gtkui/menus.cc:204 src/qtui/menus.cc:283 +msgid "_View" +msgstr "Ko'rinish" + +#: src/gtkui/menus.cc:209 src/qtui/menus.cc:294 +msgid "_Queue/Unqueue" +msgstr "Navbat/navbatni bekor qilish" + +#: src/gtkui/menus.cc:211 src/qtui/menus.cc:297 +msgid "_Open Containing Folder" +msgstr "O'z ichiga olgan jildni ochish" + +#: src/gtkui/menus.cc:212 src/qtui/menus.cc:299 +msgid "_Refresh Selected" +msgstr "Tanlanganni yangilash" + +#: src/gtkui/menus.cc:214 src/qtui/menus.cc:302 +msgid "Cu_t" +msgstr "Kesish" + +#: src/gtkui/menus.cc:215 src/qtui/menus.cc:303 +msgid "_Copy" +msgstr "Nusxalash" + +#: src/gtkui/menus.cc:216 src/qtui/menus.cc:304 +msgid "_Paste" +msgstr "Joylashtirish" + +#: src/gtkui/menus.cc:217 src/qtui/menus.cc:305 +msgid "Paste at _End" +msgstr "Oxirida joylashtirish" + +#: src/gtkui/menus.cc:218 src/qtui/menus.cc:307 +msgid "Select _All" +msgstr "Hammasini belgilash" + +#: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 +#: src/qtui/playlist_tabs.cc:333 +msgid "_Rename ..." +msgstr "Nomini oʻzgartirish..." + +#: src/gtkui/settings.cc:35 src/qtui/settings.cc:63 +msgid "Playlist Tabs" +msgstr "Pleylist yorliqlari" + +#: src/gtkui/settings.cc:36 +msgid "Always show tabs" +msgstr "Har doim yorliqlarni ko'rsatish" + +#: src/gtkui/settings.cc:38 src/qtui/settings.cc:68 +msgid "Show entry counts" +msgstr "Kiritilgan sonlarni ko'rsatish" + +#: src/gtkui/settings.cc:40 src/qtui/settings.cc:71 +msgid "Show close buttons" +msgstr "Yopish tugmalarini ko'rsatish" + +#: src/gtkui/settings.cc:42 src/qtui/settings.cc:74 +msgid "Playlist Columns" +msgstr "Pleylist ustunlari" + +#: src/gtkui/settings.cc:44 src/qtui/settings.cc:76 +msgid "Show column headers" +msgstr "Ustun sarlavhalarini ko'rsatish" + +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 +msgid "Scroll on song change" +msgstr "Qo'shiqni o'zgartirish uchun aylantiring" + +#: src/gtkui/ui_gtk.cc:81 +msgid "GTK Interface" +msgstr "GTK interfeysi" + +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 +#, c-format +msgid "%s - Audacious" +msgstr "%s - Audacious" + +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 +msgid "Buffering ..." +msgstr "Buferlash..." + +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 +msgid "Audacious" +msgstr "Audacious" + +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 +#: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 +#: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 +msgid "Play" +msgstr "Ijro ettirish" + +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 +#: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 +#: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 +msgid "Pause" +msgstr "Pauza" + +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +msgid "Search Library" +msgstr "Kutubxonani qidirish" + +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 +msgid "Open Files" +msgstr "Fayllarni ochish" + +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 +msgid "Add Files" +msgstr "Fayllarni qo'shish" + +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +msgid "Previous" +msgstr "Oldingi" + +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 +#: src/skins-qt/menus.cc:102 +msgid "Stop" +msgstr "To'xtatish" + +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +msgid "Next" +msgstr "Keyingi" + +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/skins-qt/menus.cc:69 +msgid "Record Stream" +msgstr "Oqim yozib olish" + +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +msgid "Repeat" +msgstr "Takrorlash" + +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +msgid "Shuffle" +msgstr "Aralashtirish" + +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 +msgid "Menu" +msgstr "Menyu" + +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 +msgid "mono" +msgstr "mono" + +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 +msgid "stereo" +msgstr "stereo" + +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d kanal" + +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 +#, c-format +msgid "%d kHz" +msgstr "%d kGts" + +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 +#, c-format +msgid "%d kbit/s" +msgstr "" + +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 +msgid "Single mode." +msgstr "Yagona rejim." + +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 +msgid "Playlist mode." +msgstr "Pleylist rejimi." + +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 +msgid "Stopping after song." +msgstr "Qo'shiqdan keyin to'xtash." + +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 +msgid "Previous track" +msgstr "Oldingi trek" + +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 +msgid "Pause/Resume" +msgstr "To'xtatib turish/Davom ettirish" + +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 +msgid "Next track" +msgstr "Keyingi trek" + +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 +msgid "Step forward" +msgstr "Oldinga qadam" + +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 +msgid "Step backward" +msgstr "Orqaga qadam" + +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 +msgid "Mute" +msgstr "Ovozsiz" + +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 +msgid "Volume up" +msgstr "Ovozni ko'tarish" + +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 +msgid "Volume down" +msgstr "Ovozni pasaytirish" + +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 +msgid "Jump to file" +msgstr "Faylga o'tish" + +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 +msgid "Toggle player window(s)" +msgstr "Pleyer oynasini (oynalarini) almashtirish" + +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 +msgid "Show On-Screen-Display" +msgstr "Ekrandagi displeyni ko'rsatish" + +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 +msgid "Toggle repeat" +msgstr "Takrorlashni yoqish/o‘chirish" + +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 +msgid "Toggle shuffle" +msgstr "Aralashtirishni yoqish/o‘chirish" + +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 +msgid "Toggle stop after current" +msgstr "Joriydan keyin almashtirishni to'xtatish" + +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 +msgid "Raise player window(s)" +msgstr "Pleyer oynasini (oynalarini) ko'tarish" + +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 +msgid "(none)" +msgstr "(yo'q)" + +#: src/hotkey/gui.cc:261 +msgid "" +"It is not recommended to bind the primary mouse buttons without modifiers.\n" +"\n" +"Do you want to continue?" +msgstr "" +"Sichqonchaning asosiy tugmalarini modifikatorlarsiz bog'lash tavsiya " +"etilmaydi.\n" +"\n" +"Davom etishni xohlaysizmi?" + +#: src/hotkey/gui.cc:264 +msgid "Binding mouse buttons" +msgstr "Sichqoncha tugmachalarini bog'lash" + +#: src/hotkey/gui.cc:434 +msgid "" +"Press a key combination inside a text field.\n" +"You can also bind mouse buttons." +msgstr "" +"Matn maydonidagi tugmalar birikmasini bosing.\n" +"Sichqoncha tugmachalarini ham bog'lashingiz mumkin." + +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 +msgid "Hotkeys:" +msgstr "Tezkor tugmalar:" + +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 +msgid "Action:" +msgstr "Harakat:" + +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 +msgid "Key Binding:" +msgstr "Kalit bog'lash:" + +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 +msgid "_Add" +msgstr "_Qo'shish" + +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 +msgid "Global Hotkeys" +msgstr "Global tezkor tugmalar" + +#: src/hotkey/plugin.cc:76 +msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributors include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " +msgstr "" +"Global tezkor tugmalar plagini\n" +"Pleyerni global tugmalar birikmalari yoki multimedia tugmalari bilan " +"boshqarish.\n" +"\n" +"Mualliflik huquqi (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Ishtirokchilar:\n" +"Mualliflik huquqi (C) 2006-2007 Vladimir Paskov \n" +"Mualliflik huquqi (C) 2000-2002 Ville Syrjälä ,\n" +"Bryn Davies ,\n" +"Jonatan A. Davis ,\n" +"Jeremi Tan " + +#: src/jack/jack-ng.cc:54 +msgid "JACK Output" +msgstr "JACK chiqishi" + +#: src/jack/jack-ng.cc:126 +msgid "Client name:" +msgstr "Mijoz nomi:" + +#: src/jack/jack-ng.cc:128 +msgid "Automatically connect to output ports" +msgstr "Chiqarish portlariga avtomatik ulanish" + +#: src/jack/jack-ng.cc:130 +msgid "Filter ports (regex, use any port if blank):" +msgstr "" +"Portlarni filtrlash (regex, bo'sh bo'lsa, istalgan portdan foydalaning):" + +#: src/jack/jack-ng.cc:136 +msgid "Connect to physical ports only" +msgstr "Faqat jismoniy portlarga ulanish" + +#: src/jack/jack-ng.cc:139 +msgid "Upmix to" +msgstr "Upmix to" + +#: src/jack/jack-ng.cc:141 +msgid "ports if input has fewer channels" +msgstr "ports if input has fewer channels" + +#: src/jack/jack-ng.cc:143 +msgid "Ignore insufficient number of ports" +msgstr "Portlar soni yetarli emasligiga e'tibor bermaslik" + +#: src/jack/jack-ng.cc:181 +msgid "No JACK output ports were found. Please check settings." +msgstr "JACK chiqish portlari topilmadi. Iltimos, sozlamalarni tekshiring." + +#: src/jack/jack-ng.cc:195 +#, c-format +msgid "Only %d JACK output ports were found but %d are required." +msgstr "Faqat %d JACK chiqish portlari topildi, lekin %d talab qilinadi." + +#: src/jack/jack-ng.cc:210 +#, c-format +msgid "Failed to connect to JACK port %s." +msgstr "%s JACK portiga ulanib bo‘lmadi.." + +#: src/jack/jack-ng.cc:230 +msgid "" +"JACK supports only floating-point audio. You must change the output bit " +"depth to floating-point in Audacious settings." +msgstr "" +"JACK faqat suzuvchi nuqtali audioni qo'llab-quvvatlaydi. Audacious " +"sozlamalarida chiqish bit chuqurligini suzuvchi nuqtaga o'zgartirishingiz " +"kerak." + +#: src/jack/jack-ng.cc:245 +msgid "Failed to connect to the JACK server; is it running?" +msgstr "JACK serveriga ulanib bo'lmadi, ishga tushirilganmi?" + +#: src/jack/jack-ng.cc:321 +#, c-format +msgid "" +"The JACK server requires a sample rate of %d Hz, but Audacious is playing at " +"%d Hz. Please use the Sample Rate Converter effect to correct the mismatch." +msgstr "" +"JACK serveri %dGts namuna tezligini talab qiladi, lekin Audacious %d Gts da " +"ijro ettirmoqda. Iltimos, nomuvofiqlikni tuzatish uchun Sample Rate " +"Converter effektidan foydalaning." + +#: src/ladspa/plugin.cc:416 +#, c-format +msgid "%s Settings" +msgstr "%s sozlamalari" + +#: src/ladspa/plugin.cc:482 +msgid "Module paths:" +msgstr "Modul yo'llari:" + +#: src/ladspa/plugin.cc:487 +msgid "" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." +msgstr "" +"Ikki nuqta bilan bir nechta yo'llarni ajrating.\n" +"Bu yoʻllar LADSPA_PATH ga qoʻshimcha ravishda qidiriladi.\n" +"Yangi yo'llarni qo'shgandan so'ng, yangi plaginlarni skanerlash uchun Enter " +"tugmasini bosing." + +#: src/ladspa/plugin.cc:508 +msgid "Available plugins:" +msgstr "Mavjud plaginlar:" + +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 +#: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 +#: src/modplug/plugin_main.cc:100 +msgid "Enable" +msgstr "Yoqish" + +#: src/ladspa/plugin.cc:527 +msgid "Enabled plugins:" +msgstr "Yoqilgan plaginlar:" + +#: src/ladspa/plugin.cc:543 +msgid "Settings" +msgstr "Sozlamalar" + +#: src/ladspa/plugin.cc:560 +msgid "" +"LADSPA Host for Audacious\n" +"Copyright 2011 John Lindgren" +msgstr "" +"Audacious uchun LADSPA xosti\n" +"Mualliflik huquqi 2011 Jon Lindgren" + +#: src/ladspa/plugin.h:78 +msgid "LADSPA Host" +msgstr "LADSPA xosti" + +#: src/lirc/lirc.cc:55 +msgid "LIRC Plugin" +msgstr "LIRC plagini" + +#: src/lirc/lirc.cc:379 +msgid "" +"A simple plugin to control Audacious using the LIRC remote control daemon\n" +"\n" +"Adapted for Audacious by:\n" +"Tony Vroon \n" +"Joonas Harjumäki \n" +"\n" +"Based on the XMMS LIRC plugin by:\n" +"Carl van Schaik \n" +"Christoph Bartelmus \n" +"Andrew O. Shadoura \n" +"\n" +"For more information about LIRC, see http://lirc.org." +msgstr "" +"LIRC masofadan boshqarish pulti yordamida Audacious ni boshqarish uchun " +"oddiy plagin\n" +"\n" +"Audacious uchun moslashtirilgan:\n" +"Toni Vroon \n" +"Joonas Harjumäki \n" +"\n" +"XMMS LIRC plaginida asoslangan:\n" +"Karl van Schaik \n" +"Kristof Bartelmus \n" +"Endryu O. Shadoura \n" +"\n" +"LIRC haqida ko'proq ma'lumot olish uchun http://lirc.org ga qarang." + +#: src/lirc/lirc.cc:390 +msgid "Connection" +msgstr "Ulanish" + +#: src/lirc/lirc.cc:391 +msgid "Reconnect to LIRC server" +msgstr "LIRC serveriga qayta ulanish" + +#: src/lirc/lirc.cc:393 +msgid "Wait before reconnecting:" +msgstr "Qayta ulanishdan oldin kutish:" + +#: src/lyricwiki-qt/lyricwiki.cc:90 +msgid "Lyrics" +msgstr "Qo'shiq matni" + +#: src/lyricwiki-qt/lyricwiki.cc:118 +msgid "Nowhere" +msgstr "Hech qayerda" + +#: src/lyricwiki-qt/lyricwiki.cc:119 +msgid "lyrics.ovh" +msgstr "lyrics.ovh" + +#: src/lyricwiki-qt/lyricwiki.cc:123 +msgid "Artist is truncated at the start, Title -- at the end" +msgstr "Artist boshida, sarlavha - oxirida qisqartiriladi" + +#: src/lyricwiki-qt/lyricwiki.cc:124 +msgid "Chars to truncate on:" +msgstr "Kesish uchun belgilar:" + +#: src/lyricwiki-qt/lyricwiki.cc:128 +msgid "Chars are ORed in RegExp, surrounded by whitespace" +msgstr "Chars are ORed in RegExp, surrounded by whitespace" + +#: src/lyricwiki-qt/lyricwiki.cc:129 +msgid "Chars to split on:" +msgstr "Bo'lish uchun belgilar:" + +#: src/lyricwiki-qt/lyricwiki.cc:130 +msgid "Further truncate those on chars" +msgstr "Belgilardagilarni yanada qisqartirish" + +#: src/lyricwiki-qt/lyricwiki.cc:136 +msgid "General" +msgstr "Umumiy" + +#: src/lyricwiki-qt/lyricwiki.cc:137 +msgid "Split title into artist and title on chars" +msgstr "Sarlavhani artistga va sarlavhani belgilarga ajrating" + +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:146 +msgid "Store fetched lyrics in local cache" +msgstr "Olingan qo'shiq matnlarini mahalliy keshda saqlash" + +#: src/lyricwiki-qt/lyricwiki.cc:148 +msgid "Local Storage" +msgstr "Mahalliy saqlash joyi" + +#: src/lyricwiki-qt/lyricwiki.cc:149 +msgid "Load lyric files (.lrc) from local storage" +msgstr "Qo'shiq matnlarini fayllarni (.lrc) mahalliy xotiradan yuklash" + +#: src/lyricwiki-qt/lyricwiki.cc:360 +#, c-format +msgid "Unable to fetch %s" +msgstr "%s olib bo‘lmadi" + +#: src/lyricwiki-qt/lyricwiki.cc:369 +#, c-format +msgid "Unable to parse %s" +msgstr "%s tahlil qilib boʻlmadi" + +#: src/lyricwiki-qt/lyricwiki.cc:407 +msgid "Looking for lyrics ..." +msgstr "Qo'shiq matni qidirilmoqda..." + +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 +msgid "Error" +msgstr "Xato" + +#: src/lyricwiki-qt/lyricwiki.cc:437 +msgid "Lyrics could not be found." +msgstr "Qoʻshiq matni topilmadi." + +#: src/lyricwiki-qt/lyricwiki.cc:518 +msgid "Missing title and/or artist." +msgstr "Sarlavha va/yoki artist yetishmayapti." + +#: src/lyricwiki-qt/lyricwiki.cc:576 +msgid "Save Locally" +msgstr "Mahalliy ravishda saqlash" + +#: src/lyricwiki-qt/lyricwiki.cc:584 +msgid "Refresh" +msgstr "Yangilash" + +#: src/m3u/m3u.cc:33 +msgid "M3U Playlists" +msgstr "M3U pleylistlari" + +#: src/metronom/metronom.cc:44 +msgid "Tact Generator" +msgstr "Takt generatori" + +#: src/metronom/metronom.cc:145 +#, c-format +msgid "Tact generator: %d bpm" +msgstr "Takt generatori: %d zarba/daq " + +#: src/metronom/metronom.cc:147 +#, c-format +msgid "Tact generator: %d bpm %d/%d" +msgstr " Takt generatori: %d zarba/daq %d/%d" + +#: src/metronom/metronom.cc:235 +msgid "" +"A Tact Generator by Martin Strauss \n" +"\n" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" +msgstr "" +"Martin Strauss tomonidan Takt generatori \n" +"\n" +"Undan foydalanish uchun URL manzilini qo'shing: tact://beats*num/den\n" +"masalan daqiqada 77 zarba ijro ettirish uchun tact://77\n" +"yoki tact://60*3/4 3/4 taktda 60 zarba/daqiqada ijro ettirish uchun" + +#: src/mixer/mixer.cc:43 +msgid "Channel Mixer" +msgstr "Kanal mikser" + +#: src/mixer/mixer.cc:255 +msgid "" +"Channel Mixer Plugin for Audacious\n" +"Copyright 2011-2012 John Lindgren and Michał Lipski" +msgstr "" +"Audacious uchun kanal mikser plagini\n" +"Mualliflik huquqi 2011-2012 Jon Lindgren va Mixal Lipski" + +#: src/mixer/mixer.cc:259 +msgid "Channel Mixer" +msgstr "Kanal mikser" + +#: src/mixer/mixer.cc:260 +msgid "Output channels:" +msgstr "Chiqish kanallari:" + +#: src/mms/mms.cc:35 +msgid "MMS Plugin" +msgstr "MMS plagin" + +#: src/mms/mms.cc:82 +msgid "Error connecting to MMS server" +msgstr "MMS serveriga ulanishda xatolik yuz berdi" + +#: src/modplug/modplugbmp.h:57 +msgid "ModPlug (Module Player)" +msgstr "ModPlug (modul pleyer)" + +#: src/modplug/plugin_main.cc:55 +msgid "Channels" +msgstr "Kanallar" + +#: src/modplug/plugin_main.cc:59 +msgid "Nearest (fastest)" +msgstr "Eng yaqin (eng tez)" + +#: src/modplug/plugin_main.cc:60 +msgid "Linear (fast)" +msgstr "Chiziqli (tez)" + +#: src/modplug/plugin_main.cc:61 +msgid "Spline (good)" +msgstr "Splayn (yaxshi)" + +#: src/modplug/plugin_main.cc:62 +msgid "Polyphase (best)" +msgstr "Ko'p fazali (eng yaxshi)" + +#: src/modplug/plugin_main.cc:63 +msgid "Sample rate" +msgstr "Namuna tezligi" + +#: src/modplug/plugin_main.cc:64 +msgid "22 kHz" +msgstr "22 kGts" + +#: src/modplug/plugin_main.cc:65 +msgid "44 kHz" +msgstr "44 kGts" + +#: src/modplug/plugin_main.cc:66 +msgid "48 kHz" +msgstr "48 kGts" + +#: src/modplug/plugin_main.cc:67 +msgid "96 kHz" +msgstr "96 kGts" + +#: src/modplug/plugin_main.cc:71 src/modplug/plugin_main.cc:76 +#: src/modplug/plugin_main.cc:81 +msgid "Level:" +msgstr "Daraja:" + +#: src/modplug/plugin_main.cc:77 +msgid "Cutoff:" +msgstr "Kesish:" + +#: src/modplug/plugin_main.cc:90 +msgid "Reverb" +msgstr "Reverberatsiya" + +#: src/modplug/plugin_main.cc:93 +msgid "Bass Boost" +msgstr "Bass kuchaytirish" + +#: src/modplug/plugin_main.cc:96 +msgid "Surround" +msgstr "Surround" + +#: src/modplug/plugin_main.cc:99 +msgid "Preamp" +msgstr "Oldindan kuchaytirgich" + +#: src/modplug/plugin_main.cc:106 +msgid "Oversample" +msgstr "Ortiqcha namuna" + +#: src/modplug/plugin_main.cc:107 +msgid "Noise reduction" +msgstr "Shovqinni kamaytirish" + +#: src/modplug/plugin_main.cc:108 +msgid "Play Amiga MODs" +msgstr "Amiga MOD larini ijro ettirish" + +#: src/modplug/plugin_main.cc:109 +msgid "Repeat" +msgstr "Takrorlash" + +#: src/modplug/plugin_main.cc:110 +msgid "Repeat count:" +msgstr "Takrorlanish soni:" + +#: src/modplug/plugin_main.cc:111 +msgid "To repeat forever, set the repeat count to -1." +msgstr "Abadiy takrorlash uchun takrorlash sonini -1 ga o'rnating." + +#: src/modplug/plugin_main.cc:124 src/sid/xs_config.cc:106 +msgid "These settings will take effect when Audacious is restarted." +msgstr "Ushbu sozlamalar Audacious qayta ishga tushirilganda kuchga kiradi." + +#: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 +#: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 +msgid "Stop After This Song" +msgstr "Bu qo'shiqdan keyin to'xtatish" + +#: src/moonstone/moonstone.cc:39 +msgid "Moonstone" +msgstr "Moonstone" + +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 +msgid "Reset to Defaults" +msgstr "Asl holatiga qaytarish" + +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 +msgid "Now Playing" +msgstr "Hozir ijro etilmoqda" + +#: src/moonstone/playlist_selection.cc:64 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 +msgid "Entries" +msgstr "Yozuvlar" + +#: src/mpg123/mpg123.cc:54 +msgid "MPG123 Plugin" +msgstr "MPG123 plagin" + +#: src/mpg123/mpg123.cc:81 +msgid "Advanced" +msgstr "Kengaytirilgan" + +#: src/mpg123/mpg123.cc:82 +msgid "Use accurate length calculation (slow)" +msgstr "To'g'ri uzunlik hisobini ishlatish (sekin)" + +#: src/mpg123/mpg123.cc:260 +msgid "Surround" +msgstr "Surround" + +#: src/mpris2/plugin.cc:38 +msgid "MPRIS 2 Server" +msgstr "MPRIS 2 serveri" + +#: src/neon/neon.cc:97 +msgid "Neon HTTP/HTTPS Plugin" +msgstr "Neon HTTP/HTTPS plagini" + +#: src/neon/neon.cc:526 +msgid "Error parsing redirect" +msgstr "Qayta yoʻnaltirishni tahlil qilishda xatolik yuz berdi" + +#: src/neon/neon.cc:540 +msgid "Unknown HTTP error" +msgstr "Noma'lum HTTP xatosi" + +#: src/neon/neon.cc:590 +msgid "Error parsing URL" +msgstr "URL ni tahlil qilishda xatolik yuz berdi" + +#: src/neon/neon.cc:660 +msgid "Too many redirects" +msgstr "Yo‘naltirishlar juda ko‘p" + +#: src/notify/event.cc:97 +msgid "Stopped" +msgstr "To'xtatildi" + +#: src/notify/event.cc:97 +msgid "Audacious is not playing." +msgstr "Audacious ijro ettirilmayapti." + +#: src/notify/notify.cc:39 +msgid "Desktop Notifications" +msgstr "Ish stoli bildirishnomalari" + +#: src/notify/notify.cc:57 +msgid "" +"Desktop Notifications Plugin for Audacious\n" +"Copyright (C) 2010 Maximilian Bogner\n" +"Copyright (C) 2011-2013 John Lindgren and Jean-Alexandre Anglès d'Auriac\n" +"\n" +"This plugin 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 3 of the License, or (at your option) " +"any later version.\n" +"\n" +"This plugin 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.\n" +"\n" +"You should have received a copy of the GNU General Public License along with " +"this program. If not, see ." +msgstr "" +"Audacious uchun ish stoli bildirishnomalari plagini\n" +"Mualliflik huquqi (C) 2010 Maksimilian Bogner\n" +"Mualliflik huquqi (C) 2011-2013 Jon Lindgren va Jan-Aleksandr Angles " +"d'Auriak\n" +"\n" +"Ushbu plagin bepul dasturiy ta'minotdir: siz uni qayta tarqatishingiz va/" +"yoki uni Free Software Foundation tomonidan e'lon qilingan GNU General " +"Public License shartlariga muvofiq, Litsenziyaning 3-versiyasi yoki (sizning " +"xohishingizga ko'ra) har qanday keyingi versiyada o'zgartirishingiz mumkin.\n" +"\n" +"Ushbu plagin foydali bo'ladi degan umidda tarqatiladi, lekin HAR QANDAY " +"KAFOLATSIZ; SOVLASH MUVOFIQligi yoki MAQSUS MAQSADGA MUVOFIQligi " +"to'g'risidagi nazarda tutilgan kafolatsiz ham. Batafsil ma'lumot uchun GNU " +"General Public License-ga qarang.\n" +"\n" +"Siz ushbu dastur bilan birga GNU General Public License nusxasini olishingiz " +"kerak edi. Aks holda, ga qarang. " + +#: src/notify/notify.cc:104 +msgid "Show playback controls" +msgstr "Ijro qilish boshqaruvlarini ko‘rsatish" + +#: src/notify/notify.cc:106 +msgid "Always show notification" +msgstr "Har doim bildirishnomani ko'rsatish" + +#: src/notify/notify.cc:108 +msgid "Include album name in notification" +msgstr "Bildirishnomaga albom nomini kiritish" + +#: src/notify/notify.cc:110 +msgid "Custom notification duration:" +msgstr "Moslashtirilgan bildirishnoma muddati:" + +#: src/notify/osd.cc:74 +msgid "Show" +msgstr "Ko'rsatish" + +#: src/openmpt/mpt.cc:50 +msgid "OpenMPT (Module Player)" +msgstr "OpenMPT (modul pleyer)" + +#: src/openmpt/mpt.cc:132 +msgid "" +"Module player based on libopenmpt\n" +"\n" +"Written by: Chris Spiegel " +msgstr "" +"Libopenmpt asosidagi modul pleer\n" +"\n" +"Muallif: Chris Spiegel " + +#: src/openmpt/mpt.cc:151 +msgid "Stereo separation:" +msgstr "Stereo ajratish:" + +#: src/openmpt/mpt.cc:153 +msgid "%" +msgstr "foiz" + +#: src/openmpt/mpt.cc:157 +msgid "Interpolation:" +msgstr "Interpolyatsiya:" + +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 +msgid "Linear" +msgstr "Chiziqli" + +#: src/openmpt/mptwrap.h:52 +msgid "Cubic" +msgstr "Kubik" + +#: src/openmpt/mptwrap.h:53 +msgid "Windowed sinc" +msgstr "Oynali sinc" + +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 +msgid "OSS4 Output" +msgstr "OSS4 chiqishi" + +#: src/oss4/oss.h:72 +msgid "OSS3 Output" +msgstr "OSS3 chiqishi" + +#: src/oss4/plugin.cc:35 +msgid "Default device" +msgstr "Standart qurilma" + +#: src/oss4/plugin.cc:78 +msgid "Audio device:" +msgstr "Audio qurilma:" + +#: src/oss4/plugin.cc:81 +msgid "Use alternate device:" +msgstr "Muqobil qurilmadan foydalanish:" + +#: src/oss4/plugin.cc:85 +msgid "Save volume between sessions." +msgstr "Seanslar orasidagi ovoz balandligini saqlash." + +#: src/oss4/plugin.cc:87 +msgid "Enable format conversions made by the OSS software." +msgstr "" +"OSS dasturi tomonidan amalga oshirilgan formatni o'zgartirishni yoqish." + +#: src/oss4/plugin.cc:89 +msgid "Enable exclusive mode to prevent virtual mixing." +msgstr "" +"Virtual aralashtirishning oldini olish uchun eksklyuziv rejimni yoqish." + +#: src/oss4/plugin.cc:101 +msgid "" +"OSS4 Output Plugin for Audacious\n" +"Copyright 2010-2012 Michał Lipski\n" +"\n" +"I would like to thank people on #audacious, especially Tony Vroon and John " +"Lindgren and of course the authors of the previous OSS plugin." +msgstr "" +"Audacious uchun OSS4 chiqish plagini\n" +"Mualliflik huquqi 2010-2012 Michał Lipski\n" +"\n" +"Men #audacious-dagi odamlarga, ayniqsa Toni Vroon va Jon Lindgrenga va, " +"albatta, avvalgi OSS plaginining mualliflariga minnatdorchilik " +"bildirmoqchiman. " + +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "Ijro" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 +msgid "Playlist Manager" +msgstr "Pleylist menejeri" + +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 +msgid "_Remove" +msgstr "_O'chirish" + +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 +msgid "Ren_ame" +msgstr "Nomini o'zgartirish" + +#: src/pls/pls.cc:35 +msgid "PLS Playlists" +msgstr "PLS pleylistlari" + +#: src/psf/plugin.cc:53 +msgid "OpenPSF PSF1/PSF2 Decoder" +msgstr "OpenPSF PSF1/PSF2 dekoderi" + +#: src/psf/plugin.cc:270 +msgid "OpenPSF Configuration" +msgstr "OpenPSF konfiguratsiyasi" + +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 +msgid "Ignore length from file" +msgstr "Fayldagi uzunlikka e'tibor bermaslik" + +#: src/pulse/pulse_audio.cc:42 +msgid "PulseAudio Output" +msgstr "PulseAudio chiqishi" + +#: src/pulse/pulse_audio.cc:72 +msgid "Context name:" +msgstr "Kontekst nomi:" + +#: src/pulse/pulse_audio.cc:74 +msgid "Stream name:" +msgstr "Oqim nomi:" + +#: src/pulse/pulse_audio.cc:575 +msgid "" +"Audacious PulseAudio Output Plugin\n" +"\n" +"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.\n" +"\n" +"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.\n" +"\n" +"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." +msgstr "" +"Audacious PulseAudio chiqish plagini\n" +"\n" +"Bu dastur bepul dastur hisoblanadi; siz uni qayta tarqatishingiz va/yoki uni " +"Free Software Foundation tomonidan e'lon qilingan GNU General Public License " +"shartlariga muvofiq o'zgartirishingiz mumkin; Litsenziyaning 2-versiyasi " +"yoki (sizning xohishingizga ko'ra) har qanday keyingi versiyasi.\n" +"\n" +"Ushbu dastur foydali bo'ladi degan umidda tarqatiladi, lekin HAR QANDAY " +"KAFOLATSIZ; SOVLASH MUVOFIQligi yoki MAQSUS MAQSADGA MUVOFIQligi " +"to'g'risidagi nazarda tutilgan kafolatsiz ham. Batafsil ma'lumot uchun GNU " +"General Public License-ga qarang.\n" +"\n" +"Siz ushbu dastur bilan birga GNU General Public License nusxasini olishingiz " +"kerak edi; bo'lmasa, Free Software Foundation, Inc., 51 Franklin Street, " +"Fifth Floor, Boston, MA 02110-1301, AQSH ga yozing." + +#: src/qtaudio/qtaudio.cc:44 +msgid "QtMultimedia Output" +msgstr "QtMultimedia chiqishi" + +#: src/qtaudio/qtaudio.cc:72 +msgid "" +"QtMultimedia Audio Output Plugin for Audacious\n" +"Copyright 2014 William Pitcock\n" +"\n" +"Based on SDL Output Plugin for Audacious\n" +"Copyright 2010 John Lindgren" +msgstr "" +"Audacious uchun QtMultimedia audio chiqish plagini\n" +"Mualliflik huquqi 2014 Uilyam Pitkok\n" +"\n" +"Audacious uchun SDL chiqish plaginiga asoslangan\n" +"Mualliflik huquqi 2010 Jon Lindgren" + +#: src/qtglspectrum/gl-spectrum.cc:41 +msgid "" +"OpenGL Spectrum Analyzer for Audacious\n" +"Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" +"Copyright 2014, 2020 Ariadne Conill\n" +"\n" +"Based on the XMMS plugin:\n" +"Copyright 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson, and " +"4Front Technologies\n" +"\n" +"License: GPLv2+" +msgstr "" +"Audacious uchun OpenGL Spektr analizatori\n" +"Mualliflik huquqi 2013 Kristof Bude, Jon Lindgren va Karlo Bramini\n" +"Mualliflik huquqi 2014, 2020 Ariadne Conill\n" +"\n" +"XMMS plagini asosida:\n" +"Mualliflik huquqi 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Tomas " +"Nilsson va 4Front Technologies\n" +"\n" +"Litsenziya: GPLv2+ " + +#: src/qthotkey/gui.cc:177 +msgid "Press a key combination inside a text field." +msgstr "Matn maydoni ichiga tugmalar birikmasini bosing." + +#: src/qthotkey/plugin.cc:107 +msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2020 i.Dark_Templar \n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributors include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä ,\n" +" Bryn Davies ,\n" +" Jonathan A. Davis ,\n" +" Jeremy Tan " +msgstr "" +"Global tezkor tugma plagini\n" +"Pleyerni global tugmalar birikmalari yoki multimedia tugmalari bilan " +"boshqaring.\n" +"\n" +"Mualliflik huquqi (C) 2020 i.Dark_Templar \n" +"Mualliflik huquqi (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Ishtirokchilar:\n" +"Mualliflik huquqi (C) 2006-2007 Vladimir Paskov \n" +"Mualliflik huquqi (C) 2000-2002 Ville Syrjälä ,\n" +"Bryn Davies ,\n" +"Jonatan A. Devis ,\n" +"Jeremi Tan " + +#: src/qtui/menus.cc:109 +msgid "_Open Folder ..." +msgstr "Jildni ochish..." + +#: src/qtui/menus.cc:115 +msgid "_Add Folder ..." +msgstr "Jild qo'shish..." + +#: src/qtui/menus.cc:128 +msgid "_Log Inspector ..." +msgstr "Jurnal inspektori..." + +#: src/qtui/menus.cc:218 +msgid "_Find ..." +msgstr "Topish..." + +#: src/qtui/menus.cc:254 src/skins/menus.cc:80 src/skins-qt/menus.cc:70 +msgid "Audio Settings ..." +msgstr "Audio sozlamalari..." + +#: src/qtui/playlist_model.cc:188 +msgid "Q#" +msgstr "Q#" + +#: src/qtui/playlist_model.cc:190 +msgid "T#" +msgstr "T#" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + +#: src/qtui/qtui.cc:40 +msgid "Qt Interface" +msgstr "Qt interfeysi" + +#: src/qtui/search_bar.cc:46 +msgid "Search playlist" +msgstr "Pleylistni qidirish" + +#: src/qtui/settings.cc:58 +msgid "Always" +msgstr "Har doim" + +#: src/qtui/settings.cc:59 +msgid "Auto-hide" +msgstr "Avtomatik yashirish" + +#: src/qtui/settings.cc:60 +msgid "Never" +msgstr "Hech qachon" + +#: src/qtui/settings.cc:64 +msgid "Show playlist tabs:" +msgstr "Pleylist yorliqlarini ko'rsatish:" + +#: src/qtui/settings.cc:78 +msgid "Use bold font for column headers" +msgstr "Ustun sarlavhalari uchun qalin shriftdan foydalanish" + +#: src/resample/resample.cc:43 +msgid "Sample Rate Converter" +msgstr "Namuna tezligi konvertori" + +#: src/resample/resample.cc:183 +msgid "" +"Sample Rate Converter Plugin for Audacious\n" +"Copyright 2010-2012 John Lindgren" +msgstr "" +"Audacious uchun namuna tezligi plagini\n" +"Mualliflik huquqi 2010-2012 Jon Lindgren " + +#: src/resample/resample.cc:187 +msgid "Skip/repeat samples" +msgstr "Namunalarni o'tkazib yuborish/takrorlash" + +#: src/resample/resample.cc:188 +msgid "Linear interpolation" +msgstr "Chiziqli interpolyatsiya" + +#: src/resample/resample.cc:189 +msgid "Fast sinc interpolation" +msgstr "Tez sink interpolatsiyasi" + +#: src/resample/resample.cc:190 +msgid "Medium sinc interpolation" +msgstr "O'rta sink interpolyatsiyasi" + +#: src/resample/resample.cc:191 +msgid "Best sinc interpolation" +msgstr "Eng yaxshi sink interpolyatsiyasi" + +#: src/resample/resample.cc:195 +msgid "Conversion" +msgstr "Konvertatsiya" + +#: src/resample/resample.cc:196 +msgid "Method:" +msgstr "Usul:" + +#: src/resample/resample.cc:199 src/soxr/sox-resampler.cc:203 +msgid "Rate:" +msgstr "Baho:" + +#: src/resample/resample.cc:202 +msgid "Rate Mappings" +msgstr "Baholash xaritalari" + +#: src/resample/resample.cc:203 +msgid "Use rate mappings" +msgstr "Daraja xaritalashdan foydalanish" + +#: src/resample/resample.cc:205 +msgid "8 kHz:" +msgstr "8 kGts:" + +#: src/resample/resample.cc:209 +msgid "16 kHz:" +msgstr "16 kGts:" + +#: src/resample/resample.cc:213 +msgid "22.05 kHz:" +msgstr "22.05 kGts:" + +#: src/resample/resample.cc:217 +msgid "32.0 kHz:" +msgstr "32.0 kGts:" + +#: src/resample/resample.cc:221 +msgid "44.1 kHz:" +msgstr "44.1 kGts:" + +#: src/resample/resample.cc:225 +msgid "48 kHz:" +msgstr "48 kGts:" + +#: src/resample/resample.cc:229 +msgid "88.2 kHz:" +msgstr "88.2 kGts:" + +#: src/resample/resample.cc:233 +msgid "96 kHz:" +msgstr "96 kGts:" + +#: src/resample/resample.cc:237 +msgid "176.4 kHz:" +msgstr "176.4 kGts:" + +#: src/resample/resample.cc:241 +msgid "192 kHz:" +msgstr "192 kGts:" + +#: src/scrobbler2/config_window.cc:19 +msgid "Checking Last.fm access ..." +msgstr "Last.fm ga kirish tekshirilmoqda..." + +#: src/scrobbler2/config_window.cc:27 +msgid "" +"Your scrobbles are being saved on your computer temporarily. They will be " +"submitted as soon as Audacious is allowed access." +msgstr "" +"Scrobbllar kompyuteringizda vaqtinchalik saqlanmoqda. Ular Audacious ga " +"kirishga ruxsat berilgan zahoti yuboriladi." + +#: src/scrobbler2/config_window.cc:33 +#, c-format +msgid "Permission granted. Scrobbling for user %s." +msgstr "Ruxsat berildi. %s foydalanuvchi uchun scrobbling." + +#: src/scrobbler2/config_window.cc:37 +msgid "" +"Permission denied. Open the following URL in a browser, allow Audacious " +"access to your account, and then click 'Check Permission' again:" +msgstr "" +"Ruxsat berilmadi. Brauzerda quyidagi URL manzilini oching, Audacious ga " +"hisobingizga kirishga ruxsat bering va “Ruxsatni tekshirish” tugmasini yana " +"bir marta bosing:" + +#: src/scrobbler2/config_window.cc:47 +msgid "There was a problem contacting Last.fm." +msgstr "Last.fm bilan bog‘lanishda muammo yuz berdi." + +#: src/scrobbler2/config_window.cc:86 +msgid "Check Permission" +msgstr "Ruxsatni tekshiring" + +#: src/scrobbler2/config_window.cc:87 +msgid "Revoke Permission" +msgstr "Ruxsatni bekor qilish" + +#: src/scrobbler2/config_window.cc:91 +msgid "You need to allow Audacious to scrobble tracks to your Last.fm account." +msgstr "" +"Audacious ga Last.fm hisobingizga treklarni siljitishga ruxsat berishingiz " +"kerak." + +#: src/scrobbler2/scrobbler.cc:29 +msgid "Scrobbler 2.0" +msgstr "Scrobbler 2.0" + +#: src/scrobbler2/scrobbler.cc:226 +msgid "" +"The Scrobbler plugin could not be started.\n" +"There might be a problem with your installation." +msgstr "" +"Scrobbler plaginini ishga tushirib bo‘lmadi.\n" +"O'rnatishingizda muammo bo'lishi mumkin." + +#: src/scrobbler2/scrobbler.cc:291 +msgid "" +"Audacious Scrobbler Plugin 2.0 by Pitxyoki,\n" +"\n" +"Copyright © 2012-2013 Luís M. Picciochi Oliveira \n" +"\n" +"Thanks to John Lindgren for giving me a hand at the beginning of this " +"project.\n" +"\n" +msgstr "" +"itxyoki tomonidan Audacious Scrobbler plagini 2.0,\n" +"\n" +"Mualliflik huquqi © 2012-2013 Luís M. Picciochi Oliveira \n" +"\n" +"Ushbu loyihaning boshida menga yordam bergani uchun Jon Lindgrenga rahmat.\n" +"\n" + +#: src/scrobbler2/scrobbler_communication.cc:663 +msgid "" +"Audacious is now using an improved version of the Last.fm Scrobbler.\n" +"Please check the Preferences for the Scrobbler plugin." +msgstr "" +"Audacious endi Last.fm Scrobblerning takomillashtirilgan versiyasidan " +"foydalanmoqda.\n" +"Iltimos, Scrobbler plaginining imkoniyatlarini tekshiring." + +#: src/sdlout/sdlout.cc:43 +msgid "SDL Output" +msgstr "SDL chiqishi" + +#: src/sdlout/sdlout.cc:72 +msgid "" +"SDL Output Plugin for Audacious\n" +"Copyright 2010 John Lindgren" +msgstr "" +"Audacious uchun SDL chiqish plagini\n" +"Mualliflik huquqi 2010 Jon Lindgren" + +#: src/search-tool/library.cc:35 src/search-tool/library.cc:46 +#: src/search-tool-qt/library.cc:35 src/search-tool-qt/library.cc:46 +msgid "Library" +msgstr "Kutubxona" + +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 +#, c-format +msgid "%d song" +msgid_plural "%d songs" +msgstr[0] "%d qo'shiq " + +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 +msgid "of this genre" +msgstr "ushbu janrdan" + +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 +msgid "on" +msgstr "" + +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 +msgid "by" +msgstr "" + +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 +msgid "Number of results to show:" +msgstr "Ko'rsatiladigan natijalar soni:" + +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 +msgid "Rescan library at startup" +msgstr "Ishga tushganda kutubxonani qayta ko'rib chiqish" + +#: src/search-tool-qt/search-tool-qt.cc:170 +msgid "Monitor library for changes" +msgstr "O'zgarishlar uchun kutubxonani kuzatib borish" + +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 +msgid "" +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." +msgstr "" +"Musiqa kutubxonangizni Audacious ga import qilish uchun jildni tanlang va " +"keyin “yangilash” belgisini bosing." + +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 +msgid "Please wait ..." +msgstr "Iltimos kuting... " + +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 +msgid "Choose Folder" +msgstr "Jildni tanlang" + +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 +msgid "Search library" +msgstr "Kutubxonani qidirish" + +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 +#, c-format +msgid "%d of %d result shown" +msgid_plural "%d of %d results shown" +msgstr[0] "%d %d dan natijalari ko'rsatilgan" + +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 +#, c-format +msgid "%d result" +msgid_plural "%d results" +msgstr[0] "%d natija" + +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 +msgid "_Create Playlist" +msgstr "Pleylist yaratish" + +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 +msgid "_Add to Playlist" +msgstr "Pleylistga qo'shish" + +#: src/sid/xmms-sid.cc:43 +msgid "SID Player" +msgstr "SID pleyer" + +#: src/sid/xs_config.cc:62 +msgid "Channels:" +msgstr "Kanallar:" + +#: src/sid/xs_config.cc:68 +msgid "Emulation" +msgstr "Emulyatsiya" + +#: src/sid/xs_config.cc:69 +msgid "Emulate MOS 8580 (default: MOS 6581)" +msgstr "MOS 8580 ni emulyatsiya qilish (standart: MOS 6581)" + +#: src/sid/xs_config.cc:71 +msgid "Do not automatically select chip model" +msgstr "Chip modelini avtomatik tanlamaslik" + +#: src/sid/xs_config.cc:73 +msgid "Emulate filter" +msgstr "Filtrni emulyatsiya qilish" + +#: src/sid/xs_config.cc:75 +msgid "Clock speed:" +msgstr "Soat tezligi:" + +#: src/sid/xs_config.cc:78 +msgid "Do not automatically select clock speed" +msgstr "Soat tezligini avtomatik tanlamaslik" + +#: src/sid/xs_config.cc:80 +msgid "Playback time" +msgstr "Ijro vaqti" + +#: src/sid/xs_config.cc:81 +msgid "Set maximum playback time:" +msgstr "Maksimal ijro vaqtini sozlash:" + +#: src/sid/xs_config.cc:87 +msgid "Use only when song length is unknown" +msgstr "Faqat qo'shiq uzunligi noma'lum bo'lganda foydalanish" + +#: src/sid/xs_config.cc:90 +msgid "Set minimum playback time:" +msgstr "Minimal ijro vaqtini sozlash:" + +#: src/sid/xs_config.cc:96 +msgid "Subtunes" +msgstr "Subtunes" + +#: src/sid/xs_config.cc:97 +msgid "Enable subtunes" +msgstr "Subtunes yoqish" + +#: src/sid/xs_config.cc:99 +msgid "Ignore subtunes shorter than:" +msgstr "" + +#: src/sid/xs_config.cc:105 +msgid "Note" +msgstr "Eslatma" + +#: src/silence-removal/silence-removal.cc:39 +msgid "Silence Removal" +msgstr "Sukunatni olib tashlash" + +#: src/silence-removal/silence-removal.cc:58 +msgid "" +"Silence Removal Plugin for Audacious\n" +"Copyright 2014 John Lindgren" +msgstr "" +"Audacious uchun Sukunatni olib tashlash plagini\n" +"Mualliflik huquqi 2014 Jon Lindgren " + +#: src/silence-removal/silence-removal.cc:67 +msgid "Silence Removal" +msgstr "Sukunatni olib tashlash" + +#: src/silence-removal/silence-removal.cc:68 +msgid "Threshold:" +msgstr "Chegara:" + +#: src/silence-removal/silence-removal.cc:70 +msgid "dB" +msgstr "dB" + +#: src/skins/actions.cc:45 src/skins-qt/actions.cc:43 +msgid "Repeat points cleared." +msgstr "Takrorlash nuqtalari tozalandi." + +#: src/skins/actions.cc:60 src/skins-qt/actions.cc:58 +msgid "Repeat point A set." +msgstr "A nuqta to'plamini takrorlash." + +#: src/skins/actions.cc:65 src/skins-qt/actions.cc:63 +msgid "Repeat point B set." +msgstr "B nuqta to'plamini takrorlash." + +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 +msgid "Preamp" +msgstr "Kuchaytirgich" + +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 +msgid "31 Hz" +msgstr "31 Gts" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "63 Hz" +msgstr "63 Gts" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "125 Hz" +msgstr "125 Gts" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "250 Hz" +msgstr "250 Gts" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "500 Hz" +msgstr "500 Gts" + +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 +msgid "1 kHz" +msgstr "1 kGts" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "2 kHz" +msgstr "2 kGts" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "4 kHz" +msgstr "4 kGts" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "8 kHz" +msgstr "8 kGts" + +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 +msgid "16 kHz" +msgstr "16 kGts" + +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 +msgid "Audacious Equalizer" +msgstr "Audacious ekvalayzeri" + +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 +msgid "Recording on" +msgstr "Yozib olish yoqilgan" + +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 +msgid "Recording off" +msgstr "Yozib olish oʻchirilgan" + +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 +#, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "Izlash %d:%-2.2d / %d:%-2.2d" + +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 +#, c-format +msgid "Volume: %d%%" +msgstr "Ovoz balandligi: %d%%" + +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 +#, c-format +msgid "Balance: %d%% left" +msgstr "Balans: %d%% chap" + +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 +msgid "Balance: center" +msgstr "Balans: markaz" + +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 +#, c-format +msgid "Balance: %d%% right" +msgstr "Balans: %d%% oʻng" + +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 +msgid "Options Menu" +msgstr "Variantlar menyusi" + +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 +msgid "Disable 'Always On Top'" +msgstr "\"Har doim ustida\" ni o'chirish" + +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 +msgid "Enable 'Always On Top'" +msgstr "“Har doim ustida”ni yoqish" + +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 +msgid "File Info Box" +msgstr "Fayl ma'lumotlar qutisi" + +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 +#: src/skins-qt/menus.cc:142 +msgid "Double Size" +msgstr "Ikki o'lchamli" + +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 +msgid "Visualizations" +msgstr "Vizualizatsiya" + +#: src/skins/menus.cc:74 src/skins-qt/menus.cc:64 +msgid "Volume Up" +msgstr "Ovozni oshirish" + +#: src/skins/menus.cc:75 src/skins-qt/menus.cc:65 +msgid "Volume Down" +msgstr "Ovozni pasaytirish" + +#: src/skins/menus.cc:77 src/skins-qt/menus.cc:67 +msgid "Effects ..." +msgstr "Effektlar..." + +#: src/skins/menus.cc:84 src/skins-qt/menus.cc:74 +msgid "Open Files ..." +msgstr "Fayllarni ochish..." + +#: src/skins/menus.cc:85 src/skins-qt/menus.cc:76 +msgid "Open URL ..." +msgstr "URL ni ochish..." + +#: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 +msgid "Playlist" +msgstr "Pleylist" + +#: src/skins/menus.cc:90 src/skins-qt/menus.cc:81 +msgid "Output" +msgstr "Chiqarish" + +#: src/skins/menus.cc:91 src/skins-qt/menus.cc:82 +msgid "View" +msgstr "Ko'rinish" + +#: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 +#: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 +msgid "Services" +msgstr "Xizmatlar" + +#: src/skins/menus.cc:95 src/skins-qt/menus.cc:86 +msgid "About ..." +msgstr "Haqida..." + +#: src/skins/menus.cc:96 src/skins-qt/menus.cc:87 +msgid "Settings ..." +msgstr "Sozlamalar..." + +#: src/skins/menus.cc:97 src/skins-qt/menus.cc:88 +msgid "Quit" +msgstr "Chiqish" + +#: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 +#: src/skins-qt/menus.cc:229 +msgid "Song Info ..." +msgstr "Qo'shiq haqida ma'lumot..." + +#: src/skins/menus.cc:105 src/skins-qt/menus.cc:96 +msgid "Shuffle by Album" +msgstr "Albom bo'yicha aralashtirish" + +#: src/skins/menus.cc:106 src/skins-qt/menus.cc:97 +msgid "No Playlist Advance" +msgstr "" + +#: src/skins/menus.cc:117 src/skins-qt/menus.cc:108 +msgid "Set A-B Repeat" +msgstr "" + +#: src/skins/menus.cc:118 src/skins-qt/menus.cc:109 +msgid "Clear A-B Repeat" +msgstr "" + +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 +msgid "Jump to Song ..." +msgstr "Qo'shiqqa o'tish..." + +#: src/skins/menus.cc:121 src/skins-qt/menus.cc:113 +msgid "Jump to Time ..." +msgstr "Jump to Time..." + +#: src/skins/menus.cc:125 src/skins-qt/menus.cc:118 +msgid "Play/Resume" +msgstr "Ijro etish/Davom etish" + +#: src/skins/menus.cc:127 src/skins-qt/menus.cc:120 +msgid "New Playlist" +msgstr "Yangi pleylist" + +#: src/skins/menus.cc:128 src/skins-qt/menus.cc:121 +msgid "Rename Playlist ..." +msgstr "Pleylist nomini oʻzgartirish..." + +#: src/skins/menus.cc:129 src/skins-qt/menus.cc:122 +msgid "Remove Playlist" +msgstr "Pleylistni olib tashlash" + +#: src/skins/menus.cc:131 src/skins-qt/menus.cc:124 +msgid "Previous Playlist" +msgstr "Oldingi pleylist" + +#: src/skins/menus.cc:132 src/skins-qt/menus.cc:125 +msgid "Next Playlist" +msgstr "Keyingi pleylist" + +#: src/skins/menus.cc:134 src/skins-qt/menus.cc:127 +msgid "Import Playlist ..." +msgstr "Pleylistni import qilish..." + +#: src/skins/menus.cc:135 src/skins-qt/menus.cc:128 +msgid "Export Playlist ..." +msgstr "Pleylistni eksport qilish..." + +#: src/skins/menus.cc:137 src/skins-qt/menus.cc:130 +msgid "Playlist Manager ..." +msgstr "Pleylist menejeri..." + +#: src/skins/menus.cc:138 src/skins-qt/menus.cc:131 +msgid "Queue Manager ..." +msgstr "Navbat menejeri..." + +#: src/skins/menus.cc:140 src/skins-qt/menus.cc:133 +msgid "Refresh Playlist" +msgstr "Pleylistni yangilash" + +#: src/skins/menus.cc:144 src/skins-qt/menus.cc:137 +msgid "Show Playlist Editor" +msgstr "Pleylist muharririni ko'rsatish" + +#: src/skins/menus.cc:145 src/skins-qt/menus.cc:138 +msgid "Show Equalizer" +msgstr "Ekvalayzerni ko'rsatish" + +#: src/skins/menus.cc:147 src/skins-qt/menus.cc:140 +msgid "Show Remaining Time" +msgstr "Qolgan vaqtni ko'rsatish" + +#: src/skins/menus.cc:150 src/skins-qt/menus.cc:143 +msgid "Always on Top" +msgstr "Har doim ustida" + +#: src/skins/menus.cc:151 src/skins-qt/menus.cc:145 +msgid "On All Workspaces" +msgstr "Barcha ish joylarida" + +#: src/skins/menus.cc:153 src/skins-qt/menus.cc:148 +msgid "Roll Up Player" +msgstr "Roll Up pleyeri" + +#: src/skins/menus.cc:154 src/skins-qt/menus.cc:149 +msgid "Roll Up Playlist Editor" +msgstr "Roll Up pleylist muharriri" + +#: src/skins/menus.cc:155 src/skins-qt/menus.cc:150 +msgid "Roll Up Equalizer" +msgstr "Roll Up ekvalayzeri" + +#: src/skins/menus.cc:163 src/skins-qt/menus.cc:158 +msgid "Add URL ..." +msgstr "URL qo‘shish..." + +#: src/skins/menus.cc:164 src/skins-qt/menus.cc:160 +msgid "Add Files ..." +msgstr "Fayllarni qo'shish..." + +#: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 +msgid "By Title" +msgstr "Sarlavha bo'yicha" + +#: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 +msgid "By File Name" +msgstr "Fayl nomi bo'yicha" + +#: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 +msgid "By File Path" +msgstr "Fayl yo'li bo'yicha" + +#: src/skins/menus.cc:176 src/skins-qt/menus.cc:172 +msgid "Remove All" +msgstr "Hammasini o'chirish" + +#: src/skins/menus.cc:177 src/skins-qt/menus.cc:173 +msgid "Clear Queue" +msgstr "Navbatni tozalash" + +#: src/skins/menus.cc:179 src/skins-qt/menus.cc:175 +msgid "Remove Unavailable Files" +msgstr "Mavjud bo'lmagan fayllarni o'chirish" + +#: src/skins/menus.cc:180 src/skins-qt/menus.cc:176 +msgid "Remove Duplicates" +msgstr "Dublikatlarni o'chirish" + +#: src/skins/menus.cc:182 src/skins-qt/menus.cc:178 +msgid "Remove Unselected" +msgstr "Tanlanmaganni o'chirish" + +#: src/skins/menus.cc:183 src/skins-qt/menus.cc:179 +msgid "Remove Selected" +msgstr "Tanlanganni o'chirish" + +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 +msgid "Search and Select" +msgstr "Qidirish va tanlash" + +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 +msgid "Invert Selection" +msgstr "Tanlovni teskari aylantirish" + +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 +msgid "Select None" +msgstr "Hech birini tanlamaslik" + +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 +msgid "Select All" +msgstr "Hammasini belgilash" + +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 +msgid "By Track Number" +msgstr "Trek raqami bo'yicha" + +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 +msgid "By Artist" +msgstr "Artist bo'yicha" + +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 +msgid "By Album" +msgstr "Albom bo'yicha" + +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 +msgid "By Album Artist" +msgstr "Albom artisti bo'yicha" + +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 +msgid "By Release Date" +msgstr "Chiqarilgan sana bo'yicha" + +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 +msgid "By Genre" +msgstr "Janr bo'yicha" + +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 +msgid "By Length" +msgstr "Uzunlik bo'yicha" + +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 +msgid "By Custom Title" +msgstr "Maxsus sarlavha bo'yicha" + +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 +msgid "By Comment" +msgstr "Izoh bo'yicha" + +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 +msgid "Randomize List" +msgstr "Ro'yxatni tasodifiy qilish" + +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 +msgid "Reverse List" +msgstr "Ro'yxatni teskari qilish" + +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 +msgid "Sort Selected" +msgstr "Tanlanganlarni saralash" + +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 +msgid "Sort List" +msgstr "Roʻyxatni saralash" + +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 +msgid "Open Containing Folder" +msgstr "O'z ichiga olgan jildni ochish" + +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 +msgid "Cut" +msgstr "Kesish" + +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 +msgid "Copy" +msgstr "Nusxalash" + +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 +msgid "Paste" +msgstr "Joylashtirish" + +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 +msgid "Paste at End" +msgstr "Oxirida joylashtirish" + +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 +msgid "Queue/Unqueue" +msgstr "Navbat/navbatni bekor qilish" + +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 +#, c-format +msgid "%s (%d of %d)" +msgstr "%s (%d %d dan)" + +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 +msgid "Audacious Playlist Editor" +msgstr "Audacious pleylist muharriri" + +#: src/skins/plugin.cc:49 src/skins-qt/plugin.cc:64 +msgid "Winamp Classic Interface" +msgstr "Winamp klassik interfeysi" + +#: src/skins-qt/menus.cc:75 +msgid "Open Folder ..." +msgstr "Jildni ochish..." + +#: src/skins-qt/menus.cc:159 +msgid "Add Folder ..." +msgstr "Jild qo'shish..." + +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 +msgid "Player:" +msgstr "Pleyer:" + +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 +msgid "Select main player window font:" +msgstr "Asosiy pleyer oynasi shriftini tanlash:" + +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 +msgid "Playlist:" +msgstr "Pleylist:" + +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 +msgid "Select playlist font:" +msgstr "Pleylist shriftini tanlash:" + +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 +msgid "Skin" +msgstr "Skin" + +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "Har qanday oyna fokuslanganda faol sarlavha panelini ko'rsatish" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 +msgid "Fonts" +msgstr "Shriftlar" + +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "Bitmap shriftlaridan foydalaning (faqat ASCII ni qo'llab-quvvatlaydi)" + +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 +msgid "Scroll song title" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 +msgid "Scroll song title in both directions" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 +msgid "Analyzer" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 +msgid "Scope" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 +msgid "Voiceprint / VU meter" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 +msgid "Off" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 +#: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 +msgid "Normal" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 +#: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 +msgid "Fire" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 +msgid "Vertical lines" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 +msgid "Lines" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 +msgid "Bars" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 +msgid "Slowest" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 +msgid "Slow" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 +#: src/soxr/sox-resampler.cc:180 +msgid "Medium" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 +msgid "Fast" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 +msgid "Fastest" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 +msgid "Dots" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 +msgid "Line" +msgstr "Satr" + +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 +msgid "Solid" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 +msgid "Ice" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 +msgid "Smooth" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 +msgid "Coloring:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 +msgid "Style:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 +msgid "Falloff:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 +msgid "Peak falloff:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 +msgid "Scope Style:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 +msgid "Voiceprint Coloring:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 +msgid "VU Meter Style:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 +msgid "Type" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 +msgid "Visualization type:" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 +msgid "Analyzer" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 +msgid "Show peaks" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 +msgid "Visualization" +msgstr "Vizualizatsiya" + +#: src/skins-qt/skinselector.cc:98 src/skins/skinselector.cc:111 +msgid "Archived Winamp 2.x skin" +msgstr "" + +#: src/skins-qt/skinselector.cc:102 src/skins/skinselector.cc:115 +msgid "Unarchived Winamp 2.x skin" +msgstr "" + +#: src/sndfile/plugin.cc:38 +msgid "Sndfile Plugin" +msgstr "" + +#: src/sndfile/plugin.cc:372 +msgid "" +"Based on the xmms_sndfile plugin:\n" +"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" +"\n" +"Adapted for Audacious by Tony Vroon \n" +"\n" +"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.\n" +"\n" +"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.\n" +"\n" +"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." +msgstr "" + +#: src/sndio/sndio.cc:43 +msgid "Sndio Output" +msgstr "" + +#: src/sndio/sndio.cc:98 +msgid "Device (blank for default):" +msgstr "" + +#: src/sndio/sndio.cc:100 +msgid "Save and restore volume:" +msgstr "" + +#: src/sndio/sndio.cc:181 +#, c-format +msgid "Sndio error: Unsupported audio format (%d)" +msgstr "" + +#: src/sndio/sndio.cc:192 +msgid "Sndio error: sio_open() failed" +msgstr "" + +#: src/sndio/sndio.cc:221 +msgid "Sndio error: sio_setpar() failed" +msgstr "" + +#: src/sndio/sndio.cc:233 +msgid "Sndio error: sio_start() failed" +msgstr "" + +#: src/songchange/song_change.cc:30 +msgid "Song Change" +msgstr "" + +#: src/songchange/song_change.cc:245 +msgid "Commands" +msgstr "" + +#: src/songchange/song_change.cc:247 +msgid "Command to run when starting a new song:" +msgstr "" + +#: src/songchange/song_change.cc:250 +msgid "Command to run at the end of a song:" +msgstr "" + +#: src/songchange/song_change.cc:253 +msgid "Command to run at the end of the playlist:" +msgstr "" + +#: src/songchange/song_change.cc:256 +msgid "Command to run when song title changes (for network streams):" +msgstr "" + +#: src/songchange/song_change.cc:259 +msgid "" +"You can use the following format codes, which will be replaced before " +"running the command (not all are useful for the end-of-playlist command):" +msgstr "" + +#: src/songchange/song_change.cc:262 +msgid "" +"%a: Artist\n" +"%b: Album\n" +"%c: Number of channels\n" +"%f: File name (full path)\n" +"%F: Frequency (Hertz)\n" +"%l: Length (milliseconds)\n" +"%n or %s: Formatted title (see playlist settings)\n" +"%p: Currently playing (1 or 0)\n" +"%r: Rate (bits per second)\n" +"%t: Playlist position\n" +"%T: Title (unformatted)" +msgstr "" + +#: src/songchange/song_change.cc:273 +msgid "" +"Parameters passed to the shell should be enclosed in quotation marks. " +"Unquoted parameters may lead to unexpected results." +msgstr "" + +#: src/song-info-qt/song-info.cc:30 +msgid "Song Info" +msgstr "Qo'shiq haqida ma'lumot" + +#: src/soxr/sox-resampler.cc:44 +msgid "SoX Resampler" +msgstr "" + +#: src/soxr/sox-resampler.cc:172 +msgid "" +"SoX Resampler Plugin for Audacious\n" +"Copyright 2013 Michał Lipski\n" +"\n" +"Based on Sample Rate Converter Plugin:\n" +"Copyright 2010-2012 John Lindgren" +msgstr "" + +#: src/soxr/sox-resampler.cc:178 +msgid "Quick" +msgstr "" + +#: src/soxr/sox-resampler.cc:179 +msgid "Low" +msgstr "" + +#: src/soxr/sox-resampler.cc:181 +msgid "High" +msgstr "" + +#: src/soxr/sox-resampler.cc:182 +msgid "Very High" +msgstr "" + +#: src/soxr/sox-resampler.cc:183 +msgid "Ultra High" +msgstr "" + +#: src/soxr/sox-resampler.cc:187 +msgid "Minimum" +msgstr "" + +#: src/soxr/sox-resampler.cc:188 +msgid "Intermediate" +msgstr "" + +#: src/soxr/sox-resampler.cc:193 +msgid "Quality:" +msgstr "Sifat:" + +#: src/soxr/sox-resampler.cc:196 +msgid "Phase:" +msgstr "" + +#: src/soxr/sox-resampler.cc:200 +msgid "Allow aliasing" +msgstr "" + +#: src/soxr/sox-resampler.cc:202 +msgid "Use steep filter" +msgstr "" + +#: src/speedpitch/speed-pitch.cc:54 +msgid "Speed and Pitch" +msgstr "" + +#: src/speedpitch/speed-pitch.cc:247 +msgid "Speed" +msgstr "" + +#: src/speedpitch/speed-pitch.cc:248 +msgid "Decouple from pitch" +msgstr "" + +#: src/speedpitch/speed-pitch.cc:250 src/speedpitch/speed-pitch.cc:258 +msgid "Multiplier:" +msgstr "" + +#: src/speedpitch/speed-pitch.cc:254 +msgid "Pitch" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:44 src/statusicon/statusicon.cc:47 +msgid "Status Icon" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:65 +msgid "" +"Status Icon Plugin (partial port for Qt interface)\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 Michał Lipski \n" +"Copyright 2015 Eugene Paskevich \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager." +msgstr "" + +#: src/statusicon-qt/statusicon.cc:86 src/statusicon/statusicon.cc:380 +msgid "Mouse Scroll Action" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:87 src/statusicon/statusicon.cc:381 +msgid "Change volume" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:90 src/statusicon/statusicon.cc:384 +msgid "Change playing song" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:93 src/statusicon/statusicon.cc:387 +msgid "Other Settings" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:94 src/statusicon/statusicon.cc:388 +msgid "Disable the popup window" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:96 src/statusicon/statusicon.cc:390 +msgid "Close to the system tray" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:98 src/statusicon/statusicon.cc:392 +msgid "Advance in playlist when scrolling upward" +msgstr "" + +#: src/statusicon-qt/statusicon.cc:113 src/statusicon/statusicon.cc:283 +msgid "Se_ttings ..." +msgstr "" + +#: src/statusicon/statusicon.cc:373 +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 Michał Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager." +msgstr "" + +#: src/stereo_plugin/stereo.cc:19 +msgid "Extra Stereo" +msgstr "" + +#: src/stereo_plugin/stereo.cc:36 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin, 1999" +msgstr "" + +#: src/stereo_plugin/stereo.cc:44 +msgid "Extra Stereo" +msgstr "" + +#: src/streamtuner/icecast-model.cc:126 src/streamtuner/shoutcast-model.cc:131 +msgid "Type" +msgstr "" + +#: src/streamtuner/icecast-model.cc:132 +msgid "Current Song" +msgstr "" + +#: src/streamtuner/icecast-model.cc:164 +msgid "Other" +msgstr "" + +#: src/streamtuner/ihr-model.cc:63 +msgid "Market" +msgstr "" + +#: src/streamtuner/ihr-model.cc:156 +msgid "Call Letters" +msgstr "" + +#: src/streamtuner/ihr-model.cc:162 +msgid "Description" +msgstr "Tavsif" + +#: src/streamtuner/shoutcast-model.cc:128 +msgid "Listeners" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:188 +msgid "Top 500 Stations" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:189 +msgid "Alternative" +msgstr "Alternative" + +#: src/streamtuner/shoutcast-model.cc:190 +msgid "Blues" +msgstr "Blues" + +#: src/streamtuner/shoutcast-model.cc:191 +msgid "Classical" +msgstr "Classical" + +#: src/streamtuner/shoutcast-model.cc:192 +msgid "Country" +msgstr "Country" + +#: src/streamtuner/shoutcast-model.cc:193 +msgid "Decades" +msgstr "Decades" + +#: src/streamtuner/shoutcast-model.cc:194 +msgid "Easy Listening" +msgstr "Easy Listening" + +#: src/streamtuner/shoutcast-model.cc:195 +msgid "Electronic" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:196 +msgid "Folk" +msgstr "Folk" + +#: src/streamtuner/shoutcast-model.cc:197 +msgid "Inspirational" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:198 +msgid "International" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:199 +msgid "Jazz" +msgstr "Jazz" + +#: src/streamtuner/shoutcast-model.cc:200 +msgid "Latin" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:201 +msgid "Metal" +msgstr "Metal" + +#: src/streamtuner/shoutcast-model.cc:203 +msgid "New Age" +msgstr "New Age" + +#: src/streamtuner/shoutcast-model.cc:204 +msgid "Pop" +msgstr "Pop" + +#: src/streamtuner/shoutcast-model.cc:205 +msgid "Public Radio" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:206 +msgid "R&B and Urban" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:207 +msgid "Rap" +msgstr "Rap" + +#: src/streamtuner/shoutcast-model.cc:208 +msgid "Reggae" +msgstr "Reggae" + +#: src/streamtuner/shoutcast-model.cc:209 +msgid "Rock" +msgstr "Rock" + +#: src/streamtuner/shoutcast-model.cc:210 +msgid "Seasonal and Holiday" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:211 +msgid "Soundtracks" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:212 +msgid "Talk" +msgstr "" + +#: src/streamtuner/shoutcast-model.cc:213 +msgid "Themes" +msgstr "" + +#: src/streamtuner/streamtuner.cc:59 +msgid "Shoutcast" +msgstr "" + +#: src/streamtuner/streamtuner.cc:60 +msgid "Icecast" +msgstr "Icecast" + +#: src/streamtuner/streamtuner.cc:71 +msgid "Stream Tuner" +msgstr "Stream Tuner" + +#: src/tonegen/tonegen.cc:45 +msgid "Tone Generator" +msgstr "Ohang generatori" + +#: src/tonegen/tonegen.cc:92 +#, c-format +msgid "%s %.1f Hz" +msgstr "%s %.1f Gts" + +#: src/tonegen/tonegen.cc:92 +msgid "Tone Generator: " +msgstr "Ohang generatori:" + +#: src/tonegen/tonegen.cc:161 +msgid "" +"Sine tone generator by Håvard Kvålen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000 Hz tone and a 2005 Hz tone" +msgstr "" +"Håvard Kvålen tomonidan sinus ohang generatori \n" +"Daniel J. Peng tomonidan tahrirlangan \n" +"\n" +"Undan foydalanish uchun URL manzilini qo'shing: tone://frequency1;frequency2;" +"frequency3;...\n" +"masalan tone://2000;2005 2000 Gts ohang va 2005 Gts ohangni ijro etish uchun " + +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(Qo'shimcha xabarlar yashirilgan.)" + +#: src/ui-common/dialogs-qt.cc:52 +msgid "Working ..." +msgstr "Ishlamoqda..." + +#: src/ui-common/dialogs-qt.cc:73 +msgid "Information" +msgstr "Ma'lumot" + +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + +#: src/voice_removal/voice_removal.cc:28 +msgid "Voice Removal" +msgstr "Ovozni olib tashlash" + +#: src/vorbis/vorbis.cc:431 +msgid "" +"Audacious Ogg Vorbis Decoder\n" +"\n" +"Based on the Xiph.org Foundation's Ogg Vorbis Plugin:\n" +"http://www.xiph.org/\n" +"\n" +"Original code by:\n" +"Tony Arcieri \n" +"\n" +"Contributions from:\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Håvard Kvålen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin " +msgstr "" +"Audacious Ogg Vorbis dekoderi\n" +"\n" +"Xiph.org fondining Ogg Vorbis plaginiga asoslangan:\n" +"http://www.xiph.org/\n" +"\n" +"Asl kod:\n" +"Tony Arcieri \n" +"\n" +"Quyidagilardan hissalar:\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Håvard Kvålen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin " + +#: src/vorbis/vorbis.h:18 +msgid "Ogg Vorbis Decoder" +msgstr "" + +#: src/vtx/info.cc:24 +#, c-format +msgid "Details about %s" +msgstr "" + +#: src/vtx/info.cc:26 +msgid "" +"Title: %t\n" +"Author: %a\n" +"From: %f\n" +"Tracker: %T\n" +"Comment: %C\n" +"Chip type: %c\n" +"Stereo: %s\n" +"Loop: %l\n" +"Chip freq: %F\n" +"Player Freq: %P\n" +"Year: %y" +msgstr "" + +#: src/vtx/vtx.cc:38 +msgid "VTX Decoder" +msgstr "" + +#: src/vtx/vtx.cc:178 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Based on in_vtx.dll by Roman Sherbakov \n" +"Audacious plugin by Pavel Vymetalek " +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:31 +msgid "" +"VU Meter Plugin for Audacious\n" +"Copyright 2017-2019 Marc Sánchez Fauste" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:35 +msgid "VU Meter Settings" +msgstr "" + +#: src/vumeter-qt/vumeter_qt.cc:37 +msgid "Peak hold time:" +msgstr "Maksimal ushlab turish vaqti:" + +#: src/vumeter-qt/vumeter_qt.cc:42 +msgid "Fall-off time:" +msgstr "Tushish vaqti:" + +#: src/vumeter-qt/vumeter_qt.cc:44 +msgid "dB/second" +msgstr "dB/sekund" + +#: src/vumeter-qt/vumeter_qt.cc:46 +msgid "Display legend" +msgstr "Afsonani ko'rsatish" + +#: src/vumeter-qt/vumeter_qt.h:37 +msgid "VU Meter" +msgstr "VU metr" + +#: src/waveout/waveout.cc:43 +msgid "Win32 waveOut" +msgstr "Win32 waveOut" + +#: src/waveout/waveout.cc:69 +msgid "" +"Win32 waveOut Plugin for Audacious\n" +"Copyright 2016 John Lindgren" +msgstr "" +"Audacious uchun Win32 waveOut plagini\n" +"Mualliflik huquqi 2016 John Lindgren " + +#: src/wavpack/wavpack.cc:25 +msgid "WavPack Decoder" +msgstr "WavPack dekoder" + +#: src/wavpack/wavpack.cc:217 +msgid "lossy (hybrid)" +msgstr "yo'qotadigan (gibrid)" + +#: src/wavpack/wavpack.cc:219 +msgid "lossy" +msgstr "yo'qotadigan" + +#: src/wavpack/wavpack.cc:259 +msgid "" +"Copyright 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan." +msgstr "" +"Mualliflik huquqi 2006 William Pitcock \n" +"\n" +"Plagin kodlarining ba'zilari Miles Egan tomonidan yaratilgan." + +#: src/xsf/plugin.cc:74 +msgid "2SF Decoder" +msgstr "2SF dekoder" + +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 Gts" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 Gts" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "Kosinus" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "Keskin" + +#: src/xsf/plugin.cc:443 +msgid "XSF Configuration" +msgstr "XSF konfiguratsiyasi" + +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "Odatiy o'chirish vaqti:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "Interpolatsiya rejimi:" + +#: src/xspf/xspf.cc:95 +msgid "XML Shareable Playlists (XSPF)" +msgstr "XML almashish mumkin pleylistlar (XSPF)" diff -Nru audacious-plugins-4.1/po/zh_CN.po audacious-plugins-4.3.1/po/zh_CN.po --- audacious-plugins-4.1/po/zh_CN.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/zh_CN.po 2023-04-29 20:17:32.000000000 +0000 @@ -5,6 +5,7 @@ # Translators: # 周嘉韡 , 2013 # Chasye , 2010 +# dylanchu , 2022 # yinsigan , 2012 # Mingcong Bai , 2014 # Mingcong Bai , 2014 @@ -16,7 +17,8 @@ # Luke , 2012 # shan dong , 2013 # shan dong , 2013 -# WhiredPlanck , 2020 +# WhiredPlanck , 2020 +# WhiredPlanck , 2022 # yinsigan , 2012 # zhangmin , 2013-2015 # zhangmin , 2013 @@ -28,9 +30,9 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2021-01-29 07:34+0000\n" -"Last-Translator: 玉堂白鹤 \n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: dylanchu , 2022\n" "Language-Team: Chinese (China) (http://www.transifex.com/audacious/audacious/" "language/zh_CN/)\n" "Language: zh_CN\n" @@ -48,7 +50,7 @@ msgstr "AdPlug (AdLib 播放器)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "连续的" @@ -60,9 +62,11 @@ msgid "OPL Emulator:" msgstr "OPL 仿真器:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "采样率" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "采样率:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -78,7 +82,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "杂项" @@ -86,255 +90,6 @@ msgid "Repeat song in endless loop" msgstr "循环播放歌曲" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "闹钟" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "设置闹钟 ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"一个可用于在特定时间开始播放的插件。\n" -"\n" -"最初由 Adam Feakin 和 Daniel Stodden 编写。" - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"时间设定\n" -" 闹钟设定:\n" -" 闹钟响铃的时间。\n" -"\n" -" 静音延时:\n" -" 在制定时间后停止闹钟响铃。\n" -" (如果唤醒对话框未关闭)\n" -"\n" -"\n" -"日期设定\n" -" 日期:\n" -" 选择闹铃激活的日期。\n" -"\n" -" 时间:\n" -" 选择每天闹铃激活的时间,或通过开关设定\n" -" 默认时间。\n" -"\n" -"\n" -"音量\n" -" 渐进延时:\n" -" 在指定时间内将音量渐进增强到设定值。\n" -"\n" -" 起始点:\n" -" 从此处音量开始渐进。\n" -"\n" -" 终止点:\n" -" 从此处音量停止渐进。如渐进延时设定为 0\n" -" 则将音量设定为此值并直接开始播放。\n" -"\n" -"\n" -"选项:\n" -" 附加命令:\n" -" 在闹铃设定时间运行此命令。\n" -"\n" -" 播放列表:\n" -" 载入此播放列表。如未指定播放列表,\n" -" 则将使用当前的列表。此处也可填入\n" -" mp3/ogg 流媒体 URL。\n" -"\n" -" 备忘录:\n" -" 在闹铃响时显示一个备忘提醒。\n" -" 在此框内填入备忘提醒的内容,并勾选此项以\n" -" 使其显示。" - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "此为起床闹钟。" - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "您今日的备忘录是......" - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "提醒器" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "星期一" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "星期二" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "星期三" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "星期四" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "星期五" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "星期六" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "星期日" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "时间" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "响闹钟 (默认) :" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "点" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "静音时间:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "小时" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "分" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "选择响闹钟的日期" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "日期" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "默认" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "日期" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "渐隐" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "秒" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "音量" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "开始于" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "完成于" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "当前" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "附加命令" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "启用" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "播放列表(可选)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "选择一个播放列表" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "选项" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "这些选项代表什么?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "帮助" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "专辑封面" @@ -483,87 +238,83 @@ msgid "Synthesizer" msgstr "合成器" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "采样率:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - 选择 SoundFont 文件" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "取消 (_C)" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "打开 (_O)" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "文件名" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "大小(bytes)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "名称:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " MIDI 信息 " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "格式:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "长度(毫秒):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "音轨数:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "变体" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "每分钟节拍:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "每分钟节拍 (加权平均):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "时间格:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI备注与歌词" -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* MIDI文件不包含备注 *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* MIDI文件不包含歌词 *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "关闭(_C)" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (非法的UTF-8编码)" @@ -619,7 +370,7 @@ msgid "Concave Rectangle" msgstr "凹角矩形" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "无" @@ -655,94 +406,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "恢复播放时触发 OSD。" -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "位置" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "X 相对位移:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Y 相对位移:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "最大OSD宽度:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "多屏选项" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "OSD显示于:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "所有显示器" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "显示器 %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "延时(ms)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "显示:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "淡入:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "淡出:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "字体" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "字体 %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "阴影" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "渲染风格" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "颜色" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "颜色 %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "启用触发器" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "事件" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "检测到混合管理器" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -751,56 +502,56 @@ "未检测到混合管理器;\n" "除非激活混合管理器,否则 OSD 无法正常工作。" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "伪透明效果无需混成管理支持" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "透明" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "伪透明" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "真透明 (需要 X Composite 扩展)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "X Composite 扩展未加载" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "位置" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "动画" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "字体" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "装饰器" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "触发器" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "其它" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "测试" @@ -816,11 +567,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Audacious 播放列表 (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "比特失真器" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "位深度:" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "降采样比率:" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "比特失真器" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "颜色" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "模糊范围" @@ -832,6 +599,10 @@ msgid "Presets:" msgstr "预置:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "默认" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "评级:" @@ -844,7 +615,7 @@ msgid "Cut frequency:" msgstr "截止频率:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "频谱分析器" @@ -939,50 +710,50 @@ msgid "Audio CD" msgstr "音频 CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "打开 CD 设备 %s 失败。" -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "没有找到合适的 CD 音频驱动器。" -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "设备为空。" -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "未支持光盘类型。" -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "完成打开的 CD 驱动器初始化失败。" -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "取得第一首/最后一首音频音轨号失败。" -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "不能读取音频 %d 开始/结束的 LSN 信息。" -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "无法创建 CDDB 连接。" -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "查询 CDDB 服务器失败" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "查询 CDDB 服务器失败:%s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "无法读取 CDDB 信息: %s" @@ -1056,6 +827,13 @@ msgid "Default song length:" msgstr "默认歌曲长度:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "秒" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "重取样" @@ -1084,7 +862,7 @@ msgid "CoreAudio output" msgstr "CoreAudio 输出" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1104,11 +882,11 @@ "基于 Audacious 的 SDL 输出插件\n" "版权所有 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "使用排除模式" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "使用位完美音频 (自适应设备采样率)" @@ -1203,20 +981,20 @@ msgid "Delete" msgstr "删除" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "取消" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "删除选中的文件" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "删除方式" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "移动到垃圾箱而不是直接删除" @@ -1242,7 +1020,7 @@ msgstr "延迟:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "毫秒" @@ -1258,11 +1036,11 @@ msgid "Echo" msgstr "回响" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "FFmpeg 插件" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1382,89 +1160,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "8 千比特/秒" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "16 千比特/秒" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "32 千比特/秒" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "40 千比特/秒" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "48 千比特/秒" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "56 千比特/秒" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "64 千比特/秒" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "80 千比特/秒" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "96 千比特/秒" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "112 千比特/秒" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "128 千比特/秒" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "160 千比特/秒" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "192 千比特/秒" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "224 千比特/秒" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "256 千比特/秒" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "320 千比特/秒" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "联合立体声" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "立体声" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "单声道" @@ -1576,7 +1354,7 @@ msgid "Quality (0-1):" msgstr "质量(0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "常规" @@ -1585,11 +1363,11 @@ msgid "FLAC Decoder" msgstr "FLAC 解码器" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "无损的" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1621,7 +1399,7 @@ msgid "Invalid open mode" msgstr "打开模式不可用" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1641,116 +1419,134 @@ "\n" "许可: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL 频谱分析器" -#: src/gtkui/columns.cc:35 -msgid "Entry number" -msgstr "序号" - #: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" +msgstr "条目编号" + +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "标题" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "艺术家" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "年份" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "专辑" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "专辑艺术家" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "音轨" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "流派" -#: src/gtkui/columns.cc:43 -msgid "Queue position" +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" msgstr "队列位置" -#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "长度" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "文件路径" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "自定标题" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "文件名" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "自定义标题" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "比率" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "备注" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "可用列" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "显示列" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "搜索工具" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "面板在左" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "面板在右" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "面板在上" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "面板在下" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "无面板" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "禁用" @@ -1790,8 +1586,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "播放(_P)" @@ -1968,8 +1764,8 @@ msgid "Remove _Unavailable Files" msgstr "移除无效文件(_U)" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "新建(_N)" @@ -1979,7 +1775,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "移除 (_v)" @@ -2110,7 +1906,7 @@ msgstr "选中全部(_A)" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "重命名...(_R)" @@ -2138,196 +1934,201 @@ msgid "Show column headers" msgstr "显示列头" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "歌曲改变时滚动" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "GTK界面" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "缓冲中..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "播放" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "暂停" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "搜索库" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "打开文件" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "添加文件" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "上一首" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "停止" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "下一首" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "录制" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "重复" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "随机" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "菜单" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "单声道" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "立体声" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d声道" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "%d 千比特/秒" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "单一窗口模式。" -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "播放列表模式。" -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "完成后停止。" -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "上一首" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "暂停/继续" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "下一首" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "向前快进" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "向后倒带" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "静音" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "提高音量" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "降低音量" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "跳到文件" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "播放窗口切换" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "显示On-Screen-Display" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "打开重复" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "打开随机播放" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "打开当前曲目后停止" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "提出播放器窗口" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(无)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2337,33 +2138,33 @@ "\n" "要继续吗?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "绑定鼠标按键" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." msgstr "请在文本区按下要绑定的组合键,你亦可以绑定鼠标键。" -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "热键:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "动作:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "键位绑定:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "添加 (_A)" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "全局热键" @@ -2458,16 +2259,16 @@ "JACK 服务要求采样率为 %d Hz,但是 Audacious 以 %d Hz 播放。请使用采样率转换特" "效插件纠正此错误。" -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s 设置" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "模块路径:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2477,25 +2278,25 @@ "这些路径将附加于 LADSPA_PATH 进行搜索。\n" "在添加这些新的路径后,按下 Enter 以扫描新插件。" -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "可用插件:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "启用" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "已启用插件:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "设置" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2551,101 +2352,105 @@ msgid "Wait before reconnecting:" msgstr "重连前等待:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "歌词" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "哪里都不" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" -msgstr "" +msgstr "艺术家名称截断于开头处,标题 -- 于末尾处" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "要截断的字符:" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" -msgstr "" +msgstr "字符以正则表达式表达并进行或运算,由空白字符包围" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" -msgstr "" +msgstr "用以拆分的字符:" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" -msgstr "" +msgstr "进一步用字符截断标题" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "常规" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" +msgstr "用字符将标题分割为艺术家名称和标题" + +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "互联网资源" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "歌词获取来源:" +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "将获取的歌词存储在本地缓存中" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "本地存储" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "从本地存储加载歌词文件 (.lrc)" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "无法取回 %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "无法解析 %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "正在搜索歌词..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "错误" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "找不到歌词。" -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "缺少标题和/或艺术家。" -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "本地保存" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "刷新" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "M3U 播放列表" @@ -2803,50 +2608,26 @@ msgstr "这些设置会在重启 Audacious 后生效。" #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "在这首歌后停止" #: src/moonstone/moonstone.cc:39 msgid "Moonstone" -msgstr "" +msgstr "月光石" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "重置为默认值" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "正在播放" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "条目编号" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "专辑艺术家" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "队列位置" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "文件路径" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "文件名" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "自定义标题" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "条目" @@ -2862,7 +2643,7 @@ msgid "Use accurate length calculation (slow)" msgstr "使用精确长度计算(慢)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "环绕音" @@ -2962,7 +2743,7 @@ msgid "OpenMPT (Module Player)" msgstr "OpenMPT (模块播放器)" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" @@ -2972,19 +2753,19 @@ "\n" "作者: Chris Spiegel " -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "立体声分离:" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "插值:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "线性" @@ -2996,11 +2777,21 @@ msgid "Windowed sinc" msgstr "Sinc 窗函数滤波" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4 输出" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "OSS3 输出" @@ -3042,18 +2833,35 @@ "我希望感谢 #audacious 上的人们,尤其 Tony Vroon 及 John Lindgren,当然,还有" "之前 OSS 插件的作者们。" -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "回放" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "播放列表管理器" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "移除(_R)" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "重命名(_a)" @@ -3069,7 +2877,7 @@ msgid "OpenPSF Configuration" msgstr "OpenPSF 配置" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "忽略文件长度" @@ -3159,11 +2967,11 @@ "\n" "许可: GPLv2+" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "请在文本区按下要绑定的组合键。" -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3210,12 +3018,16 @@ msgid "Audio Settings ..." msgstr "音频设置..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" -msgstr "" +msgstr "Q#" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" +msgstr "T#" + +#: src/qtui/playlist_model.cc:192 +msgid "C#" msgstr "" #: src/qtui/qtui.cc:40 @@ -3433,29 +3245,29 @@ msgid "Library" msgstr "库" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d 首歌" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "属于此风格" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "在" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "-" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "显示的结果数:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "启动时重新扫描库" @@ -3463,41 +3275,41 @@ msgid "Monitor library for changes" msgstr "监视库中的更改" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." msgstr "要将您的音乐库导入Audacious,选择一个文件夹,然后点击“刷新”图标。" -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "请稍等...." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "选择文件夹" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "搜索库" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "显示了 %d 个结果,共 %d 个" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d 个结果" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "创建播放列表(_C)" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "添加到播放列表(_A)" @@ -3601,108 +3413,108 @@ msgid "Repeat point B set." msgstr "重复点 B 已设置。" -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "前置放大" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 赫兹" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 赫兹" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 赫兹" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 赫兹" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "200 赫兹" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1000 赫兹" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2000 赫兹" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4000 赫兹" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8000 赫兹" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16000 赫兹" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Audacious均衡器" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "录制开启" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "录制关闭" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "查找: %d:%-2.2d/%d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "音量:%d%%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "平衡:%d%% 左" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "平衡:中间" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "平衡:%d%% 右" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "选项菜单" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "禁用“顶置窗口”" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "启用“顶置窗口”" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "文件信息" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "双倍大小" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "可视化效果" @@ -3726,10 +3538,6 @@ msgid "Open URL ..." msgstr "打开 URL ..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "回放" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "播放列表" @@ -3744,7 +3552,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "服务" @@ -3761,7 +3569,7 @@ msgstr "退出" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "歌曲信息 ..." @@ -3781,7 +3589,7 @@ msgid "Clear A-B Repeat" msgstr "清除 A-B 点重复" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "跳至曲目 ..." @@ -3874,20 +3682,20 @@ msgstr "添加文件 ..." #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "按标题" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "按文件名" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "按文件路径" @@ -3915,113 +3723,113 @@ msgid "Remove Selected" msgstr "删除已选中的" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "搜索/选择" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "反选" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "取消选中" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "选中全部" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "按音轨号码" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "按艺术家" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "按专辑" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "按专辑艺术家" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "按发表日期" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "按照类型" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "按照长度" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "按照自定义标题" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "根据评论" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "打乱列表" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "反转列表" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "排序已选中的" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "排序列表" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "打开包含的文件夹" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "剪切" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "复制" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "粘贴" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "在末尾粘贴" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "加入/移出列表" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d of %d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Audacious播放列表编辑器" @@ -4037,167 +3845,217 @@ msgid "Add Folder ..." msgstr "添加文件夹 ..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "从当前播放列表中搜索条目" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"按部分字段搜索播放列表中的条目。各个字段都可以使用正则表达式,而且是不分大小" +"字的。如果你不知道何为正则表达式,简单的输入部分你想搜索的文字亦可。" + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "标题:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "专辑:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "艺术家:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "文件名:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "搜索前清空之前的结果" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "自动为区配条目切换队列" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "用匹配的条目创建新的播放列表" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "搜索" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "播放器:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "选择主界面字体:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "播放列表:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "选择播放列表字体:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "皮肤" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "当聚焦到任意窗口时显示活动的标题栏" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "字体" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "使用点阵字体(仅支持ASCII字符)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "滚动曲目标题" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "来回滚动歌曲标题" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "分析器" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "示波器" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "声纹 / VU 表" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "关闭" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "一般" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "火炎" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "竖线" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "细线" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "柱状" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "最慢" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "慢" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "中速" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "快" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "最快" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "点" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "线" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "色块" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "冷蓝" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "平滑" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "上色:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "风格:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "减退:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "峰值减退速度:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "示波器风格:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "声纹上色:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "VU 表风格:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "类型" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "可视化类型:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "分析器" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "显示峰值" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "可视化效果" @@ -4209,57 +4067,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "未打包的Winamp 2.x主题" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "从当前播放列表中搜索条目" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "搜索" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"按部分字段搜索播放列表中的条目。各个字段都可以使用正则表达式,而且是不分大小" -"字的。如果你不知道何为正则表达式,简单的输入部分你想搜索的文字亦可。" - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "标题:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "专辑:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "艺术家:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "文件名:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "搜索前清空之前的结果" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "自动为区配条目切换队列" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "用匹配的条目创建新的播放列表" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Sndfile 插件" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4524,7 +4336,7 @@ #: src/statusicon-qt/statusicon.cc:96 src/statusicon/statusicon.cc:390 msgid "Close to the system tray" -msgstr "关闭系统托盘" +msgstr "关闭至系统托盘" #: src/statusicon-qt/statusicon.cc:98 src/statusicon/statusicon.cc:392 msgid "Advance in playlist when scrolling upward" @@ -4736,19 +4548,32 @@ "要使用这个生成器,添加一个 URL:tone://frequency1;frequency2;frequency3;...\n" "实例 tone://2000;2005 以播放一个 2000 Hz 以及 2005 Hz 的音调" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(详细信息已隐藏。)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "工作中 ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "信息" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "%s 似乎不是有效的文件夹。" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "人声消除" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4901,14 +4726,38 @@ "\n" "一部分插件代码由 Miles Egan 编写。" -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2SF 解码器" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "32728 赫兹" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "65456 赫兹" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "余弦" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "尖波" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "XSF 设置" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "默认淡出时间:" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "插值模式:" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "可分享的 XML 播放列表 (XSPF)" diff -Nru audacious-plugins-4.1/po/zh_TW.po audacious-plugins-4.3.1/po/zh_TW.po --- audacious-plugins-4.1/po/zh_TW.po 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/po/zh_TW.po 2023-04-29 20:17:32.000000000 +0000 @@ -3,7 +3,7 @@ # This file is distributed under the same license as the Audacious Plugins package. # # Translators: -# byStarTW (pan93412) , 2019 +# pan93412 , 2019 # 盧瑞元 , 2014 # Ruei-Yuan Lu , 2011 # 盧瑞元 , 2020 @@ -12,9 +12,9 @@ msgstr "" "Project-Id-Version: Audacious Plugins\n" "Report-Msgid-Bugs-To: https://redmine.audacious-media-player.org/\n" -"POT-Creation-Date: 2021-02-01 19:27+0100\n" -"PO-Revision-Date: 2020-12-20 23:15+0000\n" -"Last-Translator: Thomas Lange\n" +"POT-Creation-Date: 2023-04-29 21:59+0200\n" +"PO-Revision-Date: 2011-10-10 17:43+0000\n" +"Last-Translator: 盧瑞元 , 2020\n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/audacious/" "audacious/language/zh_TW/)\n" "Language: zh_TW\n" @@ -32,7 +32,7 @@ msgstr "AdPlug (AdLib 播放器)" #: src/adplug/adplug-xmms.cc:167 src/modplug/modplugbmp.cc:321 -#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:106 +#: src/psf/plugin.cc:161 src/vtx/vtx.cc:89 src/xsf/plugin.cc:204 msgid "sequenced" msgstr "編曲機" @@ -44,9 +44,11 @@ msgid "OPL Emulator:" msgstr "OPL 模擬器:" -#: src/adplug/adplug-xmms.cc:353 -msgid "Sample rate" -msgstr "取樣率" +#: src/adplug/adplug-xmms.cc:353 src/amidiplug/i_configure.cc:153 +#: src/console/plugin.cc:45 src/filewriter/filewriter.cc:481 +#: src/sid/xs_config.cc:65 src/xsf/plugin.cc:446 +msgid "Sample rate:" +msgstr "取樣率:" #: src/adplug/adplug-xmms.cc:354 src/amidiplug/i_configure.cc:155 #: src/bs2b/plugin.cc:141 src/console/plugin.cc:47 @@ -62,7 +64,7 @@ #: src/adplug/adplug-xmms.cc:355 src/gtkui/settings.cc:46 #: src/modplug/plugin_main.cc:105 src/qtui/settings.cc:81 -#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:280 +#: src/skins-qt/skins_cfg.cc:302 src/skins/skins_cfg.cc:280 msgid "Miscellaneous" msgstr "其他選項" @@ -70,255 +72,6 @@ msgid "Repeat song in endless loop" msgstr "無限地重複播放歌曲" -#: src/alarm/alarm.cc:55 src/alarm/interface.cc:79 -msgid "Alarm" -msgstr "鬧鐘" - -#: src/alarm/alarm.cc:782 -msgid "Set Alarm ..." -msgstr "設定鬧鐘 ..." - -#: src/alarm/alarm.cc:810 -msgid "" -"A plugin that can be used to start playing at a certain time.\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." -msgstr "" -"您可以使用此外掛在特定時間播放。\n" -"\n" -"Originally written by Adam Feakin and Daniel Stodden." - -#: src/alarm/interface.cc:28 -msgid "" -"Time\n" -" Alarm at:\n" -" The time for the alarm to come on.\n" -"\n" -" Quiet after:\n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading:\n" -" Fade the volume up to the chosen volume\n" -" for this amount of time.\n" -"\n" -" Start at:\n" -" Start fading from this volume.\n" -"\n" -" Final:\n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist:\n" -" Load this playlist. If no playlist\n" -" is given, the current one will be used.\n" -" The URL of an mp3/ogg stream\n" -" can also be entered here.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off.\n" -" Type the reminder in the input field and enable\n" -" the checkbox if you want it to be shown." -msgstr "" -"時間\n" -" 鈴響於:\n" -" 鬧鐘的觸發時間。\n" -"\n" -" 多久後靜音:\n" -" 鈴響的時間長度。\n" -" (若喚醒的對話視窗未被關閉)\n" -"\n" -"\n" -"週排程\n" -" 哪幾天:\n" -" 選擇哪幾天要啟用鬧鐘。\n" -"\n" -" 時間:\n" -" 選擇每天的鬧鐘時間,\n" -" 或者勾選使用預設值。\n" -"\n" -"\n" -"音量\n" -" 淡入:\n" -" 在指定的時間內將音量\n" -" 漸漸提升到指定的音量。\n" -"\n" -" 初始音量:\n" -" 從此音量開始淡入。\n" -"\n" -" 最終音量:\n" -" 音量淡入的終點。若淡\n" -" 入的時間長為零則直\n" -" 接使用此音量開始播放。\n" -"\n" -"\n" -"選項:\n" -" 額外的命令:\n" -" 鬧鐘觸發時執行這個指令。\n" -"\n" -" 播放清單:\n" -" 載入此播放清單。如果沒有指定則使用現有的。\n" -" 也可以在這裡輸入 mp3/ogg 串流的網址。\n" -"\n" -" 提醒:\n" -" 鬧鐘停止以後顯示提示訊息。\n" -" 請在欄位中輸入提示訊息並勾選啟用。" - -#: src/alarm/interface.cc:78 -msgid "This is your wakeup call." -msgstr "這是您的喚醒。" - -#: src/alarm/interface.cc:96 -msgid "Your reminder for today is..." -msgstr "您今天的提醒" - -#: src/alarm/interface.cc:98 src/alarm/interface.cc:372 -msgid "Reminder" -msgstr "提醒" - -#: src/alarm/interface.cc:122 -msgid "Monday" -msgstr "星期一" - -#: src/alarm/interface.cc:122 -msgid "Tuesday" -msgstr "星期二" - -#: src/alarm/interface.cc:122 -msgid "Wednesday" -msgstr "星期三" - -#: src/alarm/interface.cc:123 -msgid "Thursday" -msgstr "星期四" - -#: src/alarm/interface.cc:123 -msgid "Friday" -msgstr "星期五" - -#: src/alarm/interface.cc:123 -msgid "Saturday" -msgstr "星期六" - -#: src/alarm/interface.cc:123 -msgid "Sunday" -msgstr "星期日" - -#: src/alarm/interface.cc:160 src/alarm/interface.cc:219 -#: src/alarm/interface.cc:234 -msgid "Time" -msgstr "時間" - -#: src/alarm/interface.cc:167 -msgid "Alarm at (default):" -msgstr "鈴響於 (預設)" - -#: src/alarm/interface.cc:189 -msgid "h" -msgstr "h" - -#: src/alarm/interface.cc:192 -msgid "Quiet after:" -msgstr "多久後靜音:" - -#: src/alarm/interface.cc:204 -msgid "hours" -msgstr "小時" - -#: src/alarm/interface.cc:215 -msgid "minutes" -msgstr "分鐘" - -#: src/alarm/interface.cc:224 -msgid "Choose the days for the alarm to come on" -msgstr "選擇想要在哪幾天啟用鬧鐘" - -#: src/alarm/interface.cc:231 -msgid "Day" -msgstr "哪幾天" - -#: src/alarm/interface.cc:248 src/bs2b/plugin.cc:130 -msgid "Default" -msgstr "預設" - -#: src/alarm/interface.cc:277 -msgid "Days" -msgstr "週排程" - -#: src/alarm/interface.cc:286 -msgid "Fading" -msgstr "淡出" - -#: src/alarm/interface.cc:294 src/console/plugin.cc:41 -#: src/crossfade/crossfade.cc:52 src/crossfade/crossfade.cc:58 -#: src/lirc/lirc.cc:395 src/notify/notify.cc:113 src/sid/xs_config.cc:85 -#: src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 -#: src/vumeter-qt/vumeter_qt.cc:39 -msgid "seconds" -msgstr "秒" - -#: src/alarm/interface.cc:301 src/alarm/interface.cc:342 -msgid "Volume" -msgstr "音量" - -#: src/alarm/interface.cc:306 -msgid "Start at" -msgstr "初始音量" - -#: src/alarm/interface.cc:322 -msgid "Final" -msgstr "最終音量" - -#: src/alarm/interface.cc:335 -msgid "Current" -msgstr "目前音量" - -#: src/alarm/interface.cc:348 -msgid "Additional Command" -msgstr "額外命令" - -#: src/alarm/interface.cc:354 src/alarm/interface.cc:377 -msgid "enable" -msgstr "啟用" - -#: src/alarm/interface.cc:361 -msgid "Playlist (optional)" -msgstr "播放清單 (選用)" - -#: src/alarm/interface.cc:365 -msgid "Select a playlist" -msgstr "請選擇播放清單" - -#: src/alarm/interface.cc:385 -msgid "Options" -msgstr "選項" - -#: src/alarm/interface.cc:390 -msgid "What do these options mean?" -msgstr "這些選項代表什麼意思?" - -#: src/alarm/interface.cc:404 -msgid "Help" -msgstr "說明" - #: src/albumart/albumart.cc:31 src/albumart-qt/albumart.cc:35 msgid "Album Art" msgstr "專輯封面" @@ -467,87 +220,83 @@ msgid "Synthesizer" msgstr "合成器" -#: src/amidiplug/i_configure.cc:153 src/console/plugin.cc:45 -#: src/filewriter/filewriter.cc:481 src/sid/xs_config.cc:65 -msgid "Sample rate:" -msgstr "取樣率:" - -#: src/amidiplug/i_configure-fluidsynth.cc:57 -#: src/amidiplug/i_configure-fluidsynth.cc:536 +#: src/amidiplug/i_configure-fluidsynth.cc:58 +#: src/amidiplug/i_configure-fluidsynth.cc:527 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - 選擇 SoundFont 檔案" -#: src/amidiplug/i_configure-fluidsynth.cc:60 +#: src/amidiplug/i_configure-fluidsynth.cc:61 msgid "_Cancel" msgstr "取消(_C)" -#: src/amidiplug/i_configure-fluidsynth.cc:61 +#: src/amidiplug/i_configure-fluidsynth.cc:62 msgid "_Open" msgstr "開啟(_O)" -#: src/amidiplug/i_configure-fluidsynth.cc:230 -#: src/amidiplug/i_configure-fluidsynth.cc:476 src/gtkui/columns.cc:46 +#: src/amidiplug/i_configure-fluidsynth.cc:233 +#: src/amidiplug/i_configure-fluidsynth.cc:461 msgid "File name" msgstr "檔案名稱" -#: src/amidiplug/i_configure-fluidsynth.cc:234 -#: src/amidiplug/i_configure-fluidsynth.cc:479 +#: src/amidiplug/i_configure-fluidsynth.cc:237 +#: src/amidiplug/i_configure-fluidsynth.cc:464 msgid "Size (bytes)" msgstr "大小 (位元組)" -#: src/amidiplug/i_fileinfo.cc:169 +#: src/amidiplug/i_fileinfo.cc:184 msgid "Name:" msgstr "名稱:" -#: src/amidiplug/i_fileinfo.cc:187 +#: src/amidiplug/i_fileinfo.cc:202 msgid " MIDI Info " msgstr " MIDI 資訊 " -#: src/amidiplug/i_fileinfo.cc:201 +#: src/amidiplug/i_fileinfo.cc:216 msgid "Format:" msgstr "格式:" -#: src/amidiplug/i_fileinfo.cc:204 +#: src/amidiplug/i_fileinfo.cc:219 msgid "Length (msec):" msgstr "長度 (毫秒):" -#: src/amidiplug/i_fileinfo.cc:207 +#: src/amidiplug/i_fileinfo.cc:222 msgid "No. of Tracks:" msgstr "音軌編號:" -#: src/amidiplug/i_fileinfo.cc:213 +#: src/amidiplug/i_fileinfo.cc:228 msgid "variable" msgstr "變動的" -#: src/amidiplug/i_fileinfo.cc:215 +#: src/amidiplug/i_fileinfo.cc:230 msgid "BPM:" msgstr "BPM:" -#: src/amidiplug/i_fileinfo.cc:223 +#: src/amidiplug/i_fileinfo.cc:238 msgid "BPM (wavg):" msgstr "BPM (wavg):" -#: src/amidiplug/i_fileinfo.cc:226 +#: src/amidiplug/i_fileinfo.cc:241 msgid "Time Div:" msgstr "時間分割:" -#: src/amidiplug/i_fileinfo.cc:237 +#: src/amidiplug/i_fileinfo.cc:252 msgid " MIDI Comments and Lyrics " msgstr " MIDI 備註與歌詞 " -#: src/amidiplug/i_fileinfo.cc:284 +#: src/amidiplug/i_fileinfo.cc:299 msgid "* no comments available in this MIDI file *" msgstr "* 這個 MIDI 檔不包含備註資料 *" -#: src/amidiplug/i_fileinfo.cc:296 +#: src/amidiplug/i_fileinfo.cc:311 msgid "* no lyrics available in this MIDI file *" msgstr "* 這個 MIDI 檔不包含歌詞資料 *" -#: src/amidiplug/i_fileinfo.cc:306 src/ladspa/plugin.cc:417 +#: src/amidiplug/i_fileinfo.cc:321 src/ladspa/plugin.cc:418 +#: src/ui-common/dialogs-qt.cc:32 msgid "_Close" msgstr "關閉(_C)" -#: src/amidiplug/i_fileinfo.cc:331 +#: src/amidiplug/i_fileinfo.cc:346 msgid " (invalid UTF-8)" msgstr " (無效的 UTF-8 字串)" @@ -603,7 +352,7 @@ msgid "Concave Rectangle" msgstr "角落凹陷的矩形" -#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 +#: src/aosd/aosd_style.cc:69 src/openmpt/mptwrap.h:50 src/xsf/plugin.cc:436 msgid "None" msgstr "無" @@ -639,94 +388,94 @@ msgid "Triggers OSD when playback is unpaused." msgstr "當解除暫停時觸發 OSD" -#: src/aosd/aosd_ui.cc:162 +#: src/aosd/aosd_ui.cc:204 msgid "Placement" msgstr "放置位置" -#: src/aosd/aosd_ui.cc:195 +#: src/aosd/aosd_ui.cc:241 msgid "Relative X offset:" msgstr "X 軸相對位移:" -#: src/aosd/aosd_ui.cc:202 +#: src/aosd/aosd_ui.cc:245 msgid "Relative Y offset:" msgstr "Y 軸相對位移:" -#: src/aosd/aosd_ui.cc:209 +#: src/aosd/aosd_ui.cc:249 msgid "Max OSD width:" msgstr "最大 OSD 寬度:" -#: src/aosd/aosd_ui.cc:220 +#: src/aosd/aosd_ui.cc:281 msgid "Multi-Monitor options" msgstr "多螢幕選項" -#: src/aosd/aosd_ui.cc:224 +#: src/aosd/aosd_ui.cc:285 msgid "Display OSD using:" msgstr "顯示 OSD:" -#: src/aosd/aosd_ui.cc:226 +#: src/aosd/aosd_ui.cc:287 msgid "all monitors" msgstr "所有螢幕" -#: src/aosd/aosd_ui.cc:229 +#: src/aosd/aosd_ui.cc:290 #, c-format msgid "monitor %i" msgstr "螢幕 %i" -#: src/aosd/aosd_ui.cc:281 +#: src/aosd/aosd_ui.cc:342 msgid "Timing (ms)" msgstr "計時 (毫秒)" -#: src/aosd/aosd_ui.cc:286 +#: src/aosd/aosd_ui.cc:347 msgid "Display:" msgstr "顯示:" -#: src/aosd/aosd_ui.cc:291 +#: src/aosd/aosd_ui.cc:352 msgid "Fade in:" msgstr "淡入:" -#: src/aosd/aosd_ui.cc:296 +#: src/aosd/aosd_ui.cc:357 msgid "Fade out:" msgstr "淡出:" -#: src/aosd/aosd_ui.cc:360 +#: src/aosd/aosd_ui.cc:442 msgid "Fonts" msgstr "字型" -#: src/aosd/aosd_ui.cc:367 +#: src/aosd/aosd_ui.cc:449 #, c-format msgid "Font %i:" msgstr "字型 %i:" -#: src/aosd/aosd_ui.cc:381 +#: src/aosd/aosd_ui.cc:466 msgid "Shadow" msgstr "陰影" -#: src/aosd/aosd_ui.cc:485 +#: src/aosd/aosd_ui.cc:589 msgid "Render Style" msgstr "呈現樣式" -#: src/aosd/aosd_ui.cc:501 +#: src/aosd/aosd_ui.cc:605 msgid "Colors" msgstr "顏色" -#: src/aosd/aosd_ui.cc:512 +#: src/aosd/aosd_ui.cc:616 #, c-format msgid "Color %i:" msgstr "顏色 %i:" -#: src/aosd/aosd_ui.cc:599 +#: src/aosd/aosd_ui.cc:714 msgid "Enable trigger" msgstr "啟用觸發器" -#: src/aosd/aosd_ui.cc:626 +#: src/aosd/aosd_ui.cc:741 msgid "Event" msgstr "事件" -#: src/aosd/aosd_ui.cc:653 +#: src/aosd/aosd_ui.cc:768 msgid "Composite manager detected" msgstr "已偵測到合成特效管理程式" -#: src/aosd/aosd_ui.cc:660 +#: src/aosd/aosd_ui.cc:775 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -735,56 +484,56 @@ "未偵測到合成特效管理程式;\n" "除非您確定已經執行,否則 OSD 將無法正確啟用。" -#: src/aosd/aosd_ui.cc:668 +#: src/aosd/aosd_ui.cc:783 msgid "Composite manager not required for fake transparency" msgstr "假的透明特效不需要 Composite manager" -#: src/aosd/aosd_ui.cc:705 +#: src/aosd/aosd_ui.cc:820 msgid "Transparency" msgstr "透明" -#: src/aosd/aosd_ui.cc:711 +#: src/aosd/aosd_ui.cc:826 msgid "Fake transparency" msgstr "假的透明特效" -#: src/aosd/aosd_ui.cc:713 +#: src/aosd/aosd_ui.cc:828 msgid "Real transparency (requires X Composite Ext.)" msgstr "真的透明特效 (需要 X Composite 延伸功能)" -#: src/aosd/aosd_ui.cc:754 +#: src/aosd/aosd_ui.cc:875 msgid "Composite extension not loaded" msgstr "Composite 延伸功能未載入" -#: src/aosd/aosd_ui.cc:771 +#: src/aosd/aosd_ui.cc:892 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.cc:834 +#: src/aosd/aosd_ui.cc:955 msgid "Position" msgstr "位置" -#: src/aosd/aosd_ui.cc:839 +#: src/aosd/aosd_ui.cc:960 msgid "Animation" msgstr "動畫" -#: src/aosd/aosd_ui.cc:844 +#: src/aosd/aosd_ui.cc:965 msgid "Text" msgstr "文字" -#: src/aosd/aosd_ui.cc:849 +#: src/aosd/aosd_ui.cc:970 msgid "Decoration" msgstr "裝飾" -#: src/aosd/aosd_ui.cc:854 +#: src/aosd/aosd_ui.cc:975 msgid "Trigger" msgstr "觸發" -#: src/aosd/aosd_ui.cc:859 src/streamtuner/shoutcast-model.cc:202 +#: src/aosd/aosd_ui.cc:980 src/streamtuner/shoutcast-model.cc:202 msgid "Misc" msgstr "雜項" -#: src/aosd/aosd_ui.cc:868 +#: src/aosd/aosd_ui.cc:989 msgid "Test" msgstr "測試" @@ -800,11 +549,27 @@ msgid "Audacious Playlists (audpl)" msgstr "Audacious 播放清單 (audpl)" -#: src/blur_scope/blur_scope.cc:39 src/blur_scope-qt/blur_scope.cc:45 +#: src/bitcrusher/bitcrusher.cc:33 +msgid "Bitcrusher" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:34 +msgid "Bit Depth:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:37 +msgid "Downsample ratio:" +msgstr "" + +#: src/bitcrusher/bitcrusher.cc:48 +msgid "Bitcrusher" +msgstr "" + +#: src/blur_scope/blur_scope.cc:40 src/blur_scope-qt/blur_scope.cc:45 msgid "Color" msgstr "色彩" -#: src/blur_scope/blur_scope.cc:55 src/blur_scope-qt/blur_scope.cc:158 +#: src/blur_scope/blur_scope.cc:56 src/blur_scope-qt/blur_scope.cc:158 msgid "Blur Scope" msgstr "模糊波形" @@ -816,6 +581,10 @@ msgid "Presets:" msgstr "預設集:" +#: src/bs2b/plugin.cc:130 +msgid "Default" +msgstr "預設" + #: src/bs2b/plugin.cc:136 msgid "Feed level:" msgstr "饋送等級:" @@ -828,7 +597,7 @@ msgid "Cut frequency:" msgstr "截斷頻率:" -#: src/cairo-spectrum/cairo-spectrum.cc:41 src/qt-spectrum/qt-spectrum.cc:107 +#: src/cairo-spectrum/cairo-spectrum.cc:42 src/qt-spectrum/qt-spectrum.cc:107 msgid "Spectrum Analyzer" msgstr "頻譜分析儀" @@ -923,50 +692,50 @@ msgid "Audio CD" msgstr "音樂 CD" -#: src/cdaudio/cdaudio-ng.cc:435 src/cdaudio/cdaudio-ng.cc:444 +#: src/cdaudio/cdaudio-ng.cc:434 src/cdaudio/cdaudio-ng.cc:443 #, c-format msgid "Failed to open CD device %s." msgstr "無法開啟 CD 裝置 %s。" -#: src/cdaudio/cdaudio-ng.cc:447 +#: src/cdaudio/cdaudio-ng.cc:446 msgid "No audio capable CD drive found." msgstr "找不到可以播放音訊的光碟機。" -#: src/cdaudio/cdaudio-ng.cc:470 +#: src/cdaudio/cdaudio-ng.cc:469 msgid "Drive is empty." msgstr "光碟機是空的。" -#: src/cdaudio/cdaudio-ng.cc:472 +#: src/cdaudio/cdaudio-ng.cc:471 msgid "Unsupported disk type." msgstr "未支援的光碟類型" -#: src/cdaudio/cdaudio-ng.cc:496 +#: src/cdaudio/cdaudio-ng.cc:495 msgid "Failed to finish initializing opened CD drive." msgstr "開啟的光碟機無法完成初始化。" -#: src/cdaudio/cdaudio-ng.cc:509 +#: src/cdaudio/cdaudio-ng.cc:508 msgid "Failed to retrieve first/last track number." msgstr "無法取得第一個或最後的音軌編號。" -#: src/cdaudio/cdaudio-ng.cc:530 +#: src/cdaudio/cdaudio-ng.cc:529 #, c-format msgid "Cannot read start/end LSN for track %d." msgstr "無法讀取音軌 %d 的起始/結束邏輯磁區編號。" -#: src/cdaudio/cdaudio-ng.cc:612 +#: src/cdaudio/cdaudio-ng.cc:611 msgid "Failed to create the CDDB connection." msgstr "無法建立 CDDB 的連線。" -#: src/cdaudio/cdaudio-ng.cc:678 +#: src/cdaudio/cdaudio-ng.cc:677 msgid "Failed to query the CDDB server" msgstr "無法查詢 CDDB 伺服器" -#: src/cdaudio/cdaudio-ng.cc:680 +#: src/cdaudio/cdaudio-ng.cc:679 #, c-format msgid "Failed to query the CDDB server: %s" msgstr "無法查詢 CDDB 伺服器:%s" -#: src/cdaudio/cdaudio-ng.cc:704 +#: src/cdaudio/cdaudio-ng.cc:703 #, c-format msgid "Failed to read the CDDB info: %s" msgstr "無法讀取 CDDB 資訊:%s" @@ -1039,6 +808,13 @@ msgid "Default song length:" msgstr "預設歌曲長度:" +#: src/console/plugin.cc:41 src/crossfade/crossfade.cc:52 +#: src/crossfade/crossfade.cc:58 src/lirc/lirc.cc:395 src/notify/notify.cc:113 +#: src/sid/xs_config.cc:85 src/sid/xs_config.cc:94 src/sid/xs_config.cc:103 +#: src/vumeter-qt/vumeter_qt.cc:39 +msgid "seconds" +msgstr "秒" + #: src/console/plugin.cc:42 src/modplug/plugin_main.cc:58 msgid "Resampling" msgstr "重取樣" @@ -1067,7 +843,7 @@ msgid "CoreAudio output" msgstr "CoreAudio 輸出" -#: src/coreaudio/coreaudio.cc:156 +#: src/coreaudio/coreaudio.cc:155 msgid "" "CoreAudio Output Plugin for Audacious\n" "Copyright 2014 William Pitcock\n" @@ -1087,11 +863,11 @@ "Based on SDL Output Plugin for Audacious\n" "Copyright 2010 John Lindgren" -#: src/coreaudio/coreaudio.cc:172 +#: src/coreaudio/coreaudio.cc:171 msgid "Use exclusive mode" msgstr "使用獨占模式" -#: src/coreaudio/coreaudio.cc:174 +#: src/coreaudio/coreaudio.cc:173 msgid "Use bit perfect audio (adapt device sampling rate)" msgstr "使用 bit perfect 音訊(配合裝置的取樣率)" @@ -1186,20 +962,20 @@ msgid "Delete" msgstr "刪除" -#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:234 -#: src/skins/search-select.cc:76 +#: src/delete-files/delete-files.cc:213 src/delete-files/delete-files.cc:235 +#: src/skins-qt/search-select.cc:102 src/skins/search-select.cc:78 msgid "Cancel" msgstr "取消" -#: src/delete-files/delete-files.cc:266 +#: src/delete-files/delete-files.cc:267 msgid "Delete Selected Files" msgstr "刪除選擇的檔案" -#: src/delete-files/delete-files.cc:286 +#: src/delete-files/delete-files.cc:287 msgid "Delete Method" msgstr "刪除方式" -#: src/delete-files/delete-files.cc:287 +#: src/delete-files/delete-files.cc:288 msgid "Move to trash instead of deleting immediately" msgstr "移動到垃圾桶而不是直接刪除" @@ -1225,7 +1001,7 @@ msgstr "延遲:" #: src/echo_plugin/echo.cc:24 src/modplug/plugin_main.cc:72 -#: src/modplug/plugin_main.cc:82 +#: src/modplug/plugin_main.cc:82 src/xsf/plugin.cc:445 msgid "ms" msgstr "毫秒" @@ -1241,11 +1017,11 @@ msgid "Echo" msgstr "回音" -#: src/ffaudio/ffaudio-core.cc:49 +#: src/ffaudio/ffaudio-core.cc:50 msgid "FFmpeg Plugin" msgstr "FFmpeg 外掛" -#: src/ffaudio/ffaudio-core.cc:628 +#: src/ffaudio/ffaudio-core.cc:650 msgid "" "Multi-format audio decoding plugin for Audacious using\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" @@ -1368,89 +1144,89 @@ msgid "32000 Hz" msgstr "32000 Hz" -#: src/filewriter/filewriter.cc:425 +#: src/filewriter/filewriter.cc:425 src/xsf/plugin.cc:430 msgid "44100 Hz" msgstr "44100 Hz" -#: src/filewriter/filewriter.cc:426 +#: src/filewriter/filewriter.cc:426 src/xsf/plugin.cc:431 msgid "48000 Hz" msgstr "48000 Hz" #: src/filewriter/filewriter.cc:430 -msgid "8 kbps" -msgstr "8 kbps" +msgid "8 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:431 -msgid "16 kbps" -msgstr "16 kbps" +msgid "16 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:432 -msgid "32 kbps" -msgstr "32 kbps" +msgid "32 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:433 -msgid "40 kbps" -msgstr "40 kbps" +msgid "40 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:434 -msgid "48 kbps" -msgstr "48 kbps" +msgid "48 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:435 -msgid "56 kbps" -msgstr "56 kbps" +msgid "56 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:436 -msgid "64 kbps" -msgstr "64 kbps" +msgid "64 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:437 -msgid "80 kbps" -msgstr "80 kbps" +msgid "80 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:438 -msgid "96 kbps" -msgstr "96 kbps" +msgid "96 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:439 -msgid "112 kbps" -msgstr "112 kbps" +msgid "112 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:440 -msgid "128 kbps" -msgstr "128 kbps" +msgid "128 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:441 -msgid "160 kbps" -msgstr "160 kbps" +msgid "160 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:442 -msgid "192 kbps" -msgstr "192 kbps" +msgid "192 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:443 -msgid "224 kbps" -msgstr "224 kbps" +msgid "224 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:444 -msgid "256 kbps" -msgstr "256 kbps" +msgid "256 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:445 -msgid "320 kbps" -msgstr "320 kbps" +msgid "320 kbit/s" +msgstr "" #: src/filewriter/filewriter.cc:450 msgid "Joint Stereo" msgstr "聯合立體聲" #: src/filewriter/filewriter.cc:451 src/modplug/plugin_main.cc:57 -#: src/mpg123/mpg123.cc:255 +#: src/mpg123/mpg123.cc:259 msgid "Stereo" msgstr "立體聲" #: src/filewriter/filewriter.cc:452 src/modplug/plugin_main.cc:56 -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Mono" msgstr "單聲道" @@ -1562,7 +1338,7 @@ msgid "Quality (0-1):" msgstr "品質 (0-1):" -#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:303 +#: src/filewriter/filewriter.cc:573 src/skins-qt/skins_cfg.cc:307 #: src/skins/skins_cfg.cc:285 msgid "General" msgstr "一般" @@ -1571,11 +1347,11 @@ msgid "FLAC Decoder" msgstr "FLAC 解碼器" -#: src/flac/metadata.cc:274 src/wavpack/wavpack.cc:215 +#: src/flac/metadata.cc:293 src/wavpack/wavpack.cc:215 msgid "lossless" msgstr "無損" -#: src/flac/plugin.cc:169 +#: src/flac/plugin.cc:214 msgid "" "Original code by\n" "Ralf Ertzinger \n" @@ -1607,7 +1383,7 @@ msgid "Invalid open mode" msgstr "無效的開啟模式" -#: src/glspectrum/gl-spectrum.cc:51 +#: src/glspectrum/gl-spectrum.cc:52 msgid "" "OpenGL Spectrum Analyzer for Audacious\n" "Copyright 2013 Christophe Budé, John Lindgren, and Carlo Bramini\n" @@ -1627,116 +1403,134 @@ "\n" "License: GPLv2+" -#: src/glspectrum/gl-spectrum.cc:62 src/qtglspectrum/gl-spectrum.cc:53 +#: src/glspectrum/gl-spectrum.cc:63 src/qtglspectrum/gl-spectrum.cc:53 msgid "OpenGL Spectrum Analyzer" msgstr "OpenGL 頻譜分析儀" -#: src/gtkui/columns.cc:35 -msgid "Entry number" +#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/qtui/playlist_model.cc:33 +msgid "Entry Number" msgstr "項目編號" -#: src/gtkui/columns.cc:36 src/moonstone/playlist_model.cc:38 +#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:38 #: src/moonstone/playlist_selection.cc:62 -#: src/playlist-manager/playlist-manager.cc:199 -#: src/playlist-manager-qt/playlist-manager-qt.cc:186 +#: src/playlist-manager/playlist-manager.cc:200 +#: src/playlist-manager-qt/playlist-manager-qt.cc:188 #: src/qtui/playlist_model.cc:33 src/streamtuner/icecast-model.cc:120 #: src/streamtuner/ihr-model.cc:159 src/streamtuner/shoutcast-model.cc:122 msgid "Title" msgstr "標題" -#: src/gtkui/columns.cc:37 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Artist" msgstr "藝人" -#: src/gtkui/columns.cc:38 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:33 msgid "Year" msgstr "年份" -#: src/gtkui/columns.cc:39 src/moonstone/playlist_model.cc:39 +#: src/gtkui/columns.cc:40 src/moonstone/playlist_model.cc:39 #: src/qtui/playlist_model.cc:34 msgid "Album" msgstr "專輯" -#: src/gtkui/columns.cc:40 -msgid "Album artist" +#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/qtui/playlist_model.cc:34 +msgid "Album Artist" msgstr "專輯藝人" -#: src/gtkui/columns.cc:41 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 msgid "Track" msgstr "音軌" -#: src/gtkui/columns.cc:42 src/moonstone/playlist_model.cc:40 +#: src/gtkui/columns.cc:43 src/moonstone/playlist_model.cc:40 #: src/qtui/playlist_model.cc:34 src/streamtuner/icecast-model.cc:123 #: src/streamtuner/shoutcast-model.cc:125 #: src/streamtuner/shoutcast-model.cc:236 msgid "Genre" msgstr "類型" -#: src/gtkui/columns.cc:43 -msgid "Queue position" +#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "Queue Position" msgstr "佇列位置" -#: src/gtkui/columns.cc:44 src/moonstone/playlist_model.cc:41 +#: src/gtkui/columns.cc:45 src/moonstone/playlist_model.cc:41 #: src/qtui/playlist_model.cc:35 msgid "Length" msgstr "長度" -#: src/gtkui/columns.cc:45 -msgid "File path" +#: src/gtkui/columns.cc:46 src/moonstone/playlist_model.cc:41 +#: src/qtui/playlist_model.cc:35 +msgid "File Path" msgstr "檔案路徑" -#: src/gtkui/columns.cc:47 -msgid "Custom title" -msgstr "自訂標題" +#: src/gtkui/columns.cc:47 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:35 +msgid "File Name" +msgstr "檔案名稱" #: src/gtkui/columns.cc:48 src/moonstone/playlist_model.cc:42 +#: src/qtui/playlist_model.cc:36 +msgid "Custom Title" +msgstr "自訂標題" + +#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:42 #: src/qtui/playlist_model.cc:36 src/streamtuner/icecast-model.cc:129 #: src/streamtuner/shoutcast-model.cc:134 msgid "Bitrate" msgstr "位元率" -#: src/gtkui/columns.cc:49 src/moonstone/playlist_model.cc:43 +#: src/gtkui/columns.cc:50 src/moonstone/playlist_model.cc:43 #: src/qtui/playlist_model.cc:36 msgid "Comment" msgstr "備註" -#: src/gtkui/columns.cc:315 +#: src/gtkui/columns.cc:51 src/qtui/playlist_model.cc:36 +msgid "Publisher" +msgstr "" + +#: src/gtkui/columns.cc:52 src/qtui/playlist_model.cc:37 +msgid "Catalog Number" +msgstr "" + +#: src/gtkui/columns.cc:322 msgid "Available columns" msgstr "可用的欄位" -#: src/gtkui/columns.cc:341 +#: src/gtkui/columns.cc:348 msgid "Displayed columns" msgstr "顯示的欄位" -#: src/gtkui/layout.cc:73 src/search-tool-qt/search-tool-qt.cc:58 -#: src/search-tool/search-tool.cc:48 +#: src/gtkui/layout.cc:74 src/search-tool-qt/search-tool-qt.cc:58 +#: src/search-tool/search-tool.cc:49 msgid "Search Tool" msgstr "搜尋工具" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Left" msgstr "嵌入左方" -#: src/gtkui/layout.cc:168 +#: src/gtkui/layout.cc:170 msgid "Dock at Right" msgstr "嵌入右方" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Top" msgstr "嵌入頂端" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Dock at Bottom" msgstr "嵌入底端" -#: src/gtkui/layout.cc:169 +#: src/gtkui/layout.cc:171 msgid "Undock" msgstr "解除嵌入" -#: src/gtkui/layout.cc:169 src/ladspa/plugin.cc:534 +#: src/gtkui/layout.cc:171 src/ladspa/plugin.cc:540 msgid "Disable" msgstr "關閉" @@ -1776,8 +1570,8 @@ #: src/gtkui/menus.cc:92 src/gtkui/menus.cc:224 #: src/moonstone/playlist_tabs.cc:306 src/qtui/menus.cc:135 -#: src/qtui/playlist_tabs.cc:328 src/search-tool-qt/search-tool-qt.cc:499 -#: src/search-tool/search-tool.cc:343 src/statusicon-qt/statusicon.cc:106 +#: src/qtui/playlist_tabs.cc:330 src/search-tool-qt/search-tool-qt.cc:499 +#: src/search-tool/search-tool.cc:339 src/statusicon-qt/statusicon.cc:106 #: src/statusicon/statusicon.cc:276 msgid "_Play" msgstr "播放(_P)" @@ -1954,8 +1748,8 @@ msgid "Remove _Unavailable Files" msgstr "移除不存在的檔案(_U)" -#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:218 -#: src/playlist-manager-qt/playlist-manager-qt.cc:346 src/qtui/menus.cc:227 +#: src/gtkui/menus.cc:164 src/playlist-manager/playlist-manager.cc:219 +#: src/playlist-manager-qt/playlist-manager-qt.cc:348 src/qtui/menus.cc:227 msgid "_New" msgstr "新增(_N)" @@ -1965,7 +1759,7 @@ #: src/gtkui/menus.cc:166 src/gtkui/menus.cc:226 #: src/moonstone/playlist_tabs.cc:311 src/qtui/menus.cc:229 -#: src/qtui/playlist_tabs.cc:333 +#: src/qtui/playlist_tabs.cc:335 msgid "Remo_ve" msgstr "移除(_V)" @@ -2096,7 +1890,7 @@ msgstr "選擇全部(_A)" #: src/gtkui/menus.cc:225 src/moonstone/playlist_tabs.cc:309 -#: src/qtui/playlist_tabs.cc:331 +#: src/qtui/playlist_tabs.cc:333 msgid "_Rename ..." msgstr "重新命名(_R) ..." @@ -2124,196 +1918,201 @@ msgid "Show column headers" msgstr "顯示欄位標頭" -#: src/gtkui/settings.cc:47 src/qtui/settings.cc:82 +#: src/gtkui/settings.cc:47 +msgid "Use symbolic icons in toolbar" +msgstr "" + +#: src/gtkui/settings.cc:49 src/qtui/settings.cc:82 msgid "Scroll on song change" msgstr "切換歌曲時捲動清單" -#: src/gtkui/ui_gtk.cc:74 +#: src/gtkui/ui_gtk.cc:81 msgid "GTK Interface" msgstr "GTK 介面" -#: src/gtkui/ui_gtk.cc:210 src/skins/main.cc:227 src/skins-qt/main.cc:225 +#: src/gtkui/ui_gtk.cc:218 src/skins/main.cc:227 src/skins-qt/main.cc:231 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.cc:212 src/moonstone/main_window.cc:184 -#: src/qtui/main_window.cc:384 +#: src/gtkui/ui_gtk.cc:220 src/moonstone/main_window.cc:184 +#: src/qtui/main_window.cc:386 msgid "Buffering ..." msgstr "緩衝中 ..." -#: src/gtkui/ui_gtk.cc:215 src/skins/main.cc:229 src/skins-qt/main.cc:227 +#: src/gtkui/ui_gtk.cc:223 src/pipewire/pipewire.cc:401 src/skins/main.cc:229 +#: src/skins-qt/main.cc:233 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_gtk.cc:428 src/gtkui/ui_gtk.cc:459 src/gtkui/ui_gtk.cc:817 -#: src/hotkey/gui.cc:71 src/moonstone/main_window.cc:67 +#: src/gtkui/ui_gtk.cc:444 src/gtkui/ui_gtk.cc:475 src/gtkui/ui_gtk.cc:839 +#: src/hotkey/gui.cc:72 src/moonstone/main_window.cc:67 #: src/moonstone/main_window.cc:145 src/moonstone/main_window.cc:146 -#: src/notify/osd.cc:85 src/qthotkey/gui.cc:64 src/qtui/main_window.cc:154 -#: src/qtui/main_window.cc:346 src/qtui/main_window.cc:347 +#: src/notify/osd.cc:85 src/qthotkey/gui.cc:67 src/qtui/main_window.cc:155 +#: src/qtui/main_window.cc:348 src/qtui/main_window.cc:349 #: src/skins/menus.cc:109 src/skins-qt/menus.cc:100 msgid "Play" msgstr "播放" -#: src/gtkui/ui_gtk.cc:428 src/moonstone/main_window.cc:151 +#: src/gtkui/ui_gtk.cc:444 src/moonstone/main_window.cc:151 #: src/moonstone/main_window.cc:152 src/notify/osd.cc:82 -#: src/qtui/main_window.cc:352 src/qtui/main_window.cc:353 +#: src/qtui/main_window.cc:354 src/qtui/main_window.cc:355 #: src/skins/menus.cc:110 src/skins-qt/menus.cc:101 msgid "Pause" msgstr "暫停" -#: src/gtkui/ui_gtk.cc:803 src/moonstone/main_window.cc:57 -#: src/qtui/main_window.cc:145 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 +#: src/gtkui/ui_gtk.cc:825 src/moonstone/main_window.cc:57 +#: src/qtui/main_window.cc:146 src/skins/menus.cc:86 src/skins-qt/menus.cc:77 msgid "Search Library" msgstr "搜尋媒體櫃" -#: src/gtkui/ui_gtk.cc:810 src/moonstone/main_window.cc:60 -#: src/qtui/main_window.cc:147 +#: src/gtkui/ui_gtk.cc:832 src/moonstone/main_window.cc:60 +#: src/qtui/main_window.cc:148 msgid "Open Files" msgstr "開啟檔案" -#: src/gtkui/ui_gtk.cc:811 src/moonstone/main_window.cc:62 -#: src/qtui/main_window.cc:149 +#: src/gtkui/ui_gtk.cc:833 src/moonstone/main_window.cc:62 +#: src/qtui/main_window.cc:150 msgid "Add Files" msgstr "加入檔案" -#: src/gtkui/ui_gtk.cc:816 src/moonstone/main_window.cc:65 -#: src/qtui/main_window.cc:152 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 +#: src/gtkui/ui_gtk.cc:838 src/moonstone/main_window.cc:65 +#: src/qtui/main_window.cc:153 src/skins/menus.cc:112 src/skins-qt/menus.cc:103 msgid "Previous" msgstr "上一個" -#: src/gtkui/ui_gtk.cc:818 src/hotkey/gui.cc:73 src/moonstone/main_window.cc:69 -#: src/qthotkey/gui.cc:66 src/qtui/main_window.cc:156 src/skins/menus.cc:111 +#: src/gtkui/ui_gtk.cc:840 src/hotkey/gui.cc:74 src/moonstone/main_window.cc:69 +#: src/qthotkey/gui.cc:69 src/qtui/main_window.cc:157 src/skins/menus.cc:111 #: src/skins-qt/menus.cc:102 msgid "Stop" msgstr "停止" -#: src/gtkui/ui_gtk.cc:819 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 -#: src/qtui/main_window.cc:163 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 +#: src/gtkui/ui_gtk.cc:841 src/moonstone/main_window.cc:76 src/notify/osd.cc:89 +#: src/qtui/main_window.cc:164 src/skins/menus.cc:113 src/skins-qt/menus.cc:104 msgid "Next" msgstr "下一個" -#: src/gtkui/ui_gtk.cc:821 src/moonstone/main_window.cc:79 -#: src/qtui/main_window.cc:166 src/qtui/menus.cc:252 src/skins/menus.cc:79 +#: src/gtkui/ui_gtk.cc:843 src/moonstone/main_window.cc:79 +#: src/qtui/main_window.cc:167 src/qtui/menus.cc:252 src/skins/menus.cc:79 #: src/skins-qt/menus.cc:69 msgid "Record Stream" msgstr "錄音" -#: src/gtkui/ui_gtk.cc:854 src/moonstone/main_window.cc:86 -#: src/qtui/main_window.cc:173 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 +#: src/gtkui/ui_gtk.cc:876 src/moonstone/main_window.cc:86 +#: src/qtui/main_window.cc:174 src/skins/menus.cc:103 src/skins-qt/menus.cc:94 msgid "Repeat" msgstr "重複" -#: src/gtkui/ui_gtk.cc:857 src/moonstone/main_window.cc:89 -#: src/qtui/main_window.cc:176 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 +#: src/gtkui/ui_gtk.cc:879 src/moonstone/main_window.cc:89 +#: src/qtui/main_window.cc:177 src/skins/menus.cc:104 src/skins-qt/menus.cc:95 msgid "Shuffle" msgstr "隨機" -#: src/gtkui/ui_gtk.cc:1030 src/qtui/main_window.cc:123 +#: src/gtkui/ui_gtk.cc:1062 src/qtui/main_window.cc:124 msgid "Menu" msgstr "" -#: src/gtkui/ui_statusbar.cc:63 src/qtui/status_bar.cc:155 +#: src/gtkui/ui_statusbar.cc:64 src/qtui/status_bar.cc:155 msgid "mono" msgstr "單聲道" -#: src/gtkui/ui_statusbar.cc:65 src/qtui/status_bar.cc:157 +#: src/gtkui/ui_statusbar.cc:66 src/qtui/status_bar.cc:157 msgid "stereo" msgstr "立體聲" -#: src/gtkui/ui_statusbar.cc:67 src/qtui/status_bar.cc:160 +#: src/gtkui/ui_statusbar.cc:68 src/qtui/status_bar.cc:160 #, c-format msgid "%d channel" msgid_plural "%d channels" msgstr[0] "%d 聲道" -#: src/gtkui/ui_statusbar.cc:75 src/qtui/status_bar.cc:168 +#: src/gtkui/ui_statusbar.cc:76 src/qtui/status_bar.cc:168 #, c-format msgid "%d kHz" msgstr "%d kHz" -#: src/gtkui/ui_statusbar.cc:81 src/qtui/status_bar.cc:174 +#: src/gtkui/ui_statusbar.cc:82 src/qtui/status_bar.cc:174 #, c-format -msgid "%d kbps" -msgstr "%d kbps" +msgid "%d kbit/s" +msgstr "" -#: src/gtkui/ui_statusbar.cc:107 src/skins/main.cc:471 src/skins-qt/main.cc:455 +#: src/gtkui/ui_statusbar.cc:108 src/skins/main.cc:471 src/skins-qt/main.cc:461 msgid "Single mode." msgstr "單一模式。" -#: src/gtkui/ui_statusbar.cc:109 src/skins/main.cc:473 src/skins-qt/main.cc:457 +#: src/gtkui/ui_statusbar.cc:110 src/skins/main.cc:473 src/skins-qt/main.cc:463 msgid "Playlist mode." msgstr "播放清單模式。" -#: src/gtkui/ui_statusbar.cc:117 src/skins/main.cc:479 src/skins-qt/main.cc:463 +#: src/gtkui/ui_statusbar.cc:118 src/skins/main.cc:479 src/skins-qt/main.cc:469 msgid "Stopping after song." msgstr "播放完成後停止。" -#: src/hotkey/gui.cc:70 src/qthotkey/gui.cc:63 +#: src/hotkey/gui.cc:71 src/qthotkey/gui.cc:66 msgid "Previous track" msgstr "上一個音軌" -#: src/hotkey/gui.cc:72 src/qthotkey/gui.cc:65 +#: src/hotkey/gui.cc:73 src/qthotkey/gui.cc:68 msgid "Pause/Resume" msgstr "暫停/回復" -#: src/hotkey/gui.cc:74 src/qthotkey/gui.cc:67 +#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:70 msgid "Next track" msgstr "下一個音軌" -#: src/hotkey/gui.cc:75 src/qthotkey/gui.cc:68 +#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:71 msgid "Step forward" msgstr "往前跳轉" -#: src/hotkey/gui.cc:76 src/qthotkey/gui.cc:69 +#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:72 msgid "Step backward" msgstr "往回跳轉" -#: src/hotkey/gui.cc:77 src/qthotkey/gui.cc:70 +#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:73 msgid "Mute" msgstr "靜音" -#: src/hotkey/gui.cc:78 src/qthotkey/gui.cc:71 +#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:74 msgid "Volume up" msgstr "提高音量" -#: src/hotkey/gui.cc:79 src/qthotkey/gui.cc:72 +#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:75 msgid "Volume down" msgstr "降低音量" -#: src/hotkey/gui.cc:80 src/qthotkey/gui.cc:73 +#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:76 msgid "Jump to file" msgstr "跳轉到指定檔案" -#: src/hotkey/gui.cc:81 src/qthotkey/gui.cc:74 +#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:77 msgid "Toggle player window(s)" msgstr "切換顯示播放器視窗" -#: src/hotkey/gui.cc:82 src/qthotkey/gui.cc:75 +#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:78 msgid "Show On-Screen-Display" msgstr "顯示 OSD" -#: src/hotkey/gui.cc:83 src/qthotkey/gui.cc:76 +#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:79 msgid "Toggle repeat" msgstr "切換重複播放" -#: src/hotkey/gui.cc:84 src/qthotkey/gui.cc:77 +#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:80 msgid "Toggle shuffle" msgstr "切換隨機播放" -#: src/hotkey/gui.cc:85 src/qthotkey/gui.cc:78 +#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:81 msgid "Toggle stop after current" msgstr "播放完目前歌曲後停止" -#: src/hotkey/gui.cc:86 src/qthotkey/gui.cc:79 +#: src/hotkey/gui.cc:87 src/qthotkey/gui.cc:82 msgid "Raise player window(s)" msgstr "將播放器視窗放到最上層" -#: src/hotkey/gui.cc:97 src/qthotkey/gui.cc:97 +#: src/hotkey/gui.cc:98 src/qthotkey/gui.cc:100 msgid "(none)" msgstr "(無)" -#: src/hotkey/gui.cc:260 +#: src/hotkey/gui.cc:261 msgid "" "It is not recommended to bind the primary mouse buttons without modifiers.\n" "\n" @@ -2323,11 +2122,11 @@ "\n" "您想要繼續嗎?" -#: src/hotkey/gui.cc:263 +#: src/hotkey/gui.cc:264 msgid "Binding mouse buttons" msgstr "綁定滑鼠按鈕" -#: src/hotkey/gui.cc:426 +#: src/hotkey/gui.cc:434 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2335,23 +2134,23 @@ "請在輸入欄位中按下想要的按鍵組合。\n" "您也可以綁定滑鼠按鈕。" -#: src/hotkey/gui.cc:432 src/qthotkey/gui.cc:167 +#: src/hotkey/gui.cc:444 src/qthotkey/gui.cc:179 msgid "Hotkeys:" msgstr "熱鍵:" -#: src/hotkey/gui.cc:448 src/qthotkey/gui.cc:169 +#: src/hotkey/gui.cc:457 src/qthotkey/gui.cc:181 msgid "Action:" msgstr "動作:" -#: src/hotkey/gui.cc:454 src/qthotkey/gui.cc:170 +#: src/hotkey/gui.cc:461 src/qthotkey/gui.cc:182 msgid "Key Binding:" msgstr "按鍵綁定:" -#: src/hotkey/gui.cc:501 src/qthotkey/gui.cc:172 +#: src/hotkey/gui.cc:518 src/qthotkey/gui.cc:184 msgid "_Add" msgstr "加入(_A)" -#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:77 +#: src/hotkey/plugin.cc:61 src/qthotkey/plugin.cc:80 msgid "Global Hotkeys" msgstr "全域熱鍵" @@ -2447,16 +2246,16 @@ "JACK 伺服器需要使用 %d Hz 的取樣率,但 Audacious 目前正以 %d Hz 播放中。請使" "用「取樣率轉換」特效修正這個問題。" -#: src/ladspa/plugin.cc:415 +#: src/ladspa/plugin.cc:416 #, c-format msgid "%s Settings" msgstr "%s 設定" -#: src/ladspa/plugin.cc:481 +#: src/ladspa/plugin.cc:482 msgid "Module paths:" msgstr "模組路徑:" -#: src/ladspa/plugin.cc:486 +#: src/ladspa/plugin.cc:487 msgid "" "Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" @@ -2466,25 +2265,25 @@ "系統除了 LADSPA_PATH 之外也會搜尋這些路徑。\n" "加入新路徑之後請按 Enter 掃描新的外掛。" -#: src/ladspa/plugin.cc:502 +#: src/ladspa/plugin.cc:508 msgid "Available plugins:" msgstr "可用的外掛:" -#: src/ladspa/plugin.cc:515 src/modplug/plugin_main.cc:91 +#: src/ladspa/plugin.cc:521 src/modplug/plugin_main.cc:91 #: src/modplug/plugin_main.cc:94 src/modplug/plugin_main.cc:97 #: src/modplug/plugin_main.cc:100 msgid "Enable" msgstr "啟用" -#: src/ladspa/plugin.cc:521 +#: src/ladspa/plugin.cc:527 msgid "Enabled plugins:" msgstr "啟用外掛:" -#: src/ladspa/plugin.cc:537 +#: src/ladspa/plugin.cc:543 msgid "Settings" msgstr "設定" -#: src/ladspa/plugin.cc:554 +#: src/ladspa/plugin.cc:560 msgid "" "LADSPA Host for Audacious\n" "Copyright 2011 John Lindgren" @@ -2540,101 +2339,105 @@ msgid "Wait before reconnecting:" msgstr "重新連線前的等待時間:" -#: src/lyricwiki-qt/lyricwiki.cc:89 +#: src/lyricwiki-qt/lyricwiki.cc:90 msgid "Lyrics" msgstr "歌詞" -#: src/lyricwiki-qt/lyricwiki.cc:116 +#: src/lyricwiki-qt/lyricwiki.cc:118 msgid "Nowhere" msgstr "Nowhere" -#: src/lyricwiki-qt/lyricwiki.cc:117 +#: src/lyricwiki-qt/lyricwiki.cc:119 msgid "lyrics.ovh" msgstr "lyrics.ovh" -#: src/lyricwiki-qt/lyricwiki.cc:121 +#: src/lyricwiki-qt/lyricwiki.cc:123 msgid "Artist is truncated at the start, Title -- at the end" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:122 +#: src/lyricwiki-qt/lyricwiki.cc:124 msgid "Chars to truncate on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:126 +#: src/lyricwiki-qt/lyricwiki.cc:128 msgid "Chars are ORed in RegExp, surrounded by whitespace" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:127 +#: src/lyricwiki-qt/lyricwiki.cc:129 msgid "Chars to split on:" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:128 +#: src/lyricwiki-qt/lyricwiki.cc:130 msgid "Further truncate those on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:134 +#: src/lyricwiki-qt/lyricwiki.cc:136 msgid "General" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:135 +#: src/lyricwiki-qt/lyricwiki.cc:137 msgid "Split title into artist and title on chars" msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:138 -msgid "Internet Sources" -msgstr "網際網路來源" - -#: src/lyricwiki-qt/lyricwiki.cc:139 -msgid "Fetch lyrics from:" -msgstr "擷取歌詞自:" +#: src/lyricwiki-qt/lyricwiki.cc:140 +msgid "Sources" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:141 +msgid "Use embedded lyrics (from Lyrics tag)" +msgstr "" -#: src/lyricwiki-qt/lyricwiki.cc:142 +#: src/lyricwiki-qt/lyricwiki.cc:143 +msgid "Fetch lyrics from internet:" +msgstr "" + +#: src/lyricwiki-qt/lyricwiki.cc:146 msgid "Store fetched lyrics in local cache" msgstr "在本地快取中儲存擷取到的歌詞" -#: src/lyricwiki-qt/lyricwiki.cc:144 +#: src/lyricwiki-qt/lyricwiki.cc:148 msgid "Local Storage" msgstr "本地儲存空間" -#: src/lyricwiki-qt/lyricwiki.cc:145 +#: src/lyricwiki-qt/lyricwiki.cc:149 msgid "Load lyric files (.lrc) from local storage" msgstr "從本地儲存空間載入歌詞檔(.lrc)" -#: src/lyricwiki-qt/lyricwiki.cc:356 +#: src/lyricwiki-qt/lyricwiki.cc:360 #, c-format msgid "Unable to fetch %s" msgstr "無法取得 %s" -#: src/lyricwiki-qt/lyricwiki.cc:365 +#: src/lyricwiki-qt/lyricwiki.cc:369 #, c-format msgid "Unable to parse %s" msgstr "無法分析 %s" -#: src/lyricwiki-qt/lyricwiki.cc:403 +#: src/lyricwiki-qt/lyricwiki.cc:407 msgid "Looking for lyrics ..." msgstr "尋找歌詞中 ..." -#: src/lyricwiki-qt/lyricwiki.cc:427 src/ui-common/dialogs-qt.cc:38 +#: src/lyricwiki-qt/lyricwiki.cc:431 src/ui-common/dialogs-qt.cc:63 msgid "Error" msgstr "錯誤" -#: src/lyricwiki-qt/lyricwiki.cc:433 +#: src/lyricwiki-qt/lyricwiki.cc:437 msgid "Lyrics could not be found." msgstr "找不到歌詞。" -#: src/lyricwiki-qt/lyricwiki.cc:501 +#: src/lyricwiki-qt/lyricwiki.cc:518 msgid "Missing title and/or artist." msgstr "缺少標題與(或)藝人。" -#: src/lyricwiki-qt/lyricwiki.cc:553 +#: src/lyricwiki-qt/lyricwiki.cc:576 msgid "Save Locally" msgstr "儲存於本機" -#: src/lyricwiki-qt/lyricwiki.cc:561 +#: src/lyricwiki-qt/lyricwiki.cc:584 msgid "Refresh" msgstr "重新整理" -#: src/m3u/m3u.cc:32 +#: src/m3u/m3u.cc:33 msgid "M3U Playlists" msgstr "M3U 播放清單" @@ -2792,7 +2595,7 @@ msgstr "這些設定值將在 Audacious 重新啟動後生效。" #: src/moonstone/main_window.cc:72 src/moonstone/main_window.cc:73 -#: src/qtui/main_window.cc:159 src/qtui/main_window.cc:160 +#: src/qtui/main_window.cc:160 src/qtui/main_window.cc:161 #: src/skins/menus.cc:107 src/skins-qt/menus.cc:98 msgid "Stop After This Song" msgstr "播放完目前歌曲後停止" @@ -2801,41 +2604,17 @@ msgid "Moonstone" msgstr "" -#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:251 +#: src/moonstone/playlist_header.cc:210 src/qtui/playlist_header.cc:256 msgid "Reset to Defaults" msgstr "重置回預設值" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:225 +#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_header.cc:230 msgid "Now Playing" msgstr "正在播放" -#: src/moonstone/playlist_model.cc:38 src/qtui/playlist_model.cc:33 -msgid "Entry Number" -msgstr "項目編號" - -#: src/moonstone/playlist_model.cc:40 src/qtui/playlist_model.cc:34 -msgid "Album Artist" -msgstr "專輯藝人" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "Queue Position" -msgstr "佇列位置" - -#: src/moonstone/playlist_model.cc:41 src/qtui/playlist_model.cc:35 -msgid "File Path" -msgstr "檔案路徑" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:35 -msgid "File Name" -msgstr "檔案名稱" - -#: src/moonstone/playlist_model.cc:42 src/qtui/playlist_model.cc:36 -msgid "Custom Title" -msgstr "自訂標題" - #: src/moonstone/playlist_selection.cc:64 -#: src/playlist-manager/playlist-manager.cc:200 -#: src/playlist-manager-qt/playlist-manager-qt.cc:188 +#: src/playlist-manager/playlist-manager.cc:201 +#: src/playlist-manager-qt/playlist-manager-qt.cc:190 msgid "Entries" msgstr "項目數" @@ -2851,7 +2630,7 @@ msgid "Use accurate length calculation (slow)" msgstr "啟用精確長度計算(慢)" -#: src/mpg123/mpg123.cc:256 +#: src/mpg123/mpg123.cc:260 msgid "Surround" msgstr "環繞" @@ -2951,26 +2730,26 @@ msgid "OpenMPT (Module Player)" msgstr "" -#: src/openmpt/mpt.cc:133 +#: src/openmpt/mpt.cc:132 msgid "" "Module player based on libopenmpt\n" "\n" "Written by: Chris Spiegel " msgstr "" -#: src/openmpt/mpt.cc:152 +#: src/openmpt/mpt.cc:151 msgid "Stereo separation:" msgstr "" -#: src/openmpt/mpt.cc:154 +#: src/openmpt/mpt.cc:153 msgid "%" msgstr "%" -#: src/openmpt/mpt.cc:158 +#: src/openmpt/mpt.cc:157 msgid "Interpolation:" msgstr "內插:" -#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 +#: src/openmpt/mptwrap.h:51 src/soxr/sox-resampler.cc:189 src/xsf/plugin.cc:437 msgid "Linear" msgstr "線形" @@ -2982,11 +2761,21 @@ msgid "Windowed sinc" msgstr "" -#: src/oss4/oss.h:75 +#: src/opus/opus.cc:39 +msgid "Opus Decoder" +msgstr "" + +#: src/opus/opus.cc:351 +msgid "" +"Opus Decoder Plugin for Audacious\n" +"Copyright 2022 Thomas Lange" +msgstr "" + +#: src/oss4/oss.h:70 msgid "OSS4 Output" msgstr "OSS4 輸出" -#: src/oss4/oss.h:77 +#: src/oss4/oss.h:72 msgid "OSS3 Output" msgstr "OSS3 輸出" @@ -3028,18 +2817,35 @@ "I would like to thank people on #audacious, especially Tony Vroon and John " "Lindgren and of course the authors of the previous OSS plugin." -#: src/playlist-manager/playlist-manager.cc:37 -#: src/playlist-manager-qt/playlist-manager-qt.cc:40 +#: src/pipewire/pipewire.cc:40 +msgid "PipeWire Output" +msgstr "" + +#: src/pipewire/pipewire.cc:114 +msgid "" +"PipeWire Output Plugin for Audacious\n" +"Copyright 2022 Thomas Lange\n" +"\n" +"Based on the PipeWire Output Plugin for Qmmp\n" +"Copyright 2021 Ilya Kotov" +msgstr "" + +#: src/pipewire/pipewire.cc:406 src/skins/menus.cc:88 src/skins-qt/menus.cc:79 +msgid "Playback" +msgstr "播放" + +#: src/playlist-manager/playlist-manager.cc:38 +#: src/playlist-manager-qt/playlist-manager-qt.cc:42 msgid "Playlist Manager" msgstr "播放清單管理" -#: src/playlist-manager/playlist-manager.cc:220 -#: src/playlist-manager-qt/playlist-manager-qt.cc:354 +#: src/playlist-manager/playlist-manager.cc:221 +#: src/playlist-manager-qt/playlist-manager-qt.cc:356 msgid "_Remove" msgstr "移除(_R)" -#: src/playlist-manager/playlist-manager.cc:221 -#: src/playlist-manager-qt/playlist-manager-qt.cc:349 +#: src/playlist-manager/playlist-manager.cc:222 +#: src/playlist-manager-qt/playlist-manager-qt.cc:351 msgid "Ren_ame" msgstr "重新命名(_A)" @@ -3055,7 +2861,7 @@ msgid "OpenPSF Configuration" msgstr "OpenPSF 組態" -#: src/psf/plugin.cc:271 src/xsf/plugin.cc:233 +#: src/psf/plugin.cc:271 src/xsf/plugin.cc:444 msgid "Ignore length from file" msgstr "忽略來自檔案的長度資訊" @@ -3136,11 +2942,11 @@ "License: GPLv2+" msgstr "" -#: src/qthotkey/gui.cc:165 +#: src/qthotkey/gui.cc:177 msgid "Press a key combination inside a text field." msgstr "" -#: src/qthotkey/plugin.cc:103 +#: src/qthotkey/plugin.cc:107 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3176,14 +2982,18 @@ msgid "Audio Settings ..." msgstr "音訊設定 ..." -#: src/qtui/playlist_model.cc:186 +#: src/qtui/playlist_model.cc:188 msgid "Q#" msgstr "" -#: src/qtui/playlist_model.cc:188 +#: src/qtui/playlist_model.cc:190 msgid "T#" msgstr "" +#: src/qtui/playlist_model.cc:192 +msgid "C#" +msgstr "" + #: src/qtui/qtui.cc:40 msgid "Qt Interface" msgstr "Qt 介面" @@ -3399,29 +3209,29 @@ msgid "Library" msgstr "媒體櫃" -#: src/search-tool-qt/search-model.cc:49 src/search-tool/search-tool.cc:291 +#: src/search-tool-qt/search-model.cc:44 src/search-tool/search-tool.cc:287 #, c-format msgid "%d song" msgid_plural "%d songs" msgstr[0] "%d 首歌曲" -#: src/search-tool-qt/search-model.cc:58 src/search-tool/search-tool.cc:298 +#: src/search-tool-qt/search-model.cc:53 src/search-tool/search-tool.cc:294 msgid "of this genre" msgstr "符合此分類" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "on" msgstr "收錄於" -#: src/search-tool-qt/search-model.cc:64 src/search-tool/search-tool.cc:305 +#: src/search-tool-qt/search-model.h:47 src/search-tool/search-model.h:45 msgid "by" msgstr "-" -#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:73 +#: src/search-tool-qt/search-tool-qt.cc:165 src/search-tool/search-tool.cc:74 msgid "Number of results to show:" msgstr "顯示多少搜尋結果:" -#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:76 +#: src/search-tool-qt/search-tool-qt.cc:168 src/search-tool/search-tool.cc:77 msgid "Rescan library at startup" msgstr "啟動時重新掃瞄媒體櫃" @@ -3429,42 +3239,42 @@ msgid "Monitor library for changes" msgstr "偵測媒體櫃的異動" -#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:446 +#: src/search-tool-qt/search-tool-qt.cc:193 src/search-tool/search-tool.cc:450 msgid "" "To import your music library into Audacious, choose a folder and then click " "the \"refresh\" icon." msgstr "" "要將您的媒體櫃匯入 Audacious,請選擇目標資料夾並且按下 \"重新整理\" 圖示。" -#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:455 +#: src/search-tool-qt/search-tool-qt.cc:195 src/search-tool/search-tool.cc:459 msgid "Please wait ..." msgstr "請稍候 ..." -#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:483 +#: src/search-tool-qt/search-tool-qt.cc:197 src/search-tool/search-tool.cc:487 msgid "Choose Folder" msgstr "選擇資料夾" -#: src/search-tool-qt/search-tool-qt.cc:201 +#: src/search-tool-qt/search-tool-qt.cc:201 src/search-tool/search-tool.cc:445 msgid "Search library" msgstr "搜尋媒體櫃" -#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:155 +#: src/search-tool-qt/search-tool-qt.cc:327 src/search-tool/search-tool.cc:156 #, c-format msgid "%d of %d result shown" msgid_plural "%d of %d results shown" msgstr[0] "顯示 %d 項結果,共 %d 項" -#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:159 +#: src/search-tool-qt/search-tool-qt.cc:331 src/search-tool/search-tool.cc:160 #, c-format msgid "%d result" msgid_plural "%d results" msgstr[0] "%d 項結果" -#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:345 +#: src/search-tool-qt/search-tool-qt.cc:501 src/search-tool/search-tool.cc:341 msgid "_Create Playlist" msgstr "建立播放清單(_C)" -#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:347 +#: src/search-tool-qt/search-tool-qt.cc:503 src/search-tool/search-tool.cc:343 msgid "_Add to Playlist" msgstr "加到播放清單(_A)" @@ -3568,108 +3378,108 @@ msgid "Repeat point B set." msgstr "已設定重複點 B。" -#: src/skins/equalizer.cc:224 src/skins-qt/equalizer.cc:221 +#: src/skins/equalizer.cc:223 src/skins-qt/equalizer.cc:223 msgid "Preamp" msgstr "前置放大" -#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:225 +#: src/skins/equalizer.cc:227 src/skins-qt/equalizer.cc:227 msgid "31 Hz" msgstr "31 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "63 Hz" msgstr "63 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "125 Hz" msgstr "125 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "250 Hz" msgstr "250 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "500 Hz" msgstr "500 Hz" -#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:226 +#: src/skins/equalizer.cc:228 src/skins-qt/equalizer.cc:228 msgid "1 kHz" msgstr "1 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "2 kHz" msgstr "2 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "4 kHz" msgstr "4 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "8 kHz" msgstr "8 kHz" -#: src/skins/equalizer.cc:230 src/skins-qt/equalizer.cc:227 +#: src/skins/equalizer.cc:229 src/skins-qt/equalizer.cc:229 msgid "16 kHz" msgstr "16 kHz" -#: src/skins/equalizer.cc:271 src/skins-qt/equalizer.cc:268 +#: src/skins/equalizer.cc:270 src/skins-qt/equalizer.cc:270 msgid "Audacious Equalizer" msgstr "Audacious 等化器" -#: src/skins/main.cc:452 src/skins-qt/main.cc:436 +#: src/skins/main.cc:452 src/skins-qt/main.cc:442 msgid "Recording on" msgstr "錄音開啟" -#: src/skins/main.cc:454 src/skins-qt/main.cc:438 +#: src/skins/main.cc:454 src/skins-qt/main.cc:444 msgid "Recording off" msgstr "錄音關閉" -#: src/skins/main.cc:749 src/skins-qt/main.cc:690 +#: src/skins/main.cc:747 src/skins-qt/main.cc:701 #, c-format msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "移動到 %d:%-2.2d/%d:%-2.2d" -#: src/skins/main.cc:766 src/skins-qt/main.cc:707 +#: src/skins/main.cc:764 src/skins-qt/main.cc:718 #, c-format msgid "Volume: %d%%" msgstr "音量:%d%" -#: src/skins/main.cc:779 src/skins-qt/main.cc:720 +#: src/skins/main.cc:777 src/skins-qt/main.cc:731 #, c-format msgid "Balance: %d%% left" msgstr "平衡:%d% 偏左" -#: src/skins/main.cc:781 src/skins-qt/main.cc:722 +#: src/skins/main.cc:779 src/skins-qt/main.cc:733 msgid "Balance: center" msgstr "平衡:中間" -#: src/skins/main.cc:783 src/skins-qt/main.cc:724 +#: src/skins/main.cc:781 src/skins-qt/main.cc:735 #, c-format msgid "Balance: %d%% right" msgstr "平衡:%d% 偏右" -#: src/skins/main.cc:875 src/skins-qt/main.cc:816 +#: src/skins/main.cc:873 src/skins-qt/main.cc:827 msgid "Options Menu" msgstr "選單選項" -#: src/skins/main.cc:879 src/skins-qt/main.cc:820 +#: src/skins/main.cc:877 src/skins-qt/main.cc:831 msgid "Disable 'Always On Top'" msgstr "關閉置頂" -#: src/skins/main.cc:881 src/skins-qt/main.cc:822 +#: src/skins/main.cc:879 src/skins-qt/main.cc:833 msgid "Enable 'Always On Top'" msgstr "啟用置頂" -#: src/skins/main.cc:884 src/skins-qt/main.cc:825 +#: src/skins/main.cc:882 src/skins-qt/main.cc:836 msgid "File Info Box" msgstr "檔案資訊視窗" -#: src/skins/main.cc:887 src/skins/menus.cc:149 src/skins-qt/main.cc:828 +#: src/skins/main.cc:885 src/skins/menus.cc:149 src/skins-qt/main.cc:839 #: src/skins-qt/menus.cc:142 msgid "Double Size" msgstr "兩倍大小" -#: src/skins/main.cc:890 src/skins-qt/main.cc:831 +#: src/skins/main.cc:888 src/skins-qt/main.cc:842 msgid "Visualizations" msgstr "視覺特效" @@ -3693,10 +3503,6 @@ msgid "Open URL ..." msgstr "開啟網址 ..." -#: src/skins/menus.cc:88 src/skins-qt/menus.cc:79 -msgid "Playback" -msgstr "播放" - #: src/skins/menus.cc:89 src/skins-qt/menus.cc:80 msgid "Playlist" msgstr "播放清單" @@ -3711,7 +3517,7 @@ #: src/skins/menus.cc:93 src/skins/menus.cc:161 src/skins/menus.cc:174 #: src/skins/menus.cc:243 src/skins-qt/menus.cc:84 src/skins-qt/menus.cc:156 -#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:237 +#: src/skins-qt/menus.cc:170 src/skins-qt/menus.cc:239 msgid "Services" msgstr "服務" @@ -3728,7 +3534,7 @@ msgstr "離開" #: src/skins/menus.cc:101 src/skins/menus.cc:233 src/skins-qt/menus.cc:92 -#: src/skins-qt/menus.cc:227 +#: src/skins-qt/menus.cc:229 msgid "Song Info ..." msgstr "歌曲資訊 ..." @@ -3748,7 +3554,7 @@ msgid "Clear A-B Repeat" msgstr "清除 A-B 循環" -#: src/skins/menus.cc:120 src/skins-qt/menus.cc:112 +#: src/skins/menus.cc:120 src/skins-qt/menus.cc:111 msgid "Jump to Song ..." msgstr "跳轉到指定歌曲 ..." @@ -3841,20 +3647,20 @@ msgstr "加入檔案 ... " #: src/skins/menus.cc:168 src/skins/menus.cc:196 src/skins/menus.cc:211 -#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:190 -#: src/skins-qt/menus.cc:205 +#: src/skins-qt/menus.cc:164 src/skins-qt/menus.cc:192 +#: src/skins-qt/menus.cc:207 msgid "By Title" msgstr "標題" #: src/skins/menus.cc:169 src/skins/menus.cc:203 src/skins/menus.cc:218 -#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:197 -#: src/skins-qt/menus.cc:212 +#: src/skins-qt/menus.cc:165 src/skins-qt/menus.cc:199 +#: src/skins-qt/menus.cc:214 msgid "By File Name" msgstr "檔案名稱" #: src/skins/menus.cc:170 src/skins/menus.cc:204 src/skins/menus.cc:219 -#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:198 -#: src/skins-qt/menus.cc:213 +#: src/skins-qt/menus.cc:166 src/skins-qt/menus.cc:200 +#: src/skins-qt/menus.cc:215 msgid "By File Path" msgstr "檔案路徑" @@ -3882,113 +3688,113 @@ msgid "Remove Selected" msgstr "移除選擇的項目" -#: src/skins/menus.cc:187 +#: src/skins/menus.cc:187 src/skins-qt/menus.cc:183 msgid "Search and Select" msgstr "搜尋並選擇" -#: src/skins/menus.cc:189 src/skins-qt/menus.cc:183 +#: src/skins/menus.cc:189 src/skins-qt/menus.cc:185 msgid "Invert Selection" msgstr "反向選擇" -#: src/skins/menus.cc:190 src/skins-qt/menus.cc:184 +#: src/skins/menus.cc:190 src/skins-qt/menus.cc:186 msgid "Select None" msgstr "取消選擇" -#: src/skins/menus.cc:191 src/skins-qt/menus.cc:185 +#: src/skins/menus.cc:191 src/skins-qt/menus.cc:187 msgid "Select All" msgstr "選擇全部" -#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:189 -#: src/skins-qt/menus.cc:204 +#: src/skins/menus.cc:195 src/skins/menus.cc:210 src/skins-qt/menus.cc:191 +#: src/skins-qt/menus.cc:206 msgid "By Track Number" msgstr "音軌編號" -#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:191 -#: src/skins-qt/menus.cc:206 +#: src/skins/menus.cc:197 src/skins/menus.cc:212 src/skins-qt/menus.cc:193 +#: src/skins-qt/menus.cc:208 msgid "By Artist" msgstr "藝人" -#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:192 -#: src/skins-qt/menus.cc:207 +#: src/skins/menus.cc:198 src/skins/menus.cc:213 src/skins-qt/menus.cc:194 +#: src/skins-qt/menus.cc:209 msgid "By Album" msgstr "專輯" -#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:193 -#: src/skins-qt/menus.cc:208 +#: src/skins/menus.cc:199 src/skins/menus.cc:214 src/skins-qt/menus.cc:195 +#: src/skins-qt/menus.cc:210 msgid "By Album Artist" msgstr "專輯藝人" -#: src/skins/menus.cc:200 src/skins/menus.cc:216 src/skins-qt/menus.cc:194 -#: src/skins-qt/menus.cc:210 +#: src/skins/menus.cc:200 src/skins/menus.cc:215 src/skins-qt/menus.cc:196 +#: src/skins-qt/menus.cc:211 msgid "By Release Date" msgstr "發行日期" -#: src/skins/menus.cc:201 src/skins/menus.cc:215 src/skins-qt/menus.cc:195 -#: src/skins-qt/menus.cc:209 +#: src/skins/menus.cc:201 src/skins/menus.cc:216 src/skins-qt/menus.cc:197 +#: src/skins-qt/menus.cc:212 msgid "By Genre" msgstr "類型" -#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:196 -#: src/skins-qt/menus.cc:211 +#: src/skins/menus.cc:202 src/skins/menus.cc:217 src/skins-qt/menus.cc:198 +#: src/skins-qt/menus.cc:213 msgid "By Length" msgstr "長度" -#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:199 -#: src/skins-qt/menus.cc:214 +#: src/skins/menus.cc:205 src/skins/menus.cc:220 src/skins-qt/menus.cc:201 +#: src/skins-qt/menus.cc:216 msgid "By Custom Title" msgstr "自訂標題" -#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:200 -#: src/skins-qt/menus.cc:215 +#: src/skins/menus.cc:206 src/skins/menus.cc:221 src/skins-qt/menus.cc:202 +#: src/skins-qt/menus.cc:217 msgid "By Comment" msgstr "備註" -#: src/skins/menus.cc:225 src/skins-qt/menus.cc:219 +#: src/skins/menus.cc:225 src/skins-qt/menus.cc:221 msgid "Randomize List" msgstr "清單隨機排序" -#: src/skins/menus.cc:226 src/skins-qt/menus.cc:220 +#: src/skins/menus.cc:226 src/skins-qt/menus.cc:222 msgid "Reverse List" msgstr "清單反向排序" -#: src/skins/menus.cc:228 src/skins-qt/menus.cc:222 +#: src/skins/menus.cc:228 src/skins-qt/menus.cc:224 msgid "Sort Selected" msgstr "排序選擇的項目" -#: src/skins/menus.cc:229 src/skins-qt/menus.cc:223 +#: src/skins/menus.cc:229 src/skins-qt/menus.cc:225 msgid "Sort List" msgstr "排序清單" -#: src/skins/menus.cc:234 src/skins-qt/menus.cc:228 +#: src/skins/menus.cc:234 src/skins-qt/menus.cc:230 msgid "Open Containing Folder" msgstr "開啟所在的資料夾" -#: src/skins/menus.cc:236 src/skins-qt/menus.cc:230 +#: src/skins/menus.cc:236 src/skins-qt/menus.cc:232 msgid "Cut" msgstr "剪下" -#: src/skins/menus.cc:237 src/skins-qt/menus.cc:231 +#: src/skins/menus.cc:237 src/skins-qt/menus.cc:233 msgid "Copy" msgstr "複製" -#: src/skins/menus.cc:238 src/skins-qt/menus.cc:232 +#: src/skins/menus.cc:238 src/skins-qt/menus.cc:234 msgid "Paste" msgstr "貼上" -#: src/skins/menus.cc:239 src/skins-qt/menus.cc:233 +#: src/skins/menus.cc:239 src/skins-qt/menus.cc:235 msgid "Paste at End" msgstr "貼到最後" -#: src/skins/menus.cc:241 src/skins-qt/menus.cc:235 +#: src/skins/menus.cc:241 src/skins-qt/menus.cc:237 msgid "Queue/Unqueue" msgstr "排入/移出佇列" -#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:56 +#: src/skins/playlist-widget.cc:55 src/skins-qt/playlist-widget.cc:58 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d/%d)" -#: src/skins/playlistwin.cc:492 src/skins-qt/playlistwin.cc:477 +#: src/skins/playlistwin.cc:491 src/skins-qt/playlistwin.cc:478 msgid "Audacious Playlist Editor" msgstr "Audacious 播放清單編輯器" @@ -4004,167 +3810,217 @@ msgid "Add Folder ..." msgstr "加入資料夾 ..." -#: src/skins-qt/skins_cfg.cc:196 src/skins/skins_cfg.cc:180 +#: src/skins-qt/search-select.cc:62 src/skins/search-select.cc:77 +msgid "Search entries in active playlist" +msgstr "在使用中的播放清單裡搜尋播放項目" + +#: src/skins-qt/search-select.cc:70 src/skins/search-select.cc:83 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"填入一個或多個欄位以選擇播放清單中的項目。欄位使用正規表示法,大小寫視為不同" +"字元。若您不知道如何使用正規表示法,請輸入您想搜尋的部分文字。" + +#: src/skins-qt/search-select.cc:75 src/skins/search-select.cc:91 +msgid "Title:" +msgstr "標題:" + +#: src/skins-qt/search-select.cc:79 src/skins/search-select.cc:96 +msgid "Album:" +msgstr "專輯:" + +#: src/skins-qt/search-select.cc:82 src/skins/search-select.cc:101 +msgid "Artist:" +msgstr "藝人:" + +#: src/skins-qt/search-select.cc:85 src/skins/search-select.cc:106 +msgid "File Name:" +msgstr "檔名:" + +#: src/skins-qt/search-select.cc:88 src/skins/search-select.cc:134 +msgid "Clear previous selection before searching" +msgstr "進行搜尋前清空上次的選擇項目" + +#: src/skins-qt/search-select.cc:89 src/skins/search-select.cc:137 +msgid "Automatically toggle queue for matching entries" +msgstr "自動切換到符合項目的佇列" + +#: src/skins-qt/search-select.cc:90 src/skins/search-select.cc:140 +msgid "Create a new playlist with matching entries" +msgstr "以符合的項目建立新的播放清單" + +#: src/skins-qt/search-select.cc:101 src/skins/search-select.cc:78 +msgid "Search" +msgstr "搜尋" + +#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:180 msgid "Player:" msgstr "播放器:" -#: src/skins-qt/skins_cfg.cc:198 src/skins/skins_cfg.cc:182 +#: src/skins-qt/skins_cfg.cc:200 src/skins/skins_cfg.cc:182 msgid "Select main player window font:" msgstr "選擇播放器主視窗字型:" -#: src/skins-qt/skins_cfg.cc:199 src/skins/skins_cfg.cc:183 +#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:183 msgid "Playlist:" msgstr "播放清單:" -#: src/skins-qt/skins_cfg.cc:201 src/skins/skins_cfg.cc:185 +#: src/skins-qt/skins_cfg.cc:203 src/skins/skins_cfg.cc:185 msgid "Select playlist font:" msgstr "選擇播放清單字型:" -#: src/skins-qt/skins_cfg.cc:205 src/skins/skins_cfg.cc:189 +#: src/skins-qt/skins_cfg.cc:207 src/skins/skins_cfg.cc:189 msgid "Skin" msgstr "面板" -#: src/skins-qt/skins_cfg.cc:209 src/skins/skins_cfg.cc:191 +#: src/skins-qt/skins_cfg.cc:211 +msgid "Display active titlebar when any window is focused" +msgstr "" + +#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:191 msgid "Fonts" msgstr "字型" -#: src/skins-qt/skins_cfg.cc:211 src/skins/skins_cfg.cc:193 +#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:193 msgid "Use bitmap fonts (supports ASCII only)" msgstr "使用點陣字型 (只支援 ASCII)" -#: src/skins-qt/skins_cfg.cc:213 src/skins/skins_cfg.cc:195 +#: src/skins-qt/skins_cfg.cc:217 src/skins/skins_cfg.cc:195 msgid "Scroll song title" msgstr "捲動歌曲標題" -#: src/skins-qt/skins_cfg.cc:215 src/skins/skins_cfg.cc:197 +#: src/skins-qt/skins_cfg.cc:219 src/skins/skins_cfg.cc:197 msgid "Scroll song title in both directions" msgstr "雙向捲動歌曲標題" -#: src/skins-qt/skins_cfg.cc:220 src/skins/skins_cfg.cc:202 +#: src/skins-qt/skins_cfg.cc:224 src/skins/skins_cfg.cc:202 msgid "Analyzer" msgstr "分析儀" -#: src/skins-qt/skins_cfg.cc:221 src/skins/skins_cfg.cc:203 +#: src/skins-qt/skins_cfg.cc:225 src/skins/skins_cfg.cc:203 msgid "Scope" msgstr "示波器" -#: src/skins-qt/skins_cfg.cc:222 src/skins/skins_cfg.cc:204 +#: src/skins-qt/skins_cfg.cc:226 src/skins/skins_cfg.cc:204 msgid "Voiceprint / VU meter" msgstr "聲紋/VU 計" -#: src/skins-qt/skins_cfg.cc:223 src/skins/skins_cfg.cc:205 +#: src/skins-qt/skins_cfg.cc:227 src/skins/skins_cfg.cc:205 msgid "Off" msgstr "關閉" -#: src/skins-qt/skins_cfg.cc:227 src/skins-qt/skins_cfg.cc:252 -#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:209 +#: src/skins-qt/skins_cfg.cc:231 src/skins-qt/skins_cfg.cc:256 +#: src/skins-qt/skins_cfg.cc:262 src/skins/skins_cfg.cc:209 #: src/skins/skins_cfg.cc:234 src/skins/skins_cfg.cc:240 msgid "Normal" msgstr "標準" -#: src/skins-qt/skins_cfg.cc:228 src/skins-qt/skins_cfg.cc:253 +#: src/skins-qt/skins_cfg.cc:232 src/skins-qt/skins_cfg.cc:257 #: src/skins/skins_cfg.cc:210 src/skins/skins_cfg.cc:235 msgid "Fire" msgstr "火焰" -#: src/skins-qt/skins_cfg.cc:229 src/skins/skins_cfg.cc:211 +#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:211 msgid "Vertical lines" msgstr "垂直線條" -#: src/skins-qt/skins_cfg.cc:233 src/skins/skins_cfg.cc:215 +#: src/skins-qt/skins_cfg.cc:237 src/skins/skins_cfg.cc:215 msgid "Lines" msgstr "線條" -#: src/skins-qt/skins_cfg.cc:234 src/skins/skins_cfg.cc:216 +#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:216 msgid "Bars" msgstr "棒狀" -#: src/skins-qt/skins_cfg.cc:238 src/skins/skins_cfg.cc:220 +#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:220 msgid "Slowest" msgstr "最慢" -#: src/skins-qt/skins_cfg.cc:239 src/skins/skins_cfg.cc:221 +#: src/skins-qt/skins_cfg.cc:243 src/skins/skins_cfg.cc:221 msgid "Slow" msgstr "慢" -#: src/skins-qt/skins_cfg.cc:240 src/skins/skins_cfg.cc:222 +#: src/skins-qt/skins_cfg.cc:244 src/skins/skins_cfg.cc:222 #: src/soxr/sox-resampler.cc:180 msgid "Medium" msgstr "中等" -#: src/skins-qt/skins_cfg.cc:241 src/skins/skins_cfg.cc:223 +#: src/skins-qt/skins_cfg.cc:245 src/skins/skins_cfg.cc:223 msgid "Fast" msgstr "快" -#: src/skins-qt/skins_cfg.cc:242 src/skins/skins_cfg.cc:224 +#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:224 msgid "Fastest" msgstr "最快" -#: src/skins-qt/skins_cfg.cc:246 src/skins/skins_cfg.cc:228 +#: src/skins-qt/skins_cfg.cc:250 src/skins/skins_cfg.cc:228 msgid "Dots" msgstr "點狀" -#: src/skins-qt/skins_cfg.cc:247 src/skins/skins_cfg.cc:229 +#: src/skins-qt/skins_cfg.cc:251 src/skins/skins_cfg.cc:229 msgid "Line" msgstr "線條" -#: src/skins-qt/skins_cfg.cc:248 src/skins/skins_cfg.cc:230 +#: src/skins-qt/skins_cfg.cc:252 src/skins/skins_cfg.cc:230 msgid "Solid" msgstr "實心" -#: src/skins-qt/skins_cfg.cc:254 src/skins/skins_cfg.cc:236 +#: src/skins-qt/skins_cfg.cc:258 src/skins/skins_cfg.cc:236 msgid "Ice" msgstr "冰霜" -#: src/skins-qt/skins_cfg.cc:259 src/skins/skins_cfg.cc:241 +#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:241 msgid "Smooth" msgstr "平滑" -#: src/skins-qt/skins_cfg.cc:263 src/skins/skins_cfg.cc:245 +#: src/skins-qt/skins_cfg.cc:267 src/skins/skins_cfg.cc:245 msgid "Coloring:" msgstr "顏色:" -#: src/skins-qt/skins_cfg.cc:266 src/skins/skins_cfg.cc:248 +#: src/skins-qt/skins_cfg.cc:270 src/skins/skins_cfg.cc:248 msgid "Style:" msgstr "樣式:" -#: src/skins-qt/skins_cfg.cc:269 src/skins/skins_cfg.cc:251 +#: src/skins-qt/skins_cfg.cc:273 src/skins/skins_cfg.cc:251 msgid "Falloff:" msgstr "陷落:" -#: src/skins-qt/skins_cfg.cc:272 src/skins/skins_cfg.cc:254 +#: src/skins-qt/skins_cfg.cc:276 src/skins/skins_cfg.cc:254 msgid "Peak falloff:" msgstr "峰值陷落:" -#: src/skins-qt/skins_cfg.cc:278 src/skins/skins_cfg.cc:260 +#: src/skins-qt/skins_cfg.cc:282 src/skins/skins_cfg.cc:260 msgid "Scope Style:" msgstr "示波器樣式:" -#: src/skins-qt/skins_cfg.cc:281 src/skins/skins_cfg.cc:263 +#: src/skins-qt/skins_cfg.cc:285 src/skins/skins_cfg.cc:263 msgid "Voiceprint Coloring:" msgstr "聲紋顏色:" -#: src/skins-qt/skins_cfg.cc:284 src/skins/skins_cfg.cc:266 +#: src/skins-qt/skins_cfg.cc:288 src/skins/skins_cfg.cc:266 msgid "VU Meter Style:" msgstr "VU 計樣式:" -#: src/skins-qt/skins_cfg.cc:290 src/skins/skins_cfg.cc:272 +#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:272 msgid "Type" msgstr "類型" -#: src/skins-qt/skins_cfg.cc:291 src/skins/skins_cfg.cc:273 +#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:273 msgid "Visualization type:" msgstr "視覺特效類型:" -#: src/skins-qt/skins_cfg.cc:294 src/skins/skins_cfg.cc:276 +#: src/skins-qt/skins_cfg.cc:298 src/skins/skins_cfg.cc:276 msgid "Analyzer" msgstr "分析儀" -#: src/skins-qt/skins_cfg.cc:295 src/skins/skins_cfg.cc:277 +#: src/skins-qt/skins_cfg.cc:299 src/skins/skins_cfg.cc:277 msgid "Show peaks" msgstr "顯示峰值標記" -#: src/skins-qt/skins_cfg.cc:304 src/skins/skins_cfg.cc:286 +#: src/skins-qt/skins_cfg.cc:308 src/skins/skins_cfg.cc:286 msgid "Visualization" msgstr "視覺特效" @@ -4176,57 +4032,11 @@ msgid "Unarchived Winamp 2.x skin" msgstr "未壓縮的 Winamp 2.x skin" -#: src/skins/search-select.cc:75 -msgid "Search entries in active playlist" -msgstr "在使用中的播放清單裡搜尋播放項目" - -#: src/skins/search-select.cc:76 -msgid "Search" -msgstr "搜尋" - -#: src/skins/search-select.cc:81 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"填入一個或多個欄位以選擇播放清單中的項目。欄位使用正規表示法,大小寫視為不同" -"字元。若您不知道如何使用正規表示法,請輸入您想搜尋的部分文字。" - -#: src/skins/search-select.cc:89 -msgid "Title:" -msgstr "標題:" - -#: src/skins/search-select.cc:95 -msgid "Album:" -msgstr "專輯:" - -#: src/skins/search-select.cc:101 -msgid "Artist:" -msgstr "藝人:" - -#: src/skins/search-select.cc:107 -msgid "File Name:" -msgstr "檔名:" - -#: src/skins/search-select.cc:115 -msgid "Clear previous selection before searching" -msgstr "進行搜尋前清空上次的選擇項目" - -#: src/skins/search-select.cc:118 -msgid "Automatically toggle queue for matching entries" -msgstr "自動切換到符合項目的佇列" - -#: src/skins/search-select.cc:121 -msgid "Create a new playlist with matching entries" -msgstr "以符合的項目建立新的播放清單" - #: src/sndfile/plugin.cc:38 msgid "Sndfile Plugin" msgstr "Sndfile 外掛" -#: src/sndfile/plugin.cc:363 +#: src/sndfile/plugin.cc:372 msgid "" "Based on the xmms_sndfile plugin:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" @@ -4702,19 +4512,32 @@ "用法:加入網址:tone://frequency1;frequency2;frequency3;...\n" "範例:tone://2000;2005 會播放 2000 HZ 和 2005HZ 的正弦波" -#: src/ui-common/dialogs-qt.cc:31 +#: src/ui-common/dialogs-qt.cc:40 +msgid "" +"\n" +"(Further messages have been hidden.)" +msgstr "" +"\n" +"(詳細訊息已被隱藏。)" + +#: src/ui-common/dialogs-qt.cc:52 msgid "Working ..." msgstr "處理中 ..." -#: src/ui-common/dialogs-qt.cc:43 +#: src/ui-common/dialogs-qt.cc:73 msgid "Information" msgstr "資訊" +#: src/ui-common/menu-ops-gtk.cc:132 src/ui-common/menu-ops-qt.cc:113 +#, c-format +msgid "%s does not appear to be a valid folder." +msgstr "" + #: src/voice_removal/voice_removal.cc:28 msgid "Voice Removal" msgstr "人聲移除" -#: src/vorbis/vorbis.cc:429 +#: src/vorbis/vorbis.cc:431 msgid "" "Audacious Ogg Vorbis Decoder\n" "\n" @@ -4865,14 +4688,38 @@ "\n" "Some of the plugin code was by Miles Egan." -#: src/xsf/plugin.cc:50 +#: src/xsf/plugin.cc:74 msgid "2SF Decoder" msgstr "2SF 解碼器" -#: src/xsf/plugin.cc:232 +#: src/xsf/plugin.cc:429 +msgid "32728 Hz" +msgstr "" + +#: src/xsf/plugin.cc:432 +msgid "65456 Hz" +msgstr "" + +#: src/xsf/plugin.cc:438 +msgid "Cosine" +msgstr "" + +#: src/xsf/plugin.cc:439 +msgid "Sharp" +msgstr "" + +#: src/xsf/plugin.cc:443 msgid "XSF Configuration" msgstr "XSF 組態" +#: src/xsf/plugin.cc:445 +msgid "Default fade time:" +msgstr "" + +#: src/xsf/plugin.cc:447 +msgid "Interpolation mode:" +msgstr "" + #: src/xspf/xspf.cc:95 msgid "XML Shareable Playlists (XSPF)" msgstr "XML 可分享式播放清單 (XSPF)" diff -Nru audacious-plugins-4.1/src/aac/meson.build audacious-plugins-4.3.1/src/aac/meson.build --- audacious-plugins-4.1/src/aac/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/aac/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -1,6 +1,10 @@ -faad_dep = cxx.find_library('faad', required: false) -have_aac = faad_dep.found() and cxx.has_header('neaacdec.h') +faad_dep = dependency('faad2', required: false) +if not faad_dep.found() + faad_dep = cxx.find_library('faad', has_headers: 'neaacdec.h', required: false) +endif + +have_aac = faad_dep.found() if have_aac shared_module('aac-raw', diff -Nru audacious-plugins-4.1/src/adplug/Makefile audacious-plugins-4.3.1/src/adplug/Makefile --- audacious-plugins-4.1/src/adplug/Makefile 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/adplug/Makefile 2023-04-29 20:17:32.000000000 +0000 @@ -10,5 +10,5 @@ LD = ${CXX} CFLAGS += ${PLUGIN_CFLAGS} CXXFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${QT_CFLAGS} ${ADLIB_CFLAGS} -I../.. -LIBS += ${QT_LIBS} ${GTK_LIBS} ${ADLIB_LIBS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${ADLIB_CFLAGS} -I../.. +LIBS += ${ADLIB_LIBS} diff -Nru audacious-plugins-4.1/src/adplug/adplug-xmms.cc audacious-plugins-4.3.1/src/adplug/adplug-xmms.cc --- audacious-plugins-4.1/src/adplug/adplug-xmms.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/adplug/adplug-xmms.cc 2023-04-29 20:17:32.000000000 +0000 @@ -350,7 +350,7 @@ WidgetCombo (N_("OPL Emulator:"), WidgetInt (CFG_ID, "Emulator"), {{plugin_combo}}), - WidgetSpin (N_("Sample rate"), + WidgetSpin (N_("Sample rate:"), WidgetInt (CFG_ID, "Frequency"), {8000, 192000, 50, N_("Hz")}), WidgetLabel (N_("Miscellaneous")), WidgetCheck (N_("Repeat song in endless loop"), diff -Nru audacious-plugins-4.1/src/adplug/meson.build audacious-plugins-4.3.1/src/adplug/meson.build --- audacious-plugins-4.1/src/adplug/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/adplug/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -3,7 +3,7 @@ if have_adplug - adplug_inc = '-I' + adplug_dep.get_pkgconfig_variable('includedir') + adplug_inc = '-I' + adplug_dep.get_variable(pkgconfig: 'includedir') if cxx.has_header('adplug/nemuopl.h', args: adplug_inc) conf.set10('HAVE_ADPLUG_NEMUOPL_H', true) endif diff -Nru audacious-plugins-4.1/src/alarm/Makefile audacious-plugins-4.3.1/src/alarm/Makefile --- audacious-plugins-4.1/src/alarm/Makefile 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/alarm/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -PLUGIN = alarm${PLUGIN_SUFFIX} - -SRCS = alarm.cc \ - interface.cc - -include ../../buildsys.mk -include ../../extra.mk - -plugindir := ${plugindir}/${GENERAL_PLUGIN_DIR} - -LD = ${CXX} - -CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} -I../.. -LIBS += ${GTK_LIBS} -laudgui diff -Nru audacious-plugins-4.1/src/alarm/alarm.cc audacious-plugins-4.3.1/src/alarm/alarm.cc --- audacious-plugins-4.1/src/alarm/alarm.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/alarm/alarm.cc 1970-01-01 00:00:00.000000000 +0000 @@ -1,822 +0,0 @@ -/* - * Copyright (C) Adam Feakin - * - * modified by Daniel Stodden - * - * 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. - */ - -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "alarm.h" -#include "interface.h" -#include "callbacks.h" - -class AlarmPlugin : public GeneralPlugin -{ -public: - static const char about[]; - static const char * const defaults[]; - static const PreferencesWidget widgets[]; - static const PluginPreferences prefs; - - static constexpr PluginInfo info = { - N_("Alarm"), - PACKAGE, - about, - & prefs, - PluginGLibOnly - }; - - constexpr AlarmPlugin () : GeneralPlugin (info, false) {} - - bool init (); - void cleanup (); -}; - -EXPORT AlarmPlugin aud_plugin_instance; - -const char * const AlarmPlugin::defaults[] = { - /* general */ - "alarm_h", "6", - "alarm_m", "30", - "cmd_on", "FALSE", - "fading", "60", - "quietvol", "25", - "reminder_on", "FALSE", - "stop_h", "1", - "stop_m", "0", - "stop_on", "TRUE", - "volume", "80", - - /* days */ - "sun_flags", "3", - "sun_h", "6", - "sun_m", "30", - "mon_flags", "2", - "mon_h", "6", - "mon_m", "30", - "tue_flags", "2", - "tue_h", "6", - "tue_m", "30", - "wed_flags", "2", - "wed_h", "6", - "wed_m", "30", - "thu_flags", "2", - "thu_h", "6", - "thu_m", "30", - "fri_flags", "2", - "fri_h", "6", - "fri_m", "30", - "sat_flags", "2", - "sat_h", "6", - "sat_m", "30", - nullptr}; - -typedef struct -{ - pthread_t tid; - volatile gboolean is_valid; -} alarm_thread_t; - -static int timeout_source; -static time_t play_start; - -static alarm_thread_t stop; /* thread id of stop loop */ -static pthread_mutex_t fader_lock = PTHREAD_MUTEX_INITIALIZER; - -/* string tokens to allow loops and shorten code */ -static char day_cb[7][7] = {"sun_cb", "mon_cb", "tue_cb", - "wed_cb", "thu_cb", "fri_cb", "sat_cb"}; - -static char day_flags[7][10] = {"sun_flags", "mon_flags", "tue_flags", - "wed_flags", "thu_flags", "fri_flags", "sat_flags"}; - -static char day_h[7][6] = {"sun_h", "mon_h", "tue_h", - "wed_h", "thu_h", "fri_h", "sat_h"}; - -static char day_m[7][6] = {"sun_m", "mon_m", "tue_m", - "wed_m", "thu_m", "fri_m", "sat_m"}; - -static char day_def[7][8] = {"sun_def", "mon_def", "tue_def", - "wed_def", "thu_def", "fri_def", "sat_def"}; - -static struct -{ - GtkSpinButton *alarm_h; - GtkSpinButton *alarm_m; - - GtkToggleButton *stop_on; - GtkSpinButton *stop_h; - GtkSpinButton *stop_m; - - GtkRange *volume; - GtkRange *quietvol; - - GtkSpinButton *fading; - - GtkEntry *cmdstr; - GtkToggleButton *cmd_on; - - GtkWidget *playlist; - - int default_hour; - int default_min; - - // array allows looping of days - alarmday day[7]; - - - GtkEntry *reminder; - GtkToggleButton *reminder_cb; - gboolean reminder_on; -} -alarm_conf; - -static int alarm_h, alarm_m; - -static gboolean stop_on; -static int stop_h, stop_m; - -static int volume, quietvol; - -static int fading; - -static gboolean cmd_on; - -static GtkWidget *config_notebook = nullptr; -static GtkWidget *alarm_dialog = nullptr; - -static GtkWidget *lookup_widget(GtkWidget *w, const char *name) -{ - GtkWidget * widget = (GtkWidget *) g_object_get_data ((GObject *) w, name); - g_return_val_if_fail(widget != nullptr, nullptr); - - return widget; -} - -/* - * the callback function that is called when the save button is - * pressed saves configuration to ~/.bmp/alarmconfig - */ -static void alarm_save() -{ - int daynum = 0; // used to identify day number - - /* - * update the live values and write them out - */ - alarm_h = alarm_conf.default_hour = gtk_spin_button_get_value_as_int (alarm_conf.alarm_h); - aud_set_int ("alarm", "alarm_h", alarm_h); - - alarm_m = alarm_conf.default_min = gtk_spin_button_get_value_as_int (alarm_conf.alarm_m); - aud_set_int ("alarm", "alarm_m", alarm_m); - - stop_h = gtk_spin_button_get_value_as_int (alarm_conf.stop_h); - stop_m = gtk_spin_button_get_value_as_int (alarm_conf.stop_m); - stop_on = gtk_toggle_button_get_active (alarm_conf.stop_on); - - /* days of the week */ - for(; daynum < 7; daynum++) - { - if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(alarm_conf.day[daynum].cb))) - alarm_conf.day[daynum].flags = 0; - else - alarm_conf.day[daynum].flags = ALARM_OFF; - - if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(alarm_conf.day[daynum].cb_def))) - alarm_conf.day[daynum].flags |= ALARM_DEFAULT; - - alarm_conf.day[daynum].hour = - gtk_spin_button_get_value_as_int(alarm_conf.day[daynum].spin_hr); - alarm_conf.day[daynum].min = - gtk_spin_button_get_value_as_int(alarm_conf.day[daynum].spin_min); - - aud_set_int ("alarm", day_flags[daynum], alarm_conf.day[daynum].flags); - aud_set_int ("alarm", day_h[daynum], alarm_conf.day[daynum].hour); - aud_set_int ("alarm", day_m[daynum], alarm_conf.day[daynum].min); - } - - /* END: days of week */ - - volume = gtk_range_get_value (alarm_conf.volume); - aud_set_int ("alarm", "volume", volume); - - quietvol = gtk_range_get_value (alarm_conf.quietvol); - aud_set_int ("alarm", "quietvol", quietvol); - - fading = gtk_spin_button_get_value_as_int (alarm_conf.fading); - - /* write the new values */ - aud_set_int ("alarm", "stop_h", stop_h); - aud_set_int ("alarm", "stop_m", stop_m); - aud_set_int ("alarm", "fading", fading); - aud_set_bool ("alarm", "stop_on", stop_on); - - char * cmdstr = gtk_editable_get_chars ((GtkEditable *) alarm_conf.cmdstr, 0, -1); - aud_set_str ("alarm", "cmdstr", cmdstr); - g_free (cmdstr); - - cmd_on = gtk_toggle_button_get_active (alarm_conf.cmd_on); - aud_set_bool ("alarm", "cmd_on", cmd_on); - - String playlist = audgui_file_entry_get_uri (alarm_conf.playlist); - aud_set_str ("alarm", "playlist", playlist ? playlist : ""); - - /* reminder */ - char * reminder_msg = gtk_editable_get_chars ((GtkEditable *) alarm_conf.reminder, 0, -1); - aud_set_str ("alarm", "reminder_msg", reminder_msg); - g_free (reminder_msg); - - alarm_conf.reminder_on = gtk_toggle_button_get_active (alarm_conf.reminder_cb); - aud_set_bool ("alarm", "reminder_on", alarm_conf.reminder_on); -} - -/* - * read the current configuration from the file - */ -static void alarm_read_config() -{ - int daynum = 0; // used for day number - - alarm_h = aud_get_int ("alarm", "alarm_h"); - alarm_m = aud_get_int ("alarm", "alarm_m"); - - /* save them here too */ - alarm_conf.default_hour = alarm_h; - alarm_conf.default_min = alarm_m; - - stop_h = aud_get_int ("alarm", "stop_h"); - stop_m = aud_get_int ("alarm", "stop_m"); - stop_on = aud_get_bool ("alarm", "stop_on"); - - volume = aud_get_int ("alarm", "volume"); - quietvol = aud_get_int ("alarm", "quietvol"); - - fading = aud_get_int ("alarm", "fading"); - - cmd_on = aud_get_bool ("alarm", "cmd_on"); - - alarm_conf.reminder_on = aud_get_bool ("alarm", "reminder_on"); - - /* day flags and times */ - for(; daynum < 7; daynum++) - { - /* read the flags */ - alarm_conf.day[daynum].flags = aud_get_int ("alarm", day_flags[daynum]); - - /* read the times */ - alarm_conf.day[daynum].hour = aud_get_int ("alarm", day_h[daynum]); - alarm_conf.day[daynum].min = aud_get_int ("alarm", day_m[daynum]); - } -} - -/* - * displays the configuration window and opens the config file. - */ -static void *alarm_make_config_widget() -{ - int daynum = 0; // used to loop days - GtkWidget *w; - - alarm_read_config(); - - /* - * Create the widgets - */ - config_notebook = create_config_notebook(); - - w = lookup_widget(config_notebook, "alarm_h_spin"); - alarm_conf.alarm_h = GTK_SPIN_BUTTON(w); - gtk_spin_button_set_value(alarm_conf.alarm_h, alarm_h); - - w = lookup_widget(config_notebook, "alarm_m_spin"); - alarm_conf.alarm_m = GTK_SPIN_BUTTON(w); - gtk_spin_button_set_value(alarm_conf.alarm_m, alarm_m); - - w = lookup_widget(config_notebook, "stop_h_spin"); - alarm_conf.stop_h = GTK_SPIN_BUTTON(w); - gtk_spin_button_set_value(alarm_conf.stop_h, stop_h); - - w = lookup_widget(config_notebook, "stop_m_spin"); - alarm_conf.stop_m = GTK_SPIN_BUTTON(w); - gtk_spin_button_set_value(alarm_conf.stop_m, stop_m); - - w = lookup_widget(config_notebook, "stop_checkb"); - alarm_conf.stop_on = GTK_TOGGLE_BUTTON(w); - gtk_toggle_button_set_active(alarm_conf.stop_on, stop_on); - - w = lookup_widget(config_notebook, "vol_scale"); - alarm_conf.volume = GTK_RANGE(w); - gtk_range_set_adjustment(alarm_conf.volume, - GTK_ADJUSTMENT(gtk_adjustment_new(volume, 0, 100, 1, 5, 0))); - - w = lookup_widget(config_notebook, "quiet_vol_scale"); - alarm_conf.quietvol = GTK_RANGE(w); - gtk_range_set_adjustment(alarm_conf.quietvol, - GTK_ADJUSTMENT(gtk_adjustment_new(quietvol, 0, 100, 1, 5, 0))); - - /* days of week */ - for(; daynum < 7; daynum++) - { - w = lookup_widget(config_notebook, day_cb[daynum]); - alarm_conf.day[daynum].cb = GTK_CHECK_BUTTON(w); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(alarm_conf.day[daynum].cb), - !(alarm_conf.day[daynum].flags & ALARM_OFF)); - - w = lookup_widget(config_notebook, day_def[daynum]); - alarm_conf.day[daynum].cb_def = GTK_CHECK_BUTTON(w); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(alarm_conf.day[daynum].cb_def), - alarm_conf.day[daynum].flags & ALARM_DEFAULT); - - - /* Changed to show default time instead of set time when ALARM_DEFAULT set, - * as suggested by Mark Brown - */ -/* w = lookup_widget(config_dialog, day_h[daynum]); - alarm_conf.day[daynum].spin_hr = GTK_SPIN_BUTTON(w); - gtk_spin_button_set_value(alarm_conf.day[daynum].spin_hr, alarm_conf.day[daynum].hour); - - w = lookup_widget(config_dialog, day_m[daynum]); - alarm_conf.day[daynum].spin_min = GTK_SPIN_BUTTON(w); - gtk_spin_button_set_value(alarm_conf.day[daynum].spin_min, alarm_conf.day[daynum].min); -*/ - if(alarm_conf.day[daynum].flags & ALARM_DEFAULT) - { - w = lookup_widget(config_notebook, day_h[daynum]); - alarm_conf.day[daynum].spin_hr = GTK_SPIN_BUTTON(w); - gtk_spin_button_set_value(alarm_conf.day[daynum].spin_hr, alarm_conf.default_hour); - - w = lookup_widget(config_notebook, day_m[daynum]); - alarm_conf.day[daynum].spin_min = GTK_SPIN_BUTTON(w); - gtk_spin_button_set_value(alarm_conf.day[daynum].spin_min, alarm_conf.default_min); - - gtk_widget_set_sensitive((GtkWidget *)alarm_conf.day[daynum].spin_hr, false); - gtk_widget_set_sensitive((GtkWidget *)alarm_conf.day[daynum].spin_min, false); - } - else - { - w = lookup_widget(config_notebook, day_h[daynum]); - alarm_conf.day[daynum].spin_hr = GTK_SPIN_BUTTON(w); - gtk_spin_button_set_value(alarm_conf.day[daynum].spin_hr, alarm_conf.day[daynum].hour); - - w = lookup_widget(config_notebook, day_m[daynum]); - alarm_conf.day[daynum].spin_min = GTK_SPIN_BUTTON(w); - gtk_spin_button_set_value(alarm_conf.day[daynum].spin_min, alarm_conf.day[daynum].min); - - gtk_widget_set_sensitive((GtkWidget *)alarm_conf.day[daynum].spin_hr, true); - gtk_widget_set_sensitive((GtkWidget *)alarm_conf.day[daynum].spin_min, true); - } - } - - /* END: days of week */ - - w = lookup_widget(config_notebook,"fading_spin"); - alarm_conf.fading = GTK_SPIN_BUTTON(w); - gtk_spin_button_set_value(alarm_conf.fading, fading); - - String cmdstr = aud_get_str ("alarm", "cmdstr"); - w = lookup_widget(config_notebook, "cmd_entry"); - alarm_conf.cmdstr = GTK_ENTRY(w); - gtk_entry_set_text(alarm_conf.cmdstr, cmdstr); - - w = lookup_widget(config_notebook, "cmd_checkb"); - alarm_conf.cmd_on = GTK_TOGGLE_BUTTON(w); - gtk_toggle_button_set_active(alarm_conf.cmd_on, cmd_on); - - String playlist = aud_get_str ("alarm", "playlist"); - w = lookup_widget(config_notebook, "playlist"); - alarm_conf.playlist = w; - audgui_file_entry_set_uri(alarm_conf.playlist, playlist); - - String reminder_msg = aud_get_str ("alarm", "reminder_msg"); - w = lookup_widget(config_notebook, "reminder_text"); - alarm_conf.reminder = GTK_ENTRY(w); - gtk_entry_set_text(alarm_conf.reminder, reminder_msg); - - w = lookup_widget(config_notebook, "reminder_cb"); - alarm_conf.reminder_cb = GTK_TOGGLE_BUTTON(w); - gtk_toggle_button_set_active(alarm_conf.reminder_cb, alarm_conf.reminder_on); - - AUDDBG("END alarm_configure\n"); - - return config_notebook; -} - -/* functions for greying out the time for days */ -static void on_day_def_toggled(GtkToggleButton *togglebutton, void * user_data, int daynum) -{ - GtkWidget *w; - - /* change the time shown too */ - w = lookup_widget(config_notebook, day_h[daynum]); - if(w == nullptr) - return; - - if(gtk_toggle_button_get_active(togglebutton) == true) - { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), alarm_conf.default_hour); - gtk_widget_set_sensitive(w, false); - } - else - { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), alarm_conf.day[daynum].hour); - gtk_widget_set_sensitive(w, true); - } - - w = lookup_widget(config_notebook, day_m[daynum]); - if(gtk_toggle_button_get_active(togglebutton) == true) - { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), alarm_conf.default_min); - gtk_widget_set_sensitive(w, false); - } - else - { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), alarm_conf.day[daynum].min); - gtk_widget_set_sensitive(w, true); - } -} - -void on_sun_def_toggled(GtkToggleButton *togglebutton, void * user_data) -{ - on_day_def_toggled(togglebutton, user_data, 0); -} - -void on_mon_def_toggled(GtkToggleButton *togglebutton, void * user_data) -{ - on_day_def_toggled(togglebutton, user_data, 1); -} - -void on_tue_def_toggled(GtkToggleButton *togglebutton, void * user_data) -{ - on_day_def_toggled(togglebutton, user_data, 2); -} - -void on_wed_def_toggled(GtkToggleButton *togglebutton, void * user_data) -{ - on_day_def_toggled(togglebutton, user_data, 3); -} - -void on_thu_def_toggled(GtkToggleButton *togglebutton, void * user_data) -{ - on_day_def_toggled(togglebutton, user_data, 4); -} - -void on_fri_def_toggled(GtkToggleButton *togglebutton, void * user_data) -{ - on_day_def_toggled(togglebutton, user_data, 5); -} - -void on_sat_def_toggled(GtkToggleButton *togglebutton, void * user_data) -{ - on_day_def_toggled(togglebutton, user_data, 6); -} - -/* END: greying things */ - -void alarm_current_volume(GtkButton *button, void * data) -{ - GtkAdjustment *adj; - - AUDDBG("on_current_button_clicked\n"); - - adj = gtk_range_get_adjustment(alarm_conf.volume); - gtk_adjustment_set_value(adj, aud_drct_get_volume_main()); -} - -/* - * a thread safe sleeping function - - * and it even works in solaris (I think) - */ -static void threadsleep(float x) -{ - AUDDBG("threadsleep: waiting %f seconds\n", x); - - g_usleep((int) ((float) x * (float) 1000000.0)); - - return; -} - -static inline alarm_thread_t alarm_thread_create(void *(*start_routine)(void *), void *args, unsigned int detach) -{ - alarm_thread_t thrd; - pthread_attr_t attr; - - pthread_attr_init(&attr); - - if(detach != 0) - pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); - - pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED); - pthread_attr_setschedpolicy(&attr, SCHED_OTHER); - pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); - - thrd.is_valid = (pthread_create(&thrd.tid, &attr, start_routine, args) == 0); - - return thrd; -} - -static void *alarm_fade(void *arg) -{ - fader *vols = (fader *)arg; - int inc, diff, adiff; - - /* lock */ - pthread_mutex_lock(&fader_lock); - - /* slide volume */ - /* the Kaspar Giger way of fading, check the current mixer volume and - * increment from there so that if you have some other app lowering the - * volume at the same time, the alarm plugin will not ignore it. If you have - * some other app increasing the volume, then it could get louder than you expect - * though - because the loop does not recalculate the difference each time. - */ - - /* difference between the 2 volumes */ - diff = vols->end - vols->start; - adiff = abs(diff); - - /* Are we going up or down? */ - if(diff < 0) - inc = -1; - else - inc = 1; - - aud_drct_set_volume_main((int)vols->start); - - for (int i = 0; i < adiff; i ++) - { - threadsleep((float)fading / (float)adiff); - aud_drct_set_volume_main(aud_drct_get_volume_main() + inc); - } - /* Setting the volume to the end volume sort of defeats the point if having - * the code in there to allow other apps to control volume too :) - */ - //aud_drct_set_volume_main((int)vols->end); - - /* and */ - pthread_mutex_unlock(&fader_lock); - - AUDDBG("volume = %f%%\n", (double)vols->end); - return 0; -} - -static void *alarm_stop_thread(void *args) -{ - int currvol; - fader fade_vols; - alarm_thread_t f; - - AUDDBG("alarm_stop_thread\n"); - - - /* sleep for however long we are meant to be sleeping for until - * its time to shut up - */ - threadsleep(((stop_h * 60) + stop_m) * 60); - - AUDDBG("alarm_stop triggered\n"); - - if (alarm_dialog) - gtk_widget_destroy(alarm_dialog); - - currvol = aud_drct_get_volume_main(), - - /* fade back to zero */ - fade_vols.start = currvol; - fade_vols.end = 0; - - /* The fader thread locks the fader_mutex now */ - f = alarm_thread_create(alarm_fade, &fade_vols, 0); - - pthread_join(f.tid, nullptr); - aud_drct_stop(); - - /* might as well set the volume to something higher than zero so we - * dont confuse the poor people who just woke up and cant work out why - * theres no music playing when they press the little play button :) - */ - aud_drct_set_volume_main(currvol); - - AUDDBG("alarm_stop done\n"); - return(nullptr); -} - -void alarm_stop_cancel(GtkWidget *w, void * data) -{ - AUDDBG("alarm_stop_cancel\n"); - if (pthread_cancel(stop.tid) == 0) - stop.is_valid = false; -} - -/* the main alarm thread */ -static gboolean alarm_timeout (void * unused) -{ - struct tm *currtime; - time_t timenow; - unsigned today; - - AUDDBG("Getting time\n"); - timenow = time(nullptr); - currtime = localtime(&timenow); - today = currtime->tm_wday; - AUDDBG("Today is %d\n", today); - - /* already went off? */ - if (timenow < play_start + 60) - return true; - - if(alarm_conf.day[today].flags & ALARM_OFF) - return true; - else - { - /* set the alarm_h and alarm_m for today, if not default */ - if(!(alarm_conf.day[today].flags & ALARM_DEFAULT)) - { - alarm_h = alarm_conf.day[today].hour; - alarm_m = alarm_conf.day[today].min; - } - else - { - alarm_h = alarm_conf.default_hour; - alarm_m = alarm_conf.default_min; - } - } - - AUDDBG("Alarm time is %d:%d (def: %d:%d)\n", alarm_h, alarm_m, - alarm_conf.default_hour, alarm_conf.default_min); - - AUDDBG("Checking time (%d:%d)\n", currtime->tm_hour, currtime->tm_min); - if((currtime->tm_hour != alarm_h) || (currtime->tm_min != alarm_m)) - return true; - - if(cmd_on == true) - { - String cmdstr = aud_get_str ("alarm", "cmdstr"); - AUDDBG("Executing %s, cmd_on is true\n", (const char *) cmdstr); - if(system(cmdstr) == -1) - AUDDBG("Executing %s failed\n", (const char *) cmdstr); - } - - gboolean started = false; - - String playlist = aud_get_str ("alarm", "playlist"); - if (playlist[0]) - { - aud_drct_pl_open (playlist); - started = true; - } - - if(fading) - { - fader fade_vols; - - AUDDBG("Fading is true\n"); - aud_drct_set_volume_main(quietvol); - - /* start playing */ - play_start = time(nullptr); - - if (! started) - aud_drct_play (); - - /* fade volume */ - fade_vols.start = quietvol; - fade_vols.end = volume; - - //alarm_fade(quietvol, volume); - alarm_thread_create(alarm_fade, &fade_vols, 0); - } - else - { - /* no fading */ - - /* set volume */ - aud_drct_set_volume_main(volume); - - /* start playing */ - play_start = time(nullptr); - aud_drct_play(); - } - - if(alarm_conf.reminder_on == true) - { - String reminder_msg = aud_get_str ("alarm", "reminder_msg"); - GtkWidget *reminder_dialog; - AUDDBG("Showing reminder '%s'\n", (const char *) reminder_msg); - - reminder_dialog = (GtkWidget*) create_reminder_dialog(reminder_msg); - gtk_widget_show_all(reminder_dialog); - } - - /* bring up the wakeup call dialog if stop_on is set TRUE, this - * has been moved to after making Audacious play so that it doesnt - * get in the way for people with manual window placement turned on - * - * this means that the dialog doesnt get shown until the volume has - * finished fading though !, so thats something else to fix - */ - if(stop_on == true) - { - alarm_dialog = create_alarm_dialog(); - - AUDDBG("now starting stop thread\n"); - stop = alarm_thread_create(alarm_stop_thread, nullptr, 0); - AUDDBG("Created wakeup dialog and started stop thread\n"); - } - - return true; -} - -static void alarm_configure () -{ - audgui_show_plugin_prefs (aud_plugin_by_header (& aud_plugin_instance)); -} - -/* - * initialization - * opens the config file and reads the value, creates a new - * config in memory if the file doesnt exist and sets default vals - */ -bool AlarmPlugin::init () -{ - AUDDBG("alarm_init\n"); - - aud_config_set_defaults ("alarm", defaults); - - alarm_read_config(); - - timeout_source = g_timeout_add_seconds (10, alarm_timeout, nullptr); - - aud_plugin_menu_add (AudMenuID::Main, alarm_configure, _("Set Alarm ..."), "appointment-new"); - - return true; -} - -/* - * kill the main thread - */ -void AlarmPlugin::cleanup () -{ - AUDDBG("alarm_cleanup\n"); - - aud_plugin_menu_remove (AudMenuID::Main, alarm_configure); - - if (timeout_source) - { - g_source_remove (timeout_source); - timeout_source = 0; - } - - if (stop.is_valid) - { - pthread_cancel(stop.tid); - stop.is_valid = false; - } -} - -const char AlarmPlugin::about[] = - N_("A plugin that can be used to start playing at a certain time.\n\n" - "Originally written by Adam Feakin and Daniel Stodden."); - -const PreferencesWidget AlarmPlugin::widgets[] = { - WidgetCustomGTK (alarm_make_config_widget) -}; - -const PluginPreferences AlarmPlugin::prefs = { - {widgets}, - nullptr, // init - alarm_save, - nullptr // cleanup -}; diff -Nru audacious-plugins-4.1/src/alarm/alarm.h audacious-plugins-4.3.1/src/alarm/alarm.h --- audacious-plugins-4.1/src/alarm/alarm.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/alarm/alarm.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -/* - * $Id: alarm.h,v 1.2 2003/11/23 19:29:36 adamf Exp $ - * alarm.h - * - * Adam Feakin - * adamf@snika.uklinux.net - * - * we need some struct to hold the info about the days - */ -#ifndef __ALARM_H -#define __ALARM_H - -#include - -/* flags */ -#define ALARM_OFF (1 << 0) -#define ALARM_DEFAULT (1 << 1) - -typedef struct AlarmDay { - GtkCheckButton *cb; - GtkCheckButton *cb_def; - GtkSpinButton *spin_hr; - GtkSpinButton *spin_min; - int flags; - int hour; - int min; -} alarmday; - - -typedef struct Fader { - unsigned start, end; -} fader; - - -#endif /* __ALARM_H */ diff -Nru audacious-plugins-4.1/src/alarm/callbacks.h audacious-plugins-4.3.1/src/alarm/callbacks.h --- audacious-plugins-4.1/src/alarm/callbacks.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/alarm/callbacks.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -#ifndef __CALLBACKS_H -#define __CALLBACKS_H - -#include - -void alarm_current_volume (GtkButton *button, void * data); - -void alarm_stop_cancel (GtkWidget *widget, void * data); - -void on_mon_def_toggled (GtkToggleButton *togglebutton, void * data); - -void on_tue_def_toggled (GtkToggleButton *togglebutton, void * data); - -void on_wed_def_toggled (GtkToggleButton *togglebutton, void * data); - -void on_thu_def_toggled (GtkToggleButton *togglebutton, void * data); - -void on_fri_def_toggled (GtkToggleButton *togglebutton, void * data); - -void on_sat_def_toggled (GtkToggleButton *togglebutton, void * data); - -void on_sun_def_toggled (GtkToggleButton *togglebutton, void * data); - -#endif diff -Nru audacious-plugins-4.1/src/alarm/interface.cc audacious-plugins-4.3.1/src/alarm/interface.cc --- audacious-plugins-4.1/src/alarm/interface.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/alarm/interface.cc 1970-01-01 00:00:00.000000000 +0000 @@ -1,408 +0,0 @@ -/* - * interface.c - * Copyright 2012 Thomas Lange - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions, and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions, and the following disclaimer in the documentation - * provided with the distribution. - * - * This software is provided "as is" and without any warranty, express or - * implied. In no event shall the authors be liable for any damages arising from - * the use of this software. - */ - -#include -#include -#include -#include - -#include "callbacks.h" - -static const char help_text[] = - N_("Time\n" - " Alarm at:\n" - " The time for the alarm to come on.\n\n" - - " Quiet after:\n" - " Stop alarm after this amount of time.\n" - " (if the wakeup dialog is not closed)\n\n\n" - - "Days\n" - " Day:\n" - " Select the days for the alarm to activate.\n\n" - - " Time:\n" - " Choose the time for the alarm on each day,\n" - " or select the toggle button to use the default\n" - " time.\n\n\n" - - "Volume\n" - " Fading:\n" - " Fade the volume up to the chosen volume\n" - " for this amount of time.\n\n" - - " Start at:\n" - " Start fading from this volume.\n\n" - - " Final:\n" - " The volume to stop fading at. If the fading\n" - " time is 0 then set volume to this and start\n" - " playing.\n\n\n" - - "Options:\n" - " Additional Command:\n" - " Run this command at the alarm time.\n\n" - - " Playlist:\n" - " Load this playlist. If no playlist\n" - " is given, the current one will be used.\n" - " The URL of an mp3/ogg stream\n" - " can also be entered here.\n\n" - - " Reminder:\n" - " Display a reminder when the alarm goes off.\n" - " Type the reminder in the input field and enable\n" - " the checkbox if you want it to be shown."); - -GtkWidget *create_alarm_dialog () -{ - GtkWidget *alarm_dialog; - - alarm_dialog = gtk_message_dialog_new (nullptr, GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, _("This is your wakeup call.")); - gtk_window_set_title (GTK_WINDOW (alarm_dialog), _("Alarm")); - - g_signal_connect (alarm_dialog, "response", - G_CALLBACK (alarm_stop_cancel), nullptr); - g_signal_connect_swapped (alarm_dialog, "response", - G_CALLBACK (gtk_widget_destroy), alarm_dialog); - - gtk_widget_show_all (alarm_dialog); - - return alarm_dialog; -} - -GtkWidget *create_reminder_dialog (const char *reminder_msg) -{ - GtkWidget *reminder_dialog; - - reminder_dialog = gtk_message_dialog_new (nullptr, GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, _("Your reminder for today is...")); - gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (reminder_dialog), "%s", reminder_msg); - gtk_window_set_title (GTK_WINDOW (reminder_dialog), _("Reminder")); - - g_signal_connect_swapped (reminder_dialog, "response", - G_CALLBACK (gtk_widget_destroy), reminder_dialog); - - return reminder_dialog; -} - -GtkWidget *create_config_notebook () -{ - /* General */ - GtkWidget *notebook; - GtkWidget *vbox, *hbox, *label, *frame, *grid; - GtkAdjustment *adjustment; - - /* Page 1 */ - GtkWidget *alarm_h_spin, *alarm_m_spin; - GtkWidget *stop_checkb, *stop_h_spin, *stop_m_spin; - - /* Page 2 */ - int i, j; - GtkWidget *checkbutton; - GtkWidget *widget[21]; - - const char *weekdays[] = { N_("Monday"), N_("Tuesday"), N_("Wednesday"), - N_("Thursday"), N_("Friday"), N_("Saturday"), N_("Sunday") }; - - const char *day_cb[] = { "mon_cb", "tue_cb", "wed_cb", "thu_cb", - "fri_cb", "sat_cb", "sun_cb" }; - - const char *day_def[] = { "mon_def", "tue_def", "wed_def", "thu_def", - "fri_def", "sat_def", "sun_def", }; - - const char *day_h[] = { "mon_h", "tue_h", "wed_h", "thu_h", - "fri_h", "sat_h", "sun_h" }; - - const char *day_m[] = { "mon_m", "tue_m", "wed_m", "thu_m", - "fri_m", "sat_m", "sun_m" }; - - const GCallback cb_def[] = { G_CALLBACK (on_mon_def_toggled), G_CALLBACK (on_tue_def_toggled), - G_CALLBACK (on_wed_def_toggled), G_CALLBACK (on_thu_def_toggled), - G_CALLBACK (on_fri_def_toggled), G_CALLBACK (on_sat_def_toggled), - G_CALLBACK (on_sun_def_toggled) }; - - /* Page 3 */ - GtkWidget *vbox2, *hbox2; - GtkWidget *fading_spin, *quiet_vol_scale, *vol_scale, *separator, *current_button; - - /* Page 4 */ - GtkWidget *cmd_entry, *playlist_entry, *reminder_text; - GtkWidget *cmd_checkb, *reminder_checkb; - - /* Page 5 */ - GtkWidget *view, *scrolled_window; - GtkTextBuffer *text_buffer; - - - /* General */ - notebook = gtk_notebook_new (); - - - /* Page 1 */ - frame = gtk_frame_new (_("Time")); - gtk_container_set_border_width (GTK_CONTAINER (frame), 6); - grid = gtk_table_new (0, 0, false); - gtk_table_set_col_spacings (GTK_TABLE (grid), 6); - gtk_table_set_row_spacings (GTK_TABLE (grid), 6); - gtk_container_set_border_width (GTK_CONTAINER (grid), 6); - - label = gtk_label_new (_("Alarm at (default):")); - gtk_table_attach (GTK_TABLE (grid), label, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 0, 0); - - adjustment = (GtkAdjustment *) gtk_adjustment_new (6, 0, 23, 1, 10, 0); - alarm_h_spin = gtk_spin_button_new (adjustment, 1, 0); - g_object_set_data (G_OBJECT (notebook), "alarm_h_spin", alarm_h_spin); - gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (alarm_h_spin), GTK_UPDATE_IF_VALID); - gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (alarm_h_spin), true); - gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (alarm_h_spin), true); - gtk_table_attach (GTK_TABLE (grid), alarm_h_spin, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0); - - label = gtk_label_new (":"); - gtk_table_attach (GTK_TABLE (grid), label, 2, 3, 0, 1, GTK_FILL, GTK_FILL, 0, 0); - - adjustment = (GtkAdjustment *) gtk_adjustment_new (30, 0, 59, 1, 10, 0); - alarm_m_spin = gtk_spin_button_new (adjustment, 1, 0); - g_object_set_data (G_OBJECT (notebook), "alarm_m_spin", alarm_m_spin); - gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (alarm_m_spin), GTK_UPDATE_IF_VALID); - gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (alarm_m_spin), true); - gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (alarm_m_spin), true); - gtk_table_attach (GTK_TABLE (grid), alarm_m_spin, 3, 4, 0, 1, GTK_FILL, GTK_FILL, 0, 0); - - label = gtk_label_new (_("h")); - gtk_table_attach (GTK_TABLE (grid), label, 4, 5, 0, 1, GTK_FILL, GTK_FILL, 0, 0); - - stop_checkb = gtk_check_button_new_with_label (_("Quiet after:")); - g_object_set_data (G_OBJECT (notebook), "stop_checkb", stop_checkb); - gtk_table_attach (GTK_TABLE (grid), stop_checkb, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0); - - adjustment = (GtkAdjustment *) gtk_adjustment_new (0, 0, 100, 1, 10, 0); - stop_h_spin = gtk_spin_button_new (adjustment, 1, 0); - g_object_set_data (G_OBJECT (notebook), "stop_h_spin", stop_h_spin); - gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (stop_h_spin), GTK_UPDATE_IF_VALID); - gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (stop_h_spin), true); - gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (stop_h_spin), true); - gtk_table_attach (GTK_TABLE (grid), stop_h_spin, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0); - - label = gtk_label_new (_("hours")); - gtk_table_attach (GTK_TABLE (grid), label, 2, 3, 1, 2, GTK_FILL, GTK_FILL, 0, 0); - - adjustment = (GtkAdjustment *) gtk_adjustment_new (0, 0, 59, 1, 10, 0); - stop_m_spin = gtk_spin_button_new (adjustment, 1, 0); - g_object_set_data (G_OBJECT (notebook), "stop_m_spin", stop_m_spin); - gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (stop_m_spin), GTK_UPDATE_IF_VALID); - gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (stop_m_spin), true); - gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (stop_m_spin), true); - gtk_table_attach (GTK_TABLE (grid), stop_m_spin, 3, 4, 1, 2, GTK_FILL, GTK_FILL, 0, 0); - - label = gtk_label_new (_("minutes")); - gtk_table_attach (GTK_TABLE (grid), label, 4, 5, 1, 2, GTK_FILL, GTK_FILL, 0, 0); - gtk_container_add (GTK_CONTAINER (frame), grid); - - label = gtk_label_new (_("Time")); - gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame, label); - - - /* Page 2 */ - frame = gtk_frame_new (_("Choose the days for the alarm to come on")); - gtk_container_set_border_width (GTK_CONTAINER (frame), 6); - grid = gtk_table_new (0, 0, false); - gtk_table_set_col_spacings (GTK_TABLE (grid), 6); - gtk_table_set_row_spacings (GTK_TABLE (grid), 6); - gtk_container_set_border_width (GTK_CONTAINER (grid), 6); - - label = gtk_label_new (_("Day")); - gtk_table_attach (GTK_TABLE (grid), label, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 0, 0); - - label = gtk_label_new (_("Time")); - gtk_table_attach (GTK_TABLE (grid), label, 2, 5, 0, 1, GTK_FILL, GTK_FILL, 0, 0); - - for (i = 0; i < 7; i ++) - { - widget[i] = gtk_check_button_new_with_label (_(weekdays[i])); - g_object_set_data (G_OBJECT (notebook), day_cb[i], widget[i]); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget[i]), true); - gtk_table_attach (GTK_TABLE (grid), widget[i], 0, 1, i + 1, i + 2, GTK_FILL, GTK_FILL, 0, 0); - } - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget[6]), false); - - for (i = 0; i < 7; i ++) - { - checkbutton = gtk_check_button_new_with_label (_("Default")); - g_object_set_data (G_OBJECT (notebook), day_def[i], checkbutton); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), true); - g_signal_connect (checkbutton, "toggled", G_CALLBACK (cb_def[i]), nullptr); - gtk_table_attach (GTK_TABLE (grid), checkbutton, 1, 2, i + 1, i + 2, GTK_FILL, GTK_FILL, 0, 0); - } - - for (i = 7, j = 0; i < 14; i ++, j ++) - { - adjustment = (GtkAdjustment *) gtk_adjustment_new (6, 0, 23, 1, 10, 0); - widget[i] = gtk_spin_button_new (adjustment, 1, 0); - g_object_set_data (G_OBJECT (notebook), day_h[j], widget[i]); - gtk_table_attach (GTK_TABLE (grid), widget[i], 2, 3, j + 1, j + 2, GTK_FILL, GTK_FILL, 0, 0); - } - - for (i = 0; i < 7; i ++) - { - label = gtk_label_new (":"); - gtk_table_attach (GTK_TABLE (grid), label, 3, 4, i + 1, i + 2, GTK_FILL, GTK_FILL, 0, 0); - } - - for (i = 14, j = 0; i < 21; i ++, j ++) - { - adjustment = (GtkAdjustment *) gtk_adjustment_new (30, 0, 59, 1, 10, 0); - widget[i] = gtk_spin_button_new (adjustment, 1, 0); - g_object_set_data (G_OBJECT (notebook), day_m[j], widget[i]); - gtk_table_attach (GTK_TABLE (grid), widget[i], 4, 5, j + 1, j + 2, GTK_FILL, GTK_FILL, 0, 0); - } - - label = gtk_label_new (_("Days")); - gtk_container_add (GTK_CONTAINER (frame), grid); - gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame, label); - - - /* Page 3 */ - vbox = gtk_vbox_new (false, 6); - hbox = gtk_hbox_new (false, 6); - - frame = gtk_frame_new (_("Fading")); - gtk_container_set_border_width (GTK_CONTAINER (frame), 6); - gtk_container_set_border_width (GTK_CONTAINER (hbox), 6); - adjustment = (GtkAdjustment *) gtk_adjustment_new (120, 0, 3600, 1, 10, 0); - fading_spin = gtk_spin_button_new (adjustment, 1, 0); - g_object_set_data (G_OBJECT (notebook), "fading_spin", fading_spin); - gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (fading_spin), true); - gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (fading_spin), GTK_UPDATE_IF_VALID); - label = gtk_label_new (_("seconds")); - - gtk_box_pack_start (GTK_BOX (hbox), fading_spin, true, true, 0); - gtk_box_pack_start (GTK_BOX (hbox), label, false, false, 0); - gtk_container_add (GTK_CONTAINER (frame), hbox); - gtk_box_pack_start (GTK_BOX (vbox), frame, false, false, 0); - - frame = gtk_frame_new (_("Volume")); - vbox2 = gtk_vbox_new (false, 6); - gtk_container_set_border_width (GTK_CONTAINER (frame), 6); - gtk_container_set_border_width (GTK_CONTAINER (vbox2), 6); - - label = gtk_label_new (_("Start at")); - gtk_box_pack_start (GTK_BOX (vbox2), label, false, false, 0); - - quiet_vol_scale = gtk_hscale_new ((GtkAdjustment *) gtk_adjustment_new (20, 0, 100, 1, 5, 0)); - g_object_set_data (G_OBJECT (notebook), "quiet_vol_scale", quiet_vol_scale); - gtk_scale_set_value_pos (GTK_SCALE (quiet_vol_scale), GTK_POS_RIGHT); - gtk_scale_set_digits (GTK_SCALE (quiet_vol_scale), 0); - label = gtk_label_new ("%"); - hbox2 = gtk_hbox_new (false, 6); - gtk_box_pack_start (GTK_BOX (hbox2), quiet_vol_scale, true, true, 0); - gtk_box_pack_start (GTK_BOX (hbox2), label, false, false, 0); - gtk_box_pack_start (GTK_BOX (vbox2), hbox2, false, false, 0); - - separator = gtk_hseparator_new (); - gtk_box_pack_start (GTK_BOX (vbox2), separator, false, false, 0); - - label = gtk_label_new (_("Final")); - gtk_box_pack_start (GTK_BOX (vbox2), label, false, false, 0); - - vol_scale = gtk_hscale_new ((GtkAdjustment *) gtk_adjustment_new (80, 0, 100, 1, 5, 0)); - g_object_set_data (G_OBJECT (notebook), "vol_scale", vol_scale); - gtk_scale_set_value_pos (GTK_SCALE (vol_scale), GTK_POS_RIGHT); - gtk_scale_set_digits (GTK_SCALE (vol_scale), 0); - label = gtk_label_new ("%"); - hbox2 = gtk_hbox_new (false, 6); - gtk_box_pack_start (GTK_BOX (hbox2), vol_scale, true, true, 0); - gtk_box_pack_start (GTK_BOX (hbox2), label, false, false, 0); - gtk_box_pack_start (GTK_BOX (vbox2), hbox2, false, false, 0); - - current_button = gtk_button_new_with_label (_("Current")); - g_signal_connect (current_button, "clicked", G_CALLBACK (alarm_current_volume), nullptr); - gtk_box_pack_start (GTK_BOX (vbox2), current_button, false, false, 0); - - gtk_container_add (GTK_CONTAINER (frame), vbox2); - gtk_box_pack_start (GTK_BOX (vbox), frame, false, false, 0); - - label = gtk_label_new (_("Volume")); - gtk_notebook_append_page (GTK_NOTEBOOK (notebook), vbox, label); - - - /* Page 4 */ - vbox = gtk_vbox_new (false, 6); - frame = gtk_frame_new (_("Additional Command")); - hbox = gtk_hbox_new (false, 6); - gtk_container_set_border_width (GTK_CONTAINER (frame), 6); - gtk_container_set_border_width (GTK_CONTAINER (hbox), 6); - cmd_entry = gtk_entry_new (); - g_object_set_data (G_OBJECT (notebook), "cmd_entry", cmd_entry); - cmd_checkb = gtk_check_button_new_with_label (_("enable")); - g_object_set_data (G_OBJECT (notebook), "cmd_checkb", cmd_checkb); - gtk_box_pack_start (GTK_BOX (hbox), cmd_entry, true, true, 0); - gtk_box_pack_start (GTK_BOX (hbox), cmd_checkb, false, false, 0); - gtk_container_add (GTK_CONTAINER (frame), hbox); - gtk_box_pack_start (GTK_BOX (vbox), frame, false, false, 0); - - frame = gtk_frame_new (_("Playlist (optional)")); - hbox = gtk_hbox_new (false, 6); - gtk_container_set_border_width (GTK_CONTAINER (frame), 6); - gtk_container_set_border_width (GTK_CONTAINER (hbox), 6); - playlist_entry = audgui_file_entry_new (GTK_FILE_CHOOSER_ACTION_OPEN, _("Select a playlist")); - g_object_set_data (G_OBJECT (notebook), "playlist", playlist_entry); - - gtk_box_pack_start (GTK_BOX (hbox), playlist_entry, true, true, 0); - gtk_container_add (GTK_CONTAINER (frame), hbox); - gtk_box_pack_start (GTK_BOX (vbox), frame, false, false, 0); - - frame = gtk_frame_new (_("Reminder")); - hbox = gtk_hbox_new (false, 6); - gtk_container_set_border_width (GTK_CONTAINER (frame), 6); - gtk_container_set_border_width (GTK_CONTAINER (hbox), 6); - reminder_text = gtk_entry_new (); - reminder_checkb = gtk_check_button_new_with_label (_("enable")); - g_object_set_data (G_OBJECT (notebook), "reminder_text", reminder_text); - g_object_set_data (G_OBJECT (notebook), "reminder_cb", reminder_checkb); - gtk_box_pack_start (GTK_BOX (hbox), reminder_text, true, true, 0); - gtk_box_pack_start (GTK_BOX (hbox), reminder_checkb, false, false, 0); - gtk_container_add (GTK_CONTAINER (frame), hbox); - gtk_box_pack_start (GTK_BOX (vbox), frame, false, false, 0); - - label = gtk_label_new (_("Options")); - gtk_notebook_append_page (GTK_NOTEBOOK (notebook), vbox, label); - - - /* Page 5 */ - frame = gtk_frame_new (_("What do these options mean?")); - gtk_container_set_border_width (GTK_CONTAINER (frame), 6); - view = gtk_text_view_new (); - gtk_text_view_set_editable (GTK_TEXT_VIEW (view), false); - gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view), false); - text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)); - gtk_text_buffer_set_text (text_buffer, _(help_text), -1); - scrolled_window = gtk_scrolled_window_new (nullptr, nullptr); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), - GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 6); - gtk_container_add (GTK_CONTAINER (scrolled_window), view); - gtk_container_add (GTK_CONTAINER (frame), GTK_WIDGET (scrolled_window)); - - label = gtk_label_new (_("Help")); - gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame, label); - - return notebook; -} diff -Nru audacious-plugins-4.1/src/alarm/interface.h audacious-plugins-4.3.1/src/alarm/interface.h --- audacious-plugins-4.1/src/alarm/interface.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/alarm/interface.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -#ifndef __INTERFACE_H -#define __INTERFACE_H - -GtkWidget* create_alarm_dialog (); -GtkWidget* create_config_notebook (); -GtkWidget* create_reminder_dialog (const char *reminder_msg); - -#endif diff -Nru audacious-plugins-4.1/src/alarm/meson.build audacious-plugins-4.3.1/src/alarm/meson.build --- audacious-plugins-4.1/src/alarm/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/alarm/meson.build 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -alarm_sources = [ - 'alarm.cc', - 'interface.cc' -] - - -shared_module('alarm', - alarm_sources, - dependencies: [audacious_dep, gtk_dep, audgui_dep], - name_prefix: '', - install: true, - install_dir: general_plugin_dir -) diff -Nru audacious-plugins-4.1/src/amidiplug/Makefile audacious-plugins-4.3.1/src/amidiplug/Makefile --- audacious-plugins-4.1/src/amidiplug/Makefile 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/amidiplug/Makefile 2023-04-29 20:17:32.000000000 +0000 @@ -20,7 +20,7 @@ ifeq ($(USE_GTK),yes) CPPFLAGS += ${GTK_CFLAGS} -LIBS += ${GTK_LIBS} +LIBS += ${GTK_LIBS} -laudgui endif ifeq ($(USE_QT),yes) diff -Nru audacious-plugins-4.1/src/amidiplug/backend-fluidsynth/b-fluidsynth.cc audacious-plugins-4.3.1/src/amidiplug/backend-fluidsynth/b-fluidsynth.cc --- audacious-plugins-4.1/src/amidiplug/backend-fluidsynth/b-fluidsynth.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/amidiplug/backend-fluidsynth/b-fluidsynth.cc 2023-04-29 20:17:32.000000000 +0000 @@ -65,15 +65,11 @@ if (polyphony != -1) fluid_settings_setint (sc.settings, "synth.polyphony", polyphony); - if (reverb == 1) - fluid_settings_setstr (sc.settings, "synth.reverb.active", "yes"); - else if (reverb == 0) - fluid_settings_setstr (sc.settings, "synth.reverb.active", "no"); + if (reverb != -1) + fluid_settings_setint (sc.settings, "synth.reverb.active", reverb); - if (chorus == 1) - fluid_settings_setstr (sc.settings, "synth.chorus.active", "yes"); - else if (chorus == 0) - fluid_settings_setstr (sc.settings, "synth.chorus.active", "no"); + if (chorus != -1) + fluid_settings_setint (sc.settings, "synth.chorus.active", chorus); sc.synth = new_fluid_synth (sc.settings); diff -Nru audacious-plugins-4.1/src/amidiplug/i_configure-fluidsynth.cc audacious-plugins-4.3.1/src/amidiplug/i_configure-fluidsynth.cc --- audacious-plugins-4.1/src/amidiplug/i_configure-fluidsynth.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/amidiplug/i_configure-fluidsynth.cc 2023-04-29 20:17:32.000000000 +0000 @@ -35,6 +35,7 @@ #ifdef USE_GTK +#include #include enum @@ -221,9 +222,11 @@ g_strfreev (sffiles); } - soundfont_file_hbox = gtk_hbox_new (false, 2); + soundfont_file_hbox = audgui_hbox_new (2); soundfont_file_lv = gtk_tree_view_new_with_model (GTK_TREE_MODEL (soundfont_file_store)); +#ifndef USE_GTK3 gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (soundfont_file_lv), true); +#endif g_object_unref (soundfont_file_store); soundfont_file_lv_text_rndr = gtk_cell_renderer_text_new(); soundfont_file_lv_fname_col = gtk_tree_view_column_new_with_attributes ( @@ -246,7 +249,7 @@ gtk_container_add (GTK_CONTAINER (soundfont_file_lv_sw), soundfont_file_lv); /* soundfont settings - soundfont files - buttonbox */ - soundfont_file_bbox_vbox = gtk_vbox_new (false, 0); + soundfont_file_bbox_vbox = audgui_vbox_new (0); soundfont_file_bbox_addbt = gtk_button_new(); gtk_button_set_image (GTK_BUTTON (soundfont_file_bbox_addbt), gtk_image_new_from_icon_name ("list-add", GTK_ICON_SIZE_MENU)); @@ -284,6 +287,7 @@ #ifdef USE_QT #include +#include #include #include #include @@ -359,35 +363,16 @@ void SoundFontListModel::update () { String soundfont_file = aud_get_str ("amidiplug", "fsyn_soundfont_file"); + Index sffiles = str_list_to_index (soundfont_file, ";"); - if (soundfont_file[0]) - { - char ** sffiles = g_strsplit (soundfont_file, ";", 0); - int i = 0; - - while (sffiles[i] != nullptr) - { - append (sffiles[i]); - i++; - } - - g_strfreev (sffiles); - } + for (const char * sffile : sffiles) + append (sffile); } void SoundFontListModel::commit () { - std::string sflist_string; - - for (auto str : m_file_names) - { - if (sflist_string[0]) - sflist_string.append (";"); - - sflist_string.append (str); - } - - aud_set_str ("amidiplug", "fsyn_soundfont_file", sflist_string.c_str ()); + aud_set_str ("amidiplug", "fsyn_soundfont_file", + index_to_str_list (m_file_names, ";")); /* reset backend at beginning of next song to apply changes */ __sync_bool_compare_and_swap (& backend_settings_changed, false, true); @@ -512,10 +497,10 @@ m_button_sf_up (new QPushButton (m_bbox)), m_button_sf_down (new QPushButton (m_bbox)) { - m_button_sf_add->setIcon (audqt::get_icon ("list-add")); - m_button_sf_del->setIcon (audqt::get_icon ("list-remove")); - m_button_sf_up->setIcon (audqt::get_icon ("go-up")); - m_button_sf_down->setIcon (audqt::get_icon ("go-down")); + m_button_sf_add->setIcon (QIcon::fromTheme ("list-add")); + m_button_sf_del->setIcon (QIcon::fromTheme ("list-remove")); + m_button_sf_up->setIcon (QIcon::fromTheme ("go-up")); + m_button_sf_down->setIcon (QIcon::fromTheme ("go-down")); m_bbox_layout->addWidget (m_button_sf_add); m_bbox_layout->addWidget (m_button_sf_del); @@ -526,6 +511,12 @@ m_view->setModel (m_model); m_view->setRootIsDecorated (false); + m_view->setUniformRowHeights (true); + + QHeaderView * header = m_view->header (); + header->setSectionResizeMode (0, QHeaderView::Stretch); + header->setSectionResizeMode (1, QHeaderView::Fixed); + header->setStretchLastSection (false); m_vbox_layout->addWidget (m_view); m_vbox_layout->addWidget (m_bbox); diff -Nru audacious-plugins-4.1/src/amidiplug/i_fileinfo.cc audacious-plugins-4.3.1/src/amidiplug/i_fileinfo.cc --- audacious-plugins-4.1/src/amidiplug/i_fileinfo.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/amidiplug/i_fileinfo.cc 2023-04-29 20:17:32.000000000 +0000 @@ -29,8 +29,8 @@ #include #include +#include -#include "i_configure.h" /* this is needed to retrieve information */ #include "i_midi.h" /* icon from gnome-mime-audio-midi.png of the GNOME ICON SET */ @@ -43,17 +43,29 @@ } -void i_fileinfo_grid_add_entry (char * field_text, char * value_text, +void i_fileinfo_grid_add_entry (const char * field_text, const char * value_text, GtkWidget * grid, unsigned line, PangoAttrList * attrlist) { - GtkWidget * field, *value; + GtkWidget * field, * value; field = gtk_label_new (field_text); gtk_label_set_attributes (GTK_LABEL (field), attrlist); + value = gtk_label_new (value_text); + +#ifdef USE_GTK3 + gtk_widget_set_halign (field, GTK_ALIGN_START); + gtk_label_set_justify (GTK_LABEL (field), GTK_JUSTIFY_LEFT); + gtk_grid_attach (GTK_GRID (grid), field, 0, line, 1, 1); + + gtk_widget_set_halign (value, GTK_ALIGN_START); + gtk_label_set_justify (GTK_LABEL (value), GTK_JUSTIFY_LEFT); + gtk_grid_attach (GTK_GRID (grid), value, 1, line, 1, 1); +#else gtk_misc_set_alignment (GTK_MISC (field), 0, 0); gtk_table_attach (GTK_TABLE (grid), field, 0, 1, line, line + 1, GTK_FILL, GTK_FILL, 0, 0); - value = gtk_label_new (value_text); + gtk_misc_set_alignment (GTK_MISC (value), 0, 0); gtk_table_attach (GTK_TABLE (grid), value, 1, 2, line, line + 1, GTK_FILL, GTK_FILL, 0, 0); +#endif } @@ -140,12 +152,13 @@ /*****************************************************/ fileinfowin = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_role (GTK_WINDOW (fileinfowin), "fileinfo"); gtk_window_set_default_size (GTK_WINDOW (fileinfowin), 500, 400); gtk_window_set_type_hint (GTK_WINDOW (fileinfowin), GDK_WINDOW_TYPE_HINT_DIALOG); g_signal_connect (G_OBJECT (fileinfowin), "destroy", G_CALLBACK (gtk_widget_destroyed), &fileinfowin); gtk_container_set_border_width (GTK_CONTAINER (fileinfowin), 10); - fileinfowin_vbox = gtk_vbox_new (false, 10); + fileinfowin_vbox = audgui_vbox_new (10); gtk_container_add (GTK_CONTAINER (fileinfowin), fileinfowin_vbox); /* pango attributes */ @@ -157,13 +170,15 @@ /****************** *** TITLE LINE ***/ - title_hbox = gtk_hbox_new (false, 5); + title_hbox = audgui_hbox_new (5); gtk_box_pack_start (GTK_BOX (fileinfowin_vbox), title_hbox, false, false, 0); title_icon_pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) amidiplug_xpm_midiicon); title_icon_image = gtk_image_new_from_pixbuf (title_icon_pixbuf); g_object_unref (title_icon_pixbuf); +#ifndef USE_GTK3 gtk_misc_set_alignment (GTK_MISC (title_icon_image), 0, 0); +#endif gtk_box_pack_start (GTK_BOX (title_hbox), title_icon_image, false, false, 0); title_name_f_label = gtk_label_new (_("Name:")); @@ -175,12 +190,12 @@ gtk_widget_set_size_request (GTK_WIDGET (title_name_v_entry), 200, -1); gtk_box_pack_start (GTK_BOX (title_hbox), title_name_v_entry, true, true, 0); - fileinfowin_columns_hbox = gtk_hbox_new (false, 2); + fileinfowin_columns_hbox = audgui_hbox_new (2); gtk_box_pack_start (GTK_BOX (fileinfowin_vbox), fileinfowin_columns_hbox, true, true, 0); /********************* *** MIDI INFO BOX ***/ - midiinfoboxes_vbox = gtk_vbox_new (false, 2); + midiinfoboxes_vbox = audgui_vbox_new (2); gtk_box_pack_start (GTK_BOX (fileinfowin_columns_hbox), midiinfoboxes_vbox, false, false, 0); info_frame_tl = gtk_label_new (""); @@ -189,9 +204,9 @@ info_frame = gtk_frame_new (nullptr); gtk_box_pack_start (GTK_BOX (midiinfoboxes_vbox), info_frame, true, true, 0); - info_grid = gtk_table_new (0, 0, false); - gtk_table_set_row_spacings (GTK_TABLE (info_grid), 2); - gtk_table_set_col_spacings (GTK_TABLE (info_grid), 6); + info_grid = audgui_grid_new (); + audgui_grid_set_row_spacing (info_grid, 2); + audgui_grid_set_column_spacing (info_grid, 6); gtk_container_set_border_width (GTK_CONTAINER (info_grid), 6); gtk_container_add (GTK_CONTAINER (info_frame), info_grid); value_gstring = g_string_new (""); @@ -229,7 +244,7 @@ /********************************** *** MIDI COMMENTS/LYRICS BOXES ***/ - miditextboxes_vbox = gtk_vbox_new (false, 2); + miditextboxes_vbox = audgui_vbox_new (2); gtk_box_pack_start (GTK_BOX (fileinfowin_columns_hbox), miditextboxes_vbox, true, true, 0); text_frame_tl = gtk_label_new (""); @@ -237,7 +252,7 @@ _(" MIDI Comments and Lyrics ")); gtk_box_pack_start (GTK_BOX (miditextboxes_vbox), text_frame_tl, false, false, 0); - miditextboxes_paned = gtk_vpaned_new (); + miditextboxes_paned = audgui_paned_new (GTK_ORIENTATION_VERTICAL); gtk_box_pack_start (GTK_BOX (miditextboxes_vbox), miditextboxes_paned, true, true, 0); text_frame = gtk_frame_new (nullptr); @@ -301,7 +316,7 @@ /************** *** FOOTER ***/ - footer_hbbox = gtk_hbutton_box_new (); + footer_hbbox = audgui_button_box_new (GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout (GTK_BUTTON_BOX (footer_hbbox), GTK_BUTTONBOX_END); footer_bclose = gtk_button_new_with_mnemonic (_("_Close")); g_signal_connect (G_OBJECT (footer_bclose), "clicked", G_CALLBACK (i_fileinfo_ev_close), fileinfowin); diff -Nru audacious-plugins-4.1/src/aosd/Makefile audacious-plugins-4.3.1/src/aosd/Makefile --- audacious-plugins-4.1/src/aosd/Makefile 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/aosd/Makefile 2023-04-29 20:17:32.000000000 +0000 @@ -18,4 +18,4 @@ CFLAGS += ${PLUGIN_CFLAGS} CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${X11EXT_CFLAGS} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${X11EXT_LIBS} -lm +LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${X11EXT_LIBS} -laudgui -lm diff -Nru audacious-plugins-4.1/src/aosd/aosd_osd.cc audacious-plugins-4.3.1/src/aosd/aosd_osd.cc --- audacious-plugins-4.1/src/aosd/aosd_osd.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/aosd/aosd_osd.cc 2023-04-29 20:17:32.000000000 +0000 @@ -157,7 +157,15 @@ { /* adjust coordinates and size according to selected monitor */ GdkRectangle rect; + +#ifdef USE_GTK3 + GdkDisplay *display = gdk_screen_get_display( screen ); + GdkMonitor *monitor = gdk_display_get_monitor( display, osd_data->cfg_osd->position.multimon_id ); + gdk_monitor_get_geometry( monitor, &rect ); +#else gdk_screen_get_monitor_geometry( screen , osd_data->cfg_osd->position.multimon_id , &rect ); +#endif + pos_x = rect.x; pos_y = rect.y; screen_width = rect.width; @@ -165,9 +173,12 @@ } else { - /* use total space available, even when composed by multiple monitor */ +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + /* use total space available, even when composed by multiple monitor, + unfortunately there is no non-deprecated method for the aggregation */ screen_width = gdk_screen_get_width( screen ); screen_height = gdk_screen_get_height( screen ); +G_GNUC_END_IGNORE_DEPRECATIONS pos_x = 0; pos_y = 0; } diff -Nru audacious-plugins-4.1/src/aosd/aosd_ui.cc audacious-plugins-4.3.1/src/aosd/aosd_ui.cc --- audacious-plugins-4.1/src/aosd/aosd_ui.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/aosd/aosd_ui.cc 2023-04-29 20:17:32.000000000 +0000 @@ -22,9 +22,11 @@ #include +#define AUD_GLIB_INTEGRATION #include #include #include +#include #include "aosd.h" #include "aosd_style.h" @@ -32,7 +34,32 @@ #include "aosd_cfg.h" #include "aosd_osd.h" +#ifdef USE_GTK3 +static void chooser_get_aosd_color (GtkColorChooser * chooser, aosd_color_t * color) +{ + GdkRGBA rgba; + gtk_color_chooser_get_rgba (chooser, & rgba); + + color->red = rint (rgba.red * 65535.0); + color->green = rint (rgba.green * 65535.0); + color->blue = rint (rgba.blue * 65535.0); + color->alpha = rint (rgba.alpha * 65535.0); +} + +static void chooser_set_aosd_color (GtkColorChooser * chooser, const aosd_color_t * color) +{ + GdkRGBA rgba = { + color->red / 65535.0, + color->green / 65535.0, + color->blue / 65535.0, + color->alpha / 65535.0 + }; + + gtk_color_chooser_set_use_alpha (chooser, true); + gtk_color_chooser_set_rgba (chooser, & rgba); +} +#else static void chooser_get_aosd_color (GtkColorButton * chooser, aosd_color_t * color) { GdkColor gdk_color; @@ -53,6 +80,7 @@ gtk_color_button_set_use_alpha (chooser, true); gtk_color_button_set_alpha (chooser, color->alpha); } +#endif /*************************************************************/ @@ -80,17 +108,26 @@ static gboolean aosd_cb_configure_position_expose ( GtkWidget * darea , +#ifdef USE_GTK3 + cairo_t * cr , +#else GdkEventExpose * event , +#endif void * coord_gp ) { int coord = GPOINTER_TO_INT(coord_gp); +#ifdef USE_GTK3 + cairo_set_source_rgb ( cr , 0 , 0 , 0 ); + cairo_rectangle ( cr , (coord % 3) * 10 , (coord / 3) * 16 , 20 , 8 ); + cairo_fill ( cr ); +#else cairo_t * cr = gdk_cairo_create (gtk_widget_get_window (darea)); cairo_set_source_rgb ( cr , 0 , 0 , 0 ); cairo_rectangle ( cr , (coord % 3) * 10 , (coord / 3) * 16 , 20 , 8 ); cairo_fill ( cr ); cairo_destroy (cr); - +#endif return false; } @@ -153,19 +190,24 @@ GtkWidget *pos_multimon_frame, *pos_multimon_hbox; GtkWidget *pos_multimon_label; GtkWidget *pos_multimon_combobox; - int monitors_num = gdk_screen_get_n_monitors( gdk_screen_get_default() ); int i = 0; - pos_vbox = gtk_vbox_new( false , 4 ); +#ifdef USE_GTK3 + int monitors_num = gdk_display_get_n_monitors ( gdk_display_get_default() ); +#else + int monitors_num = gdk_screen_get_n_monitors( gdk_screen_get_default() ); +#endif + + pos_vbox = audgui_vbox_new( 4 ); gtk_container_set_border_width( GTK_CONTAINER(pos_vbox) , 6 ); pos_placement_frame = gtk_frame_new( _("Placement") ); - pos_placement_hbox = gtk_hbox_new( false , 0 ); + pos_placement_hbox = audgui_hbox_new( 0 ); gtk_container_set_border_width( GTK_CONTAINER(pos_placement_hbox) , 6 ); gtk_container_add( GTK_CONTAINER(pos_placement_frame) , pos_placement_hbox ); gtk_box_pack_start( GTK_BOX(pos_vbox) , pos_placement_frame , false , false , 0 ); - pos_placement_grid = gtk_table_new (0, 0, false); + pos_placement_grid = audgui_grid_new(); for ( i = 0 ; i < 9 ; i++ ) { if ( i == 0 ) @@ -176,10 +218,14 @@ pos_placement_bt_darea[i] = gtk_drawing_area_new(); gtk_widget_set_size_request( pos_placement_bt_darea[i] , 40 , 40 ); gtk_container_add( GTK_CONTAINER(pos_placement_bt[i]) , pos_placement_bt_darea[i] ); - g_signal_connect( G_OBJECT(pos_placement_bt_darea[i]) , "expose-event" , + g_signal_connect( G_OBJECT(pos_placement_bt_darea[i]) , AUDGUI_DRAW_SIGNAL , G_CALLBACK(aosd_cb_configure_position_expose) , GINT_TO_POINTER(i) ); +#ifdef USE_GTK3 + gtk_grid_attach( GTK_GRID(pos_placement_grid) , pos_placement_bt[i] , (i % 3) , (i / 3) , 1 , 1 ); +#else gtk_table_attach_defaults( GTK_TABLE(pos_placement_grid) , pos_placement_bt[i] , (i % 3) , (i % 3) + 1 , (i / 3) , (i / 3) + 1 ); +#endif g_object_set_data( G_OBJECT(pos_placement_bt[i]) , "value" , GINT_TO_POINTER(i+1) ); if ( cfg->position.placement == (i+1) ) gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(pos_placement_bt[i]) , true ); @@ -187,38 +233,53 @@ gtk_box_pack_start( GTK_BOX(pos_placement_hbox) , pos_placement_grid , false , false , 0 ); aosd_cb_list.append( pos_placement_grid , aosd_cb_configure_position_placement_commit ); - gtk_box_pack_start( GTK_BOX(pos_placement_hbox) , gtk_vseparator_new() , false , false , 6 ); + gtk_box_pack_start( GTK_BOX(pos_placement_hbox) , audgui_separator_new( GTK_ORIENTATION_VERTICAL ) , false , false , 6 ); - pos_offset_grid = gtk_table_new (0, 0, false); - gtk_table_set_row_spacings( GTK_TABLE(pos_offset_grid) , 4 ); - gtk_table_set_col_spacings( GTK_TABLE(pos_offset_grid) , 4 ); + pos_offset_grid = audgui_grid_new(); + audgui_grid_set_row_spacing( pos_offset_grid , 4 ); + audgui_grid_set_column_spacing( pos_offset_grid , 4 ); pos_offset_x_label = gtk_label_new( _( "Relative X offset:" ) ); - gtk_misc_set_alignment( GTK_MISC(pos_offset_x_label) , 0 , 0.5 ); - gtk_table_attach_defaults( GTK_TABLE(pos_offset_grid) , pos_offset_x_label , 0 , 1 , 0 , 1 ); pos_offset_x_spinbt = gtk_spin_button_new_with_range( -9999 , 9999 , 1 ); gtk_spin_button_set_value( GTK_SPIN_BUTTON(pos_offset_x_spinbt) , cfg->position.offset_x ); - gtk_table_attach_defaults( GTK_TABLE(pos_offset_grid) , pos_offset_x_spinbt , 1 , 2 , 0 , 1 ); g_object_set_data( G_OBJECT(pos_offset_grid) , "offx" , pos_offset_x_spinbt ); pos_offset_y_label = gtk_label_new( _( "Relative Y offset:" ) ); - gtk_misc_set_alignment( GTK_MISC(pos_offset_y_label) , 0 , 0.5 ); - gtk_table_attach_defaults( GTK_TABLE(pos_offset_grid) , pos_offset_y_label , 0 , 1 , 1 , 2 ); pos_offset_y_spinbt = gtk_spin_button_new_with_range( -9999 , 9999 , 1 ); gtk_spin_button_set_value( GTK_SPIN_BUTTON(pos_offset_y_spinbt) , cfg->position.offset_y ); - gtk_table_attach_defaults( GTK_TABLE(pos_offset_grid) , pos_offset_y_spinbt , 1 , 2 , 1 , 2 ); g_object_set_data( G_OBJECT(pos_offset_grid) , "offy" , pos_offset_y_spinbt ); pos_maxsize_width_label = gtk_label_new( _("Max OSD width:") ); - gtk_misc_set_alignment( GTK_MISC(pos_maxsize_width_label) , 0 , 0.5 ); - gtk_table_attach_defaults( GTK_TABLE(pos_offset_grid) , pos_maxsize_width_label , 0 , 1 , 2 , 3 ); pos_maxsize_width_spinbt = gtk_spin_button_new_with_range( 0 , 99999 , 1 ); g_object_set_data( G_OBJECT(pos_offset_grid) , "maxsize_width" , pos_maxsize_width_spinbt ); gtk_spin_button_set_value( GTK_SPIN_BUTTON(pos_maxsize_width_spinbt) , cfg->position.maxsize_width ); - gtk_table_attach_defaults( GTK_TABLE(pos_offset_grid) , pos_maxsize_width_spinbt , 1 , 2 , 2 , 3 ); gtk_box_pack_start( GTK_BOX(pos_placement_hbox) , pos_offset_grid , false , false , 0 ); aosd_cb_list.append( pos_offset_grid , aosd_cb_configure_position_offset_commit ); aosd_cb_list.append( pos_offset_grid , aosd_cb_configure_position_maxsize_commit ); +#ifdef USE_GTK3 + gtk_widget_set_halign( pos_offset_x_label , GTK_ALIGN_START ); + gtk_widget_set_halign( pos_offset_y_label , GTK_ALIGN_START ); + gtk_widget_set_halign( pos_maxsize_width_label , GTK_ALIGN_START ); + + gtk_grid_attach( GTK_GRID(pos_offset_grid) , pos_offset_x_label , 0 , 0 , 1 , 1 ); + gtk_grid_attach( GTK_GRID(pos_offset_grid) , pos_offset_x_spinbt , 1 , 0 , 1 , 1 ); + gtk_grid_attach( GTK_GRID(pos_offset_grid) , pos_offset_y_label , 0 , 1 , 1 , 1 ); + gtk_grid_attach( GTK_GRID(pos_offset_grid) , pos_offset_y_spinbt , 1 , 1 , 1 , 1 ); + gtk_grid_attach( GTK_GRID(pos_offset_grid) , pos_maxsize_width_label , 0 , 2 , 1 , 1 ); + gtk_grid_attach( GTK_GRID(pos_offset_grid) , pos_maxsize_width_spinbt , 1 , 2 , 1 , 1 ); +#else + gtk_misc_set_alignment( GTK_MISC(pos_offset_x_label) , 0 , 0.5 ); + gtk_misc_set_alignment( GTK_MISC(pos_offset_y_label) , 0 , 0.5 ); + gtk_misc_set_alignment( GTK_MISC(pos_maxsize_width_label) , 0 , 0.5 ); + + gtk_table_attach_defaults( GTK_TABLE(pos_offset_grid) , pos_offset_x_label , 0 , 1 , 0 , 1 ); + gtk_table_attach_defaults( GTK_TABLE(pos_offset_grid) , pos_offset_x_spinbt , 1 , 2 , 0 , 1 ); + gtk_table_attach_defaults( GTK_TABLE(pos_offset_grid) , pos_offset_y_label , 0 , 1 , 1 , 2 ); + gtk_table_attach_defaults( GTK_TABLE(pos_offset_grid) , pos_offset_y_spinbt , 1 , 2 , 1 , 2 ); + gtk_table_attach_defaults( GTK_TABLE(pos_offset_grid) , pos_maxsize_width_label , 0 , 1 , 2 , 3 ); + gtk_table_attach_defaults( GTK_TABLE(pos_offset_grid) , pos_maxsize_width_spinbt , 1 , 2 , 2 , 3 ); +#endif + pos_multimon_frame = gtk_frame_new( _("Multi-Monitor options") ); - pos_multimon_hbox = gtk_hbox_new( false , 4 ); + pos_multimon_hbox = audgui_hbox_new( 4 ); gtk_container_set_border_width( GTK_CONTAINER(pos_multimon_hbox) , 6 ); gtk_container_add( GTK_CONTAINER(pos_multimon_frame), pos_multimon_hbox ); pos_multimon_label = gtk_label_new( _("Display OSD using:") ); @@ -241,10 +302,10 @@ static GtkWidget * -aosd_ui_configure_animation_timing ( char * label_string ) +aosd_ui_configure_animation_timing ( const char * label_string ) { GtkWidget *hbox, *desc_label, *spinbt; - hbox = gtk_hbox_new( false , 4 ); + hbox = audgui_hbox_new( 4 ); desc_label = gtk_label_new( label_string ); spinbt = gtk_spin_button_new_with_range( 0 , 99999 , 1 ); gtk_box_pack_start( GTK_BOX(hbox) , desc_label , false , false , 0 ); @@ -274,10 +335,10 @@ GtkWidget *ani_timing_fadein_widget, *ani_timing_fadeout_widget, *ani_timing_stay_widget; GtkSizeGroup *sizegroup; - ani_vbox = gtk_vbox_new( false , 0 ); + ani_vbox = audgui_vbox_new( 0 ); gtk_container_set_border_width( GTK_CONTAINER(ani_vbox) , 6 ); - ani_timing_hbox = gtk_hbox_new( false , 0 ); + ani_timing_hbox = audgui_hbox_new( 0 ); ani_timing_frame = gtk_frame_new( _("Timing (ms)") ); gtk_container_set_border_width( GTK_CONTAINER(ani_timing_hbox) , 6 ); gtk_container_add( GTK_CONTAINER(ani_timing_frame) , ani_timing_hbox ); @@ -287,12 +348,12 @@ gtk_spin_button_set_value( GTK_SPIN_BUTTON(g_object_get_data( G_OBJECT(ani_timing_stay_widget),"spinbt")) , cfg->animation.timing_display ); gtk_box_pack_start( GTK_BOX(ani_timing_hbox) , ani_timing_stay_widget , true , true , 0 ); - gtk_box_pack_start( GTK_BOX(ani_timing_hbox) , gtk_vseparator_new() , false , false , 4 ); + gtk_box_pack_start( GTK_BOX(ani_timing_hbox) , audgui_separator_new( GTK_ORIENTATION_VERTICAL ) , false , false , 4 ); ani_timing_fadein_widget = aosd_ui_configure_animation_timing( _("Fade in:") ); gtk_spin_button_set_value( GTK_SPIN_BUTTON(g_object_get_data( G_OBJECT(ani_timing_fadein_widget),"spinbt")) , cfg->animation.timing_fadein ); gtk_box_pack_start( GTK_BOX(ani_timing_hbox) , ani_timing_fadein_widget , true , true , 0 ); - gtk_box_pack_start( GTK_BOX(ani_timing_hbox) , gtk_vseparator_new() , false , false , 4 ); + gtk_box_pack_start( GTK_BOX(ani_timing_hbox) , audgui_separator_new( GTK_ORIENTATION_VERTICAL ) , false , false , 4 ); ani_timing_fadeout_widget = aosd_ui_configure_animation_timing( _("Fade out:") ); gtk_spin_button_set_value( GTK_SPIN_BUTTON(g_object_get_data( G_OBJECT(ani_timing_fadeout_widget),"spinbt")) , cfg->animation.timing_fadeout ); @@ -324,6 +385,26 @@ } +#ifdef USE_GTK3 +static void +aosd_cb_configure_text_font_commit ( GtkWidget * fontbt , aosd_cfg_t * cfg ) +{ + int fontnum = GPOINTER_TO_INT(g_object_get_data( G_OBJECT(fontbt) , "fontnum" )); + GtkColorChooser * chooser; + + CharPtr font_name (gtk_font_chooser_get_font (GTK_FONT_CHOOSER (fontbt))); + cfg->text.fonts_name[fontnum] = String (font_name); + + cfg->text.fonts_draw_shadow[fontnum] = gtk_toggle_button_get_active( + GTK_TOGGLE_BUTTON(g_object_get_data(G_OBJECT(fontbt),"use_shadow")) ); + + chooser = (GtkColorChooser *) g_object_get_data ((GObject *) fontbt, "color"); + chooser_get_aosd_color (chooser, & cfg->text.fonts_color[fontnum]); + + chooser = (GtkColorChooser *) g_object_get_data ((GObject *) fontbt, "shadow_color"); + chooser_get_aosd_color (chooser, & cfg->text.fonts_shadow_color[fontnum]); +} +#else static void aosd_cb_configure_text_font_commit ( GtkWidget * fontbt , aosd_cfg_t * cfg ) { @@ -342,6 +423,7 @@ chooser = (GtkColorButton *) g_object_get_data ((GObject *) fontbt, "shadow_color"); chooser_get_aosd_color (chooser, & cfg->text.fonts_shadow_color[fontnum]); } +#endif static GtkWidget * @@ -354,14 +436,14 @@ GtkWidget *tex_font_shadow_colorbt[3]; int i = 0; - tex_vbox = gtk_vbox_new( false , 4 ); + tex_vbox = audgui_vbox_new( 4 ); gtk_container_set_border_width( GTK_CONTAINER(tex_vbox) , 6 ); tex_font_frame = gtk_frame_new( _("Fonts") ); - tex_font_grid = gtk_table_new (0, 0, false); + tex_font_grid = audgui_grid_new(); gtk_container_set_border_width( GTK_CONTAINER(tex_font_grid) , 6 ); - gtk_table_set_row_spacings( GTK_TABLE(tex_font_grid) , 4 ); - gtk_table_set_col_spacings( GTK_TABLE(tex_font_grid) , 4 ); + audgui_grid_set_row_spacing( tex_font_grid , 4 ); + audgui_grid_set_column_spacing( tex_font_grid , 4 ); for ( i = 0 ; i < AOSD_TEXT_FONTS_NUM ; i++ ) { char *label_str = g_strdup_printf( _("Font %i:") , i+1 ); @@ -372,18 +454,19 @@ gtk_font_button_set_show_size( GTK_FONT_BUTTON(tex_font_fontbt[i]) , true ); gtk_font_button_set_use_font( GTK_FONT_BUTTON(tex_font_fontbt[i]) , false ); gtk_font_button_set_use_size( GTK_FONT_BUTTON(tex_font_fontbt[i]) , false ); + +#ifdef USE_GTK3 + gtk_font_chooser_set_font( GTK_FONT_CHOOSER(tex_font_fontbt[i]) , cfg->text.fonts_name[i] ); +#else gtk_font_button_set_font_name( GTK_FONT_BUTTON(tex_font_fontbt[i]) , cfg->text.fonts_name[i] ); +#endif tex_font_colorbt[i] = gtk_color_button_new (); - chooser_set_aosd_color ((GtkColorButton *) tex_font_colorbt[i], - & cfg->text.fonts_color[i]); tex_font_shadow_togglebt[i] = gtk_toggle_button_new_with_label( _("Shadow") ); gtk_toggle_button_set_mode( GTK_TOGGLE_BUTTON(tex_font_shadow_togglebt[i]) , false ); tex_font_shadow_colorbt[i] = gtk_color_button_new (); - chooser_set_aosd_color ((GtkColorButton *) tex_font_shadow_colorbt[i], - & cfg->text.fonts_shadow_color[i]); gtk_widget_set_sensitive( tex_font_shadow_colorbt[i] , false ); g_signal_connect( G_OBJECT(tex_font_shadow_togglebt[i]) , "toggled" , @@ -391,11 +474,27 @@ tex_font_shadow_colorbt[i] ); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(tex_font_shadow_togglebt[i]) , cfg->text.fonts_draw_shadow[i] ); + +#ifdef USE_GTK3 + chooser_set_aosd_color( GTK_COLOR_CHOOSER(tex_font_colorbt[i]) , &cfg->text.fonts_color[i] ); + chooser_set_aosd_color( GTK_COLOR_CHOOSER(tex_font_shadow_colorbt[i]) , &cfg->text.fonts_shadow_color[i] ); + + gtk_grid_attach( GTK_GRID(tex_font_grid) , tex_font_label[i] , 0 , 0 , 1 , 1 ); + gtk_grid_attach( GTK_GRID(tex_font_grid) , tex_font_fontbt[i] , 1 , 0 , 1 , 1 ); + gtk_grid_attach( GTK_GRID(tex_font_grid) , tex_font_colorbt[i] , 2 , 0 , 1 , 1 ); + gtk_grid_attach( GTK_GRID(tex_font_grid) , tex_font_shadow_togglebt[i] , 3 , 0 , 1 , 1 ); + gtk_grid_attach( GTK_GRID(tex_font_grid) , tex_font_shadow_colorbt[i] , 4 , 0 , 1 , 1 ); +#else + chooser_set_aosd_color( GTK_COLOR_BUTTON(tex_font_colorbt[i]) , &cfg->text.fonts_color[i] ); + chooser_set_aosd_color( GTK_COLOR_BUTTON(tex_font_shadow_colorbt[i]) , &cfg->text.fonts_shadow_color[i] ); + gtk_table_attach_defaults( GTK_TABLE(tex_font_grid) , tex_font_label[i] , 0 , 1 , i , i + 1 ); gtk_table_attach_defaults( GTK_TABLE(tex_font_grid) , tex_font_fontbt[i] , 1 , 2 , i , i + 1 ); gtk_table_attach_defaults( GTK_TABLE(tex_font_grid) , tex_font_colorbt[i] , 2 , 3 , i , i + 1 ); gtk_table_attach_defaults( GTK_TABLE(tex_font_grid) , tex_font_shadow_togglebt[i] , 3 , 4 , i , i + 1 ); gtk_table_attach_defaults( GTK_TABLE(tex_font_grid) , tex_font_shadow_colorbt[i] , 4 , 5 , i , i + 1 ); +#endif + g_object_set_data( G_OBJECT(tex_font_fontbt[i]) , "fontnum" , GINT_TO_POINTER(i) ); g_object_set_data( G_OBJECT(tex_font_fontbt[i]) , "color" , tex_font_colorbt[i] ); g_object_set_data( G_OBJECT(tex_font_fontbt[i]) , "use_shadow" , tex_font_shadow_togglebt[i] ); @@ -429,7 +528,12 @@ aosd_cb_configure_decoration_color_commit ( GtkWidget * colorbt , aosd_cfg_t * cfg ) { aosd_color_t color; - chooser_get_aosd_color ((GtkColorButton *) colorbt, & color); + +#ifdef USE_GTK3 + chooser_get_aosd_color( GTK_COLOR_CHOOSER(colorbt), &color ); +#else + chooser_get_aosd_color( GTK_COLOR_BUTTON(colorbt), &color ); +#endif int colnum = GPOINTER_TO_INT( g_object_get_data( G_OBJECT(colorbt) , "colnum" ) ); cfg->decoration.colors[colnum] = color; @@ -446,11 +550,11 @@ GtkTreeViewColumn *dec_rstyle_lv_col_desc; GtkTreeSelection *dec_rstyle_lv_sel; GtkTreeIter iter, iter_sel; - GtkWidget *dec_rstyle_hbox; + GtkWidget *dec_rstyle_vbox; GtkWidget *dec_rstyleopts_frame, *dec_rstyleopts_grid; int colors_max_num = 0, i = 0; - dec_hbox = gtk_hbox_new( false , 4 ); + dec_hbox = audgui_hbox_new( 4 ); gtk_container_set_border_width( GTK_CONTAINER(dec_hbox) , 6 ); /* decoration style model @@ -494,35 +598,42 @@ gtk_box_pack_start( GTK_BOX(dec_hbox) , dec_rstyle_lv_frame , false , false , 0 ); aosd_cb_list.append( dec_rstyle_lv , aosd_cb_configure_decoration_style_commit ); - dec_rstyle_hbox = gtk_vbox_new( false , 4 ); - gtk_box_pack_start( GTK_BOX(dec_hbox) , dec_rstyle_hbox , true , true , 0 ); + dec_rstyle_vbox = audgui_vbox_new( 4 ); + gtk_box_pack_start( GTK_BOX(dec_hbox) , dec_rstyle_vbox , true , true , 0 ); /* in colors_max_num now there's the maximum number of colors used by decoration styles */ dec_rstyleopts_frame = gtk_frame_new( _("Colors") ); - dec_rstyleopts_grid = gtk_table_new (0, 0, false); + dec_rstyleopts_grid = audgui_grid_new(); gtk_container_set_border_width( GTK_CONTAINER(dec_rstyleopts_grid) , 6 ); - gtk_table_set_row_spacings( GTK_TABLE(dec_rstyleopts_grid) , 4 ); - gtk_table_set_col_spacings( GTK_TABLE(dec_rstyleopts_grid) , 8 ); + audgui_grid_set_row_spacing( dec_rstyleopts_grid , 4 ); + audgui_grid_set_column_spacing( dec_rstyleopts_grid , 8 ); gtk_container_add( GTK_CONTAINER(dec_rstyleopts_frame) , dec_rstyleopts_grid ); for ( i = 0 ; i < colors_max_num ; i++ ) { GtkWidget *hbox, *label; char *label_str = nullptr; - hbox = gtk_hbox_new( false , 4 ); + hbox = audgui_hbox_new( 4 ); label_str = g_strdup_printf( _("Color %i:") , i+1 ); label = gtk_label_new( label_str ); g_free( label_str ); GtkWidget * colorbt = gtk_color_button_new (); - chooser_set_aosd_color ((GtkColorButton *) colorbt, & cfg->decoration.colors[i]); gtk_box_pack_start( GTK_BOX(hbox) , label , false , false , 0 ); gtk_box_pack_start( GTK_BOX(hbox) , colorbt , false , false , 0 ); - gtk_table_attach_defaults( GTK_TABLE(dec_rstyleopts_grid) , hbox , (i % 3) , (i % 3) + 1, (i / 3) , (i / 3) + 1); + +#ifdef USE_GTK3 + chooser_set_aosd_color( GTK_COLOR_CHOOSER(colorbt) , &cfg->decoration.colors[i] ); + gtk_grid_attach( GTK_GRID(dec_rstyleopts_grid) , hbox , (i % 3) , (i / 3) , 1 , 1 ); +#else + chooser_set_aosd_color( GTK_COLOR_BUTTON(colorbt) , &cfg->decoration.colors[i] ); + gtk_table_attach_defaults( GTK_TABLE(dec_rstyleopts_grid) , hbox , (i % 3) , (i % 3) + 1, (i / 3) , (i / 3) + 1 ); +#endif + g_object_set_data( G_OBJECT(colorbt) , "colnum" , GINT_TO_POINTER(i) ); aosd_cb_list.append( colorbt , aosd_cb_configure_decoration_color_commit ); } - gtk_box_pack_start( GTK_BOX(dec_rstyle_hbox) , dec_rstyleopts_frame , false , false , 0 ); + gtk_box_pack_start( GTK_BOX(dec_rstyle_vbox) , dec_rstyleopts_frame , false , false , 0 ); return dec_hbox; } @@ -572,7 +683,7 @@ gtk_notebook_set_show_tabs( GTK_NOTEBOOK(tri_event_nb) , false ); gtk_notebook_set_show_border( GTK_NOTEBOOK(tri_event_nb) , false ); - tri_hbox = gtk_hbox_new( false , 4 ); + tri_hbox = audgui_hbox_new( 4 ); gtk_container_set_border_width( GTK_CONTAINER(tri_hbox) , 6 ); /* trigger model @@ -590,19 +701,23 @@ gtk_list_store_set( tri_event_store , &iter , 0 , _(aosd_trigger_get_name( i )) , 1 , i , 2 , i , -1 ); - vbox = gtk_vbox_new( false , 0 ); + vbox = audgui_vbox_new( 0 ); gtk_container_set_border_width( GTK_CONTAINER(vbox) , 6 ); label = gtk_label_new( _(aosd_trigger_get_desc( i )) ); gtk_label_set_line_wrap( GTK_LABEL(label) , true ); gtk_label_set_max_width_chars( GTK_LABEL(label), 40 ); +#ifdef USE_GTK3 + gtk_widget_set_halign( label , GTK_ALIGN_START ); +#else gtk_misc_set_alignment( GTK_MISC(label) , 0.0 , 0.0 ); +#endif checkbt = gtk_check_button_new_with_label( _("Enable trigger") ); if ( cfg->trigger.enabled[i] ) gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(checkbt) , true ); else gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(checkbt) , false ); gtk_box_pack_start( GTK_BOX(vbox) , checkbt , false , false , 0 ); - gtk_box_pack_start( GTK_BOX(vbox) , gtk_hseparator_new() , false , false , 4 ); + gtk_box_pack_start( GTK_BOX(vbox) , audgui_separator_new( GTK_ORIENTATION_HORIZONTAL ) , false , false , 4 ); gtk_box_pack_start( GTK_BOX(vbox) , label , false , false , 0 ); frame = gtk_frame_new( nullptr ); gtk_container_add( GTK_CONTAINER(frame) , vbox ); @@ -698,10 +813,10 @@ GtkWidget *mis_transp_status_frame, *mis_transp_status_hbox; GtkWidget *mis_transp_status_img, *mis_transp_status_label; - mis_vbox = gtk_vbox_new( false , 0 ); + mis_vbox = audgui_vbox_new( 0 ); gtk_container_set_border_width( GTK_CONTAINER(mis_vbox) , 6 ); - mis_transp_vbox = gtk_vbox_new( false , 0 ); + mis_transp_vbox = audgui_vbox_new( 0 ); mis_transp_frame = gtk_frame_new( _("Transparency") ); gtk_container_set_border_width( GTK_CONTAINER(mis_transp_vbox) , 6 ); gtk_container_add( GTK_CONTAINER(mis_transp_frame) , mis_transp_vbox ); @@ -718,16 +833,22 @@ gtk_box_pack_start( GTK_BOX(mis_transp_vbox) , mis_transp_fake_rbt , true , true , 0 ); gtk_box_pack_start( GTK_BOX(mis_transp_vbox) , mis_transp_real_rbt , true , true , 0 ); - mis_transp_status_hbox = gtk_hbox_new( false , 4 ); + mis_transp_status_hbox = audgui_hbox_new( 4 ); mis_transp_status_frame = gtk_frame_new( nullptr ); gtk_container_set_border_width( GTK_CONTAINER(mis_transp_status_hbox) , 3 ); gtk_container_add( GTK_CONTAINER(mis_transp_status_frame) , mis_transp_status_hbox ); gtk_box_pack_start( GTK_BOX(mis_transp_vbox) , mis_transp_status_frame , true , true , 0 ); mis_transp_status_img = gtk_image_new(); - gtk_misc_set_alignment( GTK_MISC(mis_transp_status_img) , 0.5 , 0 ); mis_transp_status_label = gtk_label_new( "" ); + +#ifdef USE_GTK3 + gtk_widget_set_halign( mis_transp_status_label , GTK_ALIGN_START ); +#else + gtk_misc_set_alignment( GTK_MISC(mis_transp_status_img) , 0.5 , 0 ); gtk_misc_set_alignment( GTK_MISC(mis_transp_status_label) , 0 , 0.5 ); +#endif + gtk_label_set_line_wrap( GTK_LABEL(mis_transp_status_label) , true ); gtk_box_pack_start( GTK_BOX(mis_transp_status_hbox) , mis_transp_status_img , false , false , 0 ); gtk_box_pack_start( GTK_BOX(mis_transp_status_hbox) , mis_transp_status_label , true , true , 0 ); diff -Nru audacious-plugins-4.1/src/aosd/meson.build audacious-plugins-4.3.1/src/aosd/meson.build --- audacious-plugins-4.1/src/aosd/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/aosd/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -17,7 +17,7 @@ if have_aosd shared_module('aosd', aosd_sources, - dependencies: [audacious_dep, math_dep, gtk_dep, glib_dep, x11_dep], + dependencies: [audacious_dep, audgui_dep, math_dep, gtk_dep, glib_dep, x11_dep], name_prefix: '', install: true, install_dir: general_plugin_dir diff -Nru audacious-plugins-4.1/src/bitcrusher/Makefile audacious-plugins-4.3.1/src/bitcrusher/Makefile --- audacious-plugins-4.1/src/bitcrusher/Makefile 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/bitcrusher/Makefile 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,12 @@ +PLUGIN = bitcrusher${PLUGIN_SUFFIX} + +SRCS = bitcrusher.cc + +include ../../buildsys.mk +include ../../extra.mk + +plugindir := ${plugindir}/${EFFECT_PLUGIN_DIR} + +LD = ${CXX} +CFLAGS += ${PLUGIN_CFLAGS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} -I../.. diff -Nru audacious-plugins-4.1/src/bitcrusher/bitcrusher.cc audacious-plugins-4.3.1/src/bitcrusher/bitcrusher.cc --- audacious-plugins-4.1/src/bitcrusher/bitcrusher.cc 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/bitcrusher/bitcrusher.cc 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2021 Ariadne Conill + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice is present in all copies. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#include +#include +#include +#include + +static const char * const bitcrusher_defaults[] = { + "depth", "32", + "downsample", "1.0", + nullptr}; + +static const PreferencesWidget bitcrusher_widgets[] = { + WidgetLabel (N_("Bitcrusher")), + WidgetSpin (N_("Bit Depth:"), + WidgetFloat ("bitcrusher", "depth"), + {2, 32, 0.1}), + WidgetSpin (N_("Downsample ratio:"), + WidgetFloat ("bitcrusher", "downsample"), + {0.02, 1.0, 0.02}), +}; + +static const PluginPreferences bitcrusher_prefs = {{bitcrusher_widgets}}; + +class Bitcrusher : public EffectPlugin +{ +public: + static constexpr PluginInfo info = { + N_("Bitcrusher"), + PACKAGE, + nullptr, + & bitcrusher_prefs + }; + + constexpr Bitcrusher () : EffectPlugin (info, 0, true) {} + + bool init (); + void cleanup (); + + void start (int & channels, int & rate); + Index & process (Index & data); + bool flush (bool force); + +private: + float m_accumulator = 0.0; + int m_channels = 0; + Index m_hold; +}; + +EXPORT Bitcrusher aud_plugin_instance; + +bool +Bitcrusher::init () +{ + aud_config_set_defaults ("bitcrusher", bitcrusher_defaults); + return true; +} + +void +Bitcrusher::cleanup () +{ + m_hold.clear (); +} + +void +Bitcrusher::start (int & channels, int & rate) +{ + m_accumulator = 0.0f; + m_channels = channels; + + m_hold.resize (m_channels); + m_hold.erase (0, m_channels); +} + +Index & +Bitcrusher::process (Index & data) +{ + float downsample_ratio = aud_get_double ("bitcrusher", "downsample"); + float bit_depth = aud_get_double ("bitcrusher", "depth"); + + float scale = pow (2., bit_depth) / 2.; + float gain = (33. - bit_depth) / 8.; + + float * f = data.begin (); + float * end = data.end (); + + while (f < end) + { + m_accumulator += downsample_ratio; + + for (int channel = 0; channel < m_channels; channel ++) + { + float current = * f; + + if (m_accumulator >= 1.0) + m_hold [channel] = floorf ((current * gain) * scale + 0.5) / scale / gain; + + * f ++ = m_hold [channel]; + } + + if (m_accumulator >= 1.0) + m_accumulator -= 1.0; + } + + return data; +} + +bool +Bitcrusher::flush (bool force) +{ + m_hold.erase (0, m_channels); + return true; +} diff -Nru audacious-plugins-4.1/src/bitcrusher/meson.build audacious-plugins-4.3.1/src/bitcrusher/meson.build --- audacious-plugins-4.1/src/bitcrusher/meson.build 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/bitcrusher/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,7 @@ +shared_module('bitcrusher', + 'bitcrusher.cc', + dependencies: [audacious_dep], + name_prefix: '', + install: true, + install_dir: effect_plugin_dir +) diff -Nru audacious-plugins-4.1/src/blur_scope/blur_scope.cc audacious-plugins-4.3.1/src/blur_scope/blur_scope.cc --- audacious-plugins-4.1/src/blur_scope/blur_scope.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/blur_scope/blur_scope.cc 2023-04-29 20:17:32.000000000 +0000 @@ -32,6 +32,7 @@ #include #include #include +#include static void /* GtkWidget */ * bscope_get_color_chooser (); @@ -71,13 +72,18 @@ private: void resize (int w, int h); + void draw_to_cairo (cairo_t * cr); void draw (); void blur (); void draw_vert_line (int x, int y1, int y2); static gboolean configure_event (GtkWidget * widget, GdkEventConfigure * event, void * user); - static gboolean expose_event (GtkWidget * widget, GdkEventExpose * event, void * user); +#ifdef USE_GTK3 + static gboolean draw_event (GtkWidget * widget, cairo_t * cr, void * user); +#else + static gboolean draw_event (GtkWidget * widget, GdkEventExpose * event, void * user); +#endif GtkWidget * area = nullptr; int width = 0, height = 0, stride = 0, image_size = 0; @@ -113,18 +119,35 @@ corner = image + stride + 1; } -void BlurScope::draw () +void BlurScope::draw_to_cairo (cairo_t * cr) { - if (! area || ! gtk_widget_get_window (area)) - return; - - cairo_t * cr = gdk_cairo_create (gtk_widget_get_window (area)); cairo_surface_t * surf = cairo_image_surface_create_for_data ((unsigned char *) image, CAIRO_FORMAT_RGB24, width, height, stride << 2); cairo_set_source_surface (cr, surf, 0, 0); cairo_paint (cr); cairo_surface_destroy (surf); +} + +void BlurScope::draw () +{ + if (! area || ! gtk_widget_get_window (area)) + return; + +#ifdef USE_GTK3 + GdkWindow * window = gtk_widget_get_window (area); + cairo_region_t * cr_region = cairo_region_create (); + + GdkDrawingContext * drawing_context = gdk_window_begin_draw_frame (window, cr_region); + cairo_t * cr = gdk_drawing_context_get_cairo_context (drawing_context); + draw_to_cairo (cr); + gdk_window_end_draw_frame (window, drawing_context); + + cairo_region_destroy (cr_region); +#else + cairo_t * cr = gdk_cairo_create (gtk_widget_get_window (area)); + draw_to_cairo (cr); cairo_destroy (cr); +#endif } gboolean BlurScope::configure_event (GtkWidget * widget, GdkEventConfigure * event, void * user) @@ -133,17 +156,25 @@ return true; } -gboolean BlurScope::expose_event (GtkWidget * widget, GdkEventExpose * event, void * user) +#ifdef USE_GTK3 +gboolean BlurScope::draw_event (GtkWidget * widget, cairo_t * cr, void * user) +{ + ((BlurScope *) user)->draw_to_cairo (cr); + return true; +} +#else +gboolean BlurScope::draw_event (GtkWidget * widget, GdkEventExpose * event, void * user) { ((BlurScope *) user)->draw (); return true; } +#endif void * BlurScope::get_gtk_widget () { area = gtk_drawing_area_new (); - g_signal_connect (area, "expose-event", (GCallback) expose_event, this); + g_signal_connect (area, AUDGUI_DRAW_SIGNAL, (GCallback) draw_event, this); g_signal_connect (area, "configure-event", (GCallback) configure_event, this); g_signal_connect (area, "destroy", (GCallback) gtk_widget_destroyed, & area); @@ -212,17 +243,44 @@ static void color_set_cb (GtkWidget * chooser) { +#ifdef USE_GTK3 + GdkRGBA rgba; + gtk_color_chooser_get_rgba ((GtkColorChooser *) chooser, & rgba); + + int red = round (rgba.red * 255); + int green = round (rgba.green * 255); + int blue = round (rgba.blue * 255); + bscope_color = (red << 16) | (green << 8) | blue; +#else GdkColor gdk_color; gtk_color_button_get_color ((GtkColorButton *) chooser, & gdk_color); bscope_color = ((gdk_color.red & 0xff00) << 8) | (gdk_color.green & 0xff00) | (gdk_color.blue >> 8); +#endif } static void /* GtkWidget */ * bscope_get_color_chooser () { - GdkColor gdk_color = {0, (uint16_t) ((bscope_color & 0xff0000) >> 8), - (uint16_t) (bscope_color & 0xff00), (uint16_t) ((bscope_color & 0xff) << 8)}; +#ifdef USE_GTK3 + GdkRGBA rgba = { + ((bscope_color & 0xff0000) >> 16) / 255.0, + ((bscope_color & 0xff00) >> 8) / 255.0, + (bscope_color & 0xff) / 255.0, + 1.0 + }; + + GtkWidget * chooser = gtk_color_button_new_with_rgba (& rgba); + gtk_color_chooser_set_use_alpha ((GtkColorChooser *) chooser, false); +#else + GdkColor gdk_color = { + 0, + (uint16_t) ((bscope_color & 0xff0000) >> 8), + (uint16_t) (bscope_color & 0xff00), + (uint16_t) ((bscope_color & 0xff) << 8) + }; + GtkWidget * chooser = gtk_color_button_new_with_color (& gdk_color); gtk_color_button_set_use_alpha ((GtkColorButton *) chooser, false); +#endif g_signal_connect (chooser, "color-set", (GCallback) color_set_cb, nullptr); diff -Nru audacious-plugins-4.1/src/cairo-spectrum/cairo-spectrum.cc audacious-plugins-4.3.1/src/cairo-spectrum/cairo-spectrum.cc --- audacious-plugins-4.1/src/cairo-spectrum/cairo-spectrum.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/cairo-spectrum/cairo-spectrum.cc 2023-04-29 20:17:32.000000000 +0000 @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -108,7 +109,9 @@ static void draw_visualizer (GtkWidget *widget, cairo_t *cr) { +G_GNUC_BEGIN_IGNORE_DEPRECATIONS auto & c = (gtk_widget_get_style (widget))->base[GTK_STATE_SELECTED]; +G_GNUC_END_IGNORE_DEPRECATIONS for (int i = 0; i < bands; i++) { @@ -136,6 +139,15 @@ return true; } +#ifdef USE_GTK3 +static gboolean draw_event (GtkWidget * widget, cairo_t * cr, GtkWidget * area) +{ + draw_background (widget, cr); + draw_visualizer (widget, cr); + + return true; +} +#else static gboolean draw_event (GtkWidget * widget) { cairo_t * cr = gdk_cairo_create (gtk_widget_get_window (widget)); @@ -146,13 +158,14 @@ cairo_destroy (cr); return true; } +#endif void * CairoSpectrum::get_gtk_widget () { GtkWidget *area = gtk_drawing_area_new(); spect_widget = area; - g_signal_connect(area, "expose-event", (GCallback) draw_event, nullptr); + g_signal_connect(area, AUDGUI_DRAW_SIGNAL, (GCallback) draw_event, nullptr); g_signal_connect(area, "configure-event", (GCallback) configure_event, nullptr); g_signal_connect(area, "destroy", (GCallback) gtk_widget_destroyed, & spect_widget); diff -Nru audacious-plugins-4.1/src/cdaudio/cdaudio-ng.cc audacious-plugins-4.3.1/src/cdaudio/cdaudio-ng.cc --- audacious-plugins-4.1/src/cdaudio/cdaudio-ng.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/cdaudio/cdaudio-ng.cc 2023-04-29 20:17:32.000000000 +0000 @@ -399,7 +399,6 @@ tuple.set_int (Tuple::Track, trackno); tuple.set_int (Tuple::Length, calculate_track_length (trackinfo[trackno].startlsn, trackinfo[trackno].endlsn)); - tuple.set_int (Tuple::Channels, 2); if (trackinfo[trackno].name) tuple.set_str (Tuple::Title, trackinfo[trackno].name); diff -Nru audacious-plugins-4.1/src/cdaudio/meson.build audacious-plugins-4.3.1/src/cdaudio/meson.build --- audacious-plugins-4.1/src/cdaudio/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/cdaudio/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -1,7 +1,19 @@ -shared_module('cdaudio-ng', - 'cdaudio-ng.cc', - dependencies: [audacious_dep, libcdio_dep, libcdio_cdda_dep, libcddb_dep], - name_prefix: '', - install: true, - install_dir: input_plugin_dir -) +libcdio_dep = dependency('libcdio', version: '>= 0.70', required: false) +libcdio_cdda_dep = dependency('libcdio_cdda', version: '>= 0.70', required: false) +libcddb_dep = dependency('libcddb', version: '>= 1.2.1', required: false) + + +have_cdaudio = libcdio_dep.found() and \ + libcdio_cdda_dep.found() and \ + libcddb_dep.found() + + +if have_cdaudio + shared_module('cdaudio-ng', + 'cdaudio-ng.cc', + dependencies: [audacious_dep, libcdio_dep, libcdio_cdda_dep, libcddb_dep], + name_prefix: '', + install: true, + install_dir: input_plugin_dir + ) +endif diff -Nru audacious-plugins-4.1/src/config.h.meson audacious-plugins-4.3.1/src/config.h.meson --- audacious-plugins-4.1/src/config.h.meson 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/config.h.meson 2023-04-29 20:17:32.000000000 +0000 @@ -7,6 +7,8 @@ #define PACKAGE_VERSION VERSION #define ICONV_CONST +#mesondefine HAVE_GETTEXT + #mesondefine INSTALL_BINDIR #mesondefine INSTALL_DATADIR #mesondefine INSTALL_PLUGINDIR @@ -16,11 +18,9 @@ #mesondefine USE_QT #mesondefine USE_GTK +#mesondefine USE_GTK3 #mesondefine USE_GTK_OR_QT -#mesondefine HAVE_FFMPEG -#mesondefine HAVE_LIBAV - #define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_32 #mesondefine FILEWRITER_MP3 @@ -32,5 +32,3 @@ #mesondefine HAVE_ADPLUG_NEMUOPL_H #mesondefine HAVE_ADPLUG_WEMUOPL_H #mesondefine HAVE_ADPLUG_KEMUOPL_H - -#mesondefine HAVE_SYS_SOUNDCARD_H diff -Nru audacious-plugins-4.1/src/console/Spc_Cpu.cc audacious-plugins-4.3.1/src/console/Spc_Cpu.cc --- audacious-plugins-4.1/src/console/Spc_Cpu.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/console/Spc_Cpu.cc 2023-04-29 20:17:32.000000000 +0000 @@ -493,11 +493,15 @@ { result = cpu_read_smp_reg( reg + r_t0out, time ); } - else // 1% + else if ( reg + (r_t0out + 0xF0 - 0x10000) < 0x100 ) // 1% { - assert( reg + (r_t0out + 0xF0 - 0x10000) < 0x100 ); result = cpu_read( reg + (r_t0out + 0xF0 - 0x10000), time ); } + else + { + // this branch would cause an assertion failure in the + // original. not really sure what to do here ... + } } } diff -Nru audacious-plugins-4.1/src/coreaudio/Makefile audacious-plugins-4.3.1/src/coreaudio/Makefile --- audacious-plugins-4.1/src/coreaudio/Makefile 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/coreaudio/Makefile 2023-04-29 20:17:32.000000000 +0000 @@ -10,4 +10,4 @@ LD = ${CXX} CPPFLAGS += -I../.. CXXFLAGS += ${PLUGIN_CFLAGS} -LIBS += -lm -framework CoreAudio +LIBS += -lm -framework AudioUnit -framework CoreAudio -framework Foundation diff -Nru audacious-plugins-4.1/src/coreaudio/audiodevice.h audacious-plugins-4.3.1/src/coreaudio/audiodevice.h --- audacious-plugins-4.1/src/coreaudio/audiodevice.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/coreaudio/audiodevice.h 2023-04-29 20:17:32.000000000 +0000 @@ -1,49 +1,49 @@ /* - File: AudioDevice.h + File: AudioDevice.h Adapted from the CAPlayThough example - Version: 1.2.2 - - Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple - Inc. ("Apple") in consideration of your agreement to the following - terms, and your use, installation, modification or redistribution of - this Apple software constitutes acceptance of these terms. If you do - not agree with these terms, please do not use, install, modify or - redistribute this Apple software. - - In consideration of your agreement to abide by the following terms, and - subject to these terms, Apple grants you a personal, non-exclusive - license, under Apple's copyrights in this original Apple software (the - "Apple Software"), to use, reproduce, modify and redistribute the Apple - Software, with or without modifications, in source and/or binary forms; - provided that if you redistribute the Apple Software in its entirety and - without modifications, you must retain this notice and the following - text and disclaimers in all such redistributions of the Apple Software. - Neither the name, trademarks, service marks or logos of Apple Inc. may - be used to endorse or promote products derived from the Apple Software - without specific prior written permission from Apple. Except as - expressly stated in this notice, no other rights or licenses, express or - implied, are granted by Apple herein, including but not limited to any - patent rights that may be infringed by your derivative works or by other - works in which the Apple Software may be incorporated. - - The Apple Software is provided by Apple on an "AS IS" basis. APPLE - MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION - THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS - FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND - OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. - - IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, - MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED - AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), - STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - + Version: 1.2.2 + + Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple + Inc. ("Apple") in consideration of your agreement to the following + terms, and your use, installation, modification or redistribution of + this Apple software constitutes acceptance of these terms. If you do + not agree with these terms, please do not use, install, modify or + redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and + subject to these terms, Apple grants you a personal, non-exclusive + license, under Apple's copyrights in this original Apple software (the + "Apple Software"), to use, reproduce, modify and redistribute the Apple + Software, with or without modifications, in source and/or binary forms; + provided that if you redistribute the Apple Software in its entirety and + without modifications, you must retain this notice and the following + text and disclaimers in all such redistributions of the Apple Software. + Neither the name, trademarks, service marks or logos of Apple Inc. may + be used to endorse or promote products derived from the Apple Software + without specific prior written permission from Apple. Except as + expressly stated in this notice, no other rights or licenses, express or + implied, are granted by Apple herein, including but not limited to any + patent rights that may be infringed by your derivative works or by other + works in which the Apple Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE + MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION + THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND + OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, + MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED + AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), + STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + Copyright (C) 2013 Apple Inc. All Rights Reserved. Copyright (C) 2017 René J.V. Bertin All Rights Reserved. - + */ #ifndef __AudioDevice_h__ @@ -53,6 +53,10 @@ #include #include +#if !defined(MAC_OS_VERSION_12_0) || (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_VERSION_12_0) +#define kAudioObjectPropertyElementMain kAudioObjectPropertyElementMaster +#endif + #ifndef DEPRECATED_LISTENER_API # if !(defined(MAC_OS_X_VERSION_10_11) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_11) # define DEPRECATED_LISTENER_API 1 diff -Nru audacious-plugins-4.1/src/coreaudio/audiodevice.mm audacious-plugins-4.3.1/src/coreaudio/audiodevice.mm --- audacious-plugins-4.1/src/coreaudio/audiodevice.mm 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/coreaudio/audiodevice.mm 2023-04-29 20:17:32.000000000 +0000 @@ -89,7 +89,7 @@ (unsigned int)inDevice, inClientData ]; AudioObjectPropertyAddress theAddress = { inPropertyID, forInput ? kAudioDevicePropertyScopeInput : kAudioDevicePropertyScopeOutput, - kAudioObjectPropertyElementMaster + kAudioObjectPropertyElementMain }; switch (inPropertyID) { @@ -120,7 +120,7 @@ AudioObjectPropertyAddress theAddress = { kAudioHardwarePropertyDefaultOutputDevice, kAudioObjectPropertyScopeGlobal, - kAudioObjectPropertyElementMaster + kAudioObjectPropertyElementMain }; if (AudioObjectGetPropertyData(kAudioObjectSystemObject, &theAddress, 0, NULL, &propsize, &defaultDeviceID) == noErr) { if (dev->ID() != defaultDeviceID) { @@ -188,7 +188,7 @@ AudioObjectPropertyAddress theAddress = { kAudioHardwarePropertyDefaultOutputDevice, kAudioObjectPropertyScopeGlobal, - kAudioObjectPropertyElementMaster + kAudioObjectPropertyElementMain }; if (AudioObjectGetPropertyData(kAudioObjectSystemObject, &theAddress, 0, NULL, &propsize, &defaultDeviceID) == noErr) { if (dev->ID() != defaultDeviceID) { @@ -234,7 +234,7 @@ AudioObjectPropertyAddress theAddress = { kAudioDevicePropertySafetyOffset, mForInput ? kAudioDevicePropertyScopeInput : kAudioDevicePropertyScopeOutput, - kAudioObjectPropertyElementMaster + kAudioObjectPropertyElementMain }; // channel verify_noerr(AudioObjectGetPropertyData(mID, &theAddress, 0, NULL, &propsize, &mSafetyOffset)); @@ -259,7 +259,7 @@ #else AudioObjectPropertyAddress prop = { kAudioDevicePropertyActualSampleRate, kAudioObjectPropertyScopeGlobal, - kAudioObjectPropertyElementMaster + kAudioObjectPropertyElementMain }; if ((err = AudioObjectAddPropertyListener(mID, &prop, lProc, this)) != noErr) { AUDERR ("Couldn't register property listener for actual sample rate: %d (%s)\n", err, OSTStr(err)); @@ -428,7 +428,7 @@ #else AudioObjectPropertyAddress prop = { kAudioDevicePropertyActualSampleRate, kAudioObjectPropertyScopeGlobal, - kAudioObjectPropertyElementMaster + kAudioObjectPropertyElementMain }; verify_noerr(AudioObjectRemovePropertyListener(mID, &prop, listenerProc, this)); prop.mElement = kAudioDevicePropertyNominalSampleRate; @@ -449,7 +449,7 @@ UInt32 propsize = sizeof(UInt32); AudioObjectPropertyAddress theAddress = { kAudioDevicePropertyBufferFrameSize, mForInput ? kAudioDevicePropertyScopeInput : kAudioDevicePropertyScopeOutput, - kAudioObjectPropertyElementMaster + kAudioObjectPropertyElementMain }; // channel verify_noerr(AudioObjectSetPropertyData(mID, &theAddress, 0, NULL, propsize, &size)); @@ -462,7 +462,7 @@ OSStatus err; AudioObjectPropertyAddress theAddress = { kAudioDevicePropertyNominalSampleRate, mForInput ? kAudioDevicePropertyScopeInput : kAudioDevicePropertyScopeOutput, - kAudioObjectPropertyElementMaster + kAudioObjectPropertyElementMain }; err = AudioObjectGetPropertyData(mID, &theAddress, 0, NULL, &size, &sampleRate); if (err == noErr) { @@ -558,7 +558,7 @@ if (sampleRate2 != currentNominalSR || force) { AudioObjectPropertyAddress theAddress = { kAudioDevicePropertyNominalSampleRate, mForInput ? kAudioDevicePropertyScopeInput : kAudioDevicePropertyScopeOutput, - kAudioObjectPropertyElementMaster + kAudioObjectPropertyElementMain }; err = AudioObjectSetPropertyData(mID, &theAddress, 0, NULL, size, &sampleRate2); if (err == noErr) { @@ -584,7 +584,7 @@ listenerSilentFor = 3; AudioObjectPropertyAddress theAddress = { kAudioDevicePropertyNominalSampleRate, mForInput ? kAudioDevicePropertyScopeInput : kAudioDevicePropertyScopeOutput, - kAudioObjectPropertyElementMaster + kAudioObjectPropertyElementMain }; err = AudioObjectSetPropertyData(mID, &theAddress, 0, NULL, size, &sampleRate); if (err == noErr) { @@ -601,7 +601,7 @@ listenerSilentFor = 1; AudioObjectPropertyAddress theAddress = { kAudioDevicePropertyStreamFormat, mForInput ? kAudioDevicePropertyScopeInput : kAudioDevicePropertyScopeOutput, - kAudioObjectPropertyElementMaster + kAudioObjectPropertyElementMain }; err = AudioObjectSetPropertyData(mID, &theAddress, 0, NULL, size, desc); if (err == noErr) { @@ -619,7 +619,7 @@ } propertyAddress->mSelector = property; propertyAddress->mScope = (mForInput) ? kAudioDevicePropertyScopeInput : kAudioDevicePropertyScopeOutput; - propertyAddress->mElement = kAudioObjectPropertyElementMaster; + propertyAddress->mElement = kAudioObjectPropertyElementMain; return AudioObjectGetPropertyDataSize(mID, propertyAddress, 0, NULL, size); } @@ -658,7 +658,7 @@ } AudioObjectPropertyAddress theAddress = { kAudioDevicePropertyDeviceName, mForInput ? kAudioDevicePropertyScopeInput : kAudioDevicePropertyScopeOutput, - kAudioObjectPropertyElementMaster + kAudioObjectPropertyElementMain }; // channel verify_noerr(AudioObjectGetPropertyData(mID, &theAddress, 0, NULL, &maxlen, buf)); @@ -688,7 +688,7 @@ AudioObjectPropertyAddress theAddress = { forInput ? kAudioHardwarePropertyDefaultInputDevice : kAudioHardwarePropertyDefaultOutputDevice, kAudioObjectPropertyScopeGlobal, - kAudioObjectPropertyElementMaster + kAudioObjectPropertyElementMain }; err = AudioObjectGetPropertyData(kAudioObjectSystemObject, &theAddress, 0, NULL, &propsize, &defaultDeviceID); if (err == noErr) { diff -Nru audacious-plugins-4.1/src/coreaudio/coreaudio.cc audacious-plugins-4.3.1/src/coreaudio/coreaudio.cc --- audacious-plugins-4.1/src/coreaudio/coreaudio.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/coreaudio/coreaudio.cc 2023-04-29 20:17:32.000000000 +0000 @@ -144,7 +144,6 @@ static struct timeval block_time = {0, 0}; static AudioComponent output_comp = nullptr; -// static AudioComponentInstance output_instance = nullptr; static AudioUnit output_instance = nullptr; static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; @@ -223,11 +222,11 @@ AudioObjectPropertyAddress prop = { kAudioHardwarePropertyDefaultOutputDevice, kAudioObjectPropertyScopeGlobal, - kAudioObjectPropertyElementMaster }; + kAudioObjectPropertyElementMain }; UInt32 size = sizeof(AudioObjectID); AudioObjectID defaultOutputDeviceID; - err = AudioObjectGetPropertyData(kAudioObjectSystemObject, &prop, 0, NULL, &size, &defaultOutputDeviceID); + err = AudioObjectGetPropertyData(kAudioObjectSystemObject, &prop, 0, nullptr, &size, &defaultOutputDeviceID); if (err == noErr) { if (coreAudioDevice) { @@ -237,7 +236,7 @@ coreAudioDevice = nullptr; } coreAudioDevice = AudioDevice::GetDevice(defaultOutputDeviceID, false, coreAudioDevice, true); - if (coreAudioDevice != NULL) + if (coreAudioDevice != nullptr) { coreAudioDevice->installDefaultDeviceChangeHandler(callDefaultDeviceChangeHandler, static_cast(this)); coreAudioDevice->setDefaultDevice(true); @@ -458,6 +457,8 @@ return 0; } + set_volume (get_volume ()); + bool exclusive = aud_get_bool ("coreaudio", "exclusive_mode"); if (exclusive) { @@ -467,7 +468,7 @@ prop.mSelector = kAudioDevicePropertyHogMode; prop.mScope = kAudioObjectPropertyScopeGlobal; - prop.mElement = kAudioObjectPropertyElementMaster; + prop.mElement = kAudioObjectPropertyElementMain; OSStatus result = AudioObjectSetPropertyData (kAudioObjectSystemObject, & prop, 0, nullptr, sizeof hog_mode, & hog_mode); if (result != noErr) @@ -515,7 +516,7 @@ prop.mSelector = kAudioDevicePropertyHogMode; prop.mScope = kAudioObjectPropertyScopeGlobal; - prop.mElement = kAudioObjectPropertyElementMaster; + prop.mElement = kAudioObjectPropertyElementMain; OSStatus err = AudioObjectSetPropertyData (kAudioObjectSystemObject, & prop, 0, nullptr, sizeof hog_mode, & hog_mode); if (err != noErr) diff -Nru audacious-plugins-4.1/src/coreaudio/meson.build audacious-plugins-4.3.1/src/coreaudio/meson.build --- audacious-plugins-4.1/src/coreaudio/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/coreaudio/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -1,10 +1,14 @@ shared_module('coreaudio', 'audiodevice.mm', 'coreaudio.cc', - dependencies: [audacious_dep], + dependencies: [audacious_dep, math_dep], name_prefix: '', objcpp_args: '-std=c++11', - link_args: ['-framework', 'CoreAudio'], + link_args: [ + '-framework', 'AudioUnit', + '-framework', 'CoreAudio', + '-framework', 'Foundation' + ], install: true, install_dir: output_plugin_dir ) diff -Nru audacious-plugins-4.1/src/delete-files/delete-files.cc audacious-plugins-4.3.1/src/delete-files/delete-files.cc --- audacious-plugins-4.1/src/delete-files/delete-files.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/delete-files/delete-files.cc 2023-04-29 20:17:32.000000000 +0000 @@ -228,13 +228,14 @@ qdialog->setAttribute (Qt::WA_DeleteOnClose); qdialog->setIcon (QMessageBox::Question); qdialog->setWindowTitle (_("Delete Files")); + qdialog->setWindowRole ("message"); qdialog->setText ((const char *) prompt); auto remove = new QPushButton (action, qdialog); auto cancel = new QPushButton (_("Cancel"), qdialog); - remove->setIcon (audqt::get_icon (icon)); - cancel->setIcon (audqt::get_icon ("process-stop")); + remove->setIcon (QIcon::fromTheme (icon)); + cancel->setIcon (QIcon::fromTheme ("process-stop")); qdialog->addButton (remove, QMessageBox::AcceptRole); qdialog->addButton (cancel, QMessageBox::RejectRole); diff -Nru audacious-plugins-4.1/src/ffaudio/ffaudio-core.cc audacious-plugins-4.3.1/src/ffaudio/ffaudio-core.cc --- audacious-plugins-4.1/src/ffaudio/ffaudio-core.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/ffaudio/ffaudio-core.cc 2023-04-29 20:17:32.000000000 +0000 @@ -23,6 +23,7 @@ #include "ffaudio-stdinc.h" +#include #include #include @@ -31,11 +32,11 @@ #include #include -#if CHECK_LIBAVFORMAT_VERSION (57, 33, 100, 57, 5, 0) +#if CHECK_LIBAVFORMAT_VERSION (57, 33, 100) #define ALLOC_CONTEXT 1 #endif -#if CHECK_LIBAVCODEC_VERSION (57, 37, 100, 57, 16, 0) +#if CHECK_LIBAVCODEC_VERSION (57, 37, 100) #define SEND_PACKET 1 #endif @@ -88,6 +89,12 @@ #else ptr = cinfo.stream->codec; #endif + +#if CHECK_LIBAVCODEC_VERSION(58, 9, 100) + ptr->pkt_timebase = cinfo.stream->time_base; +#else + av_codec_set_pkt_timebase (ptr, cinfo.stream->time_base); +#endif } #ifdef ALLOC_CONTEXT @@ -97,42 +104,54 @@ #endif }; -struct ScopedPacket : public AVPacket +struct ScopedPacket { - ScopedPacket () : AVPacket () - { av_init_packet (this); } + AVPacket * ptr; + AVPacket * operator-> () { return ptr; } + +#if CHECK_LIBAVCODEC_VERSION(57, 12, 100) + ScopedPacket () { ptr = av_packet_alloc (); } + ~ScopedPacket () { av_packet_free (& ptr); } -#if CHECK_LIBAVCODEC_VERSION (55, 25, 100, 55, 16, 0) - ~ScopedPacket () { av_packet_unref (this); } + void clear () + { + av_packet_free (& ptr); + ptr = av_packet_alloc (); + } #else - ~ScopedPacket () { av_free_packet (this); } + ScopedPacket () + { + ptr = new AVPacket (); + av_init_packet (ptr); + } + + ~ScopedPacket () + { + av_packet_unref (ptr); + delete ptr; + } + + void clear () + { + av_packet_unref (ptr); + * ptr = AVPacket (); + av_init_packet (ptr); + } #endif }; struct ScopedFrame { -#if CHECK_LIBAVCODEC_VERSION (55, 45, 101, 55, 28, 1) AVFrame * ptr = av_frame_alloc (); -#else - AVFrame * ptr = avcodec_alloc_frame (); -#endif - AVFrame * operator-> () { return ptr; } - -#if CHECK_LIBAVCODEC_VERSION (55, 45, 101, 55, 28, 1) ~ScopedFrame () { av_frame_free (& ptr); } -#elif CHECK_LIBAVCODEC_VERSION (54, 59, 100, 54, 28, 0) - ~ScopedFrame () { avcodec_free_frame (& ptr); } -#else - ~ScopedFrame () { av_free (ptr); } -#endif }; static SimpleHash extension_dict; static void create_extension_dict (); -#if ! CHECK_LIBAVCODEC_VERSION(58, 9, 100, 255, 255, 255) +#if ! CHECK_LIBAVCODEC_VERSION(58, 9, 100) static int lockmgr (void * * mutexp, enum AVLockOp op) { switch (op) @@ -191,10 +210,10 @@ bool FFaudio::init () { -#if ! CHECK_LIBAVFORMAT_VERSION(58, 9, 100, 255, 255, 255) +#if ! CHECK_LIBAVFORMAT_VERSION(58, 9, 100) av_register_all(); #endif -#if ! CHECK_LIBAVCODEC_VERSION(58, 9, 100, 255, 255, 255) +#if ! CHECK_LIBAVCODEC_VERSION(58, 9, 100) av_lockmgr_register (lockmgr); #endif @@ -209,7 +228,7 @@ { extension_dict.clear (); -#if ! CHECK_LIBAVCODEC_VERSION(58, 9, 100, 255, 255, 255) +#if ! CHECK_LIBAVCODEC_VERSION(58, 9, 100) av_lockmgr_register (nullptr); #endif } @@ -233,7 +252,7 @@ static void create_extension_dict () { AVInputFormat * f; -#if CHECK_LIBAVFORMAT_VERSION(58, 9, 100, 255, 255, 255) +#if CHECK_LIBAVFORMAT_VERSION(58, 9, 100) void * iter = nullptr; while ((f = const_cast (av_demuxer_iterate (& iter)))) #else @@ -288,7 +307,7 @@ AVProbeData d = {name, buf, filled}; score = target; - f = av_probe_input_format2 (& d, true, & score); + f = (AVInputFormat *) av_probe_input_format2 (& d, true, & score); if (f) break; @@ -361,7 +380,7 @@ #endif if (stream && stream->codecpar && stream->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) { - AVCodec * codec = avcodec_find_decoder (stream->codecpar->codec_id); + AVCodec * codec = (AVCodec *) avcodec_find_decoder (stream->codecpar->codec_id); if (codec) { @@ -432,8 +451,10 @@ if (! find_codec (ic.get (), & cinfo)) return false; - tuple.set_int (Tuple::Length, ic->duration / 1000); - tuple.set_int (Tuple::Bitrate, ic->bit_rate / 1000); + if (ic->duration > 0 && ic->duration / 1000 <= INT_MAX) + tuple.set_int (Tuple::Length, ic->duration / 1000); + if (ic->bit_rate > 0 && ic->bit_rate / 1000 <= INT_MAX) + tuple.set_int (Tuple::Bitrate, ic->bit_rate / 1000); if (cinfo.codec->long_name) tuple.set_str (Tuple::Codec, cinfo.codec->long_name); @@ -446,7 +467,6 @@ if (! file.fseek (0, VFS_SEEK_SET)) audtag::read_tag (file, tuple, image); -#if CHECK_LIBAVFORMAT_VERSION (54, 2, 100, 54, 2, 0) if (image && ! image->len ()) { for (unsigned i = 0; i < ic->nb_streams; i ++) @@ -459,7 +479,6 @@ } } } -#endif return true; } @@ -519,9 +538,15 @@ if (! convert_format (context->sample_fmt, out_fmt, planar)) return false; +#if CHECK_LIBAVCODEC_VERSION(59, 37, 100) + int channels = context->ch_layout.nb_channels; +#else + int channels = context->channels; +#endif + /* Open audio output */ set_stream_bitrate(ic->bit_rate); - open_audio(out_fmt, context->sample_rate, context->channels); + open_audio(out_fmt, context->sample_rate, channels); int errcount = 0; bool eof = false; @@ -543,12 +568,16 @@ /* Read next frame (or more) of data */ ScopedPacket pkt; - int ret = LOG (av_read_frame, ic.get (), & pkt); + int ret = LOG (av_read_frame, ic.get (), pkt.ptr); if (ret < 0) { if (ret == (int) AVERROR_EOF) + { + /* On EOF, send an empty packet to "flush" the decoder */ + pkt.clear (); eof = true; + } else if (++ errcount > 4) return false; else @@ -559,24 +588,17 @@ errcount = 0; /* Ignore any other substreams */ - if (pkt.stream_index != cinfo.stream_idx) + if (pkt->stream_index != cinfo.stream_idx) continue; } /* Decode and play packet/frame */ - /* On EOF, send an empty packet to "flush" the decoder */ - /* Otherwise, make a mutable (shallow) copy of the real packet */ - AVPacket tmp; - if (eof) { - tmp = AVPacket (); - av_init_packet (& tmp); - } - else - tmp = pkt; - #ifdef SEND_PACKET - if ((ret = LOG (avcodec_send_packet, context.ptr, & tmp)) < 0) + if ((ret = LOG (avcodec_send_packet, context.ptr, pkt.ptr)) < 0) return false; /* defensive, errors not expected here */ +#else + /* Make a mutable (shallow) copy of the real packet */ + AVPacket tmp = * pkt.ptr; #endif while (! check_stop ()) @@ -605,7 +627,7 @@ } #endif - int size = FMT_SIZEOF (out_fmt) * context->channels * frame->nb_samples; + int size = FMT_SIZEOF (out_fmt) * channels * frame->nb_samples; if (planar) { @@ -613,7 +635,7 @@ buf.resize (size); audio_interlace ((const void * *) frame->data, out_fmt, - context->channels, buf.begin (), frame->nb_samples); + channels, buf.begin (), frame->nb_samples); write_audio (buf.begin (), size); } else @@ -678,6 +700,9 @@ /* WebM */ "webm", + /* Matroska */ + "mka", "mkv", + /* end of table */ nullptr }; @@ -685,5 +710,6 @@ const char * const FFaudio::mimes[] = { "application/ogg", "audio/mp4", + "audio/ogg", nullptr }; diff -Nru audacious-plugins-4.1/src/ffaudio/ffaudio-io.cc audacious-plugins-4.3.1/src/ffaudio/ffaudio-io.cc --- audacious-plugins-4.1/src/ffaudio/ffaudio-io.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/ffaudio/ffaudio-io.cc 2023-04-29 20:17:32.000000000 +0000 @@ -23,7 +23,8 @@ static int read_cb (void * file, unsigned char * buf, int size) { - return ((VFSFile *) file)->fread (buf, 1, size); + int ret = ((VFSFile *) file)->fread (buf, 1, size); + return (ret > 0) ? ret : AVERROR_EOF; } static int64_t seek_cb (void * file, int64_t offset, int whence) diff -Nru audacious-plugins-4.1/src/ffaudio/ffaudio-stdinc.h audacious-plugins-4.3.1/src/ffaudio/ffaudio-stdinc.h --- audacious-plugins-4.1/src/ffaudio/ffaudio-stdinc.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/ffaudio/ffaudio-stdinc.h 2023-04-29 20:17:32.000000000 +0000 @@ -28,19 +28,9 @@ #include } -/* FFmpeg and libav remain mostly compatible but have different version numbers. - * The first three numbers are the required FFmpeg version; the last three are for libav. */ -#ifdef HAVE_FFMPEG -#define CHECK_LIBAVCODEC_VERSION(a, b, c, a2, b2, c2) (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT (a, b, c)) -#define CHECK_LIBAVFORMAT_VERSION(a, b, c, a2, b2, c2) (LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT (a, b, c)) -#define CHECK_LIBAVUTIL_VERSION(a, b, c, a2, b2, c2) (LIBAVUTIL_VERSION_INT >= AV_VERSION_INT (a, b, c)) -#elif defined HAVE_LIBAV -#define CHECK_LIBAVCODEC_VERSION(a, b, c, a2, b2, c2) (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT (a2, b2, c2)) -#define CHECK_LIBAVFORMAT_VERSION(a, b, c, a2, b2, c2) (LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT (a2, b2, c2)) -#define CHECK_LIBAVUTIL_VERSION(a, b, c, a2, b2, c2) (LIBAVUTIL_VERSION_INT >= AV_VERSION_INT (a2, b2, c2)) -#else -#error Please define either HAVE_FFMPEG or HAVE_LIBAV -#endif +#define CHECK_LIBAVCODEC_VERSION(a, b, c) (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT (a, b, c)) +#define CHECK_LIBAVFORMAT_VERSION(a, b, c) (LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT (a, b, c)) +#define CHECK_LIBAVUTIL_VERSION(a, b, c) (LIBAVUTIL_VERSION_INT >= AV_VERSION_INT (a, b, c)) AVIOContext * io_context_new (VFSFile & file); void io_context_free (AVIOContext * context); diff -Nru audacious-plugins-4.1/src/ffaudio/meson.build audacious-plugins-4.3.1/src/ffaudio/meson.build --- audacious-plugins-4.1/src/ffaudio/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/ffaudio/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -1,21 +1,6 @@ -if get_option('ffaudio') == 'ffmpeg' - conf.set10('HAVE_FFMPEG', true) - - libavcodec_req = '>= 53.40.0' - libavformat_req = '>= 53.25.0' - libavutil_req = '>= 51.27.0' -else - conf.set10('HAVE_LIBAV', true) - - libavcodec_req = '>= 53.25.0' - libavformat_req = '>= 53.17.0' - libavutil_req = '>= 51.18.0' -endif - - -libavcodec_dep = dependency('libavcodec', version: libavcodec_req, required: false) -libavformat_dep = dependency('libavformat', version: libavformat_req, required: false) -libavutil_dep = dependency('libavutil', version: libavutil_req, required: false) +libavcodec_dep = dependency('libavcodec', version: '>= 56.60.100', required: false) +libavformat_dep = dependency('libavformat', version: '>= 56.40.101', required: false) +libavutil_dep = dependency('libavutil', version: '>= 54.31.100', required: false) have_ffaudio = libavcodec_dep.found() and \ diff -Nru audacious-plugins-4.1/src/filewriter/filewriter.cc audacious-plugins-4.3.1/src/filewriter/filewriter.cc --- audacious-plugins-4.1/src/filewriter/filewriter.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/filewriter/filewriter.cc 2023-04-29 20:17:32.000000000 +0000 @@ -427,22 +427,22 @@ }; static const ComboItem mp3_bitrates[] = { - ComboItem(N_("8 kbps"), 8), - ComboItem(N_("16 kbps"), 16), - ComboItem(N_("32 kbps"), 32), - ComboItem(N_("40 kbps"), 40), - ComboItem(N_("48 kbps"), 48), - ComboItem(N_("56 kbps"), 56), - ComboItem(N_("64 kbps"), 64), - ComboItem(N_("80 kbps"), 80), - ComboItem(N_("96 kbps"), 96), - ComboItem(N_("112 kbps"), 112), - ComboItem(N_("128 kbps"), 128), - ComboItem(N_("160 kbps"), 160), - ComboItem(N_("192 kbps"), 192), - ComboItem(N_("224 kbps"), 224), - ComboItem(N_("256 kbps"), 256), - ComboItem(N_("320 kbps"), 320) + ComboItem(N_("8 kbit/s"), 8), + ComboItem(N_("16 kbit/s"), 16), + ComboItem(N_("32 kbit/s"), 32), + ComboItem(N_("40 kbit/s"), 40), + ComboItem(N_("48 kbit/s"), 48), + ComboItem(N_("56 kbit/s"), 56), + ComboItem(N_("64 kbit/s"), 64), + ComboItem(N_("80 kbit/s"), 80), + ComboItem(N_("96 kbit/s"), 96), + ComboItem(N_("112 kbit/s"), 112), + ComboItem(N_("128 kbit/s"), 128), + ComboItem(N_("160 kbit/s"), 160), + ComboItem(N_("192 kbit/s"), 192), + ComboItem(N_("224 kbit/s"), 224), + ComboItem(N_("256 kbit/s"), 256), + ComboItem(N_("320 kbit/s"), 320) }; static const ComboItem mp3_modes[] = { diff -Nru audacious-plugins-4.1/src/filewriter/meson.build audacious-plugins-4.3.1/src/filewriter/meson.build --- audacious-plugins-4.1/src/filewriter/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/filewriter/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -34,9 +34,13 @@ if get_option('filewriter-mp3') - lame_dep = cxx.find_library('mp3lame', required: false) + lame_dep = dependency('lame', required: false) - if lame_dep.found() and cxx.has_header('lame/lame.h') + if not lame_dep.found() + lame_dep = cxx.find_library('mp3lame', has_headers: 'lame/lame.h', required: false) + endif + + if lame_dep.found() filewriter_deps += [lame_dep] filewriter_srcs += ['mp3.cc'] diff -Nru audacious-plugins-4.1/src/flac/flacng.h audacious-plugins-4.3.1/src/flac/flacng.h --- audacious-plugins-4.1/src/flac/flacng.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/flac/flacng.h 2023-04-29 20:17:32.000000000 +0000 @@ -99,6 +99,7 @@ void metadata_callback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data); /* tools.c */ +bool is_ogg_flac(VFSFile &file); bool read_metadata(FLAC__StreamDecoder* decoder, callback_info* info); #endif diff -Nru audacious-plugins-4.1/src/flac/metadata.cc audacious-plugins-4.3.1/src/flac/metadata.cc --- audacious-plugins-4.1/src/flac/metadata.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/flac/metadata.cc 2023-04-29 20:17:32.000000000 +0000 @@ -106,6 +106,9 @@ FLAC__StreamMetadata_VorbisComment_Entry entry; String val = tuple.get_str (field); + FLAC__metadata_object_vorbiscomment_remove_entries_matching(vc_block, + field_name); + if (! val) return; @@ -122,6 +125,9 @@ FLAC__StreamMetadata_VorbisComment_Entry entry; int val = tuple.get_int (field); + FLAC__metadata_object_vorbiscomment_remove_entries_matching(vc_block, + field_name); + if (val <= 0) return; @@ -134,11 +140,17 @@ bool FLACng::write_tuple(const char *filename, VFSFile &file, const Tuple &tuple) { + if (is_ogg_flac(file)) + { + AUDERR("Writing Ogg FLAC tags is not currently supported!\n"); + return false; + } + AUDDBG("Update song tuple.\n"); FLAC__Metadata_Iterator *iter; FLAC__Metadata_Chain *chain; - FLAC__StreamMetadata *vc_block; + FLAC__StreamMetadata *vc_block = nullptr; FLAC__Metadata_ChainStatus status; chain = FLAC__metadata_chain_new(); @@ -154,12 +166,16 @@ { if (FLAC__metadata_iterator_get_block_type(iter) == FLAC__METADATA_TYPE_VORBIS_COMMENT) { - FLAC__metadata_iterator_delete_block(iter, true); + vc_block = FLAC__metadata_iterator_get_block(iter); break; } } - vc_block = FLAC__metadata_object_new(FLAC__METADATA_TYPE_VORBIS_COMMENT); + if (!vc_block) + { + vc_block = FLAC__metadata_object_new(FLAC__METADATA_TYPE_VORBIS_COMMENT); + FLAC__metadata_iterator_insert_block_after(iter, vc_block); + } insert_str_tuple_to_vc(vc_block, tuple, Tuple::Title, "TITLE"); insert_str_tuple_to_vc(vc_block, tuple, Tuple::Artist, "ARTIST"); @@ -173,7 +189,8 @@ insert_int_tuple_to_vc(vc_block, tuple, Tuple::Year, "DATE"); insert_int_tuple_to_vc(vc_block, tuple, Tuple::Track, "TRACKNUMBER"); - FLAC__metadata_iterator_insert_block_after(iter, vc_block); + insert_str_tuple_to_vc(vc_block, tuple, Tuple::Publisher, "publisher"); + insert_str_tuple_to_vc(vc_block, tuple, Tuple::CatalogNum, "CATALOGNUMBER"); FLAC__metadata_iterator_delete(iter); FLAC__metadata_chain_sort_padding(chain); @@ -233,6 +250,8 @@ {"GENRE", Tuple::Genre}, {"DESCRIPTION", Tuple::Description}, {"musicbrainz_trackid", Tuple::MusicBrainzID}, + {"publisher", Tuple::Publisher}, + {"CATALOGNUMBER", Tuple::CatalogNum}, }; for (auto & tfield : tfields) @@ -275,7 +294,11 @@ chain = FLAC__metadata_chain_new(); - if (!FLAC__metadata_chain_read_with_callbacks(chain, &file, io_callbacks)) + auto metadata_chain_read = is_ogg_flac(file) ? + FLAC__metadata_chain_read_ogg_with_callbacks : + FLAC__metadata_chain_read_with_callbacks; + + if (!metadata_chain_read(chain, &file, io_callbacks)) goto ERR; iter = FLAC__metadata_iterator_new(); diff -Nru audacious-plugins-4.1/src/flac/plugin.cc audacious-plugins-4.3.1/src/flac/plugin.cc --- audacious-plugins-4.1/src/flac/plugin.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/flac/plugin.cc 2023-04-29 20:17:32.000000000 +0000 @@ -26,48 +26,63 @@ EXPORT FLACng aud_plugin_instance; -static FLAC__StreamDecoder *decoder; -static callback_info *cinfo; +using StreamDecoderPtr = SmartPtr; +static StreamDecoderPtr s_decoder, s_ogg_decoder; +static callback_info s_cinfo; bool FLACng::init() { - FLAC__StreamDecoderInitStatus ret; - /* Callback structure and decoder for main decoding loop */ - - cinfo = new callback_info; - - if ((decoder = FLAC__stream_decoder_new()) == nullptr) + auto flac_decoder = StreamDecoderPtr(FLAC__stream_decoder_new()); + if (!flac_decoder) { AUDERR("Could not create the main FLAC decoder instance!\n"); return false; } - if (FLAC__STREAM_DECODER_INIT_STATUS_OK != (ret = FLAC__stream_decoder_init_stream( - decoder, - read_callback, - seek_callback, - tell_callback, - length_callback, - eof_callback, - write_callback, - metadata_callback, - error_callback, - cinfo))) + auto ret1 = FLAC__stream_decoder_init_stream(flac_decoder.get(), + read_callback, seek_callback, tell_callback, length_callback, + eof_callback, write_callback, metadata_callback, error_callback, + &s_cinfo); + + if (ret1 != FLAC__STREAM_DECODER_INIT_STATUS_OK) { - AUDERR("Could not initialize the main FLAC decoder: %s(%d)\n", - FLAC__StreamDecoderInitStatusString[ret], ret); + AUDERR("Could not initialize the main FLAC decoder!\n"); return false; } - AUDDBG("Plugin initialized.\n"); + if (FLAC_API_SUPPORTS_OGG_FLAC) + { + auto ogg_flac_decoder = StreamDecoderPtr(FLAC__stream_decoder_new()); + if (!ogg_flac_decoder) + { + AUDERR("Could not create the Ogg FLAC decoder instance!\n"); + return false; + } + + auto ret2 = FLAC__stream_decoder_init_ogg_stream(ogg_flac_decoder.get(), + read_callback, seek_callback, tell_callback, length_callback, + eof_callback, write_callback, metadata_callback, error_callback, + &s_cinfo); + + if (ret2 != FLAC__STREAM_DECODER_INIT_STATUS_OK) + { + AUDERR("Could not initialize the Ogg FLAC decoder!\n"); + return false; + } + + s_ogg_decoder = std::move(ogg_flac_decoder); + } + + s_decoder = std::move(flac_decoder); + return true; } void FLACng::cleanup() { - FLAC__stream_decoder_delete(decoder); - delete cinfo; + s_decoder.clear(); + s_ogg_decoder.clear(); } bool FLACng::is_our_file(const char *filename, VFSFile &file) @@ -115,20 +130,34 @@ { Index play_buffer; bool error = false; + bool stream = (file.fsize() < 0); + bool _is_ogg_flac = is_ogg_flac(file); + auto tuple = stream ? get_playback_tuple() : Tuple(); + auto decoder = _is_ogg_flac && FLAC_API_SUPPORTS_OGG_FLAC + ? s_ogg_decoder.get() : s_decoder.get(); + + if (_is_ogg_flac && !FLAC_API_SUPPORTS_OGG_FLAC) + { + AUDWARN("Ogg FLAC file detected, but your FLAC library does not support " + "this format. Falling back to the main FLAC decoder.\n"); + } - cinfo->fd = &file; + s_cinfo.fd = &file; - if (read_metadata(decoder, cinfo) == false) + if (read_metadata(decoder, &s_cinfo) == false) { AUDERR("Could not prepare file for playing!\n"); error = true; - goto ERR_NO_CLOSE; + goto ERR; } play_buffer.resize(BUFFER_SIZE_BYTE); - set_stream_bitrate(cinfo->bitrate); - open_audio(SAMPLE_FMT(cinfo->bits_per_sample), cinfo->sample_rate, cinfo->channels); + if (stream && tuple.fetch_stream_info(file)) + set_playback_tuple(tuple.ref()); + + set_stream_bitrate(s_cinfo.bitrate); + open_audio(SAMPLE_FMT(s_cinfo.bits_per_sample), s_cinfo.sample_rate, s_cinfo.channels); while (FLAC__stream_decoder_get_state(decoder) != FLAC__STREAM_DECODER_END_OF_STREAM) { @@ -137,8 +166,20 @@ int seek_value = check_seek (); if (seek_value >= 0) - FLAC__stream_decoder_seek_absolute (decoder, (int64_t) - seek_value * cinfo->sample_rate / 1000); + { + uint64_t sample = (uint64_t) seek_value * s_cinfo.sample_rate / 1000; + + /* Avoid error when seeking to a sample >= total_samples */ + if (s_cinfo.total_samples > 0) + sample = aud::min(sample, s_cinfo.total_samples - 1); + + if (! FLAC__stream_decoder_seek_absolute(decoder, sample)) + { + AUDERR("Error while seeking!\n"); + error = true; + break; + } + } /* Try to decode a single frame of audio */ if (FLAC__stream_decoder_process_single(decoder) == false) @@ -148,20 +189,24 @@ break; } - squeeze_audio(cinfo->output_buffer.begin(), play_buffer.begin(), - cinfo->buffer_used, cinfo->bits_per_sample); - write_audio(play_buffer.begin(), cinfo->buffer_used * - SAMPLE_SIZE(cinfo->bits_per_sample)); + if (stream && tuple.fetch_stream_info(file)) + set_playback_tuple(tuple.ref()); + + squeeze_audio(s_cinfo.output_buffer.begin(), play_buffer.begin(), + s_cinfo.buffer_used, s_cinfo.bits_per_sample); + write_audio(play_buffer.begin(), s_cinfo.buffer_used * + SAMPLE_SIZE(s_cinfo.bits_per_sample)); - cinfo->reset(); + s_cinfo.reset(); } -ERR_NO_CLOSE: - cinfo->reset(); +ERR: + s_cinfo.reset(); if (FLAC__stream_decoder_flush(decoder) == false) AUDERR("Could not flush decoder state!\n"); + s_cinfo = callback_info(); return ! error; } @@ -172,4 +217,5 @@ const char *const FLACng::exts[] = { "flac", "fla", nullptr }; -const char *const FLACng::mimes[] = { "audio/flac", "audio/x-flac", nullptr }; +const char *const FLACng::mimes[] = { "audio/flac", "audio/x-flac", "audio/ogg", + "application/ogg", nullptr }; diff -Nru audacious-plugins-4.1/src/flac/seekable_stream_callbacks.cc audacious-plugins-4.3.1/src/flac/seekable_stream_callbacks.cc --- audacious-plugins-4.1/src/flac/seekable_stream_callbacks.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/flac/seekable_stream_callbacks.cc 2023-04-29 20:17:32.000000000 +0000 @@ -150,7 +150,7 @@ if (metadata->type == FLAC__METADATA_TYPE_STREAMINFO) { info->total_samples = metadata->data.stream_info.total_samples; - AUDDBG("total_total_samples=%ld\n", (long) metadata->data.stream_info.total_samples); + AUDDBG("total_samples=%ld\n", (long) metadata->data.stream_info.total_samples); info->bits_per_sample = metadata->data.stream_info.bits_per_sample; AUDDBG("bits_per_sample=%d\n", metadata->data.stream_info.bits_per_sample); diff -Nru audacious-plugins-4.1/src/flac/tools.cc audacious-plugins-4.3.1/src/flac/tools.cc --- audacious-plugins-4.1/src/flac/tools.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/flac/tools.cc 2023-04-29 20:17:32.000000000 +0000 @@ -25,6 +25,13 @@ #include "flacng.h" +bool is_ogg_flac(VFSFile &file) +{ + /* TODO: detect Ogg FLAC by content too (not just MIME type) */ + String mime = file.get_metadata("content-type"); + return (mime && strstr(mime, "ogg")); +} + bool read_metadata(FLAC__StreamDecoder *decoder, callback_info *info) { FLAC__StreamDecoderState ret; diff -Nru audacious-plugins-4.1/src/glspectrum/gl-spectrum.cc audacious-plugins-4.3.1/src/glspectrum/gl-spectrum.cc --- audacious-plugins-4.1/src/glspectrum/gl-spectrum.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/glspectrum/gl-spectrum.cc 2023-04-29 20:17:32.000000000 +0000 @@ -26,6 +26,7 @@ #include #include +#include #include #include @@ -246,7 +247,11 @@ glPopMatrix (); } +#ifdef USE_GTK3 +static gboolean draw_cb (GtkWidget * widget, cairo_t * cr) +#else static gboolean draw_cb (GtkWidget * widget) +#endif { #ifdef GDK_WINDOWING_X11 if (! s_context) @@ -417,13 +422,14 @@ s_widget = gtk_drawing_area_new (); - g_signal_connect (s_widget, "expose-event", (GCallback) draw_cb, nullptr); + g_signal_connect (s_widget, AUDGUI_DRAW_SIGNAL, (GCallback) draw_cb, nullptr); g_signal_connect (s_widget, "realize", (GCallback) widget_realized, nullptr); g_signal_connect (s_widget, "destroy", (GCallback) widget_destroyed, nullptr); g_signal_connect (s_widget, "configure-event", (GCallback) widget_resize, nullptr); - /* Disable GTK double buffering */ +#ifndef USE_GTK3 gtk_widget_set_double_buffered (s_widget, false); +#endif return s_widget; } diff -Nru audacious-plugins-4.1/src/gtkui/columns.cc audacious-plugins-4.3.1/src/gtkui/columns.cc --- audacious-plugins-4.1/src/gtkui/columns.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/gtkui/columns.cc 2023-04-29 20:17:32.000000000 +0000 @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -32,21 +33,23 @@ #include "ui_playlist_widget.h" const char * const pw_col_names[PW_COLS] = { - N_("Entry number"), + N_("Entry Number"), N_("Title"), N_("Artist"), N_("Year"), N_("Album"), - N_("Album artist"), + N_("Album Artist"), N_("Track"), N_("Genre"), - N_("Queue position"), + N_("Queue Position"), N_("Length"), - N_("File path"), - N_("File name"), - N_("Custom title"), + N_("File Path"), + N_("File Name"), + N_("Custom Title"), N_("Bitrate"), - N_("Comment") + N_("Comment"), + N_("Publisher"), + N_("Catalog Number") }; int pw_num_cols; @@ -68,7 +71,9 @@ "filename", "custom", "bitrate", - "comment" + "comment", + "publisher", + "catalog-number" }; static const int pw_default_widths[PW_COLS] = { @@ -86,7 +91,9 @@ 275, // filename 275, // custom title 10, // bitrate - 275 // comment + 275, // comment + 175, // publisher + 75 // catalog number }; void pw_col_init () @@ -301,7 +308,7 @@ avail.append (i, false); } - GtkWidget * hbox = gtk_hbox_new (false, 6); + GtkWidget * hbox = audgui_hbox_new (6); gtk_widget_set_size_request (hbox, -1, audgui_get_dpi () * 5 / 4); GtkWidget * scroll = gtk_scrolled_window_new (nullptr, nullptr); @@ -315,7 +322,7 @@ audgui_list_add_column (avail_list, _("Available columns"), 0, G_TYPE_STRING, -1); gtk_container_add ((GtkContainer *) scroll, avail_list); - GtkWidget * vbox = gtk_vbox_new (false, 6); + GtkWidget * vbox = audgui_vbox_new (6); gtk_box_pack_start ((GtkBox *) hbox, vbox, false, false, 0); GtkWidget * button = gtk_button_new (); diff -Nru audacious-plugins-4.1/src/gtkui/gtkui.h audacious-plugins-4.3.1/src/gtkui/gtkui.h --- audacious-plugins-4.1/src/gtkui/gtkui.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/gtkui/gtkui.h 2023-04-29 20:17:32.000000000 +0000 @@ -42,9 +42,10 @@ void show_hide_infoarea_art (); void show_hide_infoarea_vis (); void show_hide_statusbar (); -void popup_menu_rclick (unsigned button, uint32_t time); -void popup_menu_tab (unsigned button, uint32_t time, Playlist playlist); +void popup_menu_rclick (const GdkEvent * event); +void popup_menu_tab (const GdkEvent * event, Playlist playlist); void activate_search_tool (); void activate_playlist_manager (); +void update_toolbar_icons (); #endif diff -Nru audacious-plugins-4.1/src/gtkui/layout.cc audacious-plugins-4.3.1/src/gtkui/layout.cc --- audacious-plugins-4.1/src/gtkui/layout.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/gtkui/layout.cc 2023-04-29 20:17:32.000000000 +0000 @@ -26,6 +26,7 @@ #include #include #include +#include #include #include "layout.h" @@ -98,8 +99,9 @@ GtkWidget * layout_new () { g_return_val_if_fail (! layout, nullptr); - layout = gtk_alignment_new (0, 0, 1, 1); - gtk_alignment_set_padding ((GtkAlignment *) layout, 3, 3, 3, 3); + layout = gtk_frame_new (nullptr); + gtk_frame_set_shadow_type ((GtkFrame *) layout, GTK_SHADOW_NONE); + gtk_container_set_border_width ((GtkContainer *) layout, 3); NULL_ON_DESTROY (layout); return layout; } @@ -179,7 +181,12 @@ } gtk_widget_show_all (menu); + +#ifdef USE_GTK3 + gtk_menu_popup_at_pointer ((GtkMenu *) menu, (const GdkEvent *) event); +#else gtk_menu_popup ((GtkMenu *) menu, nullptr, nullptr, nullptr, nullptr, event->button, event->time); +#endif return true; } @@ -188,7 +195,7 @@ { g_return_val_if_fail (widget && name, nullptr); - GtkWidget * vbox = gtk_vbox_new (false, 2); + GtkWidget * vbox = audgui_vbox_new (2); GtkWidget * ebox = gtk_event_box_new (); gtk_box_pack_start ((GtkBox *) vbox, ebox, false, false, 0); @@ -198,9 +205,14 @@ GtkWidget * label = gtk_label_new (nullptr); CharPtr markup (g_markup_printf_escaped ("%s", name)); gtk_label_set_markup ((GtkLabel *) label, markup); + +#ifdef USE_GTK3 + gtk_widget_set_halign (label, GTK_ALIGN_START); +#else gtk_misc_set_alignment ((GtkMisc *) label, 0, 0); - gtk_container_add ((GtkContainer *) ebox, label); +#endif + gtk_container_add ((GtkContainer *) ebox, label); gtk_box_pack_start ((GtkBox *) vbox, widget, true, true, 0); gtk_widget_show_all (vbox); @@ -228,10 +240,13 @@ static GtkWidget * paned_new (bool vertical, bool after, int w, int h) { - GtkWidget * paned = vertical ? gtk_vpaned_new () : gtk_hpaned_new (); + GtkWidget * paned = audgui_paned_new (vertical ? GTK_ORIENTATION_VERTICAL : + GTK_ORIENTATION_HORIZONTAL); - GtkWidget * mine = gtk_alignment_new (0, 0, 1, 1); - GtkWidget * next = gtk_alignment_new (0, 0, 1, 1); + GtkWidget * mine = gtk_frame_new (nullptr); + GtkWidget * next = gtk_frame_new (nullptr); + gtk_frame_set_shadow_type ((GtkFrame *) mine, GTK_SHADOW_NONE); + gtk_frame_set_shadow_type ((GtkFrame *) next, GTK_SHADOW_NONE); gtk_paned_pack1 ((GtkPaned *) paned, after ? next : mine, after, false); gtk_paned_pack2 ((GtkPaned *) paned, after ? mine : next, ! after, false); @@ -342,6 +357,7 @@ NULL_ON_DESTROY (item->window); gtk_window_set_title ((GtkWindow *) item->window, item->name); + gtk_window_set_role ((GtkWindow *) item->window, "plugin"); gtk_container_set_border_width ((GtkContainer *) item->window, 2); g_signal_connect_swapped (item->window, "delete-event", (GCallback) diff -Nru audacious-plugins-4.1/src/gtkui/settings.cc audacious-plugins-4.3.1/src/gtkui/settings.cc --- audacious-plugins-4.1/src/gtkui/settings.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/gtkui/settings.cc 2023-04-29 20:17:32.000000000 +0000 @@ -44,6 +44,8 @@ WidgetCheck (N_("Show column headers"), WidgetBool ("gtkui", "playlist_headers", redisplay_playlists)), WidgetLabel (N_("Miscellaneous")), + WidgetCheck (N_("Use symbolic icons in toolbar"), + WidgetBool ("gtkui", "symbolic_icons", update_toolbar_icons)), WidgetCheck (N_("Scroll on song change"), WidgetBool ("gtkui", "autoscroll")) }; diff -Nru audacious-plugins-4.1/src/gtkui/ui_gtk.cc audacious-plugins-4.3.1/src/gtkui/ui_gtk.cc --- audacious-plugins-4.1/src/gtkui/ui_gtk.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/gtkui/ui_gtk.cc 2023-04-29 20:17:32.000000000 +0000 @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -58,6 +59,12 @@ "playlist_headers", "TRUE", "show_remaining_time", "FALSE", +#ifdef USE_GTK3 + "symbolic_icons", "TRUE", +#else + "symbolic_icons", "FALSE", +#endif + "player_x", "-1000", "player_y", "-1000", "player_width", "768", @@ -126,8 +133,9 @@ static GtkWidget * window, * vbox_outer, * menu_box, * menu, * toolbar, * vbox, * infoarea, * statusbar; -static GtkToolItem * menu_button, * search_button, * button_play, * button_stop, - * button_record, * button_shuffle, * button_repeat; +static GtkToolItem * menu_button, * search_button, * button_open, * button_add, + * button_prev, * button_play, * button_stop, * button_next, * button_record, + * button_repeat, * button_shuffle; static GtkWidget * slider, * label_time; static GtkWidget * menu_main, * menu_rclick, * menu_tab; @@ -420,10 +428,18 @@ gtk_adjustment_set_page_increment (adjustment, volume_delta); } +static void set_button_icon (GtkToolButton * button, const char * icon) +{ + if (aud_get_bool ("gtkui", "symbolic_icons")) + gtk_tool_button_set_icon_name (button, str_concat ({icon, "-symbolic"})); + else + gtk_tool_button_set_icon_name (button, icon); +} + static void pause_cb () { bool paused = aud_drct_get_paused (); - gtk_tool_button_set_icon_name ((GtkToolButton *) button_play, + set_button_icon ((GtkToolButton *) button_play, paused ? "media-playback-start" : "media-playback-pause"); gtk_tool_item_set_tooltip_text (button_play, paused ? _("Play") : _("Pause")); } @@ -455,7 +471,7 @@ timer_remove (TimerRate::Hz4, time_counter_cb); title_change (); - gtk_tool_button_set_icon_name ((GtkToolButton *) button_play, "media-playback-start"); + set_button_icon ((GtkToolButton *) button_play, "media-playback-start"); gtk_tool_item_set_tooltip_text (button_play, _("Play")); gtk_widget_set_sensitive ((GtkWidget *) button_stop, false); gtk_widget_hide (slider); @@ -466,7 +482,7 @@ void (* callback) (), const char * icon, const char * tooltip) { GtkToolItem * item = gtk_tool_button_new (nullptr, nullptr); - gtk_tool_button_set_icon_name ((GtkToolButton *) item, icon); + set_button_icon ((GtkToolButton *) item, icon); gtk_tool_item_set_tooltip_text (item, tooltip); gtk_toolbar_insert ((GtkToolbar *) toolbar, item, -1); g_signal_connect (item, "clicked", callback, nullptr); @@ -477,7 +493,7 @@ void (* toggled) (GtkToggleToolButton *), bool is_toggled) { GtkToolItem * item = gtk_toggle_tool_button_new (); - gtk_tool_button_set_icon_name ((GtkToolButton *) item, icon); + set_button_icon ((GtkToolButton *) item, icon); gtk_tool_item_set_tooltip_text (item, tooltip); gtk_toggle_tool_button_set_active ((GtkToggleToolButton *) item, is_toggled); g_signal_connect (item, "toggled", (GCallback) toggled, nullptr); @@ -601,7 +617,7 @@ pl_remove_selected (); return true; case GDK_KEY_Menu: - popup_menu_rclick (0, event->time); + popup_menu_rclick ((const GdkEvent *) event); return true; } @@ -782,14 +798,15 @@ pw_col_init (); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_role ((GtkWindow *) window, "mainwindow"); accel = gtk_accel_group_new (); gtk_window_add_accel_group ((GtkWindow *) window, accel); - vbox_outer = gtk_vbox_new (false, 0); + vbox_outer = audgui_vbox_new (0); gtk_container_add ((GtkContainer *) window, vbox_outer); - menu_box = gtk_hbox_new (false, 0); + menu_box = audgui_hbox_new (0); gtk_box_pack_start ((GtkBox *) vbox_outer, menu_box, false, false, 0); toolbar = gtk_toolbar_new (); @@ -797,6 +814,11 @@ gtk_toolbar_set_show_arrow ((GtkToolbar *) toolbar, false); gtk_box_pack_start ((GtkBox *) vbox_outer, toolbar, false, false, 0); +#ifdef USE_GTK3 + GtkStyleContext * context = gtk_widget_get_style_context (toolbar); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_PRIMARY_TOOLBAR); +#endif + /* search button */ if (search_tool) { @@ -807,16 +829,16 @@ } /* open/add buttons */ - toolbar_button_add (toolbar, button_open_pressed, "document-open", _("Open Files")); - toolbar_button_add (toolbar, button_add_pressed, "list-add", _("Add Files")); + button_open = toolbar_button_add (toolbar, button_open_pressed, "document-open", _("Open Files")); + button_add = toolbar_button_add (toolbar, button_add_pressed, "list-add", _("Add Files")); gtk_toolbar_insert ((GtkToolbar *) toolbar, gtk_separator_tool_item_new (), -1); /* playback buttons */ - toolbar_button_add (toolbar, aud_drct_pl_prev, "media-skip-backward", _("Previous")); + button_prev = toolbar_button_add (toolbar, aud_drct_pl_prev, "media-skip-backward", _("Previous")); button_play = toolbar_button_add (toolbar, aud_drct_play_pause, "media-playback-start", _("Play")); button_stop = toolbar_button_add (toolbar, aud_drct_stop, "media-playback-stop", _("Stop")); - toolbar_button_add (toolbar, aud_drct_pl_next, "media-skip-forward", _("Next")); + button_next = toolbar_button_add (toolbar, aud_drct_pl_next, "media-skip-forward", _("Next")); button_record = toggle_button_new ("media-record", _("Record Stream"), toggle_record, aud_get_bool ("record")); @@ -831,10 +853,10 @@ gtk_tool_item_set_expand (boxitem1, true); gtk_toolbar_insert ((GtkToolbar *) toolbar, boxitem1, -1); - GtkWidget * box1 = gtk_hbox_new (false, 0); + GtkWidget * box1 = audgui_hbox_new (0); gtk_container_add ((GtkContainer *) boxitem1, box1); - slider = gtk_hscale_new (nullptr); + slider = audgui_scale_new (GTK_ORIENTATION_HORIZONTAL, nullptr); gtk_scale_set_draw_value ((GtkScale *) slider, false); gtk_widget_set_size_request (slider, audgui_get_dpi () * 5 / 4, -1); gtk_widget_set_can_focus (slider, false); @@ -862,7 +884,7 @@ GtkToolItem * boxitem2 = gtk_tool_item_new (); gtk_toolbar_insert ((GtkToolbar *) toolbar, boxitem2, -1); - GtkWidget * box2 = gtk_hbox_new (false, 0); + GtkWidget * box2 = audgui_hbox_new (0); gtk_container_add ((GtkContainer *) boxitem2, box2); volume = gtk_volume_button_new (); @@ -884,7 +906,7 @@ GtkWidget * layout = layout_new (); gtk_box_pack_start ((GtkBox *) vbox_outer, layout, true, true, 0); - vbox = gtk_vbox_new (false, 6); + vbox = audgui_vbox_new (6); layout_add_center (vbox); gtk_box_pack_start ((GtkBox *) vbox, pl_notebook_new (), true, true, 0); @@ -962,6 +984,7 @@ audgui_cleanup (); } +#ifndef USE_GTK3 static void menu_position_cb (GtkMenu *, int * x, int * y, int * push, void * button) { GtkAllocation alloc; @@ -975,14 +998,23 @@ * y = yorig + ywin + alloc.height; * push = true; } +#endif static void menu_button_cb () { - if (gtk_toggle_tool_button_get_active ((GtkToggleToolButton *) menu_button)) - gtk_menu_popup ((GtkMenu *) menu_main, nullptr, nullptr, menu_position_cb, - menu_button, 0, gtk_get_current_event_time ()); - else + if (! gtk_toggle_tool_button_get_active ((GtkToggleToolButton *) menu_button)) + { gtk_widget_hide (menu_main); + return; + } + +#ifdef USE_GTK3 + gtk_menu_popup_at_widget ((GtkMenu *) menu_main, (GtkWidget *) menu_button, + GDK_GRAVITY_SOUTH_WEST, GDK_GRAVITY_STATIC, nullptr); +#else + gtk_menu_popup ((GtkMenu *) menu_main, nullptr, nullptr, menu_position_cb, + menu_button, 0, gtk_get_current_event_time ()); +#endif } static void menu_hide_cb () @@ -1090,16 +1122,26 @@ } } -void popup_menu_rclick (unsigned button, uint32_t time) +static void popup_menu (GtkMenu * menu, const GdkEvent * event) +{ +#ifdef USE_GTK3 + gtk_menu_popup_at_pointer (menu, event); +#else + GdkEventButton * button_event = (GdkEventButton *) event; + gtk_menu_popup ((GtkMenu *) menu, nullptr, nullptr, nullptr, nullptr, + button_event->button, button_event->time); +#endif +} + +void popup_menu_rclick (const GdkEvent * event) { - gtk_menu_popup ((GtkMenu *) menu_rclick, nullptr, nullptr, nullptr, nullptr, button, - time); + popup_menu ((GtkMenu *) menu_rclick, event); } -void popup_menu_tab (unsigned button, uint32_t time, Playlist playlist) +void popup_menu_tab (const GdkEvent * event, Playlist playlist) { menu_tab_playlist = playlist; - gtk_menu_popup ((GtkMenu *) menu_tab, nullptr, nullptr, nullptr, nullptr, button, time); + popup_menu ((GtkMenu *) menu_tab, event); } void activate_search_tool () @@ -1120,3 +1162,18 @@ aud_plugin_enable (manager, true); layout_focus (manager); } + +void update_toolbar_icons () +{ + set_button_icon ((GtkToolButton *) search_button, "edit-find"); + set_button_icon ((GtkToolButton *) button_open, "document-open"); + set_button_icon ((GtkToolButton *) button_add, "list-add"); + set_button_icon ((GtkToolButton *) button_prev, "media-skip-backward"); + set_button_icon ((GtkToolButton *) button_play, aud_drct_get_playing () + ? "media-playback-pause" : "media-playback-start"); + set_button_icon ((GtkToolButton *) button_stop, "media-playback-stop"); + set_button_icon ((GtkToolButton *) button_next, "media-skip-forward"); + set_button_icon ((GtkToolButton *) button_record, "media-record"); + set_button_icon ((GtkToolButton *) button_repeat, "media-playlist-repeat"); + set_button_icon ((GtkToolButton *) button_shuffle, "media-playlist-shuffle"); +} diff -Nru audacious-plugins-4.1/src/gtkui/ui_infoarea.cc audacious-plugins-4.3.1/src/gtkui/ui_infoarea.cc --- audacious-plugins-4.1/src/gtkui/ui_infoarea.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/gtkui/ui_infoarea.cc 2023-04-29 20:17:32.000000000 +0000 @@ -25,6 +25,7 @@ #include #include #include +#include #include #include "ui_infoarea.h" @@ -124,9 +125,11 @@ GtkAllocation alloc; gtk_widget_get_allocation (widget, & alloc); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS auto & c = (gtk_widget_get_style (widget))->base[GTK_STATE_NORMAL]; - cairo_pattern_t * gradient = audgui_dark_bg_gradient (c, alloc.height); +G_GNUC_END_IGNORE_DEPRECATIONS + cairo_pattern_t * gradient = audgui_dark_bg_gradient (c, alloc.height); cairo_set_source (cr, gradient); cairo_rectangle (cr, 0, 0, alloc.width, alloc.height); cairo_fill (cr); @@ -156,10 +159,18 @@ /****************************************************************************/ -static int expose_vis_cb (GtkWidget * widget, GdkEventExpose * event) +#ifdef USE_GTK3 +static gboolean draw_vis_cb (GtkWidget * widget, cairo_t * cr) +{ +#else +static gboolean draw_vis_cb (GtkWidget * widget, GdkEventExpose * event) { cairo_t * cr = gdk_cairo_create (gtk_widget_get_window (widget)); +#endif + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS auto & c = (gtk_widget_get_style (widget))->base[GTK_STATE_SELECTED]; +G_GNUC_END_IGNORE_DEPRECATIONS clear (widget, cr); @@ -181,7 +192,9 @@ cairo_fill (cr); } +#ifndef USE_GTK3 cairo_destroy (cr); +#endif return true; } @@ -238,16 +251,23 @@ 0.7, 0.7, area->last_alpha, "9", area->last_album); } -static int expose_cb (GtkWidget * widget, GdkEventExpose * event) +#ifdef USE_GTK3 +static gboolean draw_cb (GtkWidget * widget, cairo_t * cr) +{ + g_return_val_if_fail (area, false); +#else +static gboolean draw_cb (GtkWidget * widget, GdkEventExpose * event) { cairo_t * cr = gdk_cairo_create (gtk_widget_get_window (widget)); - +#endif clear (widget, cr); draw_album_art (cr); draw_title (cr); +#ifndef USE_GTK3 cairo_destroy (cr); +#endif return true; } @@ -384,7 +404,7 @@ gtk_widget_set_size_request (vis.widget, VIS_WIDTH, HEIGHT); gtk_box_pack_start ((GtkBox *) area->box, vis.widget, false, false, 0); - g_signal_connect (vis.widget, "expose-event", (GCallback) expose_vis_cb, nullptr); + g_signal_connect (vis.widget, AUDGUI_DRAW_SIGNAL, (GCallback) draw_vis_cb, nullptr); gtk_widget_show (vis.widget); aud_visualizer_add (& vis); @@ -426,13 +446,13 @@ compute_sizes (); area = new UIInfoArea (); - area->box = gtk_hbox_new (false, 0); + area->box = audgui_hbox_new (0); area->main = gtk_drawing_area_new (); gtk_widget_set_size_request (area->main, HEIGHT, HEIGHT); gtk_box_pack_start ((GtkBox *) area->box, area->main, true, true, 0); - g_signal_connect (area->main, "expose-event", (GCallback) expose_cb, nullptr); + g_signal_connect (area->main, AUDGUI_DRAW_SIGNAL, (GCallback) draw_cb, nullptr); hook_associate ("tuple change", (HookFunction) ui_infoarea_set_title, nullptr); hook_associate ("playback ready", (HookFunction) ui_infoarea_playback_start, nullptr); diff -Nru audacious-plugins-4.1/src/gtkui/ui_playlist_notebook.cc audacious-plugins-4.3.1/src/gtkui/ui_playlist_notebook.cc --- audacious-plugins-4.1/src/gtkui/ui_playlist_notebook.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/gtkui/ui_playlist_notebook.cc 2023-04-29 20:17:32.000000000 +0000 @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -59,6 +60,10 @@ { GtkTreeViewColumn * col = gtk_tree_view_get_column ((GtkTreeView *) treeview, i); gtk_tree_view_column_set_fixed_width (col, pw_col_widths[pw_cols[i]]); + +#ifdef USE_GTK3 + gtk_tree_view_column_set_expand (col, false); +#endif } } @@ -115,6 +120,7 @@ audgui_confirm_playlist_delete (aud::from_ptr (data)); } +#ifndef USE_GTK3 static void close_button_style_set (GtkWidget * button) { int w, h; @@ -122,6 +128,7 @@ GTK_ICON_SIZE_MENU, & w, & h); gtk_widget_set_size_request (button, w + 2, h + 2); } +#endif static GtkWidget * make_close_button (GtkWidget * ebox, Playlist list) { @@ -129,11 +136,27 @@ GtkWidget * image = gtk_image_new_from_icon_name ("window-close", GTK_ICON_SIZE_MENU); gtk_button_set_image ((GtkButton *) button, image); gtk_button_set_relief ((GtkButton *) button, GTK_RELIEF_NONE); - gtk_button_set_focus_on_click ((GtkButton *) button, false); gtk_widget_set_name (button, "gtkui-tab-close-button"); g_signal_connect (button, "clicked", (GCallback) close_button_cb, aud::to_ptr (list)); +#ifdef USE_GTK3 + gtk_widget_set_focus_on_click (button, false); + + GtkCssProvider * provider = gtk_css_provider_new (); + gtk_css_provider_load_from_data (provider, + "#gtkui-tab-close-button {" + " margin: 0;" + " padding: 0; }", + -1, nullptr); + + gtk_style_context_add_provider (gtk_widget_get_style_context (button), + GTK_STYLE_PROVIDER (provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + g_object_unref (provider); +#else + gtk_button_set_focus_on_click ((GtkButton *) button, false); + gtk_rc_parse_string ( "style \"gtkui-tab-close-button-style\" {" " GtkButton::default-border = {0, 0, 0, 0}" @@ -147,6 +170,7 @@ ); g_signal_connect (button, "style-set", (GCallback) close_button_style_set, nullptr); +#endif gtk_widget_show (button); @@ -194,7 +218,7 @@ audgui_confirm_playlist_delete (list); if (event->type == GDK_BUTTON_PRESS && event->button == 3) - popup_menu_tab (event->button, event->time, list); + popup_menu_tab ((const GdkEvent *) event, list); return false; } @@ -302,7 +326,7 @@ GtkWidget * ebox = gtk_event_box_new (); gtk_event_box_set_visible_window ((GtkEventBox *) ebox, false); - GtkWidget * hbox = gtk_hbox_new (false, 2); + GtkWidget * hbox = audgui_hbox_new (2); GtkWidget * label = gtk_label_new (""); update_tab_label ((GtkLabel *) label, list); diff -Nru audacious-plugins-4.1/src/gtkui/ui_playlist_widget.cc audacious-plugins-4.3.1/src/gtkui/ui_playlist_widget.cc --- audacious-plugins-4.1/src/gtkui/ui_playlist_widget.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/gtkui/ui_playlist_widget.cc 2023-04-29 20:17:32.000000000 +0000 @@ -50,7 +50,9 @@ G_TYPE_STRING, // file name G_TYPE_STRING, // custom title G_TYPE_STRING, // bitrate - G_TYPE_STRING // comment + G_TYPE_STRING, // comment + G_TYPE_STRING, // publisher + G_TYPE_STRING // catalog number }; static const int pw_col_min_widths[PW_COLS] = { @@ -68,7 +70,9 @@ 10, // file name 10, // custom title 3, // bitrate - 10 // comment + 10, // comment, + 10, // publisher + 3 // catalog number }; static const bool pw_col_label[PW_COLS] = { @@ -86,7 +90,9 @@ true, // file name true, // custom title false, // bitrate - true // comment + true, // comment + true, // publisher + false // catalog number }; static const Playlist::SortType pw_col_sort_types[PW_COLS] = { @@ -104,7 +110,9 @@ Playlist::Filename, // file name Playlist::FormattedTitle, // custom title Playlist::n_sort_types, // bitrate - Playlist::Comment // comment + Playlist::Comment, // comment + Playlist::Publisher, // publisher + Playlist::CatalogNum // catalog number }; struct PlaylistWidgetData @@ -209,6 +217,12 @@ case PW_COL_COMMENT: set_string_from_tuple (value, tuple, Tuple::Comment); break; + case PW_COL_PUBLISHER: + set_string_from_tuple (value, tuple, Tuple::Publisher); + break; + case PW_COL_CATALOG_NUM: + set_string_from_tuple (value, tuple, Tuple::CatalogNum); + break; } } @@ -241,7 +255,7 @@ static void right_click (void * user, GdkEventButton * event) { - popup_menu_rclick (event->button, event->time); + popup_menu_rclick ((const GdkEvent *) event); } static void shift_rows (void * user, int row, int before) diff -Nru audacious-plugins-4.1/src/gtkui/ui_playlist_widget.h audacious-plugins-4.3.1/src/gtkui/ui_playlist_widget.h --- audacious-plugins-4.1/src/gtkui/ui_playlist_widget.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/gtkui/ui_playlist_widget.h 2023-04-29 20:17:32.000000000 +0000 @@ -43,6 +43,8 @@ PW_COL_CUSTOM, PW_COL_BITRATE, PW_COL_COMMENT, + PW_COL_PUBLISHER, + PW_COL_CATALOG_NUM, PW_COLS }; diff -Nru audacious-plugins-4.1/src/gtkui/ui_statusbar.cc audacious-plugins-4.3.1/src/gtkui/ui_statusbar.cc --- audacious-plugins-4.1/src/gtkui/ui_statusbar.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/gtkui/ui_statusbar.cc 2023-04-29 20:17:32.000000000 +0000 @@ -24,6 +24,7 @@ #include #include #include +#include #include "ui_statusbar.h" @@ -78,7 +79,7 @@ } if (bitrate > 0) - str_append_printf (buf, _("%d kbps"), bitrate / 1000); + str_append_printf (buf, _("%d kbit/s"), bitrate / 1000); gtk_label_set_text ((GtkLabel *) label, buf); } @@ -135,7 +136,7 @@ GtkWidget * ui_statusbar_new () { - GtkWidget * hbox = gtk_hbox_new (false, 3); + GtkWidget * hbox = audgui_hbox_new (3); GtkWidget * status = gtk_widget_new (GTK_TYPE_LABEL, "xalign", 0.0, nullptr); GtkWidget * length = gtk_widget_new (GTK_TYPE_LABEL, "xalign", 1.0, nullptr); diff -Nru audacious-plugins-4.1/src/hotkey/gui.cc audacious-plugins-4.3.1/src/hotkey/gui.cc --- audacious-plugins-4.1/src/hotkey/gui.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/hotkey/gui.cc 2023-04-29 20:17:32.000000000 +0000 @@ -37,6 +37,7 @@ #include #include +#include #include #include @@ -261,6 +262,7 @@ "modifiers.\n\n" "Do you want to continue?")); gtk_window_set_title(GTK_WINDOW(dialog), _("Binding mouse buttons")); + gtk_window_set_role(GTK_WINDOW(dialog), "message"); response = gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); if (response != GTK_RESPONSE_YES) @@ -361,12 +363,8 @@ } gtk_combo_box_set_active(GTK_COMBO_BOX(controls->combobox), controls->hotkey.event); - gtk_table_attach_defaults(GTK_TABLE(grid), controls->combobox, 0, 1, row, - row + 1); controls->keytext = gtk_entry_new(); - gtk_table_attach_defaults(GTK_TABLE(grid), controls->keytext, 1, 2, row, - row + 1); gtk_editable_set_editable(GTK_EDITABLE(controls->keytext), false); set_keytext(controls->keytext, controls->hotkey.key, controls->hotkey.mask, @@ -384,11 +382,25 @@ gtk_button_set_image( GTK_BUTTON(controls->button), gtk_image_new_from_icon_name("edit-delete", GTK_ICON_SIZE_BUTTON)); - gtk_table_attach_defaults(GTK_TABLE(grid), controls->button, 2, 3, row, - row + 1); g_signal_connect(G_OBJECT(controls->button), "clicked", G_CALLBACK(clear_keyboard), controls); +#ifdef USE_GTK3 + gtk_widget_set_hexpand(controls->combobox, true); + gtk_widget_set_hexpand(controls->keytext, true); + + gtk_grid_attach(GTK_GRID(grid), controls->combobox, 0, row, 1, 1); + gtk_grid_attach(GTK_GRID(grid), controls->keytext, 1, row, 1, 1); + gtk_grid_attach(GTK_GRID(grid), controls->button, 2, row, 1, 1); +#else + gtk_table_attach_defaults(GTK_TABLE(grid), controls->combobox, 0, 1, row, + row + 1); + gtk_table_attach_defaults(GTK_TABLE(grid), controls->keytext, 1, 2, row, + row + 1); + gtk_table_attach_defaults(GTK_TABLE(grid), controls->button, 2, 3, row, + row + 1); +#endif + gtk_widget_grab_focus(GTK_WIDGET(controls->keytext)); return controls; } @@ -396,15 +408,14 @@ void * make_config_widget() { KeyControls * current_controls; - GtkWidget *main_vbox, *hbox; - GtkWidget * alignment; + GtkWidget * main_vbox, * hbox; GtkWidget * frame; - GtkWidget * label; + GtkWidget * label1, * label2, * label3; GtkWidget * image; GtkWidget * grid; - GtkWidget *button_box, *button; + GtkWidget * button_box, * button; PluginConfig * plugin_cfg; - HotkeyConfiguration *hotkey, temphotkey; + HotkeyConfiguration * hotkey, temphotkey; int i; load_config(); @@ -413,46 +424,52 @@ ungrab_keys(); - main_vbox = gtk_vbox_new(false, 4); + main_vbox = audgui_vbox_new(4); - alignment = gtk_alignment_new(0.5, 0.5, 1, 1); - gtk_box_pack_start(GTK_BOX(main_vbox), alignment, false, true, 0); - gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 4, 0, 0, 0); - hbox = gtk_hbox_new(false, 2); - gtk_container_add(GTK_CONTAINER(alignment), hbox); + hbox = audgui_hbox_new(2); + gtk_box_pack_start(GTK_BOX(main_vbox), hbox, false, true, 0); image = gtk_image_new_from_icon_name("dialog-information", GTK_ICON_SIZE_DIALOG); gtk_box_pack_start(GTK_BOX(hbox), image, false, true, 0); - label = gtk_label_new(_("Press a key combination inside a text field.\nYou " - "can also bind mouse buttons.")); - gtk_box_pack_start(GTK_BOX(hbox), label, true, true, 0); - gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + label1 = gtk_label_new(_("Press a key combination inside a text field.\nYou " + "can also bind mouse buttons.")); +#ifdef USE_GTK3 + gtk_widget_set_halign(label1, GTK_ALIGN_START); +#else + gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5); +#endif + gtk_box_pack_start(GTK_BOX(hbox), label1, true, true, 0); - label = gtk_label_new(nullptr); - gtk_label_set_markup(GTK_LABEL(label), _("Hotkeys:")); + label1 = gtk_label_new(nullptr); + gtk_label_set_markup(GTK_LABEL(label1), _("Hotkeys:")); frame = gtk_frame_new(nullptr); - gtk_frame_set_label_widget(GTK_FRAME(frame), label); + gtk_frame_set_label_widget(GTK_FRAME(frame), label1); gtk_box_pack_start(GTK_BOX(main_vbox), frame, true, true, 0); gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); - alignment = gtk_alignment_new(0, 0, 1, 0); - gtk_container_add(GTK_CONTAINER(frame), alignment); - gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 3, 3, 3, 3); - - grid = gtk_table_new(0, 0, false); - gtk_table_set_col_spacings(GTK_TABLE(grid), 2); - gtk_container_add(GTK_CONTAINER(alignment), grid); - - label = gtk_label_new(nullptr); - gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_CENTER); - gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5); - gtk_label_set_markup(GTK_LABEL(label), _("Action:")); - gtk_table_attach_defaults(GTK_TABLE(grid), label, 0, 1, 0, 1); - - label = gtk_label_new(nullptr); - gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_CENTER); - gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5); - gtk_label_set_markup(GTK_LABEL(label), _("Key Binding:")); - gtk_table_attach_defaults(GTK_TABLE(grid), label, 1, 2, 0, 1); + + grid = audgui_grid_new(); + audgui_grid_set_column_spacing(grid, 2); + gtk_container_set_border_width(GTK_CONTAINER(grid), 3); + gtk_container_add(GTK_CONTAINER(frame), grid); + + label2 = gtk_label_new(nullptr); + gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_CENTER); + gtk_label_set_markup(GTK_LABEL(label2), _("Action:")); + + label3 = gtk_label_new(nullptr); + gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_CENTER); + gtk_label_set_markup(GTK_LABEL(label3), _("Key Binding:")); + +#ifdef USE_GTK3 + gtk_grid_attach(GTK_GRID(grid), label2, 0, 0, 1, 1); + gtk_grid_attach(GTK_GRID(grid), label3, 1, 0, 1, 1); +#else + gtk_misc_set_alignment(GTK_MISC(label2), 0.5, 0.5); + gtk_misc_set_alignment(GTK_MISC(label3), 0.5, 0.5); + + gtk_table_attach_defaults(GTK_TABLE(grid), label2, 0, 1, 0, 1); + gtk_table_attach_defaults(GTK_TABLE(grid), label3, 1, 2, 0, 1); +#endif hotkey = &(plugin_cfg->first); i = 1; @@ -490,10 +507,10 @@ temphotkey.event = (EVENT)0; add_event_controls(current_controls, grid, i, &temphotkey); - hbox = gtk_hbox_new(false, 0); + hbox = audgui_hbox_new(0); gtk_box_pack_start(GTK_BOX(main_vbox), hbox, false, true, 0); - button_box = gtk_hbutton_box_new(); + button_box = audgui_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_box_pack_start(GTK_BOX(hbox), button_box, false, true, 0); gtk_button_box_set_layout(GTK_BUTTON_BOX(button_box), GTK_BUTTONBOX_START); gtk_box_set_spacing(GTK_BOX(button_box), 4); @@ -558,13 +575,18 @@ gtk_container_remove(GTK_CONTAINER(c->grid), c->keytext); gtk_container_remove(GTK_CONTAINER(c->grid), c->button); +#ifdef USE_GTK3 + gtk_grid_attach(GTK_GRID(c->grid), c->combobox, 0, row, 1, 1); + gtk_grid_attach(GTK_GRID(c->grid), c->keytext, 1, row, 1, 1); + gtk_grid_attach(GTK_GRID(c->grid), c->button, 2, row, 1, 1); +#else gtk_table_attach_defaults(GTK_TABLE(c->grid), c->combobox, 0, 1, row, row + 1); gtk_table_attach_defaults(GTK_TABLE(c->grid), c->keytext, 1, 2, row, row + 1); gtk_table_attach_defaults(GTK_TABLE(c->grid), c->button, 2, 3, row, row + 1); - +#endif g_object_unref(c->combobox); g_object_unref(c->keytext); g_object_unref(c->button); diff -Nru audacious-plugins-4.1/src/hotkey/meson.build audacious-plugins-4.3.1/src/hotkey/meson.build --- audacious-plugins-4.1/src/hotkey/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/hotkey/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -1,4 +1,8 @@ -gdk_x11_dep = dependency('gdk-x11-2.0', version: gtk_req, required: false) +if get_option('gtk3') + gdk_x11_dep = dependency('gdk-x11-3.0', version: gtk_req, required: false) +else + gdk_x11_dep = dependency('gdk-x11-2.0', version: gtk_req, required: false) +endif have_hotkey = gdk_x11_dep.found() diff -Nru audacious-plugins-4.1/src/ladspa/plugin.cc audacious-plugins-4.3.1/src/ladspa/plugin.cc --- audacious-plugins-4.1/src/ladspa/plugin.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/ladspa/plugin.cc 2023-04-29 20:17:32.000000000 +0000 @@ -30,6 +30,7 @@ #include #include #include +#include #include #include "plugin.h" @@ -424,7 +425,7 @@ { ControlData & control = plugin.controls[i]; - GtkWidget * hbox = gtk_hbox_new (false, 6); + GtkWidget * hbox = audgui_hbox_new (6); gtk_box_pack_start ((GtkBox *) vbox, hbox, 0, 0, 0); if (control.is_toggle) @@ -472,10 +473,10 @@ { int dpi = audgui_get_dpi (); - GtkWidget * vbox = gtk_vbox_new (false, 6); + GtkWidget * vbox = audgui_vbox_new (6); gtk_widget_set_size_request (vbox, 5 * dpi, 4 * dpi); - GtkWidget * hbox = gtk_hbox_new (false, 6); + GtkWidget * hbox = audgui_hbox_new (6); gtk_box_pack_start ((GtkBox *) vbox, hbox, 0, 0, 0); GtkWidget * label = gtk_label_new (_("Module paths:")); @@ -486,17 +487,22 @@ _("Separate multiple paths with a colon.\n" "These paths are searched in addition to LADSPA_PATH.\n" "After adding new paths, press Enter to scan for new plugins.")); +#ifdef USE_GTK3 + gtk_widget_set_margin_start (label, 12); + gtk_widget_set_halign (label, GTK_ALIGN_START); +#else gtk_misc_set_padding ((GtkMisc *) label, 12, 6); gtk_misc_set_alignment ((GtkMisc *) label, 0, 0); +#endif gtk_box_pack_start ((GtkBox *) vbox, label, 0, 0, 0); GtkWidget * entry = gtk_entry_new (); gtk_box_pack_start ((GtkBox *) hbox, entry, 1, 1, 0); - hbox = gtk_hbox_new (false, 6); + hbox = audgui_hbox_new (6); gtk_box_pack_start ((GtkBox *) vbox, hbox, 1, 1, 0); - GtkWidget * vbox2 = gtk_vbox_new (false, 6); + GtkWidget * vbox2 = audgui_vbox_new (6); gtk_box_pack_start ((GtkBox *) hbox, vbox2, 1, 1, 0); label = gtk_label_new (_("Available plugins:")); @@ -509,13 +515,13 @@ plugin_list = create_plugin_list (); gtk_container_add ((GtkContainer *) scrolled, plugin_list); - GtkWidget * hbox2 = gtk_hbox_new (false, 6); + GtkWidget * hbox2 = audgui_hbox_new (6); gtk_box_pack_start ((GtkBox *) vbox2, hbox2, 0, 0, 0); GtkWidget * enable_button = gtk_button_new_with_label (_("Enable")); gtk_box_pack_end ((GtkBox *) hbox2, enable_button, 0, 0, 0); - vbox2 = gtk_vbox_new (false, 6); + vbox2 = audgui_vbox_new (6); gtk_box_pack_start ((GtkBox *) hbox, vbox2, 1, 1, 0); label = gtk_label_new (_("Enabled plugins:")); @@ -528,7 +534,7 @@ loaded_list = create_loaded_list (); gtk_container_add ((GtkContainer *) scrolled, loaded_list); - hbox2 = gtk_hbox_new (false, 6); + hbox2 = audgui_hbox_new (6); gtk_box_pack_start ((GtkBox *) vbox2, hbox2, 0, 0, 0); GtkWidget * disable_button = gtk_button_new_with_label (_("Disable")); diff -Nru audacious-plugins-4.1/src/lirc/meson.build audacious-plugins-4.3.1/src/lirc/meson.build --- audacious-plugins-4.1/src/lirc/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/lirc/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -1,13 +1,16 @@ -lirc_dep = cxx.find_library('lirc', required: false) -have_lirc = lirc_dep.found() and cxx.has_header('lirc/lirc_client.h') +lirc_dep = dependency('lirc', required: false) +if not lirc_dep.found() + lirc_dep = cxx.find_library('lirc_client', has_headers: 'lirc/lirc_client.h', required: false) +endif + +have_lirc = lirc_dep.found() if have_lirc shared_module('lirc', 'lirc.cc', dependencies: [audacious_dep, glib_dep, lirc_dep], name_prefix: '', - link_args: ['-llirc_client'], install: true, install_dir: general_plugin_dir ) diff -Nru audacious-plugins-4.1/src/lyricwiki-qt/lyricwiki.cc audacious-plugins-4.3.1/src/lyricwiki-qt/lyricwiki.cc --- audacious-plugins-4.1/src/lyricwiki-qt/lyricwiki.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/lyricwiki-qt/lyricwiki.cc 2023-04-29 20:17:32.000000000 +0000 @@ -60,6 +60,7 @@ enum Source { None, + Embedded, Local, LyricWiki, LyricsOVH @@ -109,6 +110,7 @@ "split-on-chars", "-", "truncate-fields-on-chars", "FALSE", "truncate-on-chars", "|", + "use-embedded", "TRUE", nullptr }; @@ -135,8 +137,10 @@ WidgetCheck(N_("Split title into artist and title on chars"), WidgetBool ("lyricwiki", "split-title-on-chars")), WidgetTable({{split_elements}}, WIDGET_CHILD), - WidgetLabel(N_("Internet Sources")), - WidgetCombo(N_("Fetch lyrics from:"), + WidgetLabel(N_("Sources")), + WidgetCheck(N_("Use embedded lyrics (from Lyrics tag)"), + WidgetBool ("lyricwiki", "use-embedded")), + WidgetCombo(N_("Fetch lyrics from internet:"), WidgetString ("lyricwiki", "remote-source"), {{remote_sources}}), WidgetCheck(N_("Store fetched lyrics in local cache"), @@ -494,6 +498,19 @@ } } + if (aud_get_bool ("lyricwiki", "use-embedded")) + { + String embedded_lyrics = tuple.get_str (Tuple::Lyrics); + if (embedded_lyrics && embedded_lyrics[0]) + { + g_state.lyrics = embedded_lyrics; + g_state.source = LyricsState::Source::Embedded; + g_state.error = false; + update_lyrics_window (g_state.title, g_state.artist, g_state.lyrics); + return; + } + } + if (! aud_get_bool ("lyricwiki", "enable-file-provider") || ! file_provider.match (g_state)) { if (! g_state.artist || ! g_state.title) @@ -504,8 +521,14 @@ auto rsrc = remote_source (); if (rsrc) + { rsrc->match (g_state); + return; + } } + + // No lyrics source - set default state + update_lyrics_window_notfound (g_state); } static void lw_cleanup (QObject * object = nullptr) diff -Nru audacious-plugins-4.1/src/m3u/m3u.cc audacious-plugins-4.3.1/src/m3u/m3u.cc --- audacious-plugins-4.1/src/m3u/m3u.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/m3u/m3u.cc 2023-04-29 20:17:32.000000000 +0000 @@ -23,6 +23,7 @@ #include #include #include +#include static const char * const m3u_exts[] = {"m3u", "m3u8"}; @@ -64,6 +65,9 @@ text.append (0); /* null-terminate */ + bool firstline = true; + bool extm3u = false; + char * parse = text.begin (); if (! strncmp (parse, "\xef\xbb\xbf", 3)) /* byte order mark */ parse += 3; @@ -75,17 +79,34 @@ while (* parse == ' ' || * parse == '\t') parse ++; - if (* parse && * parse != '#') + if (* parse == '#') + { + if (firstline && ! strncmp (parse, "#EXTM3U", 7)) + extm3u = true; + else if (extm3u && ! strncmp (parse, "#EXT-X-", 7)) + goto HLS; + } + else if (* parse) { StringBuf s = uri_construct (parse, filename); if (s) items.append (String (s)); } + firstline = false; parse = next; } return true; + +HLS: + AUDINFO ("Detected HLS stream: %s\n", filename); + /* Though it shares the .m3u8 extension, an HLS stream is not really + * a playlist at all. Add (only) the original .m3u8 filename to the + * playlist and let an input plugin (e.g. ffaudio) handle it. */ + items.clear (); + items.append (String (filename)); + return true; } bool M3ULoader::save (const char * filename, VFSFile & file, const char * title, diff -Nru audacious-plugins-4.1/src/mac-media-keys/Makefile audacious-plugins-4.3.1/src/mac-media-keys/Makefile --- audacious-plugins-4.1/src/mac-media-keys/Makefile 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/mac-media-keys/Makefile 2023-04-29 20:17:32.000000000 +0000 @@ -13,4 +13,4 @@ CFLAGS += ${PLUGIN_CFLAGS} CPPFLAGS += ${PLUGIN_CPPFLAGS} -I../.. -LIBS += -framework AppKit +LIBS += -framework AppKit -framework Carbon diff -Nru audacious-plugins-4.1/src/mac-media-keys/meson.build audacious-plugins-4.3.1/src/mac-media-keys/meson.build --- audacious-plugins-4.1/src/mac-media-keys/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/mac-media-keys/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -10,7 +10,7 @@ dependencies: [audacious_dep], name_prefix: '', objcpp_args: '-std=c++11', - link_args: ['-framework', 'AppKit'], + link_args: ['-framework', 'AppKit', '-framework', 'Carbon'], install: true, install_dir: general_plugin_dir ) diff -Nru audacious-plugins-4.1/src/meson.build audacious-plugins-4.3.1/src/meson.build --- audacious-plugins-4.1/src/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -28,6 +28,7 @@ # effect plugins +subdir('bitcrusher') subdir('compressor') subdir('crossfade') subdir('crystalizer') @@ -135,7 +136,6 @@ # GTK-specific plugins if conf.has('USE_GTK') - subdir('alarm') subdir('albumart') subdir('blur_scope') subdir('cairo-spectrum') @@ -161,10 +161,6 @@ # general plugins -if have_cdaudio - subdir('cd-menu-items') -endif - if get_option('lirc') subdir('lirc') endif @@ -199,11 +195,15 @@ subdir('amidiplug') endif -if have_cdaudio +if get_option('cdaudio') subdir('cdaudio') + + if have_cdaudio + subdir('cd-menu-items') + endif endif -if get_option('ffaudio') in ['ffmpeg', 'libav'] +if get_option('ffaudio') subdir('ffaudio') endif @@ -223,6 +223,10 @@ subdir('openmpt') endif +if get_option('opus') + subdir('opus') +endif + if get_option('sid') subdir('sid') endif @@ -261,6 +265,10 @@ subdir('oss4') endif +if get_option('pipewire') + subdir('pipewire') +endif + if get_option('pulse') subdir('pulse') endif diff -Nru audacious-plugins-4.1/src/moonstone/main_window.cc audacious-plugins-4.3.1/src/moonstone/main_window.cc --- audacious-plugins-4.1/src/moonstone/main_window.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/moonstone/main_window.cc 2023-04-29 20:17:32.000000000 +0000 @@ -141,13 +141,13 @@ { if (!aud_drct_get_playing() || aud_drct_get_paused()) { - m_play_pause_action->setIcon(audqt::get_icon("media-playback-start")); + m_play_pause_action->setIcon(QIcon::fromTheme("media-playback-start")); m_play_pause_action->setText(_("Play")); m_play_pause_action->setToolTip(_("Play")); } else { - m_play_pause_action->setIcon(audqt::get_icon("media-playback-pause")); + m_play_pause_action->setIcon(QIcon::fromTheme("media-playback-pause")); m_play_pause_action->setText(_("Pause")); m_play_pause_action->setToolTip(_("Pause")); } diff -Nru audacious-plugins-4.1/src/moonstone/playlist_model.cc audacious-plugins-4.3.1/src/moonstone/playlist_model.cc --- audacious-plugins-4.1/src/moonstone/playlist_model.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/moonstone/playlist_model.cc 2023-04-29 20:17:32.000000000 +0000 @@ -55,7 +55,7 @@ static inline QPixmap get_icon(const char * name) { - return audqt::get_icon(name).pixmap(audqt::to_native_dpi(ICON_SIZE)); + return QIcon::fromTheme(name).pixmap(audqt::to_native_dpi(ICON_SIZE)); } PlaylistModel::PlaylistModel(QObject * parent, Playlist playlist) @@ -123,7 +123,7 @@ case Length: return QString(str_format_time(val)); case Bitrate: - return QString("%1 kbps").arg(val); + return QString("%1 kbit/s").arg(val); default: return QString("%1").arg(val); } diff -Nru audacious-plugins-4.1/src/moonstone/playlist_tabs.cc audacious-plugins-4.3.1/src/moonstone/playlist_tabs.cc --- audacious-plugins-4.1/src/moonstone/playlist_tabs.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/moonstone/playlist_tabs.cc 2023-04-29 20:17:32.000000000 +0000 @@ -217,7 +217,7 @@ QIcon icon; int playing = Playlist::playing_playlist().index(); if (playing >= 0) - icon = audqt::get_icon(aud_drct_get_paused() ? "media-playback-pause" + icon = QIcon::fromTheme(aud_drct_get_paused() ? "media-playback-pause" : "media-playback-start"); int tabs = count(); @@ -302,12 +302,12 @@ auto menu = new QMenu(this); auto playlist = Playlist::by_index(idx); - auto play_act = new QAction(audqt::get_icon("media-playback-start"), + auto play_act = new QAction(QIcon::fromTheme("media-playback-start"), audqt::translate_str(N_("_Play")), menu); auto rename_act = - new QAction(audqt::get_icon("insert-text"), + new QAction(QIcon::fromTheme("insert-text"), audqt::translate_str(N_("_Rename ...")), menu); - auto remove_act = new QAction(audqt::get_icon("edit-delete"), + auto remove_act = new QAction(QIcon::fromTheme("edit-delete"), audqt::translate_str(N_("Remo_ve")), menu); QObject::connect(play_act, &QAction::triggered, diff -Nru audacious-plugins-4.1/src/moonstone/tool_bar.cc audacious-plugins-4.3.1/src/moonstone/tool_bar.cc --- audacious-plugins-4.1/src/moonstone/tool_bar.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/moonstone/tool_bar.cc 2023-04-29 20:17:32.000000000 +0000 @@ -41,7 +41,7 @@ addSeparator(); else if (item.icon_name) { - QAction * a = new QAction(audqt::get_icon(item.icon_name), + QAction * a = new QAction(QIcon::fromTheme(item.icon_name), audqt::translate_str(item.name), this); if (item.tooltip_text) diff -Nru audacious-plugins-4.1/src/mpg123/mpg123.cc audacious-plugins-4.3.1/src/mpg123/mpg123.cc --- audacious-plugins-4.1/src/mpg123/mpg123.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/mpg123/mpg123.cc 2023-04-29 20:17:32.000000000 +0000 @@ -184,6 +184,10 @@ if (mpg123_info(dec, &info) < 0) goto err; + // heuristic/sanity check to avoid false positives + if (probing && !stream && info.vbr == MPG123_CBR && info.bitrate <= 0) + goto err; + return; } diff -Nru audacious-plugins-4.1/src/openmpt/mpt.cc audacious-plugins-4.3.1/src/openmpt/mpt.cc --- audacious-plugins-4.1/src/openmpt/mpt.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/openmpt/mpt.cc 2023-04-29 20:17:32.000000000 +0000 @@ -89,7 +89,6 @@ tuple.set_int(Tuple::Length, mpt.duration()); tuple.set_str(Tuple::Title, mpt.title()); - tuple.set_int(Tuple::Channels, mpt.channels()); return true; } diff -Nru audacious-plugins-4.1/src/opus/Makefile audacious-plugins-4.3.1/src/opus/Makefile --- audacious-plugins-4.1/src/opus/Makefile 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/opus/Makefile 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,14 @@ +PLUGIN = opus${PLUGIN_SUFFIX} + +SRCS = opus.cc + +include ../../buildsys.mk +include ../../extra.mk + +plugindir := ${plugindir}/${INPUT_PLUGIN_DIR} + +LD = ${CXX} + +CFLAGS += ${PLUGIN_CFLAGS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${OPUS_CFLAGS} -I../.. +LIBS += ${OPUS_LIBS} diff -Nru audacious-plugins-4.1/src/opus/meson.build audacious-plugins-4.3.1/src/opus/meson.build --- audacious-plugins-4.1/src/opus/meson.build 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/opus/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,16 @@ +opus_dep = dependency('opus', version: '>= 1.0.1', required: false) +opusfile_dep = dependency('opusfile', version: '>= 0.4', required: false) + +have_opus = opus_dep.found() and opusfile_dep.found() + + +if have_opus + shared_module('opus', + 'opus.cc', + dependencies: [audacious_dep, opus_dep, opusfile_dep], + name_prefix: '', + include_directories: [src_inc], + install: true, + install_dir: input_plugin_dir, + ) +endif diff -Nru audacious-plugins-4.1/src/opus/opus.cc audacious-plugins-4.3.1/src/opus/opus.cc --- audacious-plugins-4.1/src/opus/opus.cc 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/opus/opus.cc 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,362 @@ +/* + * Opus Decoder Plugin for Audacious + * Copyright 2022 Thomas Lange + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions, and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions, and the following disclaimer in the documentation + * provided with the distribution. + * + * This software is provided "as is" and without any warranty, express or + * implied. In no event shall the authors be liable for any damages arising from + * the use of this software. + */ + +#include +#include + +#include + +#define WANT_VFS_STDIO_COMPAT +#include +#include +#include +#include + +class OpusPlugin : public InputPlugin +{ +public: + static const char about[]; + static const char * const exts[]; + static const char * const mimes[]; + + static constexpr PluginInfo info = { + N_("Opus Decoder"), + PACKAGE, + about + }; + + constexpr OpusPlugin() : InputPlugin(info, InputInfo() + .with_exts(exts) + .with_mimes(mimes)) {} + + bool is_our_file(const char * filename, VFSFile & file); + bool read_tag(const char * filename, VFSFile & file, Tuple & tuple, + Index * image); + bool play(const char * filename, VFSFile & file); + +private: + static const int pcm_frames = 1024; + static const int pcm_bufsize = 2 * pcm_frames; + static const int sample_rate = 48000; /* Opus supports 48 kHz only */ + + int m_bitrate = 0; + int m_channels = 0; +}; + +EXPORT OpusPlugin aud_plugin_instance; + +static int opcb_read(void * stream, unsigned char * buf, int size) +{ + VFSFile * file = static_cast(stream); + return file->fread(buf, 1, size); +} + +static int opcb_seek(void * stream, opus_int64 offset, int whence) +{ + VFSFile * file = static_cast(stream); + return file->fseek(offset, to_vfs_seek_type(whence)); +} + +static opus_int64 opcb_tell(void * stream) +{ + VFSFile * file = static_cast(stream); + return file->ftell(); +} + +static OggOpusFile * open_file(VFSFile & file) +{ + bool stream = file.fsize() < 0; + + OpusFileCallbacks opus_callbacks = { + opcb_read, + stream ? nullptr : opcb_seek, + stream ? nullptr : opcb_tell, + nullptr, + }; + + return op_open_callbacks(&file, &opus_callbacks, nullptr, 0, nullptr); +} + +static void read_tags(const OpusTags * tags, Tuple & tuple) +{ + const char * title = opus_tags_query(tags, "TITLE", 0); + const char * artist = opus_tags_query(tags, "ARTIST", 0); + const char * album = opus_tags_query(tags, "ALBUM", 0); + const char * album_artist = opus_tags_query(tags, "ALBUMARTIST", 0); + const char * genre = opus_tags_query(tags, "GENRE", 0); + const char * comment = opus_tags_query(tags, "COMMENT", 0); + const char * description = opus_tags_query(tags, "DESCRIPTION", 0); + const char * music_brainz_id = opus_tags_query(tags, "musicbrainz_trackid", 0); + const char * publisher = opus_tags_query(tags, "publisher", 0); + const char * catalog_num = opus_tags_query(tags, "CATALOGNUMBER", 0); + const char * track = opus_tags_query(tags, "TRACKNUMBER", 0); + const char * date = opus_tags_query(tags, "DATE", 0); + + tuple.set_str(Tuple::Title, title); + tuple.set_str(Tuple::Artist, artist); + tuple.set_str(Tuple::Album, album); + tuple.set_str(Tuple::AlbumArtist, album_artist); + tuple.set_str(Tuple::Genre, genre); + tuple.set_str(Tuple::Comment, comment); + tuple.set_str(Tuple::Description, description); + tuple.set_str(Tuple::MusicBrainzID, music_brainz_id); + tuple.set_str(Tuple::Publisher, publisher); + tuple.set_str(Tuple::CatalogNum, catalog_num); + + if (track) + tuple.set_int(Tuple::Track, std::atoi(track)); + if (date) + tuple.set_int(Tuple::Year, std::atoi(date)); +} + +static Index read_image_from_tags(const OpusTags * tags, + const char * filename) +{ + Index data; + + const char * image = opus_tags_query(tags, "METADATA_BLOCK_PICTURE", 0); + if (!image) + return data; + + auto picture_tag = SmartPtr(new OpusPictureTag); + opus_picture_tag_init(picture_tag.get()); + + if (opus_picture_tag_parse(picture_tag.get(), image) < 0) + { + AUDERR("Error parsing METADATA_BLOCK_PICTURE in %s.\n", filename); + return data; + } + + if (picture_tag->format == OP_PIC_FORMAT_JPEG || + picture_tag->format == OP_PIC_FORMAT_PNG || + picture_tag->format == OP_PIC_FORMAT_GIF) + { + data.insert(reinterpret_cast(picture_tag->data), 0, + picture_tag->data_length); + } + + return data; +} + +static bool update_tuple(OggOpusFile * opus_file, Tuple & tuple) +{ + const OpusTags * tags = op_tags(opus_file, -1); + if (!tags) + return false; + + String old_title = tuple.get_str(Tuple::Title); + const char * new_title = opus_tags_query(tags, "TITLE", 0); + + if (!new_title || (old_title && !std::strcmp(old_title, new_title))) + return false; + + read_tags(tags, tuple); + return true; +} + +static bool update_replay_gain(OggOpusFile * opus_file, + ReplayGainInfo * rg_info) +{ + const OpusTags * tags = op_tags(opus_file, -1); + if (!tags) + return false; + + const char * album_gain = opus_tags_query(tags, "REPLAYGAIN_ALBUM_GAIN", 0); + const char * track_gain = opus_tags_query(tags, "REPLAYGAIN_TRACK_GAIN", 0); + + /* stop if we have no gain values */ + if (!album_gain && !track_gain) + return false; + + /* fill in missing values if we can */ + if (!album_gain) + album_gain = track_gain; + if (!track_gain) + track_gain = album_gain; + + rg_info->album_gain = str_to_double(album_gain); + rg_info->track_gain = str_to_double(track_gain); + + const char * album_peak = opus_tags_query(tags, "REPLAYGAIN_ALBUM_PEAK", 0); + const char * track_peak = opus_tags_query(tags, "REPLAYGAIN_TRACK_PEAK", 0); + + if (!album_peak && !track_peak) + { + /* okay, we have gain but no peak values */ + rg_info->album_peak = 0; + rg_info->track_peak = 0; + } + else + { + /* fill in missing values if we can */ + if (!album_peak) + album_peak = track_peak; + if (!track_peak) + track_peak = album_peak; + + rg_info->album_peak = str_to_double(album_peak); + rg_info->track_peak = str_to_double(track_peak); + } + + AUDDBG("Album gain: %s (%f)\n", album_gain, rg_info->album_gain); + AUDDBG("Track gain: %s (%f)\n", track_gain, rg_info->track_gain); + AUDDBG("Album peak: %s (%f)\n", album_peak, rg_info->album_peak); + AUDDBG("Track peak: %s (%f)\n", track_peak, rg_info->track_peak); + + return true; +} + +bool OpusPlugin::is_our_file(const char * filename, VFSFile & file) +{ + char buf[36]; + + if (file.fread(buf, 1, sizeof buf) != sizeof buf) + return false; + + if (!std::strncmp(buf, "OggS", 4)) + { + if (!std::strncmp(buf + 28, "OpusHead", 8)) + return true; + } + + return false; +} + +bool OpusPlugin::read_tag(const char * filename, VFSFile & file, Tuple & tuple, + Index * image) +{ + OggOpusFile * opus_file = open_file(file); + if (!opus_file) + { + AUDERR("Failed to open Opus file\n"); + return false; + } + + m_channels = op_channel_count(opus_file, -1); + m_bitrate = op_bitrate(opus_file, -1); + tuple.set_format("Opus", m_channels, sample_rate, m_bitrate / 1000); + + int total_time = op_pcm_total(opus_file, -1); + if (total_time > 0) + tuple.set_int(Tuple::Length, total_time / (sample_rate / 1000)); + + const OpusTags * tags = op_tags(opus_file, -1); + if (tags) + read_tags(tags, tuple); + if (image && tags) + * image = read_image_from_tags(tags, filename); + + op_free(opus_file); + return true; +} + +bool OpusPlugin::play(const char * filename, VFSFile & file) +{ + OggOpusFile * opus_file = open_file(file); + if (!opus_file) + { + AUDERR("Failed to open Opus file\n"); + return false; + } + + Index pcm_out; + pcm_out.resize(pcm_bufsize * sizeof(float)); + + bool error = false; + int last_section = -1; + Tuple tuple = get_playback_tuple(); + ReplayGainInfo rg_info; + + set_stream_bitrate(m_bitrate); + + if (update_tuple(opus_file, tuple)) + set_playback_tuple(tuple.ref()); + + if (update_replay_gain(opus_file, &rg_info)) + set_replay_gain(rg_info); + + open_audio(FMT_FLOAT, sample_rate, m_channels); + + while (!check_stop()) + { + int seek_value = check_seek(); + + if (seek_value >= 0 && + op_pcm_seek(opus_file, seek_value * (sample_rate / 1000)) < 0) + { + AUDERR("Failed to seek Opus file\n"); + error = true; + break; + } + + int current_section = last_section; + int bytes = op_read_float(opus_file, pcm_out.begin(), pcm_frames, + ¤t_section); + if (bytes == OP_HOLE) + continue; + + if (bytes <= 0) + break; + + if (update_tuple(opus_file, tuple)) + set_playback_tuple(tuple.ref()); + + if (current_section != last_section) + { + int channels = op_channel_count(opus_file, -1); + + if (channels != m_channels) + { + m_channels = channels; + + if (update_replay_gain(opus_file, &rg_info)) + set_replay_gain(rg_info); + + open_audio(FMT_FLOAT, sample_rate, m_channels); + } + } + + write_audio(pcm_out.begin(), bytes * m_channels * sizeof(float)); + + if (current_section != last_section) + { + m_bitrate = op_bitrate(opus_file, -1); + set_stream_bitrate(m_bitrate); + + last_section = current_section; + } + } + + op_free(opus_file); + return !error; +} + +const char OpusPlugin::about[] = + N_("Opus Decoder Plugin for Audacious\n" + "Copyright 2022 Thomas Lange"); + +const char * const OpusPlugin::exts[] = {"opus", nullptr}; + +const char * const OpusPlugin::mimes[] = { + "application/ogg", + "audio/ogg", + "audio/opus", + "audio/x-opus+ogg", + nullptr +}; diff -Nru audacious-plugins-4.1/src/oss4/meson.build audacious-plugins-4.3.1/src/oss4/meson.build --- audacious-plugins-4.1/src/oss4/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/oss4/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -1,8 +1,3 @@ -# XXX - Auto-detect this path from /etc/oss.conf -oss_inc = '/usr/lib/oss/include' -oss_inc_dirs = [] - - oss_sources = [ 'oss.cc', 'plugin.cc', @@ -10,22 +5,21 @@ ] -if cxx.has_header('sys/soundcard.h', args: '-I' + oss_inc) - have_oss4 = true - conf.set10('HAVE_SYS_SOUNDCARD_H', true) -elif cxx.has_header('soundcard.h', args: '-I' + oss_inc) - have_oss4 = true -else - have_oss4 = false +cmd = run_command('awk', '-F=', '/^OSSLIBDIR/{print $2}', '/etc/oss.conf', check: false) +oss_lib_dir = cmd.returncode() == 0 ? cmd.stdout().strip() : '/usr/lib/oss' +oss_inc_dir = oss_lib_dir / 'include' +oss_inc_dirs = [] + +cmd = run_command('test', '-d', oss_inc_dir, check: false) +if cmd.returncode() == 0 + oss_inc_dirs += oss_inc_dir endif -if have_oss4 - cmd = run_command('test', '-d', oss_inc) - if cmd.returncode() == 0 - oss_inc_dirs += oss_inc - endif +have_oss4 = cxx.has_header('sys/soundcard.h', args: '-I' + oss_inc_dir) + +if have_oss4 shared_module('oss4', oss_sources, dependencies: [audacious_dep], diff -Nru audacious-plugins-4.1/src/oss4/oss.cc audacious-plugins-4.3.1/src/oss4/oss.cc --- audacious-plugins-4.1/src/oss4/oss.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/oss4/oss.cc 2023-04-29 20:17:32.000000000 +0000 @@ -118,7 +118,7 @@ bool OSSPlugin::set_buffer(String &error) { - int milliseconds = aud_get_int(nullptr, "output_buffer_size"); + int milliseconds = aud_get_int("output_buffer_size"); int bytes = frames_to_bytes(aud::rescale(milliseconds, 1000, m_rate)); int fragorder = aud::clamp(log2(bytes / 4), 9, 15); int numfrags = aud::clamp(aud::rdiv(bytes, 1 << fragorder), 4, 32767); diff -Nru audacious-plugins-4.1/src/oss4/oss.h audacious-plugins-4.3.1/src/oss4/oss.h --- audacious-plugins-4.1/src/oss4/oss.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/oss4/oss.h 2023-04-29 20:17:32.000000000 +0000 @@ -26,12 +26,7 @@ #include #include #include - -#ifdef HAVE_SYS_SOUNDCARD_H #include -#else -#include -#endif #include #include diff -Nru audacious-plugins-4.1/src/pipewire/Makefile audacious-plugins-4.3.1/src/pipewire/Makefile --- audacious-plugins-4.1/src/pipewire/Makefile 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/pipewire/Makefile 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,13 @@ +PLUGIN = pipewire${PLUGIN_SUFFIX} + +SRCS = pipewire.cc + +include ../../buildsys.mk +include ../../extra.mk + +plugindir := ${plugindir}/${OUTPUT_PLUGIN_DIR} + +LD = ${CXX} +CFLAGS += ${PLUGIN_CFLAGS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${PIPEWIRE_CFLAGS} -I../.. +LIBS += ${PIPEWIRE_LIBS} diff -Nru audacious-plugins-4.1/src/pipewire/meson.build audacious-plugins-4.3.1/src/pipewire/meson.build --- audacious-plugins-4.1/src/pipewire/meson.build 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/pipewire/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,14 @@ +pipewire_dep = dependency('libpipewire-0.3', version: '>= 0.3.26', required: false) +spa_dep = dependency('libspa-0.2', version: '>= 0.2', required: false) +have_pipewire = pipewire_dep.found() and spa_dep.found() + + +if have_pipewire + shared_module('pipewire', + 'pipewire.cc', + dependencies: [audacious_dep, pipewire_dep, spa_dep], + name_prefix: '', + install: true, + install_dir: output_plugin_dir + ) +endif diff -Nru audacious-plugins-4.1/src/pipewire/pipewire.cc audacious-plugins-4.3.1/src/pipewire/pipewire.cc --- audacious-plugins-4.1/src/pipewire/pipewire.cc 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/pipewire/pipewire.cc 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,592 @@ +/* + * PipeWire Output Plugin for Audacious + * Copyright 2022 Thomas Lange + * + * Based on the PipeWire Output Plugin for Qmmp + * Copyright 2021 Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions, and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions, and the following disclaimer in the documentation + * provided with the distribution. + * + * This software is provided "as is" and without any warranty, express or + * implied. In no event shall the authors be liable for any damages arising from + * the use of this software. + */ + +#include + +#include +#include +#include + +#include +#include +#include + +class PipeWireOutput : public OutputPlugin +{ +public: + static const char about[]; + static const char * const defaults[]; + + static constexpr PluginInfo info = { + N_("PipeWire Output"), + PACKAGE, + about, + nullptr + }; + + constexpr PipeWireOutput() : OutputPlugin(info, 8) {} + + bool init(); + void cleanup(); + + StereoVolume get_volume(); + void set_volume(StereoVolume v); + + bool open_audio(int format, int rate, int channels, String & error); + void close_audio(); + + void period_wait(); + int write_audio(const void * data, int length); + void drain(); + + int get_delay(); + + void pause(bool pause); + void flush(); + +private: + bool init_core(); + bool init_stream(); + + struct pw_stream * create_stream(); + bool connect_stream(enum spa_audio_format format); + + static void on_core_event_done(void * data, uint32_t id, int seq); + static void on_registry_event_global(void * data, uint32_t id, uint32_t permissions, + const char * type, uint32_t version, + const struct spa_dict * props); + static void on_state_changed(void * data, enum pw_stream_state old, + enum pw_stream_state state, const char * error); + static void on_process(void * data); + static void on_drained(void * data); + + static enum spa_audio_format to_pipewire_format(int format); + static void set_channel_map(struct spa_audio_info_raw * info, int channels); + + struct pw_thread_loop * m_loop = nullptr; + struct pw_stream * m_stream = nullptr; + struct pw_context * m_context = nullptr; + struct pw_core * m_core = nullptr; + struct pw_registry * m_registry = nullptr; + + struct spa_hook m_core_listener = {}; + struct spa_hook m_stream_listener = {}; + struct spa_hook m_registry_listener = {}; + + bool m_inited = false; + bool m_has_sinks = false; + bool m_ignore_state_change = false; + + int m_aud_format = 0; + int m_core_init_seq = 0; + + unsigned char * m_buffer = nullptr; + unsigned int m_buffer_at = 0; + unsigned int m_buffer_size = 0; + unsigned int m_frames = 0; + unsigned int m_stride = 0; + unsigned int m_rate = 0; + unsigned int m_channels = 0; +}; + +EXPORT PipeWireOutput aud_plugin_instance; + +const char PipeWireOutput::about[] = + N_("PipeWire Output Plugin for Audacious\n" + "Copyright 2022 Thomas Lange\n\n" + "Based on the PipeWire Output Plugin for Qmmp\n" + "Copyright 2021 Ilya Kotov"); + +const char * const PipeWireOutput::defaults[] = { + "volume_left", "50", + "volume_right", "50", + nullptr +}; + +StereoVolume PipeWireOutput::get_volume() +{ + return {aud_get_int("pipewire", "volume_left"), + aud_get_int("pipewire", "volume_right")}; +} + +void PipeWireOutput::set_volume(StereoVolume v) +{ + aud_set_int("pipewire", "volume_left", v.left); + aud_set_int("pipewire", "volume_right", v.right); + + if (!m_loop) + return; + + float values[m_channels]; + + if (m_channels == 2) + { + values[0] = v.left / 100.0f; + values[1] = v.right / 100.0f; + } + else + { + for (unsigned int i = 0; i < m_channels; i++) + values[i] = aud::max(v.left, v.right) / 100.0f; + } + + pw_thread_loop_lock(m_loop); + pw_stream_set_control(m_stream, SPA_PROP_channelVolumes, m_channels, values, nullptr); + pw_thread_loop_unlock(m_loop); +} + +void PipeWireOutput::pause(bool pause) +{ + pw_thread_loop_lock(m_loop); + pw_stream_set_active(m_stream, !pause); + pw_thread_loop_unlock(m_loop); +} + +int PipeWireOutput::get_delay() +{ + return (m_buffer_at / m_stride + m_frames) * 1000 / m_rate; +} + +void PipeWireOutput::drain() +{ + pw_thread_loop_lock(m_loop); + if (m_buffer_at > 0) + pw_thread_loop_timed_wait(m_loop, 2); + + pw_stream_flush(m_stream, true); + pw_thread_loop_timed_wait(m_loop, 2); + pw_thread_loop_unlock(m_loop); +} + +void PipeWireOutput::flush() +{ + pw_thread_loop_lock(m_loop); + m_buffer_at = 0; + pw_thread_loop_unlock(m_loop); + pw_stream_flush(m_stream, false); +} + +void PipeWireOutput::period_wait() +{ + if (m_buffer_at != m_buffer_size) + return; + + pw_thread_loop_lock(m_loop); + pw_thread_loop_timed_wait(m_loop, 1); + pw_thread_loop_unlock(m_loop); +} + +int PipeWireOutput::write_audio(const void * data, int length) +{ + pw_thread_loop_lock(m_loop); + + auto size = aud::min(m_buffer_size - m_buffer_at, length); + memcpy(m_buffer + m_buffer_at, data, size); + m_buffer_at += size; + + pw_thread_loop_unlock(m_loop); + return size; +} + +void PipeWireOutput::close_audio() +{ + if (m_stream) + { + pw_thread_loop_lock(m_loop); + m_ignore_state_change = true; + pw_stream_disconnect(m_stream); + pw_stream_destroy(m_stream); + m_ignore_state_change = false; + m_stream = nullptr; + pw_thread_loop_unlock(m_loop); + } + + if (m_loop) + pw_thread_loop_stop(m_loop); + + if (m_registry) + { + pw_proxy_destroy(reinterpret_cast(m_registry)); + m_registry = nullptr; + } + + if (m_core) + { + pw_core_disconnect(m_core); + m_core = nullptr; + } + + if (m_context) + { + pw_context_destroy(m_context); + m_context = nullptr; + } + + if (m_loop) + { + pw_thread_loop_destroy(m_loop); + m_loop = nullptr; + } + + if (m_buffer) + { + delete[] m_buffer; + m_buffer = nullptr; + } +} + +bool PipeWireOutput::open_audio(int format, int rate, int channels, String & error) +{ + m_aud_format = format; + m_rate = rate; + m_channels = channels; + + if (!init_core() || !init_stream()) + { + close_audio(); + return false; + } + + return true; +} + +bool PipeWireOutput::init() +{ + aud_config_set_defaults("pipewire", defaults); + pw_init(nullptr, nullptr); + return true; +} + +void PipeWireOutput::cleanup() +{ + pw_deinit(); +} + +bool PipeWireOutput::init_core() +{ + static const struct pw_core_events core_events = { + .version = PW_VERSION_CORE_EVENTS, + .done = PipeWireOutput::on_core_event_done + }; + + static const struct pw_registry_events registry_events = { + .version = PW_VERSION_REGISTRY_EVENTS, + .global = PipeWireOutput::on_registry_event_global + }; + + if (!(m_loop = pw_thread_loop_new("pipewire-main-loop", nullptr))) + { + AUDERR("PipeWireOutput: unable to create main loop\n"); + return false; + } + + if (!(m_context = pw_context_new(pw_thread_loop_get_loop(m_loop), nullptr, 0))) + { + AUDERR("PipeWireOutput: unable to create context\n"); + return false; + } + + if (!(m_core = pw_context_connect(m_context, nullptr, 0))) + { + AUDERR("PipeWireOutput: unable to connect context\n"); + return false; + } + + if (!(m_registry = pw_core_get_registry(m_core, PW_VERSION_REGISTRY, 0))) + { + AUDERR("PipeWireOutput: unable to get registry interface\n"); + return false; + } + + pw_core_add_listener(m_core, &m_core_listener, &core_events, this); + pw_registry_add_listener(m_registry, &m_registry_listener, ®istry_events, this); + + m_core_init_seq = pw_core_sync(m_core, PW_ID_CORE, m_core_init_seq); + + if (pw_thread_loop_start(m_loop) != 0) + { + AUDERR("PipeWireOutput: unable to start loop\n"); + return false; + } + + pw_thread_loop_lock(m_loop); + while (!m_inited) + { + if (pw_thread_loop_timed_wait(m_loop, 2) != 0) + break; + } + pw_thread_loop_unlock(m_loop); + + if (!m_inited || !m_has_sinks) + { + AUDERR("PipeWireOutput: unable to initialize loop\n"); + return false; + } + + m_stride = FMT_SIZEOF(m_aud_format) * m_channels; + m_frames = aud::clamp(64, ceilf(2048 * m_rate / 48000.0f), 8192); + m_buffer_size = m_frames * m_stride; + m_buffer = new unsigned char[m_buffer_size]; + + return true; +} + +bool PipeWireOutput::init_stream() +{ + static const struct pw_stream_events stream_events = { + .version = PW_VERSION_STREAM_EVENTS, + .state_changed = PipeWireOutput::on_state_changed, + .process = PipeWireOutput::on_process, + .drained = PipeWireOutput::on_drained + }; + + pw_thread_loop_lock(m_loop); + + if (!(m_stream = create_stream())) + { + AUDERR("PipeWireOutput: unable to create stream\n"); + pw_thread_loop_unlock(m_loop); + return false; + } + + m_stream_listener = {}; + pw_stream_add_listener(m_stream, &m_stream_listener, &stream_events, this); + + auto pw_format = to_pipewire_format(m_aud_format); + if (pw_format == SPA_AUDIO_FORMAT_UNKNOWN) + { + AUDERR("PipeWireOutput: unknown audio format\n"); + pw_thread_loop_unlock(m_loop); + return false; + } + + if (!connect_stream(pw_format)) + { + AUDERR("PipeWireOutput: unable to connect stream\n"); + pw_thread_loop_unlock(m_loop); + return false; + } + + pw_thread_loop_unlock(m_loop); + return true; +} + +struct pw_stream * PipeWireOutput::create_stream() +{ + struct pw_properties * props = + pw_properties_new(PW_KEY_MEDIA_TYPE, "Audio", + PW_KEY_MEDIA_CATEGORY, "Playback", + PW_KEY_MEDIA_ROLE, "Music", + PW_KEY_APP_ID, "audacious", + PW_KEY_APP_ICON_NAME, "audacious", + PW_KEY_APP_NAME, _("Audacious"), + nullptr); + + pw_properties_setf(props, PW_KEY_NODE_LATENCY, "%u/%u", m_frames, m_rate); + + return pw_stream_new(m_core, _("Playback"), props); +} + +bool PipeWireOutput::connect_stream(enum spa_audio_format format) +{ + uint8_t buffer[1024]; + struct spa_pod_builder b = SPA_POD_BUILDER_INIT(buffer, sizeof buffer); + + struct spa_audio_info_raw audio_info = { + .format = format, + .flags = SPA_AUDIO_FLAG_NONE, + .rate = m_rate, + .channels = m_channels + }; + + set_channel_map(&audio_info, m_channels); + + const struct spa_pod * params[1]; + params[0] = spa_format_audio_raw_build(&b, SPA_PARAM_EnumFormat, &audio_info); + + auto stream_flags = static_cast(PW_STREAM_FLAG_AUTOCONNECT | + PW_STREAM_FLAG_MAP_BUFFERS | + PW_STREAM_FLAG_RT_PROCESS); + + return pw_stream_connect(m_stream, PW_DIRECTION_OUTPUT, PW_ID_ANY, + stream_flags, params, aud::n_elems(params)) == 0; +} + +void PipeWireOutput::on_core_event_done(void * data, uint32_t id, int seq) +{ + PipeWireOutput * o = static_cast(data); + + if (id != PW_ID_CORE || seq != o->m_core_init_seq) + return; + + spa_hook_remove(&o->m_registry_listener); + spa_hook_remove(&o->m_core_listener); + + o->m_inited = true; + pw_thread_loop_signal(o->m_loop, false); +} + +void PipeWireOutput::on_registry_event_global(void * data, uint32_t id, uint32_t permissions, + const char * type, uint32_t version, + const struct spa_dict * props) +{ + PipeWireOutput * o = static_cast(data); + + if (strcmp(type, PW_TYPE_INTERFACE_Node) != 0) + return; + + const char * media_class = spa_dict_lookup(props, PW_KEY_MEDIA_CLASS); + if (!media_class) + return; + + if (strcmp(media_class, "Audio/Sink") != 0) + return; + + o->m_has_sinks = true; + o->m_core_init_seq = pw_core_sync(o->m_core, PW_ID_CORE, o->m_core_init_seq); +} + +void PipeWireOutput::on_state_changed(void * data, enum pw_stream_state old, + enum pw_stream_state state, const char * error) +{ + PipeWireOutput * o = static_cast(data); + + if (o->m_ignore_state_change) + return; + + if (state == PW_STREAM_STATE_UNCONNECTED || + state == PW_STREAM_STATE_PAUSED || + state == PW_STREAM_STATE_STREAMING) + { + pw_thread_loop_signal(o->m_loop, false); + } +} + +void PipeWireOutput::on_process(void * data) +{ + PipeWireOutput * o = static_cast(data); + struct pw_buffer * b; + struct spa_buffer * buf; + void * dst; + + if (!o->m_buffer_at) + { + pw_thread_loop_signal(o->m_loop, false); + return; + } + + if (!(b = pw_stream_dequeue_buffer(o->m_stream))) + { + AUDWARN("PipeWireOutput: out of buffers\n"); + return; + } + + buf = b->buffer; + + if (!(dst = buf->datas[0].data)) + { + AUDWARN("PipeWireOutput: no data pointer\n"); + return; + } + + auto size = aud::min(buf->datas[0].maxsize, o->m_buffer_at); + memcpy(dst, o->m_buffer, size); + o->m_buffer_at -= size; + memmove(o->m_buffer, o->m_buffer + size, o->m_buffer_at); + + b->buffer->datas[0].chunk->offset = 0; + b->buffer->datas[0].chunk->size = o->m_buffer_size; + b->buffer->datas[0].chunk->stride = o->m_stride; + + pw_stream_queue_buffer(o->m_stream, b); + pw_thread_loop_signal(o->m_loop, false); +} + +void PipeWireOutput::on_drained(void * data) +{ + PipeWireOutput * o = static_cast(data); + pw_thread_loop_signal(o->m_loop, false); +} + +enum spa_audio_format PipeWireOutput::to_pipewire_format(int format) +{ + switch (format) + { + case FMT_FLOAT: return SPA_AUDIO_FORMAT_F32_LE; + + case FMT_S8: return SPA_AUDIO_FORMAT_S8; + case FMT_U8: return SPA_AUDIO_FORMAT_U8; + + case FMT_S16_LE: return SPA_AUDIO_FORMAT_S16_LE; + case FMT_S16_BE: return SPA_AUDIO_FORMAT_S16_BE; + case FMT_U16_LE: return SPA_AUDIO_FORMAT_U16_LE; + case FMT_U16_BE: return SPA_AUDIO_FORMAT_U16_BE; + + case FMT_S24_LE: return SPA_AUDIO_FORMAT_S24_32_LE; + case FMT_S24_BE: return SPA_AUDIO_FORMAT_S24_32_BE; + case FMT_U24_LE: return SPA_AUDIO_FORMAT_U24_32_LE; + case FMT_U24_BE: return SPA_AUDIO_FORMAT_U24_32_BE; + + case FMT_S24_3LE: return SPA_AUDIO_FORMAT_S24_LE; + case FMT_S24_3BE: return SPA_AUDIO_FORMAT_S24_BE; + case FMT_U24_3LE: return SPA_AUDIO_FORMAT_U24_LE; + case FMT_U24_3BE: return SPA_AUDIO_FORMAT_U24_BE; + + case FMT_S32_LE: return SPA_AUDIO_FORMAT_S32_LE; + case FMT_S32_BE: return SPA_AUDIO_FORMAT_S32_BE; + case FMT_U32_LE: return SPA_AUDIO_FORMAT_U32_LE; + case FMT_U32_BE: return SPA_AUDIO_FORMAT_U32_BE; + + default: return SPA_AUDIO_FORMAT_UNKNOWN; + } +} + +void PipeWireOutput::set_channel_map(struct spa_audio_info_raw * info, int channels) +{ + switch (channels) + { + case 9: + info->position[8] = SPA_AUDIO_CHANNEL_RC; + // Fall through + case 8: + info->position[6] = SPA_AUDIO_CHANNEL_FLC; + info->position[7] = SPA_AUDIO_CHANNEL_FRC; + // Fall through + case 6: + info->position[4] = SPA_AUDIO_CHANNEL_RL; + info->position[5] = SPA_AUDIO_CHANNEL_RR; + // Fall through + case 4: + info->position[3] = SPA_AUDIO_CHANNEL_LFE; + // Fall through + case 3: + info->position[2] = SPA_AUDIO_CHANNEL_FC; + // Fall through + case 2: + info->position[0] = SPA_AUDIO_CHANNEL_FL; + info->position[1] = SPA_AUDIO_CHANNEL_FR; + break; + case 1: + info->position[0] = SPA_AUDIO_CHANNEL_MONO; + break; + } +} diff -Nru audacious-plugins-4.1/src/playlist-manager/playlist-manager.cc audacious-plugins-4.3.1/src/playlist-manager/playlist-manager.cc --- audacious-plugins-4.1/src/playlist-manager/playlist-manager.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/playlist-manager/playlist-manager.cc 2023-04-29 20:17:32.000000000 +0000 @@ -24,6 +24,7 @@ #include #include +#include #include #include #include @@ -192,7 +193,7 @@ void * PlaylistManager::get_gtk_widget () { - GtkWidget * playman_vbox = gtk_vbox_new (false, 6); + GtkWidget * playman_vbox = audgui_vbox_new (6); /* ListView */ GtkWidget * playman_pl_lv = audgui_list_new (& callbacks, nullptr, Playlist::n_playlists ()); @@ -214,7 +215,7 @@ gtk_box_pack_start ((GtkBox *) playman_vbox, playman_pl_lv_sw, true, true, 0); /* ButtonBox */ - GtkWidget * playman_button_hbox = gtk_hbox_new (false, 6); + GtkWidget * playman_button_hbox = audgui_hbox_new (6); GtkWidget * new_button = audgui_button_new (_("_New"), "document-new", [] (void *) { Playlist::new_playlist (); }, nullptr); GtkWidget * delete_button = audgui_button_new (_("_Remove"), "edit-delete", delete_cb, nullptr); diff -Nru audacious-plugins-4.1/src/playlist-manager-qt/playlist-manager-qt.cc audacious-plugins-4.3.1/src/playlist-manager-qt/playlist-manager-qt.cc --- audacious-plugins-4.1/src/playlist-manager-qt/playlist-manager-qt.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/playlist-manager-qt/playlist-manager-qt.cc 2023-04-29 20:17:32.000000000 +0000 @@ -34,6 +34,8 @@ #include #include +#include "../ui-common/qt-compat.h" + class PlaylistManagerQt : public GeneralPlugin { public: @@ -295,10 +297,10 @@ switch (dropIndicatorPosition()) { case AboveItem: - to = indexAt(event->pos()).row(); + to = indexAt(QtCompat::pos(event)).row(); break; case BelowItem: - to = indexAt(event->pos()).row() + 1; + to = indexAt(QtCompat::pos(event)).row() + 1; break; case OnViewport: to = Playlist::n_playlists(); @@ -333,7 +335,7 @@ static QToolButton * new_tool_button(const char * text, const char * icon) { auto button = new QToolButton; - button->setIcon(audqt::get_icon(icon)); + button->setIcon(QIcon::fromTheme(icon)); button->setText(audqt::translate_str(text)); button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); return button; diff -Nru audacious-plugins-4.1/src/psf/eng_psf2.cc audacious-plugins-4.3.1/src/psf/eng_psf2.cc --- audacious-plugins-4.1/src/psf/eng_psf2.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/psf/eng_psf2.cc 2023-04-29 20:17:32.000000000 +0000 @@ -399,7 +399,7 @@ uofs += dlength; } - sprintf(tfn, "iopfiles/%s", cptr); + snprintf(tfn, sizeof tfn, "iopfiles/%s", cptr); f = fopen(tfn, "wb"); fwrite(buf, uncomp, 1, f); fclose(f); diff -Nru audacious-plugins-4.1/src/psf/psx.cc audacious-plugins-4.3.1/src/psf/psx.cc --- audacious-plugins-4.1/src/psf/psx.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/psf/psx.cc 2023-04-29 20:17:32.000000000 +0000 @@ -209,7 +209,7 @@ va_list va; char s_text[ 1024 ]; va_start( va, a ); - vsprintf( s_text, a, va ); + vsnprintf( s_text, sizeof s_text, a, va ); va_end( va ); logerror( "%08x: GTE: %08x %s\n", mipscpu.pc, INS_COFUN( mipscpu.op ), s_text ); } @@ -1721,7 +1721,7 @@ #ifdef MAME_DEBUG ret = DasmMIPS( buffer, pc ); #else - sprintf( buffer, "$%08x", cpu_readop32( pc ) ); + snprintf( buffer, 10, "$%08x", cpu_readop32( pc ) ); ret = 4; #endif change_pc( mipscpu.pc ); diff -Nru audacious-plugins-4.1/src/psf/psx_hw.cc audacious-plugins-4.3.1/src/psf/psx_hw.cc --- audacious-plugins-4.1/src/psf/psx_hw.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/psf/psx_hw.cc 2023-04-29 20:17:32.000000000 +0000 @@ -2092,7 +2092,7 @@ mips_get_info(curparm, &mipsinfo); // printf("parameter %d = %x\n", curparm-pstart, mipsinfo.i); curparm++; - sprintf(temp, tfmt, (int32_t)mipsinfo.i); + snprintf(temp, sizeof temp, tfmt, (int32_t)mipsinfo.i); } else { @@ -2102,7 +2102,7 @@ pstr = (char *)psx_ram; pstr += (mipsinfo.i & 0x1fffff); - sprintf(temp, tfmt, pstr); + snprintf(temp, sizeof temp, tfmt, pstr); } pstr = &temp[0]; diff -Nru audacious-plugins-4.1/src/qtaudio/meson.build audacious-plugins-4.3.1/src/qtaudio/meson.build --- audacious-plugins-4.1/src/qtaudio/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/qtaudio/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -1,4 +1,14 @@ -qt_multimedia_dep = dependency('qt5', version: qt_req, required: false, modules: ['Multimedia']) +if get_option('qt6') + qt_multimedia_dep = dependency('qt6', version: qt_req, required: false, modules: ['Multimedia']) + + if qt_multimedia_dep.found() + warning('The Qt Multimedia output plugin is not yet compatible with Qt 6.') + qt_multimedia_dep = dependency('', required: false) + endif +else + qt_multimedia_dep = dependency('qt5', version: qt_req, required: false, modules: ['Multimedia']) +endif + have_qtaudio = qt_multimedia_dep.found() diff -Nru audacious-plugins-4.1/src/qtglspectrum/meson.build audacious-plugins-4.3.1/src/qtglspectrum/meson.build --- audacious-plugins-4.1/src/qtglspectrum/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/qtglspectrum/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -1,4 +1,9 @@ -qt_opengl_dep = dependency('qt5', version: '>= 5.4', required: false, modules: ['OpenGL']) +if get_option('qt6') + qt_opengl_dep = dependency('qt6', version: qt_req, required: false, modules: ['OpenGL', 'OpenGLWidgets']) +else + qt_opengl_dep = dependency('qt5', version: '>= 5.4', required: false, modules: ['OpenGL']) +endif + have_qtglspectrum = qt_opengl_dep.found() diff -Nru audacious-plugins-4.1/src/qthotkey/gui.cc audacious-plugins-4.3.1/src/qthotkey/gui.cc --- audacious-plugins-4.1/src/qthotkey/gui.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/qthotkey/gui.cc 2023-04-29 20:17:32.000000000 +0000 @@ -40,11 +40,14 @@ #include #include +#include #include #include #include #include +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) #include +#endif #include #include @@ -106,8 +109,17 @@ QStringList strings; - KeySym keysym; - keysym = XkbKeycodeToKeysym(QX11Info::display(), key, 0, 0); +#if QT_VERSION >= QT_VERSION_CHECK(6, 2, 0) + Display * xdisplay = reinterpret_cast(qApp + ->nativeInterface() + ->display()); +#elif QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + // should never be reached + Display * xdisplay = nullptr; +#else + Display * xdisplay = QX11Info::display(); +#endif + KeySym keysym = XkbKeycodeToKeysym(xdisplay, key, 0, 0); if (keysym == 0 || keysym == NoSymbol) { text = QString::fromLocal8Bit("#%1").arg(key); @@ -168,7 +180,7 @@ group_box_layout(new QGridLayout(group_box)), action_label(new QLabel(_("Action:"), group_box)), key_binding_label(new QLabel(_("Key Binding:"), group_box)), - add_button(new QPushButton(audqt::get_icon("list-add"), + add_button(new QPushButton(QIcon::fromTheme("list-add"), audqt::translate_str(N_("_Add")), this)), add_button_layout(new QHBoxLayout) { @@ -270,7 +282,7 @@ } control->button = new QToolButton(group_box); - control->button->setIcon(audqt::get_icon("edit-delete")); + control->button->setIcon(QIcon::fromTheme("edit-delete")); int row = group_box_layout->rowCount(); diff -Nru audacious-plugins-4.1/src/qthotkey/meson.build audacious-plugins-4.3.1/src/qthotkey/meson.build --- audacious-plugins-4.1/src/qthotkey/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/qthotkey/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -1,12 +1,20 @@ -qtx11extras_dep = dependency('qt5', version: qt_req, required: false, modules: ['X11Extras']) -have_qthotkey = qtx11extras_dep.found() +x11_dep = dependency('x11', required: false) + +if get_option('qt6') + # QX11Application requires QtGui private headers and Qt >= 6.2 + qtx11_dep = dependency('qt6', version: [qt_req, '>= 6.2'], private_headers: true, required: false, modules: ['Core', 'Gui']) +else + qtx11_dep = dependency('qt5', version: qt_req, required: false, modules: ['X11Extras']) +endif + +have_qthotkey = x11_dep.found() and qtx11_dep.found() and not (have_darwin or have_windows) if have_qthotkey shared_module('qthotkey', 'gui.cc', 'plugin.cc', - dependencies: [audacious_dep, qt_dep, audqt_dep, qtx11extras_dep], + dependencies: [audacious_dep, qt_dep, audqt_dep, x11_dep, qtx11_dep], name_prefix: '', install: true, install_dir: general_plugin_dir diff -Nru audacious-plugins-4.1/src/qthotkey/plugin.cc audacious-plugins-4.3.1/src/qthotkey/plugin.cc --- audacious-plugins-4.1/src/qthotkey/plugin.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/qthotkey/plugin.cc 2023-04-29 20:17:32.000000000 +0000 @@ -42,7 +42,10 @@ #include #include #include +#include +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) #include +#endif #include #include @@ -95,6 +98,7 @@ static PluginConfig plugin_cfg; static int grabbed = 0; +static Display * xdisplay = nullptr; unsigned int numlock_mask = 0; unsigned int scrolllock_mask = 0; unsigned int capslock_mask = 0; @@ -336,7 +340,7 @@ return; } - keycode = XKeysymToKeycode(QX11Info::display(), keysym); + keycode = XKeysymToKeycode(xdisplay, keysym); if (keycode == 0) { return; @@ -436,13 +440,33 @@ { audqt::init(); - if (!QX11Info::isPlatformX11()) +#if QT_VERSION >= QT_VERSION_CHECK(6, 2, 0) && defined(Q_OS_UNIX) + auto * x11_interface = + qApp->nativeInterface(); + bool has_x11 = x11_interface != nullptr; +#elif QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + // the interface is not implemented + bool has_x11 = false; +#else + bool has_x11 = QX11Info::isPlatformX11(); +#endif + + if (!has_x11) { AUDERR("Global Hotkey plugin only supports X11.\n"); audqt::cleanup(); return false; } +#if QT_VERSION >= QT_VERSION_CHECK(6, 2, 0) + xdisplay = reinterpret_cast(x11_interface->display()); +#elif QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + Q_UNREACHABLE(); + xdisplay = nullptr; +#else + xdisplay = QX11Info::display(); +#endif + load_config(); grab_keys(); QCoreApplication::instance()->installNativeEventFilter(&event_filter); @@ -610,7 +634,6 @@ PluginConfig * plugin_cfg = get_config(); XErrorHandler old_handler = nullptr; - Display * xdisplay = QX11Info::display(); if (grabbed || (!xdisplay)) { @@ -704,7 +727,6 @@ PluginConfig * plugin_cfg = get_config(); XErrorHandler old_handler = nullptr; - Display * xdisplay = QX11Info::display(); if ((!grabbed) || (!xdisplay)) { diff -Nru audacious-plugins-4.1/src/qtui/main_window.cc audacious-plugins-4.3.1/src/qtui/main_window.cc --- audacious-plugins-4.1/src/qtui/main_window.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/qtui/main_window.cc 2023-04-29 20:17:32.000000000 +0000 @@ -52,6 +52,7 @@ { setObjectName(item->id()); setWindowTitle(item->name()); + setWindowRole("plugin"); setWidget(item->widget()); setContextMenuPolicy(Qt::PreventContextMenu); @@ -117,7 +118,7 @@ static QToolButton * create_menu_button(QWidget * parent, QMenuBar * menubar) { auto button = new QToolButton(parent); - button->setIcon(audqt::get_icon("audacious")); + button->setIcon(QIcon::fromTheme("audacious")); button->setPopupMode(QToolButton::InstantPopup); button->setStyleSheet("QToolButton::menu-indicator { image: none; }"); button->setToolTip(_("Menu")); @@ -195,6 +196,7 @@ setMenuBar(m_menubar); setDockNestingEnabled(true); + setWindowRole("mainwindow"); audqt::register_dock_host(this); @@ -342,13 +344,13 @@ { if (!aud_drct_get_playing() || aud_drct_get_paused()) { - m_play_pause_action->setIcon(audqt::get_icon("media-playback-start")); + m_play_pause_action->setIcon(QIcon::fromTheme("media-playback-start")); m_play_pause_action->setText(_("Play")); m_play_pause_action->setToolTip(_("Play")); } else { - m_play_pause_action->setIcon(audqt::get_icon("media-playback-pause")); + m_play_pause_action->setIcon(QIcon::fromTheme("media-playback-pause")); m_play_pause_action->setText(_("Pause")); m_play_pause_action->setToolTip(_("Pause")); } diff -Nru audacious-plugins-4.1/src/qtui/playlist-qt.cc audacious-plugins-4.3.1/src/qtui/playlist-qt.cc --- audacious-plugins-4.1/src/qtui/playlist-qt.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/qtui/playlist-qt.cc 2023-04-29 20:17:32.000000000 +0000 @@ -32,6 +32,7 @@ #include "playlist_model.h" #include "../ui-common/menu-ops.h" +#include "../ui-common/qt-compat.h" PlaylistWidget::PlaylistWidget(QWidget * parent, Playlist playlist) : audqt::TreeView(parent), m_playlist(playlist), @@ -228,10 +229,10 @@ switch (dropIndicatorPosition()) { case AboveItem: - to = indexToRow(indexAt(event->pos())); + to = indexToRow(indexAt(QtCompat::pos(event))); break; case BelowItem: - to = indexToRow(indexAt(event->pos())) + 1; + to = indexToRow(indexAt(QtCompat::pos(event))) + 1; break; case OnViewport: to = m_playlist.n_entries(); diff -Nru audacious-plugins-4.1/src/qtui/playlist_header.cc audacious-plugins-4.3.1/src/qtui/playlist_header.cc --- audacious-plugins-4.1/src/qtui/playlist_header.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/qtui/playlist_header.cc 2023-04-29 20:17:32.000000000 +0000 @@ -37,7 +37,8 @@ static const char * const s_col_keys[] = { "number", "title", "artist", "year", "album", "album-artist", "track", "genre", "queued", "length", - "path", "filename", "custom", "bitrate", "comment"}; + "path", "filename", "custom", "bitrate", "comment", + "publisher", "catalog-number"}; static const int s_default_widths[] = { 25, // entry number @@ -54,7 +55,9 @@ 275, // filename 275, // custom title 75, // bitrate - 275 // comment + 275, // comment + 175, // publisher + 75 // catalog number }; static const Playlist::SortType s_sort_types[] = { @@ -72,7 +75,9 @@ Playlist::Filename, // file name Playlist::FormattedTitle, // custom title Playlist::n_sort_types, // bitrate - Playlist::Comment // comment + Playlist::Comment, // comment, + Playlist::Publisher, // publisher + Playlist::CatalogNum // catalog number }; static_assert(aud::n_elems(s_col_keys) == PlaylistModel::n_cols, diff -Nru audacious-plugins-4.1/src/qtui/playlist_model.cc audacious-plugins-4.3.1/src/qtui/playlist_model.cc --- audacious-plugins-4.1/src/qtui/playlist_model.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/qtui/playlist_model.cc 2023-04-29 20:17:32.000000000 +0000 @@ -33,13 +33,15 @@ N_("Entry Number"), N_("Title"), N_("Artist"), N_("Year"), N_("Album"), N_("Album Artist"), N_("Track"), N_("Genre"), N_("Queue Position"), N_("Length"), N_("File Path"), N_("File Name"), - N_("Custom Title"), N_("Bitrate"), N_("Comment")}; + N_("Custom Title"), N_("Bitrate"), N_("Comment"), N_("Publisher"), + N_("Catalog Number")}; static const Tuple::Field s_fields[] = { Tuple::Invalid, Tuple::Title, Tuple::Artist, Tuple::Year, Tuple::Album, Tuple::AlbumArtist, Tuple::Track, Tuple::Genre, Tuple::Invalid, Tuple::Length, Tuple::Path, Tuple::Basename, - Tuple::FormattedTitle, Tuple::Bitrate, Tuple::Comment}; + Tuple::FormattedTitle, Tuple::Bitrate, Tuple::Comment, Tuple::Publisher, + Tuple::CatalogNum}; static_assert(aud::n_elems(PlaylistModel::labels) == PlaylistModel::n_cols, "update PlaylistModel::labels"); @@ -124,7 +126,7 @@ case Length: return QString(str_format_time(val)); case Bitrate: - return QString("%1 kbps").arg(val); + return QString("%1 kbit/s").arg(val); default: return QString("%1").arg(val); } @@ -146,7 +148,7 @@ icon_name = aud_drct_get_paused() ? "media-playback-pause" : "media-playback-start"; - return audqt::get_icon(icon_name); + return QIcon::fromTheme(icon_name); } else if (col == m_playing_col) { @@ -186,6 +188,8 @@ return QString(_("Q#")); case Track: return QString(_("T#")); + case CatalogNum: + return QString(_("C#")); } return QString(_(labels[col])); @@ -309,7 +313,8 @@ String strings[] = {tuple.get_str(Tuple::Title), tuple.get_str(Tuple::Artist), - tuple.get_str(Tuple::Album)}; + tuple.get_str(Tuple::Album), + tuple.get_str(Tuple::Basename)}; for (auto & term : m_searchTerms) { diff -Nru audacious-plugins-4.1/src/qtui/playlist_model.h audacious-plugins-4.3.1/src/qtui/playlist_model.h --- audacious-plugins-4.1/src/qtui/playlist_model.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/qtui/playlist_model.h 2023-04-29 20:17:32.000000000 +0000 @@ -45,6 +45,8 @@ CustomTitle, Bitrate, Comment, + Publisher, + CatalogNum, n_cols }; diff -Nru audacious-plugins-4.1/src/qtui/playlist_tabs.cc audacious-plugins-4.3.1/src/qtui/playlist_tabs.cc --- audacious-plugins-4.1/src/qtui/playlist_tabs.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/qtui/playlist_tabs.cc 2023-04-29 20:17:32.000000000 +0000 @@ -45,7 +45,9 @@ void activateSearch() { m_searchBar->show(); - m_searchBar->setFocus(); + // use ShortcutFocusReason to select text in the search entry + // (the default OtherFocusReason does not select text) + m_searchBar->setFocus(Qt::ShortcutFocusReason); } private: @@ -239,7 +241,7 @@ QIcon icon; int playing = Playlist::playing_playlist().index(); if (playing >= 0) - icon = audqt::get_icon(aud_drct_get_paused() ? "media-playback-pause" + icon = QIcon::fromTheme(aud_drct_get_paused() ? "media-playback-pause" : "media-playback-start"); int tabs = count(); @@ -324,12 +326,12 @@ auto menu = new QMenu(this); auto playlist = Playlist::by_index(idx); - auto play_act = new QAction(audqt::get_icon("media-playback-start"), + auto play_act = new QAction(QIcon::fromTheme("media-playback-start"), audqt::translate_str(N_("_Play")), menu); auto rename_act = - new QAction(audqt::get_icon("insert-text"), + new QAction(QIcon::fromTheme("insert-text"), audqt::translate_str(N_("_Rename ...")), menu); - auto remove_act = new QAction(audqt::get_icon("edit-delete"), + auto remove_act = new QAction(QIcon::fromTheme("edit-delete"), audqt::translate_str(N_("Remo_ve")), menu); QObject::connect(play_act, &QAction::triggered, @@ -396,13 +398,13 @@ void PlaylistTabBar::updateSettings() { -#if QT_VERSION >= 0x050400 +#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) setAutoHide(false); #endif switch (aud_get_int("qtui", "playlist_tabs_visible")) { -#if QT_VERSION >= 0x050400 +#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) case PlaylistTabVisibility::AutoHide: setAutoHide(true); break; diff -Nru audacious-plugins-4.1/src/qtui/search_bar.cc audacious-plugins-4.3.1/src/qtui/search_bar.cc --- audacious-plugins-4.1/src/qtui/search_bar.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/qtui/search_bar.cc 2023-04-29 20:17:32.000000000 +0000 @@ -32,7 +32,7 @@ static QPushButton * makeButton(const char * icon, QWidget * parent) { - auto button = new QPushButton(audqt::get_icon(icon), QString(), parent); + auto button = new QPushButton(QIcon::fromTheme(icon), QString(), parent); button->setFlat(true); button->setFocusPolicy(Qt::NoFocus); return button; diff -Nru audacious-plugins-4.1/src/qtui/status_bar.cc audacious-plugins-4.3.1/src/qtui/status_bar.cc --- audacious-plugins-4.1/src/qtui/status_bar.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/qtui/status_bar.cc 2023-04-29 20:17:32.000000000 +0000 @@ -171,7 +171,7 @@ } if (bitrate > 0) - str_append_printf(buf, _("%d kbps"), bitrate / 1000); + str_append_printf(buf, _("%d kbit/s"), bitrate / 1000); codec_label->setText((const char *)buf); codec_label->show(); diff -Nru audacious-plugins-4.1/src/qtui/time_slider.cc audacious-plugins-4.3.1/src/qtui/time_slider.cc --- audacious-plugins-4.1/src/qtui/time_slider.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/qtui/time_slider.cc 2023-04-29 20:17:32.000000000 +0000 @@ -49,9 +49,7 @@ public: TimeSliderStyle() { - // detect and respond to application-wide style change - connect(qApp->style(), &QObject::destroyed, this, - &TimeSliderStyle::resetBaseStyle); + audqt::setup_proxy_style(this); } int styleHint(QStyle::StyleHint hint, const QStyleOption * option = nullptr, @@ -66,14 +64,6 @@ return styleHint; } - -private: - void resetBaseStyle() - { - setBaseStyle(nullptr); - connect(qApp->style(), &QObject::destroyed, this, - &TimeSliderStyle::resetBaseStyle); - } }; TimeSlider::TimeSlider(QWidget * parent) diff -Nru audacious-plugins-4.1/src/qtui/tool_bar.cc audacious-plugins-4.3.1/src/qtui/tool_bar.cc --- audacious-plugins-4.1/src/qtui/tool_bar.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/qtui/tool_bar.cc 2023-04-29 20:17:32.000000000 +0000 @@ -47,7 +47,7 @@ a = addSeparator(); else if (item.icon_name) { - a = new QAction(audqt::get_icon(item.icon_name), + a = new QAction(QIcon::fromTheme(item.icon_name), audqt::translate_str(item.name), this); if (item.tooltip_text) diff -Nru audacious-plugins-4.1/src/search-tool/search-model.cc audacious-plugins-4.3.1/src/search-tool/search-model.cc --- audacious-plugins-4.1/src/search-tool/search-model.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/search-tool/search-model.cc 2023-04-29 20:17:32.000000000 +0000 @@ -28,6 +28,27 @@ m_database.clear (); } +void SearchModel::add_to_database (int entry, std::initializer_list keys) +{ + Item * parent = nullptr; + auto hash = & m_database; + + for (auto & key : keys) + { + if (! key.name) + continue; + + Item * item = hash->lookup (key); + if (! item) + item = hash->add (key, Item (key.field, key.name, parent)); + + item->matches.append (entry); + + parent = item; + hash = & item->children; + } +} + void SearchModel::create_database (Playlist playlist) { destroy_database (); @@ -37,36 +58,37 @@ for (int e = 0; e < entries; e ++) { Tuple tuple = playlist.entry_tuple (e, Playlist::NoWait); + String album_artist = tuple.get_str (Tuple::AlbumArtist); + String artist = tuple.get_str (Tuple::Artist); - aud::array fields; - fields[SearchField::Genre] = tuple.get_str (Tuple::Genre); - fields[SearchField::Artist] = tuple.get_str (Tuple::Artist); - fields[SearchField::Album] = tuple.get_str (Tuple::Album); - fields[SearchField::Title] = tuple.get_str (Tuple::Title); - - Item * parent = nullptr; - SimpleHash * hash = & m_database; - - for (auto f : aud::range ()) + if (album_artist && album_artist != artist) { - if (fields[f]) - { - Key key = {f, fields[f]}; - Item * item = hash->lookup (key); - - if (! item) - item = hash->add (key, Item (f, fields[f], parent)); - - item->matches.append (e); - - /* genre is outside the normal hierarchy */ - if (f != SearchField::Genre) - { - parent = item; - hash = & item->children; - } - } + /* album and song have different artists; + * add separately under respective artists */ + add_to_database (e, + {{SearchField::Artist, album_artist}, + {SearchField::Album, tuple.get_str (Tuple::Album)}}); + /* add Title node under a HiddenAlbum node so that it can + * still be searched by album name (without listing the + * album twice) */ + add_to_database (e, + {{SearchField::Artist, artist}, + {SearchField::HiddenAlbum, tuple.get_str (Tuple::Album)}, + {SearchField::Title, tuple.get_str (Tuple::Title)}}); } + else + { + /* album and song have the same artist; + * add hierarchically under that artist */ + add_to_database (e, + {{SearchField::Artist, artist}, + {SearchField::Album, tuple.get_str (Tuple::Album)}, + {SearchField::Title, tuple.get_str (Tuple::Title)}}); + } + + /* add separately under genre */ + add_to_database (e, + {{SearchField::Genre, tuple.get_str (Tuple::Genre)}}); } m_playlist = playlist; @@ -92,7 +114,8 @@ } /* adding an item with exactly one child is redundant, so avoid it */ - if (! new_mask && item.children.n_items () != 1) + if (! new_mask && item.children.n_items () != 1 && + item.field != SearchField::HiddenAlbum) results.append (& item); search_recurse (item.children, terms, new_mask, results); diff -Nru audacious-plugins-4.1/src/search-tool/search-model.h audacious-plugins-4.3.1/src/search-tool/search-model.h --- audacious-plugins-4.1/src/search-tool/search-model.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/search-tool/search-model.h 2023-04-29 20:17:32.000000000 +0000 @@ -21,6 +21,7 @@ #define SEARCHMODEL_H #include +#include #include #include @@ -28,10 +29,22 @@ Genre, Artist, Album, + HiddenAlbum, Title, count }; +static constexpr aud::array start_tags = + {"", "", "", "", ""}; +static constexpr aud::array end_tags = + {"", "", "", "", ""}; + +static inline const char * parent_prefix (SearchField parent) +{ + return (parent == SearchField::Album || parent == + SearchField::HiddenAlbum) ? _("on") : _("by"); +} + struct Key { SearchField field; @@ -73,6 +86,8 @@ void do_search (const Index & terms, int max_results); private: + void add_to_database (int entry, std::initializer_list keys); + Playlist m_playlist; SimpleHash m_database; Index m_items; diff -Nru audacious-plugins-4.1/src/search-tool/search-tool.cc audacious-plugins-4.3.1/src/search-tool/search-tool.cc --- audacious-plugins-4.1/src/search-tool/search-tool.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/search-tool/search-tool.cc 2023-04-29 20:17:32.000000000 +0000 @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -268,11 +269,6 @@ static void list_get_value (void * user, int row, int column, GValue * value) { - static constexpr aud::array start_tags = - {"", "", "", ""}; - static constexpr aud::array end_tags = - {"", "", "", ""}; - auto escape = [] (const char * s) { return CharPtr (g_markup_escape_text (s, -1)); }; @@ -302,7 +298,7 @@ auto parent = (item.parent->parent ? item.parent->parent : item.parent); desc.insert (-1, " "); - desc.insert (-1, (parent->field == SearchField::Album) ? _("on") : _("by")); + desc.insert (-1, parent_prefix (parent->field)); desc.insert (-1, " "); desc.insert (-1, start_tags[parent->field]); desc.insert (-1, escape (parent->name)); @@ -350,7 +346,12 @@ GtkWidget * menu = gtk_menu_new (); audgui_menu_init (menu, {items}, nullptr); + +#ifdef USE_GTK3 + gtk_menu_popup_at_pointer ((GtkMenu *) menu, (const GdkEvent *) event); +#else gtk_menu_popup ((GtkMenu *) menu, nullptr, nullptr, nullptr, nullptr, event->button, event->time); +#endif } static Index list_get_data (void * user) @@ -436,10 +437,13 @@ void * SearchTool::get_gtk_widget () { - GtkWidget * vbox = gtk_vbox_new (false, 6); + GtkWidget * vbox = audgui_vbox_new (6); entry = gtk_entry_new (); gtk_entry_set_icon_from_icon_name ((GtkEntry *) entry, GTK_ENTRY_ICON_PRIMARY, "edit-find"); +#ifdef USE_GTK3 + gtk_entry_set_placeholder_text ((GtkEntry *) entry, _("Search library")); +#endif g_signal_connect (entry, "destroy", (GCallback) gtk_widget_destroyed, & entry); gtk_box_pack_start ((GtkBox *) vbox, entry, false, false, 0); @@ -476,7 +480,7 @@ gtk_widget_set_no_show_all (stats_label, true); gtk_box_pack_start ((GtkBox *) vbox, stats_label, false, false, 0); - GtkWidget * hbox = gtk_hbox_new (false, 6); + GtkWidget * hbox = audgui_hbox_new (6); gtk_box_pack_end ((GtkBox *) vbox, hbox, false, false, 0); GtkWidget * file_entry = audgui_file_entry_new diff -Nru audacious-plugins-4.1/src/search-tool-qt/search-model.cc audacious-plugins-4.3.1/src/search-tool-qt/search-model.cc --- audacious-plugins-4.1/src/search-tool-qt/search-model.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/search-tool-qt/search-model.cc 2023-04-29 20:17:32.000000000 +0000 @@ -26,11 +26,6 @@ static QString create_item_label (const Item & item) { - static constexpr aud::array start_tags = - {"", "", "", ""}; - static constexpr aud::array end_tags = - {"", "", "", ""}; - QString string = start_tags[item.field]; string += QString ((item.field == SearchField::Genre) ? @@ -61,7 +56,7 @@ { auto parent = (item.parent->parent ? item.parent->parent : item.parent); - string += (parent->field == SearchField::Album) ? _("on") : _("by"); + string += parent_prefix (parent->field); string += ' '; string += start_tags[parent->field]; string += QString (parent->name).toHtmlEscaped (); @@ -148,6 +143,27 @@ m_database.clear (); } +void SearchModel::add_to_database (int entry, std::initializer_list keys) +{ + Item * parent = nullptr; + auto hash = & m_database; + + for (auto & key : keys) + { + if (! key.name) + continue; + + Item * item = hash->lookup (key); + if (! item) + item = hash->add (key, Item (key.field, key.name, parent)); + + item->matches.append (entry); + + parent = item; + hash = & item->children; + } +} + void SearchModel::create_database (Playlist playlist) { destroy_database (); @@ -157,36 +173,37 @@ for (int e = 0; e < entries; e ++) { Tuple tuple = playlist.entry_tuple (e, Playlist::NoWait); + String album_artist = tuple.get_str (Tuple::AlbumArtist); + String artist = tuple.get_str (Tuple::Artist); - aud::array fields; - fields[SearchField::Genre] = tuple.get_str (Tuple::Genre); - fields[SearchField::Artist] = tuple.get_str (Tuple::Artist); - fields[SearchField::Album] = tuple.get_str (Tuple::Album); - fields[SearchField::Title] = tuple.get_str (Tuple::Title); - - Item * parent = nullptr; - SimpleHash * hash = & m_database; - - for (auto f : aud::range ()) + if (album_artist && album_artist != artist) + { + /* album and song have different artists; + * add separately under respective artists */ + add_to_database (e, + {{SearchField::Artist, album_artist}, + {SearchField::Album, tuple.get_str (Tuple::Album)}}); + /* add Title node under a HiddenAlbum node so that it can + * still be searched by album name (without listing the + * album twice) */ + add_to_database (e, + {{SearchField::Artist, artist}, + {SearchField::HiddenAlbum, tuple.get_str (Tuple::Album)}, + {SearchField::Title, tuple.get_str (Tuple::Title)}}); + } + else { - if (fields[f]) - { - Key key = {f, fields[f]}; - Item * item = hash->lookup (key); - - if (! item) - item = hash->add (key, Item (f, fields[f], parent)); - - item->matches.append (e); - - /* genre is outside the normal hierarchy */ - if (f != SearchField::Genre) - { - parent = item; - hash = & item->children; - } - } + /* album and song have the same artist; + * add hierarchically under that artist */ + add_to_database (e, + {{SearchField::Artist, artist}, + {SearchField::Album, tuple.get_str (Tuple::Album)}, + {SearchField::Title, tuple.get_str (Tuple::Title)}}); } + + /* add separately under genre */ + add_to_database (e, + {{SearchField::Genre, tuple.get_str (Tuple::Genre)}}); } m_playlist = playlist; @@ -212,7 +229,8 @@ } /* adding an item with exactly one child is redundant, so avoid it */ - if (! new_mask && item.children.n_items () != 1) + if (! new_mask && item.children.n_items () != 1 && + item.field != SearchField::HiddenAlbum) results.append (& item); search_recurse (item.children, terms, new_mask, results); diff -Nru audacious-plugins-4.1/src/search-tool-qt/search-model.h audacious-plugins-4.3.1/src/search-tool-qt/search-model.h --- audacious-plugins-4.1/src/search-tool-qt/search-model.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/search-tool-qt/search-model.h 2023-04-29 20:17:32.000000000 +0000 @@ -23,6 +23,7 @@ #include #include +#include #include #include @@ -30,10 +31,22 @@ Genre, Artist, Album, + HiddenAlbum, Title, count }; +static constexpr aud::array start_tags = + {"", "", "", "", ""}; +static constexpr aud::array end_tags = + {"", "", "", "", ""}; + +static inline const char * parent_prefix (SearchField parent) +{ + return (parent == SearchField::Album || parent == + SearchField::HiddenAlbum) ? _("on") : _("by"); +} + struct Key { SearchField field; @@ -100,6 +113,8 @@ QMimeData * mimeData (const QModelIndexList & indexes) const; private: + void add_to_database (int entry, std::initializer_list keys); + Playlist m_playlist; SimpleHash m_database; Index m_items; diff -Nru audacious-plugins-4.1/src/search-tool-qt/search-tool-qt.cc audacious-plugins-4.3.1/src/search-tool-qt/search-tool-qt.cc --- audacious-plugins-4.1/src/search-tool-qt/search-tool-qt.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/search-tool-qt/search-tool-qt.cc 2023-04-29 20:17:32.000000000 +0000 @@ -193,7 +193,7 @@ m_help_label (_("To import your music library into Audacious, " "choose a folder and then click the \"refresh\" icon.")), m_wait_label (_("Please wait ...")), - m_refresh_btn (audqt::get_icon ("view-refresh"), QString ()), + m_refresh_btn (QIcon::fromTheme ("view-refresh"), QString ()), m_file_entry (audqt::file_entry_new (this, _("Choose Folder"), QFileDialog::Directory, QFileDialog::AcceptOpen)) { @@ -495,11 +495,11 @@ { auto menu = new QMenu (this); - auto play_act = new QAction (audqt::get_icon ("media-playback-start"), + auto play_act = new QAction (QIcon::fromTheme ("media-playback-start"), audqt::translate_str (N_("_Play")), menu); - auto create_act = new QAction (audqt::get_icon ("document-new"), + auto create_act = new QAction (QIcon::fromTheme ("document-new"), audqt::translate_str (N_("_Create Playlist")), menu); - auto add_act = new QAction (audqt::get_icon ("list-add"), + auto add_act = new QAction (QIcon::fromTheme ("list-add"), audqt::translate_str (N_("_Add to Playlist")), menu); QObject::connect (play_act, & QAction::triggered, this, & SearchWidget::action_play); diff -Nru audacious-plugins-4.1/src/sid/xmms-sid.cc audacious-plugins-4.3.1/src/sid/xmms-sid.cc --- audacious-plugins-4.1/src/sid/xmms-sid.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/sid/xmms-sid.cc 2023-04-29 20:17:32.000000000 +0000 @@ -156,8 +156,8 @@ /* Check minimum playtime */ int tmpLength = info.subTunes[subTune - 1].tuneLength; if (xs_cfg.playMinTimeEnable && (tmpLength >= 0)) { - if (tmpLength < xs_cfg.playMinTime) - tmpLength = xs_cfg.playMinTime; + if (tmpLength < xs_cfg.playMinTime * 1000) + tmpLength = xs_cfg.playMinTime * 1000; } /* Initialize song */ @@ -204,7 +204,7 @@ } if (tmpLength >= 0) { - if (time_played >= tmpLength * 1000) + if (time_played >= tmpLength) break; } } @@ -231,7 +231,7 @@ if (subTune > 0 && subTune <= info.nsubTunes) { int tmpInt = info.subTunes[subTune - 1].tuneLength; - tuple.set_int (Tuple::Length, (tmpInt < 0) ? -1 : tmpInt * 1000); + tuple.set_int (Tuple::Length, (tmpInt < 0) ? -1 : tmpInt); } else subTune = 1; @@ -248,7 +248,7 @@ for (int count = 0; count < info.nsubTunes; count++) { if (count + 1 == info.startTune || !xs_cfg.subAutoMinOnly || info.subTunes[count].tuneLength < 0 || - info.subTunes[count].tuneLength >= xs_cfg.subAutoMinTime) + info.subTunes[count].tuneLength >= xs_cfg.subAutoMinTime * 1000) subtunes.append (count + 1); } diff -Nru audacious-plugins-4.1/src/sid/xs_sidplay2.cc audacious-plugins-4.3.1/src/sid/xs_sidplay2.cc --- audacious-plugins-4.1/src/sid/xs_sidplay2.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/sid/xs_sidplay2.cc 2023-04-29 20:17:32.000000000 +0000 @@ -140,9 +140,9 @@ } /* Load ROMs */ - VFSFile kernal_file("file://" SIDDATADIR "sidplayfp/kernal", "r"); - VFSFile basic_file("file://" SIDDATADIR "sidplayfp/basic", "r"); - VFSFile chargen_file("file://" SIDDATADIR "sidplayfp/chargen", "r"); + VFSFile kernal_file("file://" SIDDATADIR "/sidplayfp/kernal", "r"); + VFSFile basic_file("file://" SIDDATADIR "/sidplayfp/basic", "r"); + VFSFile chargen_file("file://" SIDDATADIR "/sidplayfp/chargen", "r"); if (kernal_file && basic_file && chargen_file) { @@ -155,7 +155,7 @@ } /* Load song length database */ - state.database_loaded = state.database.open(SIDDATADIR "sidplayfp/Songlengths.txt"); + state.database_loaded = state.database.open(SIDDATADIR "/sidplayfp/Songlengths.md5"); /* Create the sidtune */ state.currTune = new SidTune(0); @@ -257,7 +257,7 @@ for (int i = 0; i < ti.nsubTunes; i++) { myTune.selectSong(i + 1); - ti.subTunes[i].tuneLength = state.database.length(myTune); + ti.subTunes[i].tuneLength = state.database.lengthMs(myTune); } pthread_mutex_unlock(&state.database_mutex); diff -Nru audacious-plugins-4.1/src/skins/dock.cc audacious-plugins-4.3.1/src/skins/dock.cc --- audacious-plugins-4.1/src/skins/dock.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins/dock.cc 2023-04-29 20:17:32.000000000 +0000 @@ -264,14 +264,23 @@ hori = SNAP_DISTANCE + 1; vert = SNAP_DISTANCE + 1; +#ifdef USE_GTK3 + GdkDisplay * display = gdk_display_get_default (); + int monitors = gdk_display_get_n_monitors (display); +#else GdkScreen * screen = gdk_screen_get_default (); int monitors = gdk_screen_get_n_monitors (screen); +#endif for (int m = 0; m < monitors; m ++) { GdkRectangle rect; - gdk_screen_get_monitor_geometry (screen, m, & rect); +#ifdef USE_GTK3 + gdk_monitor_get_geometry (gdk_display_get_monitor (display, m), & rect); +#else + gdk_screen_get_monitor_geometry (screen, m, & rect); +#endif for (DockWindow & dw : windows) { if (! dw.docked) diff -Nru audacious-plugins-4.1/src/skins/eq-graph.cc audacious-plugins-4.3.1/src/skins/eq-graph.cc --- audacious-plugins-4.1/src/skins/eq-graph.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins/eq-graph.cc 2023-04-29 20:17:32.000000000 +0000 @@ -88,7 +88,7 @@ return; skin_draw_pixbuf (cr, SKIN_EQMAIN, 0, 294, 0, 0, 113, 19); - skin_draw_pixbuf (cr, SKIN_EQMAIN, 0, 314, 0, 9 + (aud_get_double (nullptr, + skin_draw_pixbuf (cr, SKIN_EQMAIN, 0, 314, 0, 9 + (aud_get_double ( "equalizer_preamp") * 9 + AUD_EQ_MAX_GAIN / 2) / AUD_EQ_MAX_GAIN, 113, 1); double bands[N]; diff -Nru audacious-plugins-4.1/src/skins/equalizer.cc audacious-plugins-4.3.1/src/skins/equalizer.cc --- audacious-plugins-4.1/src/skins/equalizer.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins/equalizer.cc 2023-04-29 20:17:32.000000000 +0000 @@ -106,8 +106,7 @@ if (event->button == 3 && event->type == GDK_BUTTON_PRESS) { - menu_popup (UI_MENU_MAIN, event->x_root, event->y_root, false, false, - event->button, event->time); + menu_popup (UI_MENU_MAIN, event->x_root, event->y_root, false, false, event); return true; } @@ -269,6 +268,7 @@ equalizerwin = new EqWindow (shaded); equalizerwin->setWindowTitle (_("Audacious Equalizer")); + equalizerwin->setWindowRole ("equalizer"); } void equalizerwin_unhook () diff -Nru audacious-plugins-4.1/src/skins/main.cc audacious-plugins-4.3.1/src/skins/main.cc --- audacious-plugins-4.1/src/skins/main.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins/main.cc 2023-04-29 20:17:32.000000000 +0000 @@ -163,12 +163,12 @@ } } -static void mainwin_menubtn_cb () +static void mainwin_menubtn_cb (Button * button, GdkEventButton * event) { int x, y; mainwin->getPosition (& x, & y); menu_popup (UI_MENU_MAIN, x + 6 * config.scale, - y + MAINWIN_SHADED_HEIGHT * config.scale, false, false, 1, GDK_CURRENT_TIME); + y + MAINWIN_SHADED_HEIGHT * config.scale, false, false, event); } static void mainwin_minimize_cb () @@ -345,7 +345,7 @@ mainwin_monostereo->set_num_channels (channels); if (bitrate > 0) - snprintf (scratch, sizeof scratch, "%d kbps", bitrate / 1000); + snprintf (scratch, sizeof scratch, "%d kbit/s", bitrate / 1000); else scratch[0] = 0; @@ -514,8 +514,7 @@ if (event->button == 3 && event->type == GDK_BUTTON_PRESS) { - menu_popup (UI_MENU_MAIN, event->x_root, event->y_root, false, false, - event->button, event->time); + menu_popup (UI_MENU_MAIN, event->x_root, event->y_root, false, false, event); return true; } @@ -560,8 +559,7 @@ static void mainwin_playback_rpress (Button * button, GdkEventButton * event) { - menu_popup (UI_MENU_PLAYBACK, event->x_root, event->y_root, false, false, - event->button, event->time); + menu_popup (UI_MENU_PLAYBACK, event->x_root, event->y_root, false, false, event); } bool Window::keypress (GdkEventKey * event) @@ -899,7 +897,7 @@ switch (i) { case MENUROW_OPTIONS: - menu_popup (UI_MENU_VIEW, event->x_root, event->y_root, false, false, 1, event->time); + menu_popup (UI_MENU_VIEW, event->x_root, event->y_root, false, false, event); break; case MENUROW_ALWAYS: view_set_on_top (! aud_get_bool ("skins", "always_on_top")); @@ -933,8 +931,7 @@ { if (event->type == GDK_BUTTON_PRESS && event->button == 3) { - menu_popup (UI_MENU_PLAYBACK, event->x_root, event->y_root, false, - false, event->button, event->time); + menu_popup (UI_MENU_PLAYBACK, event->x_root, event->y_root, false, false, event); return true; } @@ -1162,6 +1159,7 @@ bool shaded = aud_get_bool ("skins", "player_shaded"); mainwin = new MainWindow (shaded); + mainwin->setWindowRole("mainwindow"); GtkWidget * w = mainwin->gtk (); drag_dest_set (w); diff -Nru audacious-plugins-4.1/src/skins/menus.cc audacious-plugins-4.3.1/src/skins/menus.cc --- audacious-plugins-4.1/src/skins/menus.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins/menus.cc 2023-04-29 20:17:32.000000000 +0000 @@ -67,8 +67,8 @@ static void configure_output () { audgui_show_prefs_for_plugin_type (PluginType::Output); } static void configure_visualizations () { audgui_show_prefs_for_plugin_type (PluginType::Vis); } -static void skins_volume_up () { mainwin_set_volume_diff (5); } -static void skins_volume_down () { mainwin_set_volume_diff (-5); } +static void skins_volume_up () { mainwin_set_volume_diff (aud_get_int ("volume_delta")); } +static void skins_volume_down () { mainwin_set_volume_diff (-aud_get_int ("volume_delta")); } static const AudguiMenuItem output_items[] = { MenuCommand (N_("Volume Up"), "audio-volume-high", '+', NO_MOD, skins_volume_up), @@ -212,8 +212,8 @@ MenuCommand (N_("By Artist"), nullptr, NO_KEY, sort_sel_artist), MenuCommand (N_("By Album"), nullptr, NO_KEY, sort_sel_album), MenuCommand (N_("By Album Artist"), nullptr, NO_KEY, sort_sel_album_artist), - MenuCommand (N_("By Genre"), nullptr, NO_KEY, sort_sel_genre), MenuCommand (N_("By Release Date"), nullptr, NO_KEY, sort_sel_date), + MenuCommand (N_("By Genre"), nullptr, NO_KEY, sort_sel_genre), MenuCommand (N_("By Length"), nullptr, NO_KEY, sort_sel_length), MenuCommand (N_("By File Name"), nullptr, NO_KEY, sort_sel_filename), MenuCommand (N_("By File Path"), nullptr, NO_KEY, sort_sel_path), @@ -284,6 +284,7 @@ return accel; } +#ifndef USE_GTK3 typedef struct { int x, y; gboolean leftward, upward; @@ -309,10 +310,16 @@ else * y = aud::min (pos->y, geom.y + geom.height - request.height); } +#endif void menu_popup (int id, int x, int y, gboolean leftward, gboolean upward, - int button, int time) + const GdkEventButton * event) { +#ifdef USE_GTK3 + gtk_menu_popup_at_pointer ((GtkMenu *) menus[id], (const GdkEvent *) event); +#else const MenuPosition pos = {x, y, leftward, upward}; - gtk_menu_popup ((GtkMenu *) menus[id], nullptr, nullptr, position_menu, (void *) & pos, button, time); + gtk_menu_popup ((GtkMenu *) menus[id], nullptr, nullptr, position_menu, + (void *) & pos, event->button, event->time); +#endif } diff -Nru audacious-plugins-4.1/src/skins/menus.h audacious-plugins-4.3.1/src/skins/menus.h --- audacious-plugins-4.1/src/skins/menus.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins/menus.h 2023-04-29 20:17:32.000000000 +0000 @@ -41,6 +41,6 @@ void menu_cleanup (); GtkAccelGroup * menu_get_accel_group (); -void menu_popup (int id, int x, int y, gboolean leftward, gboolean upward, int button, int time); +void menu_popup (int id, int x, int y, gboolean leftward, gboolean upward, const GdkEventButton * event); #endif /* SKINS_MENUS_H */ diff -Nru audacious-plugins-4.1/src/skins/playlist-widget.cc audacious-plugins-4.3.1/src/skins/playlist-widget.cc --- audacious-plugins-4.1/src/skins/playlist-widget.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins/playlist-widget.cc 2023-04-29 20:17:32.000000000 +0000 @@ -683,7 +683,7 @@ menu_popup ((position == -1) ? UI_MENU_PLAYLIST : UI_MENU_PLAYLIST_CONTEXT, event->x_root, event->y_root, false, - false, 3, event->time); + false, event); break; default: return false; diff -Nru audacious-plugins-4.1/src/skins/playlistwin.cc audacious-plugins-4.3.1/src/skins/playlistwin.cc --- audacious-plugins-4.1/src/skins/playlistwin.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins/playlistwin.cc 2023-04-29 20:17:32.000000000 +0000 @@ -94,7 +94,6 @@ static int resize_base_width, resize_base_height; static int drop_position; -static bool song_changed; static void update_info () { @@ -244,7 +243,7 @@ if (event->button == 3 && event->type == GDK_BUTTON_PRESS) { - menu_popup (UI_MENU_PLAYLIST, event->x_root, event->y_root, false, false, 3, event->time); + menu_popup (UI_MENU_PLAYLIST, event->x_root, event->y_root, false, false, event); return true; } @@ -326,7 +325,7 @@ playlistwin->getPosition (& xpos, & ypos); menu_popup (UI_MENU_PLAYLIST_ADD, xpos + 12 * config.scale, ypos + (config.playlist_height - 8) * config.scale, false, true, - event->button, event->time); + event); } static void button_sub_cb (Button * button, GdkEventButton * event) @@ -335,7 +334,7 @@ playlistwin->getPosition (& xpos, & ypos); menu_popup (UI_MENU_PLAYLIST_REMOVE, xpos + 40 * config.scale, ypos + (config.playlist_height - 8) * config.scale, false, true, - event->button, event->time); + event); } static void button_sel_cb (Button * button, GdkEventButton * event) @@ -344,7 +343,7 @@ playlistwin->getPosition (& xpos, & ypos); menu_popup (UI_MENU_PLAYLIST_SELECT, xpos + 68 * config.scale, ypos + (config.playlist_height - 8) * config.scale, false, true, - event->button, event->time); + event); } static void button_misc_cb (Button * button, GdkEventButton * event) @@ -353,7 +352,7 @@ playlistwin->getPosition (& xpos, & ypos); menu_popup (UI_MENU_PLAYLIST_SORT, xpos + 100 * config.scale, ypos + (config.playlist_height - 8) * config.scale, false, true, - event->button, event->time); + event); } static void button_list_cb (Button * button, GdkEventButton * event) @@ -363,7 +362,7 @@ menu_popup (UI_MENU_PLAYLIST, xpos + (config.playlist_width - 12) * config.scale, ypos + (config.playlist_height - 8) * config.scale, true, true, - event->button, event->time); + event); } static void playlistwin_create_widgets () @@ -490,6 +489,7 @@ playlistwin = new PlWindow (shaded); playlistwin->setWindowTitle (_("Audacious Playlist Editor")); + playlistwin->setWindowRole ("playlist"); GtkWidget * w = playlistwin->gtk (); drag_dest_set (w); @@ -505,12 +505,6 @@ { playlistwin_list->refresh (); - if (song_changed) - { - playlistwin_list->set_focused (Playlist::active_playlist ().get_position ()); - song_changed = false; - } - update_info (); update_rollup_text (); } @@ -522,10 +516,11 @@ int row = list.get_position (); if (row >= 0) + { list.select_entry (row, true); - - if (list == Playlist::active_playlist ()) - song_changed = true; + if (list == Playlist::active_playlist ()) + playlistwin_list->set_focused (row); + } } void playlistwin_create () @@ -536,8 +531,6 @@ update_info (); update_rollup_text (); - song_changed = false; - hook_associate ("playlist position", follow_cb, nullptr); hook_associate ("playlist activate", update_cb, nullptr); hook_associate ("playlist update", update_cb, nullptr); diff -Nru audacious-plugins-4.1/src/skins/plugin-window.cc audacious-plugins-4.3.1/src/skins/plugin-window.cc --- audacious-plugins-4.1/src/skins/plugin-window.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins/plugin-window.cc 2023-04-29 20:17:32.000000000 +0000 @@ -62,6 +62,7 @@ { GtkWidget * window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title ((GtkWindow *) window, aud_plugin_get_name (plugin)); + gtk_window_set_role ((GtkWindow *) window, "plugin"); gtk_window_set_transient_for ((GtkWindow *) window, (GtkWindow *) mainwin->gtk ()); gtk_container_set_border_width ((GtkContainer *) window, 2); gtk_container_add ((GtkContainer *) window, widget); diff -Nru audacious-plugins-4.1/src/skins/search-select.cc audacious-plugins-4.3.1/src/skins/search-select.cc --- audacious-plugins-4.1/src/skins/search-select.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins/search-select.cc 2023-04-29 20:17:32.000000000 +0000 @@ -33,6 +33,7 @@ #include #include #include +#include static void search_cbt_cb (GtkWidget * called_cbt, GtkWidget * other_cbt) { @@ -60,7 +61,8 @@ { items.append (playlist.entry_filename (entry), - playlist.entry_tuple (entry, Playlist::NoWait)); + playlist.entry_tuple (entry, Playlist::NoWait), + playlist.entry_decoder (entry, Playlist::NoWait)); } } @@ -76,7 +78,7 @@ _("Cancel"), GTK_RESPONSE_REJECT, _("Search"), GTK_RESPONSE_ACCEPT, nullptr); /* help text and logo */ - GtkWidget * hbox = gtk_hbox_new (false, 6); + GtkWidget * hbox = audgui_hbox_new (6); GtkWidget * logo = gtk_image_new_from_icon_name ("edit-find", GTK_ICON_SIZE_DIALOG); GtkWidget * helptext = gtk_label_new (_("Select entries in playlist by filling one or more " "fields. Fields use regular expressions syntax, case-insensitive. If you don't know how " @@ -87,29 +89,46 @@ /* title */ GtkWidget * label_title = gtk_label_new (_("Title:")); - gtk_misc_set_alignment ((GtkMisc *) label_title, 1, 0.5); GtkWidget * entry_title = gtk_entry_new (); g_signal_connect (entry_title, "key-press-event", (GCallback) search_kp_cb, dialog); /* album */ GtkWidget * label_album = gtk_label_new (_("Album:")); - gtk_misc_set_alignment ((GtkMisc *) label_album, 1, 0.5); GtkWidget * entry_album = gtk_entry_new (); g_signal_connect (entry_album, "key-press-event", (GCallback) search_kp_cb, dialog); /* artist */ GtkWidget * label_performer = gtk_label_new (_("Artist:")); - gtk_misc_set_alignment ((GtkMisc *) label_performer, 1, 0.5); GtkWidget * entry_performer = gtk_entry_new (); g_signal_connect (entry_performer, "key-press-event", (GCallback) search_kp_cb, dialog); /* file name */ GtkWidget * label_file_name = gtk_label_new (_("File Name:")); - gtk_misc_set_alignment ((GtkMisc *) label_file_name, 1, 0.5); GtkWidget * entry_file_name = gtk_entry_new (); g_signal_connect (entry_file_name, "key-press-event", (GCallback) search_kp_cb, dialog); +#ifdef USE_GTK3 + gtk_label_set_max_width_chars ((GtkLabel *) helptext, 60); + + gtk_widget_set_hexpand (entry_title, true); + gtk_widget_set_halign (label_title, GTK_ALIGN_START); + + gtk_widget_set_hexpand (entry_album, true); + gtk_widget_set_halign (label_album, GTK_ALIGN_START); + + gtk_widget_set_hexpand (entry_performer, true); + gtk_widget_set_halign (label_performer, GTK_ALIGN_START); + + gtk_widget_set_hexpand (entry_file_name, true); + gtk_widget_set_halign (label_file_name, GTK_ALIGN_START); +#else + gtk_misc_set_alignment ((GtkMisc *) label_title, 1, 0.5); + gtk_misc_set_alignment ((GtkMisc *) label_album, 1, 0.5); + gtk_misc_set_alignment ((GtkMisc *) label_performer, 1, 0.5); + gtk_misc_set_alignment ((GtkMisc *) label_file_name, 1, 0.5); +#endif + /* some options that control behaviour */ GtkWidget * checkbt_clearprevsel = gtk_check_button_new_with_label ( _("Clear previous selection before searching")); @@ -127,9 +146,29 @@ (GCallback) search_cbt_cb, checkbt_autoenqueue); /* place fields in grid */ - GtkTable * grid = (GtkTable *) gtk_table_new (0, 0, false); - gtk_table_set_row_spacings (grid, 6); - gtk_table_set_col_spacings (grid, 6); + GtkWidget * main_grid = audgui_grid_new (); + audgui_grid_set_row_spacing (main_grid, 6); + audgui_grid_set_column_spacing (main_grid, 6); + +#ifdef USE_GTK3 + gtk_widget_set_margin_bottom (hbox, 8); + gtk_widget_set_margin_top (checkbt_clearprevsel, 8); + + GtkGrid * grid = (GtkGrid *) main_grid; + gtk_grid_attach (grid, hbox, 0, 0, 2, 1); + gtk_grid_attach (grid, label_title, 0, 1, 1, 1); + gtk_grid_attach (grid, entry_title, 1, 1, 1, 1); + gtk_grid_attach (grid, label_album, 0, 2, 1, 1); + gtk_grid_attach (grid, entry_album, 1, 2, 1, 1); + gtk_grid_attach (grid, label_performer, 0, 3, 1, 1); + gtk_grid_attach (grid, entry_performer, 1, 3, 1, 1); + gtk_grid_attach (grid, label_file_name, 0, 4, 1, 1); + gtk_grid_attach (grid, entry_file_name, 1, 4, 1, 1); + gtk_grid_attach (grid, checkbt_clearprevsel, 0, 5, 2, 1); + gtk_grid_attach (grid, checkbt_autoenqueue, 0, 6, 2, 1); + gtk_grid_attach (grid, checkbt_newplaylist, 0, 7, 2, 1); +#else + GtkTable * grid = (GtkTable *) main_grid; gtk_table_attach_defaults (grid, hbox, 0, 2, 0, 1); gtk_table_attach (grid, label_title, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0); gtk_table_attach_defaults (grid, entry_title, 1, 2, 1, 2); @@ -142,10 +181,11 @@ gtk_table_attach_defaults (grid, checkbt_clearprevsel, 0, 2, 5, 6); gtk_table_attach_defaults (grid, checkbt_autoenqueue, 0, 2, 6, 7); gtk_table_attach_defaults (grid, checkbt_newplaylist, 0, 2, 7, 8); +#endif - gtk_container_set_border_width ((GtkContainer *) grid, 5); + gtk_container_set_border_width ((GtkContainer *) main_grid, 5); gtk_container_add ((GtkContainer *) gtk_dialog_get_content_area - ((GtkDialog *) dialog), (GtkWidget *) grid); + ((GtkDialog *) dialog), main_grid); gtk_widget_show_all (dialog); if (gtk_dialog_run ((GtkDialog *) dialog) == GTK_RESPONSE_ACCEPT) diff -Nru audacious-plugins-4.1/src/skins/skinselector.cc audacious-plugins-4.3.1/src/skins/skinselector.cc --- audacious-plugins-4.1/src/skins/skinselector.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins/skinselector.cc 2023-04-29 20:17:32.000000000 +0000 @@ -199,7 +199,9 @@ { gtk_widget_show_all ((GtkWidget *) treeview); +#ifndef USE_GTK3 gtk_tree_view_set_rules_hint (treeview, true); +#endif gtk_tree_view_set_headers_visible (treeview, false); GtkListStore * store = gtk_list_store_new (SKIN_VIEW_N_COLS, GDK_TYPE_PIXBUF, diff -Nru audacious-plugins-4.1/src/skins/view.cc audacious-plugins-4.3.1/src/skins/view.cc --- audacious-plugins-4.1/src/skins/view.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins/view.cc 2023-04-29 20:17:32.000000000 +0000 @@ -253,6 +253,29 @@ mainwin_update_song_info (); } +#ifdef USE_GTK3 +static cairo_region_t * scale_mask (const Index & mask, int scale) +{ + cairo_region_t * region = nullptr; + + for (auto & rect : mask) + { + cairo_rectangle_int_t scaled = { + rect.x * scale, + rect.y * scale, + rect.width * scale, + rect.height * scale + }; + + if (region) + cairo_region_union_rectangle (region, & scaled); + else + region = cairo_region_create_rectangle (& scaled); + } + + return region; +} +#else static GdkRegion * scale_mask (const Index & mask, int scale) { GdkRegion * region = nullptr; @@ -274,6 +297,7 @@ return region; } +#endif void view_apply_skin () { diff -Nru audacious-plugins-4.1/src/skins/widget.cc audacious-plugins-4.3.1/src/skins/widget.cc --- audacious-plugins-4.1/src/skins/widget.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins/widget.cc 2023-04-29 20:17:32.000000000 +0000 @@ -19,6 +19,8 @@ * using our public API to be a derived work. */ +#include + #include "widget.h" typedef GtkWidget DrawingArea; @@ -55,7 +57,7 @@ { m_drawable = widget; g_signal_connect (widget, "realize", (GCallback) Widget::realize_cb, this); - g_signal_connect (widget, "expose-event", (GCallback) Widget::draw_cb, this); + g_signal_connect (widget, AUDGUI_DRAW_SIGNAL, (GCallback) Widget::draw_cb, this); if (! m_widget) { @@ -96,6 +98,39 @@ set_drawable (widget); } +#ifdef USE_GTK3 +void Widget::draw_now () +{ + if (! m_drawable || ! gtk_widget_is_drawable (m_drawable)) + return; + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + cairo_t * cr = gdk_cairo_create (gtk_widget_get_window (m_drawable)); +G_GNUC_END_IGNORE_DEPRECATIONS + + if (! gtk_widget_get_has_window (m_drawable)) + { + GtkAllocation alloc; + gtk_widget_get_allocation (m_drawable, & alloc); + cairo_translate (cr, alloc.x, alloc.y); + cairo_rectangle (cr, 0, 0, alloc.width, alloc.height); + cairo_clip (cr); + } + + draw_cb (m_drawable, cr, this); + + cairo_destroy (cr); +} + +gboolean Widget::draw_cb (GtkWidget * widget, cairo_t * cr, Widget * me) +{ + if (me->m_scale != 1) + cairo_scale (cr, me->m_scale, me->m_scale); + + me->draw (cr); + return false; +} +#else void Widget::draw_now () { if (m_drawable && gtk_widget_is_drawable (m_drawable)) @@ -123,3 +158,4 @@ cairo_destroy (cr); return false; } +#endif diff -Nru audacious-plugins-4.1/src/skins/widget.h audacious-plugins-4.3.1/src/skins/widget.h --- audacious-plugins-4.1/src/skins/widget.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins/widget.h 2023-04-29 20:17:32.000000000 +0000 @@ -68,7 +68,11 @@ static void realize_cb (GtkWidget * widget, Widget * me) { me->realize (); } +#ifdef USE_GTK3 + static gboolean draw_cb (GtkWidget * widget, cairo_t * cr, Widget * me); +#else static gboolean draw_cb (GtkWidget * widget, GdkEventExpose * event, Widget * me); +#endif static gboolean keypress_cb (GtkWidget * widget, GdkEventKey * event, Widget * me) { return me->keypress (event); } diff -Nru audacious-plugins-4.1/src/skins/window.cc audacious-plugins-4.3.1/src/skins/window.cc --- audacious-plugins-4.1/src/skins/window.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins/window.cc 2023-04-29 20:17:32.000000000 +0000 @@ -33,7 +33,9 @@ void Window::realize () { +#ifndef USE_GTK3 gdk_window_set_back_pixmap (gtk_widget_get_window (gtk ()), nullptr, false); +#endif apply_shape (); } @@ -108,11 +110,13 @@ GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_SCROLL_MASK); gtk_window_add_accel_group ((GtkWindow *) window, menu_get_accel_group ()); +#ifndef USE_GTK3 /* We set None as the background pixmap in order to avoid flickering. * Setting a blank GtkStyle prevents GTK 2.x from overriding this. */ GtkStyle * style = gtk_style_new (); gtk_widget_set_style (window, style); g_object_unref (style); +#endif set_input (window); set_drawable (window); @@ -144,7 +148,11 @@ dock_set_size (m_id, w, h); } +#ifdef USE_GTK3 +void Window::set_shapes (cairo_region_t * shape, cairo_region_t * sshape) +#else void Window::set_shapes (GdkRegion * shape, GdkRegion * sshape) +#endif { m_shape.capture (shape); m_sshape.capture (sshape); diff -Nru audacious-plugins-4.1/src/skins/window.h audacious-plugins-4.3.1/src/skins/window.h --- audacious-plugins-4.1/src/skins/window.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins/window.h 2023-04-29 20:17:32.000000000 +0000 @@ -40,7 +40,11 @@ ~Window (); void resize (int w, int h); +#ifdef USE_GTK3 + void set_shapes (cairo_region_t * shape, cairo_region_t * sshape); +#else void set_shapes (GdkRegion * shape, GdkRegion * sshape); +#endif bool is_shaded () { return m_is_shaded; } void set_shaded (bool shaded); void put_widget (bool shaded, Widget * widget, int x, int y); @@ -48,6 +52,8 @@ void setWindowTitle (const char * title) { gtk_window_set_title ((GtkWindow *) gtk (), title); } + void setWindowRole (const char * role) + { gtk_window_set_role ((GtkWindow *) gtk (), role); } void getPosition (int * x, int * y) { gtk_window_get_position ((GtkWindow *) gtk (), x, y); } void move (int x, int y) @@ -68,7 +74,11 @@ bool m_is_shaded = false; bool m_is_moving = false; GtkWidget * m_normal = nullptr, * m_shaded = nullptr; +#ifdef USE_GTK3 + SmartPtr m_shape, m_sshape; +#else SmartPtr m_shape, m_sshape; +#endif }; void dock_add_window (int id, Window * window, int * x, int * y, int w, int h); Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic/balance.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic/balance.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic/cbuttons.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic/cbuttons.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic/eq_ex.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic/eq_ex.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic/eqmain.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic/eqmain.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic/main.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic/main.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic/monoster.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic/monoster.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic/nums_ex.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic/nums_ex.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic/playpaus.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic/playpaus.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic/pledit.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic/pledit.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic/posbar.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic/posbar.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic/shufrep.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic/shufrep.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic/text.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic/text.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic/titlebar.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic/titlebar.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic/volume.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic/volume.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic1.3/balance.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic1.3/balance.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic1.3/cbuttons.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic1.3/cbuttons.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic1.3/eq_ex.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic1.3/eq_ex.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic1.3/eqmain.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic1.3/eqmain.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic1.3/main.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic1.3/main.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic1.3/monoster.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic1.3/monoster.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic1.3/nums_ex.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic1.3/nums_ex.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic1.3/playpaus.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic1.3/playpaus.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic1.3/pledit.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic1.3/pledit.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic1.3/posbar.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic1.3/posbar.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic1.3/shufrep.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic1.3/shufrep.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic1.3/text.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic1.3/text.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic1.3/titlebar.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic1.3/titlebar.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Classic1.3/volume.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Classic1.3/volume.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/cbuttons.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/cbuttons.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/eq_ex.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/eq_ex.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/eqmain.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/eqmain.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Arrows/arrow-down.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Arrows/arrow-down.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Arrows/arrow-insens.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Arrows/arrow-insens.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Arrows/arrow-left.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Arrows/arrow-left.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Arrows/arrow-right.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Arrows/arrow-right.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Arrows/arrow-up.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Arrows/arrow-up.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Buttons/button-insensitive.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Buttons/button-insensitive.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Buttons/button-normal.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Buttons/button-normal.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Buttons/button-prelight.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Buttons/button-prelight.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/check1.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/check1.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/check2.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/check2.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/check3.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/check3.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/check4.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/check4.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/check5.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/check5.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/check6.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/check6.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/option1.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/option1.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/option2.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/option2.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/option3.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/option3.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/option4.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/option4.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/option5.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/option5.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/option6.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Check-Radio/option6.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Frame-Gap/frame-gap-end.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Frame-Gap/frame-gap-end.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Frame-Gap/frame-gap-start.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Frame-Gap/frame-gap-start.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Frame-Gap/frame.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Frame-Gap/frame.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Handles/handle-h.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Handles/handle-h.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Handles/handle-v.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Handles/handle-v.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Lines/line-h.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Lines/line-h.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Lines/line-v.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Lines/line-v.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/ListHeaders/list_header-insens.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/ListHeaders/list_header-insens.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/ListHeaders/list_header-prelight.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/ListHeaders/list_header-prelight.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/ListHeaders/list_header-pressed.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/ListHeaders/list_header-pressed.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/ListHeaders/list_header.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/ListHeaders/list_header.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Menu-Menubar/menu.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Menu-Menubar/menu.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Menu-Menubar/menubar-item-active.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Menu-Menubar/menubar-item-active.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Menu-Menubar/menubar-item.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Menu-Menubar/menubar-item.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Menu-Menubar/menubar.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Menu-Menubar/menubar.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Others/null.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Others/null.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Others/ruler.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Others/ruler.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Panel/panel-bg.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Panel/panel-bg.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/ProgressBar/progressbar-horiz.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/ProgressBar/progressbar-horiz.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/ProgressBar/trough-progressbar-horiz.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/ProgressBar/trough-progressbar-horiz.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Range/slider-horiz-prelight.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Range/slider-horiz-prelight.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Range/slider-horiz.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Range/slider-horiz.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Range/slider-vert-prelight.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Range/slider-vert-prelight.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Range/slider-vert.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Range/slider-vert.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Range/trough-horizontal.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Range/trough-horizontal.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Range/trough-vertical.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Range/trough-vertical.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/scroll-thumb-horiz-pre.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/scroll-thumb-horiz-pre.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/scroll-thumb-horiz.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/scroll-thumb-horiz.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/scroll-thumb-vert-pre.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/scroll-thumb-vert-pre.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/scroll-thumb-vert.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/scroll-thumb-vert.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/slider-horiz-pre.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/slider-horiz-pre.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/slider-horiz.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/slider-horiz.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/slider-vert-pre.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/slider-vert-pre.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/slider-vert.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/slider-vert.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/stepper-down-prelight.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/stepper-down-prelight.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/stepper-down.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/stepper-down.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/stepper-left-prelight.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/stepper-left-prelight.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/stepper-left.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/stepper-left.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/stepper-right-prelight.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/stepper-right-prelight.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/stepper-right.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/stepper-right.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/stepper-up-prelight.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/stepper-up-prelight.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/stepper-up.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/stepper-up.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/trough-scrollbar-horiz.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/trough-scrollbar-horiz.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/trough-scrollbar-vert.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Scrollbars/trough-scrollbar-vert.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Shadows/shadow-in.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Shadows/shadow-in.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Shadows/shadow-out.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Shadows/shadow-out.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Shadows/text-.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Shadows/text-.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Shadows/text-entry.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Shadows/text-entry.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Spin/spin-down-disable.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Spin/spin-down-disable.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Spin/spin-down-prelight.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Spin/spin-down-prelight.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Spin/spin-down.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Spin/spin-down.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Spin/spin-up-disable.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Spin/spin-up-disable.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Spin/spin-up-prelight.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Spin/spin-up-prelight.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Spin/spin-up.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Spin/spin-up.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/gap-bottom-left.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/gap-bottom-left.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/gap-bottom-right.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/gap-bottom-right.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/gap-left-bottom.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/gap-left-bottom.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/gap-left-top.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/gap-left-top.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/gap-right-bottom.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/gap-right-bottom.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/gap-right-top.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/gap-right-top.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/gap-top-current.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/gap-top-current.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/gap-top-left.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/gap-top-left.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/gap-top-right.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/gap-top-right.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/notebook.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/notebook.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/tab-bottom-active.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/tab-bottom-active.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/tab-bottom.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/tab-bottom.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/tab-left-active.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/tab-left-active.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/tab-left.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/tab-left.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/tab-right-active.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/tab-right-active.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/tab-right.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/tab-right.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/tab-top-active.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/tab-top-active.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/tab-top.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Tabs/tab-top.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/Toolbar/toolbar.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/Toolbar/toolbar.png differ diff -Nru audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/gtkrc audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/gtkrc --- audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/gtkrc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/gtkrc 1970-01-01 00:00:00.000000000 +0000 @@ -1,1534 +0,0 @@ -include "panel.rc" - -gtk-menu-drop-shadow = 0 -gtk-menu-shadow-delay = 0 - -style "default" -{ -GtkWidget::interior_focus = 7 -GtkWidget::focus_padding = 1 -GtkButton::default_border = {0,0,0,0} -GtkButton::default_outside_border = {0,0,0,0} - -GtkRange::trough_border = 1 -GtkRange::slider_width = 14 -GtkRange::stepper_size = 14 - -GtkVScale::slider_length = 29 -GtkVScale::slider_width = 15 -GtkHScale::slider_length = 29 -GtkHScale::slider_width = 15 - -GtkPaned::handle_size = 6 -GtkScrollbar::min_slider_length = 50 -GtkCheckButton::indicator_size = 12 -GtkCheckButton::indicator_spacing = 3 -GtkMenuBar::internal_padding = 1 -#GtkOptionMenu::indicator_size = {15,8} -#GtkOptionMenu::indicator_spacing = {8,2,0,0} -GtkStatusbar::shadow_type = GTK_SHADOW_NONE -GtkSpinButton::shadow_type = GTK_SHADOW_NONE - -xthickness = 2 -ythickness = 2 - -GtkEntry::cursor_color = "#ffffff" -GtkTextView::cursor_color = "#ffffff" -GtkTextView::secondary_cursor_color = "#ffffff" -GtkWidget::cursor_color = "#ffffff" -GtkWidget::secondary_cursor_color = "#ffffff" - -fg[NORMAL] = "#ffffff" -fg[PRELIGHT] = "#ffffff" -fg[ACTIVE] = "#ffffff" -fg[SELECTED] = "#909090" -fg[INSENSITIVE] = "#909090" - -bg[NORMAL] = "#080808" -bg[PRELIGHT] = "#000000" -bg[ACTIVE] = "#000000" -bg[SELECTED] = "#080808" -bg[INSENSITIVE] = "#3f3f3f" - -base[NORMAL] = "#000000" -base[PRELIGHT] = "#313131" -base[ACTIVE] = "#071f46" -base[SELECTED] = "#0d377c" -base[INSENSITIVE] = "#000000" - -text[NORMAL] = "#ffffff" -text[PRELIGHT] = "#ffffff" -text[ACTIVE] = "#ffffff" -text[SELECTED] = "#ffffff" -text[INSENSITIVE] = "#606060" - -engine "pixmap" -{ -image -{ -function = HANDLE -overlay_file = "Handles/handle-h.png" -overlay_stretch = FALSE -orientation = HORIZONTAL -} -image -{ -function = HANDLE -overlay_file = "Handles/handle-v.png" -overlay_stretch = FALSE -orientation = VERTICAL -} - -image -{ -function = SHADOW -shadow = IN -file = "Shadows/shadow-in.png" -border = {2,2,2,2} -stretch = TRUE -} -image -{ -function = SHADOW -shadow = OUT -file = "Shadows/shadow-out.png" -stretch = TRUE -} - -image -{ -function = SHADOW -shadow = ETCHED_IN -file = "Frame-Gap/frame.png" -border = {2,2,2,2} -stretch = TRUE -} -image -{ -function = SHADOW -shadow = ETCHED_OUT -file = "Others/null.png" -border = {0,0,0,0} -stretch = TRUE -} -image -{ -function = SHADOW_GAP -file = "Frame-Gap/frame.png" -border = {2,2,2,2} -stretch = TRUE -gap_start_file = "Frame-Gap/frame-gap-start.png" -gap_start_border = {2,0,2,0} -gap_end_file = "Frame-Gap/frame-gap-end.png" -gap_end_border = {0,2,2,0} -gap_side = TOP -} -image -{ -function = VLINE -file = "Lines/line-v.png" -border = {0,0,0,0} -stretch = TRUE -} -image -{ -function = HLINE -file = "Lines/line-h.png" -border = {0,0,0,0} -stretch = TRUE -} - -image -{ -function = ARROW -overlay_file = "Arrows/arrow-up.png" -overlay_border = {0,0,0,0} -overlay_stretch = FALSE -arrow_direction = UP -} -image -{ -function = ARROW -overlay_file = "Arrows/arrow-down.png" -overlay_border = {0,0,0,0} -overlay_stretch = FALSE -arrow_direction = DOWN -} -image -{ -function = ARROW -overlay_file = "Arrows/arrow-left.png" -overlay_border = {0,0,0,0} -overlay_stretch = FALSE -arrow_direction = LEFT -} -image -{ -function = ARROW -overlay_file = "Arrows/arrow-right.png" -overlay_border = {0,0,0,0} -overlay_stretch = FALSE -arrow_direction = RIGHT -} -image -{ -function = BOX -file = "Toolbar/toolbar.png" -border = {2,2,2,2} -stretch = TRUE -} -} - -} - -gtk-font-name = "Sans 8" - -class "GtkWidget" style "default" - -style "button" = "default" -{ -engine "pixmap" -{ -image -{ -function = BOX -detail = "buttondefault" -file = "Buttons/button-normal.png" -border = {2,2,2,2} -stretch = TRUE -} -image -{ -function = BOX -state = PRELIGHT -file = "Buttons/button-prelight.png" -border = {2,2,2,2} -stretch = TRUE -} -image -{ -function = BOX -state = ACTIVE -file = "Buttons/button-prelight.png" -border = {2,2,2,2} -stretch = TRUE -} -image -{ -function = BOX -state = INSENSITIVE -file = "Buttons/button-insensitive.png" -border = {2,2,2,2} -stretch = TRUE -} -image -{ -function = BOX -file = "Buttons/button-normal.png" -border = {2,2,2,2} -stretch = TRUE -} -} -} - -style "checkradiobutton" { -engine "pixmap" { -image -{ -function = FLAT_BOX -file = "Others/null.png" -border = {0,0,0,0} -stretch = TRUE -} -} -} - -class "GtkRadioButton" style "checkradiobutton" -class "GtkCheckButton" style "checkradiobutton" - -style "optionmenu" = "default" -{ -engine "pixmap" -{ -image -{ -function = BOX -state = PRELIGHT -file = "Buttons/button-prelight.png" -border = {2,2,2,2} -stretch = TRUE -} -image -{ -function = BOX -detail = "buttondefault" -state = NORMAL -file = "Buttons/button-normal.png" -border = {2,2,2,2} -stretch = TRUE -} - -image -{ -function = BOX -state = ACTIVE -file = "Buttons/button-prelight.png" -border = {2,2,2,2} -stretch = TRUE -} -image -{ -function = BOX -state = INSENSITIVE -file = "Buttons/button-insensitive.png" -border = {2,2,2,2} -stretch = TRUE -} -image -{ -function = TAB -state = INSENSITIVE -overlay_file = "Arrows/arrow-insens.png" -overlay_stretch = FALSE -} -image -{ -function = TAB -state = NORMAL -overlay_file = "Arrows/arrow-down.png" -overlay_border = {0,0,0,0} -overlay_stretch = FALSE -} -image -{ -function = TAB -state = PRELIGHT -overlay_file = "Arrows/arrow-down.png" -overlay_border = {0,0,0,0} -overlay_stretch = FALSE -} -} -} - -widget_class "*Combo*" style "optionmenu" - -style "radiobutton" = "default" -{ -engine "pixmap" -{ -image -{ -function = OPTION -state = NORMAL -shadow = OUT -overlay_file = "Check-Radio/option1.png" -overlay_stretch = FALSE -} -image -{ -function = OPTION -state = PRELIGHT -shadow = OUT -overlay_file = "Check-Radio/option3.png" -overlay_stretch = FALSE -} -image -{ -function = OPTION -state = ACTIVE -shadow = OUT -overlay_file = "Check-Radio/option1.png" -overlay_stretch = FALSE -} -image -{ -function = OPTION -state = INSENSITIVE -shadow = OUT -overlay_file = "Check-Radio/option5.png" -overlay_stretch = FALSE -} - -image -{ -function = OPTION -state = NORMAL -shadow = IN -overlay_file = "Check-Radio/option2.png" -overlay_stretch = FALSE -} -image -{ -function = OPTION -state = PRELIGHT -shadow = IN -overlay_file = "Check-Radio/option4.png" -overlay_stretch = FALSE -} -image -{ -function = OPTION -state = ACTIVE -shadow = IN -overlay_file = "Check-Radio/option2.png" -overlay_stretch = FALSE -} -image -{ -function = OPTION -state = INSENSITIVE -shadow = IN -overlay_file = "Check-Radio/option6.png" -overlay_stretch = FALSE -} - -image -{ -function = FLAT_BOX -stretch = TRUE -file = "Others/null.png" -border = {0,0,0,0} -} -} -} - -style "checkbutton" = "default" -{ -engine "pixmap" -{ -image -{ -function = CHECK -state = NORMAL -shadow = OUT -overlay_file = "Check-Radio/check1.png" -overlay_stretch = FALSE -} -image -{ -function = CHECK -state = PRELIGHT -shadow = OUT -overlay_file = "Check-Radio/check3.png" -overlay_stretch = FALSE -} -image -{ -function = CHECK -state = ACTIVE -shadow = OUT -overlay_file = "Check-Radio/check1.png" -overlay_stretch = FALSE -} -image -{ -function = CHECK -state = INSENSITIVE -shadow = OUT -overlay_file = "Check-Radio/check5.png" -overlay_stretch = FALSE -} - -image -{ -function = CHECK -state = NORMAL -shadow = IN -overlay_file = "Check-Radio/check2.png" -overlay_stretch = FALSE -} -image -{ -function = CHECK -state = PRELIGHT -shadow = IN -overlay_file = "Check-Radio/check4.png" -overlay_stretch = FALSE -} -image -{ -function = CHECK -state = ACTIVE -shadow = IN -overlay_file = "Check-Radio/check4.png" -overlay_stretch = FALSE -} -image -{ -function = CHECK -state = INSENSITIVE -shadow = IN -overlay_file = "Check-Radio/check6.png" -overlay_stretch = FALSE -} - -image -{ -function = FLAT_BOX -stretch = TRUE -file = "Others/null.png" -border = {2,2,2,2} -} -} -} - -style "entry" = "default" -{ - -xthickness = 3 -ythickness = 1 - -GtkWidget::interior_focus = 0 - -engine "pixmap" -{ -image -{ -function = FOCUS -file = "Shadows/text-entry.png" -border = {1,1,1,1} -stretch = TRUE -} -image -{ -function = BOX -shadow = IN -state = NORMAL -file = "Shadows/text-entry.png" -border = {1,1,1,1} -stretch = TRUE -} -image -{ -function = BOX -shadow = OUT -state = NORMAL -file = "Shadows/text-entry.png" -border = {1,1,1,1} -stretch = TRUE -} -image -{ -function = SHADOW -detail = "entry" -shadow = IN -file = "Shadows/text-entry.png" -border = {1,1,1,1} -stretch = TRUE -} -} -} - - -style "spinbutton" = "entry" -{ - - -engine "pixmap" -{ -image -{ -function = ARROW -} - -image -{ -function = BOX -state = NORMAL -detail = "spinbutton_up" -file = "Others/null.png" -border = {0,0,0,0} -stretch = TRUE -overlay_file = "Spin/spin-up.png" -overlay_stretch = FALSE -} -image -{ -function = BOX -state = PRELIGHT -detail = "spinbutton_up" -file = "Others/null.png" -border = {0,0,0,0} -stretch = TRUE -overlay_file = "Spin/spin-up-prelight.png" -overlay_stretch = FALSE -} -image -{ -function = BOX -state = INSENSITIVE -detail = "spinbutton_up" -file = "Others/null.png" -border = {0,0,0,0} -stretch = TRUE -overlay_file = "Spin/spin-up-disable.png" -overlay_stretch = FALSE -} -image -{ -function = BOX -state = ACTIVE -detail = "spinbutton_up" -file = "Others/null.png" -border = {0,0,0,0} -stretch = TRUE -overlay_file = "Spin/spin-up-prelight.png" -overlay_stretch = FALSE -} - -image -{ -function = BOX -state = NORMAL -detail = "spinbutton_down" -file = "Others/null.png" -border = {0,0,0,0} -stretch = TRUE -overlay_file = "Spin/spin-down.png" -overlay_stretch = FALSE -} -image -{ -function = BOX -state = PRELIGHT -detail = "spinbutton_down" -file = "Others/null.png" -border = {0,0,0,0} -stretch = TRUE -overlay_file = "Spin/spin-down-prelight.png" -overlay_stretch = FALSE -} -image -{ -function = BOX -state = INSENSITIVE -detail = "spinbutton_down" -file = "Others/null.png" -border = {0,0,0,0} -stretch = TRUE -overlay_file = "Spin/spin-down-disable.png" -overlay_stretch = FALSE -} - -image -{ -function = BOX -state = ACTIVE -detail = "spinbutton_down" -file = "Others/null.png" -border = {0,0,0,0} -stretch = TRUE -overlay_file = "Spin/spin-down-prelight.png" -overlay_stretch = FALSE -} -} -} - -style "scrollbar" = "default" -{ -engine "pixmap" -{ - -image -{ -function = BOX -detail = "trough" -file = "Scrollbars/trough-scrollbar-horiz.png" -border = {16,16,2,2} -stretch = TRUE -orientation = HORIZONTAL -} -image -{ -function = BOX -detail = "trough" -file = "Scrollbars/trough-scrollbar-vert.png" -border = {2,2,16,16} -stretch = TRUE -orientation = VERTICAL -} - - -image -{ -function = SLIDER -state = NORMAL -file = "Scrollbars/slider-horiz.png" -border = {2,2,2,2} -stretch = TRUE -orientation = HORIZONTAL -} -image -{ -function = SLIDER -state = ACTIVE -shadow = IN -file = "Scrollbars/slider-horiz-pre.png" -border = {2,2,2,2} -stretch = TRUE -orientation = HORIZONTAL -} - -image -{ -function = SLIDER -state = PRELIGHT -file = "Scrollbars/slider-horiz-pre.png" -border = {2,2,2,2} -stretch = TRUE -orientation = HORIZONTAL -} -image -{ -function = SLIDER -state = INSENSITIVE -file = "Scrollbars/slider-horiz.png" -border = {2,2,2,2} -stretch = TRUE -orientation = HORIZONTAL -} - - -image -{ -function = SLIDER -state = NORMAL -file = "Scrollbars/slider-vert.png" -border = {2,2,2,2} -stretch = TRUE -orientation = VERTICAL -} -image -{ -function = SLIDER -state = ACTIVE -shadow = IN -file = "Scrollbars/slider-vert-pre.png" -border = {2,2,2,2} -stretch = TRUE -orientation = VERTICAL -} -image -{ -function = SLIDER -state = PRELIGHT -file = "Scrollbars/slider-vert-pre.png" -border = {2,2,2,2} -stretch = TRUE -orientation = VERTICAL -} -image -{ -function = SLIDER -state = INSENSITIVE -file = "Scrollbars/slider-vert.png" -border = {2,2,2,2} -stretch = TRUE -orientation = VERTICAL -} - -image -{ -function = STEPPER -state = NORMAL -file = "Scrollbars/stepper-up.png" -stretch = TRUE -arrow_direction = UP -} -image -{ -function = STEPPER -state = PRELIGHT -file = "Scrollbars/stepper-up-prelight.png" -stretch = TRUE -arrow_direction = UP -} -image -{ -function = STEPPER -state = ACTIVE -file = "Scrollbars/stepper-up-prelight.png" -stretch = TRUE -arrow_direction = UP -} -image -{ -function = STEPPER -state = INSENSITIVE -file = "Scrollbars/stepper-up.png" -stretch = TRUE -arrow_direction = UP -} - - -image -{ -function = STEPPER -state = NORMAL -file = "Scrollbars/stepper-down.png" -stretch = TRUE -arrow_direction = DOWN -} -image -{ -function = STEPPER -state = PRELIGHT -file = "Scrollbars/stepper-down-prelight.png" -stretch = TRUE -arrow_direction = DOWN -} -image -{ -function = STEPPER -state = ACTIVE -file = "Scrollbars/stepper-down-prelight.png" -stretch = TRUE -arrow_direction = DOWN -} -image -{ -function = STEPPER -state = INSENSITIVE -file = "Scrollbars/stepper-down.png" -stretch = TRUE -arrow_direction = DOWN -} - -image -{ -function = STEPPER -state = NORMAL -file = "Scrollbars/stepper-right.png" -stretch = TRUE -arrow_direction = RIGHT -} -image -{ -function = STEPPER -state = PRELIGHT -file = "Scrollbars/stepper-right-prelight.png" -stretch = TRUE -arrow_direction = RIGHT -} -image -{ -function = STEPPER -state = ACTIVE -file = "Scrollbars/stepper-right-prelight.png" -stretch = TRUE -arrow_direction = RIGHT -} -image -{ -function = STEPPER -state = INSENSITIVE -file = "Scrollbars/stepper-right.png" -stretch = TRUE -arrow_direction = RIGHT -} - -image -{ -function = STEPPER -state = NORMAL -file = "Scrollbars/stepper-left.png" -stretch = TRUE -arrow_direction = LEFT -} -image -{ -function = STEPPER -state = PRELIGHT -file = "Scrollbars/stepper-left-prelight.png" -stretch = TRUE -arrow_direction = LEFT -} -image -{ -function = STEPPER -state = ACTIVE -file = "Scrollbars/stepper-left-prelight.png" -stretch = TRUE -arrow_direction = LEFT -} -image -{ -function = STEPPER -state = INSENSITIVE -file = "Scrollbars/stepper-left.png" -stretch = TRUE -arrow_direction = LEFT -} -} -} - -style "progressbar" { -fg[PRELIGHT] = "#ffffff" -text[PRELIGHT] = "#ffffff" -xthickness = 2 -ythickness = 2 - -engine "pixmap" -{ -image -{ -function = BOX -detail = "trough" -file = "ProgressBar/trough-progressbar-horiz.png" -border = {1,1,1,1} -stretch = TRUE -} -image -{ -function = BOX -detail = "bar" -file = "ProgressBar/progressbar-horiz.png" -border = {1,1,1,1} -stretch = TRUE -} -} -} - -style "range" = "default" -{ -engine "pixmap" -{ -image -{ -function = BOX -detail = "trough" -file = "Range/trough-horizontal.png" -border = {2,2,8,7} -stretch = TRUE -orientation = HORIZONTAL -} -image -{ -function = BOX -detail = "trough" -file = "Range/trough-vertical.png" -border = {7,8,2,2} -stretch = TRUE -orientation = VERTICAL -} - -image -{ -function = SLIDER -state = NORMAL -file = "Others/null.png" -border = {0,0,0,0} -stretch = TRUE -overlay_file = "Range/slider-horiz.png" -overlay_stretch = FALSE -orientation = HORIZONTAL -} -image -{ -function = SLIDER -state = PRELIGHT -file = "Others/null.png" -border = {0,0,0,0} -stretch = TRUE -overlay_file = "Range/slider-horiz-prelight.png" -overlay_stretch = FALSE -orientation = HORIZONTAL -} -image -{ -function = SLIDER -state = INSENSITIVE -file = "Others/null.png" -border = {0,0,0,0} -stretch = TRUE -overlay_file = "Range/slider-horiz.png" -overlay_stretch = FALSE -orientation = HORIZONTAL -} - -image -{ -function = SLIDER -state = NORMAL -file = "Others/null.png" -border = {0,0,0,0} -stretch = TRUE -overlay_file = "Range/slider-vert.png" -overlay_stretch = FALSE -orientation = VERTICAL -} -image -{ -function = SLIDER -state = PRELIGHT -file = "Others/null.png" -border = {0,0,0,0} -stretch = TRUE -overlay_file = "Range/slider-vert-prelight.png" -overlay_stretch = FALSE -orientation = VERTICAL -} -image -{ -function = SLIDER -state = INSENSITIVE -file = "Others/null.png" -border = {0,0,0,0} -stretch = TRUE -overlay_file = "Range/slider-vert.png" -overlay_stretch = FALSE -orientation = VERTICAL -} -} -} - -style "toolbar" -{ - -engine "pixmap" -{ -image -{ -function = BOX -file = "Toolbar/toolbar.png" -border = {2,2,2,2} -stretch = TRUE -} -} -} -#widget_class "*BonoboDockItem" style "toolbar" -#class "*BonoboDockItem" style "toolbar" - -widget_class "*HandleBox" style "toolbar" -class "*HandleBox" style "toolbar" - -widget_class "*Toolbar" style "toolbar" -class "*Toolbar" style "toolbar" - -style "toolbuttons" = "default" -{ -xthickness = 1 -ythickness = 1 - -GtkWidget::focus_padding = 2 - -engine "pixmap" { - -image -{ -function = BOX -state = NORMAL -file = "Buttons/button-normal.png" -border = {2,2,2,2} -stretch = TRUE -} -image -{ -function = BOX -state = PRELIGHT -file = "Buttons/button-prelight.png" -border = {2,2,2,2} -stretch = TRUE -} -image -{ -function = BOX -state = ACTIVE -file = "Buttons/button-prelight.png" -border = {2,2,2,2} -stretch = TRUE -} -image -{ -function = BOX -state = INSENSITIVE -file = "Buttons/button-normal.png" -border = {2,2,2,2} -stretch = TRUE -} -} -} -widget_class "*Tool*GtkToggleButton" style "toolbuttons" -widget_class "*Tool*GtkButton" style "toolbuttons" - -style "menu" = "default" -{ -#bg_pixmap[NORMAL] = "Menu-Menubar/menu-overlay.png" -xthickness = 1 -ythickness = 1 - -engine "pixmap" -{ -image -{ -function = BOX -detail = "menu" -file = "Menu-Menubar/menu.png" -border = {2,2,14,2} -stretch = TRUE -} -} -} - -style "menuitem" = "default" -{ -xthickness = 1 -fg[PRELIGHT] = "#ffffff" -text[PRELIGHT] = "#949494" - -engine "pixmap" -{ -image -{ -function = BOX -file = "Menu-Menubar/menubar-item-active.png" -border = {2,2,2,2} -stretch = TRUE -} -image -{ -function = ARROW -state = NORMAL -overlay_file = "Arrows/arrow-right.png" -overlay_stretch = FALSE -arrow_direction = RIGHT -} -image -{ -function = ARROW -state = PRELIGHT -overlay_file = "Arrows/arrow-right.png" -overlay_stretch = FALSE -arrow_direction = RIGHT -} -} -} - -style "tearoffmenuitem" = "menuitem" -{ -engine "pixmap" -{ -image -{ -function = ARROW -file = "Arrows/arrow-left.png" -stretch = TRUE -arrow_direction = LEFT -} -} -} - -style "menubar" -{ -fg[NORMAL] = "#ffffff" -text[NORMAL] = "#ffffff" -fg[PRELIGHT] = "#ffffff" -fg[ACTIVE] = "#ffffff" -fg[INSENSITIVE] = "#909090" -bg[INSENSITIVE] = "#3f3f3f" -text[PRELIGHT] = "#ffffff" - -xthickness = 1 -ythickness = 1 -engine "pixmap" -{ -image -{ -function = BOX -state = NORMAL -file = "Menu-Menubar/menubar.png" -border = {2,2,2,2} -stretch = TRUE -} - -image -{ -function = BOX -state = ACTIVE -file = "Menu-Menubar/menubar.png" -border = {2,2,2,2} -stretch = TRUE -} - -image -{ -function = BOX -state = INSENSITIVE -file = "Menu-Menubar/menubar.png" -border = {2,2,2,2} -stretch = TRUE -} - -image -{ -function = BOX -state = PRELIGHT -file = "Menu-Menubar/menubar-item.png" -border = {2,2,14,1} -stretch = TRUE -} -} -} - -style "notebook" = "default" -{ - -xthickness = 2 -ythickness = 2 -engine "pixmap" -{ -image -{ -function = EXTENSION -state = ACTIVE -file = "Tabs/tab-bottom.png" -border = {3,3,1,4} -stretch = TRUE -gap_side = TOP -} -image -{ -function = EXTENSION -state = ACTIVE -file = "Tabs/tab-top.png" -border = {3,3,4,1} -stretch = TRUE -gap_side = BOTTOM -} -image -{ -function = EXTENSION -state = ACTIVE -file = "Tabs/tab-left.png" -border = {4,1,3,3} -stretch = TRUE -gap_side = RIGHT -} -image -{ -function = EXTENSION -state = ACTIVE -file = "Tabs/tab-right.png" -border = {1,4,3,3} -stretch = TRUE -gap_side = LEFT -} -image -{ -function = EXTENSION -file = "Tabs/tab-top-active.png" -border = {3,3,3,1} -stretch = TRUE -gap_side = BOTTOM -} -image -{ -function = EXTENSION -file = "Tabs/tab-bottom-active.png" -border = {3,3,1,3} -stretch = TRUE -gap_side = TOP -} -image -{ -function = EXTENSION -file = "Tabs/tab-left-active.png" -border = {3,1,3,3} -stretch = TRUE -gap_side = RIGHT -} -image -{ -function = EXTENSION -file = "Tabs/tab-right-active.png" -border = {1,3,3,3} -stretch = TRUE -gap_side = LEFT -} - -image -{ -function = BOX_GAP -file = "Tabs/notebook.png" -border = {1,1,1,1} -stretch = TRUE -gap_file = "Tabs/gap-top-current.png" -gap_border = {2,2,2,2} -gap_start_file = "Tabs/gap-top-left.png" -gap_start_border = {1,0,1,0} -gap_end_file = "Tabs/gap-top-right.png" -gap_end_border = {0,1,1,0} -gap_side = TOP -} -image -{ -function = BOX_GAP -file = "Tabs/notebook.png" -border = {1,1,1,1} -stretch = TRUE -gap_file = "Tabs/gap-top-current.png" -gap_border = {2,2,2,2} -gap_start_file = "Tabs/gap-bottom-left.png" -gap_start_border = {1,0,1,0} -gap_end_file = "Tabs/gap-bottom-right.png" -gap_end_border = {0,1,1,0} -gap_side = BOTTOM -} -image -{ -function = BOX_GAP -file = "Tabs/notebook.png" -border = {1,1,1,1} -stretch = TRUE -gap_file = "Tabs/gap-top-current.png" -gap_border = {2,2,2,2} -gap_start_file = "Tabs/gap-left-top.png" -gap_start_border = {1,0,1,0} -gap_end_file = "Tabs/gap-left-bottom.png" -gap_end_border = {1,0,0,1} -gap_side = LEFT -} -image -{ -function = BOX_GAP -file = "Tabs/notebook.png" -border = {1,1,1,1} -stretch = TRUE -gap_file = "Tabs/gap-top-current.png" -gap_border = {2,2,2,2} -gap_start_file = "Tabs/gap-right-top.png" -gap_start_border = {0,1,1,0} -gap_end_file = "Tabs/gap-right-bottom.png" -gap_end_border = {0,1,0,1} -gap_side = RIGHT -} - -# Notebook with no tabs -image -{ -function = BOX -file = "Tabs/notebook.png" -border = {1,1,1,1} -stretch = TRUE -} -} -} - -style "tooltips" = "default" -{ -bg[NORMAL] = "#070707" -} - -style "ruler" = "default" -{ -engine "pixmap" { -image -{ -function = BOX -detail = "vruler" -file = "Others/ruler.png" -border = {1,1,1,1} -stretch = TRUE -} -image -{ -function = BOX -detail = "hruler" -file = "Others/ruler.png" -border = {1,1,1,1} -stretch = TRUE -} -} -} - -style "handlebox" = "default" -{ -engine "pixmap" -{ -image -{ -} -image -{ -function = HANDLE -overlay_file = "Handles/handle-v.png" -overlay_stretch = FALSE -orientation = VERTICAL -} -image -{ -function = HANDLE -overlay_file = "Handles/handle-h.png" -overlay_stretch = FALSE -orientation = HORIZONTAL -} -} -} - -style "flat" = "default" -{ -engine "pixmap" -{ -image -{ -function = SHADOW -} -} -} - -style "layout" = "default" -{ -engine "pixmap" -{ -image -{ -function = SHADOW -detail = "entry" -shadow = IN -file = "Shadows/text-.png" -border = {1,1,1,1} -stretch = TRUE -} -image -{ -function = BOX -detail = "button" -state = NORMAL -file = "Buttons/button-normal.png" -border = {2,2,2,2} -stretch = TRUE -} -} -} - -style "list-header" -{ -ythickness = 3 -GtkTreeView::odd_row_color = "#171717" -GtkTreeView::even_row_color = "#000000" - -engine "pixmap" -{ -image -{ -function = BOX -state = NORMAL -file = "ListHeaders/list_header.png" -border = {1,2,1,2} -stretch = TRUE -} - -image -{ -function = BOX -state = PRELIGHT -file = "ListHeaders/list_header-prelight.png" -border = {1,2,5,2} -stretch = TRUE -} - -image -{ -function = BOX -state = ACTIVE -file = "ListHeaders/list_header-pressed.png" -border = {0,0,0,0} -stretch = TRUE -} -image -{ -function = BOX -state = SELECTED -file = "ListHeaders/list_header-prelight.png" -border = {4,5,2,2} -stretch = TRUE -} -image -{ -function = BOX -state = INSENSITIVE -file = "ListHeaders/list_header-insens.png" -border = {1,2,1,2} -stretch = TRUE -} -} -} - -widget_class "*List" style "list-header" -widget_class "*GtkTree*" style "list-header" -widget_class "*GtkCList*" style "list-header" -#widget_class "*Tree*" style "list-header" - -# Sodipodi bug -style "unstyle" -{ -engine "" -{ -} -} -class "SPColorSlider" style "unstyle" - -style "SPbutton" -{ -engine "pixmap" -{ -image -{ -function = BOX -shadow = IN -file = "Shadows/shadow-out.png" -border = {2,2,2,2} -stretch = TRUE -} -image -{ -function = BOX -} -} -} - -style "treecol" -{ -bg[NORMAL] = "#000000" -} - -class "GtkButton" style "button" -class "GtkRadioButton" style "radiobutton" -class "GtkRadioMenuItem" style "radiobutton" -class "GtkCheckButton" style "checkbutton" -class "GtkCheckMenuItem" style "checkbutton" -class "GtkOptionMenu" style "optionmenu" -class "GtkCombo*" style "optionmenu" -class "*Font*" style "optionmenu" -class "GtkEntry" style "entry" -class "GtkOldEditable" style "entry" -class "GtkSpinButton" style "spinbutton" -class "GtkRuler" style "ruler" -class "GtkScrollbar" style "scrollbar" -class "GtkProgressBar" style "progressbar" -class "GtkRange" style "range" -class "GtkMenu" style "menu" -class "GtkMenuBar*" style "menubar" -widget_class "*MenuBar.*" style "menubar" -class "GtkMenuItem" style "menuitem" -class "GtkTearoffMenuItem" style "menuitem" -class "GtkNotebook" style "notebook" -class "GtkToolbar" style "flat" -class "GtkHandleBox" style "handlebox" -class "GtkEventBox" style "flat" -class "GtkPaned" style "handlebox" -class "GtkLayout" style "layout" -class "SPButton" style "SPbutton" -widget "gtk-tooltips" style "tooltips" - -# colorize ugly white line at the top of the vertical scrollbar in Nautilus -style "searchbar" { -bg[NORMAL] = "#080808" -} -widget "*.nautilus-extra-view-widget" style:highest "searchbar" - -# separator in Nautilus sidebar -style "separator" { -bg[NORMAL] = "#191919" -} -widget "*nautilus*side*" style:highest "separator" diff -Nru audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/panel.rc audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/panel.rc --- audacious-plugins-4.1/src/skins-data/Skins/Default/gtk-2.0/panel.rc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-data/Skins/Default/gtk-2.0/panel.rc 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ -style "tasklist-button" -{ -xthickness = 0 -ythickness = 0 -engine "pixmap" -{ -image -{ -function = BOX -state = NORMAL -file = "Buttons/button-normal.png" -border = {6,6,14,2} -stretch = TRUE -} -image -{ -function = BOX -state = ACTIVE -file = "Buttons/button-prelight.png" -border = {6,6,14,2} -stretch = TRUE -} -image -{ -function = BOX -state = PRELIGHT -file = "Buttons/button-prelight.png" -border = {6,6,14,2} -stretch = TRUE -} -} -} -widget "*.tasklist-button" style "tasklist-button" -style "panel-menubar" -{ -xthickness = 1 -ythickness = 0 -engine "pixmap" -{ -image -{ -function = BOX -state = NORMAL -file = "Panel/panel-bg.png" -border = {0,0,0,0} -stretch = FALSE -} -} -} -class "*Panel*" style "panel-menubar" Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/main.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/main.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/monoster.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/monoster.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/nums_ex.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/nums_ex.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/playpaus.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/playpaus.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/pledit.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/pledit.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/posbar.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/posbar.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/shufrep.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/shufrep.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/text.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/text.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/titlebar.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/titlebar.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Default/volume.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Default/volume.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Ivory/balance.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Ivory/balance.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Ivory/cbuttons.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Ivory/cbuttons.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Ivory/eq_ex.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Ivory/eq_ex.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Ivory/eqmain.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Ivory/eqmain.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Ivory/main.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Ivory/main.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Ivory/monoster.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Ivory/monoster.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Ivory/nums_ex.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Ivory/nums_ex.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Ivory/playpaus.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Ivory/playpaus.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Ivory/pledit.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Ivory/pledit.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Ivory/posbar.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Ivory/posbar.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Ivory/shufrep.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Ivory/shufrep.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Ivory/text.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Ivory/text.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Ivory/titlebar.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Ivory/titlebar.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Ivory/volume.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Ivory/volume.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Osmosis/balance.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Osmosis/balance.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Osmosis/cbuttons.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Osmosis/cbuttons.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Osmosis/eq_ex.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Osmosis/eq_ex.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Osmosis/eqmain.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Osmosis/eqmain.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Osmosis/main.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Osmosis/main.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Osmosis/monoster.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Osmosis/monoster.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Osmosis/nums_ex.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Osmosis/nums_ex.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Osmosis/playpaus.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Osmosis/playpaus.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Osmosis/pledit.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Osmosis/pledit.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Osmosis/posbar.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Osmosis/posbar.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Osmosis/shufrep.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Osmosis/shufrep.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Osmosis/text.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Osmosis/text.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Osmosis/titlebar.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Osmosis/titlebar.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Osmosis/volume.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Osmosis/volume.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Refugee/cbuttons.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Refugee/cbuttons.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Refugee/eq_ex.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Refugee/eq_ex.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Refugee/eqmain.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Refugee/eqmain.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Refugee/main.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Refugee/main.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Refugee/monoster.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Refugee/monoster.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Refugee/nums_ex.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Refugee/nums_ex.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Refugee/playpaus.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Refugee/playpaus.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Refugee/pledit.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Refugee/pledit.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Refugee/posbar.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Refugee/posbar.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Refugee/shufrep.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Refugee/shufrep.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Refugee/text.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Refugee/text.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Refugee/titlebar.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Refugee/titlebar.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/Refugee/volume.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/Refugee/volume.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/TinyPlayer/balance.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/TinyPlayer/balance.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/TinyPlayer/cbuttons.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/TinyPlayer/cbuttons.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/TinyPlayer/eq_ex.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/TinyPlayer/eq_ex.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/TinyPlayer/eqmain.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/TinyPlayer/eqmain.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/TinyPlayer/main.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/TinyPlayer/main.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/TinyPlayer/monoster.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/TinyPlayer/monoster.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/TinyPlayer/nums_ex.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/TinyPlayer/nums_ex.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/TinyPlayer/playpaus.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/TinyPlayer/playpaus.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/TinyPlayer/pledit.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/TinyPlayer/pledit.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/TinyPlayer/posbar.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/TinyPlayer/posbar.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/TinyPlayer/shufrep.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/TinyPlayer/shufrep.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/TinyPlayer/text.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/TinyPlayer/text.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/TinyPlayer/titlebar.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/TinyPlayer/titlebar.png differ Binary files /tmp/tmp_wu7haz6/zF_5KRQ_Be/audacious-plugins-4.1/src/skins-data/Skins/TinyPlayer/volume.png and /tmp/tmp_wu7haz6/TLJWjQvw39/audacious-plugins-4.3.1/src/skins-data/Skins/TinyPlayer/volume.png differ diff -Nru audacious-plugins-4.1/src/skins-qt/Makefile audacious-plugins-4.3.1/src/skins-qt/Makefile --- audacious-plugins-4.1/src/skins-qt/Makefile 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/Makefile 2023-04-29 20:17:32.000000000 +0000 @@ -21,6 +21,7 @@ playstatus.cc \ plugin.cc \ plugin-window.cc \ + search-select.cc \ skin.cc \ skin-ini.cc \ skins_cfg.cc \ diff -Nru audacious-plugins-4.1/src/skins-qt/dock.cc audacious-plugins-4.3.1/src/skins-qt/dock.cc --- audacious-plugins-4.1/src/skins-qt/dock.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/dock.cc 2023-04-29 20:17:32.000000000 +0000 @@ -351,3 +351,23 @@ } } } + +void dock_draw_all () +{ + for (DockWindow & dw : windows) + { + if (dw.window) + dw.window->queue_draw (); + } +} + +bool dock_is_focused () +{ + for (DockWindow & dw : windows) + { + if (dw.window && dw.window->isActiveWindow ()) + return true; + } + + return false; +} diff -Nru audacious-plugins-4.1/src/skins-qt/drag-handle.cc audacious-plugins-4.3.1/src/skins-qt/drag-handle.cc --- audacious-plugins-4.1/src/skins-qt/drag-handle.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/drag-handle.cc 2023-04-29 20:17:32.000000000 +0000 @@ -22,14 +22,16 @@ #include "drag-handle.h" #include "skins_cfg.h" +#include "../ui-common/qt-compat.h" + bool DragHandle::button_press (QMouseEvent * event) { if (event->button () != Qt::LeftButton) return false; m_held = true; - m_x_origin = event->globalX (); - m_y_origin = event->globalY (); + m_x_origin = QtCompat::globalX (event); + m_y_origin = QtCompat::globalY (event); if (press) press (); @@ -52,8 +54,8 @@ return true; if (drag) - drag ((event->globalX () - m_x_origin) / config.scale, - (event->globalY () - m_y_origin) / config.scale); + drag ((QtCompat::globalX (event) - m_x_origin) / config.scale, + (QtCompat::globalY (event) - m_y_origin) / config.scale); return true; } diff -Nru audacious-plugins-4.1/src/skins-qt/eq-graph.cc audacious-plugins-4.3.1/src/skins-qt/eq-graph.cc --- audacious-plugins-4.1/src/skins-qt/eq-graph.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/eq-graph.cc 2023-04-29 20:17:32.000000000 +0000 @@ -88,7 +88,7 @@ return; skin_draw_pixbuf (cr, SKIN_EQMAIN, 0, 294, 0, 0, 113, 19); - skin_draw_pixbuf (cr, SKIN_EQMAIN, 0, 314, 0, 9 + (aud_get_double (nullptr, + skin_draw_pixbuf (cr, SKIN_EQMAIN, 0, 314, 0, 9 + (aud_get_double ( "equalizer_preamp") * 9 + AUD_EQ_MAX_GAIN / 2) / AUD_EQ_MAX_GAIN, 113, 1); double bands[N]; diff -Nru audacious-plugins-4.1/src/skins-qt/eq-slider.cc audacious-plugins-4.3.1/src/skins-qt/eq-slider.cc --- audacious-plugins-4.1/src/skins-qt/eq-slider.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/eq-slider.cc 2023-04-29 20:17:32.000000000 +0000 @@ -32,6 +32,8 @@ #include "skin.h" #include "eq-slider.h" +#include "../ui-common/qt-compat.h" + void EqSlider::draw (QPainter & cr) { int frame = 27 - m_pos * 27 / 50; @@ -68,7 +70,7 @@ return false; m_pressed = true; - moved (event->y () / config.scale - 5); + moved (QtCompat::y (event) / config.scale - 5); queue_draw (); return true; } @@ -82,7 +84,7 @@ return true; m_pressed = false; - moved (event->y () / config.scale - 5); + moved (QtCompat::y (event) / config.scale - 5); queue_draw (); return true; } @@ -92,7 +94,7 @@ if (! m_pressed) return true; - moved (event->y () / config.scale - 5); + moved (QtCompat::y (event) / config.scale - 5); queue_draw (); return true; } diff -Nru audacious-plugins-4.1/src/skins-qt/equalizer.cc audacious-plugins-4.3.1/src/skins-qt/equalizer.cc --- audacious-plugins-4.1/src/skins-qt/equalizer.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/equalizer.cc 2023-04-29 20:17:32.000000000 +0000 @@ -46,6 +46,8 @@ #include "skins_util.h" #include "view.h" +#include "../ui-common/qt-compat.h" + class EqWindow : public Window { public: @@ -96,7 +98,7 @@ { if (event->button () == Qt::LeftButton && event->type () == QEvent::MouseButtonDblClick && - event->y () < 14 * config.scale) + QtCompat::y (event) < 14 * config.scale) { equalizerwin_shade_toggle (); return true; @@ -104,7 +106,7 @@ if (event->button () == Qt::RightButton && event->type () == QEvent::MouseButtonPress) { - menu_popup (UI_MENU_MAIN, event->globalX (), event->globalY (), false, false); + menu_popup (UI_MENU_MAIN, QtCompat::globalX (event), QtCompat::globalY (event), false, false); return true; } @@ -251,9 +253,9 @@ skin_draw_pixbuf (cr, SKIN_EQMAIN, 0, 0, 0, 0, 275, is_shaded () ? 14 : 116); if (is_shaded ()) - skin_draw_pixbuf (cr, SKIN_EQ_EX, 0, 0, 0, 0, 275, 14); + skin_draw_pixbuf (cr, SKIN_EQ_EX, 0, is_focused () ? 0 : 15, 0, 0, 275, 14); else - skin_draw_pixbuf (cr, SKIN_EQMAIN, 0, 134, 0, 0, 275, 14); + skin_draw_pixbuf (cr, SKIN_EQMAIN, 0, is_focused () ? 134 : 149, 0, 0, 275, 14); } static void equalizerwin_create_window () @@ -266,6 +268,7 @@ equalizerwin = new EqWindow (shaded); equalizerwin->setWindowTitle (_("Audacious Equalizer")); + equalizerwin->setWindowRole ("equalizer"); } void equalizerwin_unhook () diff -Nru audacious-plugins-4.1/src/skins-qt/hslider.cc audacious-plugins-4.3.1/src/skins-qt/hslider.cc --- audacious-plugins-4.1/src/skins-qt/hslider.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/hslider.cc 2023-04-29 20:17:32.000000000 +0000 @@ -30,6 +30,8 @@ #include "skins_cfg.h" #include "hslider.h" +#include "../ui-common/qt-compat.h" + void HSlider::draw (QPainter & cr) { skin_draw_pixbuf (cr, m_si, m_fx, m_fy, 0, 0, m_w, m_h); @@ -46,7 +48,7 @@ return false; m_pressed = true; - m_pos = aud::clamp ((int) event->x () / config.scale - m_kw / 2, m_min, m_max); + m_pos = aud::clamp ((int) QtCompat::x (event) / config.scale - m_kw / 2, m_min, m_max); if (move) move (); @@ -64,7 +66,7 @@ return true; m_pressed = false; - m_pos = aud::clamp ((int) event->x () / config.scale - m_kw / 2, m_min, m_max); + m_pos = aud::clamp ((int) QtCompat::x (event) / config.scale - m_kw / 2, m_min, m_max); if (release) release (); @@ -79,7 +81,7 @@ return true; m_pressed = true; - m_pos = aud::clamp ((int) event->x () / config.scale - m_kw / 2, m_min, m_max); + m_pos = aud::clamp ((int) QtCompat::x (event) / config.scale - m_kw / 2, m_min, m_max); if (move) move (); diff -Nru audacious-plugins-4.1/src/skins-qt/main.cc audacious-plugins-4.3.1/src/skins-qt/main.cc --- audacious-plugins-4.1/src/skins-qt/main.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/main.cc 2023-04-29 20:17:32.000000000 +0000 @@ -38,6 +38,7 @@ #include #include "../ui-common/dialogs-qt.h" +#include "../ui-common/qt-compat.h" #include "actions-mainwin.h" #include "actions-playlist.h" @@ -82,7 +83,12 @@ void draw (QPainter & cr); bool button_press (QMouseEvent * event); bool scroll (QWheelEvent * event); + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + void enterEvent (QEnterEvent * enterEvent); +#else void enterEvent (QEvent * event); +#endif }; Window * mainwin; @@ -329,7 +335,7 @@ mainwin_monostereo->set_num_channels (channels); if (bitrate > 0) - snprintf (scratch, sizeof scratch, "%d kbps", bitrate / 1000); + snprintf (scratch, sizeof scratch, "%d kbit/s", bitrate / 1000); else scratch[0] = 0; @@ -483,7 +489,7 @@ { m_scroll_delta_y -= 120 * steps_y; int volume_delta = aud_get_int ("volume_delta"); - aud_drct_set_volume_main (aud_drct_get_volume_main () + steps_y * volume_delta); + mainwin_set_volume_diff (steps_y * volume_delta); } return true; @@ -493,7 +499,7 @@ { if (event->button () == Qt::LeftButton && event->type () == QEvent::MouseButtonDblClick && - event->y () < 14 * config.scale) + QtCompat::y (event) < 14 * config.scale) { mainwin_shade_toggle (); return true; @@ -501,21 +507,26 @@ if (event->button () == Qt::RightButton && event->type () == QEvent::MouseButtonPress) { - menu_popup (UI_MENU_MAIN, event->globalX (), event->globalY (), false, false); + menu_popup (UI_MENU_MAIN, QtCompat::globalX (event), QtCompat::globalY (event), false, false); return true; } return Window::button_press (event); } +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +void MainWindow::enterEvent (QEnterEvent * enterEvent) +{ +#else void MainWindow::enterEvent (QEvent * event) { - if (! is_shaded() || ! aud_get_bool (nullptr, "show_filepopup_for_tuple")) + auto enterEvent = static_cast (event); +#endif + if (! is_shaded () || ! aud_get_bool ("show_filepopup_for_tuple")) return; - auto enterEvent = static_cast (event); - if (enterEvent->x () >= 79 * config.scale && - enterEvent->x () <= 157 * config.scale) + if (QtCompat::x (enterEvent) >= 79 * config.scale && + QtCompat::x (enterEvent) <= 157 * config.scale) { audqt::infopopup_show_current (); } @@ -523,7 +534,7 @@ static void mainwin_playback_rpress (Button * button, QMouseEvent * event) { - menu_popup (UI_MENU_PLAYBACK, event->globalX (), event->globalY (), false, false); + menu_popup (UI_MENU_PLAYBACK, QtCompat::globalX (event), QtCompat::globalY (event), false, false); } bool Window::keypress (QKeyEvent * event) @@ -840,7 +851,7 @@ switch (i) { case MENUROW_OPTIONS: - menu_popup (UI_MENU_VIEW, event->globalX (), event->globalY (), false, false); + menu_popup (UI_MENU_VIEW, QtCompat::globalX (event), QtCompat::globalY (event), false, false); break; case MENUROW_ALWAYS: view_set_on_top (! aud_get_bool ("skins", "always_on_top")); @@ -874,7 +885,7 @@ { if (event->type () == QEvent::MouseButtonPress && event->button () == Qt::RightButton) { - menu_popup (UI_MENU_PLAYBACK, event->globalX (), event->globalY (), false, false); + menu_popup (UI_MENU_PLAYBACK, QtCompat::globalX (event), QtCompat::globalY (event), false, false); return true; } @@ -1096,7 +1107,7 @@ int height = is_shaded () ? MAINWIN_SHADED_HEIGHT : skin.hints.mainwin_height; skin_draw_pixbuf (cr, SKIN_MAIN, 0, 0, 0, 0, width, height); - skin_draw_mainwin_titlebar (cr, is_shaded (), true); + skin_draw_mainwin_titlebar (cr, is_shaded (), is_focused ()); } static void mainwin_create_window () @@ -1104,6 +1115,7 @@ bool shaded = aud_get_bool ("skins", "player_shaded"); mainwin = new MainWindow (shaded); + mainwin->setWindowRole("mainwindow"); #if 0 GtkWidget * w = mainwin->gtk (); diff -Nru audacious-plugins-4.1/src/skins-qt/menurow.cc audacious-plugins-4.3.1/src/skins-qt/menurow.cc --- audacious-plugins-4.1/src/skins-qt/menurow.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/menurow.cc 2023-04-29 20:17:32.000000000 +0000 @@ -31,6 +31,8 @@ #include "skin.h" #include "menurow.h" +#include "../ui-common/qt-compat.h" + void MenuRow::draw (QPainter & cr) { if (m_selected == MENUROW_NONE) @@ -77,7 +79,7 @@ return false; m_pushed = true; - m_selected = menurow_find_selected (event->x () / config.scale, event->y () / config.scale); + m_selected = menurow_find_selected (QtCompat::x (event) / config.scale, QtCompat::y (event) / config.scale); mainwin_mr_change (m_selected); @@ -107,7 +109,7 @@ if (! m_pushed) return true; - m_selected = menurow_find_selected (event->x () / config.scale, event->y () / config.scale); + m_selected = menurow_find_selected (QtCompat::x (event) / config.scale, QtCompat::y (event) / config.scale); mainwin_mr_change (m_selected); diff -Nru audacious-plugins-4.1/src/skins-qt/menus.cc audacious-plugins-4.3.1/src/skins-qt/menus.cc --- audacious-plugins-4.1/src/skins-qt/menus.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/menus.cc 2023-04-29 20:17:32.000000000 +0000 @@ -57,8 +57,8 @@ static void pl_import () { audqt::fileopener_show (audqt::FileMode::ImportPlaylist); } static void pl_export () { audqt::fileopener_show (audqt::FileMode::ExportPlaylist); } -static void skins_volume_up () { mainwin_set_volume_diff (5); } -static void skins_volume_down () { mainwin_set_volume_diff (-5); } +static void skins_volume_up () { mainwin_set_volume_diff (aud_get_int ("volume_delta")); } +static void skins_volume_down () { mainwin_set_volume_diff (-aud_get_int ("volume_delta")); } static const audqt::MenuItem output_items[] = { audqt::MenuCommand ({N_("Volume Up"), "audio-volume-high", "+"}, skins_volume_up), @@ -107,9 +107,9 @@ audqt::MenuSep (), audqt::MenuCommand ({N_("Set A-B Repeat"), nullptr, "A"}, action_ab_set), audqt::MenuCommand ({N_("Clear A-B Repeat"), nullptr, "Shift+A"}, action_ab_clear), -#if 0 audqt::MenuSep (), - audqt::MenuCommand ({N_("Jump to Song ..."), "go-jump", "J"}, audgui_jump_to_track), + audqt::MenuCommand ({N_("Jump to Song ..."), "go-jump", "J"}, aud_ui_show_jump_to_song), +#if 0 audqt::MenuCommand ({N_("Jump to Time ..."), "go-jump", "Ctrl+J"}, audgui_jump_to_time) #endif }; @@ -180,6 +180,8 @@ }; static const audqt::MenuItem playlist_select_items[] = { + audqt::MenuCommand ({N_("Search and Select"), "edit-find", "Ctrl+F"}, action_playlist_search_and_select), + audqt::MenuSep (), audqt::MenuCommand ({N_("Invert Selection")}, pl_select_invert), audqt::MenuCommand ({N_("Select None"), nullptr, "Shift+Ctrl+A"}, pl_select_none), audqt::MenuCommand ({N_("Select All"), "edit-select-all", "Ctrl+A"}, pl_select_all), @@ -206,8 +208,8 @@ audqt::MenuCommand ({N_("By Artist")}, sort_sel_artist), audqt::MenuCommand ({N_("By Album")}, sort_sel_album), audqt::MenuCommand ({N_("By Album Artist")}, sort_sel_album_artist), - audqt::MenuCommand ({N_("By Genre")}, sort_sel_genre), audqt::MenuCommand ({N_("By Release Date")}, sort_sel_date), + audqt::MenuCommand ({N_("By Genre")}, sort_sel_genre), audqt::MenuCommand ({N_("By Length")}, sort_sel_length), audqt::MenuCommand ({N_("By File Name")}, sort_sel_filename), audqt::MenuCommand ({N_("By File Path")}, sort_sel_path), diff -Nru audacious-plugins-4.1/src/skins-qt/meson.build audacious-plugins-4.3.1/src/skins-qt/meson.build --- audacious-plugins-4.1/src/skins-qt/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -20,6 +20,7 @@ 'playstatus.cc', 'plugin.cc', 'plugin-window.cc', + 'search-select.cc', 'skin.cc', 'skin-ini.cc', 'skins_cfg.cc', diff -Nru audacious-plugins-4.1/src/skins-qt/playlist-slider.cc audacious-plugins-4.3.1/src/skins-qt/playlist-slider.cc --- audacious-plugins-4.1/src/skins-qt/playlist-slider.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/playlist-slider.cc 2023-04-29 20:17:32.000000000 +0000 @@ -33,6 +33,8 @@ #include "playlist-widget.h" #include "playlist-slider.h" +#include "../ui-common/qt-compat.h" + void PlaylistSlider::draw (QPainter & cr) { int rows, first; @@ -69,7 +71,7 @@ return false; m_pressed = true; - set_pos (event->y () / config.scale - 9); + set_pos (QtCompat::y (event) / config.scale - 9); queue_draw (); return true; @@ -84,7 +86,7 @@ return true; m_pressed = false; - set_pos (event->y () / config.scale - 9); + set_pos (QtCompat::y (event) / config.scale - 9); queue_draw (); return true; @@ -95,7 +97,7 @@ if (! m_pressed) return true; - set_pos (event->y () / config.scale - 9); + set_pos (QtCompat::y (event) / config.scale - 9); queue_draw (); return true; diff -Nru audacious-plugins-4.1/src/skins-qt/playlist-widget.cc audacious-plugins-4.3.1/src/skins-qt/playlist-widget.cc --- audacious-plugins-4.1/src/skins-qt/playlist-widget.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/playlist-widget.cc 2023-04-29 20:17:32.000000000 +0000 @@ -33,6 +33,8 @@ #include "playlist-widget.h" #include "playlist-slider.h" +#include "../ui-common/qt-compat.h" + #include #include #include @@ -589,7 +591,7 @@ bool PlaylistWidget::button_press (QMouseEvent * event) { - int position = calc_position (event->y ()); + int position = calc_position (QtCompat::y (event)); int state = event->modifiers () & (Qt::ShiftModifier | Qt::ControlModifier | Qt::AltModifier); cancel_all (); @@ -639,7 +641,7 @@ } menu_popup ((position == -1) ? UI_MENU_PLAYLIST : - UI_MENU_PLAYLIST_CONTEXT, event->globalX (), event->globalY (), + UI_MENU_PLAYLIST_CONTEXT, QtCompat::globalX (event), QtCompat::globalY (event), false, false); break; default: @@ -691,7 +693,7 @@ bool PlaylistWidget::motion (QMouseEvent * event) { - int position = calc_position (event->y ()); + int position = calc_position (QtCompat::y (event)); if (m_drag) { @@ -748,7 +750,7 @@ if (event->proposedAction () == Qt::CopyAction && mimedata->hasUrls ()) { - auto p = event->pos (); + auto p = QtCompat::pos (event); hover (p.x (), p.y ()); event->acceptProposedAction (); } @@ -765,7 +767,7 @@ if (event->proposedAction () == Qt::CopyAction && mimedata->hasUrls ()) { - auto p = event->pos (); + auto p = QtCompat::pos (event); hover (p.x (), p.y ()); Index files; diff -Nru audacious-plugins-4.1/src/skins-qt/playlistwin.cc audacious-plugins-4.3.1/src/skins-qt/playlistwin.cc --- audacious-plugins-4.1/src/skins-qt/playlistwin.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/playlistwin.cc 2023-04-29 20:17:32.000000000 +0000 @@ -49,6 +49,8 @@ #include "window.h" #include "view.h" +#include "../ui-common/qt-compat.h" + #define PLAYLISTWIN_MIN_WIDTH MAINWIN_WIDTH #define PLAYLISTWIN_MIN_HEIGHT MAINWIN_HEIGHT #define PLAYLISTWIN_WIDTH_SNAP 25 @@ -90,7 +92,6 @@ static int resize_base_width, resize_base_height; //static int drop_position; -static bool song_changed; static void update_info () { @@ -224,7 +225,7 @@ bool PlWindow::button_press (QMouseEvent * event) { if (event->button () == Qt::LeftButton && - event->type () == QEvent::MouseButtonDblClick && event->y () < 14) + event->type () == QEvent::MouseButtonDblClick && QtCompat::y (event) < 14) { playlistwin_shade_toggle (); return true; @@ -232,7 +233,7 @@ if (event->button () == Qt::RightButton && event->type () == QEvent::MouseButtonPress) { - menu_popup (UI_MENU_PLAYLIST, event->globalX (), event->globalY (), false, false); + menu_popup (UI_MENU_PLAYLIST, QtCompat::globalX (event), QtCompat::globalY (event), false, false); return true; } @@ -463,10 +464,10 @@ void PlWindow::draw (QPainter & cr) { if (is_shaded ()) - skin_draw_playlistwin_shaded (cr, config.playlist_width, true); + skin_draw_playlistwin_shaded (cr, config.playlist_width, is_focused ()); else skin_draw_playlistwin_frame (cr, config.playlist_width, - config.playlist_height, true); + config.playlist_height, is_focused ()); } static void playlistwin_create_window () @@ -475,6 +476,7 @@ playlistwin = new PlWindow (shaded); playlistwin->setWindowTitle (_("Audacious Playlist Editor")); + playlistwin->setWindowRole ("playlist"); #if 0 GtkWidget * w = playlistwin->gtk (); @@ -492,12 +494,6 @@ { playlistwin_list->refresh (); - if (song_changed) - { - playlistwin_list->set_focused (Playlist::active_playlist ().get_position ()); - song_changed = false; - } - update_info (); update_rollup_text (); } @@ -509,10 +505,11 @@ int row = list.get_position (); if (row >= 0) + { list.select_entry (row, true); - - if (list == Playlist::active_playlist ()) - song_changed = true; + if (list == Playlist::active_playlist ()) + playlistwin_list->set_focused (row); + } } void playlistwin_create () @@ -523,8 +520,6 @@ update_info (); update_rollup_text (); - song_changed = false; - hook_associate ("playlist position", follow_cb, nullptr); hook_associate ("playlist activate", update_cb, nullptr); hook_associate ("playlist update", update_cb, nullptr); diff -Nru audacious-plugins-4.1/src/skins-qt/plugin-window.cc audacious-plugins-4.3.1/src/skins-qt/plugin-window.cc --- audacious-plugins-4.1/src/skins-qt/plugin-window.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/plugin-window.cc 2023-04-29 20:17:32.000000000 +0000 @@ -46,6 +46,7 @@ { setWindowFlags (Qt::Dialog); setWindowTitle (item->name ()); + setWindowRole ("plugin"); item->set_host_data (this); diff -Nru audacious-plugins-4.1/src/skins-qt/plugin.cc audacious-plugins-4.3.1/src/skins-qt/plugin.cc --- audacious-plugins-4.1/src/skins-qt/plugin.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/plugin.cc 2023-04-29 20:17:32.000000000 +0000 @@ -166,10 +166,16 @@ { skins_cfg_load (); + // At least one 3rd-party QImage plugin will abort() if loaded before + // QGuiApplication, so call audqt::init() before loading the skin! + audqt::init (); + if (! load_initial_skin ()) + { + audqt::cleanup (); return false; + } - audqt::init (); skins_init_main (false); create_plugin_windows (); diff -Nru audacious-plugins-4.1/src/skins-qt/search-select.cc audacious-plugins-4.3.1/src/skins-qt/search-select.cc --- audacious-plugins-4.1/src/skins-qt/search-select.cc 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/search-select.cc 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,212 @@ +/* Audacious - Cross-platform multimedia player + * Copyright (C) 2005-2011 Audacious development team. + * + * BMP - Cross-platform multimedia player + * Copyright (C) 2003-2004 BMP development team. + * + * Based on XMMS: + * Copyright (C) 1998-2003 XMMS development team. + * + * 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; under version 3 of the License. + * + * 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, see . + * + * The Audacious team does not consider modular code linking to + * Audacious or using our public API to be a derived work. + */ + +#include "actions-playlist.h" +#include "playlistwin.h" +#include "playlist-widget.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +class SearchSelectDialog : public QDialog +{ +public: + SearchSelectDialog (QWidget * parent = nullptr); + +private: + void toggle_related_checkbox (QCheckBox * caller, QCheckBox * related); + void copy_selected_to_new (Playlist playlist); + void focus_first_selected_entry (Playlist playlist); + void search (); + + QLineEdit * m_entry_title, * m_entry_album, + * m_entry_artist, * m_entry_file_name; + QCheckBox * m_checkbox_clearprevsel, + * m_checkbox_autoenqueue, + * m_checkbox_newplaylist; +}; + +SearchSelectDialog::SearchSelectDialog (QWidget * parent) : QDialog (parent) +{ + setWindowTitle (_("Search entries in active playlist")); + setWindowRole ("search"); + setContentsMargins (audqt::margins.FourPt); + + auto logo = new QLabel; + int logo_size = audqt::to_native_dpi (48); + logo->setPixmap (QIcon::fromTheme ("edit-find").pixmap (logo_size, logo_size)); + + auto help_text = new QLabel (_("Select entries in playlist by filling one or more " + "fields. Fields use regular expressions syntax, case-insensitive. If you don't know how " + "regular expressions work, simply insert a literal portion of what you're searching for.")); + help_text->setWordWrap (true); + + auto label_title = new QLabel (_("Title:")); + m_entry_title = new QLineEdit; + m_entry_title->setFocus (); + + auto label_album = new QLabel (_("Album:")); + m_entry_album = new QLineEdit; + + auto label_artist = new QLabel (_("Artist:")); + m_entry_artist = new QLineEdit; + + auto label_file_name = new QLabel (_("File Name:")); + m_entry_file_name = new QLineEdit; + + m_checkbox_clearprevsel = new QCheckBox (_("Clear previous selection before searching")); + m_checkbox_autoenqueue = new QCheckBox (_("Automatically toggle queue for matching entries")); + m_checkbox_newplaylist = new QCheckBox (_("Create a new playlist with matching entries")); + m_checkbox_clearprevsel->setCheckState (Qt::Checked); + + QObject::connect (m_checkbox_autoenqueue, & QAbstractButton::toggled, [this] () { + toggle_related_checkbox (m_checkbox_autoenqueue, m_checkbox_newplaylist); + }); + + QObject::connect (m_checkbox_newplaylist, & QAbstractButton::toggled, [this] () { + toggle_related_checkbox (m_checkbox_newplaylist, m_checkbox_autoenqueue); + }); + + auto search = new QPushButton (_("Search")); + auto cancel = new QPushButton (_("Cancel")); + + auto buttonbox = new QDialogButtonBox; + buttonbox->addButton (search, QDialogButtonBox::AcceptRole); + buttonbox->addButton (cancel, QDialogButtonBox::RejectRole); + + QObject::connect (buttonbox, & QDialogButtonBox::accepted, this, & SearchSelectDialog::search); + QObject::connect (buttonbox, & QDialogButtonBox::rejected, this, & QDialog::close); + + auto hbox = audqt::make_hbox (nullptr); + hbox->addWidget (logo); + hbox->addWidget (help_text); + + auto grid = new QGridLayout; + grid->addLayout (hbox, 0, 0, 1, 2, Qt::AlignLeft); + grid->addWidget (label_title, 1, 0, Qt::AlignRight); + grid->addWidget (m_entry_title, 1, 1); + grid->addWidget (label_album, 2, 0, Qt::AlignRight); + grid->addWidget (m_entry_album, 2, 1); + grid->addWidget (label_artist, 3, 0, Qt::AlignRight); + grid->addWidget (m_entry_artist, 3, 1); + grid->addWidget (label_file_name, 4, 0, Qt::AlignRight); + grid->addWidget (m_entry_file_name, 4, 1); + grid->addWidget (m_checkbox_clearprevsel, 5, 0, 1, 2); + grid->addWidget (m_checkbox_autoenqueue, 6, 0, 1, 2); + grid->addWidget (m_checkbox_newplaylist, 7, 0, 1, 2); + + auto vbox = audqt::make_vbox (this); + vbox->addLayout (grid); + vbox->addWidget (buttonbox, 0, Qt::AlignBottom); +} + +void SearchSelectDialog::toggle_related_checkbox (QCheckBox * caller, QCheckBox * related) +{ + if (caller->isChecked ()) + related->setCheckState (Qt::Unchecked); +} + +void SearchSelectDialog::copy_selected_to_new (Playlist playlist) +{ + int entries = playlist.n_entries (); + Index items; + + for (int entry = 0; entry < entries; entry ++) + { + if (playlist.entry_selected (entry)) + { + items.append + (playlist.entry_filename (entry), + playlist.entry_tuple (entry, Playlist::NoWait), + playlist.entry_decoder (entry, Playlist::NoWait)); + } + } + + auto new_list = Playlist::new_playlist (); + new_list.insert_items (0, std::move (items), false); +} + +void SearchSelectDialog::focus_first_selected_entry (Playlist playlist) +{ + int entries = playlist.n_entries (); + for (int i = 0; i < entries; i ++) + { + if (playlist.entry_selected (i)) + { + playlistwin_list->set_focused (i); + return; + } + } +} + +void SearchSelectDialog::search () +{ + auto playlist = Playlist::active_playlist (); + + /* create a tuple with user search data */ + Tuple tuple; + tuple.set_str (Tuple::Title, m_entry_title->text ().toUtf8 ()); + tuple.set_str (Tuple::Album, m_entry_album->text ().toUtf8 ()); + tuple.set_str (Tuple::Artist, m_entry_artist->text ().toUtf8 ()); + tuple.set_str (Tuple::Basename, m_entry_file_name->text ().toUtf8 ()); + + /* check if previous selection should be cleared before searching */ + if (m_checkbox_clearprevsel->isChecked ()) + playlist.select_all (false); + + playlist.select_by_patterns (tuple); + + /* check if a new playlist should be created after searching */ + if (m_checkbox_newplaylist->isChecked ()) + copy_selected_to_new (playlist); + else + { + /* set focus on the first entry found */ + focus_first_selected_entry (playlist); + + /* check if matched entries should be queued */ + if (m_checkbox_autoenqueue->isChecked ()) + playlist.queue_insert_selected (-1); + } + + /* done here :) */ + close (); +} + +void action_playlist_search_and_select () +{ + auto dialog = new SearchSelectDialog; + dialog->setAttribute (Qt::WA_DeleteOnClose); + dialog->show (); +} diff -Nru audacious-plugins-4.1/src/skins-qt/skins_cfg.cc audacious-plugins-4.3.1/src/skins-qt/skins_cfg.cc --- audacious-plugins-4.1/src/skins-qt/skins_cfg.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/skins_cfg.cc 2023-04-29 20:17:32.000000000 +0000 @@ -60,6 +60,7 @@ "vu_mode", aud::numeric_string::str, /* windows */ + "active_titlebar_any", "TRUE", "always_on_top", "FALSE", "double_size", "FALSE", "equalizer_shaded", "FALSE", @@ -90,6 +91,7 @@ /* general */ {"autoscroll_songname", & config.autoscroll}, {"mainwin_use_bitmapfont", & config.mainwin_use_bitmapfont}, + {"active_titlebar_any", & config.active_titlebar_any}, {"twoway_scroll", & config.twoway_scroll}, /* visualizer */ @@ -206,6 +208,8 @@ WidgetCombo (nullptr, WidgetString (selected_skin, skin_select_cb), {nullptr, skin_combo_fill}), + WidgetCheck (N_("Display active titlebar when any window is focused"), + WidgetBool (config.active_titlebar_any, nullptr)), WidgetLabel (N_("Fonts")), WidgetTable ({{font_table_elements}}), WidgetCheck (N_("Use bitmap fonts (supports ASCII only)"), diff -Nru audacious-plugins-4.1/src/skins-qt/skins_cfg.h audacious-plugins-4.3.1/src/skins-qt/skins_cfg.h --- audacious-plugins-4.1/src/skins-qt/skins_cfg.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/skins_cfg.h 2023-04-29 20:17:32.000000000 +0000 @@ -39,6 +39,7 @@ int vu_mode; int analyzer_falloff, peaks_falloff; bool mainwin_use_bitmapfont; + bool active_titlebar_any; } skins_cfg_t; extern skins_cfg_t config; diff -Nru audacious-plugins-4.1/src/skins-qt/window.cc audacious-plugins-4.3.1/src/skins-qt/window.cc --- audacious-plugins-4.1/src/skins-qt/window.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/window.cc 2023-04-29 20:17:32.000000000 +0000 @@ -23,6 +23,8 @@ #include "plugin.h" #include "skins_cfg.h" +#include "../ui-common/qt-compat.h" + void Window::apply_shape () { QRegion * mask = m_is_shaded ? m_sshape.get () : m_shape.get (); @@ -41,7 +43,7 @@ if (m_is_moving) return true; - dock_move_start (m_id, event->globalX (), event->globalY ()); + dock_move_start (m_id, QtCompat::globalX (event), QtCompat::globalY (event)); m_is_moving = true; return true; } @@ -60,7 +62,7 @@ if (! m_is_moving) return true; - dock_move (event->globalX (), event->globalY ()); + dock_move (QtCompat::globalX (event), QtCompat::globalY (event)); return true; } @@ -70,6 +72,14 @@ return true; } +void Window::changeEvent (QEvent * event) +{ + if (event->type () == QEvent::ActivationChange) + config.active_titlebar_any ? dock_draw_all () : Window::queue_draw (); + + QWidget::changeEvent (event); +} + Window::~Window () { dock_remove_window (m_id); @@ -80,7 +90,10 @@ m_is_shaded (shaded) { if (id == WINDOW_MAIN) - setWindowFlags (Qt::Window | Qt::FramelessWindowHint); + // Qt::WindowMinimizeButtonHint is necessary on Windows + // to allow the window to be minimized via the taskbar + setWindowFlags (Qt::Window | Qt::FramelessWindowHint | + Qt::WindowMinimizeButtonHint); else setWindowFlags (Qt::Dialog | Qt::FramelessWindowHint); @@ -159,3 +172,8 @@ { widget->move (x * config.scale, y * config.scale); } + +bool Window::is_focused () +{ + return config.active_titlebar_any ? dock_is_focused () : isActiveWindow (); +} diff -Nru audacious-plugins-4.1/src/skins-qt/window.h audacious-plugins-4.3.1/src/skins-qt/window.h --- audacious-plugins-4.1/src/skins-qt/window.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/skins-qt/window.h 2023-04-29 20:17:32.000000000 +0000 @@ -42,6 +42,7 @@ void resize (int w, int h); void set_shapes (QRegion * shape, QRegion * sshape); bool is_shaded () { return m_is_shaded; } + bool is_focused (); void set_shaded (bool shaded); void put_widget (bool shaded, Widget * widget, int x, int y); void move_widget (bool shaded, Widget * widget, int x, int y); @@ -58,6 +59,7 @@ private: void apply_shape (); + void changeEvent (QEvent * event); const int m_id; bool m_is_shaded = false; @@ -72,5 +74,7 @@ void dock_move_start (int id, int x, int y); void dock_move (int x, int y); void dock_change_scale (int old_scale, int new_scale); +void dock_draw_all (); +bool dock_is_focused (); #endif diff -Nru audacious-plugins-4.1/src/sndfile/plugin.cc audacious-plugins-4.3.1/src/sndfile/plugin.cc --- audacious-plugins-4.1/src/sndfile/plugin.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/sndfile/plugin.cc 2023-04-29 20:17:32.000000000 +0000 @@ -219,7 +219,7 @@ format = "Core Audio File"; break; default: - format = "Unknown sndfile"; + format = nullptr; } switch (sfinfo.format & SF_FORMAT_SUBMASK) @@ -294,6 +294,15 @@ subformat = nullptr; } + if (format == nullptr) + { + SF_FORMAT_INFO info = {.format = sfinfo.format & SF_FORMAT_SUBMASK}; + if (sf_command (sndfile, SFC_GET_FORMAT_INFO, & info, sizeof (info)) == 0) + format = info.name; + else + format = "Unknown format"; + } + if (subformat != nullptr) tuple.set_format (str_printf ("%s (%s)", format, subformat), sfinfo.channels, sfinfo.samplerate, 0); diff -Nru audacious-plugins-4.1/src/sndio/meson.build audacious-plugins-4.3.1/src/sndio/meson.build --- audacious-plugins-4.1/src/sndio/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/sndio/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -1,4 +1,4 @@ -sndio_dep = cxx.find_library('sndio', required: false) +sndio_dep = dependency('sndio', required: false) have_sndio = sndio_dep.found() @@ -7,7 +7,6 @@ 'sndio.cc', dependencies: [audacious_dep, sndio_dep], name_prefix: '', - link_args: ['-lsndio'], install: true, install_dir: output_plugin_dir ) diff -Nru audacious-plugins-4.1/src/statusicon/Makefile audacious-plugins-4.3.1/src/statusicon/Makefile --- audacious-plugins-4.1/src/statusicon/Makefile 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/statusicon/Makefile 2023-04-29 20:17:32.000000000 +0000 @@ -11,3 +11,6 @@ CFLAGS += ${PLUGIN_CFLAGS} CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} -I../.. LIBS += ${GTK_LIBS} -laudgui + +# Ignore GtkStatusIcon deprecation since GTK 3.14 +CPPFLAGS += -Wno-deprecated-declarations diff -Nru audacious-plugins-4.1/src/statusicon/meson.build audacious-plugins-4.3.1/src/statusicon/meson.build --- audacious-plugins-4.1/src/statusicon/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/statusicon/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -2,6 +2,7 @@ 'statusicon.cc', dependencies: [audacious_dep, gtk_dep, audgui_dep], name_prefix: '', + cpp_args: '-Wno-deprecated-declarations', install: true, install_dir: general_plugin_dir ) diff -Nru audacious-plugins-4.1/src/streamtuner/meson.build audacious-plugins-4.3.1/src/streamtuner/meson.build --- audacious-plugins-4.1/src/streamtuner/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/streamtuner/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -1,4 +1,9 @@ -qtnetwork_dep = dependency('qt5', version: qt_req, required: false, modules: ['Network']) +if get_option('qt6') + qtnetwork_dep = dependency('qt6', version: qt_req, required: false, modules: ['Network']) +else + qtnetwork_dep = dependency('qt5', version: qt_req, required: false, modules: ['Network']) +endif + have_streamtuner = qtnetwork_dep.found() diff -Nru audacious-plugins-4.1/src/ui-common/dialogs-qt.cc audacious-plugins-4.3.1/src/ui-common/dialogs-qt.cc --- audacious-plugins-4.1/src/ui-common/dialogs-qt.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/ui-common/dialogs-qt.cc 2023-04-29 20:17:32.000000000 +0000 @@ -21,26 +21,58 @@ #include #include +#include + +static QMessageBox * create_message_box (QMessageBox::Icon icon, + const QString & title, const QString & message, QWidget * parent) +{ + auto msgbox = new QMessageBox (icon, title, message, QMessageBox::Close, parent); + msgbox->setAttribute (Qt::WA_DeleteOnClose); + msgbox->setTextInteractionFlags (Qt::TextSelectableByMouse); + msgbox->button (QMessageBox::Close)->setText (audqt::translate_str (N_("_Close"))); + return msgbox; +} + +static void add_message (QMessageBox * msgbox, QString message) +{ + QString old = msgbox->text (); + if (old.count (QChar::LineFeed) >= 9) + message = _("\n(Further messages have been hidden.)"); + if (! old.contains (message)) + msgbox->setText (old + QChar::LineFeed + message); +} void DialogWindows::create_progress () { if (! m_progress) { m_progress = new QMessageBox (m_parent); + m_progress->setAttribute (Qt::WA_DeleteOnClose); m_progress->setIcon (QMessageBox::Information); m_progress->setWindowTitle (_("Working ...")); + m_progress->setWindowRole ("progress"); m_progress->setWindowModality (Qt::WindowModal); } } void DialogWindows::show_error (const char * message) { - audqt::simple_message (_("Error"), message, QMessageBox::Critical); + if (m_error) + add_message (m_error, message); + else + m_error = create_message_box (QMessageBox::Critical, _("Error"), message, m_parent); + + m_error->show (); } void DialogWindows::show_info (const char * message) { - audqt::simple_message (_("Information"), message, QMessageBox::Information); + if (m_info) + add_message (m_info, message); + else + m_info = create_message_box (QMessageBox::Information, _("Information"), message, m_parent); + + m_info->show (); } void DialogWindows::show_progress (const char * message) diff -Nru audacious-plugins-4.1/src/ui-common/dialogs-qt.h audacious-plugins-4.3.1/src/ui-common/dialogs-qt.h --- audacious-plugins-4.1/src/ui-common/dialogs-qt.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/ui-common/dialogs-qt.h 2023-04-29 20:17:32.000000000 +0000 @@ -21,6 +21,7 @@ #define DIALOG_WINDOWS_H #include +#include class QMessageBox; class QWidget; @@ -33,7 +34,7 @@ private: QWidget * m_parent; - QMessageBox * m_progress = nullptr; + QPointer m_progress, m_info, m_error; void create_progress (); void show_error (const char * message); diff -Nru audacious-plugins-4.1/src/ui-common/menu-ops-gtk.cc audacious-plugins-4.3.1/src/ui-common/menu-ops-gtk.cc --- audacious-plugins-4.1/src/ui-common/menu-ops-gtk.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/ui-common/menu-ops-gtk.cc 2023-04-29 20:17:32.000000000 +0000 @@ -23,8 +23,10 @@ #include #include +#include #include #include +#include #include static void uri_get_func (GtkClipboard *, GtkSelectionData * sel, unsigned, void * data) @@ -122,8 +124,22 @@ /* don't trim trailing slash, it may be important */ StringBuf folder = str_copy (filename, slash + 1 - filename); + /* check that it's really a folder so as to prevent opening random + * files from a malicious playlist */ + if (! VFSFile::test_file (folder, VFS_IS_DIR)) + { + aud_ui_show_error (str_printf + (_("%s does not appear to be a valid folder."), & filename[0])); + return; + } + GError * error = nullptr; + +#ifdef USE_GTK3 + gtk_show_uri_on_window (nullptr, folder, GDK_CURRENT_TIME, & error); +#else gtk_show_uri (gdk_screen_get_default (), folder, GDK_CURRENT_TIME, & error); +#endif if (error) { diff -Nru audacious-plugins-4.1/src/ui-common/menu-ops-qt.cc audacious-plugins-4.3.1/src/ui-common/menu-ops-qt.cc --- audacious-plugins-4.1/src/ui-common/menu-ops-qt.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/ui-common/menu-ops-qt.cc 2023-04-29 20:17:32.000000000 +0000 @@ -26,7 +26,10 @@ #include #include +#include +#include #include +#include #include void pl_copy () @@ -100,5 +103,16 @@ return; /* don't trim trailing slash, it may be important */ - QDesktopServices::openUrl (QString::fromUtf8 (filename, slash + 1 - filename)); + StringBuf folder = str_copy (filename, slash + 1 - filename); + + /* check that it's really a folder so as to prevent opening random + * files from a malicious playlist */ + if (! VFSFile::test_file (folder, VFS_IS_DIR)) + { + aud_ui_show_error (str_printf + (_("%s does not appear to be a valid folder."), & filename[0])); + return; + } + + QDesktopServices::openUrl (QString (folder)); } diff -Nru audacious-plugins-4.1/src/ui-common/qt-compat.h audacious-plugins-4.3.1/src/ui-common/qt-compat.h --- audacious-plugins-4.1/src/ui-common/qt-compat.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/ui-common/qt-compat.h 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,110 @@ +/* + * qt-compat.h + * Copyright 2023 Thomas Lange + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions, and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions, and the following disclaimer in the documentation + * provided with the distribution. + * + * This software is provided "as is" and without any warranty, express or + * implied. In no event shall the authors be liable for any damages arising from + * the use of this software. + */ + +#ifndef UI_COMMON_QT_COMPAT_H +#define UI_COMMON_QT_COMPAT_H + +#include +#include +#include +#include +#include + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + #define USE_QT6 +#endif + +namespace QtCompat +{ + +static inline int x (QEnterEvent * event) +{ +#ifdef USE_QT6 + return event->position ().x (); +#else + return event->x (); +#endif +} + +static inline int y (QEnterEvent * event) +{ +#ifdef USE_QT6 + return event->position ().y (); +#else + return event->y (); +#endif +} + +static inline int x (QMouseEvent * event) +{ +#ifdef USE_QT6 + return event->position ().x (); +#else + return event->x (); +#endif +} + +static inline int y (QMouseEvent * event) +{ +#ifdef USE_QT6 + return event->position ().y (); +#else + return event->y (); +#endif +} + +static inline int globalX (QMouseEvent * event) +{ +#ifdef USE_QT6 + return event->globalPosition ().x (); +#else + return event->globalX (); +#endif +} + +static inline int globalY (QMouseEvent * event) +{ +#ifdef USE_QT6 + return event->globalPosition ().y (); +#else + return event->globalY (); +#endif +} + +static inline QPoint pos (QDragMoveEvent * event) +{ +#ifdef USE_QT6 + return event->position ().toPoint (); +#else + return event->pos (); +#endif +} + +static inline QPoint pos (QDropEvent * event) +{ +#ifdef USE_QT6 + return event->position ().toPoint (); +#else + return event->pos (); +#endif +} + +} /* namespace QtCompat */ + +#endif diff -Nru audacious-plugins-4.1/src/vorbis/vcupdate.cc audacious-plugins-4.3.1/src/vorbis/vcupdate.cc --- audacious-plugins-4.1/src/vorbis/vcupdate.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/vorbis/vcupdate.cc 2023-04-29 20:17:32.000000000 +0000 @@ -105,6 +105,9 @@ insert_int_tuple_field_to_dictionary (tuple, Tuple::Year, dict, "DATE"); insert_int_tuple_field_to_dictionary (tuple, Tuple::Track, dict, "TRACKNUMBER"); + insert_str_tuple_field_to_dictionary (tuple, Tuple::Publisher, dict, "publisher"); + insert_str_tuple_field_to_dictionary (tuple, Tuple::CatalogNum, dict, "CATALOGNUMBER"); + dictionary_to_vorbis_comment (& edit.vc, dict); auto temp_vfs = VFSFile::tmpfile (); diff -Nru audacious-plugins-4.1/src/vorbis/vorbis.cc audacious-plugins-4.3.1/src/vorbis/vorbis.cc --- audacious-plugins-4.1/src/vorbis/vorbis.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/vorbis/vorbis.cc 2023-04-29 20:17:32.000000000 +0000 @@ -144,6 +144,8 @@ set_tuple_str (tuple, Tuple::Comment, comment, "COMMENT"); set_tuple_str (tuple, Tuple::Description, comment, "DESCRIPTION"); set_tuple_str (tuple, Tuple::MusicBrainzID, comment, "musicbrainz_trackid"); + set_tuple_str (tuple, Tuple::Publisher, comment, "publisher"); + set_tuple_str (tuple, Tuple::CatalogNum, comment, "CATALOGNUMBER"); if ((tmps = vorbis_comment_query (comment, "TRACKNUMBER", 0))) tuple.set_int (Tuple::Track, atoi (tmps)); diff -Nru audacious-plugins-4.1/src/vumeter-qt/vumeter_qt_widget.cc audacious-plugins-4.3.1/src/vumeter-qt/vumeter_qt_widget.cc --- audacious-plugins-4.1/src/vumeter-qt/vumeter_qt_widget.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/vumeter-qt/vumeter_qt_widget.cc 2023-04-29 20:17:32.000000000 +0000 @@ -88,15 +88,15 @@ { nchannels = aud::clamp(channels, 0, max_channels); - float peaks[channels]; - for (int channel = 0; channel < channels; channel++) + float peaks[nchannels]; + for (int channel = 0; channel < nchannels; channel++) { peaks[channel] = fabsf(pcm[channel]); } - for (int i = 0; i < 512 * channels;) + for (int i = 0; i < 512 * nchannels;) { - for (int channel = 0; channel < channels; channel++) + for (int channel = 0; channel < nchannels; channel++) { peaks[channel] = fmaxf(peaks[channel], fabsf(pcm[i++])); } diff -Nru audacious-plugins-4.1/src/xsf/Makefile audacious-plugins-4.3.1/src/xsf/Makefile --- audacious-plugins-4.1/src/xsf/Makefile 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/Makefile 2023-04-29 20:17:32.000000000 +0000 @@ -1,10 +1,13 @@ PLUGIN = xsf${PLUGIN_SUFFIX} -SRCS = corlett.cc \ - plugin.cc \ - vio2sf.cc \ - desmume/armcpu.cc desmume/bios.cc desmume/FIFO.cc desmume/matrix.cc desmume/MMU.cc desmume/SPU.cc \ - desmume/arm_instructions.cc desmume/cp15.cc desmume/GPU.cc desmume/mc.cc desmume/NDSSystem.cc desmume/thumb_instructions.cc \ +SRCS = plugin.cc \ + sndif2sf.cc \ + XSFFile.cc \ + spu/adpcmdecoder.cc spu/interpolator.cc spu/samplecache.cc spu/sampledata.cc \ + desmume/armcpu.cc desmume/bios.cc desmume/FIFO.cc desmume/metaspu.cc desmume/MMU.cc \ + desmume/arm_instructions.cc desmume/cp15.cc desmume/mc.cc desmume/NDSSystem.cc desmume/SPU.cc \ + desmume/thumb_instructions.cc desmume/readwrite.cc desmume/emufile.cc desmume/firmware.cc \ + desmume/slot1.cc desmume/slot1_retail.cc include ../../buildsys.mk include ../../extra.mk diff -Nru audacious-plugins-4.1/src/xsf/XSFFile.cc audacious-plugins-4.3.1/src/xsf/XSFFile.cc --- audacious-plugins-4.1/src/xsf/XSFFile.cc 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/XSFFile.cc 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,293 @@ +/* + * xSF - File structure + * Copyright (c) 2014-2020 Naram Qashat + * Copyright (c) 2020-2021 Adam Higerd + * + * Partially derived from Audio Overload SDK + * Copyright (c) 2007-2008 R. Belmont and Richard Bannister. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the names of R. Belmont and Richard Bannister nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include "XSFFile.h" + +static inline void Set32BitsLE(uint32_t input, uint8_t *output) +{ + output[0] = input & 0xFF; + output[1] = (input >> 8) & 0xFF; + output[2] = (input >> 16) & 0xFF; + output[3] = (input >> 24) & 0xFF; +} + +// The whitespace trimming is from the following answer on Stack Overflow: +// https://stackoverflow.com/a/17976541 + +static inline std::string TrimWhitespace(const std::string &s) +{ + auto wsfront = std::find_if_not(s.begin(), s.end(), [](int c) { return std::isspace(c); }); + auto wsback = std::find_if_not(s.rbegin(), s.rend(), [](int c) { return std::isspace(c); }).base(); + return (wsback <= wsfront ? std::string() : std::string(wsfront, wsback)); +} + +XSFFile::XSFFile() : xSFType(0), hasFile(false), rawData(), reservedSection(), programSection(), tags() +{ +} + +XSFFile::XSFFile(std::istream &inFile, uint32_t programSizeOffset, uint32_t programHeaderSize, bool readTagsOnly) : xSFType(0), hasFile(true), rawData(), reservedSection(), programSection(), tags() +{ + this->ReadXSF(inFile, programSizeOffset, programHeaderSize, readTagsOnly); +} + +void XSFFile::ReadXSF(std::istream &xSF, uint32_t programSizeOffset, uint32_t programHeaderSize, bool readTagsOnly) +{ + xSF.seekg(0, std::istream::end); + auto filesize = xSF.tellg(); + xSF.seekg(0, std::istream::beg); + + if (filesize < 4) + throw std::runtime_error("File is too small."); + + char PSFHeader[4]; + xSF.read(PSFHeader, 4); + + if (PSFHeader[0] != 'P' || PSFHeader[1] != 'S' || PSFHeader[2] != 'F') + throw std::runtime_error("Not a PSF file."); + + this->xSFType = PSFHeader[3]; + + this->rawData.resize(4); + std::memcpy(&this->rawData[0], PSFHeader, 4); + + if (filesize < 16) + throw std::runtime_error("File is too small."); + + uint32_t reservedSize = Get32BitsLE(xSF), programCompressedSize = Get32BitsLE(xSF); + this->rawData.resize(reservedSize + programCompressedSize + 16); + Set32BitsLE(reservedSize, &this->rawData[4]); + Set32BitsLE(programCompressedSize, &this->rawData[8]); + xSF.read(reinterpret_cast(&this->rawData[12]), 4); + + if (reservedSize) + { + if (filesize < reservedSize + 16) + throw std::runtime_error("File is too small."); + + if (readTagsOnly) + xSF.read(reinterpret_cast(&this->rawData[16]), reservedSize); + else + { + this->reservedSection.resize(reservedSize); + xSF.read(reinterpret_cast(&this->reservedSection[0]), reservedSize); + std::memcpy(&this->rawData[16], &this->reservedSection[0], reservedSize); + } + } + + if (programCompressedSize) + { + if (filesize < reservedSize + programCompressedSize + 16) + throw std::runtime_error("File is too small."); + + if (readTagsOnly) + xSF.read(reinterpret_cast(&this->rawData[reservedSize + 16]), programCompressedSize); + else + { + auto programSectionCompressed = std::vector(programCompressedSize); + xSF.read(reinterpret_cast(&programSectionCompressed[0]), programCompressedSize); + std::memcpy(&this->rawData[reservedSize + 16], &programSectionCompressed[0], programCompressedSize); + + auto programSectionUncompressed = std::vector(programHeaderSize); + unsigned long programUncompressedSize = programHeaderSize; + uncompress(&programSectionUncompressed[0], &programUncompressedSize, &programSectionCompressed[0], programCompressedSize); + if (programUncompressedSize) { + programUncompressedSize = Get32BitsLE(&programSectionUncompressed[programSizeOffset]) + programHeaderSize; + } + this->programSection.resize(programUncompressedSize); + uncompress(&this->programSection[0], &programUncompressedSize, &programSectionCompressed[0], programCompressedSize); + } + } + + if (xSF.tellg() != filesize && filesize >= reservedSize + programCompressedSize + 21) + { + char tagheader[6] = ""; + xSF.read(tagheader, 5); + if (std::string(tagheader) == "[TAG]") + { + auto startOfTags = xSF.tellg(); + unsigned lengthOfTags = static_cast(filesize - startOfTags); + if (lengthOfTags) + { + auto rawtags = std::vector(lengthOfTags); + xSF.read(&rawtags[0], lengthOfTags); + std::string name, value; + bool onName = true; + for (unsigned x = 0; x < lengthOfTags; ++x) + { + char curr = rawtags[x]; + if (curr == 0x0A) + { + if (!name.empty() && !value.empty()) + { + name = TrimWhitespace(name); + value = TrimWhitespace(value); + if (this->tags.find(name) != this->tags.end()) + this->tags[name] += "\n" + value; + else + this->tags[name] = value; + } + name = value = ""; + onName = true; + continue; + } + if (curr == '=') + { + onName = false; + continue; + } + if (onName) + name += curr; + else + value += curr; + } + } + } + } + + this->hasFile = true; +} + +bool XSFFile::IsValidType(uint8_t type) const +{ + return this->xSFType == type; +} + +void XSFFile::Clear() +{ + this->xSFType = 0; + this->hasFile = false; + this->reservedSection.clear(); + this->programSection.clear(); + this->tags.clear(); +} + +bool XSFFile::HasFile() const +{ + return this->hasFile; +} + +std::vector &XSFFile::GetReservedSection() +{ + return this->reservedSection; +} + +std::vector XSFFile::GetReservedSection() const +{ + return this->reservedSection; +} + +std::vector &XSFFile::GetProgramSection() +{ + return this->programSection; +} + +std::vector XSFFile::GetProgramSection() const +{ + return this->programSection; +} + +void XSFFile::SetTag(const std::string &name, const std::string &value) +{ + this->tags[name] = value; +} + +bool XSFFile::GetTagExists(const std::string &name) const +{ + return this->tags.find(name) != this->tags.end(); +} + +std::string XSFFile::GetTagValue(const std::string &name) const +{ + return this->GetTagExists(name) ? this->tags.at(name) : ""; +} + +static unsigned long StringToMS(const std::string& value, unsigned long defaultLength) +{ + double length = 0; + if (!value.empty()) { + std::istringstream ss(value); + double part = 0; + do { + ss >> part; + length = length * 60 + part; + } while (ss.get() == ':' && ss); + } + if (!length) + return defaultLength; + return length * 1000; +} + +unsigned long XSFFile::GetLengthMS(unsigned long defaultLength) const +{ + std::string value = this->GetTagValue("length"); + return StringToMS(value, defaultLength); +} + +unsigned long XSFFile::GetFadeMS(unsigned long defaultFade) const +{ + std::string value = this->GetTagValue("fade"); + return StringToMS(value, defaultFade); +} + +void XSFFile::SaveFile() const +{ + /* + std::ofstream xSF; + xSF.exceptions(std::ofstream::failbit); +#ifdef _WIN32 + xSF.open(ConvertFuncs::StringToWString(this->fileName).c_str(), std::ofstream::out | std::ofstream::binary); +#else + xSF.open(this->fileName.c_str(), std::ofstream::out | std::ofstream::binary); +#endif + + xSF.write(reinterpret_cast(&this->rawData[0]), this->rawData.size()); + + auto allTags = this->tags.GetTags(); + if (!allTags.empty()) + { + xSF.write("[TAG]", 5); + std::for_each(allTags.begin(), allTags.end(), [&](const std::string &tag) + { + xSF.write(tag.c_str(), tag.length()); + xSF.write("\n", 1); + }); + } + */ +} diff -Nru audacious-plugins-4.1/src/xsf/XSFFile.h audacious-plugins-4.3.1/src/xsf/XSFFile.h --- audacious-plugins-4.1/src/xsf/XSFFile.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/XSFFile.h 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,87 @@ +/* + * xSF - File structure + * Copyright (c) 2014-2020 Naram Qashat + * Copyright (c) 2020-2021 Adam Higerd + * + * Partially derived from Audio Overload SDK + * Copyright (c) 2007-2008 R. Belmont and Richard Bannister. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the names of R. Belmont and Richard Bannister nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma once + +#include +#include +#include +#include + +class XSFFile +{ +protected: + uint8_t xSFType; + bool hasFile; + std::vector rawData, reservedSection, programSection; + std::map tags; + void ReadXSF(std::istream &xSF, uint32_t programSizeOffset, uint32_t programHeaderSize, bool readTagsOnly = false); +public: + XSFFile(); + XSFFile(std::istream& xSF, uint32_t programSizeOffset = 0, uint32_t programHeaderSize = 0, bool readTagsOnly = false); + bool IsValidType(uint8_t type) const; + void Clear(); + bool HasFile() const; + std::vector &GetReservedSection(); + std::vector GetReservedSection() const; + std::vector &GetProgramSection(); + std::vector GetProgramSection() const; + void SetTag(const std::string &name, const std::string &value); + bool GetTagExists(const std::string &name) const; + std::string GetTagValue(const std::string &name) const; + template T GetTagValue(const std::string &name, const T &defaultValue) const + { + T value = defaultValue; + if (this->GetTagExists(name)) { + std::istringstream ss(this->GetTagValue(name)); + ss >> value; + } + return value; + } + unsigned long GetLengthMS(unsigned long defaultLength) const; + unsigned long GetFadeMS(unsigned long defaultFade) const; + void SaveFile() const; +}; + +inline uint32_t Get32BitsLE(const uint8_t *input) +{ + return input[0] | (input[1] << 8) | (input[2] << 16) | (input[3] << 24); +} + +inline uint32_t Get32BitsLE(std::istream &input) +{ + uint8_t bytes[4]; + input.read(reinterpret_cast(bytes), 4); + return Get32BitsLE(bytes); +} diff -Nru audacious-plugins-4.1/src/xsf/ao.h audacious-plugins-4.3.1/src/xsf/ao.h --- audacious-plugins-4.1/src/xsf/ao.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/ao.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -// -// Audio Overload SDK -// -// Fake ao.h to set up the general Audio Overload style environment -// - -#ifndef __AO_H -#define __AO_H - -#include - -#define AO_SUCCESS 1 -#define AO_FAIL 0 -#define AO_FAIL_DECOMPRESSION -1 - -#define MAX_DISP_INFO_LENGTH 256 -#define AUDIO_RATE (44100) - -enum -{ - COMMAND_NONE = 0, - COMMAND_PREV, - COMMAND_NEXT, - COMMAND_RESTART, - COMMAND_HAS_PREV, - COMMAND_HAS_NEXT, - COMMAND_GET_MIN, - COMMAND_GET_MAX, - COMMAND_JUMP -}; - -int ao_get_lib(char *filename, uint8_t **buffer, uint64_t *length); - -#endif // AO_H diff -Nru audacious-plugins-4.1/src/xsf/corlett.cc audacious-plugins-4.3.1/src/xsf/corlett.cc --- audacious-plugins-4.1/src/xsf/corlett.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/corlett.cc 1970-01-01 00:00:00.000000000 +0000 @@ -1,385 +0,0 @@ -/* - - Audio Overload SDK - - Copyright (c) 2007-2008, R. Belmont and Richard Bannister. - - All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the names of R. Belmont and Richard Bannister nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -// corlett.c - -// Decodes file format designed by Neill Corlett (PSF, QSF, ...) - -/* - - First 3 bytes: ASCII signature: "PSF" (case sensitive) - -- Next 1 byte: Version byte - The version byte is used to determine the type of PSF file. It does NOT - affect the basic structure of the file in any way. - - Currently accepted version bytes are: - 0x01: Playstation (PSF1) - 0x02: Playstation 2 (PSF2) - 0x11: Saturn (SSF) [TENTATIVE] - 0x12: Dreamcast (DSF) [TENTATIVE] - 0x21: Nintendo 64 (USF) [RESERVED] - 0x41: Capcom QSound (QSF) - -- Next 4 bytes: Size of reserved area (R), little-endian unsigned long - -- Next 4 bytes: Compressed program length (N), little-endian unsigned long - This is the length of the program data _after_ compression. - -- Next 4 bytes: Compressed program CRC-32, little-endian unsigned long - This is the CRC-32 of the program data _after_ compression. Filling in - this value is mandatory, as a PSF file may be regarded as corrupt if it - does not match. - -- Next R bytes: Reserved area. - May be empty if R is 0 bytes. - -- Next N bytes: Compressed program, in zlib compress() format. - May be empty if N is 0 bytes. - -The following data is optional and may be omitted: - -- Next 5 bytes: ASCII signature: "[TAG]" (case sensitive) - If these 5 bytes do not match, then the remainder of the file may be - regarded as invalid and discarded. - -- Remainder of file: Uncompressed ASCII tag data. -*/ - -#include -#include -#include - -#include - -#define WANT_AUD_BSWAP -#include -#include - -#include "ao.h" -#include "corlett.h" - -#define LE32(x) FROM_LE32(x) - -#define DECOMP_MAX_SIZE ((32 * 1024 * 1024) + 12) - -int corlett_decode(uint8_t *input, uint32_t input_len, uint8_t **output, uint64_t *size, corlett_t **c) -{ - uint32_t *buf; - uint32_t res_area, comp_crc, actual_crc; - uint8_t *decomp_dat, *tag_dec; - uLongf decomp_length, comp_length; - - // 32-bit pointer to data - buf = (uint32_t *)input; - - // Check we have a PSF format file. - if ((input[0] != 'P') || (input[1] != 'S') || (input[2] != 'F')) - { - return AO_FAIL; - } - - // Get our values - res_area = LE32(buf[1]); - comp_length = LE32(buf[2]); - comp_crc = LE32(buf[3]); - - if (comp_length > 0) - { - // Check length - if (input_len < comp_length + 16) - return AO_FAIL; - - // Check CRC is correct - actual_crc = crc32(0, (unsigned char *)&buf[4+(res_area/4)], comp_length); - if (actual_crc != comp_crc) - return AO_FAIL; - - // Decompress data if any - decomp_dat = (uint8_t *) malloc(DECOMP_MAX_SIZE); - decomp_length = DECOMP_MAX_SIZE; - if (uncompress(decomp_dat, &decomp_length, (unsigned char *)&buf[4+(res_area/4)], comp_length) != Z_OK) - { - free(decomp_dat); - return AO_FAIL; - } - - // Resize memory buffer to what we actually need - decomp_dat = (uint8_t *) realloc(decomp_dat, (size_t)decomp_length + 1); - } - else - { - decomp_dat = nullptr; - decomp_length = 0; - } - - // Make structure - *c = (corlett_t *) malloc(sizeof(corlett_t)); - if (!(*c)) - { - free(decomp_dat); - return AO_FAIL; - } - memset(*c, 0, sizeof(corlett_t)); - strcpy((*c)->inf_title, "n/a"); - strcpy((*c)->inf_copy, "n/a"); - strcpy((*c)->inf_artist, "n/a"); - strcpy((*c)->inf_game, "n/a"); - strcpy((*c)->inf_year, "n/a"); - strcpy((*c)->inf_length, "n/a"); - strcpy((*c)->inf_fade, "n/a"); - - // set reserved section pointer - (*c)->res_section = &buf[4]; - (*c)->res_size = res_area; - - // Return it - if (output != nullptr && size != nullptr) - { - *output = decomp_dat; - *size = decomp_length; - } - else - free(decomp_dat); - - // Next check for tags - input_len -= (comp_length + 16 + res_area); - if (input_len < 5) - return AO_SUCCESS; - -// printf("\n\nNew corlett: input len %d comp length %d res area %d\n", input_len, comp_length, res_area); - - tag_dec = input + (comp_length + res_area + 16); - if ((tag_dec[0] == '[') && (tag_dec[1] == 'T') && (tag_dec[2] == 'A') && (tag_dec[3] == 'G') && (tag_dec[4] == ']')) - { - int l, num_tags, data; - - // Tags found! - tag_dec += 5; - input_len -= 5; - - data = false; - num_tags = 0; - l = 0; - while (input_len && (num_tags < MAX_UNKNOWN_TAGS)) - { - if (data) - { - if ((*tag_dec == 0xA) || (*tag_dec == 0x00)) - { - (*c)->tag_data[num_tags][l] = 0; - data = false; - num_tags++; - l = 0; - } - else - { - (*c)->tag_data[num_tags][l++] = *tag_dec; - } - } - else - { - if (*tag_dec == '=') - { - (*c)->tag_name[num_tags][l] = 0; - l = 0; - data = true; - } - else - { - (*c)->tag_name[num_tags][l++] = *tag_dec; - } - } - - tag_dec++; - input_len--; - } - - - // Now, process that tag array into what we expect - for (num_tags = 0; num_tags < MAX_UNKNOWN_TAGS; num_tags++) - { - // See if tag belongs in one of the special fields we have - if (!strcmp_nocase((*c)->tag_name[num_tags], "_lib")) - { - strcpy((*c)->lib, (*c)->tag_data[num_tags]); - (*c)->tag_data[num_tags][0] = 0; - (*c)->tag_name[num_tags][0] = 0; - } - else if (!strncmp((*c)->tag_name[num_tags], "_lib2", 5)) - { - strcpy((*c)->libaux[0], (*c)->tag_data[num_tags]); - (*c)->tag_data[num_tags][0] = 0; - (*c)->tag_name[num_tags][0] = 0; - } - else if (!strncmp((*c)->tag_name[num_tags], "_lib3", 5)) - { - strcpy((*c)->libaux[1], (*c)->tag_data[num_tags]); - (*c)->tag_data[num_tags][0] = 0; - (*c)->tag_name[num_tags][0] = 0; - } - else if (!strncmp((*c)->tag_name[num_tags], "_lib4", 5)) - { - strcpy((*c)->libaux[2], (*c)->tag_data[num_tags]); - (*c)->tag_data[num_tags][0] = 0; - (*c)->tag_name[num_tags][0] = 0; - } - else if (!strncmp((*c)->tag_name[num_tags], "_lib5", 5)) - { - strcpy((*c)->libaux[3], (*c)->tag_data[num_tags]); - (*c)->tag_data[num_tags][0] = 0; - (*c)->tag_name[num_tags][0] = 0; - } - else if (!strncmp((*c)->tag_name[num_tags], "_lib6", 5)) - { - strcpy((*c)->libaux[4], (*c)->tag_data[num_tags]); - (*c)->tag_data[num_tags][0] = 0; - (*c)->tag_name[num_tags][0] = 0; - } - else if (!strncmp((*c)->tag_name[num_tags], "_lib7", 5)) - { - strcpy((*c)->libaux[5], (*c)->tag_data[num_tags]); - (*c)->tag_data[num_tags][0] = 0; - (*c)->tag_name[num_tags][0] = 0; - } - else if (!strncmp((*c)->tag_name[num_tags], "_lib8", 5)) - { - strcpy((*c)->libaux[6], (*c)->tag_data[num_tags]); - (*c)->tag_data[num_tags][0] = 0; - (*c)->tag_name[num_tags][0] = 0; - } - else if (!strncmp((*c)->tag_name[num_tags], "_lib9", 5)) - { - strcpy((*c)->libaux[7], (*c)->tag_data[num_tags]); - (*c)->tag_data[num_tags][0] = 0; - (*c)->tag_name[num_tags][0] = 0; - } - else if (!strncmp((*c)->tag_name[num_tags], "_refresh", 8)) - { - strcpy((*c)->inf_refresh, (*c)->tag_data[num_tags]); - (*c)->tag_data[num_tags][0] = 0; - (*c)->tag_name[num_tags][0] = 0; - } - else if (!strncmp((*c)->tag_name[num_tags], "title", 5)) - { - strcpy((*c)->inf_title, (*c)->tag_data[num_tags]); - (*c)->tag_data[num_tags][0] = 0; - (*c)->tag_name[num_tags][0] = 0; - } - else if (!strncmp((*c)->tag_name[num_tags], "copyright", 9)) - { - strcpy((*c)->inf_copy, (*c)->tag_data[num_tags]); - (*c)->tag_data[num_tags][0] = 0; - (*c)->tag_name[num_tags][0] = 0; - } - else if (!strncmp((*c)->tag_name[num_tags], "artist", 6)) - { - strcpy((*c)->inf_artist, (*c)->tag_data[num_tags]); - (*c)->tag_data[num_tags][0] = 0; - (*c)->tag_name[num_tags][0] = 0; - } - else if (!strncmp((*c)->tag_name[num_tags], "game", 4)) - { - strcpy((*c)->inf_game, (*c)->tag_data[num_tags]); - (*c)->tag_data[num_tags][0] = 0; - (*c)->tag_name[num_tags][0] = 0; - } - else if (!strncmp((*c)->tag_name[num_tags], "year", 4)) - { - strcpy((*c)->inf_year, (*c)->tag_data[num_tags]); - (*c)->tag_data[num_tags][0] = 0; - (*c)->tag_name[num_tags][0] = 0; - } - else if (!strncmp((*c)->tag_name[num_tags], "length", 6)) - { - strcpy((*c)->inf_length, (*c)->tag_data[num_tags]); - (*c)->tag_data[num_tags][0] = 0; - (*c)->tag_name[num_tags][0] = 0; - } - else if (!strncmp((*c)->tag_name[num_tags], "fade", 4)) - { - strcpy((*c)->inf_fade, (*c)->tag_data[num_tags]); - (*c)->tag_data[num_tags][0] = 0; - (*c)->tag_name[num_tags][0] = 0; - } - } - } - - // Bingo - return AO_SUCCESS; -} - -uint32_t psfTimeToMS(char *str) -{ - int x, c=0; - uint32_t acc=0; - char s[100]; - - strncpy(s,str,100); - s[99]=0; - - for (x=strlen(s); x>=0; x--) - { - if (s[x]=='.' || s[x]==',') - { - acc=atoi(s+x+1); - s[x]=0; - } - else if (s[x]==':') - { - if(c==0) - { - acc+=atoi(s+x+1)*10; - } - else if(c==1) - { - acc+=atoi(s+x+(x?1:0))*10*60; - } - - c++; - s[x]=0; - } - else if (x==0) - { - if(c==0) - { - acc+=atoi(s+x)*10; - } - else if(c==1) - { - acc+=atoi(s+x)*10*60; - } - else if(c==2) - { - acc+=atoi(s+x)*10*60*60; - } - } - } - - acc*=100; - return(acc); -} - diff -Nru audacious-plugins-4.1/src/xsf/corlett.h audacious-plugins-4.3.1/src/xsf/corlett.h --- audacious-plugins-4.1/src/xsf/corlett.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/corlett.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -// -// Audio Overload -// Emulated music player -// -// (C) 2000-2008 Richard F. Bannister -// - -// corlett.h - -#define MAX_UNKNOWN_TAGS 32 - -typedef struct { - char lib[256]; - char libaux[8][256]; - - char inf_title[256]; - char inf_copy[256]; - char inf_artist[256]; - char inf_game[256]; - char inf_year[256]; - char inf_length[256]; - char inf_fade[256]; - - char inf_refresh[256]; - - char tag_name[MAX_UNKNOWN_TAGS][256]; - char tag_data[MAX_UNKNOWN_TAGS][256]; - - uint32_t *res_section; - uint32_t res_size; -} corlett_t; - -int corlett_decode(uint8_t *input, uint32_t input_len, uint8_t **output, uint64_t *size, corlett_t **c); -uint32_t psfTimeToMS(char *str); - diff -Nru audacious-plugins-4.1/src/xsf/desmume/FIFO.cc audacious-plugins-4.3.1/src/xsf/desmume/FIFO.cc --- audacious-plugins-4.1/src/xsf/desmume/FIFO.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/FIFO.cc 2023-04-29 20:17:32.000000000 +0000 @@ -1,65 +1,157 @@ -/* Copyright (C) 2006 yopyop - yopyop156@ifrance.com - yopyop156.ifrance.com - - Copyright (C) 2007 shash - - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +/* + Copyright 2006 yopyop + Copyright 2007 shash + Copyright 2007-2012 DeSmuME team + + This file 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 file 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 the this software. If not, see . */ +#include #include "FIFO.h" +#include "armcpu.h" +#include "mem.h" +#include "MMU.h" +#include "NDSSystem.h" + +// ========================================================= IPC FIFO +IPC_FIFO ipc_fifo[2]; // 0 - ARM9, 1 - ARM7 + +void IPC_FIFOinit(uint8_t proc) +{ + memset(&ipc_fifo[proc], 0, sizeof(IPC_FIFO)); + T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x184, 0x00000101); +} -void FIFOInit(FIFO * fifo) +void IPC_FIFOsend(uint8_t proc, uint32_t val) { - u32 i; + uint16_t cnt_l = T1ReadWord(MMU.MMU_MEM[proc][0x40], 0x184); + if (!(cnt_l & IPCFIFOCNT_FIFOENABLE)) + return; // FIFO disabled + uint8_t proc_remote = proc ^ 1; + + if (ipc_fifo[proc].size > 15) + { + cnt_l |= IPCFIFOCNT_FIFOERROR; + T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x184, cnt_l); + return; + } + + uint16_t cnt_r = T1ReadWord(MMU.MMU_MEM[proc_remote][0x40], 0x184); + + cnt_l &= 0xBFFC; // clear send empty bit & full + cnt_r &= 0xBCFF; // set recv empty bit & full + ipc_fifo[proc].buf[ipc_fifo[proc].tail] = val; + ++ipc_fifo[proc].tail; + ++ipc_fifo[proc].size; + if (ipc_fifo[proc].tail > 15) + ipc_fifo[proc].tail = 0; + + if (ipc_fifo[proc].size > 15) + { + cnt_l |= IPCFIFOCNT_SENDFULL; // set send full bit + cnt_r |= IPCFIFOCNT_RECVFULL; // set recv full bit + } + + T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x184, cnt_l); + T1WriteWord(MMU.MMU_MEM[proc_remote][0x40], 0x184, cnt_r); - fifo->begin = 0; - fifo->end = 0; - for(i = 0; i<0x8000; ++i) - fifo->data[i] = 0; - fifo->full = false; - fifo->empty = true; - fifo->error = false; + if (cnt_r & IPCFIFOCNT_RECVIRQEN) + NDS_makeIrq(proc_remote, IRQ_BIT_IPCFIFO_RECVNONEMPTY); + + NDS_Reschedule(); } -void FIFOAdd(FIFO * fifo, u32 v) +uint32_t IPC_FIFOrecv(uint8_t proc) { - if(fifo->full) - { - fifo->error = true; - return; - } - fifo->data[fifo->end] = v; - fifo->end = (fifo->end + 1)& 0x7FFF; - fifo->full = (fifo->end == fifo->begin); - fifo->empty = false; + uint16_t cnt_l = T1ReadWord(MMU.MMU_MEM[proc][0x40], 0x184); + if (!(cnt_l & IPCFIFOCNT_FIFOENABLE)) + return 0; // FIFO disabled + uint8_t proc_remote = proc ^ 1; + + uint32_t val = 0; + + if (!ipc_fifo[proc_remote].size) // remote FIFO error + { + cnt_l |= IPCFIFOCNT_FIFOERROR; + T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x184, cnt_l); + return 0; + } + + uint16_t cnt_r = T1ReadWord(MMU.MMU_MEM[proc_remote][0x40], 0x184); + + cnt_l &= 0xBCFF; // clear send full bit & empty + cnt_r &= 0xBFFC; // set recv full bit & empty + + val = ipc_fifo[proc_remote].buf[ipc_fifo[proc_remote].head]; + ++ipc_fifo[proc_remote].head; + --ipc_fifo[proc_remote].size; + if (ipc_fifo[proc_remote].head > 15) + ipc_fifo[proc_remote].head = 0; + + if (!ipc_fifo[proc_remote].size) // FIFO empty + { + cnt_l |= IPCFIFOCNT_RECVEMPTY; + cnt_r |= IPCFIFOCNT_SENDEMPTY; + + if (cnt_r & IPCFIFOCNT_SENDIRQEN) + NDS_makeIrq(proc_remote, IRQ_BIT_IPCFIFO_SENDEMPTY); + } + + T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x184, cnt_l); + T1WriteWord(MMU.MMU_MEM[proc_remote][0x40], 0x184, cnt_r); + + NDS_Reschedule(); + + return val; } -u32 FIFOValue(FIFO * fifo) +void IPC_FIFOcnt(uint8_t proc, uint16_t val) { - u32 v; + uint16_t cnt_l = T1ReadWord(MMU.MMU_MEM[proc][0x40], 0x184); + uint16_t cnt_r = T1ReadWord(MMU.MMU_MEM[proc^1][0x40], 0x184); + + if (val & IPCFIFOCNT_FIFOERROR) + // at least SPP uses this, maybe every retail game + cnt_l &= ~IPCFIFOCNT_FIFOERROR; + + if (val & IPCFIFOCNT_SENDCLEAR) + { + ipc_fifo[proc].head = 0; + ipc_fifo[proc].tail = 0; + ipc_fifo[proc].size = 0; + + cnt_l |= IPCFIFOCNT_SENDEMPTY; + cnt_r |= IPCFIFOCNT_RECVEMPTY; + + cnt_l &= ~IPCFIFOCNT_SENDFULL; + cnt_r &= ~IPCFIFOCNT_RECVFULL; + } + + cnt_l &= ~IPCFIFOCNT_WRITEABLE; + cnt_l |= val & IPCFIFOCNT_WRITEABLE; + + // IPCFIFOCNT_SENDIRQEN may have been set (and/or the fifo may have been cleared) so we may need to trigger this irq + // (this approach is used by libnds fifo system on occasion in fifoInternalSend, and began happening frequently for value32 with r4326) + if ((cnt_l & IPCFIFOCNT_SENDIRQEN) && (cnt_l & IPCFIFOCNT_SENDEMPTY)) + NDS_makeIrq(proc, IRQ_BIT_IPCFIFO_SENDEMPTY); + + // IPCFIFOCNT_RECVIRQEN may have been set so we may need to trigger this irq + if ((cnt_l & IPCFIFOCNT_RECVIRQEN) && !(cnt_l & IPCFIFOCNT_RECVEMPTY)) + NDS_makeIrq(proc, IRQ_BIT_IPCFIFO_RECVNONEMPTY); + + T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x184, cnt_l); + T1WriteWord(MMU.MMU_MEM[proc^1][0x40], 0x184, cnt_r); - if(fifo->empty) - { - fifo->error = true; - return 0; - } - v = fifo->data[fifo->begin]; - fifo->begin = (fifo->begin + 1)& 0x7FFF; - fifo->empty = (fifo->begin == fifo->end); - return v; + NDS_Reschedule(); } diff -Nru audacious-plugins-4.1/src/xsf/desmume/FIFO.h audacious-plugins-4.3.1/src/xsf/desmume/FIFO.h --- audacious-plugins-4.1/src/xsf/desmume/FIFO.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/FIFO.h 2023-04-29 20:17:32.000000000 +0000 @@ -1,43 +1,38 @@ -/* Copyright (C) 2006 yopyop - yopyop156@ifrance.com - yopyop156.ifrance.com - - Copyright (C) 2007 shash - - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +/* + Copyright 2006 yopyop + Copyright 2007 shash + Copyright 2007-2011 DeSmuME team + + This file 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 file 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 the this software. If not, see . */ -#ifndef FIFO_H -#define FIFO_H +#pragma once #include "types.h" -typedef struct +//=================================================== IPC FIFO +struct IPC_FIFO { - u32 data[0x8000]; - u32 begin; - u32 end; - BOOL full; - BOOL empty; - BOOL error; -} FIFO; - -void FIFOInit(FIFO * fifo); -void FIFOAdd(FIFO * fifo, u32 v); -u32 FIFOValue(FIFO * fifo); + uint32_t buf[16]; -#endif + uint8_t head; + uint8_t tail; + uint8_t size; +}; + +extern IPC_FIFO ipc_fifo[2]; +extern void IPC_FIFOinit(uint8_t proc); +extern void IPC_FIFOsend(uint8_t proc, uint32_t val); +extern uint32_t IPC_FIFOrecv(uint8_t proc); +extern void IPC_FIFOcnt(uint8_t proc, uint16_t val); diff -Nru audacious-plugins-4.1/src/xsf/desmume/GPU.cc audacious-plugins-4.3.1/src/xsf/desmume/GPU.cc --- audacious-plugins-4.1/src/xsf/desmume/GPU.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/GPU.cc 1970-01-01 00:00:00.000000000 +0000 @@ -1,98 +0,0 @@ -/* Copyright (C) 2006 yopyop - yopyop156@ifrance.com - yopyop156.ifrance.com - - Copyright (C) 2006-2007 Theo Berkau - Copyright (C) 2007 shash - - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -// CONTENTS -// INITIALIZATION -// ENABLING / DISABLING LAYERS -// PARAMETERS OF BACKGROUNDS -// PARAMETERS OF ROTOSCALE -// PARAMETERS OF EFFECTS -// PARAMETERS OF WINDOWS -// ROUTINES FOR INSIDE / OUTSIDE WINDOW CHECKS -// PIXEL RENDERING -// BACKGROUND RENDERING -TEXT- -// BACKGROUND RENDERING -ROTOSCALE- -// BACKGROUND RENDERING -HELPER FUNCTIONS- -// SPRITE RENDERING -HELPER FUNCTIONS- -// SPRITE RENDERING -// SCREEN FUNCTIONS -// GRAPHICS CORE -// GPU_ligne - -#include -#include -#include -#include "MMU.h" -#include "GPU.h" - -ARM9_struct ARM9Mem; - -NDS_Screen MainScreen; -NDS_Screen SubScreen; - -//#define DEBUG_TRI - -/*****************************************************************************/ -// INITIALIZATION -/*****************************************************************************/ - -GPU * GPU_Init(u8 l) -{ - GPU * g; - - if ((g = (GPU *) malloc(sizeof(GPU))) == nullptr) - return nullptr; - - GPU_Reset(g, l); - return g; -} - -void GPU_Reset(GPU *g, u8 l) -{ - memset(g, 0, sizeof(GPU)); -} - -void GPU_DeInit(GPU * gpu) -{ - if (gpu) free(gpu); -} - - -int Screen_Init(int coreid) { - MainScreen.gpu = GPU_Init(0); - SubScreen.gpu = GPU_Init(1); - - return 0; -} - -void Screen_Reset(void) { - GPU_Reset(MainScreen.gpu, 0); - GPU_Reset(SubScreen.gpu, 1); -} - -void Screen_DeInit(void) { - GPU_DeInit(MainScreen.gpu); - GPU_DeInit(SubScreen.gpu); - -} diff -Nru audacious-plugins-4.1/src/xsf/desmume/GPU.h audacious-plugins-4.3.1/src/xsf/desmume/GPU.h --- audacious-plugins-4.1/src/xsf/desmume/GPU.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/GPU.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,805 +0,0 @@ -/* Copyright (C) 2006 yopyop - yopyop156@ifrance.com - yopyop156.ifrance.com - - Copyright (C) 2006-2007 Theo Berkau - Copyright (C) 2007 shash - - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef GPU_H -#define GPU_H - -#include "ARM9.h" -#include -#include "mem.h" -#include "registers.h" -#include "FIFO.h" -#include "MMU.h" - -/******************************************************************************* - this structure is for display control, - it holds flags for general display -*******************************************************************************/ - -#ifdef WORDS_BIGENDIAN -struct _DISPCNT -{ -/* 7*/ u8 ForceBlank:1; // A+B: -/* 6*/ u8 OBJ_BMP_mapping:1; // A+B: 0=2D (128KB), 1=1D (128..256KB) -/* 5*/ u8 OBJ_BMP_2D_dim:1; // A+B: 0=128x512, 1=256x256 pixels -/* 4*/ u8 OBJ_Tile_1D:1; // A+B: 0=2D (32KB), 1=1D (32..256KB) -/* 3*/ u8 BG0_3D:1; // A : 0=2D, 1=3D -/* 0*/ u8 BG_Mode:3; // A+B: -/*15*/ u8 WinOBJ_Enable:1; // A+B: 0=disable, 1=Enable -/*14*/ u8 Win1_Enable:1; // A+B: 0=disable, 1=Enable -/*13*/ u8 Win0_Enable:1; // A+B: 0=disable, 1=Enable -/*12*/ u8 OBJ_Enable:1; // A+B: 0=disable, 1=Enable -/*11*/ u8 BG3_Enable:1; // A+B: 0=disable, 1=Enable -/*10*/ u8 BG2_Enable:1; // A+B: 0=disable, 1=Enable -/* 9*/ u8 BG1_Enable:1; // A+B: 0=disable, 1=Enable -/* 8*/ u8 BG0_Enable:1; // A+B: 0=disable, 1=Enable -/*23*/ u8 OBJ_HBlank_process:1; // A+B: OBJ processed during HBlank (GBA bit5) -/*22*/ u8 OBJ_BMP_1D_Bound:1; // A : -/*20*/ u8 OBJ_Tile_1D_Bound:2; // A+B: -/*18*/ u8 VRAM_Block:2; // A : VRAM block (0..3=A..D) - -/*16*/ u8 DisplayMode:2; // A+B: coreA(0..3) coreB(0..1) GBA(Green Swap) - // 0=off (white screen) - // 1=on (normal BG & OBJ layers) - // 2=VRAM display (coreA only) - // 3=RAM display (coreA only, DMA transfers) - -/*31*/ u8 ExOBJPalette_Enable:1; // A+B: 0=disable, 1=Enable OBJ extended Palette -/*30*/ u8 ExBGxPalette_Enable:1; // A+B: 0=disable, 1=Enable BG extended Palette -/*27*/ u8 ScreenBase_Block:3; // A : Screen Base (64K step) -/*24*/ u8 CharacBase_Block:3; // A : Character Base (64K step) -}; -#else -struct _DISPCNT -{ -/* 0*/ u8 BG_Mode:3; // A+B: -/* 3*/ u8 BG0_3D:1; // A : 0=2D, 1=3D -/* 4*/ u8 OBJ_Tile_1D:1; // A+B: 0=2D (32KB), 1=1D (32..256KB) -/* 5*/ u8 OBJ_BMP_2D_dim:1; // A+B: 0=128x512, 1=256x256 pixels -/* 6*/ u8 OBJ_BMP_mapping:1; // A+B: 0=2D (128KB), 1=1D (128..256KB) - - // 7-15 same as GBA -/* 7*/ u8 ForceBlank:1; // A+B: -/* 8*/ u8 BG0_Enable:1; // A+B: 0=disable, 1=Enable -/* 9*/ u8 BG1_Enable:1; // A+B: 0=disable, 1=Enable -/*10*/ u8 BG2_Enable:1; // A+B: 0=disable, 1=Enable -/*11*/ u8 BG3_Enable:1; // A+B: 0=disable, 1=Enable -/*12*/ u8 OBJ_Enable:1; // A+B: 0=disable, 1=Enable -/*13*/ u8 Win0_Enable:1; // A+B: 0=disable, 1=Enable -/*14*/ u8 Win1_Enable:1; // A+B: 0=disable, 1=Enable -/*15*/ u8 WinOBJ_Enable:1; // A+B: 0=disable, 1=Enable - -/*16*/ u8 DisplayMode:2; // A+B: coreA(0..3) coreB(0..1) GBA(Green Swap) - // 0=off (white screen) - // 1=on (normal BG & OBJ layers) - // 2=VRAM display (coreA only) - // 3=RAM display (coreA only, DMA transfers) - -/*18*/ u8 VRAM_Block:2; // A : VRAM block (0..3=A..D) -/*20*/ u8 OBJ_Tile_1D_Bound:2; // A+B: -/*22*/ u8 OBJ_BMP_1D_Bound:1; // A : -/*23*/ u8 OBJ_HBlank_process:1; // A+B: OBJ processed during HBlank (GBA bit5) -/*24*/ u8 CharacBase_Block:3; // A : Character Base (64K step) -/*27*/ u8 ScreenBase_Block:3; // A : Screen Base (64K step) -/*30*/ u8 ExBGxPalette_Enable:1; // A+B: 0=disable, 1=Enable BG extended Palette -/*31*/ u8 ExOBJPalette_Enable:1; // A+B: 0=disable, 1=Enable OBJ extended Palette -}; -#endif - -typedef union -{ - struct _DISPCNT bits; - u32 val; -} DISPCNT; -#define BGxENABLED(cnt,num) ((num<8)? ((cnt.val>>8) & num):0) - - - - -/******************************************************************************* - this structure is for display control of a specific layer, - there are 4 background layers - their priority indicate which one to draw on top of the other - some flags indicate special drawing mode, size, FX -*******************************************************************************/ - -#ifdef WORDS_BIGENDIAN -struct _BGxCNT -{ -/* 7*/ u8 Palette_256:1; // 0=16x16, 1=1*256 palette -/* 6*/ u8 Mosaic_Enable:1; // 0=disable, 1=Enable mosaic -/* 2*/ u8 CharacBase_Block:4; // individual character base offset (n*16KB) -/* 0*/ u8 Priority:2; // 0..3=high..low -/*14*/ u8 ScreenSize:2; // text : 256x256 512x256 256x512 512x512 - // x/rot/s : 128x128 256x256 512x512 1024x1024 - // bmp : 128x128 256x256 512x256 512x512 - // large : 512x1024 1024x512 - - -/*13*/ u8 PaletteSet_Wrap:1; // BG0 extended palette set 0=set0, 1=set2 - // BG1 extended palette set 0=set1, 1=set3 - // BG2 overflow area wraparound 0=off, 1=wrap - // BG3 overflow area wraparound 0=off, 1=wrap -/* 8*/ u8 ScreenBase_Block:5; // individual screen base offset (text n*2KB, BMP n*16KB) -}; -#else -struct _BGxCNT -{ -/* 0*/ u8 Priority:2; // 0..3=high..low -/* 2*/ u8 CharacBase_Block:4; // individual character base offset (n*16KB) -/* 6*/ u8 Mosaic_Enable:1; // 0=disable, 1=Enable mosaic -/* 7*/ u8 Palette_256:1; // 0=16x16, 1=1*256 palette -/* 8*/ u8 ScreenBase_Block:5; // individual screen base offset (text n*2KB, BMP n*16KB) -/*13*/ u8 PaletteSet_Wrap:1; // BG0 extended palette set 0=set0, 1=set2 - // BG1 extended palette set 0=set1, 1=set3 - // BG2 overflow area wraparound 0=off, 1=wrap - // BG3 overflow area wraparound 0=off, 1=wrap -/*14*/ u8 ScreenSize:2; // text : 256x256 512x256 256x512 512x512 - // x/rot/s : 128x128 256x256 512x512 1024x1024 - // bmp : 128x128 256x256 512x256 512x512 - // large : 512x1024 1024x512 - - -}; -#endif - - -typedef union -{ - struct _BGxCNT bits; - u16 val; -} BGxCNT; - -/******************************************************************************* - this structure is for background offset -*******************************************************************************/ - -typedef struct { - u16 BGxHOFS; - u16 BGxVOFS; -} BGxOFS; - -/******************************************************************************* - this structure is for rotoscale parameters -*******************************************************************************/ - -typedef struct { - s16 BGxPA; - s16 BGxPB; - s16 BGxPC; - s16 BGxPD; - s32 BGxX; - s32 BGxY; -} BGxPARMS; - - -/******************************************************************************* - these structures are for window description, - windows are square regions and can "subclass" - background layers or object layers (i.e window controls the layers) - - screen - | - +-- Window0/Window1/OBJwindow/OutOfWindows - | - +-- BG0/BG1/BG2/BG3/OBJ -*******************************************************************************/ - -typedef union { - struct { - u8 end:8; - u8 start:8; - } bits ; - u16 val; -} WINxDIM; - -#ifdef WORDS_BIGENDIAN -typedef struct { -/* 6*/ u8 :2; -/* 5*/ u8 WINx_Effect_Enable:1; -/* 4*/ u8 WINx_OBJ_Enable:1; -/* 3*/ u8 WINx_BG3_Enable:1; -/* 2*/ u8 WINx_BG2_Enable:1; -/* 1*/ u8 WINx_BG1_Enable:1; -/* 0*/ u8 WINx_BG0_Enable:1; -} WINxBIT; -#else -typedef struct { -/* 0*/ u8 WINx_BG0_Enable:1; -/* 1*/ u8 WINx_BG1_Enable:1; -/* 2*/ u8 WINx_BG2_Enable:1; -/* 3*/ u8 WINx_BG3_Enable:1; -/* 4*/ u8 WINx_OBJ_Enable:1; -/* 5*/ u8 WINx_Effect_Enable:1; -/* 6*/ u8 :2; -} WINxBIT; -#endif - -#ifdef WORDS_BIGENDIAN -typedef union { - struct { - WINxBIT win0; - WINxBIT win1; - } bits; - struct { - u8 :3; - u8 win0_en:5; - u8 :3; - u8 win1_en:5; - } packed_bits; - struct { - u8 low; - u8 high; - } bytes; - u16 val ; -} WINxCNT ; -#else -typedef union { - struct { - WINxBIT win0; - WINxBIT win1; - } bits; - struct { - u8 win0_en:5; - u8 :3; - u8 win1_en:5; - u8 :3; - } packed_bits; - struct { - u8 low; - u8 high; - } bytes; - u16 val ; -} WINxCNT ; -#endif - -/* -typedef struct { - WINxDIM WIN0H; - WINxDIM WIN1H; - WINxDIM WIN0V; - WINxDIM WIN1V; - WINxCNT WININ; - WINxCNT WINOUT; -} WINCNT; -*/ - -/******************************************************************************* - this structure is for miscellanous settings - //TODO: needs further description -*******************************************************************************/ - -typedef struct { - u16 MOSAIC; - u16 unused1; - u16 unused2;//BLDCNT; - u16 unused3;//BLDALPHA; - u16 unused4;//BLDY; - u16 unused5; - /* - u16 unused6; - u16 unused7; - u16 unused8; - u16 unused9; - */ -} MISCCNT; - - -/******************************************************************************* - this structure is for 3D settings -*******************************************************************************/ - -struct _DISP3DCNT -{ -/* 0*/ u8 EnableTexMapping:1; // -/* 1*/ u8 PolygonShading:1; // 0=Toon Shading, 1=Highlight Shading -/* 2*/ u8 EnableAlphaTest:1; // see ALPHA_TEST_REF -/* 3*/ u8 EnableAlphaBlending:1; // see various Alpha values -/* 4*/ u8 EnableAntiAliasing:1; // -/* 5*/ u8 EnableEdgeMarking:1; // see EDGE_COLOR -/* 6*/ u8 FogOnlyAlpha:1; // 0=Alpha and Color, 1=Only Alpha (see FOG_COLOR) -/* 7*/ u8 EnableFog:1; // Fog Master Enable -/* 8*/ u8 FogShiftSHR:4; // 0..10 SHR-Divider (see FOG_OFFSET) -/*12*/ u8 AckColorBufferUnderflow:1; // Color Buffer RDLINES Underflow (0=None, 1=Underflow/Acknowledge) -/*13*/ u8 AckVertexRAMOverflow:1; // Polygon/Vertex RAM Overflow (0=None, 1=Overflow/Acknowledge) -/*14*/ u8 RearPlaneMode:1; // 0=Blank, 1=Bitmap -/*15*/ u8 :1; -/*16*/ u16 :16; -}; - -typedef union -{ - struct _DISP3DCNT bits; - u32 val; -} DISP3DCNT; - -/******************************************************************************* - this structure is for capture control (core A only) - - source: - http://nocash.emubase.de/gbatek.htm#dsvideocaptureandmainmemorydisplaymode -*******************************************************************************/ - -struct _DISPCAPCNT -{ -/* 0*/ u8 BlendFactor_A:5; // 0..16 = Blending Factor for Source A -/* 5*/ u8 :3; // -/* 8*/ u8 BlendFactor_B:5; // 0..16 = Blending Factor for Source B -/*13*/ u8 :3; // -/*16*/ u8 VRAM_Write_Block:2; // 0..3 = VRAM A..D -/*18*/ u8 VRAM_Write_Offset:2; // n x 0x08000 -/*20*/ u8 Capture_Size:2; // 0=128x128, 1=256x64, 2=256x128, 3=256x192 dots -/*22*/ u8 :2; // -/*24*/ u8 Source_A:1; // 0=Graphics Screen BG+3D+OBJ, 1=3D Screen -/*25*/ u8 Source_B:1; // 0=VRAM, 1=Main Memory Display FIFO -/*26*/ u8 VRAM_Read_Offset:2; // n x 0x08000 -/*28*/ u8 :1; // -/*29*/ u8 Capture_Source:2; // 0=Source A, 1=Source B, 2/3=Sources A+B blended -/*31*/ u8 Capture_Enable:1; // 0=Disable/Ready, 1=Enable/Busy -}; - -typedef union -{ - struct _DISPCAPCNT bits; - u32 val; -} DISPCAPCNT; - - -/******************************************************************************* - this structure holds everything and should be mapped to - * core A : 0x04000000 - * core B : 0x04001000 -*******************************************************************************/ - -typedef struct _reg_dispx { - DISPCNT dispx_DISPCNT; // 0x0400x000 - u16 dispA_DISPSTAT; // 0x04000004 - u16 dispx_VCOUNT; // 0x0400x006 - BGxCNT dispx_BGxCNT[4]; // 0x0400x008 - BGxOFS dispx_BGxOFS[4]; // 0x0400x010 - BGxPARMS dispx_BG2PARMS; // 0x0400x020 - BGxPARMS dispx_BG3PARMS; // 0x0400x030 - u8 filler[12]; // 0x0400x040 - MISCCNT dispx_MISC; // 0x0400x04C - DISP3DCNT dispA_DISP3DCNT; // 0x04000060 - DISPCAPCNT dispA_DISPCAPCNT; // 0x04000064 - u32 dispA_DISPMMEMFIFO; // 0x04000068 -} REG_DISPx ; - - - - - - - -#ifndef __cplusplus -#ifndef min -#define min(a,b) (((a)<(b))?(a):(b)) -#endif - -#ifndef max -#define max(a,b) (((a)>(b))?(a):(b)) -#endif -#endif - -typedef BOOL (*fun_gl_Begin) (int screen); -typedef void (*fun_gl_End) (int screen); -// the GUI should use this function prior to all gl calls -// if call to beg succeeds opengl draw -void register_gl_fun(fun_gl_Begin beg,fun_gl_End end); - -#define GPU_MAIN 0 -#define GPU_SUB 1 - -/* human readable bitmask names */ -#define ADDRESS_STEP_512B 0x00200 -#define ADDRESS_STEP_1KB 0x00400 -#define ADDRESS_STEP_2KB 0x00800 -#define ADDRESS_STEP_4KB 0x01000 -#define ADDRESS_STEP_8KB 0x02000 -#define ADDRESS_STEP_16KB 0x04000 -#define ADDRESS_STEP_32KB 0x08000 -#define ADDRESS_STEP_64kB 0x10000 - -#ifdef WORDS_BIGENDIAN -struct _TILEENTRY -{ -/*14*/ unsigned Palette:4; -/*13*/ unsigned VFlip:1; // VERTICAL FLIP (top<-->bottom) -/*12*/ unsigned HFlip:1; // HORIZONTAL FLIP (left<-->right) -/* 0*/ unsigned TileNum:10; -}; -#else -struct _TILEENTRY -{ -/* 0*/ unsigned TileNum:10; -/*12*/ unsigned HFlip:1; // HORIZONTAL FLIP (left<-->right) -/*13*/ unsigned VFlip:1; // VERTICAL FLIP (top<-->bottom) -/*14*/ unsigned Palette:4; -}; -#endif -typedef union -{ - struct _TILEENTRY bits; - u16 val; -} TILEENTRY; - -struct _ROTOCOORD -{ -/* 0*/ unsigned Fraction:8; -/* 8*/ signed Integer:24; -// /*28*/ unsigned :4; -}; -typedef union -{ - struct _ROTOCOORD bits; - s32 val; -} ROTOCOORD; - - -/* - this structure is for color representation, - it holds 5 meaningful bits per color channel (red,green,blue) - and 1 meaningful bit for alpha representation - this bit can be unused or used for special FX -*/ - -struct _COLOR { // abgr x555 -#ifdef WORDS_BIGENDIAN - unsigned alpha:1; // sometimes it is unused (pad) - unsigned blue:5; - unsigned green:5; - unsigned red:5; -#else - unsigned red:5; - unsigned green:5; - unsigned blue:5; - unsigned alpha:1; // sometimes it is unused (pad) -#endif -}; -struct _COLORx { // abgr x555 - unsigned bgr:15; - unsigned alpha:1; // sometimes it is unused (pad) -}; - -typedef union -{ - struct _COLOR bits; - struct _COLORx bitx; - u16 val; -} COLOR; - -struct _COLOR32 { // ARGB - unsigned :3; - unsigned blue:5; - unsigned :3; - unsigned green:5; - unsigned :3; - unsigned red:5; - unsigned :7; - unsigned alpha:1; // sometimes it is unused (pad) -}; - -typedef union -{ - struct _COLOR32 bits; - u32 val; -} COLOR32; - -#define COLOR_16_32(w,i) \ - /* doesnt matter who's 16bit who's 32bit */ \ - i.bits.red = w.bits.red; \ - i.bits.green = w.bits.green; \ - i.bits.blue = w.bits.blue; \ - i.bits.alpha = w.bits.alpha; - - - - - - -/* - this structure is for Sprite description, - it holds flags & transformations for 1 sprite - (max 128 OBJs / screen) -ref: http://www.bottledlight.com/ds/index.php/Video/Sprites -*/ - -typedef struct -{ -#ifdef WORDS_BIGENDIAN -// attr0 -/* 0*/ unsigned Y:8; -/*14*/ unsigned Shape:2; // (00: Square, 01: Wide, 10: Tall, 11: Illegal) -/*13*/ unsigned Depth:1; // (0: 16, 1: 256) -/*12*/ unsigned Mosaic:1; // (1: Enabled) -/*10*/ unsigned Mode:2; // (00: Normal, 01: Transparent, 10: Object window, 11: Bitmap) -/* 8*/ unsigned RotScale:2; // (00: Normal, 01: Rot/scale, 10: Disabled, 11: Double-size rot/scale) -// attr1 -/* 0*/ signed X:9; -/*14*/ unsigned Size:2; -/*13*/ unsigned VFlip:1; -/*12*/ unsigned HFlip:1; -/* 9*/ unsigned RotScalIndex:3; // Rot/scale matrix index -// attr2 -/* 0*/ unsigned TileIndex:10; -/*12*/ unsigned PaletteIndex:4; -/*10*/ unsigned Priority:2; -// attr3 -unsigned attr3:16; -#else -// attr0 -/* 0*/ unsigned Y:8; -/* 8*/ unsigned RotScale:2; // (00: Normal, 01: Rot/scale, 10: Disabled, 11: Double-size rot/scale) -/*10*/ unsigned Mode:2; // (00: Normal, 01: Transparent, 10: Object window, 11: Bitmap) -/*12*/ unsigned Mosaic:1; // (1: Enabled) -/*13*/ unsigned Depth:1; // (0: 16, 1: 256) -/*14*/ unsigned Shape:2; // (00: Square, 01: Wide, 10: Tall, 11: Illegal) -// attr1 -/* 0*/ signed X:9; -/* 9*/ unsigned RotScalIndex:3; // Rot/scale matrix index -/*12*/ unsigned HFlip:1; -/*13*/ unsigned VFlip:1; -/*14*/ unsigned Size:2; -// attr2 -/* 0*/ unsigned TileIndex:10; -/*10*/ unsigned Priority:2; -/*12*/ unsigned PaletteIndex:4; -// attr3 - unsigned attr3:16; -#endif -} _OAM_; - -typedef struct -{ - u16 attr0; - u16 attr1; - u16 attr2; - u16 attr3; -} OAM; - - - -typedef struct -{ - s16 x; - s16 y; -} size; - - - - -/* - this structure holds information - for rendering. -*/ - -#define NB_PRIORITIES 4 -#define NB_BG 4 -typedef struct -{ - u8 BGs[NB_BG], nbBGs; - u8 PixelsX[256]; - // doh ! yoda says : 256 pixels we can have... - u16 nbPixelsX; -} itemsForPriority_t; - - -typedef struct _GPU GPU; - -struct _GPU -{ - // some structs are becoming redundant - // some functions too (no need to recopy some vars as it is done by MMU) - REG_DISPx * dispx_st; - - DISPCAPCNT dispCapCnt; - BOOL LayersEnable[5]; - itemsForPriority_t itemsForPriority[NB_PRIORITIES]; - u8 sprWin[256][256]; - -#define BGBmpBB BG_bmp_ram -#define BGChBB BG_tile_ram - - u8 * BG_bmp_ram[4]; - u8 * BG_tile_ram[4]; - u8 * BG_map_ram[4]; - - u8 BGExtPalSlot[4]; - u32 BGSize[4][2]; - - u8 lcd; - u8 core; - - u8 dispMode; - u8 vramBlock; - - BOOL dispBG[4]; - BOOL dispOBJ; - - OAM * oam; - u8 * sprMem; - u8 sprBoundary; - u8 sprBMPBoundary; - u8 sprBMPMode; - u32 sprEnable; - - u8 WIN0H0; - u8 WIN0H1; - u8 WIN0V0; - u8 WIN0V1; - - u8 WIN1H0; - u8 WIN1H1; - u8 WIN1V0; - u8 WIN1V1; - - u8 WININ0; - u8 WININ0_SPECIAL; - u8 WININ1; - u8 WININ1_SPECIAL; - - u8 WINOUT; - u8 WINOUT_SPECIAL; - u8 WINOBJ; - u8 WINOBJ_SPECIAL; - - u8 WIN0_ENABLED; - u8 WIN1_ENABLED; - u8 WINOBJ_ENABLED; - - u16 BLDCNT; - u8 BLDALPHA_EVA; - u8 BLDALPHA_EVB; - u8 BLDY_EVY; - - u8 MasterBrightMode; - u32 MasterBrightFactor; - - BOOL (*setFinalColorSpr)(const GPU *gpu, u32 passing, u8 bgnum, u8 *dst, u16 color, u16 x, u16 y); - BOOL (*setFinalColorBck)(const GPU *gpu, u32 passing, u8 bgnum, u8 *dst, u16 color, u16 x, u16 y); - void (*spriteRender) (GPU * gpu, u16 l, u8 * dst, u8 * prioTab); -}; -/* -// normally should have same addresses -static void REG_DISPx_pack_test(GPU * gpu) -{ - REG_DISPx * r = gpu->dispx_st; - printf ("%08x %02x\n", r, (long)(&r->dispx_DISPCNT) - (long)r); - printf ("\t%02x\n", (long)(&r->dispA_DISPSTAT) - (long)r); - printf ("\t%02x\n", (long)(&r->dispx_VCOUNT) - (long)r); - printf ("\t%02x\n", (long)(&r->dispx_BGxCNT[0]) - (long)r); - printf ("\t%02x\n", (long)(&r->dispx_BGxOFS[0]) - (long)r); - printf ("\t%02x\n", (long)(&r->dispx_BG2PARMS) - (long)r); - printf ("\t%02x\n", (long)(&r->dispx_BG3PARMS) - (long)r); - printf ("\t%02x\n", (long)(&r->dispx_WINCNT) - (long)r); - printf ("\t%02x\n", (long)(&r->dispx_MISC) - (long)r); - printf ("\t%02x\n", (long)(&r->dispA_DISP3DCNT) - (long)r); - printf ("\t%02x\n", (long)(&r->dispA_DISPCAPCNT) - (long)r); - printf ("\t%02x\n", (long)(&r->dispA_DISPMMEMFIFO) - (long)r); -} -*/ - -extern u8 GPU_screen[4*256*192]; - - -GPU * GPU_Init(u8 l); -void GPU_Reset(GPU *g, u8 l); -void GPU_DeInit(GPU *); - -void textBG(const GPU * gpu, u8 num, u8 * DST); //Draw text based background -void rotBG(GPU * gpu, u8 num, u8 * DST); -void extRotBG(GPU * gpu, u8 num, u8 * DST); -void sprite1D(GPU * gpu, u16 l, u8 * dst, u8 * prioTab); -void sprite2D(GPU * gpu, u16 l, u8 * dst, u8 * prioTab); - -extern short sizeTab[4][4][2]; -extern size sprSizeTab[4][4]; -extern s8 mode2type[8][4]; -extern void (*modeRender[8][4])(GPU * gpu, u8 num, u16 l, u8 * DST); - -typedef struct { - GPU * gpu; - u16 offset; -} NDS_Screen; - -extern NDS_Screen MainScreen; -extern NDS_Screen SubScreen; - -int Screen_Init(int coreid); -void Screen_Reset(void); -void Screen_DeInit(void); - -extern MMU_struct MMU; - - - -#define GFXCORE_DEFAULT -1 -#define GFXCORE_DUMMY 0 - -#define GFXCORE_FULLSCREEN (1 << 0) - -typedef struct -{ - int id; // ID number for core(see above defines) - const char *Name; // Name of core - int flags; // What features the core supports(full screen, etc.) - int (*Init)(); // Initializes stuff related to core - void (*DeInit)(); // Deinitializes stuff related to core - void (*Resize)(int width, int height, BOOL fullscreen); // Resizes window or fullscreen - void (*OnScreenText)(char *string, ...); // For handling save state messages, etc. -} GraphicsInterface_struct; - -extern GraphicsInterface_struct GFXDummy; - -void GPU_setVideoProp(GPU *, u32 p); -void GPU_setBGProp(GPU *, u16 num, u16 p); - -void GPU_setBLDCNT(GPU *gpu, u16 v) ; -void GPU_setBLDALPHA(GPU *gpu, u16 v) ; -void GPU_setBLDY(GPU *gpu, u16 v) ; -void GPU_setMOSAIC(GPU *gpu, u16 v) ; - - -void GPU_remove(GPU *, u8 num); -void GPU_addBack(GPU *, u8 num); - -int GPU_ChangeGraphicsCore(int coreid); - -void GPU_set_DISPCAPCNT(GPU * gpu, u32 val) ; -void GPU_ligne(NDS_Screen * screen, u16 l) ; -void GPU_setMasterBrightness (GPU *gpu, u16 val); - -void GPU_setWIN0_H (GPU *gpu, u16 val); -void GPU_setWIN0_H0 (GPU *gpu, u8 val); -void GPU_setWIN0_H1 (GPU *gpu, u8 val); - -void GPU_setWIN0_V (GPU *gpu, u16 val); -void GPU_setWIN0_V0 (GPU *gpu, u8 val); -void GPU_setWIN0_V1 (GPU *gpu, u8 val); - -void GPU_setWIN1_H (GPU *gpu, u16 val); -void GPU_setWIN1_H0 (GPU *gpu, u8 val); -void GPU_setWIN1_H1 (GPU *gpu, u8 val); - -void GPU_setWIN1_V (GPU *gpu, u16 val); -void GPU_setWIN1_V0 (GPU *gpu, u8 val); -void GPU_setWIN1_V1 (GPU *gpu, u8 val); - -void GPU_setWININ (GPU *gpu, u16 val); -void GPU_setWININ0 (GPU *gpu, u8 val); -void GPU_setWININ1 (GPU *gpu, u8 val); - -void GPU_setWINOUT16(GPU *gpu, u16 val); -void GPU_setWINOUT (GPU *gpu, u8 val); -void GPU_setWINOBJ (GPU *gpu, u8 val); - -void GPU_setBLDCNT_LOW (GPU *gpu, u8 val); -void GPU_setBLDCNT_HIGH (GPU *gpu, u8 val); -void GPU_setBLDCNT (GPU *gpu, u16 val); - -void GPU_setBLDALPHA (GPU *gpu, u16 val); -void GPU_setBLDALPHA_EVA(GPU *gpu, u8 val); -void GPU_setBLDALPHA_EVB(GPU *gpu, u8 val); - -void GPU_setBLDY_EVY (GPU *gpu, u8 val); - -#endif - diff -Nru audacious-plugins-4.1/src/xsf/desmume/MMU.cc audacious-plugins-4.3.1/src/xsf/desmume/MMU.cc --- audacious-plugins-4.1/src/xsf/desmume/MMU.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/MMU.cc 2023-04-29 20:17:32.000000000 +0000 @@ -1,3526 +1,2795 @@ -/* Copyright (C) 2006 yopyop - yopyop156@ifrance.com - yopyop156.ifrance.com - +/* + Copyright (C) 2006 yopyop Copyright (C) 2007 shash + Copyright (C) 2007-2012 DeSmuME team - This file is part of DeSmuME + This file 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 file 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. - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + You should have received a copy of the GNU General Public License + along with the this software. If not, see . */ -//#define RENDER3D - -#include -#include -#include - -//#include "gl_vertex.h" - -#include "debug.h" +#include +#include +#include +#include +#include #include "NDSSystem.h" -//#include "cflash.h" -#define cflash_read(a) 0 -#define cflash_write(a,d) #include "cp15.h" -//#include "wifi.h" #include "registers.h" +#include "mc.h" +#include "slot1.h" +#include "readwrite.h" +#include "MMU_timing.h" -#if VIO2SF_GPU_ENABLE -#include "render3D.h" -#else -#define GPU_setVideoProp(p1, p2) -#define GPU_setBGProp(p1, p2, p3) - -#define GPU_setBLDCNT(p1, p2) -#define GPU_setBLDALPHA(p1, p2) -#define GPU_setBLDY(p1, p2) -#define GPU_setMOSAIC(p1, p2) - - -#define GPU_remove(p1,p2) -#define GPU_addBack(p1,p2) - -#define GPU_ChangeGraphicsCore(p1) 0 - -#define GPU_set_DISPCAPCNT(p1, p2) -#define GPU_ligne(p1, p2) -#define GPU_setMasterBrightness(p1, p2) +// http://home.utah.edu/~nahaj/factoring/isqrt.c.html +static uint64_t isqrt(uint64_t x) +{ + if (x < 1) + return 0; -#define GPU_setWIN0_H(p1, p2) -#define GPU_setWIN0_H0(p1, p2) -#define GPU_setWIN0_H1(p1, p2) + /* Load the binary constant 01 00 00 ... 00, where the number + * of zero bits to the right of the single one bit + * is even, and the one bit is as far left as is consistant + * with that condition.) + */ + uint64_t squaredbit = (~0LL >> 1) & ~(~0LL >> 2); + /* This portable load replaces the loop that used to be + * here, and was donated by legalize@xmission.com + */ + + /* Form bits of the answer. */ + uint64_t remainder = x, root = 0; + while (squaredbit > 0) + { + if (remainder >= (squaredbit | root)) + { + remainder -= squaredbit | root; + root >>= 1; + root |= squaredbit; + } + else + root >>= 1; + squaredbit >>= 2; + } -#define GPU_setWIN0_V(p1, p2) -#define GPU_setWIN0_V0(p1, p2) -#define GPU_setWIN0_V1(p1, p2) + return root; +} -#define GPU_setWIN1_H(p1, p2) -#define GPU_setWIN1_H0(p1, p2) -#define GPU_setWIN1_H1(p1, p2) +uint32_t partie = 1; +uint32_t _MMU_MAIN_MEM_MASK = 0x3FFFFF; +uint32_t _MMU_MAIN_MEM_MASK16 = 0x3FFFFF & ~1; +uint32_t _MMU_MAIN_MEM_MASK32 = 0x3FFFFF & ~3; -#define GPU_setWIN1_V(p1, p2) -#define GPU_setWIN1_V0(p1, p2) -#define GPU_setWIN1_V1(p1, p2) +MMU_struct MMU; +MMU_struct_new MMU_new; +MMU_struct_timing MMU_timing; -#define GPU_setWININ(p1, p2) -#define GPU_setWININ0(p1, p2) -#define GPU_setWININ1(p1, p2) +uint8_t *MMU_struct::MMU_MEM[2][256] = +{ + //arm9 + { + /* 0X*/ DUP16(MMU.ARM9_ITCM), + /* 1X*/ //DUP16(MMU.ARM9_ITCM) + /* 1X*/ DUP16(MMU.UNUSED_RAM), + /* 2X*/ DUP16(MMU.MAIN_MEM), + /* 3X*/ DUP16(MMU.SWIRAM), + /* 4X*/ DUP16(MMU.ARM9_REG), + /* 5X*/ DUP16(MMU.ARM9_VMEM), + /* 6X*/ DUP16(MMU.ARM9_LCD), + /* 7X*/ DUP16(MMU.ARM9_OAM), + /* 8X*/ DUP16(nullptr), + /* 9X*/ DUP16(nullptr), + /* AX*/ DUP16(MMU.UNUSED_RAM), + /* BX*/ DUP16(MMU.UNUSED_RAM), + /* CX*/ DUP16(MMU.UNUSED_RAM), + /* DX*/ DUP16(MMU.UNUSED_RAM), + /* EX*/ DUP16(MMU.UNUSED_RAM), + /* FX*/ DUP16(MMU.ARM9_BIOS) + }, + //arm7 + { + /* 0X*/ DUP16(MMU.ARM7_BIOS), + /* 1X*/ DUP16(MMU.UNUSED_RAM), + /* 2X*/ DUP16(MMU.MAIN_MEM), + /* 3X*/ DUP8(MMU.SWIRAM), + DUP8(MMU.ARM7_ERAM), + /* 4X*/ DUP8(MMU.ARM7_REG), + DUP8(MMU.ARM7_WIRAM), + /* 5X*/ DUP16(MMU.UNUSED_RAM), + /* 6X*/ DUP16(MMU.ARM9_LCD), + /* 7X*/ DUP16(MMU.UNUSED_RAM), + /* 8X*/ DUP16(nullptr), + /* 9X*/ DUP16(nullptr), + /* AX*/ DUP16(MMU.UNUSED_RAM), + /* BX*/ DUP16(MMU.UNUSED_RAM), + /* CX*/ DUP16(MMU.UNUSED_RAM), + /* DX*/ DUP16(MMU.UNUSED_RAM), + /* EX*/ DUP16(MMU.UNUSED_RAM), + /* FX*/ DUP16(MMU.UNUSED_RAM) + } +}; -#define GPU_setWINOUT16(p1, p2) -#define GPU_setWINOUT(p1, p2) -#define GPU_setWINOBJ(p1, p2) +uint32_t MMU_struct::MMU_MASK[2][256] = +{ + //arm9 + { + /* 0X*/ DUP16(0x00007FFF), + /* 1X*/ //DUP16(0x00007FFF) + /* 1X*/ DUP16(0x00000003), + /* 2X*/ DUP16(0x003FFFFF), + /* 3X*/ DUP16(0x00007FFF), + /* 4X*/ DUP16(0x00FFFFFF), + /* 5X*/ DUP16(0x000007FF), + /* 6X*/ DUP16(0x000FFFFF), + /* 7X*/ DUP16(0x000007FF), + /* 8X*/ DUP16(0x00000003), + /* 9X*/ DUP16(0x00000003), + /* AX*/ DUP16(0x00000003), + /* BX*/ DUP16(0x00000003), + /* CX*/ DUP16(0x00000003), + /* DX*/ DUP16(0x00000003), + /* EX*/ DUP16(0x00000003), + /* FX*/ DUP16(0x00007FFF) + }, + //arm7 + { + /* 0X*/ DUP16(0x00003FFF), + /* 1X*/ DUP16(0x00000003), + /* 2X*/ DUP16(0x003FFFFF), + /* 3X*/ DUP8(0x00007FFF), + DUP8(0x0000FFFF), + /* 4X*/ DUP8(0x0000FFFF), + DUP8(0x0000FFFF), + /* 5X*/ DUP16(0x00000003), + /* 6X*/ DUP16(0x000FFFFF), + /* 7X*/ DUP16(0x00000003), + /* 8X*/ DUP16(0x00000003), + /* 9X*/ DUP16(0x00000003), + /* AX*/ DUP16(0x00000003), + /* BX*/ DUP16(0x00000003), + /* CX*/ DUP16(0x00000003), + /* DX*/ DUP16(0x00000003), + /* EX*/ DUP16(0x00000003), + /* FX*/ DUP16(0x00000003) + } +}; -#define GPU_setBLDCNT_LOW(p1, p2) -#define GPU_setBLDCNT_HIGH(p1, p2) -#define GPU_setBLDCNT(p1, p2) +////////////////////////////////////////////////////////////// -#define GPU_setBLDALPHA(p1, p2) -#define GPU_setBLDALPHA_EVA(p1, p2) -#define GPU_setBLDALPHA_EVB(p1, p2) +// ------------- +// VRAM MEMORY MAPPING +// ------------- +// (Everything is mapped through to ARM9_LCD in blocks of 16KB) -#define GPU_setBLDY_EVY(p1, p2) -#endif +// for all of the below, values = 41 indicate unmapped memory +static const uint8_t VRAM_PAGE_UNMAPPED = 41; -#define ROM_MASK 3 +static const unsigned VRAM_LCDC_PAGES = 41; +static uint8_t vram_lcdc_map[VRAM_LCDC_PAGES]; -/* - * - */ -//#define PROFILE_MEMORY_ACCESS 1 -#define EARLY_MEMORY_ACCESS 1 - -#define INTERNAL_DTCM_READ 1 -#define INTERNAL_DTCM_WRITE 1 - -//#define LOG_CARD -//#define LOG_GPU -//#define LOG_DMA -//#define LOG_DMA2 -//#define LOG_DIV - -char szRomPath[512]; -char szRomBaseName[512]; - -#define DUP2(x) x, x -#define DUP4(x) x, x, x, x -#define DUP8(x) x, x, x, x, x, x, x, x -#define DUP16(x) x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x +// in the range of 0x06000000 - 0x06800000 in 16KB pages (the ARM9 vram mappable area) +// this maps to 16KB pages in the LCDC buffer which is what will actually contain the data +uint8_t vram_arm9_map[VRAM_ARM9_PAGES]; -MMU_struct MMU; +// this chooses which banks are mapped in the 128K banks starting at 0x06000000 in ARM7 +static uint8_t vram_arm7_map[2]; -u8 * MMU_ARM9_MEM_MAP[256]={ -/* 0X*/ DUP16(ARM9Mem.ARM9_ITCM), -/* 1X*/ //DUP16(ARM9Mem.ARM9_ITCM) -/* 1X*/ DUP16(ARM9Mem.ARM9_WRAM), -/* 2X*/ DUP16(ARM9Mem.MAIN_MEM), -/* 3X*/ DUP16(MMU.SWIRAM), -/* 4X*/ DUP16(ARM9Mem.ARM9_REG), -/* 5X*/ DUP16(ARM9Mem.ARM9_VMEM), -/* 6X*/ DUP2(ARM9Mem.ARM9_ABG), - DUP2(ARM9Mem.ARM9_BBG), - DUP2(ARM9Mem.ARM9_AOBJ), - DUP2(ARM9Mem.ARM9_BOBJ), - DUP8(ARM9Mem.ARM9_LCD), -/* 7X*/ DUP16(ARM9Mem.ARM9_OAM), -/* 8X*/ DUP16(nullptr), -/* 9X*/ DUP16(nullptr), -/* AX*/ DUP16(MMU.CART_RAM), -/* BX*/ DUP16(MMU.UNUSED_RAM), -/* CX*/ DUP16(MMU.UNUSED_RAM), -/* DX*/ DUP16(MMU.UNUSED_RAM), -/* EX*/ DUP16(MMU.UNUSED_RAM), -/* FX*/ DUP16(ARM9Mem.ARM9_BIOS) +struct TVramBankInfo +{ + uint8_t page_addr, num_pages; }; -u32 MMU_ARM9_MEM_MASK[256]={ -/* 0X*/ DUP16(0x00007FFF), -/* 1X*/ //DUP16(0x00007FFF) -/* 1X*/ DUP16(0x00FFFFFF), -/* 2X*/ DUP16(0x003FFFFF), -/* 3X*/ DUP16(0x00007FFF), -/* 4X*/ DUP16(0x00FFFFFF), -/* 5X*/ DUP16(0x000007FF), -/* 6X*/ DUP2(0x0007FFFF), - DUP2(0x0001FFFF), - DUP2(0x0003FFFF), - DUP2(0x0001FFFF), - DUP8(0x000FFFFF), -/* 7X*/ DUP16(0x000007FF), -/* 8X*/ DUP16(ROM_MASK), -/* 9X*/ DUP16(ROM_MASK), -/* AX*/ DUP16(0x0000FFFF), -/* BX*/ DUP16(0x00000003), -/* CX*/ DUP16(0x00000003), -/* DX*/ DUP16(0x00000003), -/* EX*/ DUP16(0x00000003), -/* FX*/ DUP16(0x00007FFF) +static const TVramBankInfo vram_bank_info[VRAM_BANKS] = +{ + {0, 8}, + {8, 8}, + {16, 8}, + {24, 8}, + {32, 4}, + {36, 1}, + {37, 1}, + {38, 2}, + {40, 1} }; -u8 * MMU_ARM7_MEM_MAP[256]={ -/* 0X*/ DUP16(MMU.ARM7_BIOS), -/* 1X*/ DUP16(MMU.UNUSED_RAM), -/* 2X*/ DUP16(ARM9Mem.MAIN_MEM), -/* 3X*/ DUP8(MMU.SWIRAM), - DUP8(MMU.ARM7_ERAM), -/* 4X*/ DUP8(MMU.ARM7_REG), - DUP8(MMU.ARM7_WIRAM), -/* 5X*/ DUP16(MMU.UNUSED_RAM), -/* 6X*/ DUP16(ARM9Mem.ARM9_ABG), -/* 7X*/ DUP16(MMU.UNUSED_RAM), -/* 8X*/ DUP16(nullptr), -/* 9X*/ DUP16(nullptr), -/* AX*/ DUP16(MMU.CART_RAM), -/* BX*/ DUP16(MMU.UNUSED_RAM), -/* CX*/ DUP16(MMU.UNUSED_RAM), -/* DX*/ DUP16(MMU.UNUSED_RAM), -/* EX*/ DUP16(MMU.UNUSED_RAM), -/* FX*/ DUP16(MMU.UNUSED_RAM) -}; +// this is to remind you that the LCDC mapping returns a strange value (not 0x06800000) as you would expect +// in order to play nicely with the MMU address and mask tables +static const uint32_t LCDC_HACKY_LOCATION = 0x06000000; + +static const uint32_t ARM7_HACKY_IWRAM_LOCATION = 0x03800000; +static const uint32_t ARM7_HACKY_SIWRAM_LOCATION = 0x03000000; + +// maps an ARM9 BG/OBJ or LCDC address into an LCDC address, and informs the caller of whether it isn't mapped +// TODO - in cases where this does some mapping work, we could bypass the logic at the end of the _read* and _write* routines +// this is a good optimization to consider +// NOTE - this whole approach is probably fundamentally wrong. +// according to dasShiny research, its possible to map multiple banks to the same addresses. something more sophisticated would be needed. +// however, it hasnt proven necessary yet for any known test case. +static inline uint32_t MMU_LCDmap(int PROCNUM, uint32_t addr, bool &unmapped, bool &restricted) +{ + unmapped = false; + restricted = false; // this will track whether 8bit writes are allowed -u32 MMU_ARM7_MEM_MASK[256]={ -/* 0X*/ DUP16(0x00003FFF), -/* 1X*/ DUP16(0x00000003), -/* 2X*/ DUP16(0x003FFFFF), -/* 3X*/ DUP8(0x00007FFF), - DUP8(0x0000FFFF), -/* 4X*/ DUP8(0x00FFFFFF), - DUP8(0x0000FFFF), -/* 5X*/ DUP16(0x00000003), -/* 6X*/ DUP16(0x0003FFFF), -/* 7X*/ DUP16(0x00000003), -/* 8X*/ DUP16(ROM_MASK), -/* 9X*/ DUP16(ROM_MASK), -/* AX*/ DUP16(0x0000FFFF), -/* BX*/ DUP16(0x00000003), -/* CX*/ DUP16(0x00000003), -/* DX*/ DUP16(0x00000003), -/* EX*/ DUP16(0x00000003), -/* FX*/ DUP16(0x00000003) -}; + // handle SIWRAM and non-shared IWRAM in here too, since it is quite similar to vram. + // in fact it is probably implemented with the same pieces of hardware. + // its sort of like arm7 non-shared IWRAM is lowest priority, and then SIWRAM goes on top. + // however, we implement it differently than vram in emulator for historical reasons. + // instead of keeping a page map like we do vram, we just have a list of all possible page maps (there are only 4 each for arm9 and arm7) + if (addr >= 0x03000000 && addr < 0x04000000) + { + // blocks 0,1,2,3 is arm7 non-shared IWRAM and blocks 4,5 is SIWRAM, and block 8 is un-mapped zeroes + int iwram_block_16k; + int iwram_offset = addr & 0x3FFF; + addr &= 0x00FFFFFF; + if (PROCNUM == ARMCPU_ARM7) + { + static const int arm7_siwram_blocks[][4][4] = + { + { + {0, 1, 2, 3}, //WRAMCNT = 0 -> map to IWRAM + {4, 4, 4, 4}, //WRAMCNT = 1 -> map to SIWRAM block 0 + {5, 5, 5, 5}, //WRAMCNT = 2 -> map to SIWRAM block 1 + {4, 5, 4, 5}, //WRAMCNT = 3 -> map to SIWRAM blocks 0,1 + }, + //high region; always maps to non-shared IWRAM + { + {0, 1, 2, 3}, + {0, 1, 2, 3}, + {0, 1, 2, 3}, + {0, 1, 2, 3} + } + }; + int region = (addr >> 23) & 1; + int block = (addr >> 14) & 3; + assert(region < 2); + assert(block < 4); + iwram_block_16k = arm7_siwram_blocks[region][MMU.WRAMCNT][block]; + } //PROCNUM == ARMCPU_ARM7 + else + { + // PROCNUM == ARMCPU_ARM9 + static const int arm9_siwram_blocks[][4] = + { + {4, 5, 4, 5}, //WRAMCNT = 0 -> map to SIWRAM blocks 0,1 + {5, 5, 5, 5}, //WRAMCNT = 1 -> map to SIWRAM block 1 + {4, 4, 4, 4}, //WRAMCNT = 2 -> map to SIWRAM block 0 + {8, 8, 8, 8}, //WRAMCNT = 3 -> unmapped + }; + int block = (addr >> 14) & 3; + assert(block < 4); + iwram_block_16k = arm9_siwram_blocks[MMU.WRAMCNT][block]; + } -u32 MMU_ARM9_WAIT16[16]={ - 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1, 1, 1, -}; + switch (iwram_block_16k >> 2) + { + case 0: // arm7 non-shared IWRAM + return ARM7_HACKY_IWRAM_LOCATION + (iwram_block_16k << 14) + iwram_offset; + case 1: //SIWRAM + return ARM7_HACKY_SIWRAM_LOCATION + ((iwram_block_16k & 3) << 14) + iwram_offset; + case 2: //zeroes + CASE2: + unmapped = true; + return 0; + default: + assert(false); //how did this happen? + goto CASE2; + } + } -u32 MMU_ARM9_WAIT32[16]={ - 1, 1, 1, 1, 1, 2, 2, 1, 8, 8, 5, 1, 1, 1, 1, 1, -}; + // in case the address is entirely outside of the interesting VRAM ranges + if (addr < 0x06000000) + return addr; + if (addr >= 0x07000000) + return addr; -u32 MMU_ARM7_WAIT16[16]={ - 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1, 1, 1, -}; + restricted = true; -u32 MMU_ARM7_WAIT32[16]={ - 1, 1, 1, 1, 1, 1, 1, 1, 8, 8, 5, 1, 1, 1, 1, 1, -}; + // handle LCD memory mirroring + // TODO - this is gross! this should be renovated if the vram mapping is ever done in a more sophisticated way taking into account dasShiny research + if (addr >= 0x068A4000) + addr = 0x06800000 + + //(addr % 0xA4000); // yuck!! is this even how it mirrors? but we have to keep from overrunning the buffer somehow + (addr & 0x80000); // just as likely to be right (I have no clue how it should work) but faster. -void MMU_Init(void) { - int i; + uint32_t vram_page; + uint32_t ofs = addr & 0x3FFF; - LOG("MMU init\n"); + // return addresses in LCDC range + if (addr >= 0x06800000) + { + // already in LCDC range. just look it up to see whether it is unmapped + vram_page = (addr >> 14) & 63; + assert(vram_page < VRAM_LCDC_PAGES); + vram_page = vram_lcdc_map[vram_page]; + } + else + { + // map addresses in BG/OBJ range to an LCDC range + vram_page = (addr >> 14) & (VRAM_ARM9_PAGES - 1); + assert(vram_page < VRAM_ARM9_PAGES); + vram_page = vram_arm9_map[vram_page]; + } - memset(&MMU, 0, sizeof(MMU_struct)); + if (vram_page == VRAM_PAGE_UNMAPPED) + { + unmapped = true; + return 0; + } + else + return LCDC_HACKY_LOCATION + (vram_page << 14) + ofs; +} - MMU.CART_ROM = MMU.UNUSED_RAM; +VramConfiguration vramConfiguration; - for(i = 0x80; i<0xA0; ++i) - { - MMU_ARM9_MEM_MAP[i] = MMU.CART_ROM; - MMU_ARM7_MEM_MAP[i] = MMU.CART_ROM; - } - - MMU.MMU_MEM[0] = MMU_ARM9_MEM_MAP; - MMU.MMU_MEM[1] = MMU_ARM7_MEM_MAP; - MMU.MMU_MASK[0]= MMU_ARM9_MEM_MASK; - MMU.MMU_MASK[1] = MMU_ARM7_MEM_MASK; - - MMU.ITCMRegion = 0x00800000; - - MMU.MMU_WAIT16[0] = MMU_ARM9_WAIT16; - MMU.MMU_WAIT16[1] = MMU_ARM7_WAIT16; - MMU.MMU_WAIT32[0] = MMU_ARM9_WAIT32; - MMU.MMU_WAIT32[1] = MMU_ARM7_WAIT32; - - for(i = 0;i < 16;i++) - FIFOInit(MMU.fifos + i); - - mc_init(&MMU.fw, MC_TYPE_FLASH); /* init fw device */ - mc_alloc(&MMU.fw, NDS_FW_SIZE_V1); - MMU.fw.fp = nullptr; - - // Init Backup Memory device, this should really be done when the rom is loaded - mc_init(&MMU.bupmem, MC_TYPE_AUTODETECT); - mc_alloc(&MMU.bupmem, 1); - MMU.bupmem.fp = nullptr; - -} - -void MMU_DeInit(void) { - LOG("MMU deinit\n"); -// if (MMU.fw.fp) -// fclose(MMU.fw.fp); - mc_free(&MMU.fw); -// if (MMU.bupmem.fp) -// fclose(MMU.bupmem.fp); - mc_free(&MMU.bupmem); -} - -//Card rom & ram - -u16 SPI_CNT = 0; -u16 SPI_CMD = 0; -u16 AUX_SPI_CNT = 0; -u16 AUX_SPI_CMD = 0; - -u32 rom_mask = 0; - -u32 DMASrc[2][4] = {{0, 0, 0, 0}, {0, 0, 0, 0}}; -u32 DMADst[2][4] = {{0, 0, 0, 0}, {0, 0, 0, 0}}; - -void MMU_clearMem() -{ - int i; - - memset(ARM9Mem.ARM9_ABG, 0, 0x080000); - memset(ARM9Mem.ARM9_AOBJ, 0, 0x040000); - memset(ARM9Mem.ARM9_BBG, 0, 0x020000); - memset(ARM9Mem.ARM9_BOBJ, 0, 0x020000); - memset(ARM9Mem.ARM9_DTCM, 0, 0x4000); - memset(ARM9Mem.ARM9_ITCM, 0, 0x8000); - memset(ARM9Mem.ARM9_LCD, 0, 0x0A4000); - memset(ARM9Mem.ARM9_OAM, 0, 0x0800); - memset(ARM9Mem.ARM9_REG, 0, 0x01000000); - memset(ARM9Mem.ARM9_VMEM, 0, 0x0800); - memset(ARM9Mem.ARM9_WRAM, 0, 0x01000000); - memset(ARM9Mem.MAIN_MEM, 0, 0x400000); - - memset(ARM9Mem.blank_memory, 0, sizeof ARM9Mem.blank_memory); - - memset(MMU.ARM7_ERAM, 0, 0x010000); - memset(MMU.ARM7_REG, 0, 0x010000); - - for(i = 0;i < 16;i++) - FIFOInit(MMU.fifos + i); - - MMU.DTCMRegion = 0; - MMU.ITCMRegion = 0x00800000; - - memset(MMU.timer, 0, sizeof(u16) * 2 * 4); - memset(MMU.timerMODE, 0, sizeof(s32) * 2 * 4); - memset(MMU.timerON, 0, sizeof(u32) * 2 * 4); - memset(MMU.timerRUN, 0, sizeof(u32) * 2 * 4); - memset(MMU.timerReload, 0, sizeof(u16) * 2 * 4); - - memset(MMU.reg_IME, 0, sizeof(u32) * 2); - memset(MMU.reg_IE, 0, sizeof(u32) * 2); - memset(MMU.reg_IF, 0, sizeof(u32) * 2); - - memset(MMU.DMAStartTime, 0, sizeof(u32) * 2 * 4); - memset(MMU.DMACycle, 0, sizeof(s32) * 2 * 4); - memset(MMU.DMACrt, 0, sizeof(u32) * 2 * 4); - memset(MMU.DMAing, 0, sizeof(BOOL) * 2 * 4); - - memset(MMU.dscard, 0, sizeof(nds_dscard) * 2); - - MainScreen.offset = 192; - SubScreen.offset = 0; - - /* setup the texture slot pointers */ -#if 0 - ARM9Mem.textureSlotAddr[0] = ARM9Mem.blank_memory; - ARM9Mem.textureSlotAddr[1] = ARM9Mem.blank_memory; - ARM9Mem.textureSlotAddr[2] = ARM9Mem.blank_memory; - ARM9Mem.textureSlotAddr[3] = ARM9Mem.blank_memory; -#else - ARM9Mem.textureSlotAddr[0] = &ARM9Mem.ARM9_LCD[0x20000 * 0]; - ARM9Mem.textureSlotAddr[1] = &ARM9Mem.ARM9_LCD[0x20000 * 1]; - ARM9Mem.textureSlotAddr[2] = &ARM9Mem.ARM9_LCD[0x20000 * 2]; - ARM9Mem.textureSlotAddr[3] = &ARM9Mem.ARM9_LCD[0x20000 * 3]; -#endif +// maps the specified bank to LCDC +static inline void MMU_vram_lcdc(int bank) +{ + for (int i = 0; i < vram_bank_info[bank].num_pages; ++i) + { + int page = vram_bank_info[bank].page_addr + i; + vram_lcdc_map[page] = page; + } } -/* the VRAM blocks keep their content even when not blended in */ -/* to ensure that we write the content back to the LCD ram */ -/* FIXME: VRAM Bank E,F,G,H,I missing */ -void MMU_VRAMWriteBackToLCD(u8 block) -{ - u8 *destination; - u8 *source; - u32 size ; - u8 VRAMBankCnt; - #if 1 - return ; - #endif - destination = 0 ; - source = 0; - VRAMBankCnt = MMU_read8(ARMCPU_ARM9,REG_VRAMCNTA+block) ; - switch (block) - { - case 0: // Bank A - destination = ARM9Mem.ARM9_LCD ; - size = 0x20000 ; - break ; - case 1: // Bank B - destination = ARM9Mem.ARM9_LCD + 0x20000 ; - size = 0x20000 ; - break ; - case 2: // Bank C - destination = ARM9Mem.ARM9_LCD + 0x40000 ; - size = 0x20000 ; - break ; - case 3: // Bank D - destination = ARM9Mem.ARM9_LCD + 0x60000 ; - size = 0x20000 ; - break ; - case 4: // Bank E - destination = ARM9Mem.ARM9_LCD + 0x80000 ; - size = 0x10000 ; - break ; - case 5: // Bank F - destination = ARM9Mem.ARM9_LCD + 0x90000 ; - size = 0x4000 ; - break ; - case 6: // Bank G - destination = ARM9Mem.ARM9_LCD + 0x94000 ; - size = 0x4000 ; - break ; - case 8: // Bank H - destination = ARM9Mem.ARM9_LCD + 0x98000 ; - size = 0x8000 ; - break ; - case 9: // Bank I - destination = ARM9Mem.ARM9_LCD + 0xA0000 ; - size = 0x4000 ; - break ; - default: - return ; - } - switch (VRAMBankCnt & 7) { - case 0: - /* vram is allready stored at LCD, we dont need to write it back */ - MMU.vScreen = 1; - break ; - case 1: - switch(block){ - case 0: - case 1: - case 2: - case 3: - /* banks are in use for BG at ABG + ofs * 0x20000 */ - source = ARM9Mem.ARM9_ABG + ((VRAMBankCnt >> 3) & 3) * 0x20000 ; - break ; - case 4: - /* bank E is in use at ABG */ - source = ARM9Mem.ARM9_ABG ; - break; - case 5: - case 6: - /* banks are in use for BG at ABG + (0x4000*OFS.0)+(0x10000*OFS.1)*/ - source = ARM9Mem.ARM9_ABG + (((VRAMBankCnt >> 3) & 1) * 0x4000) + (((VRAMBankCnt >> 2) & 1) * 0x10000) ; - break; - case 8: - /* bank H is in use at BBG */ - source = ARM9Mem.ARM9_BBG ; - break ; - case 9: - /* bank I is in use at BBG */ - source = ARM9Mem.ARM9_BBG + 0x8000 ; - break; - default: return ; - } - break ; - case 2: - if (block < 2) - { - /* banks A,B are in use for OBJ at AOBJ + ofs * 0x20000 */ - source = ARM9Mem.ARM9_AOBJ + ((VRAMBankCnt >> 3) & 1) * 0x20000 ; - } else return ; - break ; - case 4: - switch(block){ - case 2: - /* bank C is in use at BBG */ - source = ARM9Mem.ARM9_BBG ; - break ; - case 3: - /* bank D is in use at BOBJ */ - source = ARM9Mem.ARM9_BOBJ ; - break ; - default: return ; - } - break ; - default: - return ; - } - if (!destination) return ; - if (!source) return ; - memcpy(destination,source,size) ; -} - -void MMU_VRAMReloadFromLCD(u8 block,u8 VRAMBankCnt) -{ - u8 *destination; - u8 *source; - u32 size; - #if 1 - return ; - #endif - destination = 0; - source = 0; - size = 0; - switch (block) - { - case 0: // Bank A - source = ARM9Mem.ARM9_LCD ; - size = 0x20000 ; - break ; - case 1: // Bank B - source = ARM9Mem.ARM9_LCD + 0x20000 ; - size = 0x20000 ; - break ; - case 2: // Bank C - source = ARM9Mem.ARM9_LCD + 0x40000 ; - size = 0x20000 ; - break ; - case 3: // Bank D - source = ARM9Mem.ARM9_LCD + 0x60000 ; - size = 0x20000 ; - break ; - case 4: // Bank E - source = ARM9Mem.ARM9_LCD + 0x80000 ; - size = 0x10000 ; - break ; - case 5: // Bank F - source = ARM9Mem.ARM9_LCD + 0x90000 ; - size = 0x4000 ; - break ; - case 6: // Bank G - source = ARM9Mem.ARM9_LCD + 0x94000 ; - size = 0x4000 ; - break ; - case 8: // Bank H - source = ARM9Mem.ARM9_LCD + 0x98000 ; - size = 0x8000 ; - break ; - case 9: // Bank I - source = ARM9Mem.ARM9_LCD + 0xA0000 ; - size = 0x4000 ; - break ; - default: - return ; - } - switch (VRAMBankCnt & 7) { - case 0: - /* vram is allready stored at LCD, we dont need to write it back */ - MMU.vScreen = 1; - break ; - case 1: - if (block < 4) - { - /* banks are in use for BG at ABG + ofs * 0x20000 */ - destination = ARM9Mem.ARM9_ABG + ((VRAMBankCnt >> 3) & 3) * 0x20000 ; - } else return ; - break ; - case 2: - switch(block){ - case 0: - case 1: - case 2: - case 3: - /* banks are in use for BG at ABG + ofs * 0x20000 */ - destination = ARM9Mem.ARM9_ABG + ((VRAMBankCnt >> 3) & 3) * 0x20000 ; - break ; - case 4: - /* bank E is in use at ABG */ - destination = ARM9Mem.ARM9_ABG ; - break; - case 5: - case 6: - /* banks are in use for BG at ABG + (0x4000*OFS.0)+(0x10000*OFS.1)*/ - destination = ARM9Mem.ARM9_ABG + (((VRAMBankCnt >> 3) & 1) * 0x4000) + (((VRAMBankCnt >> 2) & 1) * 0x10000) ; - break; - case 8: - /* bank H is in use at BBG */ - destination = ARM9Mem.ARM9_BBG ; - break ; - case 9: - /* bank I is in use at BBG */ - destination = ARM9Mem.ARM9_BBG + 0x8000 ; - break; - default: return ; - } - break ; - case 4: - switch(block){ - case 2: - /* bank C is in use at BBG */ - destination = ARM9Mem.ARM9_BBG ; - break ; - case 3: - /* bank D is in use at BOBJ */ - destination = ARM9Mem.ARM9_BOBJ ; - break ; - default: return ; - } - break ; - default: - return ; - } - if (!destination) return ; - if (!source) return ; - memcpy(destination,source,size) ; +// maps the specified bank to ARM9 at the provided page offset +static inline void MMU_vram_arm9(int bank, int offset) +{ + for (int i = 0; i < vram_bank_info[bank].num_pages; ++i) + vram_arm9_map[i + offset] = vram_bank_info[bank].page_addr + i; } -void MMU_setRom(u8 * rom, u32 mask) +static inline uint8_t *MMU_vram_physical(int page) { - unsigned int i; - MMU.CART_ROM = rom; + return MMU.ARM9_LCD + (page/**ADDRESS_STEP_16KB*/); +} + +// todo - templateize +static inline void MMU_VRAMmapRefreshBank(int bank) +{ + int block = bank; + if (bank >= VRAM_BANK_H) + ++block; + + uint8_t VRAMBankCnt = T1ReadByte(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x240 + block); + + // do nothing if the bank isnt enabled + uint8_t en = VRAMBankCnt & 0x80; + if (!en) + return; - for(i = 0x80; i<0xA0; ++i) + int mst, ofs = 0; + switch (bank) { - MMU_ARM9_MEM_MAP[i] = rom; - MMU_ARM7_MEM_MAP[i] = rom; - MMU_ARM9_MEM_MASK[i] = mask; - MMU_ARM7_MEM_MASK[i] = mask; - } - rom_mask = mask; + case VRAM_BANK_A: + case VRAM_BANK_B: + mst = VRAMBankCnt & 3; + ofs = (VRAMBankCnt >> 3) & 3; + switch (mst) + { + case 0: // LCDC + vramConfiguration.banks[bank].purpose = VramConfiguration::LCDC; + MMU_vram_lcdc(bank); + break; + case 1: // ABG + vramConfiguration.banks[bank].purpose = VramConfiguration::ABG; + MMU_vram_arm9(bank, VRAM_PAGE_ABG + ofs * 8); + break; + case 2: // AOBJ + vramConfiguration.banks[bank].purpose = VramConfiguration::AOBJ; + switch (ofs) + { + case 0: + case 1: + MMU_vram_arm9(bank, VRAM_PAGE_AOBJ + ofs * 8); + } + break; + case 3: // texture + vramConfiguration.banks[bank].purpose = VramConfiguration::TEX; + MMU.texInfo.textureSlotAddr[ofs] = MMU_vram_physical(vram_bank_info[bank].page_addr); + break; + default: + goto unsupported_mst; + } + break; + + case VRAM_BANK_C: + case VRAM_BANK_D: + mst = VRAMBankCnt & 7; + ofs = (VRAMBankCnt >> 3) & 3; + switch (mst) + { + case 0: // LCDC + vramConfiguration.banks[bank].purpose = VramConfiguration::LCDC; + MMU_vram_lcdc(bank); + break; + case 1: // ABG + vramConfiguration.banks[bank].purpose = VramConfiguration::ABG; + MMU_vram_arm9(bank, VRAM_PAGE_ABG + ofs * 8); + break; + case 2: // arm7 + vramConfiguration.banks[bank].purpose = VramConfiguration::ARM7; + if (bank == 2) + T1WriteByte(MMU.MMU_MEM[ARMCPU_ARM7][0x40], 0x240, T1ReadByte(MMU.MMU_MEM[ARMCPU_ARM7][0x40], 0x240) | 1); + if (bank == 3) + T1WriteByte(MMU.MMU_MEM[ARMCPU_ARM7][0x40], 0x240, T1ReadByte(MMU.MMU_MEM[ARMCPU_ARM7][0x40], 0x240) | 2); + switch (ofs) + { + case 0: + case 1: + vram_arm7_map[ofs] = vram_bank_info[bank].page_addr; + } + break; + case 3: // texture + vramConfiguration.banks[bank].purpose = VramConfiguration::TEX; + MMU.texInfo.textureSlotAddr[ofs] = MMU_vram_physical(vram_bank_info[bank].page_addr); + break; + case 4: // BGB or BOBJ + if (bank == VRAM_BANK_C) + { + vramConfiguration.banks[bank].purpose = VramConfiguration::BBG; + MMU_vram_arm9(bank, VRAM_PAGE_BBG); // BBG + } + else + { + vramConfiguration.banks[bank].purpose = VramConfiguration::BOBJ; + MMU_vram_arm9(bank, VRAM_PAGE_BOBJ); // BOBJ + } + break; + default: + goto unsupported_mst; + } + break; + + case VRAM_BANK_E: + mst = VRAMBankCnt & 7; + switch (mst) + { + case 0: // LCDC + vramConfiguration.banks[bank].purpose = VramConfiguration::LCDC; + MMU_vram_lcdc(bank); + break; + case 1: // ABG + vramConfiguration.banks[bank].purpose = VramConfiguration::ABG; + MMU_vram_arm9(bank, VRAM_PAGE_ABG); + break; + case 2: // AOBJ + vramConfiguration.banks[bank].purpose = VramConfiguration::AOBJ; + MMU_vram_arm9(bank, VRAM_PAGE_AOBJ); + break; + case 3: // texture palette + vramConfiguration.banks[bank].purpose = VramConfiguration::TEXPAL; + MMU.texInfo.texPalSlot[0] = MMU_vram_physical(vram_bank_info[bank].page_addr); + MMU.texInfo.texPalSlot[1] = MMU_vram_physical(vram_bank_info[bank].page_addr + 1); + MMU.texInfo.texPalSlot[2] = MMU_vram_physical(vram_bank_info[bank].page_addr + 2); + MMU.texInfo.texPalSlot[3] = MMU_vram_physical(vram_bank_info[bank].page_addr + 3); + break; + case 4: // ABG extended palette + vramConfiguration.banks[bank].purpose = VramConfiguration::ABGEXTPAL; + MMU.ExtPal[0][0] = MMU_vram_physical(vram_bank_info[bank].page_addr); + MMU.ExtPal[0][1] = MMU.ExtPal[0][0]/* + ADDRESS_STEP_8KB*/; + MMU.ExtPal[0][2] = MMU.ExtPal[0][1]/* + ADDRESS_STEP_8KB*/; + MMU.ExtPal[0][3] = MMU.ExtPal[0][2]/* + ADDRESS_STEP_8KB*/; + break; + default: + goto unsupported_mst; + } + break; + + case VRAM_BANK_F: + case VRAM_BANK_G: + { + mst = VRAMBankCnt & 7; + ofs = (VRAMBankCnt >> 3) & 3; + const int pageofslut[] = {0, 1, 4, 5}; + int pageofs = pageofslut[ofs]; + switch (mst) + { + case 0: // LCDC + vramConfiguration.banks[bank].purpose = VramConfiguration::LCDC; + MMU_vram_lcdc(bank); + break; + case 1: // ABG + vramConfiguration.banks[bank].purpose = VramConfiguration::ABG; + MMU_vram_arm9(bank, VRAM_PAGE_ABG + pageofs); + MMU_vram_arm9(bank, VRAM_PAGE_ABG + pageofs + 2); // unexpected mirroring (required by spyro eternal night) + break; + case 2: // AOBJ + vramConfiguration.banks[bank].purpose = VramConfiguration::AOBJ; + MMU_vram_arm9(bank, VRAM_PAGE_AOBJ + pageofs); + MMU_vram_arm9(bank, VRAM_PAGE_AOBJ + pageofs + 2); // unexpected mirroring - I have no proof, but it is inferred from the ABG above + break; + case 3: // texture palette + vramConfiguration.banks[bank].purpose = VramConfiguration::TEXPAL; + MMU.texInfo.texPalSlot[pageofs] = MMU_vram_physical(vram_bank_info[bank].page_addr); + break; + case 4: // ABG extended palette + switch (ofs) + { + case 0: + case 1: + vramConfiguration.banks[bank].purpose = VramConfiguration::ABGEXTPAL; + MMU.ExtPal[0][ofs * 2] = MMU_vram_physical(vram_bank_info[bank].page_addr); + MMU.ExtPal[0][ofs * 2 + 1] = MMU.ExtPal[0][ofs * 2]/* + ADDRESS_STEP_8KB*/; + break; + default: + vramConfiguration.banks[bank].purpose = VramConfiguration::INVALID; + } + break; + case 5: // AOBJ extended palette + vramConfiguration.banks[bank].purpose = VramConfiguration::AOBJEXTPAL; + MMU.ObjExtPal[0][0] = MMU_vram_physical(vram_bank_info[bank].page_addr); + MMU.ObjExtPal[0][1] = MMU.ObjExtPal[0][1]/* + ADDRESS_STEP_8KB*/; + break; + default: + goto unsupported_mst; + } + break; + } + + case VRAM_BANK_H: + mst = VRAMBankCnt & 3; + switch (mst) + { + case 0: // LCDC + vramConfiguration.banks[bank].purpose = VramConfiguration::LCDC; + MMU_vram_lcdc(bank); + break; + case 1: // BBG + vramConfiguration.banks[bank].purpose = VramConfiguration::BBG; + MMU_vram_arm9(bank, VRAM_PAGE_BBG); + MMU_vram_arm9(bank, VRAM_PAGE_BBG + 4); // unexpected mirroring + break; + case 2: // BBG extended palette + vramConfiguration.banks[bank].purpose = VramConfiguration::BBGEXTPAL; + MMU.ExtPal[1][0] = MMU_vram_physical(vram_bank_info[bank].page_addr); + MMU.ExtPal[1][1] = MMU.ExtPal[1][0]/* + ADDRESS_STEP_8KB*/; + MMU.ExtPal[1][2] = MMU.ExtPal[1][1]/* + ADDRESS_STEP_8KB*/; + MMU.ExtPal[1][3] = MMU.ExtPal[1][2]/* + ADDRESS_STEP_8KB*/; + break; + default: + goto unsupported_mst; + } + break; + + case VRAM_BANK_I: + mst = VRAMBankCnt & 3; + switch (mst) + { + case 0: // LCDC + vramConfiguration.banks[bank].purpose = VramConfiguration::LCDC; + MMU_vram_lcdc(bank); + break; + case 1: // BBG + vramConfiguration.banks[bank].purpose = VramConfiguration::BBG; + MMU_vram_arm9(bank, VRAM_PAGE_BBG + 2); + MMU_vram_arm9(bank, VRAM_PAGE_BBG + 3); // unexpected mirroring + break; + case 2: // BOBJ + vramConfiguration.banks[bank].purpose = VramConfiguration::BOBJ; + MMU_vram_arm9(bank, VRAM_PAGE_BOBJ); + MMU_vram_arm9(bank, VRAM_PAGE_BOBJ + 1); // FF3 end scene (lens flare sprite) needs this as it renders a sprite off the end of the 16KB and back around + break; + case 3: // BOBJ extended palette + vramConfiguration.banks[bank].purpose = VramConfiguration::BOBJEXTPAL; + MMU.ObjExtPal[1][0] = MMU_vram_physical(vram_bank_info[bank].page_addr); + MMU.ObjExtPal[1][1] = MMU.ObjExtPal[1][1]/* + ADDRESS_STEP_8KB*/; + break; + default: + goto unsupported_mst; + } + break; + } // switch(bank) + + vramConfiguration.banks[bank].ofs = ofs; + + return; + +unsupported_mst: + vramConfiguration.banks[bank].purpose = VramConfiguration::INVALID; } -void MMU_unsetRom() +void MMU_VRAM_unmap_all() { - unsigned int i; - MMU.CART_ROM=MMU.UNUSED_RAM; + vramConfiguration.clear(); + + vram_arm7_map[0] = VRAM_PAGE_UNMAPPED; + vram_arm7_map[1] = VRAM_PAGE_UNMAPPED; - for(i = 0x80; i<0xA0; ++i) + for (unsigned i = 0; i < VRAM_LCDC_PAGES; ++i) + vram_lcdc_map[i] = VRAM_PAGE_UNMAPPED; + for (int i = 0; i < VRAM_ARM9_PAGES; ++i) + vram_arm9_map[i] = VRAM_PAGE_UNMAPPED; + + for (int i = 0; i < 4; ++i) { - MMU_ARM9_MEM_MAP[i] = MMU.UNUSED_RAM; - MMU_ARM7_MEM_MAP[i] = MMU.UNUSED_RAM; - MMU_ARM9_MEM_MASK[i] = ROM_MASK; - MMU_ARM7_MEM_MASK[i] = ROM_MASK; + MMU.ExtPal[0][i] = MMU.blank_memory; + MMU.ExtPal[1][i] = MMU.blank_memory; } - rom_mask = ROM_MASK; + + MMU.ObjExtPal[0][0] = MMU.blank_memory; + MMU.ObjExtPal[0][1] = MMU.blank_memory; + MMU.ObjExtPal[1][0] = MMU.blank_memory; + MMU.ObjExtPal[1][1] = MMU.blank_memory; + + for (int i = 0; i < 6; ++i) + MMU.texInfo.texPalSlot[i] = MMU.blank_memory; + + for (int i = 0; i < 4; ++i) + MMU.texInfo.textureSlotAddr[i] = MMU.blank_memory; } -char txt[80]; -u8 FASTCALL MMU_read8(u32 proc, u32 adr) +static inline void MMU_VRAMmapControl(uint8_t block, uint8_t VRAMBankCnt) { -#ifdef INTERNAL_DTCM_READ - if((proc==ARMCPU_ARM9)&((adr&(~0x3FFF))==MMU.DTCMRegion)) + // handle WRAM, first of all + if (block == 7) { - return ARM9Mem.ARM9_DTCM[adr&0x3FFF]; + MMU.WRAMCNT = VRAMBankCnt & 3; + return; } -#endif - // CFlash reading, Mic - if ((adr>=0x9000000)&&(adr<0x9900000)) - return (unsigned char)cflash_read(adr); - -#ifdef EXPERIMENTAL_WIFI - /* wifi mac access */ - if ((proc==ARMCPU_ARM7) && (adr>=0x04800000)&&(adr<0x05000000)) - { - if (adr & 1) - return (WIFI_read16(&wifiMac,adr) >> 8) & 0xFF; - else - return WIFI_read16(&wifiMac,adr) & 0xFF; + // first, save the texture info so we can check it for changes and trigger purges of the texcache + //MMU_struct::TextureInfo oldTexInfo = MMU.texInfo; + + // unmap everything + MMU_VRAM_unmap_all(); + + // unmap VRAM_BANK_C and VRAM_BANK_D from arm7. theyll get mapped again in a moment if necessary + T1WriteByte(MMU.MMU_MEM[ARMCPU_ARM7][0x40], 0x240, 0); + + // write the new value to the reg + T1WriteByte(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x240 + block, VRAMBankCnt); + + // refresh all bank settings + // zero XX-XX-200X (long before jun 2012) + // these are enumerated so that we can tune the order they get applied + // in order to emulate prioritization rules for memory regions + // with multiple banks mapped. + // We're probably still not mapping things 100% correctly, but this helped us get closer: + // goblet of fire "care of magical creatures" maps I and D to BOBJ (the I is an accident) + // and requires A to override it. + // This may create other bugs.... + MMU_VRAMmapRefreshBank(VRAM_BANK_I); + MMU_VRAMmapRefreshBank(VRAM_BANK_H); + MMU_VRAMmapRefreshBank(VRAM_BANK_G); + MMU_VRAMmapRefreshBank(VRAM_BANK_F); + MMU_VRAMmapRefreshBank(VRAM_BANK_E); + // zero 21-jun-2012 + // tomwi's streaming music demo sets A and D to ABG (the A is an accident). + // in this case, D should get priority. + // this is somewhat risky. will it break other things? + MMU_VRAMmapRefreshBank(VRAM_BANK_A); + MMU_VRAMmapRefreshBank(VRAM_BANK_B); + MMU_VRAMmapRefreshBank(VRAM_BANK_C); + MMU_VRAMmapRefreshBank(VRAM_BANK_D); + + //fprintf(stderr, vramConfiguration.describe().c_str()); + //fprintf(stderr, "vram remapped at vcount=%d\n",nds.VCount); + + // ------------------------------- + // set up arm9 mirrorings + // these are probably not entirely accurate. more study will be necessary. + // in general, we find that it is not uncommon at all for games to accidentally do this. + // + // being able to easily do these experiments was one of the primary motivations for this remake of the vram mapping system + + // see the "unexpected mirroring" comments above for some more mirroring + // so far "unexpected mirrorings" are tested by combining these games: + // despereaux - storybook subtitles + // NSMB - world map sub screen + // drill spirits EU - mission select (just for control purposes, as it doesnt use H or I) + // ... + // note that the "unexpected mirroring" items above may at some point rely on being executed in a certain order. + // (sequentially A..I) + + const int types[] = { VRAM_PAGE_ABG, VRAM_PAGE_BBG, VRAM_PAGE_AOBJ, VRAM_PAGE_BOBJ }; + const int sizes[] = {32, 8, 16, 8}; + for (int t = 0; t < 4; ++t) + { + // the idea here is to pad out the mirrored space with copies of the mappable area, + // without respect to what is mapped within that mappable area. + // we hope that this is correct in all cases + // required for driller spirits in mission select (mapping is simple A,B,C,D to each purpose) + int size = sizes[t]; + int mask = size - 1; + int type = types[t]; + for (int i = size; i < 128; ++i) + { + int page = type + i; + vram_arm9_map[page] = vram_arm9_map[type + (i & mask)]; + } } -#endif +} + +////////////////////////////////////////////////////////////// +//end vram +////////////////////////////////////////////////////////////// + +void MMU_Init() +{ + memset((void*)&MMU, 0, sizeof(MMU_struct)); + + MMU.CART_ROM = MMU.UNUSED_RAM; + + // even though apps may change dtcm immediately upon startup, this is the correct hardware starting value: + MMU.DTCMRegion = 0x08000000; + MMU.ITCMRegion = 0x00000000; + + IPC_FIFOinit(ARMCPU_ARM9); + IPC_FIFOinit(ARMCPU_ARM7); + new(&MMU_new) MMU_struct_new; + + mc_init(&MMU.fw, MC_TYPE_FLASH); /* init fw device */ + mc_alloc(&MMU.fw, NDS_FW_SIZE_V1); + MMU.fw.fp = nullptr; + MMU.fw.isFirmware = true; +} + +void MMU_DeInit() +{ + mc_free(&MMU.fw); +} - return MMU.MMU_MEM[proc][(adr>>20)&0xFF][adr&MMU.MMU_MASK[proc][(adr>>20)&0xFF]]; +void MMU_Reset() +{ + memset(MMU.ARM9_DTCM, 0, sizeof(MMU.ARM9_DTCM)); + memset(MMU.ARM9_ITCM, 0, sizeof(MMU.ARM9_ITCM)); + memset(MMU.ARM9_LCD, 0, sizeof(MMU.ARM9_LCD)); + memset(MMU.ARM9_OAM, 0, sizeof(MMU.ARM9_OAM)); + memset(MMU.ARM9_REG, 0, sizeof(MMU.ARM9_REG)); + memset(MMU.ARM9_VMEM, 0, sizeof(MMU.ARM9_VMEM)); + memset(MMU.MAIN_MEM, 0, sizeof(MMU.MAIN_MEM)); + + memset(MMU.blank_memory, 0, sizeof(MMU.blank_memory)); + memset(MMU.UNUSED_RAM, 0, sizeof(MMU.UNUSED_RAM)); + memset(MMU.MORE_UNUSED_RAM, 0, sizeof(MMU.UNUSED_RAM)); + + memset(MMU.ARM7_ERAM, 0, sizeof(MMU.ARM7_ERAM)); + memset(MMU.ARM7_REG, 0, sizeof(MMU.ARM7_REG)); + memset(MMU.ARM7_WIRAM, 0, sizeof(MMU.ARM7_WIRAM)); + memset(MMU.SWIRAM, 0, sizeof(MMU.SWIRAM)); + + IPC_FIFOinit(ARMCPU_ARM9); + IPC_FIFOinit(ARMCPU_ARM7); + + MMU.DTCMRegion = 0x027C0000; + MMU.ITCMRegion = 0x00000000; + + memset(MMU.timer, 0, sizeof(uint16_t) * 8); + memset(MMU.timerMODE, 0, sizeof(int32_t) * 8); + memset(MMU.timerON, 0, sizeof(uint32_t) * 8); + memset(MMU.timerRUN, 0, sizeof(uint32_t) * 8); + memset(MMU.timerReload, 0, sizeof(uint16_t) * 8); + + memset(MMU.reg_IME, 0, sizeof(uint32_t) * 2); + memset(MMU.reg_IE, 0, sizeof(uint32_t) * 2); + memset(MMU.reg_IF_bits, 0, sizeof(uint32_t) * 2); + memset(MMU.reg_IF_pending, 0, sizeof(uint32_t) * 2); + + memset(MMU.dscard, 0, sizeof(nds_dscard) * 2); + + MMU.divRunning = 0; + MMU.divResult = 0; + MMU.divMod = 0; + MMU.divCycles = 0; + + MMU.sqrtRunning = 0; + MMU.sqrtResult = 0; + MMU.sqrtCycles = 0; + + MMU.SPI_CNT = 0; + MMU.AUX_SPI_CNT = 0; + + MMU.WRAMCNT = 0; + + // Enable the sound speakers + T1WriteWord(MMU.ARM7_REG, 0x304, 0x0001); + + MMU_VRAM_unmap_all(); + + MMU.powerMan_CntReg = 0x00; + MMU.powerMan_CntRegWritten = false; + MMU.powerMan_Reg[0] = 0x0B; + MMU.powerMan_Reg[1] = 0x00; + MMU.powerMan_Reg[2] = 0x01; + MMU.powerMan_Reg[3] = 0x00; + + partie = 1; + + memset(MMU.dscard[ARMCPU_ARM9].command, 0, 8); + MMU.dscard[ARMCPU_ARM9].address = 0; + MMU.dscard[ARMCPU_ARM9].transfer_count = 0; + MMU.dscard[ARMCPU_ARM9].mode = CardMode_Normal; + + memset(MMU.dscard[ARMCPU_ARM7].command, 0, 8); + MMU.dscard[ARMCPU_ARM7].address = 0; + MMU.dscard[ARMCPU_ARM7].transfer_count = 0; + MMU.dscard[ARMCPU_ARM7].mode = CardMode_Normal; + + // HACK!!! + // until we improve all our session tracking stuff, we need to save the backup memory filename + std::string bleh = MMU_new.backupDevice.getFilename(); + BackupDevice tempBackupDevice; + reconstruct(&MMU_new); + MMU_new.backupDevice.load_rom(bleh); + + MMU_timing.arm7codeFetch.Reset(); + MMU_timing.arm7dataFetch.Reset(); + MMU_timing.arm9codeFetch.Reset(); + MMU_timing.arm9dataFetch.Reset(); + MMU_timing.arm9codeCache.Reset(); + MMU_timing.arm9dataCache.Reset(); } +void SetupMMU(bool debugConsole, bool dsi) +{ + if (debugConsole) + _MMU_MAIN_MEM_MASK = 0x7FFFFF; + else + _MMU_MAIN_MEM_MASK = 0x3FFFFF; + if (dsi) + _MMU_MAIN_MEM_MASK = 0xFFFFFF; + _MMU_MAIN_MEM_MASK16 = _MMU_MAIN_MEM_MASK & ~1; + _MMU_MAIN_MEM_MASK32 = _MMU_MAIN_MEM_MASK & ~3; +} + +void MMU_setRom(uint8_t *rom, uint32_t) +{ + MMU.CART_ROM = rom; +} +void MMU_unsetRom() +{ + MMU.CART_ROM = MMU.UNUSED_RAM; +} -u16 FASTCALL MMU_read16(u32 proc, u32 adr) +static void execsqrt() { -#ifdef INTERNAL_DTCM_READ - if((proc == ARMCPU_ARM9) && ((adr & ~0x3FFF) == MMU.DTCMRegion)) + uint32_t ret; + uint8_t mode = MMU_new.sqrt.mode; + MMU_new.sqrt.busy = 1; + + if (mode) { - /* Returns data from DTCM (ARM9 only) */ - return T1ReadWord(ARM9Mem.ARM9_DTCM, adr & 0x3FFF); + uint64_t v = T1ReadQuad(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x2B8); + ret = isqrt(v) & 0xFFFFFFFF; + } + else + { + uint32_t v = T1ReadLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x2B8); + ret = isqrt(v) & 0xFFFFFFFF; } -#endif - // CFlash reading, Mic - if ((adr>=0x08800000)&&(adr<0x09900000)) - return (unsigned short)cflash_read(adr); - -#ifdef EXPERIMENTAL_WIFI - /* wifi mac access */ - if ((proc==ARMCPU_ARM7) && (adr>=0x04800000)&&(adr<0x05000000)) - return WIFI_read16(&wifiMac,adr) ; -#endif + // clear the result while the sqrt unit is busy + // todo - is this right? is it reasonable? + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x2B4, 0); - adr &= 0x0FFFFFFF; + MMU.sqrtCycles = nds_timer + 26; + MMU.sqrtResult = ret; + MMU.sqrtRunning = true; + NDS_Reschedule(); +} + +static void execdiv() +{ + int64_t num, den; + int64_t res, mod; + uint8_t mode = MMU_new.div.mode; + MMU_new.div.busy = 1; + MMU_new.div.div0 = 0; + + switch (mode) + { + case 0: // 32/32 + num = T1ReadLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x290); + den = T1ReadLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x298); + MMU.divCycles = nds_timer + 36; + break; + case 1: // 64/32 + case 3: // gbatek says this is same as mode 1 + num = T1ReadQuad(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x290); + den = T1ReadLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x298); + MMU.divCycles = nds_timer + 68; + break; + case 2: // 64/64 + default: + num = T1ReadQuad(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x290); + den = T1ReadQuad(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x298); + MMU.divCycles = nds_timer + 68; + } - if(adr&0x04000000) + if (!den) { - /* Adress is an IO register */ - switch(adr) - { + res = num < 0 ? 1 : -1; + mod = num; -#if VIO2SF_GPU_ENABLE - case 0x04000604: - return (gpu3D->NDS_3D_GetNumPolys()&2047); - case 0x04000606: - return (gpu3D->NDS_3D_GetNumVertex()&8191); -#endif + // the DIV0 flag in DIVCNT is set only if the full 64bit DIV_DENOM value is zero, even in 32bit mode + if (!T1ReadQuad(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x298)) + MMU_new.div.div0 = 1; + } + else + { + res = num / den; + mod = num % den; + } - case REG_IPCFIFORECV : /* TODO (clear): ??? */ - execute = false; - return 1; + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x2A0, 0); + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x2A4, 0); + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x2A8, 0); + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x2AC, 0); - case REG_IME : - return (u16)MMU.reg_IME[proc]; + MMU.divResult = res; + MMU.divMod = mod; + MMU.divRunning = true; + NDS_Reschedule(); +} - case REG_IE : - return (u16)MMU.reg_IE[proc]; - case REG_IE + 2 : - return (u16)(MMU.reg_IE[proc]>>16); - - case REG_IF : - return (u16)MMU.reg_IF[proc]; - case REG_IF + 2 : - return (u16)(MMU.reg_IF[proc]>>16); - - case REG_TM0CNTL : - case REG_TM1CNTL : - case REG_TM2CNTL : - case REG_TM3CNTL : - return MMU.timer[proc][(adr&0xF)>>2]; - - case 0x04000630 : - LOG("vect res\r\n"); /* TODO (clear): ??? */ - //execute = false; - return 0; - case REG_POSTFLG : - return 1; - default : - break; - } - } +DSI_TSC::DSI_TSC() +{ + for (unsigned i = 0; i < ARRAY_SIZE(this->registers); ++i) + this->registers[i] = 0x00; + this->reset_command(); +} - /* Returns data from memory */ - return T1ReadWord(MMU.MMU_MEM[proc][(adr >> 20) & 0xFF], adr & MMU.MMU_MASK[proc][(adr >> 20) & 0xFF]); +void DSI_TSC::reset_command() +{ + this->state = 0; + this->readcount = 0; + this->read_flag = 1; } -u32 FASTCALL MMU_read32(u32 proc, u32 adr) +uint16_t DSI_TSC::write16(uint16_t val) { -#ifdef INTERNAL_DTCM_READ - if((proc == ARMCPU_ARM9) && ((adr & ~0x3FFF) == MMU.DTCMRegion)) + uint16_t ret; + switch (state) { - /* Returns data from DTCM (ARM9 only) */ - return T1ReadLong(ARM9Mem.ARM9_DTCM, adr & 0x3FFF); + case 0: + this->reg_selection = (val >> 1) & 0x7F; + this->read_flag = val & 1; + this->state = 1; + return this->read16(); + case 1: + if (!this->read_flag) + this->registers[this->reg_selection] = val & 0xFF; + ret = this->read16(); + ++this->reg_selection; + this->reg_selection &= 0x7F; + return ret; } -#endif - - // CFlash reading, Mic - if ((adr>=0x9000000)&&(adr<0x9900000)) - return (unsigned long)cflash_read(adr); - - adr &= 0x0FFFFFFF; + return 0; +} - if((adr >> 24) == 4) +uint16_t DSI_TSC::read16() +{ + uint8_t page = registers[0]; + switch (page) { - /* Adress is an IO register */ - switch(adr) - { - // This is hacked due to the only current 3D core - case 0x04000600: - { - u32 fifonum = IPCFIFO+proc; - - u32 gxstat = (MMU.fifos[fifonum].empty<<26) | - (1<<25) | - (MMU.fifos[fifonum].full<<24) | - /*((NDS_nbpush[0]&1)<<13) | ((NDS_nbpush[2]&0x1F)<<8) |*/ - 2; - - LOG ("GXSTAT: 0x%X", gxstat); - - return gxstat; - } - - case 0x04000640: - case 0x04000644: - case 0x04000648: - case 0x0400064C: - case 0x04000650: - case 0x04000654: - case 0x04000658: - case 0x0400065C: - case 0x04000660: - case 0x04000664: - case 0x04000668: - case 0x0400066C: - case 0x04000670: - case 0x04000674: - case 0x04000678: - case 0x0400067C: - { - //LOG("4000640h..67Fh - CLIPMTX_RESULT - Read Current Clip Coordinates Matrix (R)"); -#if VIO2SF_GPU_ENABLE - return gpu3D->NDS_3D_GetClipMatrix ((adr-0x04000640)/4); -#else - return 0; -#endif - } - case 0x04000680: - case 0x04000684: - case 0x04000688: - case 0x0400068C: - case 0x04000690: - case 0x04000694: - case 0x04000698: - case 0x0400069C: - case 0x040006A0: - { -#if VIO2SF_GPU_ENABLE - //LOG("4000680h..6A3h - VECMTX_RESULT - Read Current Directional Vector Matrix (R)"); - return gpu3D->NDS_3D_GetDirectionalMatrix ((adr-0x04000680)/4); -#else - return 0; -#endif - } - - case 0x4000604: + case 3: // page 3 + switch (this->reg_selection) { -#if VIO2SF_GPU_ENABLE - return (gpu3D->NDS_3D_GetNumPolys()&2047) & ((gpu3D->NDS_3D_GetNumVertex()&8191) << 16); - //LOG ("read32 - RAM_COUNT -> 0x%X", ((u32 *)(MMU.MMU_MEM[proc][(adr>>20)&0xFF]))[(adr&MMU.MMU_MASK[proc][(adr>>20)&0xFF])>>2]); -#else - return 0; -#endif + case 9: + return 0x40; + case 14: + return 0x02; } + } // switch(page) - case REG_IME : - return MMU.reg_IME[proc]; - case REG_IE : - return MMU.reg_IE[proc]; - case REG_IF : - return MMU.reg_IF[proc]; - case REG_IPCFIFORECV : - { - u16 IPCFIFO_CNT = T1ReadWord(MMU.MMU_MEM[proc][0x40], 0x184); - if(IPCFIFO_CNT&0x8000) - { - //execute = false; - u32 fifonum = IPCFIFO+proc; - u32 val = FIFOValue(MMU.fifos + fifonum); - u32 remote = (proc+1) & 1; - u16 IPCFIFO_CNT_remote = T1ReadWord(MMU.MMU_MEM[remote][0x40], 0x184); - IPCFIFO_CNT |= (MMU.fifos[fifonum].empty<<8) | (MMU.fifos[fifonum].full<<9) | (MMU.fifos[fifonum].error<<14); - IPCFIFO_CNT_remote |= (MMU.fifos[fifonum].empty) | (MMU.fifos[fifonum].full<<1); - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x184, IPCFIFO_CNT); - T1WriteWord(MMU.MMU_MEM[remote][0x40], 0x184, IPCFIFO_CNT_remote); - if ((MMU.fifos[fifonum].empty) && (IPCFIFO_CNT & BIT(2))) - NDS_makeInt(remote,17) ; /* remote: SEND FIFO EMPTY */ - return val; - } - } - return 0; - case REG_TM0CNTL : - case REG_TM1CNTL : - case REG_TM2CNTL : - case REG_TM3CNTL : - { - u32 val = T1ReadWord(MMU.MMU_MEM[proc][0x40], (adr + 2) & 0xFFF); - return MMU.timer[proc][(adr&0xF)>>2] | (val<<16); - } - /* - case 0x04000640 : // TODO (clear): again, ??? - LOG("read proj\r\n"); - return 0; - case 0x04000680 : - LOG("read roat\r\n"); - return 0; - case 0x04000620 : - LOG("point res\r\n"); - return 0; - */ - case REG_GCDATAIN: - { - u32 val; + // unknown page or register + return 0xFF; +} - if(!MMU.dscard[proc].adress) return 0; +// TODO: +// NAND flash support (used in Made in Ore/WarioWare D.I.Y.) +void FASTCALL MMU_writeToGCControl(int PROCNUM, uint32_t val) +{ + int TEST_PROCNUM = PROCNUM; + nds_dscard &card = MMU.dscard[TEST_PROCNUM]; - val = T1ReadLong(MMU.CART_ROM, MMU.dscard[proc].adress); + memcpy(&card.command[0], &MMU.MMU_MEM[TEST_PROCNUM][0x40][0x1A8], 8); - MMU.dscard[proc].adress += 4; /* increment adress */ + card.blocklen = 0; + slot1_device.write32(PROCNUM, 0xFFFFFFFF, val); // Special case for some flashcarts + if (card.blocklen == 0x01020304) + return; - MMU.dscard[proc].transfer_count--; /* update transfer counter */ - if(MMU.dscard[proc].transfer_count) /* if transfer is not ended */ - { - return val; /* return data */ - } - else /* transfer is done */ - { - T1WriteLong(MMU.MMU_MEM[proc][(REG_GCROMCTRL >> 20) & 0xff], REG_GCROMCTRL & 0xfff, T1ReadLong(MMU.MMU_MEM[proc][(REG_GCROMCTRL >> 20) & 0xff], REG_GCROMCTRL & 0xfff) & ~(0x00800000 | 0x80000000)); - /* = 0x7f7fffff */ + if (!(val & 0x80000000)) + { + card.address = 0; + card.transfer_count = 0; - /* if needed, throw irq for the end of transfer */ - if(T1ReadWord(MMU.MMU_MEM[proc][(REG_AUXSPICNT >> 20) & 0xff], REG_AUXSPICNT & 0xfff) & 0x4000) - { - if(proc == ARMCPU_ARM7) NDS_makeARM7Int(19); - else NDS_makeARM9Int(19); - } + val &= 0x7F7FFFFF; + T1WriteLong(MMU.MMU_MEM[TEST_PROCNUM][0x40], 0x1A4, val); + return; + } - return val; - } - } + uint32_t shift = (val >> 24) & 7; + if (shift == 7) + card.transfer_count = 1; + else if (!shift) + card.transfer_count = 0; + else + card.transfer_count = (0x100 << shift) / 4; - default : - break; - } - } + switch (card.mode) + { + case CardMode_Normal: + break; - /* Returns data from memory */ - return T1ReadLong(MMU.MMU_MEM[proc][(adr >> 20) & 0xFF], adr & MMU.MMU_MASK[proc][(adr >> 20) & 0xFF]); -} + case CardMode_KEY1: + // TODO + //INFO("Cartridge: KEY1 mode unsupported.\n"); -void FASTCALL MMU_write8(u32 proc, u32 adr, u8 val) -{ -#ifdef INTERNAL_DTCM_WRITE - if((proc == ARMCPU_ARM9) && ((adr & ~0x3FFF) == MMU.DTCMRegion)) + card.address = 0; + card.transfer_count = 0; + + val &= 0x7F7FFFFF; + T1WriteLong(MMU.MMU_MEM[TEST_PROCNUM][0x40], 0x1A4, val); + return; + case CardMode_KEY2: + //INFO("Cartridge: KEY2 mode unsupported.\n"); + break; + } + + switch (card.command[0]) { - /* Writes data in DTCM (ARM9 only) */ - ARM9Mem.ARM9_DTCM[adr&0x3FFF] = val; - return ; + case 0x9F: // Dummy + card.address = 0; + card.transfer_count = 0x800; + break; + + case 0x3C: // Switch to KEY1 mode + card.mode = CardMode_KEY1; + break; + + default: + // fall through to the special slot1 handler + slot1_device.write32(TEST_PROCNUM, REG_GCROMCTRL, val); } -#endif - // CFlash writing, Mic - if ((adr>=0x9000000)&&(adr<0x9900000)) { - cflash_write(adr,val); + if (!card.transfer_count) + { + val &= 0x7F7FFFFF; + T1WriteLong(MMU.MMU_MEM[TEST_PROCNUM][0x40], 0x1A4, val); return; } - adr &= 0x0FFFFFFF; + val |= 0x00800000; + T1WriteLong(MMU.MMU_MEM[TEST_PROCNUM][0x40], 0x1A4, val); - // This is bad, remove it - if(proc == ARMCPU_ARM7) - { - if ((adr>=0x04000400)&&(adr<0x0400051D)) - { - SPU_WriteByte(adr, val); - return; - } - } + // Launch DMA if start flag was set to "DS Cart" + //fprintf(stderr, "triggering card dma\n"); + triggerDma(EDMAMode_Card); +} - if ((adr & 0xFF800000) == 0x04800000) - { - /* is wifi hardware, dont intermix with regular hardware registers */ - /* FIXME handle 8 bit writes */ - return ; - } +uint32_t MMU_readFromGC(int PROCNUM) +{ + int TEST_PROCNUM = PROCNUM; - switch(adr) + nds_dscard& card = MMU.dscard[TEST_PROCNUM]; + uint32_t val = 0; + + if (!card.transfer_count) + return 0; + + switch (card.command[0]) { - case REG_DISPA_WIN0H: - if(proc == ARMCPU_ARM9) GPU_setWIN0_H1 (MainScreen.gpu, val); - break ; - case REG_DISPA_WIN0H+1: - if(proc == ARMCPU_ARM9) GPU_setWIN0_H0 (MainScreen.gpu, val); - break ; - case REG_DISPA_WIN1H: - if(proc == ARMCPU_ARM9) GPU_setWIN1_H1 (MainScreen.gpu,val); - break ; - case REG_DISPA_WIN1H+1: - if(proc == ARMCPU_ARM9) GPU_setWIN1_H0 (MainScreen.gpu,val); - break ; - - case REG_DISPB_WIN0H: - if(proc == ARMCPU_ARM9) GPU_setWIN0_H1(SubScreen.gpu,val); - break ; - case REG_DISPB_WIN0H+1: - if(proc == ARMCPU_ARM9) GPU_setWIN0_H0(SubScreen.gpu,val); - break ; - case REG_DISPB_WIN1H: - if(proc == ARMCPU_ARM9) GPU_setWIN1_H1(SubScreen.gpu,val); - break ; - case REG_DISPB_WIN1H+1: - if(proc == ARMCPU_ARM9) GPU_setWIN1_H0(SubScreen.gpu,val); - break ; - - case REG_DISPA_WIN0V: - if(proc == ARMCPU_ARM9) GPU_setWIN0_V1(MainScreen.gpu,val) ; - break ; - case REG_DISPA_WIN0V+1: - if(proc == ARMCPU_ARM9) GPU_setWIN0_V0(MainScreen.gpu,val) ; - break ; - case REG_DISPA_WIN1V: - if(proc == ARMCPU_ARM9) GPU_setWIN1_V1(MainScreen.gpu,val) ; - break ; - case REG_DISPA_WIN1V+1: - if(proc == ARMCPU_ARM9) GPU_setWIN1_V0(MainScreen.gpu,val) ; - break ; - - case REG_DISPB_WIN0V: - if(proc == ARMCPU_ARM9) GPU_setWIN0_V1(SubScreen.gpu,val) ; - break ; - case REG_DISPB_WIN0V+1: - if(proc == ARMCPU_ARM9) GPU_setWIN0_V0(SubScreen.gpu,val) ; - break ; - case REG_DISPB_WIN1V: - if(proc == ARMCPU_ARM9) GPU_setWIN1_V1(SubScreen.gpu,val) ; - break ; - case REG_DISPB_WIN1V+1: - if(proc == ARMCPU_ARM9) GPU_setWIN1_V0(SubScreen.gpu,val) ; - break ; - - case REG_DISPA_WININ: - if(proc == ARMCPU_ARM9) GPU_setWININ0(MainScreen.gpu,val) ; - break ; - case REG_DISPA_WININ+1: - if(proc == ARMCPU_ARM9) GPU_setWININ1(MainScreen.gpu,val) ; - break ; - case REG_DISPA_WINOUT: - if(proc == ARMCPU_ARM9) GPU_setWINOUT(MainScreen.gpu,val) ; - break ; - case REG_DISPA_WINOUT+1: - if(proc == ARMCPU_ARM9) GPU_setWINOBJ(MainScreen.gpu,val); - break ; - - case REG_DISPB_WININ: - if(proc == ARMCPU_ARM9) GPU_setWININ0(SubScreen.gpu,val) ; - break ; - case REG_DISPB_WININ+1: - if(proc == ARMCPU_ARM9) GPU_setWININ1(SubScreen.gpu,val) ; - break ; - case REG_DISPB_WINOUT: - if(proc == ARMCPU_ARM9) GPU_setWINOUT(SubScreen.gpu,val) ; - break ; - case REG_DISPB_WINOUT+1: - if(proc == ARMCPU_ARM9) GPU_setWINOBJ(SubScreen.gpu,val) ; - break ; - - - case REG_DISPA_BLDCNT: - if(proc == ARMCPU_ARM9) GPU_setBLDCNT_HIGH(MainScreen.gpu,val); - break; - case REG_DISPA_BLDCNT+1: - if(proc == ARMCPU_ARM9) GPU_setBLDCNT_LOW (MainScreen.gpu,val); - break; - - case REG_DISPB_BLDCNT: - if(proc == ARMCPU_ARM9) GPU_setBLDCNT_HIGH (SubScreen.gpu,val); - break; - case REG_DISPB_BLDCNT+1: - if(proc == ARMCPU_ARM9) GPU_setBLDCNT_LOW (SubScreen.gpu,val); - break; - - case REG_DISPA_BLDALPHA: - if(proc == ARMCPU_ARM9) GPU_setBLDALPHA_EVB(MainScreen.gpu,val) ; - break; - case REG_DISPA_BLDALPHA+1: - if(proc == ARMCPU_ARM9) GPU_setBLDALPHA_EVA(MainScreen.gpu,val) ; - break; - - case REG_DISPB_BLDALPHA: - if(proc == ARMCPU_ARM9) GPU_setBLDALPHA_EVB(SubScreen.gpu,val) ; - break; - case REG_DISPB_BLDALPHA+1: - if(proc == ARMCPU_ARM9) GPU_setBLDALPHA_EVA(SubScreen.gpu,val); - break; - - case REG_DISPA_BLDY: - if(proc == ARMCPU_ARM9) GPU_setBLDY_EVY(MainScreen.gpu,val) ; - break ; - case REG_DISPB_BLDY: - if(proc == ARMCPU_ARM9) GPU_setBLDY_EVY(SubScreen.gpu,val) ; - break; - - /* TODO: EEEK ! Controls for VRAMs A, B, C, D are missing ! */ - /* TODO: Not all mappings of VRAMs are handled... (especially BG and OBJ modes) */ - case REG_VRAMCNTA: - case REG_VRAMCNTB: - case REG_VRAMCNTC: - case REG_VRAMCNTD: - if(proc == ARMCPU_ARM9) - { - MMU_VRAMWriteBackToLCD(0) ; - MMU_VRAMWriteBackToLCD(1) ; - MMU_VRAMWriteBackToLCD(2) ; - MMU_VRAMWriteBackToLCD(3) ; - switch(val & 0x1F) - { - case 1 : - MMU.vram_mode[adr-REG_VRAMCNTA] = 0; // BG-VRAM - //MMU.vram_offset[0] = ARM9Mem.ARM9_ABG+(0x20000*0); // BG-VRAM - break; - case 1 | (1 << 3) : - MMU.vram_mode[adr-REG_VRAMCNTA] = 1; // BG-VRAM - //MMU.vram_offset[0] = ARM9Mem.ARM9_ABG+(0x20000*1); // BG-VRAM - break; - case 1 | (2 << 3) : - MMU.vram_mode[adr-REG_VRAMCNTA] = 2; // BG-VRAM - //MMU.vram_offset[0] = ARM9Mem.ARM9_ABG+(0x20000*2); // BG-VRAM - break; - case 1 | (3 << 3) : - MMU.vram_mode[adr-REG_VRAMCNTA] = 3; // BG-VRAM - //MMU.vram_offset[0] = ARM9Mem.ARM9_ABG+(0x20000*3); // BG-VRAM - break; - case 0: /* mapped to lcd */ - MMU.vram_mode[adr-REG_VRAMCNTA] = 4 | (adr-REG_VRAMCNTA) ; - break ; - } - /* - * FIXME: simply texture slot handling - * This is a first stab and is not correct. It does - * not handle a VRAM texture slot becoming - * unconfigured. - * Revisit all of VRAM control handling for future - * release? - */ - if ( val & 0x80) { - if ( (val & 0x7) == 3) { - int slot_index = (val >> 3) & 0x3; - - ARM9Mem.textureSlotAddr[slot_index] = - &ARM9Mem.ARM9_LCD[0x20000 * (adr - REG_VRAMCNTA)]; - } - } - MMU_VRAMReloadFromLCD(adr-REG_VRAMCNTA,val) ; - } + case 0x9F: // Dummy + val = 0xFFFFFFFF; break; - case REG_VRAMCNTE : - if(proc == ARMCPU_ARM9) - { - MMU_VRAMWriteBackToLCD((u8)REG_VRAMCNTE) ; - if((val & 7) == 5) - { - ARM9Mem.ExtPal[0][0] = ARM9Mem.ARM9_LCD + 0x80000; - ARM9Mem.ExtPal[0][1] = ARM9Mem.ARM9_LCD + 0x82000; - ARM9Mem.ExtPal[0][2] = ARM9Mem.ARM9_LCD + 0x84000; - ARM9Mem.ExtPal[0][3] = ARM9Mem.ARM9_LCD + 0x86000; - } - else if((val & 7) == 3) - { - ARM9Mem.texPalSlot[0] = ARM9Mem.ARM9_LCD + 0x80000; - ARM9Mem.texPalSlot[1] = ARM9Mem.ARM9_LCD + 0x82000; - ARM9Mem.texPalSlot[2] = ARM9Mem.ARM9_LCD + 0x84000; - ARM9Mem.texPalSlot[3] = ARM9Mem.ARM9_LCD + 0x86000; - } - else if((val & 7) == 4) - { - ARM9Mem.ExtPal[0][0] = ARM9Mem.ARM9_LCD + 0x80000; - ARM9Mem.ExtPal[0][1] = ARM9Mem.ARM9_LCD + 0x82000; - ARM9Mem.ExtPal[0][2] = ARM9Mem.ARM9_LCD + 0x84000; - ARM9Mem.ExtPal[0][3] = ARM9Mem.ARM9_LCD + 0x86000; - } - MMU_VRAMReloadFromLCD(adr-REG_VRAMCNTE,val) ; - } + case 0x3C: // Switch to KEY1 mode + val = 0xFFFFFFFF; break; - case REG_VRAMCNTF : - if(proc == ARMCPU_ARM9) - { - switch(val & 0x1F) - { - case 4 : - ARM9Mem.ExtPal[0][0] = ARM9Mem.ARM9_LCD + 0x90000; - ARM9Mem.ExtPal[0][1] = ARM9Mem.ARM9_LCD + 0x92000; - break; + default: + val = slot1_device.read32(TEST_PROCNUM, REG_GCDATAIN); + } - case 4 | (1 << 3) : - ARM9Mem.ExtPal[0][2] = ARM9Mem.ARM9_LCD + 0x90000; - ARM9Mem.ExtPal[0][3] = ARM9Mem.ARM9_LCD + 0x92000; - break; + card.address += 4; // increment address - case 3 : - ARM9Mem.texPalSlot[0] = ARM9Mem.ARM9_LCD + 0x90000; - break; + --card.transfer_count; // update transfer counter + if (card.transfer_count) // if transfer is not ended + return val; // return data - case 3 | (1 << 3) : - ARM9Mem.texPalSlot[1] = ARM9Mem.ARM9_LCD + 0x90000; - break; + // transfer is done + T1WriteLong(MMU.MMU_MEM[TEST_PROCNUM][0x40], 0x1A4, T1ReadLong(MMU.MMU_MEM[TEST_PROCNUM][0x40], 0x1A4) & 0x7F7FFFFF); - case 3 | (2 << 3) : - ARM9Mem.texPalSlot[2] = ARM9Mem.ARM9_LCD + 0x90000; - break; + // if needed, throw irq for the end of transfer + if (MMU.AUX_SPI_CNT & 0x4000) + NDS_makeIrq(TEST_PROCNUM, IRQ_BIT_GC_TRANSFER_COMPLETE); - case 3 | (3 << 3) : - ARM9Mem.texPalSlot[3] = ARM9Mem.ARM9_LCD + 0x90000; - break; + return val; +} - case 5 : - case 5 | (1 << 3) : - case 5 | (2 << 3) : - case 5 | (3 << 3) : - ARM9Mem.ObjExtPal[0][0] = ARM9Mem.ARM9_LCD + 0x90000; - ARM9Mem.ObjExtPal[0][1] = ARM9Mem.ARM9_LCD + 0x92000; - break; - } - } - break; - case REG_VRAMCNTG : - if(proc == ARMCPU_ARM9) - { - switch(val & 0x1F) - { - case 4 : - ARM9Mem.ExtPal[0][0] = ARM9Mem.ARM9_LCD + 0x94000; - ARM9Mem.ExtPal[0][1] = ARM9Mem.ARM9_LCD + 0x96000; - break; +static void REG_IF_WriteByte(int PROCNUM, uint32_t addr, uint8_t val) +{ + // the following bits are generated from logic and should not be affected here + // Bit 21 NDS9 only: Geometry Command FIFO + // arm9: IF &= ~0x00200000; + // arm7: IF &= ~0x00000000; + // UPDATE IN setIF() ALSO!!!!!!!!!!!!!!!! + // UPDATE IN mmu_loadstate ALSO!!!!!!!!!!!! + if (addr == 2) + { + if (PROCNUM == ARMCPU_ARM9) + val &= ~0x20; + else + val &= ~0x00; + } - case 4 | (1 << 3) : - ARM9Mem.ExtPal[0][2] = ARM9Mem.ARM9_LCD + 0x94000; - ARM9Mem.ExtPal[0][3] = ARM9Mem.ARM9_LCD + 0x96000; - break; + // ZERO 01-dec-2010 : I am no longer sure this approach is correct.. it proved to be wrong for IPC fifo....... + // it seems as if IF bits should always be cached (only the user can clear them) - case 3 : - ARM9Mem.texPalSlot[0] = ARM9Mem.ARM9_LCD + 0x94000; - break; + MMU.reg_IF_bits[PROCNUM] &= ~(val << (addr << 3)); + NDS_Reschedule(); +} - case 3 | (1 << 3) : - ARM9Mem.texPalSlot[1] = ARM9Mem.ARM9_LCD + 0x94000; - break; +static void REG_IF_WriteWord(int PROCNUM, uint32_t addr, uint16_t val) +{ + REG_IF_WriteByte(PROCNUM, addr, val & 0xFF); + REG_IF_WriteByte(PROCNUM, addr + 1, (val >> 8) & 0xFF); +} - case 3 | (2 << 3) : - ARM9Mem.texPalSlot[2] = ARM9Mem.ARM9_LCD + 0x94000; - break; +static void REG_IF_WriteLong(int PROCNUM, uint32_t val) +{ + REG_IF_WriteByte(PROCNUM, 0, val & 0xFF); + REG_IF_WriteByte(PROCNUM, 1, (val >> 8) & 0xFF); + REG_IF_WriteByte(PROCNUM, 2, (val >> 16) & 0xFF); + REG_IF_WriteByte(PROCNUM, 3, (val >> 24) & 0xFF); +} - case 3 | (3 << 3) : - ARM9Mem.texPalSlot[3] = ARM9Mem.ARM9_LCD + 0x94000; - break; +template uint32_t MMU_struct::gen_IF() +{ + return this->reg_IF_bits[PROCNUM]; +} - case 5 : - case 5 | (1 << 3) : - case 5 | (2 << 3) : - case 5 | (3 << 3) : - ARM9Mem.ObjExtPal[0][0] = ARM9Mem.ARM9_LCD + 0x94000; - ARM9Mem.ObjExtPal[0][1] = ARM9Mem.ARM9_LCD + 0x96000; - break; - } - } - break; +static inline void MMU_IPCSync(uint8_t proc, uint32_t val) +{ + uint32_t sync_l = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0x180) & 0xFFFF; + uint32_t sync_r = T1ReadLong(MMU.MMU_MEM[proc ^ 1][0x40], 0x180) & 0xFFFF; - case REG_VRAMCNTH : - if(proc == ARMCPU_ARM9) - { - MMU_VRAMWriteBackToLCD((u8)REG_VRAMCNTH) ; + sync_l = (sync_l & 0x000F) | (val & 0x0F00); + sync_r = (sync_r & 0x6F00) | ((val >> 8) & 0x000F); - if((val & 7) == 2) - { - ARM9Mem.ExtPal[1][0] = ARM9Mem.ARM9_LCD + 0x98000; - ARM9Mem.ExtPal[1][1] = ARM9Mem.ARM9_LCD + 0x9A000; - ARM9Mem.ExtPal[1][2] = ARM9Mem.ARM9_LCD + 0x9C000; - ARM9Mem.ExtPal[1][3] = ARM9Mem.ARM9_LCD + 0x9E000; - } + sync_l |= val & 0x6000; - MMU_VRAMReloadFromLCD(adr-REG_VRAMCNTH,val) ; - } - break; + T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x180, sync_l); + T1WriteLong(MMU.MMU_MEM[proc ^ 1][0x40], 0x180, sync_r); - case REG_VRAMCNTI : - if(proc == ARMCPU_ARM9) - { - MMU_VRAMWriteBackToLCD((u8)REG_VRAMCNTI) ; + if ((sync_l & IPCSYNC_IRQ_SEND) && (sync_r & IPCSYNC_IRQ_RECV)) + NDS_makeIrq(proc ^ 1, IRQ_BIT_IPCSYNC); - if((val & 7) == 3) - { - ARM9Mem.ObjExtPal[1][0] = ARM9Mem.ARM9_LCD + 0xA0000; - ARM9Mem.ObjExtPal[1][1] = ARM9Mem.ARM9_LCD + 0xA2000; - } + NDS_Reschedule(); +} - MMU_VRAMReloadFromLCD(adr-REG_VRAMCNTI,val) ; - } - break; +static inline uint16_t read_timer(int proc, int timerIndex) +{ + // chained timers are always up to date + if (MMU.timerMODE[proc][timerIndex] == 0xFFFF) + return MMU.timer[proc][timerIndex]; -#ifdef LOG_CARD - case 0x040001A0 : /* TODO (clear): ??? */ - case 0x040001A1 : - case 0x040001A2 : - case 0x040001A8 : - case 0x040001A9 : - case 0x040001AA : - case 0x040001AB : - case 0x040001AC : - case 0x040001AD : - case 0x040001AE : - case 0x040001AF : - LOG("%08X : %02X\r\n", adr, val); -#endif + // sometimes a timer will be read when it is not enabled. + // we should have the value cached + if (!MMU.timerON[proc][timerIndex]) + return MMU.timer[proc][timerIndex]; - default : - break; + // for unchained timers, we do not keep the timer up to date. its value will need to be calculated here + int32_t diff = (nds.timerCycle[proc][timerIndex] - nds_timer) & 0xFFFFFFFF; + assert(diff >= 0); + if (diff < 0) + fprintf(stderr, "NEW EMULOOP BAD NEWS PLEASE REPORT: TIME READ DIFF < 0 (%d) (%d) (%d)\n", diff, timerIndex, MMU.timerMODE[proc][timerIndex]); + + int32_t units = diff / (1 << MMU.timerMODE[proc][timerIndex]); + int32_t ret; + + if (units == 65536) + ret = 0; // I'm not sure why this is happening... + // whichever instruction setup this counter should advance nds_timer (I think?) and the division should truncate down to 65535 immediately + else if (units > 65536) + { + fprintf(stderr, "NEW EMULOOP BAD NEWS PLEASE REPORT: UNITS %d:%d = %d\n", proc, timerIndex, units); + ret = 0; } + else + ret = 65535 - units; - MMU.MMU_MEM[proc][(adr>>20)&0xFF][adr&MMU.MMU_MASK[proc][(adr>>20)&0xFF]]=val; + return ret & 0xFFFF; } -u16 partie = 1; - -void FASTCALL MMU_write16(u32 proc, u32 adr, u16 val) +static inline void write_timer(int proc, int timerIndex, uint16_t val) { -#ifdef INTERNAL_DTCM_WRITE - if((proc == ARMCPU_ARM9) && ((adr & ~0x3FFF) == MMU.DTCMRegion)) + if (val & 0x80) + MMU.timer[proc][timerIndex] = MMU.timerReload[proc][timerIndex]; + else if (MMU.timerON[proc][timerIndex]) + // read the timer value one last time + MMU.timer[proc][timerIndex] = read_timer(proc, timerIndex); + + MMU.timerON[proc][timerIndex] = val & 0x80; + + switch (val & 7) { - /* Writes in DTCM (ARM9 only) */ - T1WriteWord(ARM9Mem.ARM9_DTCM, adr & 0x3FFF, val); - return; + case 0: + MMU.timerMODE[proc][timerIndex] = 1; + break; + case 1: + MMU.timerMODE[proc][timerIndex] = 7; + break; + case 2: + MMU.timerMODE[proc][timerIndex] = 9; + break; + case 3: + MMU.timerMODE[proc][timerIndex] = 11; + break; + default: + MMU.timerMODE[proc][timerIndex] = 0xFFFF; } -#endif - // CFlash writing, Mic - if ((adr>=0x08800000)&&(adr<0x09900000)) + int remain = 65536 - MMU.timerReload[proc][timerIndex]; + nds.timerCycle[proc][timerIndex] = nds_timer + (remain << MMU.timerMODE[proc][timerIndex]); + + T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x102 + timerIndex * 4, val); + NDS_RescheduleTimers(); +} + +uint32_t TGXSTAT::read32() +{ + uint32_t ret = 0; + + ret |= this->tb | (this->tr << 1); + + ret |= this->sb << 14; // stack busy + ret |= this->se << 15; + ret |= 255 << 16; + + ret |= (this->gxfifo_irq & 0x3) << 30; // user's irq flags + + //fprintf(stderr, "vc=%03d Returning gxstat read: %08X\n",nds.VCount,ret); + + return ret; +} + +void TGXSTAT::write32(uint32_t val) +{ + this->gxfifo_irq = (val >> 30) & 3; + if (BIT15(val)) { - cflash_write(adr,val); - return; + // Writing "1" to Bit15 does reset the Error Flag (Bit15), + // and additionally resets the Projection Stack Pointer (Bit13) + //mtxStack[0].position = 0; + this->se = 0; // clear stack error flag } + //fprintf(stderr, "gxstat write: %08X while gxfifo.size=%d\n",val,gxFIFO.size); +} + +// this could be inlined... +void MMU_struct_new::write_dma(int proc, int size, uint32_t _adr, uint32_t val) +{ + //fprintf(stderr, "%08lld -- write_dma: %d %d %08X %08X\n",nds_timer,proc,size,_adr,val); + uint32_t adr = _adr - _REG_DMA_CONTROL_MIN; + uint32_t chan = adr / 12; + uint32_t regnum = (adr - chan * 12) >> 2; + + MMU_new.dma[proc][chan].regs[regnum]->write(size, adr, val); +} + +// this could be inlined... +uint32_t MMU_struct_new::read_dma(int proc, int size, uint32_t _adr) +{ + uint32_t adr = _adr - _REG_DMA_CONTROL_MIN; + uint32_t chan = adr / 12; + uint32_t regnum = (adr - chan * 12) >> 2; -#ifdef EXPERIMENTAL_WIFI + uint32_t temp = MMU_new.dma[proc][chan].regs[regnum]->read(size, adr); + //fprintf(stderr, "%08lld -- read_dma: %d %d %08X = %08X\n",nds_timer,proc,size,_adr,temp); - /* wifi mac access */ - if ((proc==ARMCPU_ARM7) && (adr>=0x04800000)&&(adr<0x05000000)) + return temp; +} + +MMU_struct_new::MMU_struct_new() +{ + for (int i = 0; i < 2; ++i) + for (int j = 0; j < 4; ++j) + { + dma[i][j].procnum = i; + dma[i][j].chan = j; + } +} + +void DmaController::write32(uint32_t val) +{ + //fprintf(stderr, "dma %d,%d WRITE %08X\n",procnum,chan,val); + this->wordcount = val & 0x1FFFFF; + uint8_t wasEnable = this->enable; + uint32_t valhi = val >> 16; + this->dar = static_cast((valhi >> 5) & 3); + this->sar = static_cast((valhi >> 7) & 3); + this->repeatMode = BIT9(valhi); + this->bitWidth = static_cast(BIT10(valhi)); + this->_startmode = (valhi >> 11) & 7; + if (this->procnum == ARMCPU_ARM7) + this->_startmode &= 6; + this->irq = BIT14(valhi); + this->enable = BIT15(valhi); + + // make sure we don't get any old triggers + if (!wasEnable && this->enable) + this->triggered = false; + + if (this->enable) + { + // address registers are reloaded from user's settings whenever dma is enabled + // this is tested well by contra4 classic games, which use this to hdma scroll registers + // specifically in the fit-screen mode. + this->saddr = this->saddr_user; + this->daddr = this->daddr_user; + } + + //fprintf(stderr, "dma %d,%d set to startmode %d with wordcount set to: %08X\n",procnum,chan,_startmode,wordcount); + // analyze enabling and startmode. + // note that we only do this if the dma was freshly enabled. + // we should probably also only be latching these other regs in that case too.. + // but for now just this one will do (otherwise the dma repeat stop procedure (in this case the ff4 title menu load with gamecard dma) will fail) + //if(!running) enable = userEnable; + + // if we were previously in a triggered mode, and were already enabled, + // then don't re-trigger now. this is rather confusing.. + // we really only want to auto-trigger gxfifo and immediate modes. + // but we don't know what mode we're in yet. + // so this is our workaround + // (otherwise the dma repeat stop procedure (in this case the ff4 title menu load with gamecard dma) will fail) + bool doNotStart = false; + if (this->startmode != EDMAMode_Immediate && wasEnable) + doNotStart = true; + + // this dma may need to trigger now, so give it a chance + //if(!(wasRepeatMode && !repeatMode)) //this was an older test + if (!doNotStart) + this->doSchedule(); +} + +void DmaController::exec() +{ + // this function runs when the DMA ends. the dma start actually queues this event after some kind of guess as to how long the DMA should take + + // we'll need to unfreeze the arm9 bus now + if (this->procnum == ARMCPU_ARM9) + nds.freezeBus &= ~(1 << (this->chan + 1)); + + this->dmaCheck = false; + + if (this->running) { - WIFI_write16(&wifiMac,adr,val) ; - return ; + this->doStop(); + return; } -#else - if ((proc==ARMCPU_ARM7) && (adr>=0x04800000)&&(adr<0x05000000)) - return ; -#endif - - adr &= 0x0FFFFFFF; - // This is bad, remove it - if(proc == ARMCPU_ARM7) - { - if ((adr>=0x04000400)&&(adr<0x0400051D)) - { - SPU_WriteWord(adr, val); - return; - } - } - - if((adr >> 24) == 4) + if (this->enable) { - /* Adress is an IO register */ - switch(adr) + // analyze startmode (this only gets latched when a dma begins) + if (this->procnum == ARMCPU_ARM9) + this->startmode = static_cast(this->_startmode); + else { -#if VIO2SF_GPU_ENABLE - case 0x0400035C: - { - ((u16 *)(MMU.MMU_MEM[proc][0x40]))[0x35C>>1] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_FogOffset (val); - } - return; - } - case 0x04000340: - { - ((u16 *)(MMU.MMU_MEM[proc][0x40]))[0x340>>1] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_AlphaFunc(val); - } - return; - } - case 0x04000060: - { - ((u16 *)(MMU.MMU_MEM[proc][0x40]))[0x060>>1] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_Control(val); - } - return; - } - case 0x04000354: - { - ((u16 *)(MMU.MMU_MEM[proc][0x40]))[0x354>>1] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_ClearDepth(val); - } - return; - } -#endif + // arm7 startmode analysis: + static const EDMAMode lookup[] = { EDMAMode_Immediate, EDMAMode_VBlank, EDMAMode_Card, EDMAMode7_Wifi }; + // arm7 has a slightly different startmode encoding + this->startmode = lookup[this->_startmode >> 1]; + if (this->startmode == EDMAMode7_Wifi && (this->chan == 1 || this->chan == 3)) + this->startmode = EDMAMode7_GBASlot; + } - case REG_DISPA_BLDCNT: - if(proc == ARMCPU_ARM9) GPU_setBLDCNT(MainScreen.gpu,val) ; - break ; - case REG_DISPB_BLDCNT: - if(proc == ARMCPU_ARM9) GPU_setBLDCNT(SubScreen.gpu,val) ; - break ; - case REG_DISPA_BLDALPHA: - if(proc == ARMCPU_ARM9) GPU_setBLDALPHA(MainScreen.gpu,val) ; - break ; - case REG_DISPB_BLDALPHA: - if(proc == ARMCPU_ARM9) GPU_setBLDALPHA(SubScreen.gpu,val) ; - break ; - case REG_DISPA_BLDY: - if(proc == ARMCPU_ARM9) GPU_setBLDY_EVY(MainScreen.gpu,val) ; - break ; - case REG_DISPB_BLDY: - if(proc == ARMCPU_ARM9) GPU_setBLDY_EVY(SubScreen.gpu,val) ; + // make it run, if it is triggered + // but first, scan for triggering conditions + switch (this->startmode) + { + case EDMAMode_Immediate: + this->triggered = true; break; - case REG_DISPA_MASTERBRIGHT: - GPU_setMasterBrightness (MainScreen.gpu, val); + default: break; - /* - case REG_DISPA_MOSAIC: - if(proc == ARMCPU_ARM9) GPU_setMOSAIC(MainScreen.gpu,val) ; - break ; - case REG_DISPB_MOSAIC: - if(proc == ARMCPU_ARM9) GPU_setMOSAIC(SubScreen.gpu,val) ; - break ; - */ - - case REG_DISPA_WIN0H: - if(proc == ARMCPU_ARM9) GPU_setWIN0_H (MainScreen.gpu,val) ; - break ; - case REG_DISPA_WIN1H: - if(proc == ARMCPU_ARM9) GPU_setWIN1_H(MainScreen.gpu,val) ; - break ; - case REG_DISPB_WIN0H: - if(proc == ARMCPU_ARM9) GPU_setWIN0_H(SubScreen.gpu,val) ; - break ; - case REG_DISPB_WIN1H: - if(proc == ARMCPU_ARM9) GPU_setWIN1_H(SubScreen.gpu,val) ; - break ; - case REG_DISPA_WIN0V: - if(proc == ARMCPU_ARM9) GPU_setWIN0_V(MainScreen.gpu,val) ; - break ; - case REG_DISPA_WIN1V: - if(proc == ARMCPU_ARM9) GPU_setWIN1_V(MainScreen.gpu,val) ; - break ; - case REG_DISPB_WIN0V: - if(proc == ARMCPU_ARM9) GPU_setWIN0_V(SubScreen.gpu,val) ; - break ; - case REG_DISPB_WIN1V: - if(proc == ARMCPU_ARM9) GPU_setWIN1_V(SubScreen.gpu,val) ; - break ; - case REG_DISPA_WININ: - if(proc == ARMCPU_ARM9) GPU_setWININ(MainScreen.gpu, val) ; - break ; - case REG_DISPA_WINOUT: - if(proc == ARMCPU_ARM9) GPU_setWINOUT16(MainScreen.gpu, val) ; - break ; - case REG_DISPB_WININ: - if(proc == ARMCPU_ARM9) GPU_setWININ(SubScreen.gpu, val) ; - break ; - case REG_DISPB_WINOUT: - if(proc == ARMCPU_ARM9) GPU_setWINOUT16(SubScreen.gpu, val) ; - break ; - - case REG_DISPB_MASTERBRIGHT: - GPU_setMasterBrightness (SubScreen.gpu, val); - break; - - case REG_POWCNT1 : - if(proc == ARMCPU_ARM9) - { - if(val & (1<<15)) - { - LOG("Main core on top\n"); - MainScreen.offset = 0; - SubScreen.offset = 192; - //nds.swapScreen(); - } - else - { - LOG("Main core on bottom (%04X)\n", val); - MainScreen.offset = 192; - SubScreen.offset = 0; - } - } - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x304, val); - return; + } - case REG_AUXSPICNT: - T1WriteWord(MMU.MMU_MEM[proc][(REG_AUXSPICNT >> 20) & 0xff], REG_AUXSPICNT & 0xfff, val); - AUX_SPI_CNT = val; + if (this->triggered) + { + this->running = true; + this->paused = false; + if (this->procnum == ARMCPU_ARM9) + this->doCopy(); + else + this->doCopy(); + } + } +} - if (val == 0) - mc_reset_com(&MMU.bupmem); /* reset backup memory device communication */ - return; +template void DmaController::doCopy() +{ + // generate a copy count depending on various copy mode's behavior + uint32_t todo = this->wordcount; + if (PROCNUM == ARMCPU_ARM9) + if (!todo) + todo = 0x200000; // according to gbatek.. we've verified this behaviour on the arm7 + if (this->startmode == EDMAMode_MemDisplay) + { + todo = 128; // this is a hack. maybe an alright one though. it should be 4 words at a time. this is a whole scanline + + // apparently this dma turns off after it finishes a frame + if (nds.VCount == 191) + this->enable = 0; + } + if (this->startmode == EDMAMode_Card) + todo *= 0x80; + + // determine how we're going to copy + bool bogarted = false; + uint32_t sz = this->bitWidth == EDMABitWidth_16 ? 2 : 4; + uint32_t dstinc = 0, srcinc = 0; + switch (this->dar) + { + case EDMADestinationUpdate_Increment: + dstinc = sz; + break; + case EDMADestinationUpdate_Decrement: + dstinc = -static_cast(sz); + break; + case EDMADestinationUpdate_Fixed: + dstinc = 0; + break; + case EDMADestinationUpdate_IncrementReload: + dstinc = sz; + } + switch (this->sar) + { + case EDMASourceUpdate_Increment: + srcinc = sz; + break; + case EDMASourceUpdate_Decrement: + srcinc = -static_cast(sz); + break; + case EDMASourceUpdate_Fixed: + srcinc = 0; + break; + case EDMASourceUpdate_Invalid: + bogarted = true; + } - case REG_AUXSPIDATA: - if(val!=0) - { - AUX_SPI_CMD = val & 0xFF; - } + // need to figure out what to do about this + if (bogarted) + { + fprintf(stderr, "YOUR GAME IS BOGARTED!!! PLEASE REPORT!!!\n"); + assert(false); + return; + } - T1WriteWord(MMU.MMU_MEM[proc][(REG_AUXSPIDATA >> 20) & 0xff], REG_AUXSPIDATA & 0xfff, bm_transfer(&MMU.bupmem, val)); - return; + uint32_t src = this->saddr; + uint32_t dst = this->daddr; - case REG_SPICNT : - if(proc == ARMCPU_ARM7) - { - int reset_firmware = 1; + // if these do not use MMU_AT_DMA and the corresponding code in the read/write routines, + // then danny phantom title screen will be filled with a garbage char which is made by + // dmaing from 0x00000000 to 0x06000000 + // TODO - these might be losing out a lot by not going through the templated version anymore. + // we might make another function to do just the raw copy op which can use them with checks + // outside the loop + int time_elapsed = 0; + for (int32_t i = todo; i > 0; --i) + { + if (sz == 4) + { + time_elapsed += _MMU_accesstime(src, true); + time_elapsed += _MMU_accesstime(dst, true); + uint32_t temp = _MMU_read32(procnum, MMU_AT_DMA, src); + _MMU_write32(procnum, MMU_AT_DMA, dst, temp); + } + else + { + time_elapsed += _MMU_accesstime(src, true); + time_elapsed += _MMU_accesstime(dst, true); + uint16_t temp = _MMU_read16(procnum, MMU_AT_DMA, src); + _MMU_write16(procnum, MMU_AT_DMA, dst, temp); + } + dst += dstinc; + src += srcinc; + } - if ( ((SPI_CNT >> 8) & 0x3) == 1) { - if ( ((val >> 8) & 0x3) == 1) { - if ( BIT11(SPI_CNT)) { - /* select held */ - reset_firmware = 0; - } - } - } - - //MMU.fw.com == 0; /* reset fw device communication */ - if ( reset_firmware) { - /* reset fw device communication */ - mc_reset_com(&MMU.fw); - } - SPI_CNT = val; - } + // reschedule an event for the end of this dma, and figure out how much it cost us + this->doSchedule(); - T1WriteWord(MMU.MMU_MEM[proc][(REG_SPICNT >> 20) & 0xff], REG_SPICNT & 0xfff, val); - return; + // zeromus, check it + if (this->wordcount > todo) + this->nextEvent += todo / 4; // TODO - surely this is a gross simplification + // apparently moon has very, very tight timing (i didnt spy it using waitbyloop swi...) + // so lets bump this down a bit for now, + // (i think this code is in nintendo libraries) - case REG_SPIDATA : - if(proc==ARMCPU_ARM7) - { - u16 spicnt; + // write back the addresses + this->saddr = src; + if (this->dar != EDMADestinationUpdate_IncrementReload) // but dont write back dst if we were supposed to reload + this->daddr = dst; - if(val!=0) - { - SPI_CMD = val; - } + // do wordcount accounting + if (this->startmode == EDMAMode_Card) + todo /= 0x80; // divide this funky one back down before subtracting it - spicnt = T1ReadWord(MMU.MMU_MEM[proc][(REG_SPICNT >> 20) & 0xff], REG_SPICNT & 0xfff); + if (!this->repeatMode) + this->wordcount -= todo; +} - switch((spicnt >> 8) & 0x3) - { - case 0 : - break; +void triggerDma(EDMAMode mode) +{ + MACRODO2(0, { + int i = X; + MACRODO4(0, { + int j = X; + MMU_new.dma[i][j].tryTrigger(mode); + }); + }); +} - case 1 : /* firmware memory device */ - if((spicnt & 0x3) != 0) /* check SPI baudrate (must be 4mhz) */ - { - T1WriteWord(MMU.MMU_MEM[proc][(REG_SPIDATA >> 20) & 0xff], REG_SPIDATA & 0xfff, 0); - break; - } - T1WriteWord(MMU.MMU_MEM[proc][(REG_SPIDATA >> 20) & 0xff], REG_SPIDATA & 0xfff, fw_transfer(&MMU.fw, val)); +void DmaController::tryTrigger(EDMAMode mode) +{ + if (this->startmode != mode) + return; + if (!this->enable) + return; - return; + // hmm dont trigger it if its already running! + // but paused things need triggers to continue + if (this->running && !this->paused) + return; + this->triggered = true; + this->doSchedule(); +} - case 2 : - switch(SPI_CMD & 0x70) - { - case 0x00 : - val = 0; - break; - case 0x10 : - //execute = false; - if(SPI_CNT&(1<<11)) - { - if(partie) - { - val = ((nds.touchY<<3)&0x7FF); - partie = 0; - //execute = false; - break; - } - val = (nds.touchY>>5); - partie = 1; - break; - } - val = ((nds.touchY<<3)&0x7FF); - partie = 1; - break; - case 0x20 : - val = 0; - break; - case 0x30 : - val = 0; - break; - case 0x40 : - val = 0; - break; - case 0x50 : - if(spicnt & 0x800) - { - if(partie) - { - val = ((nds.touchX<<3)&0x7FF); - partie = 0; - break; - } - val = (nds.touchX>>5); - partie = 1; - break; - } - val = ((nds.touchX<<3)&0x7FF); - partie = 1; - break; - case 0x60 : - val = 0; - break; - case 0x70 : - val = 0; - break; - } - break; +void DmaController::doSchedule() +{ + this->dmaCheck = true; + this->nextEvent = nds_timer; + NDS_RescheduleDMA(); +} - case 3 : - /* NOTICE: Device 3 of SPI is reserved (unused and unusable) */ - break; - } - } +void DmaController::doPause() +{ + this->triggered = false; + this->paused = true; +} - T1WriteWord(MMU.MMU_MEM[proc][(REG_SPIDATA >> 20) & 0xff], REG_SPIDATA & 0xfff, val); - return; +void DmaController::doStop() +{ + this->running = false; + if (!this->repeatMode) + this->enable = false; + if (this->irq) + NDS_makeIrq(this->procnum, IRQ_BIT_DMA_0 + this->chan); +} - /* NOTICE: Perhaps we have to use gbatek-like reg names instead of libnds-like ones ...*/ +uint32_t DmaController::read32() +{ + uint32_t ret = 0; + ret |= this->enable << 31; + ret |= this->irq << 30; + ret |= this->_startmode << 27; + ret |= this->bitWidth << 26; + ret |= this->repeatMode << 25; + ret |= this->sar << 23; + ret |= this->dar << 21; + ret |= this->wordcount; + //fprintf(stderr, "dma %d,%d READ %08X\n",procnum,chan,ret); + return ret; +} + +// ================================================================================================== ARM9 * +// ========================================================================================================= +// ========================================================================================================= +// ================================================= MMU write 08 +void FASTCALL _MMU_ARM9_write08(uint32_t adr, uint8_t val) +{ + adr &= 0x0FFFFFFF; - case REG_DISPA_BG0CNT : - //GPULOG("MAIN BG0 SETPROP 16B %08X\r\n", val); - if(proc == ARMCPU_ARM9) GPU_setBGProp(MainScreen.gpu, 0, val); - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x8, val); - return; - case REG_DISPA_BG1CNT : - //GPULOG("MAIN BG1 SETPROP 16B %08X\r\n", val); - if(proc == ARMCPU_ARM9) GPU_setBGProp(MainScreen.gpu, 1, val); - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0xA, val); - return; - case REG_DISPA_BG2CNT : - //GPULOG("MAIN BG2 SETPROP 16B %08X\r\n", val); - if(proc == ARMCPU_ARM9) GPU_setBGProp(MainScreen.gpu, 2, val); - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0xC, val); - return; - case REG_DISPA_BG3CNT : - //GPULOG("MAIN BG3 SETPROP 16B %08X\r\n", val); - if(proc == ARMCPU_ARM9) GPU_setBGProp(MainScreen.gpu, 3, val); - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0xE, val); - return; - case REG_DISPB_BG0CNT : - //GPULOG("SUB BG0 SETPROP 16B %08X\r\n", val); - if(proc == ARMCPU_ARM9) GPU_setBGProp(SubScreen.gpu, 0, val); - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x1008, val); - return; - case REG_DISPB_BG1CNT : - //GPULOG("SUB BG1 SETPROP 16B %08X\r\n", val); - if(proc == ARMCPU_ARM9) GPU_setBGProp(SubScreen.gpu, 1, val); - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x100A, val); - return; - case REG_DISPB_BG2CNT : - //GPULOG("SUB BG2 SETPROP 16B %08X\r\n", val); - if(proc == ARMCPU_ARM9) GPU_setBGProp(SubScreen.gpu, 2, val); - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x100C, val); - return; - case REG_DISPB_BG3CNT : - //GPULOG("SUB BG3 SETPROP 16B %08X\r\n", val); - if(proc == ARMCPU_ARM9) GPU_setBGProp(SubScreen.gpu, 3, val); - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x100E, val); - return; - case REG_IME : { - u32 old_val = MMU.reg_IME[proc]; - u32 new_val = val & 1; - MMU.reg_IME[proc] = new_val; - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x208, val); - if ( new_val && old_val != new_val) { - /* raise an interrupt request to the CPU if needed */ - if ( MMU.reg_IE[proc] & MMU.reg_IF[proc]) { - NDS_ARM7.wIRQ = true; - NDS_ARM7.waitIRQ = false; - } - } - return; - } - case REG_VRAMCNTA: - MMU_write8(proc,adr,val & 0xFF) ; - MMU_write8(proc,adr+1,val >> 8) ; - return ; - case REG_VRAMCNTC: - MMU_write8(proc,adr,val & 0xFF) ; - MMU_write8(proc,adr+1,val >> 8) ; - return ; - case REG_VRAMCNTE: - MMU_write8(proc,adr,val & 0xFF) ; - MMU_write8(proc,adr+1,val >> 8) ; - return ; - case REG_VRAMCNTG: - MMU_write8(proc,adr,val & 0xFF) ; - MMU_write8(proc,adr+1,val >> 8) ; - return ; - case REG_VRAMCNTI: - MMU_write8(proc,adr,val & 0xFF) ; - return ; + if (adr < 0x02000000) + { + T1WriteByte(MMU.ARM9_ITCM, adr & 0x7FFF, val); + return; + } - case REG_IE : - MMU.reg_IE[proc] = (MMU.reg_IE[proc]&0xFFFF0000) | val; - if ( MMU.reg_IME[proc]) { - /* raise an interrupt request to the CPU if needed */ - if ( MMU.reg_IE[proc] & MMU.reg_IF[proc]) { - NDS_ARM7.wIRQ = true; - NDS_ARM7.waitIRQ = false; - } - } - return; - case REG_IE + 2 : - execute = false; - MMU.reg_IE[proc] = (MMU.reg_IE[proc]&0xFFFF) | (((u32)val)<<16); - return; + if (adr >= 0x08000000 && adr < 0x0A010000) + return; - case REG_IF : - execute = false; - MMU.reg_IF[proc] &= (~((u32)val)); - return; - case REG_IF + 2 : - execute = false; - MMU.reg_IF[proc] &= (~(((u32)val)<<16)); - return; + // block 8bit writes to OAM and palette memory + if ((adr & 0x0F000000) == 0x07000000) + return; + if ((adr & 0x0F000000) == 0x05000000) + return; - case REG_IPCSYNC : - { - u32 remote = (proc+1)&1; - u16 IPCSYNC_remote = T1ReadWord(MMU.MMU_MEM[remote][0x40], 0x180); - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x180, (val&0xFFF0)|((IPCSYNC_remote>>8)&0xF)); - T1WriteWord(MMU.MMU_MEM[remote][0x40], 0x180, (IPCSYNC_remote&0xFFF0)|((val>>8)&0xF)); - MMU.reg_IF[remote] |= ((IPCSYNC_remote & (1<<14))<<2) & ((val & (1<<13))<<3);// & (MMU.reg_IME[remote] << 16);// & (MMU.reg_IE[remote] & (1<<16));// - //execute = false; - } - return; - case REG_IPCFIFOCNT : - { - u32 cnt_l = T1ReadWord(MMU.MMU_MEM[proc][0x40], 0x184) ; - u32 cnt_r = T1ReadWord(MMU.MMU_MEM[(proc+1) & 1][0x40], 0x184) ; - if ((val & 0x8000) && !(cnt_l & 0x8000)) - { - /* this is the first init, the other side didnt init yet */ - /* so do a complete init */ - FIFOInit(MMU.fifos + (IPCFIFO+proc)); - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x184,0x8101) ; - /* and then handle it as usual */ - } + if ((adr >> 24) == 4) + { + if (MMU_new.is_dma(adr)) + { + MMU_new.write_dma(ARMCPU_ARM9, 8, adr, val); + return; + } - if(val & 0x4008) - { - FIFOInit(MMU.fifos + (IPCFIFO+((proc+1)&1))); - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x184, (cnt_l & 0x0301) | (val & 0x8404) | 1); - T1WriteWord(MMU.MMU_MEM[proc^1][0x40], 0x184, (cnt_r & 0xC507) | 0x100); - MMU.reg_IF[proc] |= ((val & 4)<<15);// & (MMU.reg_IME[proc]<<17);// & (MMU.reg_IE[proc]&0x20000);// - return; - } - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x184, T1ReadWord(MMU.MMU_MEM[proc][0x40], 0x184) | (val & 0xBFF4)); - } - return; - case REG_TM0CNTL : - case REG_TM1CNTL : - case REG_TM2CNTL : - case REG_TM3CNTL : - MMU.timerReload[proc][(adr>>2)&3] = val; - return; - case REG_TM0CNTH : - case REG_TM1CNTH : - case REG_TM2CNTH : - case REG_TM3CNTH : - if(val&0x80) - { - MMU.timer[proc][((adr-2)>>2)&0x3] = MMU.timerReload[proc][((adr-2)>>2)&0x3]; - } - MMU.timerON[proc][((adr-2)>>2)&0x3] = val & 0x80; - switch(val&7) - { - case 0 : - MMU.timerMODE[proc][((adr-2)>>2)&0x3] = 0+1;//proc; - break; - case 1 : - MMU.timerMODE[proc][((adr-2)>>2)&0x3] = 6+1;//proc; - break; - case 2 : - MMU.timerMODE[proc][((adr-2)>>2)&0x3] = 8+1;//proc; - break; - case 3 : - MMU.timerMODE[proc][((adr-2)>>2)&0x3] = 10+1;//proc; - break; - default : - MMU.timerMODE[proc][((adr-2)>>2)&0x3] = 0xFFFF; - break; - } - if(!(val & 0x80)) - MMU.timerRUN[proc][((adr-2)>>2)&0x3] = false; - T1WriteWord(MMU.MMU_MEM[proc][0x40], adr & 0xFFF, val); - return; - case REG_DISPA_DISPCNT+2 : - { - //execute = false; - u32 v = (T1ReadLong(MMU.MMU_MEM[proc][0x40], 0) & 0xFFFF) | ((u32) val << 16); - GPU_setVideoProp(MainScreen.gpu, v); - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0, v); - } - return; - case REG_DISPA_DISPCNT : - if(proc == ARMCPU_ARM9) - { - u32 v = (T1ReadLong(MMU.MMU_MEM[proc][0x40], 0) & 0xFFFF0000) | val; - GPU_setVideoProp(MainScreen.gpu, v); - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0, v); - } + switch (adr) + { + case REG_SQRTCNT: + fprintf(stderr, "ERROR 8bit SQRTCNT WRITE\n"); return; - case REG_DISPA_DISPCAPCNT : - if(proc == ARMCPU_ARM9) - { - GPU_set_DISPCAPCNT(MainScreen.gpu,val); - } + case REG_SQRTCNT + 1: + fprintf(stderr, "ERROR 8bit SQRTCNT1 WRITE\n"); return; - case REG_DISPB_DISPCNT+2 : - if(proc == ARMCPU_ARM9) - { - //execute = false; - u32 v = (T1ReadLong(MMU.MMU_MEM[proc][0x40], 0x1000) & 0xFFFF) | ((u32) val << 16); - GPU_setVideoProp(SubScreen.gpu, v); - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x1000, v); - } + case REG_SQRTCNT + 2: + fprintf(stderr, "ERROR 8bit SQRTCNT2 WRITE\n"); return; - case REG_DISPB_DISPCNT : - { - u32 v = (T1ReadLong(MMU.MMU_MEM[proc][0x40], 0x1000) & 0xFFFF0000) | val; - GPU_setVideoProp(SubScreen.gpu, v); - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x1000, v); - } + case REG_SQRTCNT + 3: + fprintf(stderr, "ERROR 8bit SQRTCNT3 WRITE\n"); return; - //case 0x020D8460 : - /*case 0x0235A904 : - LOG("ECRIRE %d %04X\r\n", proc, val); - execute = false;*/ - case REG_DMA0CNTH : - { - u32 v; - //if(val&0x8000) execute = false; - //LOG("16 bit dma0 %04X\r\n", val); - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0xBA, val); - DMASrc[proc][0] = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xB0); - DMADst[proc][0] = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xB4); - v = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xB8); - MMU.DMAStartTime[proc][0] = (proc ? (v>>28) & 0x3 : (v>>27) & 0x7); - MMU.DMACrt[proc][0] = v; - if(MMU.DMAStartTime[proc][0] == 0) - MMU_doDMA(proc, 0); - #ifdef LOG_DMA2 - //else - { - LOG("proc %d, dma %d src %08X dst %08X %s\r\n", proc, 0, DMASrc[proc][0], DMADst[proc][0], (val&(1<<25))?"ON":"OFF"); - } - #endif - } - return; - case REG_DMA1CNTH : - { - u32 v; - //if(val&0x8000) execute = false; - //LOG("16 bit dma1 %04X\r\n", val); - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0xC6, val); - DMASrc[proc][1] = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xBC); - DMASrc[proc][1] = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xC0); - v = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xC4); - MMU.DMAStartTime[proc][1] = (proc ? (v>>28) & 0x3 : (v>>27) & 0x7); - MMU.DMACrt[proc][1] = v; - if(MMU.DMAStartTime[proc][1] == 0) - MMU_doDMA(proc, 1); - #ifdef LOG_DMA2 - //else - { - LOG("proc %d, dma %d src %08X dst %08X %s\r\n", proc, 1, DMASrc[proc][1], DMADst[proc][1], (val&(1<<25))?"ON":"OFF"); - } - #endif - } +#if 1 + case REG_DIVCNT: + fprintf(stderr, "ERROR 8bit DIVCNT WRITE\n"); return; - case REG_DMA2CNTH : - { - u32 v; - //if(val&0x8000) execute = false; - //LOG("16 bit dma2 %04X\r\n", val); - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0xD2, val); - DMASrc[proc][2] = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xC8); - DMASrc[proc][2] = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xCC); - v = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xD0); - MMU.DMAStartTime[proc][2] = (proc ? (v>>28) & 0x3 : (v>>27) & 0x7); - MMU.DMACrt[proc][2] = v; - if(MMU.DMAStartTime[proc][2] == 0) - MMU_doDMA(proc, 2); - #ifdef LOG_DMA2 - //else - { - LOG("proc %d, dma %d src %08X dst %08X %s\r\n", proc, 2, DMASrc[proc][2], DMADst[proc][2], (val&(1<<25))?"ON":"OFF"); - } - #endif - } + case REG_DIVCNT + 1: + fprintf(stderr, "ERROR 8bit DIVCNT+1 WRITE\n"); return; - case REG_DMA3CNTH : - { - u32 v; - //if(val&0x8000) execute = false; - //LOG("16 bit dma3 %04X\r\n", val); - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0xDE, val); - DMASrc[proc][3] = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xD4); - DMASrc[proc][3] = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xD8); - v = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xDC); - MMU.DMAStartTime[proc][3] = (proc ? (v>>28) & 0x3 : (v>>27) & 0x7); - MMU.DMACrt[proc][3] = v; - - if(MMU.DMAStartTime[proc][3] == 0) - MMU_doDMA(proc, 3); - #ifdef LOG_DMA2 - //else - { - LOG("proc %d, dma %d src %08X dst %08X %s\r\n", proc, 3, DMASrc[proc][3], DMADst[proc][3], (val&(1<<25))?"ON":"OFF"); - } - #endif - } + case REG_DIVCNT + 2: + fprintf(stderr, "ERROR 8bit DIVCNT+2 WRITE\n"); return; - //case REG_AUXSPICNT : execute = false; - default : - T1WriteWord(MMU.MMU_MEM[proc][0x40], adr&MMU.MMU_MASK[proc][(adr>>20)&0xFF], val); + case REG_DIVCNT + 3: + fprintf(stderr, "ERROR 8bit DIVCNT+3 WRITE\n"); return; +#endif + + case REG_IF: + REG_IF_WriteByte(ARMCPU_ARM9, 0, val); + break; + case REG_IF + 1: + REG_IF_WriteByte(ARMCPU_ARM9, 1, val); + break; + case REG_IF + 2: + REG_IF_WriteByte(ARMCPU_ARM9, 2, val); + break; + case REG_IF + 3: + REG_IF_WriteByte(ARMCPU_ARM9, 3, val); + break; + + case REG_VRAMCNTA: + case REG_VRAMCNTB: + case REG_VRAMCNTC: + case REG_VRAMCNTD: + case REG_VRAMCNTE: + case REG_VRAMCNTF: + case REG_VRAMCNTG: + case REG_WRAMCNT: + case REG_VRAMCNTH: + case REG_VRAMCNTI: + MMU_VRAMmapControl(adr - REG_VRAMCNTA, val); } + + MMU.MMU_MEM[ARMCPU_ARM9][adr >> 20][adr & MMU.MMU_MASK[ARMCPU_ARM9][adr >> 20]] = val; + return; } - T1WriteWord(MMU.MMU_MEM[proc][(adr>>20)&0xFF], adr&MMU.MMU_MASK[proc][(adr>>20)&0xFF], val); -} + // Removed the &0xFF as they are implicit with the adr&0x0FFFFFFF [shash] + MMU.MMU_MEM[ARMCPU_ARM9][adr >> 20][adr & MMU.MMU_MASK[ARMCPU_ARM9][adr >> 20]] = val; +} -void FASTCALL MMU_write32(u32 proc, u32 adr, u32 val) +// ================================================= MMU ARM9 write 16 +void FASTCALL _MMU_ARM9_write16(uint32_t adr, uint16_t val) { -#ifdef INTERNAL_DTCM_WRITE - if((proc==ARMCPU_ARM9)&((adr&(~0x3FFF))==MMU.DTCMRegion)) - { - T1WriteLong(ARM9Mem.ARM9_DTCM, adr & 0x3FFF, val); - return ; - } -#endif + adr &= 0x0FFFFFFE; - // CFlash writing, Mic - if ((adr>=0x9000000)&&(adr<0x9900000)) { - cflash_write(adr,val); - return; + if (adr < 0x02000000) + { + T1WriteWord(MMU.ARM9_ITCM, adr & 0x7FFF, val); + return; } - adr &= 0x0FFFFFFF; + if (adr >= 0x08000000 && adr < 0x0A010000) + return; - // This is bad, remove it - if(proc == ARMCPU_ARM7) - { - if ((adr>=0x04000400)&&(adr<0x0400051D)) - { - SPU_WriteLong(adr, val); - return; - } - } - - if ((adr & 0xFF800000) == 0x04800000) { - /* access to non regular hw registers */ - /* return to not overwrite valid data */ - return ; - } ; - - - if((adr>>24)==4) - { - if (adr >= 0x04000400 && adr < 0x04000440) - { - // Geometry commands (aka Dislay Lists) - Parameters:X - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x400>>2] = val; -#if VIO2SF_GPU_ENABLE - if(proc==ARMCPU_ARM9) - { - gpu3D->NDS_3D_CallList(val); - } -#endif + if ((adr >> 24) == 4) + { + if (MMU_new.is_dma(adr)) + { + MMU_new.write_dma(ARMCPU_ARM9, 16, adr, val); + return; } - else - switch(adr) + + switch (adr >> 4) { -#if VIO2SF_GPU_ENABLE - // Alpha test reference value - Parameters:1 - case 0x04000340: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x340>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_AlphaFunc(val); - } - return; - } - // Clear background color setup - Parameters:2 - case 0x04000350: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x350>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_ClearColor(val); - } - return; - } - // Clear background depth setup - Parameters:2 - case 0x04000354: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x354>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_ClearDepth(val); - } - return; - } - // Fog Color - Parameters:4b - case 0x04000358: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x358>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_FogColor(val); - } + // toon table + case 0x0400038: + case 0x0400039: + case 0x040003A: + case 0x040003B: + reinterpret_cast(MMU.MMU_MEM[ARMCPU_ARM9][0x40])[(adr & 0xFFF) >> 1] = val; return; - } - case 0x0400035C: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x35C>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_FogOffset(val); - } + } + // Address is an IO register + switch (adr) + { + case REG_DIVCNT: + MMU_new.div.write16(val); + execdiv(); return; - } - // Matrix mode - Parameters:1 - case 0x04000440: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x440>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_MatrixMode(val); - } - return; - } - // Push matrix - Parameters:0 - case 0x04000444: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x444>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_PushMatrix(); - } +#if 1 + case REG_DIVNUMER: + case REG_DIVNUMER + 2: + case REG_DIVNUMER + 4: + fprintf(stderr, "DIV: 16 write NUMER %08X. PLEASE REPORT! \n", val); + break; + case REG_DIVDENOM: + case REG_DIVDENOM + 2: + case REG_DIVDENOM + 4: + fprintf(stderr, "DIV: 16 write DENOM %08X. PLEASE REPORT! \n", val); + break; +#endif + case REG_SQRTCNT: + MMU_new.sqrt.write16(val); + execsqrt(); return; - } - // Pop matrix/es - Parameters:1 - case 0x04000448: + + case REG_EXMEMCNT: { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x448>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_PopMatrix(val); - } + uint16_t remote_proc = T1ReadWord(MMU.MMU_MEM[ARMCPU_ARM7][0x40], 0x204); + T1WriteWord(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x204, val); + T1WriteWord(MMU.MMU_MEM[ARMCPU_ARM7][0x40], 0x204, (val & 0xFF80) | (remote_proc & 0x7F)); return; } - // Store matrix in the stack - Parameters:1 - case 0x0400044C: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x44C>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_StoreMatrix(val); - } + + case REG_VRAMCNTA: + case REG_VRAMCNTC: + case REG_VRAMCNTE: + case REG_VRAMCNTG: + case REG_VRAMCNTH: + MMU_VRAMmapControl(adr - REG_VRAMCNTA, val & 0xFF); + MMU_VRAMmapControl(adr - REG_VRAMCNTA + 1, val >> 8); + break; + + case REG_IME: + NDS_Reschedule(); + MMU.reg_IME[ARMCPU_ARM9] = val & 0x01; + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x208, val); return; - } - // Restore matrix from the stack - Parameters:1 - case 0x04000450: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x450>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_RestoreMatrix(val); - } + case REG_IE: + NDS_Reschedule(); + MMU.reg_IE[ARMCPU_ARM9] = (MMU.reg_IE[ARMCPU_ARM9] & 0xFFFF0000) | val; return; - } - // Load Identity matrix - Parameters:0 - case 0x04000454: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x454>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_LoadIdentity(); - } + case REG_IE + 2: + NDS_Reschedule(); + MMU.reg_IE[ARMCPU_ARM9] = (MMU.reg_IE[ARMCPU_ARM9] & 0xFFFF) | (val << 16); return; - } - // Load 4x4 matrix - Parameters:16 - case 0x04000458: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x458>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_LoadMatrix4x4(val); - } + case REG_IF: + REG_IF_WriteWord(ARMCPU_ARM9, 0, val); return; - } - // Load 4x3 matrix - Parameters:12 - case 0x0400045C: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x45C>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_LoadMatrix4x3(val); - } + case REG_IF + 2: + REG_IF_WriteWord(ARMCPU_ARM9, 2, val); return; - } - // Multiply 4x4 matrix - Parameters:16 - case 0x04000460: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x460>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_MultMatrix4x4(val); - } - return; - } - // Multiply 4x4 matrix - Parameters:12 - case 0x04000464: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x464>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_MultMatrix4x3(val); - } + + case REG_IPCSYNC: + MMU_IPCSync(ARMCPU_ARM9, val); return; - } - // Multiply 3x3 matrix - Parameters:9 - case 0x04000468 : - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x468>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_MultMatrix3x3(val); - } + + case REG_IPCFIFOCNT: + IPC_FIFOcnt(ARMCPU_ARM9, val); return; - } - // Multiply current matrix by scaling matrix - Parameters:3 - case 0x0400046C: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x46C>>2] = val; - if(proc==ARMCPU_ARM9) - { - gpu3D->NDS_3D_Scale(val); - } + case REG_TM0CNTL: + case REG_TM1CNTL: + case REG_TM2CNTL: + case REG_TM3CNTL: + MMU.timerReload[ARMCPU_ARM9][(adr >> 2) & 3] = val; return; - } - // Multiply current matrix by translation matrix - Parameters:3 - case 0x04000470: + case REG_TM0CNTH: + case REG_TM1CNTH: + case REG_TM2CNTH: + case REG_TM3CNTH: { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x470>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_Translate(val); - } + int timerIndex = ((adr - 2) >> 2) & 0x3; + write_timer(ARMCPU_ARM9, timerIndex, val); return; } - // Set vertex color - Parameters:1 - case 0x04000480: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x480>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_Color3b(val); - } + + case REG_GCROMCTRL: + MMU_writeToGCControl(ARMCPU_ARM9, (T1ReadLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x1A4) & 0xFFFF0000) | val); return; - } - // Set vertex normal - Parameters:1 - case 0x04000484: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x484>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_Normal(val); - } + case REG_GCROMCTRL + 2: + MMU_writeToGCControl(ARMCPU_ARM9, (T1ReadLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x1A4) & 0xFFFF) | (val << 16)); return; - } - // Set vertex texture coordinate - Parameters:1 - case 0x04000488: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x488>>2] = val; - if(proc==ARMCPU_ARM9) - { - gpu3D->NDS_3D_TexCoord(val); - } + } + + T1WriteWord(MMU.MMU_MEM[ARMCPU_ARM9][adr >> 20], adr & MMU.MMU_MASK[ARMCPU_ARM9][adr >> 20], val); + return; + } + + bool unmapped, restricted; + adr = MMU_LCDmap(ARMCPU_ARM9, adr, unmapped, restricted); + if (unmapped) + return; + + // Removed the &0xFF as they are implicit with the adr&0x0FFFFFFF [shash] + T1WriteWord(MMU.MMU_MEM[ARMCPU_ARM9][adr >> 20], adr & MMU.MMU_MASK[ARMCPU_ARM9][adr >> 20], val); +} + +// ================================================= MMU ARM9 write 32 +void FASTCALL _MMU_ARM9_write32(uint32_t adr, uint32_t val) +{ + adr &= 0x0FFFFFFC; + + if (adr < 0x02000000) + { + T1WriteLong(MMU.ARM9_ITCM, adr & 0x7FFF, val); + return; + } + + if (adr >= 0x08000000 && adr < 0x0A010000) + return; + + if ((adr >> 24) == 4) + { + if (MMU_new.is_dma(adr)) + { + MMU_new.write_dma(ARMCPU_ARM9, 32, adr, val); + return; + } + + switch (adr) + { + case REG_SQRTCNT: + MMU_new.sqrt.write16(val & 0xFFFF); return; - } - // Set vertex position 16b/coordinate - Parameters:2 - case 0x0400048C: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x48C>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_Vertex16b(val); - } + case REG_DIVCNT: + MMU_new.div.write16(val & 0xFFFF); return; - } - // Set vertex position 10b/coordinate - Parameters:1 - case 0x04000490: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x490>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_Vertex10b(val); - } + + case REG_VRAMCNTA: + case REG_VRAMCNTE: + MMU_VRAMmapControl(adr - REG_VRAMCNTA, val & 0xFF); + MMU_VRAMmapControl(adr - REG_VRAMCNTA + 1, (val >> 8) & 0xFF); + MMU_VRAMmapControl(adr - REG_VRAMCNTA + 2, (val >> 16) & 0xFF); + MMU_VRAMmapControl(adr - REG_VRAMCNTA + 3, (val >> 24) & 0xFF); + break; + case REG_VRAMCNTH: + MMU_VRAMmapControl(adr - REG_VRAMCNTA, val & 0xFF); + MMU_VRAMmapControl(adr - REG_VRAMCNTA + 1, (val >> 8) & 0xFF); + break; + + case REG_IME: + NDS_Reschedule(); + MMU.reg_IME[ARMCPU_ARM9] = val & 0x01; + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x208, val); return; - } - // Set vertex XY position - Parameters:1 - case 0x04000494: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x494>>2] = val; - if(proc==ARMCPU_ARM9) - { - gpu3D->NDS_3D_Vertex3_cord(0,1,val); - } + + case REG_IE: + NDS_Reschedule(); + MMU.reg_IE[ARMCPU_ARM9] = val; return; - } - // Set vertex XZ position - Parameters:1 - case 0x04000498: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x498>>2] = val; - if(proc==ARMCPU_ARM9) - { - gpu3D->NDS_3D_Vertex3_cord(0,2,val); - } + + case REG_IF: + REG_IF_WriteLong(ARMCPU_ARM9, val); return; - } - // Set vertex YZ position - Parameters:1 - case 0x0400049C: + + case REG_TM0CNTL: + case REG_TM1CNTL: + case REG_TM2CNTL: + case REG_TM3CNTL: { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x49C>>2] = val; - if(proc==ARMCPU_ARM9) - { - gpu3D->NDS_3D_Vertex3_cord(1,2,val); - } + int timerIndex = (adr >> 2) & 0x3; + MMU.timerReload[ARMCPU_ARM9][timerIndex] = val & 0xFFFF; + T1WriteWord(MMU.MMU_MEM[ARMCPU_ARM9][0x40], adr & 0xFFF, val & 0xFFFF); + write_timer(ARMCPU_ARM9, timerIndex, val >> 16); return; } - // Set vertex difference position (offset from the last vertex) - Parameters:1 - case 0x040004A0: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x4A0>>2] = val; - if(proc==ARMCPU_ARM9) - { - gpu3D->NDS_3D_Vertex_rel (val); - } + + case REG_DIVNUMER: + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x290, val); + execdiv(); return; - } - // Set polygon attributes - Parameters:1 - case 0x040004A4: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x4A4>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_PolygonAttrib(val); - } + case REG_DIVNUMER + 4: + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x294, val); + execdiv(); return; - } - // Set texture parameteres - Parameters:1 - case 0x040004A8: + + case REG_DIVDENOM: { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x4A8>>2] = val; - if(proc==ARMCPU_ARM9) - { - gpu3D->NDS_3D_TexImage(val); - } + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x298, val); + execdiv(); return; } - // Set palette base address - Parameters:1 - case 0x040004AC: + case REG_DIVDENOM + 4: { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x4AC>>2] = val&0x1FFF; - if(proc==ARMCPU_ARM9) - { - gpu3D->NDS_3D_TexPalette(val&0x1FFFF); - } + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x29C, val); + execdiv(); return; } - // Set material diffuse/ambient parameters - Parameters:1 - case 0x040004C0: + + case REG_SQRTPARAM: { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x4C0>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_Material0 (val); - } + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x2B8, val); + execsqrt(); return; } - // Set material reflection/emission parameters - Parameters:1 - case 0x040004C4: + case REG_SQRTPARAM + 4: { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x4C4>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_Material1 (val); - } + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x2BC, val); + execsqrt(); return; } - // Light direction vector - Parameters:1 - case 0x040004C8: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x4C8>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_LightDirection (val); - } + + case REG_IPCSYNC: + MMU_IPCSync(ARMCPU_ARM9, val); return; - } - // Light color - Parameters:1 - case 0x040004CC: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x4CC>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_LightColor(val); - } + case REG_IPCFIFOCNT: + IPC_FIFOcnt(ARMCPU_ARM9, val & 0xFFFF); return; - } - // Material Shininess - Parameters:32 - case 0x040004D0: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x4D0>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_Shininess(val); - } + case REG_IPCFIFOSEND: + IPC_FIFOsend(ARMCPU_ARM9, val); return; - } - // Begin vertex list - Parameters:1 - case 0x04000500: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x500>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_Begin(val); - } - return; - } - // End vertex list - Parameters:0 - case 0x04000504: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x504>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_End(); - } + + case REG_GCROMCTRL: + MMU_writeToGCControl(ARMCPU_ARM9, val); return; - } - // Swap rendering engine buffers - Parameters:1 - case 0x04000540: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x540>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_Flush(val); - } + case REG_DISPA_DISPCAPCNT: + T1WriteLong(MMU.ARM9_REG, 0x64, val); return; - } - // Set viewport coordinates - Parameters:1 - case 0x04000580: - { - ((u32 *)(MMU.MMU_MEM[proc][0x40]))[0x580>>2] = val; - if(proc == ARMCPU_ARM9) - { - gpu3D->NDS_3D_ViewPort(val); - } + + case REG_GCDATAIN: + slot1_device.write32(ARMCPU_ARM9, REG_GCDATAIN, val); return; - } -#endif + } - case REG_DISPA_WININ: - { - if(proc == ARMCPU_ARM9) - { - GPU_setWININ (MainScreen.gpu, val & 0xFFFF) ; - GPU_setWINOUT16 (MainScreen.gpu, (val >> 16) & 0xFFFF) ; - } - break; - } - case REG_DISPB_WININ: - { - if(proc == ARMCPU_ARM9) - { - GPU_setWININ (SubScreen.gpu, val & 0xFFFF) ; - GPU_setWINOUT16 (SubScreen.gpu, (val >> 16) & 0xFFFF) ; - } - break; - } + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][adr >> 20], adr & MMU.MMU_MASK[ARMCPU_ARM9][adr >> 20], val); + return; + } - case REG_DISPA_BLDCNT: - { - if (proc == ARMCPU_ARM9) - { - GPU_setBLDCNT (MainScreen.gpu,val&0xffff); - GPU_setBLDALPHA (MainScreen.gpu,val>>16); - } - break; - } - case REG_DISPB_BLDCNT: - { - if (proc == ARMCPU_ARM9) - { - GPU_setBLDCNT (SubScreen.gpu,val&0xffff); - GPU_setBLDALPHA (SubScreen.gpu,val>>16); - } - break; - } -/* - // Commented out, as this doesn't use the plug-in system, neither works - case cmd_3D_MTX_MODE // 0x04000440 : - if (proc == ARMCPU_ARM9) gl_MTX_MODE(val); - return; - case cmd_3D_MTX_PUSH // 0x04000444 : - case cmd_3D_MTX_POP // 0x04000448 : - case cmd_3D_MTX_STORE // 0x0400044C : - case cmd_3D_MTX_RESTORE // 0x04000450 : - if (proc == ARMCPU_ARM9) gl_print_cmd(adr); - return; - case cmd_3D_MTX_IDENTITY // 0x04000454 : - if (proc == ARMCPU_ARM9) gl_MTX_IDENTITY(); - return; - case cmd_3D_MTX_LOAD_4x4 // 0x04000458 : - if (proc == ARMCPU_ARM9) gl_MTX_LOAD_4x4(val); - return; - case cmd_3D_MTX_LOAD_4x3 // 0x0400045C : - if (proc == ARMCPU_ARM9) gl_MTX_LOAD_4x3(val); - return; - case cmd_3D_MTX_MULT_4x4 // 0x04000460 : - if (proc == ARMCPU_ARM9) gl_MTX_MULT_4x4(val); - return; - case cmd_3D_MTX_MULT_4x3 // 0x04000464 : - if (proc == ARMCPU_ARM9) gl_MTX_MULT_4x3(val); - return; - case cmd_3D_MTX_MULT_3x3 // 0x04000468 : - if (proc == ARMCPU_ARM9) gl_MTX_MULT_3x3(val); - return; - case cmd_3D_MTX_SCALE // 0x0400046C : - case cmd_3D_MTX_TRANS // 0x04000470 : - case cmd_3D_COLOR // 0x04000480 : - case cmd_3D_NORMA // 0x04000484 : - if (proc == ARMCPU_ARM9) gl_print_cmd(adr); - return; - case cmd_3D_TEXCOORD // 0x04000488 : - if (proc == ARMCPU_ARM9) gl_TEXCOORD(val); - return; - case cmd_3D_VTX_16 // 0x0400048C : - if (proc == ARMCPU_ARM9) gl_VTX_16(val); - return; - case cmd_3D_VTX_10 // 0x04000490 : - if (proc == ARMCPU_ARM9) gl_VTX_10(val); - return; - case cmd_3D_VTX_XY // 0x04000494 : - if (proc == ARMCPU_ARM9) gl_VTX_XY(val); - return; - case cmd_3D_VTX_XZ // 0x04000498 : - if (proc == ARMCPU_ARM9) gl_VTX_XZ(val); - return; - case cmd_3D_VTX_YZ // 0x0400049C : - if (proc == ARMCPU_ARM9) gl_VTX_YZ(val); - return; - case cmd_3D_VTX_DIFF // 0x040004A0 : - if (proc == ARMCPU_ARM9) gl_VTX_DIFF(val); - return; - case cmd_3D_POLYGON_ATTR // 0x040004A4 : - case cmd_3D_TEXIMAGE_PARAM // 0x040004A8 : - case cmd_3D_PLTT_BASE // 0x040004AC : - case cmd_3D_DIF_AMB // 0x040004C0 : - case cmd_3D_SPE_EMI // 0x040004C4 : - case cmd_3D_LIGHT_VECTOR // 0x040004C8 : - case cmd_3D_LIGHT_COLOR // 0x040004CC : - case cmd_3D_SHININESS // 0x040004D0 : - if (proc == ARMCPU_ARM9) gl_print_cmd(adr); - return; - case cmd_3D_BEGIN_VTXS // 0x04000500 : - if (proc == ARMCPU_ARM9) gl_VTX_begin(val); - return; - case cmd_3D_END_VTXS // 0x04000504 : - if (proc == ARMCPU_ARM9) gl_VTX_end(); - return; - case cmd_3D_SWAP_BUFFERS // 0x04000540 : - case cmd_3D_VIEWPORT // 0x04000580 : - case cmd_3D_BOX_TEST // 0x040005C0 : - case cmd_3D_POS_TEST // 0x040005C4 : - case cmd_3D_VEC_TEST // 0x040005C8 : - if (proc == ARMCPU_ARM9) gl_print_cmd(adr); - return; -*/ - case REG_DISPA_DISPCNT : - if(proc == ARMCPU_ARM9) GPU_setVideoProp(MainScreen.gpu, val); + bool unmapped, restricted; + adr = MMU_LCDmap(ARMCPU_ARM9, adr, unmapped, restricted); + if (unmapped) + return; - //GPULOG("MAIN INIT 32B %08X\r\n", val); - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0, val); - return; + // Removed the &0xFF as they are implicit with the adr&0x0FFFFFFF [shash] + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][adr >> 20], adr & MMU.MMU_MASK[ARMCPU_ARM9][adr >> 20], val); +} - case REG_DISPB_DISPCNT : - if (proc == ARMCPU_ARM9) GPU_setVideoProp(SubScreen.gpu, val); - //GPULOG("SUB INIT 32B %08X\r\n", val); - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x1000, val); - return; - case REG_VRAMCNTA: - case REG_VRAMCNTE: - MMU_write8(proc,adr,val & 0xFF) ; - MMU_write8(proc,adr+1,val >> 8) ; - MMU_write8(proc,adr+2,val >> 16) ; - MMU_write8(proc,adr+3,val >> 24) ; - return ; - case REG_VRAMCNTI: - MMU_write8(proc,adr,val & 0xFF) ; - return ; +// ================================================= MMU ARM9 read 08 +uint8_t FASTCALL _MMU_ARM9_read08(uint32_t adr) +{ + adr &= 0x0FFFFFFF; - case REG_IME : { - u32 old_val = MMU.reg_IME[proc]; - u32 new_val = val & 1; - MMU.reg_IME[proc] = new_val; - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x208, val); - if ( new_val && old_val != new_val) { - /* raise an interrupt request to the CPU if needed */ - if ( MMU.reg_IE[proc] & MMU.reg_IF[proc]) { - NDS_ARM7.wIRQ = true; - NDS_ARM7.waitIRQ = false; - } - } - return; - } + if (adr<0x02000000) + return T1ReadByte(MMU.ARM9_ITCM, adr & 0x7FFF); - case REG_IE : - MMU.reg_IE[proc] = val; - if ( MMU.reg_IME[proc]) { - /* raise an interrupt request to the CPU if needed */ - if ( MMU.reg_IE[proc] & MMU.reg_IF[proc]) { - NDS_ARM7.wIRQ = true; - NDS_ARM7.waitIRQ = false; - } - } - return; + if (adr >= 0x08000000 && adr < 0x0A010000) + return 0; - case REG_IF : - MMU.reg_IF[proc] &= (~val); - return; - case REG_TM0CNTL : - case REG_TM1CNTL : - case REG_TM2CNTL : - case REG_TM3CNTL : - MMU.timerReload[proc][(adr>>2)&0x3] = (u16)val; - if(val&0x800000) - { - MMU.timer[proc][(adr>>2)&0x3] = MMU.timerReload[proc][(adr>>2)&0x3]; - } - MMU.timerON[proc][(adr>>2)&0x3] = val & 0x800000; - switch((val>>16)&7) - { - case 0 : - MMU.timerMODE[proc][(adr>>2)&0x3] = 0+1;//proc; - break; - case 1 : - MMU.timerMODE[proc][(adr>>2)&0x3] = 6+1;//proc; - break; - case 2 : - MMU.timerMODE[proc][(adr>>2)&0x3] = 8+1;//proc; - break; - case 3 : - MMU.timerMODE[proc][(adr>>2)&0x3] = 10+1;//proc; - break; - default : - MMU.timerMODE[proc][(adr>>2)&0x3] = 0xFFFF; - break; - } - if(!(val & 0x800000)) - { - MMU.timerRUN[proc][(adr>>2)&0x3] = false; - } - T1WriteLong(MMU.MMU_MEM[proc][0x40], adr & 0xFFF, val); - return; - case REG_DIVDENOM : - { - u16 cnt; - s64 num = 0; - s64 den = 1; - s64 res; - s64 mod; - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x298, val); - cnt = T1ReadWord(MMU.MMU_MEM[proc][0x40], 0x280); - switch(cnt&3) - { - case 0: - { - num = (s64) (s32) T1ReadLong(MMU.MMU_MEM[proc][0x40], 0x290); - den = (s64) (s32) T1ReadLong(MMU.MMU_MEM[proc][0x40], 0x298); - } - break; - case 1: - { - num = (s64) T1ReadQuad(MMU.MMU_MEM[proc][0x40], 0x290); - den = (s64) (s32) T1ReadLong(MMU.MMU_MEM[proc][0x40], 0x298); - } + if ((adr >> 24) == 4) + { + //Address is an IO register + + if (MMU_new.is_dma(adr)) + return MMU_new.read_dma(ARMCPU_ARM9, 8, adr) & 0xFF; + + switch (adr) + { + case REG_IF: + return MMU.gen_IF() & 0xFF; + case REG_IF + 1: + return (MMU.gen_IF() >> 8) & 0xFF; + case REG_IF + 2: + return (MMU.gen_IF() >> 16) & 0xFF; + case REG_IF + 3: + return (MMU.gen_IF() >> 24) & 0xFF; + + case REG_WRAMCNT: + return MMU.WRAMCNT; + + case REG_SQRTCNT: + return MMU_new.sqrt.read16() & 0xFF; + case REG_SQRTCNT + 1: + return (MMU_new.sqrt.read16() >> 8) & 0xFF; + + // sqrtcnt isnt big enough for these to exist. but they'd probably return 0 so its ok + case REG_SQRTCNT + 2: + fprintf(stderr, "ERROR 8bit SQRTCNT+2 READ\n"); + return 0; + case REG_SQRTCNT + 3: + fprintf(stderr, "ERROR 8bit SQRTCNT+3 READ\n"); + return 0; + + // Nostalgia's options menu requires that these work + case REG_DIVCNT: + return MMU_new.div.read16() & 0xFF; + case REG_DIVCNT + 1: + return (MMU_new.div.read16() >> 8) & 0xFF; + + // divcnt isnt big enough for these to exist. but they'd probably return 0 so its ok + case REG_DIVCNT + 2: + fprintf(stderr, "ERROR 8bit DIVCNT+2 READ\n"); + return 0; + case REG_DIVCNT + 3: + fprintf(stderr, "ERROR 8bit DIVCNT+3 READ\n"); + return 0; + } + } + + bool unmapped, restricted; + adr = MMU_LCDmap(ARMCPU_ARM9, adr, unmapped, restricted); + if (unmapped) + return 0; + + return MMU.MMU_MEM[ARMCPU_ARM9][(adr >> 20) & 0xFF][adr & MMU.MMU_MASK[ARMCPU_ARM9][(adr >> 20) & 0xFF]]; +} + +// ================================================= MMU ARM9 read 16 +uint16_t FASTCALL _MMU_ARM9_read16(uint32_t adr) +{ + adr &= 0x0FFFFFFE; + + if (adr < 0x02000000) + return T1ReadWord_guaranteedAligned(MMU.ARM9_ITCM, adr & 0x7FFE); + + if (adr >= 0x08000000 && adr < 0x0A010000) + return 0; + + if ((adr >> 24) == 4) + { + if (MMU_new.is_dma(adr)) + return MMU_new.read_dma(ARMCPU_ARM9, 16, adr) & 0xFFFF; + + // Address is an IO register + switch (adr) + { + case REG_SQRTCNT: + return MMU_new.sqrt.read16(); + // sqrtcnt isnt big enough for this to exist. but it'd probably return 0 so its ok + case REG_SQRTCNT + 2: + fprintf(stderr, "ERROR 16bit SQRTCNT+2 READ\n"); + return 0; + + case REG_DIVCNT: + return MMU_new.div.read16(); + // divcnt isnt big enough for this to exist. but it'd probably return 0 so its ok + case REG_DIVCNT + 2: + fprintf(stderr, "ERROR 16bit DIVCNT+2 READ\n"); + return 0; + + case REG_IME: + return MMU.reg_IME[ARMCPU_ARM9] & 0xFFFF; + + // WRAMCNT is readable but VRAMCNT is not, so just return WRAM's value + case REG_VRAMCNTG: + return MMU.WRAMCNT << 8; + + case REG_IE: + return MMU.reg_IE[ARMCPU_ARM9] & 0xFFFF; + case REG_IE + 2: + return (MMU.reg_IE[ARMCPU_ARM9] >> 16) & 0xFFFF; + + case REG_IF: + return MMU.gen_IF() & 0xFFFF; + case REG_IF + 2: + return (MMU.gen_IF() >> 16) & 0xFFFF; + + case REG_TM0CNTL: + case REG_TM1CNTL: + case REG_TM2CNTL: + case REG_TM3CNTL: + return read_timer(ARMCPU_ARM9, (adr & 0xF) >> 2); + + case REG_AUXSPICNT: + return MMU.AUX_SPI_CNT; + } + + return T1ReadWord_guaranteedAligned(MMU.MMU_MEM[ARMCPU_ARM9][adr >> 20], adr & MMU.MMU_MASK[ARMCPU_ARM9][adr >> 20]); + } + + // Removed the &0xFF as they are implicit with the adr&0x0FFFFFFF + return T1ReadWord_guaranteedAligned(MMU.MMU_MEM[ARMCPU_ARM9][adr >> 20], adr & MMU.MMU_MASK[ARMCPU_ARM9][adr >> 20]); +} + +// ================================================= MMU ARM9 read 32 +uint32_t FASTCALL _MMU_ARM9_read32(uint32_t adr) +{ + adr &= 0x0FFFFFFC; + + if (adr < 0x02000000) + return T1ReadLong_guaranteedAligned(MMU.ARM9_ITCM, adr & 0x7FFC); + + if (adr >= 0x08000000 && adr < 0x0A010000) + return 0; + + // Address is an IO register + if ((adr >> 24) == 4) + { + if (MMU_new.is_dma(adr)) + return MMU_new.read_dma(ARMCPU_ARM9, 32, adr); + + switch (adr) + { + case REG_DSIMODE: + if (!nds.Is_DSI()) break; - case 2: - { - return; - } + return 1; + case 0x04004008: + if (!nds.Is_DSI()) break; - default: - break; - } - if(den==0) - { - res = 0; - mod = 0; - cnt |= 0x4000; - cnt &= 0x7FFF; - } - else - { - res = num / den; - mod = num % den; - cnt &= 0x3FFF; - } - DIVLOG("BOUT1 %08X%08X / %08X%08X = %08X%08X\r\n", (u32)(num>>32), (u32)num, - (u32)(den>>32), (u32)den, - (u32)(res>>32), (u32)res); - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x2A0, (u32) res); - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x2A4, (u32) (res >> 32)); - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x2A8, (u32) mod); - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x2AC, (u32) (mod >> 32)); - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x280, cnt); - } - return; - case REG_DIVDENOM+4 : + return 0x8000; + + // WRAMCNT is readable but VRAMCNT is not, so just return WRAM's value + case REG_VRAMCNTE: + return MMU.WRAMCNT << 24; + + // despite these being 16bit regs, + // Dolphin Island Underwater Adventures uses this amidst seemingly reasonable divs so we're going to emulate it. + // well, it's pretty reasonable to read them as 32bits though, isnt it? + case REG_DIVCNT: + return MMU_new.div.read16(); + case REG_SQRTCNT: + return MMU_new.sqrt.read16(); // I guess we'll do this also + + case REG_IME: + return MMU.reg_IME[ARMCPU_ARM9]; + case REG_IE: + return MMU.reg_IE[ARMCPU_ARM9]; + + case REG_IF: + return MMU.gen_IF(); + + case REG_IPCFIFORECV: + return IPC_FIFOrecv(ARMCPU_ARM9); + case REG_TM0CNTL: + case REG_TM1CNTL: + case REG_TM2CNTL: + case REG_TM3CNTL: { - u16 cnt; - s64 num = 0; - s64 den = 1; - s64 res; - s64 mod; - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x29C, val); - cnt = T1ReadWord(MMU.MMU_MEM[proc][0x40], 0x280); - switch(cnt&3) - { - case 0: - { - return; - } + uint32_t val = T1ReadWord(MMU.MMU_MEM[ARMCPU_ARM9][0x40], (adr + 2) & 0xFFF); + return MMU.timer[ARMCPU_ARM9][(adr & 0xF) >> 2] | (val << 16); + } + + case REG_GCDATAIN: + return MMU_readFromGC(ARMCPU_ARM9); + } + return T1ReadLong_guaranteedAligned(MMU.MMU_MEM[ARMCPU_ARM9][adr >> 20], adr & MMU.MMU_MASK[ARMCPU_ARM9][adr >> 20]); + } + + // Removed the &0xFF as they are implicit with the adr&0x0FFFFFFF [zeromus, inspired by shash] + return T1ReadLong_guaranteedAligned(MMU.MMU_MEM[ARMCPU_ARM9][adr >> 20], adr & MMU.MMU_MASK[ARMCPU_ARM9][adr >> 20]); +} + +// ================================================================================================== ARM7 * +// ========================================================================================================= +// ========================================================================================================= +// ================================================= MMU ARM7 write 08 +void FASTCALL _MMU_ARM7_write08(uint32_t adr, uint8_t val) +{ + adr &= 0x0FFFFFFF; + + if (adr < 0x02000000) + return; // can't write to bios or entire area below main memory + + if (adr >= 0x08000000 && adr < 0x0A010000) + return; + + if (adr >= 0x04000400 && adr < 0x04000520) + { + SPU_WriteByte(adr, val); + return; + } + + if ((adr & 0xFFFF0000) == 0x04800000) + /* is wifi hardware, dont intermix with regular hardware registers */ + // 8-bit writes to wifi I/O and RAM are ignored + // Reference: http://nocash.emubase.de/gbatek.htm#dswifiiomap + return; + + if ((adr >> 24) == 4) + { + if (MMU_new.is_dma(adr)) + { + MMU_new.write_dma(ARMCPU_ARM7, 8, adr, val); + return; + } + + switch (adr) + { + case REG_IF: + REG_IF_WriteByte(ARMCPU_ARM7, 0, val); break; - case 1: - { - return; - } + case REG_IF + 1: + REG_IF_WriteByte(ARMCPU_ARM7, 1, val); break; - case 2: - { - num = (s64) T1ReadQuad(MMU.MMU_MEM[proc][0x40], 0x290); - den = (s64) T1ReadQuad(MMU.MMU_MEM[proc][0x40], 0x298); - } + case REG_IF + 2: + REG_IF_WriteByte(ARMCPU_ARM7, 2, val); break; - default: - break; - } - if(den==0) - { - res = 0; - mod = 0; - cnt |= 0x4000; - cnt &= 0x7FFF; - } - else - { - res = num / den; - mod = num % den; - cnt &= 0x3FFF; - } - DIVLOG("BOUT2 %08X%08X / %08X%08X = %08X%08X\r\n", (u32)(num>>32), (u32)num, - (u32)(den>>32), (u32)den, - (u32)(res>>32), (u32)res); - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x2A0, (u32) res); - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x2A4, (u32) (res >> 32)); - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x2A8, (u32) mod); - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x2AC, (u32) (mod >> 32)); - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x280, cnt); - } - return; - case REG_SQRTPARAM : + case REG_IF + 3: + REG_IF_WriteByte(ARMCPU_ARM7, 3, val); + break; + + case REG_POSTFLG: + // The NDS7 register can be written to only from code executed in BIOS. + if (NDS_ARM7.instruct_adr > 0x3FFF) + return; + + // hack for patched firmwares + if (val == 1) { - u16 cnt; - u64 v = 1; - //execute = false; - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x2B8, val); - cnt = T1ReadWord(MMU.MMU_MEM[proc][0x40], 0x2B0); - switch(cnt&1) - { - case 0: - v = (u64) T1ReadLong(MMU.MMU_MEM[proc][0x40], 0x2B8); + if (_MMU_ARM7_read08(REG_POSTFLG)) break; - case 1: - return; - } - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x2B4, (u32) sqrt((s64)v)); - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x2B0, cnt & 0x7FFF); - SQRTLOG("BOUT1 sqrt(%08X%08X) = %08X\r\n", (u32)(v>>32), (u32)v, - T1ReadLong(MMU.MMU_MEM[proc][0x40], 0x2B4)); + _MMU_write32(0x27FFE24, gameInfo.header.ARM9exe); + _MMU_write32(0x27FFE34, gameInfo.header.ARM7exe); } - return; - case REG_SQRTPARAM+4 : + break; + + case REG_HALTCNT: + //fprintf(stderr, "halt 0x%02X\n", val); + switch (val) { - u16 cnt; - u64 v = 1; - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x2BC, val); - cnt = T1ReadWord(MMU.MMU_MEM[proc][0x40], 0x2B0); - switch(cnt&1) - { - case 0: - return; - //break; - case 1: - v = T1ReadQuad(MMU.MMU_MEM[proc][0x40], 0x2B8); + case 0xC0: + NDS_Sleep(); break; - } - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x2B4, (u32) sqrt((s64)v)); - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x2B0, cnt & 0x7FFF); - SQRTLOG("BOUT2 sqrt(%08X%08X) = %08X\r\n", (u32)(v>>32), (u32)v, - T1ReadLong(MMU.MMU_MEM[proc][0x40], 0x2B4)); + case 0x80: + armcpu_Wait4IRQ(&NDS_ARM7); } - return; - case REG_IPCSYNC : - { - //execute=false; - u32 remote = (proc+1)&1; - u32 IPCSYNC_remote = T1ReadLong(MMU.MMU_MEM[remote][0x40], 0x180); - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x180, (val&0xFFF0)|((IPCSYNC_remote>>8)&0xF)); - T1WriteLong(MMU.MMU_MEM[remote][0x40], 0x180, (IPCSYNC_remote&0xFFF0)|((val>>8)&0xF)); - MMU.reg_IF[remote] |= ((IPCSYNC_remote & (1<<14))<<2) & ((val & (1<<13))<<3);// & (MMU.reg_IME[remote] << 16);// & (MMU.reg_IE[remote] & (1<<16));// - } - return; - case REG_IPCFIFOCNT : - { - u32 cnt_l = T1ReadWord(MMU.MMU_MEM[proc][0x40], 0x184) ; - u32 cnt_r = T1ReadWord(MMU.MMU_MEM[(proc+1) & 1][0x40], 0x184) ; - if ((val & 0x8000) && !(cnt_l & 0x8000)) - { - /* this is the first init, the other side didnt init yet */ - /* so do a complete init */ - FIFOInit(MMU.fifos + (IPCFIFO+proc)); - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x184,0x8101) ; - /* and then handle it as usual */ - } - if(val & 0x4008) - { - FIFOInit(MMU.fifos + (IPCFIFO+((proc+1)&1))); - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x184, (cnt_l & 0x0301) | (val & 0x8404) | 1); - T1WriteWord(MMU.MMU_MEM[proc^1][0x40], 0x184, (cnt_r & 0xC507) | 0x100); - MMU.reg_IF[proc] |= ((val & 4)<<15);// & (MMU.reg_IME[proc]<<17);// & (MMU.reg_IE[proc]&0x20000);// - return; - } - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x184, val & 0xBFF4); - //execute = false; - return; - } - case REG_IPCFIFOSEND : - { - u16 IPCFIFO_CNT = T1ReadWord(MMU.MMU_MEM[proc][0x40], 0x184); - if(IPCFIFO_CNT&0x8000) - { - //if(val==43) execute = false; - u32 remote = (proc+1)&1; - u32 fifonum = IPCFIFO+remote; - u16 IPCFIFO_CNT_remote; - FIFOAdd(MMU.fifos + fifonum, val); - IPCFIFO_CNT = (IPCFIFO_CNT & 0xFFFC) | (MMU.fifos[fifonum].full<<1); - IPCFIFO_CNT_remote = T1ReadWord(MMU.MMU_MEM[remote][0x40], 0x184); - IPCFIFO_CNT_remote = (IPCFIFO_CNT_remote & 0xFCFF) | (MMU.fifos[fifonum].full<<10); - T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x184, IPCFIFO_CNT); - T1WriteWord(MMU.MMU_MEM[remote][0x40], 0x184, IPCFIFO_CNT_remote); - MMU.reg_IF[remote] |= ((IPCFIFO_CNT_remote & (1<<10))<<8);// & (MMU.reg_IME[remote] << 18);// & (MMU.reg_IE[remote] & 0x40000);// - //execute = false; - } - } - return; - case REG_DMA0CNTL : - //LOG("32 bit dma0 %04X\r\n", val); - DMASrc[proc][0] = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xB0); - DMADst[proc][0] = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xB4); - MMU.DMAStartTime[proc][0] = (proc ? (val>>28) & 0x3 : (val>>27) & 0x7); - MMU.DMACrt[proc][0] = val; - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0xB8, val); - if( MMU.DMAStartTime[proc][0] == 0 || - MMU.DMAStartTime[proc][0] == 7) // Start Immediately - MMU_doDMA(proc, 0); - #ifdef LOG_DMA2 - else + break; + } + MMU.MMU_MEM[ARMCPU_ARM7][adr >> 20][adr & MMU.MMU_MASK[ARMCPU_ARM7][adr >> 20]] = val; + return; + } + + // Removed the &0xFF as they are implicit with the adr&0x0FFFFFFF [shash] + MMU.MMU_MEM[ARMCPU_ARM7][adr >> 20][adr & MMU.MMU_MASK[ARMCPU_ARM7][adr >> 20]] = val; +} + +// ================================================= MMU ARM7 write 16 +void FASTCALL _MMU_ARM7_write16(uint32_t adr, uint16_t val) +{ + adr &= 0x0FFFFFFE; + + if (adr < 0x02000000) + return; // can't write to bios or entire area below main memory + + if (adr >= 0x08000000 && adr < 0x0A010000) + return; + + if (adr >= 0x04000400 && adr < 0x04000520) + { + SPU_WriteWord(adr, val); + return; + } + + if ((adr >> 24) == 4) + { + if (MMU_new.is_dma(adr)) + { + MMU_new.write_dma(ARMCPU_ARM7, 16, adr, val); + return; + } + + // Address is an IO register + switch (adr) + { + case REG_DISPA_VCOUNT: + if (nds.VCount >= 202 && nds.VCount <= 212) { - LOG("proc %d, dma %d src %08X dst %08X start taille %d %d\r\n", proc, 0, DMASrc[proc][0], DMADst[proc][0], 0, ((MMU.DMACrt[proc][0]>>27)&7)); + fprintf(stderr, "VCOUNT set to %i (previous value %i)\n", val, nds.VCount); + nds.VCount = val; } - #endif - //execute = false; - return; - case REG_DMA1CNTL: - //LOG("32 bit dma1 %04X\r\n", val); - DMASrc[proc][1] = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xBC); - DMADst[proc][1] = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xC0); - MMU.DMAStartTime[proc][1] = (proc ? (val>>28) & 0x3 : (val>>27) & 0x7); - MMU.DMACrt[proc][1] = val; - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0xC4, val); - if(MMU.DMAStartTime[proc][1] == 0 || - MMU.DMAStartTime[proc][1] == 7) // Start Immediately - MMU_doDMA(proc, 1); - #ifdef LOG_DMA2 else - { - LOG("proc %d, dma %d src %08X dst %08X start taille %d %d\r\n", proc, 1, DMASrc[proc][1], DMADst[proc][1], 0, ((MMU.DMACrt[proc][1]>>27)&7)); - } - #endif + fprintf(stderr, "Attempt to set VCOUNT while not within 202-212 (%i), ignored\n", nds.VCount); return; - case REG_DMA2CNTL : - //LOG("32 bit dma2 %04X\r\n", val); - DMASrc[proc][2] = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xC8); - DMADst[proc][2] = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xCC); - MMU.DMAStartTime[proc][2] = (proc ? (val>>28) & 0x3 : (val>>27) & 0x7); - MMU.DMACrt[proc][2] = val; - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0xD0, val); - if(MMU.DMAStartTime[proc][2] == 0 || - MMU.DMAStartTime[proc][2] == 7) // Start Immediately - MMU_doDMA(proc, 2); - #ifdef LOG_DMA2 - else - { - LOG("proc %d, dma %d src %08X dst %08X start taille %d %d\r\n", proc, 2, DMASrc[proc][2], DMADst[proc][2], 0, ((MMU.DMACrt[proc][2]>>27)&7)); - } - #endif + + case REG_EXMEMCNT: + { + uint16_t remote_proc = T1ReadWord(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x204); + T1WriteWord(MMU.MMU_MEM[ARMCPU_ARM7][0x40], 0x204, (val & 0x7F) | (remote_proc & 0xFF80)); return; - case 0x040000DC : - //LOG("32 bit dma3 %04X\r\n", val); - DMASrc[proc][3] = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xD4); - DMADst[proc][3] = T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xD8); - MMU.DMAStartTime[proc][3] = (proc ? (val>>28) & 0x3 : (val>>27) & 0x7); - MMU.DMACrt[proc][3] = val; - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0xDC, val); - if( MMU.DMAStartTime[proc][3] == 0 || - MMU.DMAStartTime[proc][3] == 7) // Start Immediately - MMU_doDMA(proc, 3); - #ifdef LOG_DMA2 - else - { - LOG("proc %d, dma %d src %08X dst %08X start taille %d %d\r\n", proc, 3, DMASrc[proc][3], DMADst[proc][3], 0, ((MMU.DMACrt[proc][3]>>27)&7)); - } - #endif + } + + case REG_SPICNT: + { + bool reset_firmware = true; + + if (((MMU.SPI_CNT >> 8) & 0x3) == 1 && ((val >> 8) & 0x3) == 1 && BIT11(MMU.SPI_CNT)) + // select held + reset_firmware = false; + + //MMU.fw.com == 0; // reset fw device communication + if (reset_firmware) + // reset fw device communication + fw_reset_com(&MMU.fw); + MMU.SPI_CNT = val; + + T1WriteWord(MMU.MMU_MEM[ARMCPU_ARM7][(REG_SPICNT >> 20) & 0xff], REG_SPICNT & 0xfff, val); return; - case REG_GCROMCTRL : - { - u32 i; + } - if(MEM_8(MMU.MMU_MEM[proc], REG_GCCMDOUT) == 0xB7) - { - MMU.dscard[proc].adress = (MEM_8(MMU.MMU_MEM[proc], REG_GCCMDOUT+1) << 24) | (MEM_8(MMU.MMU_MEM[proc], REG_GCCMDOUT+2) << 16) | (MEM_8(MMU.MMU_MEM[proc], REG_GCCMDOUT+3) << 8) | (MEM_8(MMU.MMU_MEM[proc], REG_GCCMDOUT+4)); - MMU.dscard[proc].transfer_count = 0x80;// * ((val>>24)&7)); - } - else if (MEM_8(MMU.MMU_MEM[proc], REG_GCCMDOUT) == 0xB8) - { - // Get ROM chip ID - val |= 0x800000; // Data-Word Status - T1WriteLong(MMU.MMU_MEM[proc][(REG_GCROMCTRL >> 20) & 0xff], REG_GCROMCTRL & 0xfff, val); - MMU.dscard[proc].adress = 0; - } - else - { - LOG("CARD command: %02X\n", MEM_8(MMU.MMU_MEM[proc], REG_GCCMDOUT)); - } + case REG_SPIDATA: + { + if (val) + MMU.SPI_CMD = val; - //CARDLOG("%08X : %08X %08X\r\n", adr, val, adresse[proc]); - val |= 0x00800000; + uint16_t spicnt = T1ReadWord(MMU.MMU_MEM[ARMCPU_ARM7][(REG_SPICNT >> 20) & 0xff], REG_SPICNT & 0xfff); - if(MMU.dscard[proc].adress == 0) + switch ((spicnt >> 8) & 0x3) + { + case 0: { - val &= ~0x80000000; - T1WriteLong(MMU.MMU_MEM[proc][(REG_GCROMCTRL >> 20) & 0xff], REG_GCROMCTRL & 0xfff, val); - return; - } - T1WriteLong(MMU.MMU_MEM[proc][(REG_GCROMCTRL >> 20) & 0xff], REG_GCROMCTRL & 0xfff, val); + if (!MMU.powerMan_CntRegWritten) + { + MMU.powerMan_CntReg = val & 0xFF; + MMU.powerMan_CntRegWritten = true; + } + else + { + uint16_t reg = MMU.powerMan_CntReg & 0x7F; + reg &= 0x7; + if (reg == 5 || reg == 6 || reg == 7) + reg = 4; + + // (let's start with emulating a DS lite, since it is the more complex case) + if (MMU.powerMan_CntReg & 0x80) + // read + val = MMU.powerMan_Reg[reg]; + else + { + // write + MMU.powerMan_Reg[reg] = val & 0xFF; - /* launch DMA if start flag was set to "DS Cart" */ - if(proc == ARMCPU_ARM7) i = 2; - else i = 5; + static const uint32_t PM_SYSTEM_PWR = BIT(6); /*!< \brief Turn the power *off* if set */ - if(proc == ARMCPU_ARM9 && MMU.DMAStartTime[proc][0] == i) /* dma0/1 on arm7 can't start on ds cart event */ - { - MMU_doDMA(proc, 0); - return; - } - else if(proc == ARMCPU_ARM9 && MMU.DMAStartTime[proc][1] == i) - { - MMU_doDMA(proc, 1); - return; + // our totally pathetic register handling, only the one thing we've wanted so far + if (MMU.powerMan_Reg[0] & PM_SYSTEM_PWR) + { + fprintf(stderr, "SYSTEM POWERED OFF VIA ARM7 SPI POWER DEVICE\n"); + execute = false; + } + } + + MMU.powerMan_CntRegWritten = false; + } + break; } - else if(MMU.DMAStartTime[proc][2] == i) - { - MMU_doDMA(proc, 2); + + case 1: /* firmware memory device */ + if (spicnt & 0x3) /* check SPI baudrate (must be 4mhz) */ + { + T1WriteWord(MMU.MMU_MEM[ARMCPU_ARM7][(REG_SPIDATA >> 20) & 0xff], REG_SPIDATA & 0xfff, 0); + break; + } + T1WriteWord(MMU.MMU_MEM[ARMCPU_ARM7][(REG_SPIDATA >> 20) & 0xff], REG_SPIDATA & 0xfff, fw_transfer(&MMU.fw, val & 0xFF)); return; - } - else if(MMU.DMAStartTime[proc][3] == i) + + case 2: { - MMU_doDMA(proc, 3); - return; - } - return; + if (nds.Is_DSI()) + { + // pass data to TSC + val = MMU_new.dsi_tsc.write16(val); + + // apply reset command if appropriate + if (!BIT11(MMU.SPI_CNT)) + MMU_new.dsi_tsc.reset_command(); + + break; + } + int channel = (MMU.SPI_CMD & 0x70) >> 4; + //fprintf(stderr, "%08X\n",channel); + switch (channel) + { + case TSC_MEASURE_TEMP1: + if (spicnt & 0x800) + { + if (partie) + { + val = 1632; + partie = 0; + break; + } + val = 716 >> 5; + partie = 1; + break; + } + val = 1632; + partie = 1; + break; + case TSC_MEASURE_TEMP2: + if(spicnt & 0x800) + { + if(partie) + { + val = 776; + partie = 0; + break; + } + val = 865 >> 5; + partie = 1; + break; + } + val = 776; + partie = 1; + break; + case TSC_MEASURE_Y: + if (MMU.SPI_CNT & (1 << 11)) + { + if (partie) + { + partie = 0; + break; + } + partie = 1; + break; + } + partie = 1; + break; + case TSC_MEASURE_Z1: // Z1 + if (spicnt & 0x800) + { + if (partie) + { + val = (val << 3) & 0x7FF; + partie = 0; + break; + } + val >>= 5; + partie = 1; + break; + } + val = (val << 3) & 0x7FF; + partie = 1; + break; + case TSC_MEASURE_Z2: // Z2 + if (spicnt & 0x800) + { + if (partie) + { + val = (val << 3) & 0x7FF; + partie = 0; + break; + } + val >>= 5; + partie = 1; + break; + } + val = (val << 3) & 0x7FF; + partie = 1; + break; + case TSC_MEASURE_X: + if (spicnt & 0x800) + { + if (partie) + { + partie = 0; + break; + } + partie = 1; + break; + } + partie = 1; + } + } } + + T1WriteWord(MMU.MMU_MEM[ARMCPU_ARM7][(REG_SPIDATA >> 20) & 0xff], REG_SPIDATA & 0xfff, val); return; - case REG_DISPA_DISPCAPCNT : - if(proc == ARMCPU_ARM9) - { - GPU_set_DISPCAPCNT(MainScreen.gpu,val); - T1WriteLong(ARM9Mem.ARM9_REG, 0x64, val); - } + } + + /* NOTICE: Perhaps we have to use gbatek-like reg names instead of libnds-like ones ...*/ + + case REG_IME: + NDS_Reschedule(); + MMU.reg_IME[ARMCPU_ARM7] = val & 0x01; + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM7][0x40], 0x208, val); + return; + case REG_IE: + NDS_Reschedule(); + MMU.reg_IE[ARMCPU_ARM7] = (MMU.reg_IE[ARMCPU_ARM7] & 0xFFFF0000) | val; + return; + case REG_IE + 2: + NDS_Reschedule(); + MMU.reg_IE[ARMCPU_ARM7] = (MMU.reg_IE[ARMCPU_ARM7] & 0xFFFF) | (val << 16); return; - case REG_DISPA_BG0CNT : - if (proc == ARMCPU_ARM9) - { - GPU_setBGProp(MainScreen.gpu, 0, (val&0xFFFF)); - GPU_setBGProp(MainScreen.gpu, 1, (val>>16)); - } - //if((val>>16)==0x400) execute = false; - T1WriteLong(ARM9Mem.ARM9_REG, 8, val); + case REG_IF: + REG_IF_WriteWord(ARMCPU_ARM7, 0, val); return; - case REG_DISPA_BG2CNT : - if (proc == ARMCPU_ARM9) - { - GPU_setBGProp(MainScreen.gpu, 2, (val&0xFFFF)); - GPU_setBGProp(MainScreen.gpu, 3, (val>>16)); - } - T1WriteLong(ARM9Mem.ARM9_REG, 0xC, val); + case REG_IF + 2: + REG_IF_WriteWord(ARMCPU_ARM7, 2, val); return; - case REG_DISPB_BG0CNT : - if (proc == ARMCPU_ARM9) - { - GPU_setBGProp(SubScreen.gpu, 0, (val&0xFFFF)); - GPU_setBGProp(SubScreen.gpu, 1, (val>>16)); - } - T1WriteLong(ARM9Mem.ARM9_REG, 0x1008, val); + + case REG_IPCSYNC: + MMU_IPCSync(ARMCPU_ARM7, val); return; - case REG_DISPB_BG2CNT : - if (proc == ARMCPU_ARM9) - { - GPU_setBGProp(SubScreen.gpu, 2, (val&0xFFFF)); - GPU_setBGProp(SubScreen.gpu, 3, (val>>16)); - } - T1WriteLong(ARM9Mem.ARM9_REG, 0x100C, val); + + case REG_IPCFIFOCNT: + IPC_FIFOcnt(ARMCPU_ARM7, val); + return; + case REG_TM0CNTL: + case REG_TM1CNTL: + case REG_TM2CNTL: + case REG_TM3CNTL: + MMU.timerReload[ARMCPU_ARM7][(adr >> 2) & 3] = val; return; - case REG_DISPA_DISPMMEMFIFO: + case REG_TM0CNTH: + case REG_TM1CNTH: + case REG_TM2CNTH: + case REG_TM3CNTH: { - // NOTE: right now, the capture unit is not taken into account, - // I don't know is it should be handled here or - - FIFOAdd(MMU.fifos + MAIN_MEMORY_DISP_FIFO, val); - break; + int timerIndex = ((adr - 2) >> 2) & 0x3; + write_timer(ARMCPU_ARM7, timerIndex, val); + return; } - //case 0x21FDFF0 : if(val==0) execute = false; - //case 0x21FDFB0 : if(val==0) execute = false; - default : - T1WriteLong(MMU.MMU_MEM[proc][0x40], adr & MMU.MMU_MASK[proc][(adr>>20)&0xFF], val); + + case REG_GCROMCTRL: + MMU_writeToGCControl(ARMCPU_ARM7, (T1ReadLong(MMU.MMU_MEM[ARMCPU_ARM7][0x40], 0x1A4) & 0xFFFF0000) | val); + return; + case REG_GCROMCTRL + 2: + MMU_writeToGCControl(ARMCPU_ARM7, (T1ReadLong(MMU.MMU_MEM[ARMCPU_ARM7][0x40], 0x1A4) & 0xFFFF) | (val << 16)); return; } + + T1WriteWord(MMU.MMU_MEM[ARMCPU_ARM7][adr >> 20], adr & MMU.MMU_MASK[ARMCPU_ARM7][adr >> 20], val); + return; } - T1WriteLong(MMU.MMU_MEM[proc][(adr>>20)&0xFF], adr&MMU.MMU_MASK[proc][(adr>>20)&0xFF], val); -} + // Removed the &0xFF as they are implicit with the adr&0x0FFFFFFF [shash] + T1WriteWord(MMU.MMU_MEM[ARMCPU_ARM7][adr >> 20], adr & MMU.MMU_MASK[ARMCPU_ARM7][adr >> 20], val); +} -void FASTCALL MMU_doDMA(u32 proc, u32 num) +// ================================================= MMU ARM7 write 32 +void FASTCALL _MMU_ARM7_write32(uint32_t adr, uint32_t val) { - u32 src = DMASrc[proc][num]; - u32 dst = DMADst[proc][num]; - u32 taille; + adr &= 0x0FFFFFFC; - if(src==dst) - { - T1WriteLong(MMU.MMU_MEM[proc][0x40], 0xB8 + (0xC*num), T1ReadLong(MMU.MMU_MEM[proc][0x40], 0xB8 + (0xC*num)) & 0x7FFFFFFF); + if (adr < 0x02000000) + return; // can't write to bios or entire area below main memory + + if (adr >= 0x08000000 && adr < 0x0A010000) return; - } - if((!(MMU.DMACrt[proc][num]&(1<<31)))&&(!(MMU.DMACrt[proc][num]&(1<<25)))) - { /* not enabled and not to be repeated */ - MMU.DMAStartTime[proc][num] = 0; - MMU.DMACycle[proc][num] = 0; - //MMU.DMAing[proc][num] = false; + if (adr >= 0x04000400 && adr < 0x04000520) + { + SPU_WriteLong(adr, val); return; } + if ((adr >> 24) == 4) + { + if (MMU_new.is_dma(adr)) + { + MMU_new.write_dma(ARMCPU_ARM7, 32, adr, val); + return; + } - /* word count */ - taille = (MMU.DMACrt[proc][num]&0xFFFF); + switch (adr) + { + case REG_IME: + NDS_Reschedule(); + MMU.reg_IME[ARMCPU_ARM7] = val & 0x01; + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM7][0x40], 0x208, val); + return; - // If we are in "Main memory display" mode just copy an entire - // screen (256x192 pixels). - // Reference: http://nocash.emubase.de/gbatek.htm#dsvideocaptureandmainmemorydisplaymode - // (under DISP_MMEM_FIFO) - if ((MMU.DMAStartTime[proc][num]==4) && // Must be in main memory display mode - (taille==4) && // Word must be 4 - (((MMU.DMACrt[proc][num]>>26)&1) == 1)) // Transfer mode must be 32bit wide - taille = 256*192/2; + case REG_IE: + NDS_Reschedule(); + MMU.reg_IE[ARMCPU_ARM7] = val; + return; - if(MMU.DMAStartTime[proc][num] == 5) - taille *= 0x80; + case REG_IF: + REG_IF_WriteLong(ARMCPU_ARM7, val); + return; - MMU.DMACycle[proc][num] = taille + nds.cycles; - MMU.DMAing[proc][num] = true; + case REG_TM0CNTL: + case REG_TM1CNTL: + case REG_TM2CNTL: + case REG_TM3CNTL: + { + int timerIndex = (adr >> 2) & 0x3; + MMU.timerReload[ARMCPU_ARM7][timerIndex] = val & 0xFFFF; + T1WriteWord(MMU.MMU_MEM[ARMCPU_ARM7][0x40], adr & 0xFFF, val & 0xFFFF); + write_timer(ARMCPU_ARM7, timerIndex, val >> 16); + return; + } - DMALOG("proc %d, dma %d src %08X dst %08X start %d taille %d repeat %s %08X\r\n", - proc, num, src, dst, MMU.DMAStartTime[proc][num], taille, - (MMU.DMACrt[proc][num]&(1<<25))?"on":"off",MMU.DMACrt[proc][num]); + case REG_IPCSYNC: + MMU_IPCSync(ARMCPU_ARM7, val); + return; + case REG_IPCFIFOCNT: + IPC_FIFOcnt(ARMCPU_ARM7, val & 0xFFFF); + return; + case REG_IPCFIFOSEND: + IPC_FIFOsend(ARMCPU_ARM7, val); + return; - if(!(MMU.DMACrt[proc][num]&(1<<25))) - MMU.DMAStartTime[proc][num] = 0; + case REG_GCROMCTRL: + MMU_writeToGCControl(ARMCPU_ARM7, val); + return; - // transfer - { - u32 i=0; - // 32 bit or 16 bit transfer ? - int sz = ((MMU.DMACrt[proc][num]>>26)&1)? 4 : 2; - int dstinc,srcinc; - int u=(MMU.DMACrt[proc][num]>>21); - switch(u & 0x3) { - case 0 : dstinc = sz; break; - case 1 : dstinc = -sz; break; - case 2 : dstinc = 0; break; - case 3 : dstinc = sz; break; //reload - } - switch((u >> 2)&0x3) { - case 0 : srcinc = sz; break; - case 1 : srcinc = -sz; break; - case 2 : srcinc = 0; break; - case 3 : // reserved + case REG_GCDATAIN: + slot1_device.write32(ARMCPU_ARM7, REG_GCDATAIN,val); return; } - if ((MMU.DMACrt[proc][num]>>26)&1) - for(; i < taille; ++i) - { - MMU_write32(proc, dst, MMU_read32(proc, src)); - dst += dstinc; - src += srcinc; - } - else - for(; i < taille; ++i) - { - MMU_write16(proc, dst, MMU_read16(proc, src)); - dst += dstinc; - src += srcinc; - } - } -} - -#ifdef MMU_ENABLE_ACL - -INLINE void check_access(u32 adr, u32 access) { - /* every other mode: sys */ - access |= 1; - if ((NDS_ARM9.CPSR.val & 0x1F) == 0x10) { - /* is user mode access */ - access ^= 1 ; - } - if (armcp15_isAccessAllowed((armcp15_t *)NDS_ARM9.coproc[15],adr,access)==false) { - execute = false ; + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM7][adr >> 20], adr & MMU.MMU_MASK[ARMCPU_ARM7][adr >> 20], val); + return; } -} -INLINE void check_access_write(u32 adr) { - u32 access = CP15_ACCESS_WRITE; - check_access(adr, access) -} -u8 FASTCALL MMU_read8_acl(u32 proc, u32 adr, u32 access) -{ - /* on arm9 we need to check the MPU regions */ - if (proc == ARMCPU_ARM9) - check_access(u32 adr, u32 access); - return MMU_read8(proc,adr); -} -u16 FASTCALL MMU_read16_acl(u32 proc, u32 adr, u32 access) -{ - /* on arm9 we need to check the MPU regions */ - if (proc == ARMCPU_ARM9) - check_access(u32 adr, u32 access); - return MMU_read16(proc,adr); -} -u32 FASTCALL MMU_read32_acl(u32 proc, u32 adr, u32 access) -{ - /* on arm9 we need to check the MPU regions */ - if (proc == ARMCPU_ARM9) - check_access(u32 adr, u32 access); - return MMU_read32(proc,adr); + // Removed the &0xFF as they are implicit with the adr&0x0FFFFFFF [shash] + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM7][adr >> 20], adr & MMU.MMU_MASK[ARMCPU_ARM7][adr >> 20], val); } -void FASTCALL MMU_write8_acl(u32 proc, u32 adr, u8 val) -{ - /* check MPU region on ARM9 */ - if (proc == ARMCPU_ARM9) - check_access_write(adr); - MMU_write8(proc,adr,val); -} -void FASTCALL MMU_write16_acl(u32 proc, u32 adr, u16 val) +// ================================================= MMU ARM7 read 08 +uint8_t FASTCALL _MMU_ARM7_read08(uint32_t adr) { - /* check MPU region on ARM9 */ - if (proc == ARMCPU_ARM9) - check_access_write(adr); - MMU_write16(proc,adr,val) ; -} -void FASTCALL MMU_write32_acl(u32 proc, u32 adr, u32 val) -{ - /* check MPU region on ARM9 */ - if (proc == ARMCPU_ARM9) - check_access_write(adr); - MMU_write32(proc,adr,val) ; -} -#endif - - - -#ifdef PROFILE_MEMORY_ACCESS - -#define PROFILE_PREFETCH 0 -#define PROFILE_READ 1 -#define PROFILE_WRITE 2 - -struct mem_access_profile { - u64 num_accesses; - u32 address_mask; - u32 masked_value; -}; - -#define PROFILE_NUM_MEM_ACCESS_PROFILES 4 - -static u64 profile_num_accesses[2][3]; -static u64 profile_unknown_addresses[2][3]; -static struct mem_access_profile -profile_memory_accesses[2][3][PROFILE_NUM_MEM_ACCESS_PROFILES]; - -static void -setup_profiling( void) { - int i; - - for ( i = 0; i < 2; i++) { - int access_type; - - for ( access_type = 0; access_type < 3; access_type++) { - profile_num_accesses[i][access_type] = 0; - profile_unknown_addresses[i][access_type] = 0; - - /* - * Setup the access testing structures - */ - profile_memory_accesses[i][access_type][0].address_mask = 0x0e000000; - profile_memory_accesses[i][access_type][0].masked_value = 0x00000000; - profile_memory_accesses[i][access_type][0].num_accesses = 0; - - /* main memory */ - profile_memory_accesses[i][access_type][1].address_mask = 0x0f000000; - profile_memory_accesses[i][access_type][1].masked_value = 0x02000000; - profile_memory_accesses[i][access_type][1].num_accesses = 0; - - /* shared memory */ - profile_memory_accesses[i][access_type][2].address_mask = 0x0f800000; - profile_memory_accesses[i][access_type][2].masked_value = 0x03000000; - profile_memory_accesses[i][access_type][2].num_accesses = 0; - - /* arm7 memory */ - profile_memory_accesses[i][access_type][3].address_mask = 0x0f800000; - profile_memory_accesses[i][access_type][3].masked_value = 0x03800000; - profile_memory_accesses[i][access_type][3].num_accesses = 0; - } - } -} - -static void -profile_memory_access( int arm9, u32 adr, int access_type) { - static int first = 1; - int mem_profile; - int address_found = 0; - - if ( first) { - setup_profiling(); - first = 0; - } - - profile_num_accesses[arm9][access_type] += 1; - - for ( mem_profile = 0; - mem_profile < PROFILE_NUM_MEM_ACCESS_PROFILES && - !address_found; - mem_profile++) { - if ( (adr & profile_memory_accesses[arm9][access_type][mem_profile].address_mask) == - profile_memory_accesses[arm9][access_type][mem_profile].masked_value) { - /*printf( "adr %08x mask %08x res %08x expected %08x\n", - adr, - profile_memory_accesses[arm9][access_type][mem_profile].address_mask, - adr & profile_memory_accesses[arm9][access_type][mem_profile].address_mask, - profile_memory_accesses[arm9][access_type][mem_profile].masked_value);*/ - address_found = 1; - profile_memory_accesses[arm9][access_type][mem_profile].num_accesses += 1; - } - } - - if ( !address_found) { - profile_unknown_addresses[arm9][access_type] += 1; - } -} - - -static const char *access_type_strings[] = { - "prefetch", - "read ", - "write " -}; - -void -print_memory_profiling( void) { - int arm; - - printf("------ Memory access profile ------\n"); - - for ( arm = 0; arm < 2; arm++) { - int access_type; - - for ( access_type = 0; access_type < 3; access_type++) { - int mem_profile; - printf("ARM%c: num of %s %lld\n", - arm ? '9' : '7', - access_type_strings[access_type], - profile_num_accesses[arm][access_type]); - - for ( mem_profile = 0; - mem_profile < PROFILE_NUM_MEM_ACCESS_PROFILES; - mem_profile++) { - printf( "address %08lx: %llu\n", - profile_memory_accesses[arm][access_type][mem_profile].masked_value, - profile_memory_accesses[arm][access_type][mem_profile].num_accesses); - } - - printf( "unknown addresses %lld\n", - profile_unknown_addresses[arm][access_type]); - - printf( "\n"); - } - } - - printf("------ End of Memory access profile ------\n\n"); -} -#else -void -print_memory_profiling( void) { -} -#endif /* End of PROFILE_MEMORY_ACCESS area */ - -static u16 FASTCALL -arm9_prefetch16( void *data, u32 adr) { -#ifdef PROFILE_MEMORY_ACCESS - profile_memory_access( 1, adr, PROFILE_PREFETCH); -#endif - -#ifdef EARLY_MEMORY_ACCESS - if((adr & ~0x3FFF) == MMU.DTCMRegion) - { - /* Returns data from DTCM (ARM9 only) */ - return T1ReadWord(ARM9Mem.ARM9_DTCM, adr & 0x3FFF); - } - /* access to main memory */ - if ( (adr & 0x0f000000) == 0x02000000) { - return T1ReadWord( MMU.MMU_MEM[ARMCPU_ARM9][(adr >> 20) & 0xFF], - adr & MMU.MMU_MASK[ARMCPU_ARM9][(adr >> 20) & 0xFF]); - } -#endif - - return MMU_read16( ARMCPU_ARM9, adr); -} -static u32 FASTCALL -arm9_prefetch32( void *data, u32 adr) { -#ifdef PROFILE_MEMORY_ACCESS - profile_memory_access( 1, adr, PROFILE_PREFETCH); -#endif - -#ifdef EARLY_MEMORY_ACCESS - if((adr & ~0x3FFF) == MMU.DTCMRegion) - { - /* Returns data from DTCM (ARM9 only) */ - return T1ReadLong(ARM9Mem.ARM9_DTCM, adr & 0x3FFF); - } - /* access to main memory */ - if ( (adr & 0x0f000000) == 0x02000000) { - return T1ReadLong( MMU.MMU_MEM[ARMCPU_ARM9][(adr >> 20) & 0xFF], - adr & MMU.MMU_MASK[ARMCPU_ARM9][(adr >> 20) & 0xFF]); - } -#endif - - return MMU_read32( ARMCPU_ARM9, adr); -} - -static u8 FASTCALL -arm9_read8( void *data, u32 adr) { -#ifdef PROFILE_MEMORY_ACCESS - profile_memory_access( 1, adr, PROFILE_READ); -#endif - -#ifdef EARLY_MEMORY_ACCESS - if( (adr&(~0x3FFF)) == MMU.DTCMRegion) - { - return ARM9Mem.ARM9_DTCM[adr&0x3FFF]; - } - /* access to main memory */ - if ( (adr & 0x0f000000) == 0x02000000) { - return MMU.MMU_MEM[ARMCPU_ARM9][(adr >> 20) & 0xFF] - [adr & MMU.MMU_MASK[ARMCPU_ARM9][(adr >> 20) & 0xFF]]; - } -#endif + adr &= 0x0FFFFFFF; - return MMU_read8( ARMCPU_ARM9, adr); -} -static u16 FASTCALL -arm9_read16( void *data, u32 adr) { -#ifdef PROFILE_MEMORY_ACCESS - profile_memory_access( 1, adr, PROFILE_READ); -#endif + if (adr < 0x4000) + { + // How accurate is this? our R[15] may not be exactly what the hardware uses (may use something less by up to 0x08) + // This may be inaccurate at the very edge cases. + if (NDS_ARM7.instruct_adr > 0x3FFF) + return 0xFF; + } -#ifdef EARLY_MEMORY_ACCESS - if((adr & ~0x3FFF) == MMU.DTCMRegion) - { - /* Returns data from DTCM (ARM9 only) */ - return T1ReadWord(ARM9Mem.ARM9_DTCM, adr & 0x3FFF); - } - - /* access to main memory */ - if ( (adr & 0x0f000000) == 0x02000000) { - return T1ReadWord( MMU.MMU_MEM[ARMCPU_ARM9][(adr >> 20) & 0xFF], - adr & MMU.MMU_MASK[ARMCPU_ARM9][(adr >> 20) & 0xFF]); - } -#endif + if (adr >= 0x08000000 && adr < 0x0A010000) + return 0; - return MMU_read16( ARMCPU_ARM9, adr); -} -static u32 FASTCALL -arm9_read32( void *data, u32 adr) { -#ifdef PROFILE_MEMORY_ACCESS - profile_memory_access( 1, adr, PROFILE_READ); -#endif + if (adr >= 0x04000400 && adr < 0x04000520) + return SPU_ReadByte(adr); -#ifdef EARLY_MEMORY_ACCESS - if((adr & ~0x3FFF) == MMU.DTCMRegion) - { - /* Returns data from DTCM (ARM9 only) */ - return T1ReadLong(ARM9Mem.ARM9_DTCM, adr & 0x3FFF); - } - /* access to main memory */ - if ( (adr & 0x0f000000) == 0x02000000) { - return T1ReadLong( MMU.MMU_MEM[ARMCPU_ARM9][(adr >> 20) & 0xFF], - adr & MMU.MMU_MASK[ARMCPU_ARM9][(adr >> 20) & 0xFF]); - } -#endif + if ((adr >> 24) == 4) + { + if (MMU_new.is_dma(adr)) + return MMU_new.read_dma(ARMCPU_ARM7, 8, adr) & 0xFF; - return MMU_read32( ARMCPU_ARM9, adr); -} + // Address is an IO register + switch (adr) + { + case REG_IF: + return MMU.gen_IF() & 0xFF; + case REG_IF + 1: + return (MMU.gen_IF() >> 8) & 0xFF; + case REG_IF + 2: + return (MMU.gen_IF() >> 16) & 0xFF; + case REG_IF + 3: + return (MMU.gen_IF() >> 24) & 0xFF; -static void FASTCALL -arm9_write8(void *data, u32 adr, u8 val) { -#ifdef PROFILE_MEMORY_ACCESS - profile_memory_access( 1, adr, PROFILE_WRITE); -#endif + case REG_WRAMSTAT: + return MMU.WRAMCNT; + } -#ifdef EARLY_MEMORY_ACCESS - if( (adr & ~0x3FFF) == MMU.DTCMRegion) - { - /* Writes data in DTCM (ARM9 only) */ - ARM9Mem.ARM9_DTCM[adr&0x3FFF] = val; - return ; - } - /* main memory */ - if ( (adr & 0x0f000000) == 0x02000000) { - MMU.MMU_MEM[ARMCPU_ARM9][(adr>>20)&0xFF] - [adr&MMU.MMU_MASK[ARMCPU_ARM9][(adr>>20)&0xFF]] = val; - return; - } -#endif + return MMU.MMU_MEM[ARMCPU_ARM7][adr >> 20][adr & MMU.MMU_MASK[ARMCPU_ARM7][adr >> 20]]; + } - MMU_write8( ARMCPU_ARM9, adr, val); + return MMU.MMU_MEM[ARMCPU_ARM7][adr >> 20][adr & MMU.MMU_MASK[ARMCPU_ARM7][adr >> 20]]; } -static void FASTCALL -arm9_write16(void *data, u32 adr, u16 val) { -#ifdef PROFILE_MEMORY_ACCESS - profile_memory_access( 1, adr, PROFILE_WRITE); -#endif - -#ifdef EARLY_MEMORY_ACCESS - if((adr & ~0x3FFF) == MMU.DTCMRegion) - { - /* Writes in DTCM (ARM9 only) */ - T1WriteWord(ARM9Mem.ARM9_DTCM, adr & 0x3FFF, val); - return; - } - /* main memory */ - if ( (adr & 0x0f000000) == 0x02000000) { - T1WriteWord( MMU.MMU_MEM[ARMCPU_ARM9][(adr>>20)&0xFF], - adr&MMU.MMU_MASK[ARMCPU_ARM9][(adr>>20)&0xFF], val); - return; - } -#endif - MMU_write16( ARMCPU_ARM9, adr, val); -} -static void FASTCALL -arm9_write32(void *data, u32 adr, u32 val) { -#ifdef PROFILE_MEMORY_ACCESS - profile_memory_access( 1, adr, PROFILE_WRITE); -#endif +// ================================================= MMU ARM7 read 16 +uint16_t FASTCALL _MMU_ARM7_read16(uint32_t adr) +{ + adr &= 0x0FFFFFFE; -#ifdef EARLY_MEMORY_ACCESS - if((adr & ~0x3FFF) == MMU.DTCMRegion) - { - /* Writes in DTCM (ARM9 only) */ - T1WriteLong(ARM9Mem.ARM9_DTCM, adr & 0x3FFF, val); - return; - } - /* main memory */ - if ( (adr & 0x0f000000) == 0x02000000) { - T1WriteLong( MMU.MMU_MEM[ARMCPU_ARM9][(adr>>20)&0xFF], - adr&MMU.MMU_MASK[ARMCPU_ARM9][(adr>>20)&0xFF], val); - return; - } -#endif + if (adr < 0x4000) + { + if (NDS_ARM7.instruct_adr > 0x3FFF) + return 0xFFFF; + } - MMU_write32( ARMCPU_ARM9, adr, val); -} + if (adr >= 0x08000000 && adr < 0x0A010000) + return 0; + if (adr >= 0x04000400 && adr < 0x04000520) + return SPU_ReadWord(adr); + if ((adr >> 24) == 4) + { + // Address is an IO register + if (MMU_new.is_dma(adr)) + return MMU_new.read_dma(ARMCPU_ARM7, 16, adr) & 0xFFFF; -static u16 FASTCALL -arm7_prefetch16( void *data, u32 adr) { -#ifdef PROFILE_MEMORY_ACCESS - profile_memory_access( 0, adr, PROFILE_PREFETCH); -#endif + switch (adr) + { + case REG_IME: + return MMU.reg_IME[ARMCPU_ARM7] & 0xFFFF; -#ifdef EARLY_MEMORY_ACCESS - /* ARM7 private memory */ - if ( (adr & 0x0f800000) == 0x03800000) { - T1ReadWord(MMU.MMU_MEM[ARMCPU_ARM7][(adr >> 20) & 0xFF], - adr & MMU.MMU_MASK[ARMCPU_ARM7][(adr >> 20) & 0xFF]); - } -#endif + case REG_IE: + return MMU.reg_IE[ARMCPU_ARM7] & 0xFFFF; + case REG_IE + 2: + return (MMU.reg_IE[ARMCPU_ARM7] >> 16) & 0xFFFF; + + case REG_IF: + return MMU.gen_IF() & 0xFFFF; + case REG_IF + 2: + return (MMU.gen_IF() >> 16) & 0xFFFF; + + case REG_TM0CNTL: + case REG_TM1CNTL: + case REG_TM2CNTL: + case REG_TM3CNTL: + return read_timer(ARMCPU_ARM7, (adr & 0xF) >> 2); + + case REG_VRAMSTAT: + // make sure WRAMSTAT is stashed and then fallthrough to return the value from memory. i know, gross. + T1WriteByte(MMU.MMU_MEM[ARMCPU_ARM7][0x40], 0x241, MMU.WRAMCNT); + break; + } + return T1ReadWord_guaranteedAligned(MMU.MMU_MEM[ARMCPU_ARM7][adr >> 20], adr & MMU.MMU_MASK[ARMCPU_ARM7][adr >> 20]); + } - return MMU_read16( ARMCPU_ARM7, adr); + /* Returns data from memory */ + // Removed the &0xFF as they are implicit with the adr&0x0FFFFFFF + return T1ReadWord_guaranteedAligned(MMU.MMU_MEM[ARMCPU_ARM7][adr >> 20], adr & MMU.MMU_MASK[ARMCPU_ARM7][adr >> 20]); } -static u32 FASTCALL -arm7_prefetch32( void *data, u32 adr) { -#ifdef PROFILE_MEMORY_ACCESS - profile_memory_access( 0, adr, PROFILE_PREFETCH); -#endif -#ifdef EARLY_MEMORY_ACCESS - /* ARM7 private memory */ - if ( (adr & 0x0f800000) == 0x03800000) { - T1ReadLong(MMU.MMU_MEM[ARMCPU_ARM7][(adr >> 20) & 0xFF], - adr & MMU.MMU_MASK[ARMCPU_ARM7][(adr >> 20) & 0xFF]); - } -#endif - - return MMU_read32( ARMCPU_ARM7, adr); -} +// ================================================= MMU ARM7 read 32 +uint32_t FASTCALL _MMU_ARM7_read32(uint32_t adr) +{ + adr &= 0x0FFFFFFC; -static u8 FASTCALL -arm7_read8( void *data, u32 adr) { -#ifdef PROFILE_MEMORY_ACCESS - profile_memory_access( 0, adr, PROFILE_READ); -#endif + if (adr < 0x4000) + { + if (NDS_ARM7.instruct_adr > 0x3FFF) + return 0xFFFFFFFF; + } - return MMU_read8( ARMCPU_ARM7, adr); -} -static u16 FASTCALL -arm7_read16( void *data, u32 adr) { -#ifdef PROFILE_MEMORY_ACCESS - profile_memory_access( 0, adr, PROFILE_READ); -#endif + if (adr >= 0x08000000 && adr < 0x0A010000) + return 0; - return MMU_read16( ARMCPU_ARM7, adr); -} -static u32 FASTCALL -arm7_read32( void *data, u32 adr) { -#ifdef PROFILE_MEMORY_ACCESS - profile_memory_access( 0, adr, PROFILE_READ); -#endif + if (adr >= 0x04000400 && adr < 0x04000520) + return SPU_ReadLong(adr); - return MMU_read32( ARMCPU_ARM7, adr); -} + if ((adr >> 24) == 4) + { + // Address is an IO register + if (MMU_new.is_dma(adr)) + return MMU_new.read_dma(ARMCPU_ARM7, 32, adr); -static void FASTCALL -arm7_write8(void *data, u32 adr, u8 val) { -#ifdef PROFILE_MEMORY_ACCESS - profile_memory_access( 0, adr, PROFILE_WRITE); -#endif + switch (adr) + { + case REG_IME: + return MMU.reg_IME[ARMCPU_ARM7]; + case REG_IE: + return MMU.reg_IE[ARMCPU_ARM7]; + case REG_IF: + return MMU.gen_IF(); + case REG_IPCFIFORECV: + return IPC_FIFOrecv(ARMCPU_ARM7); + case REG_TM0CNTL: + case REG_TM1CNTL: + case REG_TM2CNTL: + case REG_TM3CNTL: + { + uint32_t val = T1ReadWord(MMU.MMU_MEM[ARMCPU_ARM7][0x40], (adr + 2) & 0xFFF); + return MMU.timer[ARMCPU_ARM7][(adr & 0xF) >> 2] | (val << 16); + } + case REG_GCROMCTRL: + break; + case REG_GCDATAIN: + return MMU_readFromGC(ARMCPU_ARM7); - MMU_write8( ARMCPU_ARM7, adr, val); -} -static void FASTCALL -arm7_write16(void *data, u32 adr, u16 val) { -#ifdef PROFILE_MEMORY_ACCESS - profile_memory_access( 0, adr, PROFILE_WRITE); -#endif + case REG_VRAMSTAT: + // make sure WRAMSTAT is stashed and then fallthrough return the value from memory. i know, gross. + T1WriteByte(MMU.MMU_MEM[ARMCPU_ARM7][0x40], 0x241, MMU.WRAMCNT); + break; + } - MMU_write16( ARMCPU_ARM7, adr, val); -} -static void FASTCALL -arm7_write32(void *data, u32 adr, u32 val) { -#ifdef PROFILE_MEMORY_ACCESS - profile_memory_access( 0, adr, PROFILE_WRITE); -#endif + return T1ReadLong_guaranteedAligned(MMU.MMU_MEM[ARMCPU_ARM7][adr >> 20], adr & MMU.MMU_MASK[ARMCPU_ARM7][adr >> 20]); + } - MMU_write32( ARMCPU_ARM7, adr, val); + // Returns data from memory + // Removed the &0xFF as they are implicit with the adr&0x0FFFFFFF [zeromus, inspired by shash] + return T1ReadLong_guaranteedAligned(MMU.MMU_MEM[ARMCPU_ARM7][adr >> 20], adr & MMU.MMU_MASK[ARMCPU_ARM7][adr >> 20]); } +// ========================================================================================================= - -/* - * the base memory interfaces - */ -struct armcpu_memory_iface arm9_base_memory_iface = { - arm9_prefetch32, - arm9_prefetch16, - - arm9_read8, - arm9_read16, - arm9_read32, - - arm9_write8, - arm9_write16, - arm9_write32 -}; - -struct armcpu_memory_iface arm7_base_memory_iface = { - arm7_prefetch32, - arm7_prefetch16, - - arm7_read8, - arm7_read16, - arm7_read32, - - arm7_write8, - arm7_write16, - arm7_write32 -}; - -/* - * The direct memory interface for the ARM9. - * This avoids the ARM9 protection unit when accessing - * memory. - */ -struct armcpu_memory_iface arm9_direct_memory_iface = { - /* the prefetch is not used */ - nullptr, - nullptr, - - arm9_read8, - arm9_read16, - arm9_read32, - - arm9_write8, - arm9_write16, - arm9_write32 -}; +// these templates needed to be instantiated manually +template uint32_t MMU_struct::gen_IF(); +template uint32_t MMU_struct::gen_IF(); diff -Nru audacious-plugins-4.1/src/xsf/desmume/MMU.h audacious-plugins-4.3.1/src/xsf/desmume/MMU.h --- audacious-plugins-4.1/src/xsf/desmume/MMU.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/MMU.h 2023-04-29 20:17:32.000000000 +0000 @@ -1,181 +1,804 @@ -/* Copyright (C) 2006 yopyop - yopyop156@ifrance.com - yopyop156.ifrance.com - +/* + Copyright (C) 2006 yopyop Copyright (C) 2007 shash + Copyright (C) 2007-2012 DeSmuME team - This file is part of DeSmuME + This file 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 file 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. - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + You should have received a copy of the GNU General Public License + along with the this software. If not, see . */ -#ifndef MMU_H -#define MMU_H +#pragma once #include "FIFO.h" -#include "dscard.h" - -#include "ARM9.h" +#include "mem.h" +#include "registers.h" #include "mc.h" +#include "bits.h" +#include "readwrite.h" -extern char szRomPath[512]; -extern char szRomBaseName[512]; +#ifdef HAVE_LUA +#include "lua-engine.h" +#endif -/* theses macros are designed for reading/writing in memory (m is a pointer to memory, like MMU.MMU_MEM[proc], and a is an adress, like 0x04000000 */ -#define MEM_8(m, a) (((u8*)(m[((a)>>20)&0xff]))[((a)&0xfff)]) +#define ARMCPU_ARM7 1 +#define ARMCPU_ARM9 0 +#define ARMPROC (PROCNUM ? NDS_ARM7 : NDS_ARM9) + +typedef const uint8_t TWaitState; + +enum EDMAMode +{ + EDMAMode_Immediate = 0, + EDMAMode_VBlank = 1, + EDMAMode_HBlank = 2, + EDMAMode_HStart = 3, + EDMAMode_MemDisplay = 4, + EDMAMode_Card = 5, + EDMAMode_GBASlot = 6, + EDMAMode_GXFifo = 7, + EDMAMode7_Wifi = 8, + EDMAMode7_GBASlot = 9 +}; -/* theses ones for reading in rom data */ -#define ROM_8(m, a) (((u8*)(m))[(a)]) +enum EDMABitWidth +{ + EDMABitWidth_16 = 0, + EDMABitWidth_32 = 1 +}; -#define IPCFIFO 0 -#define MAIN_MEMORY_DISP_FIFO 2 +enum EDMASourceUpdate +{ + EDMASourceUpdate_Increment = 0, + EDMASourceUpdate_Decrement = 1, + EDMASourceUpdate_Fixed = 2, + EDMASourceUpdate_Invalid = 3 +}; -typedef struct { - //ARM7 mem - u8 ARM7_BIOS[0x4000]; - u8 ARM7_ERAM[0x10000]; - u8 ARM7_REG[0x10000]; - u8 ARM7_WIRAM[0x10000]; +enum EDMADestinationUpdate +{ + EDMADestinationUpdate_Increment = 0, + EDMADestinationUpdate_Decrement = 1, + EDMADestinationUpdate_Fixed = 2, + EDMADestinationUpdate_IncrementReload = 3 +}; - u8 vram_mode[9]; - u8 vScreen; +// TODO +// n.b. this may be a bad idea, for complex registers like the dma control register. +// we need to know exactly what part was written to, instead of assuming all 32bits were written. +class TRegister_32 +{ +public: + virtual ~TRegister_32() { } + + virtual uint32_t read32() = 0; + virtual void write32(uint32_t val) = 0; + void write(int size, uint32_t adr, uint32_t val) + { + if (size == 32) + this->write32(val); + else + { + uint32_t offset = adr & 3; + if (size == 8) + { + printf("WARNING! 8BIT DMA ACCESS\n"); + uint32_t mask = 0xFF << (offset << 3); + this->write32((this->read32() & ~mask) | (val << (offset << 3))); + } + else if (size == 16) + { + uint32_t mask = 0xFFFF << (offset << 3); + this->write32((this->read32() & ~mask) | (val << (offset << 3))); + } + } + } + + uint32_t read(int size, uint32_t adr) + { + if (size == 32) + return this->read32(); + else + { + uint32_t offset = adr & 3; + if (size == 8) + { + printf("WARNING! 8BIT DMA ACCESS\n"); + return (this->read32() >> (offset << 3)) & 0xFF; + } + else + return (this->read32() >> (offset << 3)) & 0xFFFF; + } + } +}; - //Shared ram - u8 SWIRAM[0x8000]; +struct TGXSTAT : public TRegister_32 +{ + TGXSTAT() + { + this->gxfifo_irq = this->se = this->tr = this->tb = this->sb = 0; + this->fifo_empty = true; + this->fifo_low = false; + } + virtual ~TGXSTAT() { } + uint8_t tb; // test busy + uint8_t tr; // test result + uint8_t se; // stack error + uint8_t sb; // stack busy + uint8_t gxfifo_irq; // irq configuration - //Card rom & ram - u8 * CART_ROM; - u8 CART_RAM[0x10000]; + bool fifo_empty, fifo_low; - //Unused ram - u8 UNUSED_RAM[4]; + virtual uint32_t read32(); + virtual void write32(uint32_t val); +}; - u8 * * MMU_MEM[2]; - u32 * MMU_MASK[2]; +void triggerDma(EDMAMode mode); - u8 ARM9_RW_MODE; +class DivController +{ +public: + DivController() : mode(0), busy(0) { } + void exec(); + uint8_t mode, busy, div0; + uint16_t read16() { return this->mode | (this->busy << 15) | (this->div0 << 14); } + void write16(uint16_t val) + { + this->mode = val & 3; + // todo - do we clear the div0 flag here or is that strictly done by the divider unit? + } +}; - FIFO fifos[16]; +class SqrtController +{ +public: + SqrtController() : mode(0), busy(0) { } + void exec(); + uint8_t mode, busy; + uint16_t read16() { return this->mode | (this->busy << 15); } + void write16(uint16_t val) { this->mode = val & 1; } +}; - u32 * MMU_WAIT16[2]; - u32 * MMU_WAIT32[2]; +class DmaController +{ +public: + uint8_t enable, irq, repeatMode, _startmode; + uint8_t userEnable; + uint32_t wordcount; + EDMAMode startmode; + EDMABitWidth bitWidth; + EDMASourceUpdate sar; + EDMADestinationUpdate dar; + uint32_t saddr, daddr; + uint32_t saddr_user, daddr_user; + + // indicates whether the dma needs to be checked for triggering + bool dmaCheck; + + // indicates whether the dma right now is logically running + // (though for now we copy all the data when it triggers) + bool running; + + bool paused; + + // this flag will sometimes be set when a start condition is triggered + // other conditions may be automatically triggered based on scanning conditions + bool triggered; + + uint64_t nextEvent; + + int procnum, chan; + + void exec(); + template void doCopy(); + void doPause(); + void doStop(); + void doSchedule(); + void tryTrigger(EDMAMode mode); + + DmaController() : + enable(0), irq(0), repeatMode(0), _startmode(0), + wordcount(0), startmode(EDMAMode_Immediate), + bitWidth(EDMABitWidth_16), + sar(EDMASourceUpdate_Increment), dar(EDMADestinationUpdate_Increment), + // if saddr isnt cleared then rings of fate will trigger copy protection + // by inspecting dma3 saddr when it boots + saddr(0), daddr(0), + saddr_user(0), daddr_user(0), + dmaCheck(false), + running(false), + paused(false), + triggered(false), + nextEvent(0), + sad(&saddr_user), + dad(&daddr_user) + { + this->sad.controller = this; + this->dad.controller = this; + this->ctrl.controller = this; + this->regs[0] = &this->sad; + this->regs[1] = &this->dad; + this->regs[2] = &this->ctrl; + } + + class AddressRegister : public TRegister_32 + { + public: + // we pass in a pointer to the controller here so we can alert it if anything changes + DmaController *controller; + uint32_t *const ptr; + AddressRegister(uint32_t *_ptr) : ptr(_ptr) { } + virtual ~AddressRegister() { } + virtual uint32_t read32() + { + return *this->ptr; + } + virtual void write32(uint32_t val) + { + *this->ptr = val; + } + }; + + class ControlRegister : public TRegister_32 + { + public: + // we pass in a pointer to the controller here so we can alert it if anything changes + DmaController *controller; + ControlRegister() { } + virtual ~ControlRegister() { } + virtual uint32_t read32() + { + return this->controller->read32(); + } + virtual void write32(uint32_t val) + { + return this->controller->write32(val); + } + }; + + AddressRegister sad, dad; + ControlRegister ctrl; + TRegister_32 *regs[3]; - u32 DTCMRegion; - u32 ITCMRegion; + void write32(uint32_t val); + uint32_t read32(); +}; - u16 timer[2][4]; - s32 timerMODE[2][4]; - u32 timerON[2][4]; - u32 timerRUN[2][4]; - u16 timerReload[2][4]; +enum ECardMode +{ + CardMode_Normal = 0, + CardMode_KEY1, + CardMode_KEY2 +}; + +struct nds_dscard +{ + uint8_t command[8]; + + uint32_t address; + uint32_t transfer_count; + + ECardMode mode; + + // NJSD stuff + int blocklen; +}; - u32 reg_IME[2]; - u32 reg_IE[2]; - u32 reg_IF[2]; +#define DUP2(x) x, x +#define DUP4(x) x, x, x, x +#define DUP8(x) x, x, x, x, x, x, x, x +#define DUP16(x) x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x + +struct MMU_struct +{ + //ARM9 mem + uint8_t ARM9_ITCM[0x8000]; + uint8_t ARM9_DTCM[0x4000]; + + //u8 MAIN_MEM[4*1024*1024]; // expanded from 4MB to 8MB to support debug consoles + //u8 MAIN_MEM[8*1024*1024]; // expanded from 8MB to 16MB to support dsi + uint8_t MAIN_MEM[16*1024*1024]; // expanded from 8MB to 16MB to support dsi + uint8_t ARM9_REG[0x1000000]; + uint8_t ARM9_BIOS[0x8000]; + uint8_t ARM9_VMEM[0x800]; + +#include "PACKED.h" + struct + { + uint8_t ARM9_LCD[0xA4000]; + // an extra 128KB for blank memory, directly after arm9_lcd, so that + // we can easily map things to the end of arm9_lcd to represent + // an unmapped state + uint8_t blank_memory[0x100000 - 0xA4000]; + }; +#include "PACKED_END.h" + + uint8_t ARM9_OAM[0x800]; + + uint8_t *ExtPal[2][4]; + uint8_t *ObjExtPal[2][2]; + + struct TextureInfo + { + uint8_t *texPalSlot[6]; + uint8_t *textureSlotAddr[4]; + } texInfo; + + // ARM7 mem + uint8_t ARM7_BIOS[0x4000]; + uint8_t ARM7_ERAM[0x10000]; // 64KB of exclusive WRAM + uint8_t ARM7_REG[0x10000]; + uint8_t ARM7_WIRAM[0x10000]; // WIFI ram + + // VRAM mapping + uint8_t VRAM_MAP[4][32]; + uint32_t LCD_VRAM_ADDR[10]; + uint8_t LCDCenable[10]; + + // 32KB of shared WRAM - can be switched between ARM7 & ARM9 in two blocks + uint8_t SWIRAM[0x8000]; + + // Card rom & ram + uint8_t * CART_ROM; + + // Unused ram + uint8_t UNUSED_RAM[4]; + + // this is here so that we can trap glitchy emulator code + // which is accessing offsets 5,6,7 of unused ram due to unaligned accesses + // (also since the emulator doesn't prevent unaligned accesses) + uint8_t MORE_UNUSED_RAM[4]; + + static uint8_t *MMU_MEM[2][256]; + static uint32_t MMU_MASK[2][256]; + + uint8_t ARM9_RW_MODE; + + uint32_t DTCMRegion; + uint32_t ITCMRegion; + + uint16_t timer[2][4]; + int32_t timerMODE[2][4]; + uint32_t timerON[2][4]; + uint32_t timerRUN[2][4]; + uint16_t timerReload[2][4]; + + uint32_t reg_IME[2]; + uint32_t reg_IE[2]; + + // these are the user-controlled IF bits. some IF bits are generated as necessary from hardware conditions + uint32_t reg_IF_bits[2]; + // these flags are set occasionally to indicate that an irq should have entered the pipeline, and processing will be deferred a tiny bit to help emulate things + uint32_t reg_IF_pending[2]; + + template uint32_t gen_IF(); + + bool divRunning; + int64_t divResult; + int64_t divMod; + uint64_t divCycles; + + bool sqrtRunning; + uint32_t sqrtResult; + uint64_t sqrtCycles; + + uint16_t SPI_CNT; + uint16_t SPI_CMD; + uint16_t AUX_SPI_CNT; + uint16_t AUX_SPI_CMD; + + uint8_t WRAMCNT; + + uint8_t powerMan_CntReg; + bool powerMan_CntRegWritten; + uint8_t powerMan_Reg[5]; - u32 DMAStartTime[2][4]; - s32 DMACycle[2][4]; - u32 DMACrt[2][4]; - BOOL DMAing[2][4]; + memory_chip_t fw; - memory_chip_t fw; - memory_chip_t bupmem; + nds_dscard dscard[2]; +}; - nds_dscard dscard[2]; +// everything in here is derived from libnds behaviours. no hardware tests yet +class DSI_TSC +{ +public: + DSI_TSC(); + void reset_command(); + uint16_t write16(uint16_t val); +private: + uint16_t read16(); + uint8_t reg_selection; + uint8_t read_flag; + int32_t state; + int32_t readcount; + + // registers[0] contains the current page. + // we are going to go ahead and save these out in case we want to change the way this is emulated in the future.. + // we may want to poke registers in here at more convenient times and have the TSC dumbly pluck them out, + // rather than generate the values on the fly + uint8_t registers[0x80]; +}; -} MMU_struct; +// this contains things which can't be memzeroed because they are smarter classes +struct MMU_struct_new +{ + MMU_struct_new(); + BackupDevice backupDevice; + DmaController dma[2][4]; + TGXSTAT gxstat; + SqrtController sqrt; + DivController div; + DSI_TSC dsi_tsc; + + void write_dma(int proc, int size, uint32_t adr, uint32_t val); + uint32_t read_dma(int proc, int size, uint32_t adr); + bool is_dma(uint32_t adr) { return adr >= _REG_DMA_CONTROL_MIN && adr <= _REG_DMA_CONTROL_MAX; } +}; extern MMU_struct MMU; +extern MMU_struct_new MMU_new; +void MMU_Init(); +void MMU_DeInit(); + +void MMU_Reset(); + +void MMU_setRom(uint8_t *rom, uint32_t mask); +void MMU_unsetRom(); + +#define VRAM_BANKS 9 +#define VRAM_BANK_A 0 +#define VRAM_BANK_B 1 +#define VRAM_BANK_C 2 +#define VRAM_BANK_D 3 +#define VRAM_BANK_E 4 +#define VRAM_BANK_F 5 +#define VRAM_BANK_G 6 +#define VRAM_BANK_H 7 +#define VRAM_BANK_I 8 + +#define VRAM_PAGE_ABG 0 +#define VRAM_PAGE_BBG 128 +#define VRAM_PAGE_AOBJ 256 +#define VRAM_PAGE_BOBJ 384 + +struct VramConfiguration +{ + enum Purpose + { + OFF, + INVALID, + ABG, + BBG, + AOBJ, + BOBJ, + LCDC, + ARM7, + TEX, + TEXPAL, + ABGEXTPAL, + BBGEXTPAL, + AOBJEXTPAL, + BOBJEXTPAL + }; + + struct BankInfo + { + Purpose purpose; + int ofs; + } banks[VRAM_BANKS]; + + void clear() + { + for (int i = 0; i < VRAM_BANKS; ++i) + { + banks[i].ofs = 0; + banks[i].purpose = OFF; + } + } +}; -struct armcpu_memory_iface { - /** the 32 bit instruction prefetch */ - u32 FASTCALL (*prefetch32)( void *data, u32 adr); - - /** the 16 bit instruction prefetch */ - u16 FASTCALL (*prefetch16)( void *data, u32 adr); - - /** read 8 bit data value */ - u8 FASTCALL (*read8)( void *data, u32 adr); - /** read 16 bit data value */ - u16 FASTCALL (*read16)( void *data, u32 adr); - /** read 32 bit data value */ - u32 FASTCALL (*read32)( void *data, u32 adr); - - /** write 8 bit data value */ - void FASTCALL (*write8)( void *data, u32 adr, u8 val); - /** write 16 bit data value */ - void FASTCALL (*write16)( void *data, u32 adr, u16 val); - /** write 32 bit data value */ - void FASTCALL (*write32)( void *data, u32 adr, u32 val); - - void *data; -}; - - -void MMU_Init(void); -void MMU_DeInit(void); - -void MMU_clearMem( void); - -void MMU_setRom(u8 * rom, u32 mask); -void MMU_unsetRom( void); - - -/** - * Memory reading - */ -u8 FASTCALL MMU_read8(u32 proc, u32 adr); -u16 FASTCALL MMU_read16(u32 proc, u32 adr); -u32 FASTCALL MMU_read32(u32 proc, u32 adr); - -#ifdef MMU_ENABLE_ACL - u8 FASTCALL MMU_read8_acl(u32 proc, u32 adr, u32 access); - u16 FASTCALL MMU_read16_acl(u32 proc, u32 adr, u32 access); - u32 FASTCALL MMU_read32_acl(u32 proc, u32 adr, u32 access); -#else - #define MMU_read8_acl(proc,adr,access) MMU_read8(proc,adr) - #define MMU_read16_acl(proc,adr,access) MMU_read16(proc,adr) - #define MMU_read32_acl(proc,adr,access) MMU_read32(proc,adr) -#endif - -/** - * Memory writing - */ -void FASTCALL MMU_write8(u32 proc, u32 adr, u8 val); -void FASTCALL MMU_write16(u32 proc, u32 adr, u16 val); -void FASTCALL MMU_write32(u32 proc, u32 adr, u32 val); - -#ifdef MMU_ENABLE_ACL - void FASTCALL MMU_write8_acl(u32 proc, u32 adr, u8 val); - void FASTCALL MMU_write16_acl(u32 proc, u32 adr, u16 val); - void FASTCALL MMU_write32_acl(u32 proc, u32 adr, u32 val); -#else - #define MMU_write8_acl MMU_write8 - #define MMU_write16_acl MMU_write16 - #define MMU_write32_acl MMU_write32 +extern VramConfiguration vramConfiguration; + +const int VRAM_ARM9_PAGES = 512; +extern uint8_t vram_arm9_map[VRAM_ARM9_PAGES]; + +template uint8_t _MMU_read08(uint32_t addr); +template uint16_t _MMU_read16(uint32_t addr); +template uint32_t _MMU_read32(uint32_t addr); +template void _MMU_write08(uint32_t addr, uint8_t val); +template void _MMU_write16(uint32_t addr, uint16_t val); +template void _MMU_write32(uint32_t addr, uint32_t val); + +template inline uint8_t _MMU_read08(uint32_t addr) { return _MMU_read08(addr); } +template inline uint16_t _MMU_read16(uint32_t addr) { return _MMU_read16(addr); } +template inline uint32_t _MMU_read32(uint32_t addr) { return _MMU_read32(addr); } +template inline void _MMU_write08(uint32_t addr, uint8_t val) { _MMU_write08(addr,val); } +template inline void _MMU_write16(uint32_t addr, uint16_t val) { _MMU_write16(addr,val); } +template inline void _MMU_write32(uint32_t addr, uint32_t val) { _MMU_write32(addr,val); } + +void FASTCALL _MMU_ARM9_write08(uint32_t adr, uint8_t val); +void FASTCALL _MMU_ARM9_write16(uint32_t adr, uint16_t val); +void FASTCALL _MMU_ARM9_write32(uint32_t adr, uint32_t val); +uint8_t FASTCALL _MMU_ARM9_read08(uint32_t adr); +uint16_t FASTCALL _MMU_ARM9_read16(uint32_t adr); +uint32_t FASTCALL _MMU_ARM9_read32(uint32_t adr); + +void FASTCALL _MMU_ARM7_write08(uint32_t adr, uint8_t val); +void FASTCALL _MMU_ARM7_write16(uint32_t adr, uint16_t val); +void FASTCALL _MMU_ARM7_write32(uint32_t adr, uint32_t val); +uint8_t FASTCALL _MMU_ARM7_read08(uint32_t adr); +uint16_t FASTCALL _MMU_ARM7_read16(uint32_t adr); +uint32_t FASTCALL _MMU_ARM7_read32(uint32_t adr); + +extern uint32_t partie; + +extern uint32_t _MMU_MAIN_MEM_MASK; +extern uint32_t _MMU_MAIN_MEM_MASK16; +extern uint32_t _MMU_MAIN_MEM_MASK32; +void SetupMMU(bool debugConsole, bool dsi); + +// ALERT!!!!!!!!!!!!!! +// the following inline functions dont do the 0x0FFFFFFF mask. +// this may result in some unexpected behavior + +inline uint8_t _MMU_read08(int PROCNUM, MMU_ACCESS_TYPE AT, uint32_t addr) +{ + // special handling for DMA: read 0 from TCM + if (PROCNUM == ARMCPU_ARM9 && AT == MMU_AT_DMA) + { + if (addr < 0x02000000) + return 0; // itcm + if ((addr & ~0x3FFF) == MMU.DTCMRegion) + return 0; // dtcm + } + +#ifdef HAVE_LUA + CallRegisteredLuaMemHook(addr, 1, /*FIXME*/ 0, LUAMEMHOOK_READ); #endif -void FASTCALL MMU_doDMA(u32 proc, u32 num); + if (PROCNUM == ARMCPU_ARM9 && (addr & ~0x3FFF) == MMU.DTCMRegion) + // Returns data from DTCM (ARM9 only) + return T1ReadByte(MMU.ARM9_DTCM, addr & 0x3FFF); + + if ((addr & 0x0F000000) == 0x02000000) + return T1ReadByte(MMU.MAIN_MEM, addr & _MMU_MAIN_MEM_MASK); + + if (PROCNUM == ARMCPU_ARM9) + return _MMU_ARM9_read08(addr); + else + return _MMU_ARM7_read08(addr); +} + +inline uint16_t _MMU_read16(int PROCNUM, MMU_ACCESS_TYPE AT, uint32_t addr) +{ + // special handling for DMA: read 0 from TCM + if (PROCNUM == ARMCPU_ARM9 && AT == MMU_AT_DMA) + { + if (addr < 0x02000000) + return 0; // itcm + if ((addr & ~0x3FFF) == MMU.DTCMRegion) + return 0; // dtcm + } +#ifdef HAVE_LUA + CallRegisteredLuaMemHook(addr, 2, /*FIXME*/ 0, LUAMEMHOOK_READ); +#endif -/* - * The base ARM memory interfaces - */ -extern struct armcpu_memory_iface arm9_base_memory_iface; -extern struct armcpu_memory_iface arm7_base_memory_iface; -extern struct armcpu_memory_iface arm9_direct_memory_iface; + // special handling for execution from arm9, since we spend so much time in there + if (PROCNUM == ARMCPU_ARM9 && AT == MMU_AT_CODE) + { + if ((addr & 0x0F000000) == 0x02000000) + return T1ReadWord_guaranteedAligned(MMU.MAIN_MEM, addr & _MMU_MAIN_MEM_MASK16); + + if (addr < 0x02000000) + return T1ReadWord_guaranteedAligned(MMU.ARM9_ITCM, addr&0x7FFE); + + goto dunno; + } + + if (PROCNUM == ARMCPU_ARM9 && (addr & ~0x3FFF) == MMU.DTCMRegion) + // Returns data from DTCM (ARM9 only) + return T1ReadWord_guaranteedAligned(MMU.ARM9_DTCM, addr & 0x3FFE); + + if ((addr & 0x0F000000) == 0x02000000) + return T1ReadWord_guaranteedAligned(MMU.MAIN_MEM, addr & _MMU_MAIN_MEM_MASK16); + +dunno: + if (PROCNUM == ARMCPU_ARM9) + return _MMU_ARM9_read16(addr); + else + return _MMU_ARM7_read16(addr); +} + +inline uint32_t _MMU_read32(int PROCNUM, MMU_ACCESS_TYPE AT, uint32_t addr) +{ + // special handling for DMA: read 0 from TCM + if (PROCNUM == ARMCPU_ARM9 && AT == MMU_AT_DMA) + { + if (addr < 0x02000000) + return 0; // itcm + if ((addr & ~0x3FFF) == MMU.DTCMRegion) + return 0; // dtcm + } + +#ifdef HAVE_LUA + CallRegisteredLuaMemHook(addr, 4, /*FIXME*/ 0, LUAMEMHOOK_READ); +#endif + + //s pecial handling for execution from arm9, since we spend so much time in there + if (PROCNUM == ARMCPU_ARM9 && AT == MMU_AT_CODE) + { + if ((addr & 0x0F000000) == 0x02000000) + return T1ReadLong_guaranteedAligned(MMU.MAIN_MEM, addr & _MMU_MAIN_MEM_MASK32); + + if (addr < 0x02000000) + return T1ReadLong_guaranteedAligned(MMU.ARM9_ITCM, addr&0x7FFC); + + // what happens when we execute from DTCM? nocash makes it look like we get 0xFFFFFFFF but i can't seem to verify it + // historically, desmume would fall through to its old memory map struct + // which would return unused memory (0) + // it seems the hardware returns 0 or something benign because in actuality 0xFFFFFFFF is an undefined opcode + // and we know our handling for that is solid + + goto dunno; + } + + // special handling for execution from arm7. try reading from main memory first + if (PROCNUM == ARMCPU_ARM7 && (addr & 0x0F000000) == 0x02000000) + return T1ReadLong_guaranteedAligned(MMU.MAIN_MEM, addr & _MMU_MAIN_MEM_MASK32); + + // for other arm9 cases, we have to check from dtcm first because it is patched on top of the main memory range + if (PROCNUM == ARMCPU_ARM9) + { + if ((addr & ~0x3FFF) == MMU.DTCMRegion) + // Returns data from DTCM (ARM9 only) + return T1ReadLong_guaranteedAligned(MMU.ARM9_DTCM, addr & 0x3FFC); + + if ((addr & 0x0F000000) == 0x02000000) + return T1ReadLong_guaranteedAligned(MMU.MAIN_MEM, addr & _MMU_MAIN_MEM_MASK32); + } + +dunno: + if (PROCNUM == ARMCPU_ARM9) + return _MMU_ARM9_read32(addr); + else + return _MMU_ARM7_read32(addr); +} + +inline void _MMU_write08(int PROCNUM, MMU_ACCESS_TYPE AT, uint32_t addr, uint8_t val) +{ + // special handling for DMA: discard writes to TCM + if (PROCNUM == ARMCPU_ARM9 && AT == MMU_AT_DMA) + { + if (addr < 0x02000000) + return; // itcm + if ((addr & ~0x3FFF) == MMU.DTCMRegion) + return; // dtcm + } + + if (PROCNUM == ARMCPU_ARM9 && (addr & ~0x3FFF) == MMU.DTCMRegion) + { + T1WriteByte(MMU.ARM9_DTCM, addr & 0x3FFF, val); +#ifdef HAVE_LUA + CallRegisteredLuaMemHook(addr, 1, val, LUAMEMHOOK_WRITE); +#endif + return; + } + + if ((addr & 0x0F000000) == 0x02000000) + { + T1WriteByte( MMU.MAIN_MEM, addr & _MMU_MAIN_MEM_MASK, val); +#ifdef HAVE_LUA + CallRegisteredLuaMemHook(addr, 1, val, LUAMEMHOOK_WRITE); +#endif + return; + } + + if (PROCNUM == ARMCPU_ARM9) + _MMU_ARM9_write08(addr, val); + else + _MMU_ARM7_write08(addr, val); +#ifdef HAVE_LUA + CallRegisteredLuaMemHook(addr, 1, val, LUAMEMHOOK_WRITE); +#endif +} + +inline void _MMU_write16(int PROCNUM, MMU_ACCESS_TYPE AT, uint32_t addr, uint16_t val) +{ + // special handling for DMA: discard writes to TCM + if (PROCNUM == ARMCPU_ARM9 && AT == MMU_AT_DMA) + { + if (addr < 0x02000000) + return; // itcm + if ((addr & ~0x3FFF) == MMU.DTCMRegion) + return; // dtcm + } + + if (PROCNUM == ARMCPU_ARM9 && (addr & ~0x3FFF) == MMU.DTCMRegion) + { + T1WriteWord(MMU.ARM9_DTCM, addr & 0x3FFE, val); +#ifdef HAVE_LUA + CallRegisteredLuaMemHook(addr, 2, val, LUAMEMHOOK_WRITE); +#endif + return; + } + + if ((addr & 0x0F000000) == 0x02000000) + { + T1WriteWord( MMU.MAIN_MEM, addr & _MMU_MAIN_MEM_MASK16, val); +#ifdef HAVE_LUA + CallRegisteredLuaMemHook(addr, 2, val, LUAMEMHOOK_WRITE); +#endif + return; + } + + if (PROCNUM == ARMCPU_ARM9) + _MMU_ARM9_write16(addr, val); + else + _MMU_ARM7_write16(addr, val); +#ifdef HAVE_LUA + CallRegisteredLuaMemHook(addr, 2, val, LUAMEMHOOK_WRITE); +#endif +} + +inline void _MMU_write32(int PROCNUM, MMU_ACCESS_TYPE AT, uint32_t addr, uint32_t val) +{ + // special handling for DMA: discard writes to TCM + if (PROCNUM == ARMCPU_ARM9 && AT == MMU_AT_DMA) + { + if (addr < 0x02000000) + return; // itcm + if ((addr & ~0x3FFF) == MMU.DTCMRegion) + return; // dtcm + } + + if (PROCNUM == ARMCPU_ARM9 && (addr & ~0x3FFF) == MMU.DTCMRegion) + { + T1WriteLong(MMU.ARM9_DTCM, addr & 0x3FFC, val); +#ifdef HAVE_LUA + CallRegisteredLuaMemHook(addr, 4, val, LUAMEMHOOK_WRITE); +#endif + return; + } + if ((addr & 0x0F000000) == 0x02000000) + { + T1WriteLong( MMU.MAIN_MEM, addr & _MMU_MAIN_MEM_MASK32, val); +#ifdef HAVE_LUA + CallRegisteredLuaMemHook(addr, 4, val, LUAMEMHOOK_WRITE); #endif + return; + } + + if (PROCNUM == ARMCPU_ARM9) + _MMU_ARM9_write32(addr, val); + else + _MMU_ARM7_write32(addr, val); +#ifdef HAVE_LUA + CallRegisteredLuaMemHook(addr, 4, val, LUAMEMHOOK_WRITE); +#endif +} + +#define READ32(a,b) _MMU_read32((b) & 0xFFFFFFFC) +#define WRITE32(a,b,c) _MMU_write32((b) & 0xFFFFFFFC,c) +#define READ16(a,b) _MMU_read16((b) & 0xFFFFFFFE) +#define WRITE16(a,b,c) _MMU_write16((b) & 0xFFFFFFFE,c) +#define READ8(a,b) _MMU_read08(b) +#define WRITE8(a,b,c) _MMU_write08(b, c) + +template inline uint8_t _MMU_read08(uint32_t addr) { return _MMU_read08(PROCNUM, AT, addr); } +template inline uint16_t _MMU_read16(uint32_t addr) { return _MMU_read16(PROCNUM, AT, addr); } +template inline uint32_t _MMU_read32(uint32_t addr) { return _MMU_read32(PROCNUM, AT, addr); } +template inline void _MMU_write08(uint32_t addr, uint8_t val) { _MMU_write08(PROCNUM, AT, addr, val); } +template inline void _MMU_write16(uint32_t addr, uint16_t val) { _MMU_write16(PROCNUM, AT, addr, val); } +template inline void _MMU_write32(uint32_t addr, uint32_t val) { _MMU_write32(PROCNUM, AT, addr, val); } diff -Nru audacious-plugins-4.1/src/xsf/desmume/MMU_timing.h audacious-plugins-4.3.1/src/xsf/desmume/MMU_timing.h --- audacious-plugins-4.1/src/xsf/desmume/MMU_timing.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/MMU_timing.h 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,383 @@ +/* + Copyright (C) 2006 yopyop + Copyright (C) 2007 shash + Copyright (C) 2007-2011 DeSmuME team + + This file 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 file 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 the this software. If not, see . +*/ + +// this file is split from MMU.h for the purpose of avoiding ridiculous recompile times +// when changing it, because practically everything includes MMU.h. + +#pragma once + +#include +#include +#include "MMU.h" +#include "cp15.h" +#include "readwrite.h" +#include "NDSSystem.h" + +//////////////////////////////////////////////////////////////// +// MEMORY TIMING ACCURACY CONFIGURATION +// +// the more of these are enabled, +// the more accurate memory access timing _should_ become. +// they should be listed roughly in order of most to least important. +// it's reasonable to disable some of these as a speed hack. +// obviously, these defines don't cover all the variables or features needed, +// and in particular, DMA or code+data access bus contention is still missing. + +// disable this to prevent the advanced timing logic from ever running at all +//#define ENABLE_ADVANCED_TIMING + +#ifdef ENABLE_ADVANCED_TIMING +// makes non-sequential accesses slower than sequential ones. +#define ACCOUNT_FOR_NON_SEQUENTIAL_ACCESS +// (SOMETIMES THIS IS A BIG SPEED HIT!) + +// enables emulation of code fetch waits. +#define ACCOUNT_FOR_CODE_FETCH_CYCLES + +// makes access to DTCM (arm9 only) fast. +#define ACCOUNT_FOR_DATA_TCM_SPEED + +// enables simulation of cache hits and cache misses. +#define ENABLE_CACHE_CONTROLLER_EMULATION + +#endif //ENABLE_ADVANCED_TIMING + +// +//////////////////////////////////////////////////////////////// + +inline bool USE_TIMING() +{ +#ifdef ENABLE_ADVANCED_TIMING + return CommonSettings.advanced_timing; +#else + return false; +#endif +} + +enum MMU_ACCESS_DIRECTION +{ + MMU_AD_READ, MMU_AD_WRITE +}; + +// note that we don't actually emulate the cache contents here, +// only enough to guess what would be a cache hit or a cache miss. +// this doesn't really get used unless ENABLE_CACHE_CONTROLLER_EMULATION is defined. +template class CacheController +{ +public: + template bool Cached(uint32_t addr) + { + uint32_t blockMasked = addr & BLOCKMASK; + if (blockMasked == this->m_cacheCache) + return true; + else + return this->CachedInternal(addr, blockMasked); + } + + void Reset() + { + for (int blockIndex = 0; blockIndex < NUMBLOCKS; ++blockIndex) + this->m_blocks[blockIndex].Reset(); + this->m_cacheCache = ~0U; + } + CacheController() + { + this->Reset(); + } + +private: + template bool CachedInternal(uint32_t addr, uint32_t blockMasked) + { + uint32_t blockIndex = blockMasked >> BLOCKSIZESHIFT; + CacheBlock &block = this->m_blocks[blockIndex]; + addr &= TAGMASK; + + for (int way = 0; way < ASSOCIATIVITY; ++way) + if (addr == block.tag[way]) + { + // found it, already allocated + this->m_cacheCache = blockMasked; + return true; + } + if (DIR == MMU_AD_READ) + { + // TODO: support other allocation orders? + block.tag[block.nextWay++] = addr; + block.nextWay %= ASSOCIATIVITY; + this->m_cacheCache = blockMasked; + } + return false; + } + + enum { SIZE = 1 << SIZESHIFT }; + enum { ASSOCIATIVITY = 1 << ASSOCIATIVESHIFT }; + enum { BLOCKSIZE = 1 << BLOCKSIZESHIFT }; + enum { TAGSHIFT = SIZESHIFT - ASSOCIATIVESHIFT }; + enum { TAGMASK = ~0U << TAGSHIFT }; + enum { BLOCKMASK = (~0U >> (32 - TAGSHIFT)) & (~0U << BLOCKSIZESHIFT) }; + enum { WORDSIZE = sizeof(uint32_t) }; + enum { WORDSPERBLOCK = (1 << BLOCKSIZESHIFT) / WORDSIZE }; + enum { DATAPERWORD = WORDSIZE * ASSOCIATIVITY }; + enum { DATAPERBLOCK = DATAPERWORD * WORDSPERBLOCK }; + enum { NUMBLOCKS = SIZE / DATAPERBLOCK }; + + struct CacheBlock + { + uint32_t tag[ASSOCIATIVITY]; + uint32_t nextWay; + + void Reset() + { + this->nextWay = 0; + for (int way = 0; way < ASSOCIATIVITY; ++way) + this->tag[way] = 0; + } + }; + + uint32_t m_cacheCache; // optimization + + CacheBlock m_blocks[NUMBLOCKS]; +}; + +template inline uint32_t _MMU_accesstime(uint32_t addr, bool sequential); + +template class FetchAccessUnit +{ +public: + template uint32_t Fetch(uint32_t address) + { +#ifdef ACCOUNT_FOR_CODE_FETCH_CYCLES + bool prohibit = TIMING; +#else + bool prohibit = false; +#endif + + if (AT == MMU_AT_CODE && !prohibit) + return 1; + + uint32_t time = _MMU_accesstime(address, +#ifdef ACCOUNT_FOR_NON_SEQUENTIAL_ACCESS + TIMING ? (address == m_lastAddress + (READSIZE >> 3)) : true +#else + true +#endif + ); + +#ifdef ACCOUNT_FOR_NON_SEQUENTIAL_ACCESS + this->m_lastAddress = address; +#endif + + return time; + } + + void Reset() + { + this->m_lastAddress = ~0U; + } + FetchAccessUnit() + { + this->Reset(); + } + +private: + uint32_t m_lastAddress; +}; + +struct MMU_struct_timing +{ + // technically part of the cp15, but I didn't want the dereferencing penalty. + // these template values correspond with the value of armcp15->cacheType. + CacheController<13, 2, 5> arm9codeCache; // 8192 bytes, 4-way associative, 32-byte blocks + CacheController<12, 2, 5> arm9dataCache; // 4096 bytes, 4-way associative, 32-byte blocks + + // technically part of armcpu_t, but that struct isn't templated on PROCNUM + FetchAccessUnit<0, MMU_AT_CODE> arm9codeFetch; + FetchAccessUnit<0, MMU_AT_DATA> arm9dataFetch; + FetchAccessUnit<1, MMU_AT_CODE> arm7codeFetch; + FetchAccessUnit<1, MMU_AT_DATA> arm7dataFetch; + + template FetchAccessUnit &armCodeFetch(); + template FetchAccessUnit &armDataFetch(); +}; +template<> inline FetchAccessUnit<0, MMU_AT_CODE> &MMU_struct_timing::armCodeFetch<0>() { return this->arm9codeFetch; } +template<> inline FetchAccessUnit<1, MMU_AT_CODE> &MMU_struct_timing::armCodeFetch<1>() { return this->arm7codeFetch; } +template<> inline FetchAccessUnit<0, MMU_AT_DATA> &MMU_struct_timing::armDataFetch<0>() { return this->arm9dataFetch; } +template<> inline FetchAccessUnit<1, MMU_AT_DATA> &MMU_struct_timing::armDataFetch<1>() { return this->arm7dataFetch; } + +extern MMU_struct_timing MMU_timing; + +// calculates the time a single memory access takes, +// in units of cycles of the current processor. +// this function replaces what used to be MMU_WAIT16 and MMU_WAIT32. +// this may have side effects, so don't call it more than necessary. +template inline uint32_t _MMU_accesstime(uint32_t addr, bool /*sequential*/) +{ + static const int MC = 1; // cached or tcm memory speed + static const int M32 = PROCNUM == ARMCPU_ARM9 ? 2 : 1; // access through 32-bit bus + static const int M16 = M32 * (READSIZE > 16 ? 2 : 1); // access through 16-bit bus + static const int MSLW = M16 * 8; // this needs tuning + + if (PROCNUM == ARMCPU_ARM9 && AT == MMU_AT_CODE && addr < 0x02000000) + return MC; // ITCM + +#ifdef ACCOUNT_FOR_DATA_TCM_SPEED + if (TIMING && PROCNUM == ARMCPU_ARM9 && AT == MMU_AT_DATA && (addr & ~0x3FFF) == MMU.DTCMRegion) + return MC; // DTCM +#endif + + // for now, assume the cache is always enabled for all of main memory + if (AT != MMU_AT_DMA && TIMING && PROCNUM == ARMCPU_ARM9 && (addr & 0x0F000000) == 0x02000000) + { +#ifdef ENABLE_CACHE_CONTROLLER_EMULATION + bool cached = false; + if (AT == MMU_AT_CODE) + cached = MMU_timing.arm9codeCache.Cached(addr); + if (AT == MMU_AT_DATA) + cached = MMU_timing.arm9dataCache.Cached(addr); + if (cached) + return MC; + uint32_t c; + if (sequential && AT == MMU_AT_DATA) + c = M16; // bonus for sequential data access + else if (DIRECTION == MMU_AD_READ) + c = M16 * 5; + else + c = M16 * 2; // should be 4, but write buffer isn't emulated yet. + if (DIRECTION == MMU_AD_READ) + // cache miss while reading means it has to fill a whole cache line + // by reading 32 bytes... + c += 8 * M32 * 2; + return c; +#elif defined(ACCOUNT_FOR_NON_SEQUENTIAL_ACCESS) + // this is the closest approximation I could find + // to the with-cache-controller timing + // that doesn't do any actual caching logic. + return sequential ? MC : M16; +#endif + } + + static const TWaitState MMU_WAIT[] = + { + // ITCM, ITCM, MAIN, SWI, REG, VMEM, LCD, OAM, ROM, ROM, RAM, U, U, U, U, BIOS +#define X MC, MC, M16, M32, M32, M16, M16, M32, MSLW, MSLW, MSLW, M32,M32,M32,M32, M32, + // duplicate it 16 times (this was somehow faster than using a mask of 0xF) + X X X X X X X X X X X X X X X X +#undef X + }; + + uint32_t c = MMU_WAIT[addr >> 24]; + +#ifdef ACCOUNT_FOR_NON_SEQUENTIAL_ACCESS + if (TIMING && !sequential) + { + //if(c != MC || PROCNUM==ARMCPU_ARM7) // check not needed anymore because ITCM/DTCM return earlier + { + c += PROCNUM == ARMCPU_ARM9 ? 6 : 1; + } + } +#endif + + return c; +} + +// calculates the cycle time of a single memory access in the MEM stage. +// to be used to calculate the memCycles argument for MMU_aluMemCycles. +// this may have side effects, so don't call it more than necessary. +template inline uint32_t MMU_memAccessCycles(uint32_t addr) +{ + if (TIMING) + return MMU_timing.armDataFetch().template Fetch(addr & (~((READSIZE >> 3) - 1))); + else + return MMU_timing.armDataFetch().template Fetch(addr & (~((READSIZE >> 3) - 1))); +} + +template inline uint32_t MMU_memAccessCycles(uint32_t addr) +{ + if (USE_TIMING()) + return MMU_memAccessCycles(addr); + else + return MMU_memAccessCycles(addr); +} + +// calculates the cycle time of a single code fetch in the FETCH stage +// to be used to calculate the fetchCycles argument for MMU_fetchExecuteCycles. +// this may have side effects, so don't call it more than necessary. +template inline uint32_t MMU_codeFetchCycles(uint32_t addr) +{ + if (USE_TIMING()) + return MMU_timing.armCodeFetch().template Fetch(addr & (~((READSIZE >> 3) - 1))); + else + return MMU_timing.armCodeFetch().template Fetch(addr & (~((READSIZE >> 3) - 1))); +} + +// calculates the cycle contribution of ALU + MEM stages (= EXECUTE) +// given ALU cycle time and the summation of multiple memory access cycle times. +// this function might belong more in armcpu, but I don't think it matters. +template inline uint32_t MMU_aluMemCycles(uint32_t aluCycles, uint32_t memCycles) +{ + if (PROCNUM == ARMCPU_ARM9) + // ALU and MEM are different stages of the 5-stage pipeline. + // we approximate the pipeline throughput using max, + // since simply adding the cycles of each instruction together + // fails to take into account the parallelism of the arm pipeline + // and would make the emulated system unnaturally slow. + return std::max(aluCycles, memCycles); + else + // ALU and MEM are part of the same stage of the 3-stage pipeline, + // thus they occur in sequence and we can simply add the counts together. + return aluCycles + memCycles; +} + +// calculates the cycle contribution of ALU + MEM stages (= EXECUTE) +// given ALU cycle time and the description of a single memory access. +// this may have side effects, so don't call it more than necessary. +template inline uint32_t MMU_aluMemAccessCycles(uint32_t aluCycles, uint32_t addr) +{ + uint32_t memCycles; + if (USE_TIMING()) + memCycles = MMU_memAccessCycles(addr); + else + memCycles = MMU_memAccessCycles(addr); + return MMU_aluMemCycles(aluCycles, memCycles); +} + +// calculates the cycle contribution of FETCH + EXECUTE stages +// given executeCycles = the combined ALU+MEM cycles +// and fetchCycles = the cycle time of the FETCH stage +// this function might belong more in armcpu, but I don't think it matters. +template inline uint32_t MMU_fetchExecuteCycles(uint32_t executeCycles, uint32_t fetchCycles) +{ +#ifdef ACCOUNT_FOR_CODE_FETCH_CYCLES + bool allow = true; +#else + bool allow = false; +#endif + + if (USE_TIMING() && allow) + { + // execute and fetch are different stages of the pipeline for both arm7 and arm9. + // again, we approximate the pipeline throughput using max. + return std::max(executeCycles, fetchCycles); + // TODO: add an option to support conflict between MEM and FETCH cycles + // if they're both using the same data bus. + // in the case of a conflict this should be: + // return std::max(aluCycles, memCycles + fetchCycles); + } + return executeCycles; +} diff -Nru audacious-plugins-4.1/src/xsf/desmume/NDSSystem.cc audacious-plugins-4.3.1/src/xsf/desmume/NDSSystem.cc --- audacious-plugins-4.1/src/xsf/desmume/NDSSystem.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/NDSSystem.cc 2023-04-29 20:17:32.000000000 +0000 @@ -1,208 +1,78 @@ -/* Copyright (C) 2006 yopyop - yopyop156@ifrance.com - yopyop156.ifrance.com - - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ +/* + Copyright (C) 2006 yopyop + Copyright (C) 2008-2013 DeSmuME team + + This file 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 file 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. -#include -#include + You should have received a copy of the GNU General Public License + along with the this software. If not, see . +*/ +#include +#include +#include +#include +#include #include "NDSSystem.h" #include "MMU.h" -//#include "cflash.h" +#include "cp15.h" +#include "bios.h" +#include "readwrite.h" +#include "firmware.h" +#include "slot1.h" -//#include "ROMReader.h" +// =============================================================== -/* the count of bytes copied from the firmware into memory */ -#define NDS_FW_USER_SETTINGS_MEM_BYTE_COUNT 0x70 +TCommonSettings CommonSettings; +GameInfo gameInfo; NDSSystem nds; +static std::unique_ptr firmware; +volatile bool execute = false; -static u32 -calc_CRC16( u32 start, const u8 *data, int count) { - int i,j; - u32 crc = start & 0xffff; - static u16 val[] = { 0xC0C1,0xC181,0xC301,0xC601,0xCC01,0xD801,0xF001,0xA001 }; - for(i = 0; i < count; i++) - { - crc = crc ^ data[i]; - - for(j = 0; j < 8; j++) { - int do_bit = 0; - - if ( crc & 0x1) - do_bit = 1; - - crc = crc >> 1; - - if ( do_bit) { - crc = crc ^ (val[j] << (7-j)); - } - } - } - return crc; -} - -static int -copy_firmware_user_data( u8 *dest_buffer, const u8 *fw_data) { - /* - * Determine which of the two user settings in the firmware is the current - * and valid one and then copy this into the destination buffer. - * - * The current setting will have a greater count. - * Settings are only valid if its CRC16 is correct. - */ - int user1_valid = 0; - int user2_valid = 0; - u32 user_settings_offset; - u32 fw_crc; - u32 crc; - int copy_good = 0; - - user_settings_offset = fw_data[0x20]; - user_settings_offset |= fw_data[0x21] << 8; - user_settings_offset <<= 3; - - if ( user_settings_offset <= 0x3FE00) { - s32 copy_settings_offset = -1; - - crc = calc_CRC16( 0xffff, &fw_data[user_settings_offset], - NDS_FW_USER_SETTINGS_MEM_BYTE_COUNT); - fw_crc = fw_data[user_settings_offset + 0x72]; - fw_crc |= fw_data[user_settings_offset + 0x73] << 8; - if ( crc == fw_crc) { - user1_valid = 1; - } - - crc = calc_CRC16( 0xffff, &fw_data[user_settings_offset + 0x100], - NDS_FW_USER_SETTINGS_MEM_BYTE_COUNT); - fw_crc = fw_data[user_settings_offset + 0x100 + 0x72]; - fw_crc |= fw_data[user_settings_offset + 0x100 + 0x73] << 8; - if ( crc == fw_crc) { - user2_valid = 1; - } - - if ( user1_valid) { - if ( user2_valid) { - u16 count1, count2; - - count1 = fw_data[user_settings_offset + 0x70]; - count1 |= fw_data[user_settings_offset + 0x71] << 8; - - count2 = fw_data[user_settings_offset + 0x100 + 0x70]; - count2 |= fw_data[user_settings_offset + 0x100 + 0x71] << 8; - - if ( count2 > count1) { - copy_settings_offset = user_settings_offset + 0x100; - } - else { - copy_settings_offset = user_settings_offset; - } - } - else { - copy_settings_offset = user_settings_offset; - } - } - else if ( user2_valid) { - /* copy the second user settings */ - copy_settings_offset = user_settings_offset + 0x100; - } - - if ( copy_settings_offset > 0) { - memcpy( dest_buffer, &fw_data[copy_settings_offset], - NDS_FW_USER_SETTINGS_MEM_BYTE_COUNT); - copy_good = 1; - } - } - - return copy_good; -} - - -#ifdef GDB_STUB -int NDS_Init( struct armcpu_memory_iface *arm9_mem_if, - struct armcpu_ctrl_iface **arm9_ctrl_iface, - struct armcpu_memory_iface *arm7_mem_if, - struct armcpu_ctrl_iface **arm7_ctrl_iface) { -#else -int NDS_Init( void) { -#endif - nds.ARM9Cycle = 0; - nds.ARM7Cycle = 0; - nds.cycles = 0; - MMU_Init(); - nds.nextHBlank = 3168; - nds.VCount = 0; - nds.lignerendu = false; - - if (Screen_Init(GFXCORE_DUMMY) != 0) - return -1; - - #ifdef GDB_STUB - armcpu_new(&NDS_ARM7,1, arm7_mem_if, arm7_ctrl_iface); - armcpu_new(&NDS_ARM9,0, arm9_mem_if, arm9_ctrl_iface); -#else - armcpu_new(&NDS_ARM7,1); - armcpu_new(&NDS_ARM9,0); -#endif +int NDS_Init() +{ + MMU_Init(); + nds.VCount = 0; - if (SPU_Init(SNDCORE_DUMMY, 735) != 0) - return -1; + armcpu_new(&NDS_ARM7, 1); + armcpu_new(&NDS_ARM9, 0); -#ifdef EXPERIMENTAL_WIFI - WIFI_Init(&wifiMac) ; -#endif + if (SPU_Init(SNDCORE_DUMMY, 740)) + return -1; - return 0; + return 0; } -static void armcpu_deinit(armcpu_t *armcpu) +void NDS_DeInit() { - if(armcpu->coproc[15]) - { - free(armcpu->coproc[15]); - armcpu->coproc[15] = 0; - } -} - -void NDS_DeInit(void) { - if(MMU.CART_ROM != MMU.UNUSED_RAM) - NDS_FreeROM(); - - armcpu_deinit(&NDS_ARM7); - armcpu_deinit(&NDS_ARM9); + if (MMU.CART_ROM != MMU.UNUSED_RAM) + NDS_FreeROM(); - nds.nextHBlank = 3168; - SPU_DeInit(); - Screen_DeInit(); - MMU_DeInit(); + SPU_DeInit(); + MMU_DeInit(); } -BOOL NDS_SetROM(u8 * rom, u32 mask) +bool NDS_SetROM(uint8_t *rom, uint32_t mask) { - MMU_setRom(rom, mask); + MMU_setRom(rom, mask); - return true; + return true; } -NDS_header * NDS_getROMHeader(void) +std::unique_ptr NDS_getROMHeader() { - NDS_header * header = (NDS_header *) malloc(sizeof(NDS_header)); + if (MMU.CART_ROM == MMU.UNUSED_RAM) + return std::unique_ptr(); + auto header = std::unique_ptr(new NDS_header); memcpy(header->gameTile, MMU.CART_ROM, 12); memcpy(header->gameCode, MMU.CART_ROM + 12, 4); @@ -212,6 +82,7 @@ header->cardSize = MMU.CART_ROM[20]; memcpy(header->cardInfo, MMU.CART_ROM + 21, 8); header->flags = MMU.CART_ROM[29]; + header->romversion = MMU.CART_ROM[30]; header->ARM9src = T1ReadLong(MMU.CART_ROM, 32); header->ARM9exe = T1ReadLong(MMU.CART_ROM, 36); header->ARM9cpy = T1ReadLong(MMU.CART_ROM, 40); @@ -242,507 +113,1048 @@ memcpy(header->logo, MMU.CART_ROM + 192, 156); header->logoCRC16 = T1ReadWord(MMU.CART_ROM, 348); header->headerCRC16 = T1ReadWord(MMU.CART_ROM, 350); - memcpy(header->reserved, MMU.CART_ROM + 352, 160); + memcpy(header->reserved, MMU.CART_ROM + 352, std::min(160, gameInfo.romsize - 352)); return header; - - //return (NDS_header *)MMU.CART_ROM; } - - -void NDS_FreeROM(void) +RomBanner::RomBanner(bool defaultInit) { - if (MMU.CART_ROM != MMU.UNUSED_RAM) - free(MMU.CART_ROM); - MMU_unsetRom(); -// if (MMU.bupmem.fp) -// fclose(MMU.bupmem.fp); -// MMU.bupmem.fp = nullptr; + if (!defaultInit) + return; + this->version = 1; //Version (0001h) + this->crc16 = 0; //CRC16 across entries 020h..83Fh + memset(this->reserved, 0, sizeof(this->reserved)); + memset(this->bitmap, 0, sizeof(this->bitmap)); + memset(this->palette, 0, sizeof(this->palette)); + memset(this->titles, 0, sizeof(this->titles)); + memset(this->end0xFF, 0, sizeof(this->end0xFF)); } +void NDS_FreeROM() +{ + if (MMU.CART_ROM == reinterpret_cast(&gameInfo.romdata[0])) + gameInfo.romdata.reset(); + if (MMU.CART_ROM != MMU.UNUSED_RAM) + delete [] MMU.CART_ROM; + MMU_unsetRom(); +} +void NDS_Sleep() { nds.sleeping = true; } -void NDS_Reset( void) +enum ESI_DISPCNT { - BOOL oldexecute=execute; - u32 i; - u32 src; - u32 dst; - NDS_header * header = NDS_getROMHeader(); + ESI_DISPCNT_HStart, ESI_DISPCNT_HStartIRQ, ESI_DISPCNT_HDraw, ESI_DISPCNT_HBlank +}; - if (!header) return ; +uint64_t nds_timer; +static uint64_t nds_arm9_timer, nds_arm7_timer; - execute = false; +struct TSequenceItem +{ + uint64_t timestamp; + uint32_t param; + bool enabled; - MMU_clearMem(); + virtual ~TSequenceItem() { } - src = header->ARM9src; - dst = header->ARM9cpy; + virtual bool isTriggered() const + { + return this->enabled && nds_timer >= this->timestamp; + } - for(i = 0; i < (header->ARM9binSize>>2); ++i) - { - MMU_write32(0, dst, T1ReadLong(MMU.CART_ROM, src)); - dst += 4; - src += 4; - } + virtual uint64_t next() const + { + return this->timestamp; + } +}; - src = header->ARM7src; - dst = header->ARM7cpy; +template struct TSequenceItem_Timer : public TSequenceItem +{ + bool isTriggered() const + { + return this->enabled && nds_timer >= nds.timerCycle[procnum][num]; + } - for(i = 0; i < (header->ARM7binSize>>2); ++i) - { - MMU_write32(1, dst, T1ReadLong(MMU.CART_ROM, src)); - dst += 4; - src += 4; - } + void schedule() + { + this->enabled = MMU.timerON[procnum][num] && MMU.timerMODE[procnum][num] != 0xFFFF; + } - armcpu_init(&NDS_ARM7, header->ARM7exe); - armcpu_init(&NDS_ARM9, header->ARM9exe); + uint64_t next() const + { + return nds.timerCycle[procnum][num]; + } - nds.ARM9Cycle = 0; - nds.ARM7Cycle = 0; - nds.cycles = 0; - memset(nds.timerCycle, 0, sizeof(s32) * 2 * 4); - memset(nds.timerOver, 0, sizeof(BOOL) * 2 * 4); - nds.nextHBlank = 3168; - nds.VCount = 0; - nds.old = 0; - nds.diff = 0; - nds.lignerendu = false; - nds.touchX = nds.touchY = 0; + void exec() + { + uint8_t *regs = !procnum ? MMU.ARM9_REG : MMU.ARM7_REG; + bool first = true, over; + // we'll need to check chained timers.. + for (int i = num; i < 4; ++i) + { + // maybe too many checks if this is here, but we need it here for now + if (!MMU.timerON[procnum][i]) + return; - MMU_write16(0, 0x04000130, 0x3FF); - MMU_write16(1, 0x04000130, 0x3FF); - MMU_write8(1, 0x04000136, 0x43); + if (MMU.timerMODE[procnum][i] == 0xFFFF) + { + ++MMU.timer[procnum][i]; + over = !MMU.timer[procnum][i]; + } + else + { + if (!first) + break; // this timer isn't chained. break the chain + first = false; + + over = true; + int remain = 65536 - MMU.timerReload[procnum][i]; + int ctr = 0; + while (nds.timerCycle[procnum][i] <= nds_timer) + { + nds.timerCycle[procnum][i] += remain << MMU.timerMODE[procnum][i]; + ++ctr; + } +#ifndef NDEBUG + if (ctr > 1) + fprintf(stderr, "yikes!!!!! please report!\n"); +#endif + } - /* - * Setup a copy of the firmware user settings in memory. - * (this is what the DS firmware would do). - */ - { - u8 temp_buffer[NDS_FW_USER_SETTINGS_MEM_BYTE_COUNT]; - int fw_index; + if (over) + { + MMU.timer[procnum][i] = MMU.timerReload[procnum][i]; + if (T1ReadWord(regs, 0x102 + i * 4) & 0x40) + NDS_makeIrq(procnum, IRQ_BIT_TIMER_0 + i); + } + else + break; // no more chained timers to trigger. we're done here + } + } +}; - if ( copy_firmware_user_data( temp_buffer, MMU.fw.data)) { - for ( fw_index = 0; fw_index < NDS_FW_USER_SETTINGS_MEM_BYTE_COUNT; fw_index++) { - MMU_write8( 0, 0x027FFC80 + fw_index, temp_buffer[fw_index]); - } - } - } +template struct TSequenceItem_DMA : public TSequenceItem +{ + DmaController *controller; - // Copy the whole header to Main RAM 0x27FFE00 on startup. - // Reference: http://nocash.emubase.de/gbatek.htm#dscartridgeheader - for (i = 0; i < ((0x170+0x90)/4); i++) + bool isTriggered() const { - MMU_write32 (0, 0x027FFE00+i*4, LE_TO_LOCAL_32(((u32*)MMU.CART_ROM)[i])); + return this->controller->dmaCheck && nds_timer>= this->controller->nextEvent; } - MainScreen.offset = 0; - SubScreen.offset = 192; - - //MMU_write32(0, 0x02007FFC, 0xE92D4030); + bool isEnabled() const + { + return this->controller->dmaCheck; + } - //ARM7 BIOS IRQ HANDLER - MMU_write32(1, 0x00, 0xE25EF002); - MMU_write32(1, 0x04, 0xEAFFFFFE); - MMU_write32(1, 0x18, 0xEA000000); - MMU_write32(1, 0x20, 0xE92D500F); - MMU_write32(1, 0x24, 0xE3A00301); - MMU_write32(1, 0x28, 0xE28FE000); - MMU_write32(1, 0x2C, 0xE510F004); - MMU_write32(1, 0x30, 0xE8BD500F); - MMU_write32(1, 0x34, 0xE25EF004); + uint64_t next() const + { + return this->controller->nextEvent; + } - //ARM9 BIOS IRQ HANDLER - MMU_write32(0, 0xFFFF0018, 0xEA000000); - MMU_write32(0, 0xFFFF0020, 0xE92D500F); - MMU_write32(0, 0xFFFF0024, 0xEE190F11); - MMU_write32(0, 0xFFFF0028, 0xE1A00620); - MMU_write32(0, 0xFFFF002C, 0xE1A00600); - MMU_write32(0, 0xFFFF0030, 0xE2800C40); - MMU_write32(0, 0xFFFF0034, 0xE28FE000); - MMU_write32(0, 0xFFFF0038, 0xE510F004); - MMU_write32(0, 0xFFFF003C, 0xE8BD500F); - MMU_write32(0, 0xFFFF0040, 0xE25EF004); + void exec() + { + //fprintf(stderr, "exec from TSequenceItem_DMA: %d %d\n",procnum,chan); + this->controller->exec(); + } +}; - MMU_write32(0, 0x0000004, 0xE3A0010E); - MMU_write32(0, 0x0000008, 0xE3A01020); -// MMU_write32(0, 0x000000C, 0xE1B02110); - MMU_write32(0, 0x000000C, 0xE1B02040); - MMU_write32(0, 0x0000010, 0xE3B02020); -// MMU_write32(0, 0x0000010, 0xE2100202); +struct TSequenceItem_divider : public TSequenceItem +{ + bool isTriggered() const + { + return MMU.divRunning && nds_timer >= MMU.divCycles; + } - free(header); + bool isEnabled() + { + return MMU.divRunning; + } - GPU_Reset(MainScreen.gpu, 0); - GPU_Reset(SubScreen.gpu, 1); - SPU_Reset(); + uint64_t next() const + { + return MMU.divCycles; + } - execute = oldexecute; -} + void exec() + { + MMU_new.div.busy = 0; +#ifdef _WIN64 + T1WriteQuad(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x2A0, MMU.divResult); + T1WriteQuad(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x2A8, MMU.divMod); +#else + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x2A0, MMU.divResult & 0xFFFFFFFF); + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x2A4, (MMU.divResult >> 32) & 0xFFFFFFFF); + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x2A8, MMU.divMod & 0xFFFFFFFF); + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x2AC, (MMU.divMod >> 32) & 0xFFFFFFFF); +#endif + MMU.divRunning = false; + } +}; -static void dma_check(void) +struct TSequenceItem_sqrtunit : public TSequenceItem { - if((MMU.DMAing[0][0])&&(MMU.DMACycle[0][0]<=nds.cycles)) + bool isTriggered() const { - T1WriteLong(ARM9Mem.ARM9_REG, 0xB8 + (0xC*0), T1ReadLong(ARM9Mem.ARM9_REG, 0xB8 + (0xC*0)) & 0x7FFFFFFF); - if((MMU.DMACrt[0][0])&(1<<30)) NDS_makeARM9Int(8); - MMU.DMAing[0][0] = false; + return MMU.sqrtRunning && nds_timer >= MMU.sqrtCycles; } - if((MMU.DMAing[0][1])&&(MMU.DMACycle[0][1]<=nds.cycles)) + bool isEnabled() { - T1WriteLong(ARM9Mem.ARM9_REG, 0xB8 + (0xC*1), T1ReadLong(ARM9Mem.ARM9_REG, 0xB8 + (0xC*1)) & 0x7FFFFFFF); - if((MMU.DMACrt[0][1])&(1<<30)) NDS_makeARM9Int(9); - MMU.DMAing[0][1] = false; + return MMU.sqrtRunning; } - if((MMU.DMAing[0][2])&&(MMU.DMACycle[0][2]<=nds.cycles)) + uint64_t next() const { - T1WriteLong(ARM9Mem.ARM9_REG, 0xB8 + (0xC*2), T1ReadLong(ARM9Mem.ARM9_REG, 0xB8 + (0xC*2)) & 0x7FFFFFFF); - if((MMU.DMACrt[0][2])&(1<<30)) NDS_makeARM9Int(10); - MMU.DMAing[0][2] = false; + return MMU.sqrtCycles; } - if((MMU.DMAing[0][3])&&(MMU.DMACycle[0][3]<=nds.cycles)) + void exec() { - T1WriteLong(ARM9Mem.ARM9_REG, 0xB8 + (0xC*3), T1ReadLong(ARM9Mem.ARM9_REG, 0xB8 + (0xC*3)) & 0x7FFFFFFF); - if((MMU.DMACrt[0][3])&(1<<30)) NDS_makeARM9Int(11); - MMU.DMAing[0][3] = false; + MMU_new.sqrt.busy = 0; + T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x2B4, MMU.sqrtResult); + MMU.sqrtRunning = false; } +}; - if((MMU.DMAing[1][0])&&(MMU.DMACycle[1][0]<=nds.cycles)) +static struct Sequencer +{ + bool nds_vblankEnded; + bool reschedule; + TSequenceItem dispcnt; + TSequenceItem wifi; + TSequenceItem_divider divider; + TSequenceItem_sqrtunit sqrtunit; + TSequenceItem/*_GXFIFO*/ gxfifo; + TSequenceItem_DMA<0, 0> dma_0_0; TSequenceItem_DMA<0, 1> dma_0_1; + TSequenceItem_DMA<0, 2> dma_0_2; TSequenceItem_DMA<0, 3> dma_0_3; + TSequenceItem_DMA<1, 0> dma_1_0; TSequenceItem_DMA<1, 1> dma_1_1; + TSequenceItem_DMA<1, 2> dma_1_2; TSequenceItem_DMA<1, 3> dma_1_3; + TSequenceItem_Timer<0, 0> timer_0_0; TSequenceItem_Timer<0, 1> timer_0_1; + TSequenceItem_Timer<0, 2> timer_0_2; TSequenceItem_Timer<0, 3> timer_0_3; + TSequenceItem_Timer<1, 0> timer_1_0; TSequenceItem_Timer<1, 1> timer_1_1; + TSequenceItem_Timer<1, 2> timer_1_2; TSequenceItem_Timer<1, 3> timer_1_3; + + void init(); + + void execHardware(); + uint64_t findNext(); +} sequencer; + +void NDS_RescheduleTimers() +{ +#define check(X, Y) sequencer.timer_##X##_##Y .schedule(); + check(0, 0); check(0, 1); check(0, 2); check(0, 3); + check(1, 0); check(1, 1); check(1, 2); check(1, 3); +#undef check + + NDS_Reschedule(); +} + +void NDS_RescheduleDMA() +{ + //TBD + NDS_Reschedule(); +} + +static void initSchedule() +{ + sequencer.init(); + + // begin at the very end of the last scanline + // so that at t=0 we can increment to scanline=0 + nds.VCount = 262; + + sequencer.nds_vblankEnded = false; +} + +// 2196372 ~= (ARM7_CLOCK << 16) / 1000000 +// This value makes more sense to me, because: +// ARM7_CLOCK = 33.51 mhz +// = 33513982 cycles per second +// = 33.513982 cycles per microsecond +//const uint64_t kWifiCycles = 34*2; +//(this isn't very precise. I don't think it needs to be) + +void Sequencer::init() +{ + NDS_RescheduleTimers(); + NDS_RescheduleDMA(); + + this->reschedule = false; + nds_timer = 0; + nds_arm9_timer = 0; + nds_arm7_timer = 0; + + this->dispcnt.enabled = true; + this->dispcnt.param = ESI_DISPCNT_HStart; + this->dispcnt.timestamp = 0; + + this->dma_0_0.controller = &MMU_new.dma[0][0]; + this->dma_0_1.controller = &MMU_new.dma[0][1]; + this->dma_0_2.controller = &MMU_new.dma[0][2]; + this->dma_0_3.controller = &MMU_new.dma[0][3]; + this->dma_1_0.controller = &MMU_new.dma[1][0]; + this->dma_1_1.controller = &MMU_new.dma[1][1]; + this->dma_1_2.controller = &MMU_new.dma[1][2]; + this->dma_1_3.controller = &MMU_new.dma[1][3]; +} + +static void execHardware_hblank() +{ + // this logic keeps moving around. + // now, we try and give the game as much time as possible to finish doing its work for the scanline, + // by drawing scanline N at the end of drawing time (but before subsequent interrupt or hdma-driven events happen) + // don't try to do this at the end of the scanline, because some games (sonic classics) may use hblank IRQ to set + // scroll regs for the next scanline + if (nds.VCount < 192) + // trigger hblank dmas + // but notice, we do that just after we finished drawing the line + // (values copied by this hdma should not be used until the next scanline) + triggerDma(EDMAMode_HBlank); + + // turn on hblank status bit + T1WriteWord(MMU.ARM9_REG, 4, T1ReadWord(MMU.ARM9_REG, 4) | 2); + T1WriteWord(MMU.ARM7_REG, 4, T1ReadWord(MMU.ARM7_REG, 4) | 2); + + // fire hblank interrupts if necessary + if (T1ReadWord(MMU.ARM9_REG, 4) & 0x10) + NDS_makeIrq(ARMCPU_ARM9, IRQ_BIT_LCD_HBLANK); + if (T1ReadWord(MMU.ARM7_REG, 4) & 0x10) + NDS_makeIrq(ARMCPU_ARM7, IRQ_BIT_LCD_HBLANK); + + // emulation housekeeping. for some reason we always do this at hblank, + // even though it sounds more reasonable to do it at hstart + SPU_Emulate_core(); +} + +static void execHardware_hstart_vblankEnd() +{ + sequencer.nds_vblankEnded = true; + sequencer.reschedule = true; + + // turn off vblank status bit + T1WriteWord(MMU.ARM9_REG, 4, T1ReadWord(MMU.ARM9_REG, 4) & ~1); + T1WriteWord(MMU.ARM7_REG, 4, T1ReadWord(MMU.ARM7_REG, 4) & ~1); +} + +static void execHardware_hstart_vblankStart() +{ + //fprintf(stderr, "--------VBLANK!!!--------\n"); + + // fire vblank interrupts if necessary + for (int i = 0; i < 2; ++i) + if (MMU.reg_IF_pending[i] & (1 << IRQ_BIT_LCD_VBLANK)) + { + MMU.reg_IF_pending[i] &= ~(1 << IRQ_BIT_LCD_VBLANK); + NDS_makeIrq(i, IRQ_BIT_LCD_VBLANK); + } + + // trigger vblank dmas + triggerDma(EDMAMode_VBlank); +} + +static uint16_t execHardware_gen_vmatch_goal() +{ + uint16_t vmatch = T1ReadWord(MMU.ARM9_REG, 4); + vmatch = (vmatch >> 8) | ((vmatch << 1) & (1 << 8)); + return vmatch; +} + +static void execHardware_hstart_vcount_irq() +{ + // trigger pending VMATCH irqs + if (MMU.reg_IF_pending[ARMCPU_ARM9] & (1 << IRQ_BIT_LCD_VMATCH)) { - T1WriteLong(MMU.ARM7_REG, 0xB8 + (0xC*0), T1ReadLong(MMU.ARM7_REG, 0xB8 + (0xC*0)) & 0x7FFFFFFF); - if((MMU.DMACrt[1][0])&(1<<30)) NDS_makeARM7Int(8); - MMU.DMAing[1][0] = false; + MMU.reg_IF_pending[ARMCPU_ARM9] &= ~(1 << IRQ_BIT_LCD_VMATCH); + NDS_makeIrq(ARMCPU_ARM9, IRQ_BIT_LCD_VMATCH); } - - if((MMU.DMAing[1][1])&&(MMU.DMACycle[1][1]<=nds.cycles)) + if(MMU.reg_IF_pending[ARMCPU_ARM7] & (1 << IRQ_BIT_LCD_VMATCH)) { - T1WriteLong(MMU.ARM7_REG, 0xB8 + (0xC*1), T1ReadLong(MMU.ARM7_REG, 0xB8 + (0xC*1)) & 0x7FFFFFFF); - if((MMU.DMACrt[1][1])&(1<<30)) NDS_makeARM7Int(9); - MMU.DMAing[1][1] = false; + MMU.reg_IF_pending[ARMCPU_ARM7] &= ~(1 << IRQ_BIT_LCD_VMATCH); + NDS_makeIrq(ARMCPU_ARM7, IRQ_BIT_LCD_VMATCH); } +} - if((MMU.DMAing[1][2])&&(MMU.DMACycle[1][2]<=nds.cycles)) +static void execHardware_hstart_vcount() +{ + uint16_t vmatch = execHardware_gen_vmatch_goal(); + if (nds.VCount == vmatch) { - T1WriteLong(MMU.ARM7_REG, 0xB8 + (0xC*2), T1ReadLong(MMU.ARM7_REG, 0xB8 + (0xC*2)) & 0x7FFFFFFF); - if((MMU.DMACrt[1][2])&(1<<30)) NDS_makeARM7Int(10); - MMU.DMAing[1][2] = false; + // arm9 vmatch + T1WriteWord(MMU.ARM9_REG, 4, T1ReadWord(MMU.ARM9_REG, 4) | 4); + if (T1ReadWord(MMU.ARM9_REG, 4) & 32) + MMU.reg_IF_pending[ARMCPU_ARM9] |= 1 << IRQ_BIT_LCD_VMATCH; } + else + T1WriteWord(MMU.ARM9_REG, 4, T1ReadWord(MMU.ARM9_REG, 4) & 0xFFFB); - if((MMU.DMAing[1][3])&&(MMU.DMACycle[1][3]<=nds.cycles)) + vmatch = T1ReadWord(MMU.ARM7_REG, 4); + vmatch = (vmatch >> 8) | ((vmatch << 1) & (1 << 8)); + if (nds.VCount == vmatch) { - T1WriteLong(MMU.ARM7_REG, 0xB8 + (0xC*3), T1ReadLong(MMU.ARM7_REG, 0xB8 + (0xC*3)) & 0x7FFFFFFF); - if((MMU.DMACrt[1][3])&(1<<30)) NDS_makeARM7Int(11); - MMU.DMAing[1][3] = false; + // arm7 vmatch + T1WriteWord(MMU.ARM7_REG, 4, T1ReadWord(MMU.ARM7_REG, 4) | 4); + if (T1ReadWord(MMU.ARM7_REG, 4) & 32) + MMU.reg_IF_pending[ARMCPU_ARM7] |= 1 << IRQ_BIT_LCD_VMATCH; } + else + T1WriteWord(MMU.ARM7_REG, 4, T1ReadWord(MMU.ARM7_REG, 4) & 0xFFFB); +} + +static void execHardware_hstart_irq() +{ + // this function very soon after the registers get updated to trigger IRQs + // this is necessary to fix "egokoro kyoushitsu" which idles waiting for vcount=192, which never happens due to a long vblank irq + // 100% accurate emulation would require the read of VCOUNT to be in the pipeline already with the irq coming in behind it, thus + // allowing the vcount to register as 192 occasionally (maybe about 1 out of 28 frames) + // the actual length of the delay is in execHardware() where the events are scheduled + sequencer.reschedule = true; + if (nds.VCount == 192) + // when the vcount hits 192, vblank begins + execHardware_hstart_vblankStart(); + + execHardware_hstart_vcount_irq(); +} + +static void execHardware_hstart() +{ + ++nds.VCount; - if((MMU.reg_IF[0]&MMU.reg_IE[0]) && (MMU.reg_IME[0])) + if (nds.VCount == 263) + // when the vcount hits 263 it rolls over to 0 + nds.VCount = 0; + if (nds.VCount == 262) + // when the vcount hits 262, vblank ends (oam pre-renders by one scanline) + execHardware_hstart_vblankEnd(); + else if (nds.VCount == 192) { -#ifdef GDB_STUB - if ( armcpu_flagIrq( &NDS_ARM9)) -#else - if ( armcpu_irqExeption(&NDS_ARM9)) -#endif - { - nds.ARM9Cycle = nds.cycles; - } + // turn on vblank status bit + T1WriteWord(MMU.ARM9_REG, 4, T1ReadWord(MMU.ARM9_REG, 4) | 1); + T1WriteWord(MMU.ARM7_REG, 4, T1ReadWord(MMU.ARM7_REG, 4) | 1); + + // check whether we'll need to fire vblank irqs + if (T1ReadWord(MMU.ARM9_REG, 4) & 0x8) + MMU.reg_IF_pending[ARMCPU_ARM9] |= 1 << IRQ_BIT_LCD_VBLANK; + if (T1ReadWord(MMU.ARM7_REG, 4) & 0x8) + MMU.reg_IF_pending[ARMCPU_ARM7] |= 1 << IRQ_BIT_LCD_VBLANK; } - if((MMU.reg_IF[1]&MMU.reg_IE[1]) && (MMU.reg_IME[1])) + // write the new vcount + T1WriteWord(MMU.ARM9_REG, 6, nds.VCount & 0xFFFF); + T1WriteWord(MMU.ARM9_REG, 0x1006, nds.VCount & 0xFFFF); + T1WriteWord(MMU.ARM7_REG, 6, nds.VCount & 0xFFFF); + T1WriteWord(MMU.ARM7_REG, 0x1006, nds.VCount & 0xFFFF); + + // turn off hblank status bit + T1WriteWord(MMU.ARM9_REG, 4, T1ReadWord(MMU.ARM9_REG, 4) & 0xFFFD); + T1WriteWord(MMU.ARM7_REG, 4, T1ReadWord(MMU.ARM7_REG, 4) & 0xFFFD); + + // handle vcount status + execHardware_hstart_vcount(); + + // trigger hstart dmas + triggerDma(EDMAMode_HStart); + + if (nds.VCount < 192) + // this is hacky. + // there is a corresponding hack in doDMA. + // it should be driven by a fifo (and generate just in time as the scanline is displayed) + // but that isnt even possible until we have some sort of sub-scanline timing. + // it may not be necessary. + triggerDma(EDMAMode_MemDisplay); +} + +void NDS_Reschedule() +{ + sequencer.reschedule = true; +} + +static inline uint64_t _fast_min(uint64_t a, uint64_t b) +{ + // you might find that this is faster on a 64bit system; someone should try it + // http://aggregate.org/MAGIC/#Integer%20Selection + //uint64_t ret = (((((s64)(a-b)) >> (64-1)) & (a^b)) ^ b); + //assert(ret==min(a,b)); + //return ret; + + // but this ends up being the fastest on 32bits + return a>= 63; //no 64bit shra in sse2, what a disappointment + //temp = _mm_and_si128(temp,xorval); + //temp = _mm_xor_si128(temp,__b); + //return temp.m128i_u64[0]; +} + +uint64_t Sequencer::findNext() +{ + // this one is always enabled so dont bother to check it + uint64_t next = this->dispcnt.next(); + + if (this->divider.isEnabled()) + next = _fast_min(next, this->divider.next()); + if (this->sqrtunit.isEnabled()) + next = _fast_min(next, this->sqrtunit.next()); + +#define test(X, Y) \ + if (this->dma_##X##_##Y .isEnabled()) \ + next = _fast_min(next, this->dma_##X##_##Y .next()); + test(0, 0); test(0, 1); test(0, 2); test(0, 3); + test(1, 0); test(1, 1); test(1, 2); test(1, 3); +#undef test +#define test(X, Y) \ + if (this->timer_##X##_##Y .enabled) \ + next = _fast_min(next, this->timer_##X##_##Y .next()); + test(0, 0); test(0, 1); test(0, 2); test(0, 3); + test(1, 0); test(1, 1); test(1, 2); test(1, 3); +#undef test + + return next; +} + +void Sequencer::execHardware() +{ + if (this->dispcnt.isTriggered()) { -#ifdef GDB_STUB - if ( armcpu_flagIrq( &NDS_ARM7)) -#else - if ( armcpu_irqExeption(&NDS_ARM7)) -#endif + switch (this->dispcnt.param) { - nds.ARM7Cycle = nds.cycles; + case ESI_DISPCNT_HStart: + execHardware_hstart(); + // (used to be 3168) + // hstart is actually 8 dots before the visible drawing begins + // we're going to run 1 here and then run 7 in the next case + this->dispcnt.timestamp += 12; + this->dispcnt.param = ESI_DISPCNT_HStartIRQ; + break; + case ESI_DISPCNT_HStartIRQ: + execHardware_hstart_irq(); + this->dispcnt.timestamp += 84; + this->dispcnt.param = ESI_DISPCNT_HDraw; + break; + case ESI_DISPCNT_HDraw: + // duration of non-blanking period is ~1606 clocks (gbatek agrees) [but says its different on arm7] + // im gonna call this 267 dots = 267*6=1602 + // so, this event lasts 267 dots minus the 8 dot preroll + this->dispcnt.timestamp += 3108; + this->dispcnt.param = ESI_DISPCNT_HBlank; + break; + case ESI_DISPCNT_HBlank: + execHardware_hblank(); + // (once this was 1092 or 1092/12=91 dots.) + // there are surely 355 dots per scanline, less 267 for non-blanking period. the rest is hblank and then after that is hstart + this->dispcnt.timestamp += 1056; + this->dispcnt.param = ESI_DISPCNT_HStart; } } + if (this->divider.isTriggered()) + this->divider.exec(); + if (this->sqrtunit.isTriggered()) + this->sqrtunit.exec(); + +#define test(X, Y) \ + if (this->dma_##X##_##Y .isTriggered()) \ + this->dma_##X##_##Y .exec(); + test(0, 0); test(0, 1); test(0, 2); test(0, 3); + test(1, 0); test(1, 1); test(1, 2); test(1, 3); +#undef test +#define test(X, Y) \ + if (this->timer_##X##_##Y .enabled && this->timer_##X##_##Y .isTriggered()) \ + this->timer_##X##_##Y .exec(); + test(0, 0); test(0, 1); test(0, 2); test(0, 3); + test(1, 0); test(1, 1); test(1, 2); test(1, 3); +#undef test +} + +void execHardware_interrupts(); + +// these have not been tuned very well yet. +static const int kMaxWork = 4000; +static const int kIrqWait = 4000; + +template static inline int32_t minarmtime(int32_t arm9, int32_t arm7) +{ + if (doarm9) + { + if (doarm7) + return std::min(arm9, arm7); + else + return arm9; + } + else + return arm7; } -static void timer_check(void) +template +static std::pair armInnerLoop(uint64_t nds_timer_base, int32_t s32next, int32_t arm9, int32_t arm7) { - int p, t; - for (p = 0; p < 2; p++) + int32_t timer = minarmtime(arm9, arm7); + while (timer < s32next && !sequencer.reschedule && execute) { - for (t = 0; t < 4; t++) + if (doarm9 && (!doarm7 || arm9 <= timer)) { - nds.timerOver[p][t] = 0; - if(MMU.timerON[p][t]) + if (!NDS_ARM9.waitIRQ && !nds.freezeBus) { - if(MMU.timerRUN[p][t]) - { - switch(MMU.timerMODE[p][t]) - { - case 0xFFFF : - if(t > 0 && nds.timerOver[p][t - 1]) - { - ++(MMU.timer[p][t]); - nds.timerOver[p][t] = !MMU.timer[p][t]; - if (nds.timerOver[p][t]) - { - if (p == 0) - { - if(T1ReadWord(ARM9Mem.ARM9_REG, 0x102 + (t << 2)) & 0x40) - NDS_makeARM9Int(3 + t); - } - else - { - if(T1ReadWord(MMU.ARM7_REG, 0x102 + (t << 2)) & 0x40) - NDS_makeARM7Int(3 + t); - } - MMU.timer[p][t] = MMU.timerReload[p][t]; - } - } - break; - default : - { - nds.diff = (nds.cycles >> MMU.timerMODE[p][t]) - (nds.timerCycle[p][t] >> MMU.timerMODE[p][t]); - nds.old = MMU.timer[p][t]; - MMU.timer[p][t] += nds.diff; - nds.timerCycle[p][t] += nds.diff << MMU.timerMODE[p][t]; - nds.timerOver[p][t] = nds.old >= MMU.timer[p][t]; - if(nds.timerOver[p][t]) - { - if (p == 0) - { - if(T1ReadWord(ARM9Mem.ARM9_REG, 0x102 + (t << 2)) & 0x40) - NDS_makeARM9Int(3 + t); - } - else - { - if(T1ReadWord(MMU.ARM7_REG, 0x102 + (t << 2)) & 0x40) - NDS_makeARM7Int(3 + t); - } - MMU.timer[p][t] = MMU.timerReload[p][t] + MMU.timer[p][t] - nds.old; - } - } - break; - } - } - else + arm9 += armcpu_exec(); + } + else + arm9 = std::min(s32next, arm9 + kIrqWait); + } + if (doarm7 && (!doarm9 || arm7 <= timer)) + { + if (!NDS_ARM7.waitIRQ && !nds.freezeBus) + { + arm7 += armcpu_exec() << 1; + } + else + { + arm7 = std::min(s32next, arm7 + kIrqWait); + if (arm7 == s32next) { - MMU.timerRUN[p][t] = true; - nds.timerCycle[p][t] = nds.cycles; + nds_timer = nds_timer_base + minarmtime(arm9, arm7); + return armInnerLoop(nds_timer_base, s32next, arm9, arm7); } } } + + timer = minarmtime(arm9, arm7); + nds_timer = nds_timer_base + timer; + } + + return std::make_pair(arm9, arm7); +} + +template void NDS_exec(int32_t) +{ + sequencer.nds_vblankEnded = false; + + if (nds.sleeping) + { + // speculative code: if ANY irq happens, wake up the arm7. + // I think the arm7 program analyzes the system and may decide not to wake up + // if it is dissatisfied with the conditions + if (MMU.reg_IE[1] & MMU.gen_IF<1>()) + nds.sleeping = false; + } + else + { + for (;;) + { + sequencer.execHardware(); + + // break out once per frame + if (sequencer.nds_vblankEnded) + break; + // it should be benign to execute execHardware in the next frame, + // since there won't be anything for it to do (everything should be scheduled in the future) + + // bail in case the system halted + if (!execute) + break; + + execHardware_interrupts(); + + // find next work unit: + uint64_t next = sequencer.findNext(); + next = std::min(next, nds_timer + kMaxWork); // lets set an upper limit for now + + //fprintf(stderr, "%d\n", next - nds_timer); + + sequencer.reschedule = false; + + // cast these down to 32bits so that things run faster on 32bit procs + uint64_t nds_timer_base = nds_timer; + int32_t arm9 = (nds_arm9_timer - nds_timer) & 0xFFFFFFFF; + int32_t arm7 = (nds_arm7_timer - nds_timer) & 0xFFFFFFFF; + int32_t s32next = (next - nds_timer) & 0xFFFFFFFF; + + auto arm9arm7 = armInnerLoop(nds_timer_base, s32next, arm9, arm7); + + arm9 = arm9arm7.first; + arm7 = arm9arm7.second; + nds_arm7_timer = nds_timer_base + arm7; + nds_arm9_timer = nds_timer_base + arm9; + + // if we were waiting for an irq, don't wait too long: + // let's re-analyze it after this hardware event (this rolls back a big burst of irq waiting which may have been interrupted by a resynch) + if (NDS_ARM9.waitIRQ) + nds_arm9_timer = nds_timer; + if (NDS_ARM7.waitIRQ) + nds_arm7_timer = nds_timer; + } + } +} + +template static void execHardware_interrupts_core() +{ + uint32_t IF = MMU.gen_IF(); + uint32_t IE = MMU.reg_IE[PROCNUM]; + uint32_t masked = IF & IE; + if (ARMPROC.halt_IE_and_IF && masked) + { + ARMPROC.halt_IE_and_IF = false; + ARMPROC.waitIRQ = false; + } + + if (masked && MMU.reg_IME[PROCNUM] && !ARMPROC.CPSR.bits.I) + { + //fprintf(stderr, "Executing IRQ on procnum %d with IF = %08X and IE = %08X\n",PROCNUM,IF,IE); + armcpu_irqException(&ARMPROC); + } +} + +void execHardware_interrupts() +{ + execHardware_interrupts_core(); + execHardware_interrupts_core(); +} + +static void PrepareBiosARM7() +{ + NDS_ARM7.BIOS_loaded = false; + memset(MMU.ARM7_BIOS, 0, sizeof(MMU.ARM7_BIOS)); + if (CommonSettings.UseExtBIOS) + { + // read arm7 bios from inputfile and flag it if it succeeds + FILE *arm7inf = fopen(CommonSettings.ARM7BIOS, "rb"); + if (fread(MMU.ARM7_BIOS, 1, 16384, arm7inf) == 16384) + NDS_ARM7.BIOS_loaded = true; + fclose(arm7inf); + } + + // choose to use SWI emulation or routines from bios + if (CommonSettings.SWIFromBIOS && NDS_ARM7.BIOS_loaded) + { + NDS_ARM7.swi_tab = 0; + + // if we used routines from bios, apply patches + if (CommonSettings.PatchSWI3) + _MMU_write16(0x00002F08, 0x4770); + } + else + NDS_ARM7.swi_tab = ARM_swi_tab[ARMCPU_ARM7]; + + if (!NDS_ARM7.BIOS_loaded) + { + // fake bios content, critical to normal operations, since we dont have a real bios. + +#if 0 + // someone please document what is in progress here + // TODO + T1WriteLong(MMU.ARM7_BIOS, 0x0000, 0xEAFFFFFE); // loop for Reset !!! + T1WriteLong(MMU.ARM7_BIOS, 0x0004, 0xEAFFFFFE); // loop for Undef instr expection + T1WriteLong(MMU.ARM7_BIOS, 0x0008, 0xEA00009C); // SWI + T1WriteLong(MMU.ARM7_BIOS, 0x000C, 0xEAFFFFFE); // loop for Prefetch Abort + T1WriteLong(MMU.ARM7_BIOS, 0x0010, 0xEAFFFFFE); // loop for Data Abort + T1WriteLong(MMU.ARM7_BIOS, 0x0014, 0x00000000); // Reserved + T1WriteLong(MMU.ARM7_BIOS, 0x001C, 0x00000000); // Fast IRQ +#endif + T1WriteLong(MMU.ARM7_BIOS, 0x0000, 0xE25EF002); + T1WriteLong(MMU.ARM7_BIOS, 0x0018, 0xEA000000); + T1WriteLong(MMU.ARM7_BIOS, 0x0020, 0xE92D500F); + T1WriteLong(MMU.ARM7_BIOS, 0x0024, 0xE3A00301); + T1WriteLong(MMU.ARM7_BIOS, 0x0028, 0xE28FE000); + T1WriteLong(MMU.ARM7_BIOS, 0x002C, 0xE510F004); + T1WriteLong(MMU.ARM7_BIOS, 0x0030, 0xE8BD500F); + T1WriteLong(MMU.ARM7_BIOS, 0x0034, 0xE25EF004); + } +} + +static void PrepareBiosARM9() +{ + memset(MMU.ARM9_BIOS, 0, sizeof(MMU.ARM9_BIOS)); + NDS_ARM9.BIOS_loaded = false; + if (CommonSettings.UseExtBIOS) + { + // read arm9 bios from inputfile and flag it if it succeeds + FILE *arm9inf = fopen(CommonSettings.ARM9BIOS, "rb"); + if (fread(MMU.ARM9_BIOS, 1, 4096, arm9inf) == 4096) + NDS_ARM9.BIOS_loaded = true; + fclose(arm9inf); + } + + // choose to use SWI emulation or routines from bios + if (CommonSettings.SWIFromBIOS && NDS_ARM9.BIOS_loaded) + { + NDS_ARM9.swi_tab = 0; + + // if we used routines from bios, apply patches + if (CommonSettings.PatchSWI3) + _MMU_write16(0xFFFF07CC, 0x4770); + } + else + NDS_ARM9.swi_tab = ARM_swi_tab[ARMCPU_ARM9]; + + if (!NDS_ARM9.BIOS_loaded) + { + // fake bios content, critical to normal operations, since we dont have a real bios. + // it'd be cool if we could write this in some kind of assembly language, inline or otherwise, without some bulky dependencies + // perhaps we could build it with devkitarm? but thats bulky (offline) dependencies, to be sure.. + + // reminder: bios chains data abort to fast irq + + // exception vectors: + T1WriteLong(MMU.ARM9_BIOS, 0x0000, 0xEAFFFFFE); // (infinite loop for) Reset !!! + //T1WriteLong(MMU.ARM9_BIOS, 0x0004, 0xEAFFFFFE); // (infinite loop for) Undefined instruction + T1WriteLong(MMU.ARM9_BIOS, 0x0004, 0xEA000004); // Undefined instruction -> Fast IRQ (just guessing) + T1WriteLong(MMU.ARM9_BIOS, 0x0008, 0xEA00009C); // SWI -> ????? + T1WriteLong(MMU.ARM9_BIOS, 0x000C, 0xEAFFFFFE); // (infinite loop for) Prefetch Abort + T1WriteLong(MMU.ARM9_BIOS, 0x0010, 0xEA000001); // Data Abort -> Fast IRQ + T1WriteLong(MMU.ARM9_BIOS, 0x0014, 0x00000000); // Reserved + T1WriteLong(MMU.ARM9_BIOS, 0x0018, 0xEA000095); // Normal IRQ -> 0x0274 + T1WriteLong(MMU.ARM9_BIOS, 0x001C, 0xEA00009D); // Fast IRQ -> 0x0298 + + static const uint8_t logo_data[] = + { + 0x24, 0xFF, 0xAE, 0x51, 0x69, 0x9A, 0xA2, 0x21, 0x3D, 0x84, 0x82, 0x0A, 0x84, 0xE4, 0x09, 0xAD, + 0x11, 0x24, 0x8B, 0x98, 0xC0, 0x81, 0x7F, 0x21, 0xA3, 0x52, 0xBE, 0x19, 0x93, 0x09, 0xCE, 0x20, + 0x10, 0x46, 0x4A, 0x4A, 0xF8, 0x27, 0x31, 0xEC, 0x58, 0xC7, 0xE8, 0x33, 0x82, 0xE3, 0xCE, 0xBF, + 0x85, 0xF4, 0xDF, 0x94, 0xCE, 0x4B, 0x09, 0xC1, 0x94, 0x56, 0x8A, 0xC0, 0x13, 0x72, 0xA7, 0xFC, + 0x9F, 0x84, 0x4D, 0x73, 0xA3, 0xCA, 0x9A, 0x61, 0x58, 0x97, 0xA3, 0x27, 0xFC, 0x03, 0x98, 0x76, + 0x23, 0x1D, 0xC7, 0x61, 0x03, 0x04, 0xAE, 0x56, 0xBF, 0x38, 0x84, 0x00, 0x40, 0xA7, 0x0E, 0xFD, + 0xFF, 0x52, 0xFE, 0x03, 0x6F, 0x95, 0x30, 0xF1, 0x97, 0xFB, 0xC0, 0x85, 0x60, 0xD6, 0x80, 0x25, + 0xA9, 0x63, 0xBE, 0x03, 0x01, 0x4E, 0x38, 0xE2, 0xF9, 0xA2, 0x34, 0xFF, 0xBB, 0x3E, 0x03, 0x44, + 0x78, 0x00, 0x90, 0xCB, 0x88, 0x11, 0x3A, 0x94, 0x65, 0xC0, 0x7C, 0x63, 0x87, 0xF0, 0x3C, 0xAF, + 0xD6, 0x25, 0xE4, 0x8B, 0x38, 0x0A, 0xAC, 0x72, 0x21, 0xD4, 0xF8, 0x07 + }; + + // logo (do some games fail to boot without this? example?) + for (int t = 0; t < 0x9C; ++t) + MMU.ARM9_BIOS[t + 0x20] = logo_data[t]; + + //...0xBC: + + // (now what goes in this gap??) + + // IRQ handler: get dtcm address and jump to a vector in it + T1WriteLong(MMU.ARM9_BIOS, 0x0274, 0xE92D500F); //STMDB SP!, {R0-R3,R12,LR} + T1WriteLong(MMU.ARM9_BIOS, 0x0278, 0xEE190F11); //MRC CP15, 0, R0, CR9, CR1, 0 + T1WriteLong(MMU.ARM9_BIOS, 0x027C, 0xE1A00620); //MOV R0, R0, LSR #C + T1WriteLong(MMU.ARM9_BIOS, 0x0280, 0xE1A00600); //MOV R0, R0, LSL #C + T1WriteLong(MMU.ARM9_BIOS, 0x0284, 0xE2800C40); //ADD R0, R0, #4000 + T1WriteLong(MMU.ARM9_BIOS, 0x0288, 0xE28FE000); //ADD LR, PC, #0 + T1WriteLong(MMU.ARM9_BIOS, 0x028C, 0xE510F004); //LDR PC, [R0, -#4] + + // ???? + T1WriteLong(MMU.ARM9_BIOS, 0x0290, 0xE8BD500F); // LDMIA SP!, {R0-R3,R12,LR} + T1WriteLong(MMU.ARM9_BIOS, 0x0294, 0xE25EF004); // SUBS PC, LR, #4 + + // ------- + // FIQ and abort exception handler + // TODO - this code is copied from the bios. refactor it + // friendly reminder: to calculate an immediate offset: encoded = (desired_address-cur_address-8) + + T1WriteLong(MMU.ARM9_BIOS, 0x0298, 0xE10FD000); // MRS SP, CPSR + T1WriteLong(MMU.ARM9_BIOS, 0x029C, 0xE38DD0C0); // ORR SP, SP, #C0 + + T1WriteLong(MMU.ARM9_BIOS, 0x02A0, 0xE12FF00D); // MSR CPSR_fsxc, SP + T1WriteLong(MMU.ARM9_BIOS, 0x02A4, 0xE59FD028); // LDR SP, [FFFF02D4] + T1WriteLong(MMU.ARM9_BIOS, 0x02A8, 0xE28DD001); // ADD SP, SP, #1 + T1WriteLong(MMU.ARM9_BIOS, 0x02AC, 0xE92D5000); // STMDB SP!, {R12,LR} + + T1WriteLong(MMU.ARM9_BIOS, 0x02B0, 0xE14FE000); // MRS LR, SPSR + T1WriteLong(MMU.ARM9_BIOS, 0x02B4, 0xEE11CF10); // MRC CP15, 0, R12, CR1, CR0, 0 + T1WriteLong(MMU.ARM9_BIOS, 0x02B8, 0xE92D5000); // STMDB SP!, {R12,LR} + T1WriteLong(MMU.ARM9_BIOS, 0x02BC, 0xE3CCC001); // BIC R12, R12, #1 + + T1WriteLong(MMU.ARM9_BIOS, 0x02C0, 0xEE01CF10); // MCR CP15, 0, R12, CR1, CR0, 0 + T1WriteLong(MMU.ARM9_BIOS, 0x02C4, 0xE3CDC001); // BIC R12, SP, #1 + T1WriteLong(MMU.ARM9_BIOS, 0x02C8, 0xE59CC010); // LDR R12, [R12, #10] + T1WriteLong(MMU.ARM9_BIOS, 0x02CC, 0xE35C0000); // CMP R12, #0 + + T1WriteLong(MMU.ARM9_BIOS, 0x02D0, 0x112FFF3C); // BLXNE R12 + T1WriteLong(MMU.ARM9_BIOS, 0x02D4, 0x027FFD9C); // 0x027FFD9C + // --------- } } -void NDS_exec_hframe(int cpu_clockdown_level_arm9, int cpu_clockdown_level_arm7) +void NDS_Reset() { - int h; - for (h = 0; h < 2; h++) + bool fw_success = false; + auto header = NDS_getROMHeader(); + + if (!header) + return; + + nds.sleeping = false; + nds.cardEjected = false; + nds.freezeBus = 0; + + nds_timer = 0; + nds_arm9_timer = 0; + nds_arm7_timer = 0; + + SPU_DeInit(); + + MMU_Reset(); + + PrepareBiosARM7(); + PrepareBiosARM9(); + + // according to smea, this is initialized to 3 by the time we get into a user game program. who does this? + // well, the firmware load process is about to write a boot program into SIWRAM for the arm7. so we need it setup by now. + // but, this is a bit weird.. I would be expecting the bioses to do that. maybe we have some more detail to emulate. + // * is this setting the default, or does the bios do it before loading the firmware programs? + // at any, it's important that this be done long before the user code ever runs + _MMU_write08(REG_WRAMCNT, 3); + + firmware.reset(new CFIRMWARE()); + fw_success = firmware->load(); + + if (NDS_ARM7.BIOS_loaded && NDS_ARM9.BIOS_loaded && CommonSettings.BootFromFirmware && fw_success) { - s32 nb = nds.cycles + (h ? (99 * 12) : (256 * 12)); + // Copy secure area to memory if needed. + // could we get a comment about what's going on here? + // how does this stuff get copied before anything ever even runs? + // does it get mapped straight to the rom somehow? + // This code could be made more clear too. + if (header->ARM9src >= 0x4000 && header->ARM9src < 0x8000) + { + uint32_t src = header->ARM9src; + uint32_t dst = header->ARM9cpy; - while (nb > nds.ARM9Cycle && !NDS_ARM9.waitIRQ) - nds.ARM9Cycle += armcpu_exec(&NDS_ARM9) << (cpu_clockdown_level_arm9); - if (NDS_ARM9.waitIRQ) nds.ARM9Cycle = nb; - while (nb > nds.ARM7Cycle && !NDS_ARM7.waitIRQ) - nds.ARM7Cycle += armcpu_exec(&NDS_ARM7) << (1 + (cpu_clockdown_level_arm7)); - if (NDS_ARM7.waitIRQ) nds.ARM7Cycle = nb; - nds.cycles = (nds.ARM9Cycle> 2; - if(nds.VCount<192) + for (uint32_t i = 0; i < size; ++i) { - if(MMU.DMAStartTime[0][0] == 2) - MMU_doDMA(0, 0); - if(MMU.DMAStartTime[0][1] == 2) - MMU_doDMA(0, 1); - if(MMU.DMAStartTime[0][2] == 2) - MMU_doDMA(0, 2); - if(MMU.DMAStartTime[0][3] == 2) - MMU_doDMA(0, 3); + _MMU_write32(dst, T1ReadLong(MMU.CART_ROM, src)); + src += 4; + dst += 4; } } + + // TODO someone describe why here + if (firmware->patched) + { + armcpu_init(&NDS_ARM7, 0x00000008); + armcpu_init(&NDS_ARM9, 0xFFFF0008); + } else { - /* HDISP */ - u32 vmatch; + // set the cpus to an initial state with their respective firmware program entrypoints + armcpu_init(&NDS_ARM7, firmware->ARM7bootAddr); + armcpu_init(&NDS_ARM9, firmware->ARM9bootAddr); + } - nds.nextHBlank += 4260; - ++nds.VCount; - T1WriteWord(ARM9Mem.ARM9_REG, 4, T1ReadWord(ARM9Mem.ARM9_REG, 4) & 0xFFFD); - T1WriteWord(MMU.ARM7_REG, 4, T1ReadWord(MMU.ARM7_REG, 4) & 0xFFFD); - - if(MMU.DMAStartTime[0][0] == 3) - MMU_doDMA(0, 0); - if(MMU.DMAStartTime[0][1] == 3) - MMU_doDMA(0, 1); - if(MMU.DMAStartTime[0][2] == 3) - MMU_doDMA(0, 2); - if(MMU.DMAStartTime[0][3] == 3) - MMU_doDMA(0, 3); + // set REG_POSTFLG to the value indicating pre-firmware status + MMU.ARM9_REG[0x300] = 0; + MMU.ARM7_REG[0x300] = 0; + } + else + { + // fake firmware boot-up process - // Main memory display - if(MMU.DMAStartTime[0][0] == 4) - { - MMU_doDMA(0, 0); - MMU.DMAStartTime[0][0] = 0; - } - if(MMU.DMAStartTime[0][1] == 4) - { - MMU_doDMA(0, 1); - MMU.DMAStartTime[0][1] = 0; - } - if(MMU.DMAStartTime[0][2] == 4) - { - MMU_doDMA(0, 2); - MMU.DMAStartTime[0][2] = 0; - } - if(MMU.DMAStartTime[0][3] == 4) - { - MMU_doDMA(0, 3); - MMU.DMAStartTime[0][3] = 0; - } + // copy the arm9 program to the address specified by rom header + uint32_t src = header->ARM9src; + uint32_t dst = header->ARM9cpy; + for (uint32_t i = 0; i < (header->ARM9binSize >> 2); ++i) + { + _MMU_write32(dst, T1ReadLong(MMU.CART_ROM, src)); + dst += 4; + src += 4; + } - if(MMU.DMAStartTime[1][0] == 4) - { - MMU_doDMA(1, 0); - MMU.DMAStartTime[1][0] = 0; - } - if(MMU.DMAStartTime[1][1] == 4) - { - MMU_doDMA(1, 1); - MMU.DMAStartTime[0][1] = 0; - } - if(MMU.DMAStartTime[1][2] == 4) - { - MMU_doDMA(1, 2); - MMU.DMAStartTime[1][2] = 0; - } - if(MMU.DMAStartTime[1][3] == 4) - { - MMU_doDMA(1, 3); - MMU.DMAStartTime[1][3] = 0; - } + // copy the arm7 program to the address specified by rom header + src = header->ARM7src; + dst = header->ARM7cpy; - if(nds.VCount == 192) - { - /* VBLANK */ - T1WriteWord(ARM9Mem.ARM9_REG, 4, T1ReadWord(ARM9Mem.ARM9_REG, 4) | 1); - T1WriteWord(MMU.ARM7_REG, 4, T1ReadWord(MMU.ARM7_REG, 4) | 1); - NDS_ARM9VBlankInt(); - NDS_ARM7VBlankInt(); - - if(MMU.DMAStartTime[0][0] == 1) - MMU_doDMA(0, 0); - if(MMU.DMAStartTime[0][1] == 1) - MMU_doDMA(0, 1); - if(MMU.DMAStartTime[0][2] == 1) - MMU_doDMA(0, 2); - if(MMU.DMAStartTime[0][3] == 1) - MMU_doDMA(0, 3); - - if(MMU.DMAStartTime[1][0] == 1) - MMU_doDMA(1, 0); - if(MMU.DMAStartTime[1][1] == 1) - MMU_doDMA(1, 1); - if(MMU.DMAStartTime[1][2] == 1) - MMU_doDMA(1, 2); - if(MMU.DMAStartTime[1][3] == 1) - MMU_doDMA(1, 3); - } - else if(nds.VCount == 263) - { - const int cycles_per_frame = (263 * (99 * 12 + 256 * 12)); - /* VDISP */ - nds.nextHBlank = 3168; - nds.VCount = 0; - T1WriteWord(ARM9Mem.ARM9_REG, 4, T1ReadWord(ARM9Mem.ARM9_REG, 4) & 0xFFFE); - T1WriteWord(MMU.ARM7_REG, 4, T1ReadWord(MMU.ARM7_REG, 4) & 0xFFFE); - - nds.cycles -= cycles_per_frame; - nds.ARM9Cycle -= cycles_per_frame; - nds.ARM7Cycle -= cycles_per_frame; - nb -= cycles_per_frame; - if(MMU.timerON[0][0]) - nds.timerCycle[0][0] -= cycles_per_frame; - if(MMU.timerON[0][1]) - nds.timerCycle[0][1] -= cycles_per_frame; - if(MMU.timerON[0][2]) - nds.timerCycle[0][2] -= cycles_per_frame; - if(MMU.timerON[0][3]) - nds.timerCycle[0][3] -= cycles_per_frame; - - if(MMU.timerON[1][0]) - nds.timerCycle[1][0] -= cycles_per_frame; - if(MMU.timerON[1][1]) - nds.timerCycle[1][1] -= cycles_per_frame; - if(MMU.timerON[1][2]) - nds.timerCycle[1][2] -= cycles_per_frame; - if(MMU.timerON[1][3]) - nds.timerCycle[1][3] -= cycles_per_frame; - if(MMU.DMAing[0][0]) - MMU.DMACycle[0][0] -= cycles_per_frame; - if(MMU.DMAing[0][1]) - MMU.DMACycle[0][1] -= cycles_per_frame; - if(MMU.DMAing[0][2]) - MMU.DMACycle[0][2] -= cycles_per_frame; - if(MMU.DMAing[0][3]) - MMU.DMACycle[0][3] -= cycles_per_frame; - if(MMU.DMAing[1][0]) - MMU.DMACycle[1][0] -= cycles_per_frame; - if(MMU.DMAing[1][1]) - MMU.DMACycle[1][1] -= cycles_per_frame; - if(MMU.DMAing[1][2]) - MMU.DMACycle[1][2] -= cycles_per_frame; - if(MMU.DMAing[1][3]) - MMU.DMACycle[1][3] -= cycles_per_frame; + for (uint32_t i = 0; i < (header->ARM7binSize >> 2); ++i) + { + _MMU_write32(dst, T1ReadLong(MMU.CART_ROM, src)); + dst += 4; + src += 4; + } - } + // set the cpus to an initial state with their respective programs entrypoints + armcpu_init(&NDS_ARM7, header->ARM7exe); + armcpu_init(&NDS_ARM9, header->ARM9exe); + + // set REG_POSTFLG to the value indicating post-firmware status + MMU.ARM9_REG[0x300] = 1; + MMU.ARM7_REG[0x300] = 1; + } - T1WriteWord(ARM9Mem.ARM9_REG, 6, nds.VCount); - T1WriteWord(MMU.ARM7_REG, 6, nds.VCount); + // only ARM9 have co-processor + reconstruct(&cp15); + cp15.reset(&NDS_ARM9); + + // bitbox 4k demo is so stripped down it relies on default stack values + // otherwise the arm7 will crash before making a sound + // (these according to gbatek softreset bios docs) + NDS_ARM7.R13_svc = 0x0380FFDC; + NDS_ARM7.R13_irq = 0x0380FFB0; + NDS_ARM7.R13_usr = 0x0380FF00; + NDS_ARM7.R[13] = NDS_ARM7.R13_usr; + // and let's set these for the arm9 while we're at it, though we have no proof + NDS_ARM9.R13_svc = 0x00803FC0; + NDS_ARM9.R13_irq = 0x00803FA0; + NDS_ARM9.R13_usr = 0x00803EC0; + NDS_ARM9.R13_abt = NDS_ARM9.R13_usr; // ????? + // I think it is wrong to take gbatek's "SYS" and put it in USR--maybe USR doesnt matter. + // i think SYS is all the misc modes. please verify by setting nonsensical stack values for USR here + NDS_ARM9.R[13] = NDS_ARM9.R13_usr; + // n.b.: im not sure about all these, I dont know enough about arm9 svc/irq/etc modes + // and how theyre named in desmume to match them up correctly. i just guessed. + + memset(nds.timerCycle, 0, sizeof(uint64_t) * 8); + nds.old = 0; + SetupMMU(false, nds.Is_DSI()); + + _MMU_write16(REG_KEYINPUT, 0x3FF); + _MMU_write16(REG_KEYINPUT, 0x3FF); + _MMU_write08(REG_EXTKEYIN, 0x43); - vmatch = T1ReadWord(ARM9Mem.ARM9_REG, 4); - if(nds.VCount== ((vmatch >> 8) | ((vmatch << 1) & 256))) - { - T1WriteWord(ARM9Mem.ARM9_REG, 4, T1ReadWord(ARM9Mem.ARM9_REG, 4) | 4); - if(T1ReadWord(ARM9Mem.ARM9_REG, 4) & 32) - NDS_makeARM9Int(2); - } - else - T1WriteWord(ARM9Mem.ARM9_REG, 4, T1ReadWord(ARM9Mem.ARM9_REG, 4) & 0xFFFB); + // Setup a copy of the firmware user settings in memory. + // (this is what the DS firmware would do). + { + uint8_t temp_buffer[NDS_FW_USER_SETTINGS_MEM_BYTE_COUNT]; - vmatch = T1ReadWord(MMU.ARM7_REG, 4); - if(nds.VCount== ((vmatch >> 8) | ((vmatch <<1 ) & 256))) - { - T1WriteWord(MMU.ARM7_REG, 4, T1ReadWord(MMU.ARM7_REG, 4) | 4); - if(T1ReadWord(MMU.ARM7_REG, 4) & 32) - NDS_makeARM7Int(2); - } - else - T1WriteWord(MMU.ARM7_REG, 4, T1ReadWord(MMU.ARM7_REG, 4) & 0xFFFB); + if (copy_firmware_user_data(temp_buffer, &MMU.fw.data[0])) + for (int fw_index = 0; fw_index < NDS_FW_USER_SETTINGS_MEM_BYTE_COUNT; ++fw_index) + _MMU_write08(0x027FFC80 + fw_index, temp_buffer[fw_index]); + } - timer_check(); - dma_check(); - } + // Copy the whole header to Main RAM 0x27FFE00 on startup. (http://nocash.emubase.de/gbatek.htm#dscartridgeheader) + // once upon a time this copied 0x90 more. this was thought to be wrong, and changed. + if (nds.Is_DSI()) + { + // dsi needs this copied later in memory. there are probably a number of things that get copied to a later location in memory.. thats where the NDS consoles tend to stash stuff. + for (int i = 0; i < 92; ++i) + _MMU_write32(0x02FFFE00 + i * 4, LE_TO_LOCAL_32(reinterpret_cast(MMU.CART_ROM)[i])); + } + else + { + for (int i = 0; i < 92; ++i) + _MMU_write32(0x027FFE00 + i * 4, LE_TO_LOCAL_32(reinterpret_cast(MMU.CART_ROM)[i])); } -} -void NDS_exec_frame(int cpu_clockdown_level_arm9, int cpu_clockdown_level_arm7) -{ - int v; - for (v = 0; v < 263; v++) + // Write the header checksum to memory (the firmware needs it to see the cart) + _MMU_write16(0x027FF808, T1ReadWord(MMU.CART_ROM, 0x15E)); + + if (firmware->patched && CommonSettings.UseExtBIOS && CommonSettings.BootFromFirmware && fw_success) { - NDS_exec_hframe(cpu_clockdown_level_arm9, cpu_clockdown_level_arm7); + // HACK! for flashme + _MMU_write32(0x27FFE24, firmware->ARM9bootAddr); + _MMU_write32(0x27FFE34, firmware->ARM7bootAddr); } + + // make system think it's booted from card -- EXTREMELY IMPORTANT!!! Thanks to cReDiAr + _MMU_write08(0x02FFFC40, 0x1); + _MMU_write08(0x02FFFC40, 0x1); + + initSchedule(); + + SPU_ReInit(); } +// these templates needed to be instantiated manually +template void NDS_exec(int32_t nb); +template void NDS_exec(int32_t nb); diff -Nru audacious-plugins-4.1/src/xsf/desmume/NDSSystem.h audacious-plugins-4.3.1/src/xsf/desmume/NDSSystem.h --- audacious-plugins-4.1/src/xsf/desmume/NDSSystem.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/NDSSystem.h 2023-04-29 20:17:32.000000000 +0000 @@ -1,248 +1,348 @@ -/* Copyright (C) 2006 yopyop - yopyop156@ifrance.com - yopyop156.ifrance.com - - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +/* + Copyright (C) 2006 yopyop + Copyright (C) 2008-2013 DeSmuME team + + This file 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 file 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 the this software. If not, see . */ -#ifndef NDSSYSTEM_H -#define NDSSYSTEM_H +#pragma once +#include +#include +#include +#include #include "armcpu.h" #include "MMU.h" - -#include "GPU.h" #include "SPU.h" - #include "mem.h" -//#include "wifi.h" +#include "emufile.h" +#include "firmware.h" -extern volatile BOOL execute; -extern BOOL click; +template struct buttonstruct +{ + union + { + struct + { + // changing the order of these fields would break stuff + //fRLDUTSBAYXWEg + Type G; // debug + Type E; // right shoulder + Type W; // left shoulder + Type X; + Type Y; + Type A; + Type B; + Type S; // start + Type T; // select + Type U; // up + Type D; // down + Type L; // left + Type R; // right + Type F; // lid + }; + Type array[14]; + }; +}; -/* - * The firmware language values - */ -#define NDS_FW_LANG_JAP 0 -#define NDS_FW_LANG_ENG 1 -#define NDS_FW_LANG_FRE 2 -#define NDS_FW_LANG_GER 3 -#define NDS_FW_LANG_ITA 4 -#define NDS_FW_LANG_SPA 5 -#define NDS_FW_LANG_CHI 6 -#define NDS_FW_LANG_RES 7 - - -//#define LOG_ARM9 -//#define LOG_ARM7 - -typedef struct -{ - char gameTile[12]; - char gameCode[4]; - u16 makerCode; - u8 unitCode; - u8 deviceCode; - u8 cardSize; - u8 cardInfo[8]; - u8 flags; - - u32 ARM9src; - u32 ARM9exe; - u32 ARM9cpy; - u32 ARM9binSize; - - u32 ARM7src; - u32 ARM7exe; - u32 ARM7cpy; - u32 ARM7binSize; - - u32 FNameTblOff; - u32 FNameTblSize; - - u32 FATOff; - u32 FATSize; - - u32 ARM9OverlayOff; - u32 ARM9OverlaySize; - u32 ARM7OverlayOff; - u32 ARM7OverlaySize; - - u32 unknown2a; - u32 unknown2b; - - u32 IconOff; - u16 CRC16; - u16 ROMtimeout; - u32 ARM9unk; - u32 ARM7unk; - - u8 unknown3c[8]; - u32 ROMSize; - u32 HeaderSize; - u8 unknown5[56]; - u8 logo[156]; - u16 logoCRC16; - u16 headerCRC16; - u8 reserved[160]; -} NDS_header; - -extern void debug(); - -typedef struct -{ - s32 ARM9Cycle; - s32 ARM7Cycle; - s32 cycles; - s32 timerCycle[2][4]; - BOOL timerOver[2][4]; - s32 nextHBlank; - u32 VCount; - u32 old; - s32 diff; - BOOL lignerendu; - - u16 touchX; - u16 touchY; -} NDSSystem; - -/** /brief A touchscreen calibration point. - */ -struct NDS_fw_touchscreen_cal { - u16 adc_x; - u16 adc_y; - - u8 screen_x; - u8 screen_y; -}; - -/** /brief The type of DS - */ -enum nds_fw_ds_type { - NDS_FW_DS_TYPE_FAT, - NDS_FW_DS_TYPE_LITE +extern volatile bool execute; + +struct NDS_header +{ + char gameTile[12]; + char gameCode[4]; + uint16_t makerCode; + uint8_t unitCode; + uint8_t deviceCode; + uint8_t cardSize; + uint8_t cardInfo[8]; + uint8_t flags; + uint8_t romversion; + + uint32_t ARM9src; + uint32_t ARM9exe; + uint32_t ARM9cpy; + uint32_t ARM9binSize; + + uint32_t ARM7src; + uint32_t ARM7exe; + uint32_t ARM7cpy; + uint32_t ARM7binSize; + + uint32_t FNameTblOff; + uint32_t FNameTblSize; + + uint32_t FATOff; + uint32_t FATSize; + + uint32_t ARM9OverlayOff; + uint32_t ARM9OverlaySize; + uint32_t ARM7OverlayOff; + uint32_t ARM7OverlaySize; + + uint32_t unknown2a; + uint32_t unknown2b; + + uint32_t IconOff; + uint16_t CRC16; + uint16_t ROMtimeout; + uint32_t ARM9unk; + uint32_t ARM7unk; + + uint8_t unknown3c[8]; + uint32_t ROMSize; + uint32_t HeaderSize; + uint8_t unknown5[56]; + uint8_t logo[156]; + uint16_t logoCRC16; + uint16_t headerCRC16; + uint8_t reserved[160]; +}; + +extern uint64_t nds_timer; +void NDS_Reschedule(); +void NDS_RescheduleDMA(); +void NDS_RescheduleTimers(); + +enum NDS_CONSOLE_TYPE +{ + NDS_CONSOLE_TYPE_FAT, + NDS_CONSOLE_TYPE_LITE, + NDS_CONSOLE_TYPE_IQUE, + NDS_CONSOLE_TYPE_DSI +}; + +struct NDSSystem +{ + int32_t cycles; + uint64_t timerCycle[2][4]; + uint32_t VCount; + uint32_t old; + + uint8_t *FW_ARM9BootCode; + uint8_t *FW_ARM7BootCode; + uint32_t FW_ARM9BootCodeAddr; + uint32_t FW_ARM7BootCodeAddr; + uint32_t FW_ARM9BootCodeSize; + uint32_t FW_ARM7BootCodeSize; + + bool sleeping; + bool cardEjected; + uint32_t freezeBus; + + // console type must be copied in when the system boots. it can't be changed on the fly. + int ConsoleType; + bool Is_DSI() { return this->ConsoleType == NDS_CONSOLE_TYPE_DSI; } + + bool isInVblank() const { return this->VCount >= 192; } + bool isIn3dVblank() const { return this->VCount >= 192 && this->VCount < 215; } }; #define MAX_FW_NICKNAME_LENGTH 10 #define MAX_FW_MESSAGE_LENGTH 26 -struct NDS_fw_config_data { - enum nds_fw_ds_type ds_type; - - u8 fav_colour; - u8 birth_month; - u8 birth_day; +struct NDS_fw_config_data +{ + NDS_CONSOLE_TYPE ds_type; - u16 nickname[MAX_FW_NICKNAME_LENGTH]; - u8 nickname_len; + uint8_t fav_colour; + uint8_t birth_month; + uint8_t birth_day; - u16 message[MAX_FW_MESSAGE_LENGTH]; - u8 message_len; + uint16_t nickname[MAX_FW_NICKNAME_LENGTH]; + uint8_t nickname_len; - u8 language; + uint16_t message[MAX_FW_MESSAGE_LENGTH]; + uint8_t message_len; - /* touchscreen calibration */ - struct NDS_fw_touchscreen_cal touch_cal[2]; + uint8_t language; }; extern NDSSystem nds; -#ifdef GDB_STUB -int NDS_Init( struct armcpu_memory_iface *arm9_mem_if, - struct armcpu_ctrl_iface **arm9_ctrl_iface, - struct armcpu_memory_iface *arm7_mem_if, - struct armcpu_ctrl_iface **arm7_ctrl_iface); -#else -int NDS_Init ( void); -#endif - -void NDS_DeInit(void); -void -NDS_FillDefaultFirmwareConfigData( struct NDS_fw_config_data *fw_config); - -BOOL NDS_SetROM(u8 * rom, u32 mask); -NDS_header * NDS_getROMHeader(void); - -void NDS_setTouchPos(u16 x, u16 y); -void NDS_releasTouch(void); - -int NDS_LoadROM(const char *filename, int bmtype, u32 bmsize, - const char *cflash_disk_image_file); -void NDS_FreeROM(void); -void NDS_Reset(void); -int NDS_ImportSave(const char *filename); - -int NDS_WriteBMP(const char *filename); -int NDS_LoadFirmware(const char *filename); -int NDS_CreateDummyFirmware( struct NDS_fw_config_data *user_settings); -u32 -NDS_exec(s32 nb, BOOL force); - - static INLINE void NDS_ARM9HBlankInt(void) - { - if(T1ReadWord(ARM9Mem.ARM9_REG, 4) & 0x10) - { - MMU.reg_IF[0] |= 2;// & (MMU.reg_IME[0] << 1);// (MMU.reg_IE[0] & (1<<1)); - NDS_ARM9.wIRQ = true; - } - } - - static INLINE void NDS_ARM7HBlankInt(void) - { - if(T1ReadWord(MMU.ARM7_REG, 4) & 0x10) - { - MMU.reg_IF[1] |= 2;// & (MMU.reg_IME[1] << 1);// (MMU.reg_IE[1] & (1<<1)); - NDS_ARM7.wIRQ = true; - } - } - - static INLINE void NDS_ARM9VBlankInt(void) - { - if(T1ReadWord(ARM9Mem.ARM9_REG, 4) & 0x8) - { - MMU.reg_IF[0] |= 1;// & (MMU.reg_IME[0]);// (MMU.reg_IE[0] & 1); - NDS_ARM9.wIRQ = true; - //execute = false; - /*logcount++;*/ - } - } - - static INLINE void NDS_ARM7VBlankInt(void) - { - if(T1ReadWord(MMU.ARM7_REG, 4) & 0x8) - { - MMU.reg_IF[1] |= 1;// & (MMU.reg_IME[1]);// (MMU.reg_IE[1] & 1); - NDS_ARM7.wIRQ = true; - //execute = false; - } - } - - static INLINE void NDS_swapScreen(void) - { - u16 tmp = MainScreen.offset; - MainScreen.offset = SubScreen.offset; - SubScreen.offset = tmp; - } +int NDS_Init (); +void NDS_DeInit(); +bool NDS_SetROM(uint8_t * rom, uint32_t mask); -void NDS_exec_frame(int cpu_clockdown_level_arm9, int cpu_clockdown_level_arm7); -void NDS_exec_hframe(int cpu_clockdown_level_arm9, int cpu_clockdown_level_arm7); +struct RomBanner +{ + RomBanner(bool defaultInit); + uint16_t version; //Version (0001h) + uint16_t crc16; //CRC16 across entries 020h..83Fh + uint8_t reserved[0x1C]; //Reserved (zero-filled) + uint8_t bitmap[0x200]; //Icon Bitmap (32x32 pix) (4x4 tiles, each 4x8 bytes, 4bit depth) + uint16_t palette[0x10]; //Icon Palette (16 colors, 16bit, range 0000h-7FFFh) (Color 0 is transparent, so the 1st palette entry is ignored) + enum { NUM_TITLES = 6 }; + union + { + struct + { + uint16_t title_jp[0x80]; // Title 0 Japanese (128 characters, 16bit Unicode) + uint16_t title_en[0x80]; // Title 1 English ("") + uint16_t title_fr[0x80]; // Title 2 French ("") + uint16_t title_de[0x80]; // Title 3 German ("") + uint16_t title_it[0x80]; // Title 4 Italian ("") + uint16_t title_es[0x80]; // Title 5 Spanish ("") + }; + uint16_t titles[NUM_TITLES][0x80]; + }; + uint8_t end0xFF[0x1C0]; + //840h ? (Maybe newer/chinese firmware do also support chinese title?) + //840h - End of Icon/Title structure (next 1C0h bytes usually FFh-filled) +}; -#endif +struct GameInfo +{ + GameInfo() : romdata() { } + + void loadData(char *buf, int size) + { + this->resize(size); + memcpy(&this->romdata[0], buf, size); + this->romsize = size; + this->fillGap(); + } + + void fillGap() + { + memset(&this->romdata[this->romsize], 0xFF, this->allocatedSize - this->romsize); + } + + void resize(int size) + { + // calculate the necessary mask for the requested size + mask = size - 1; + mask |= mask >> 1; + mask |= mask >> 2; + mask |= mask >> 4; + mask |= mask >> 8; + mask |= mask >> 16; + + // now, we actually need to over-allocate, because bytes from anywhere protected by that mask + // could be read from the rom + this->allocatedSize = mask + 4; + + this->romdata.reset(new char[allocatedSize]); + this->romsize = size; + } + uint32_t crc; + NDS_header header; + char ROMserial[20]; + char ROMname[20]; + std::unique_ptr romdata; + uint32_t romsize; + uint32_t allocatedSize; + uint32_t mask; + bool isHomebrew; +}; +extern GameInfo gameInfo; +struct UserButtons : buttonstruct +{ +}; +struct UserTouch +{ + uint16_t touchX; + uint16_t touchY; + bool isTouch; +}; +struct UserMicrophone +{ + uint32_t micButtonPressed; +}; +struct UserInput +{ + UserButtons buttons; + UserTouch touch; + UserMicrophone mic; +}; + +void NDS_FreeROM(); +void NDS_Reset(); + +void NDS_Sleep(); + +void execHardware_doAllDma(EDMAMode modeNum); + +template void NDS_exec(int32_t nb = 560190 << 1); + +extern struct TCommonSettings +{ + TCommonSettings() : UseExtBIOS(false), SWIFromBIOS(false), PatchSWI3(false), UseExtFirmware(false), BootFromFirmware(false), ConsoleType(NDS_CONSOLE_TYPE_FAT), rigorous_timing(false), advanced_timing(true), + spuInterpolationMode(SPUInterpolation_Linear), manualBackupType(0), spu_captureMuted(false), spu_advanced(false) + { + strcpy(this->ARM9BIOS, "biosnds9.bin"); + strcpy(this->ARM7BIOS, "biosnds7.bin"); + strcpy(this->Firmware, "firmware.bin"); + NDS_FillDefaultFirmwareConfigData(&this->InternalFirmConf); + + bool solo = false; + static char* soloEnv = strdup("SOLO_2SF_n"); + static char* muteEnv = strdup("MUTE_2SF_n"); + for (int i = 0; i < 16; ++i) { + if (i < 10) { + soloEnv[9] = '0' + i; + } else { + soloEnv[9] = 'A' + (i - 10); + } + char* soloVal = getenv(soloEnv); + if (soloVal && soloVal[0] == '1') { + solo = true; + this->spu_muteChannels[i] = false; + } else { + this->spu_muteChannels[i] = true; + } + } + if (!solo) { + for (int i = 0; i < 16; ++i) { + if (i < 10) { + muteEnv[9] = '0' + i; + } else { + muteEnv[9] = 'A' + (i - 10); + } + char* muteVal = getenv(muteEnv); + this->spu_muteChannels[i] = muteVal && muteVal[0] == '1'; + } + } + } + + bool UseExtBIOS; + char ARM9BIOS[256]; + char ARM7BIOS[256]; + bool SWIFromBIOS; + bool PatchSWI3; + + bool UseExtFirmware; + char Firmware[256]; + bool BootFromFirmware; + struct NDS_fw_config_data InternalFirmConf; + + NDS_CONSOLE_TYPE ConsoleType; + + bool rigorous_timing; + + bool advanced_timing; + + SPUInterpolationMode spuInterpolationMode; + + // this is the user's choice of manual backup type, for cases when the autodetection can't be trusted + int manualBackupType; + + bool spu_muteChannels[16]; + bool spu_captureMuted; + bool spu_advanced; +} CommonSettings; diff -Nru audacious-plugins-4.1/src/xsf/desmume/PACKED.h audacious-plugins-4.3.1/src/xsf/desmume/PACKED.h --- audacious-plugins-4.1/src/xsf/desmume/PACKED.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/PACKED.h 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,12 @@ +#ifndef __GNUC__ +# pragma pack(push, 1) +# pragma warning(disable : 4103) +#endif + +#ifndef __PACKED +# ifdef __GNUC__ +# define __PACKED __attribute__((__packed__)) +# else +# define __PACKED +# endif +#endif diff -Nru audacious-plugins-4.1/src/xsf/desmume/PACKED_END.h audacious-plugins-4.3.1/src/xsf/desmume/PACKED_END.h --- audacious-plugins-4.1/src/xsf/desmume/PACKED_END.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/PACKED_END.h 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,3 @@ +#ifndef __GNUC__ +#pragma pack(pop) +#endif diff -Nru audacious-plugins-4.1/src/xsf/desmume/SPU.cc audacious-plugins-4.3.1/src/xsf/desmume/SPU.cc --- audacious-plugins-4.1/src/xsf/desmume/SPU.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/SPU.cc 2023-04-29 20:17:32.000000000 +0000 @@ -1,963 +1,1460 @@ -/* Copyright (C) 2006 Theo Berkau - - Ideas borrowed from Stephane Dallongeville's SCSP core - - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ +/* + Copyright (C) 2006 yopyop + Copyright (C) 2006 Theo Berkau + Copyright (C) 2008-2017 DeSmuME team + + Ideas borrowed from Stephane Dallongeville's SCSP core + + This file 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 file 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 the this software. If not, see . + */ + +//#include "XSFCommon.h" +#include "../spu/samplecache.h" +#include "../spu/interpolator.h" + +#define _USE_MATH_DEFINES +#include +#ifndef M_PI +#define M_PI 3.1415926535897932386 +#endif #include #include +#include +#include -#include "ARM9.h" #include "MMU.h" #include "SPU.h" #include "mem.h" - +#include "readwrite.h" #include "armcpu.h" +#include "NDSSystem.h" +#include "emufile.h" +#include "matrix.h" +#include "bits.h" + +static inline s16 read16(u32 addr) { return (s16)_MMU_read16(addr); } +static inline u8 read08(u32 addr) { return _MMU_read08(addr); } + +#define K_ADPCM_LOOPING_RECOVERY_INDEX 99999 +#define COSINE_INTERPOLATION_RESOLUTION 8192 + +SPU_struct *SPU_core = 0; +int SPU_currentCoreNum = SNDCORE_DUMMY; +static int volume = 100; +SampleCache spuSampleCache; + +static size_t buffersize = 0; +static ESynchMode synchmode = ESynchMode_Synchronous; +static ESynchMethod synchmethod = ESynchMethod_0; +static ISynchronizingAudioBuffer* synchronizer = metaspu_construct(synchmethod); -enum -{ - FORMAT_PCM8 = 0, - FORMAT_PCM16 = 1, - FORMAT_ADPCM = 2, - FORMAT_PSG = 3 +static int SNDCoreId=-1; +static SoundInterface_struct *SNDCore=NULL; +extern SoundInterface_struct *SNDCoreList[]; + +static const int format_shift[] = { 2, 1, 3, 0 }; +static const u8 volume_shift[] = { 0, 1, 2, 4 }; + +static const s16 wavedutytbl[8][8] = { + { -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, 0x7FFF }, + { -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, 0x7FFF, 0x7FFF }, + { -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF }, + { -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF }, + { -0x7FFF, -0x7FFF, -0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF }, + { -0x7FFF, -0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF }, + { -0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF }, + { -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF } }; -#define VOL_SHIFT 10 +static const double ARM7_CLOCK = 33513982; + +double DESMUME_SAMPLE_RATE = 48000; +static double samples_per_hline = (DESMUME_SAMPLE_RATE / 59.8261f) / 263.0f; +static double sampleLength = DESMUME_SAMPLE_RATE / 32728.498; + +void SetDesmumeSampleRate(double rate) { + DESMUME_SAMPLE_RATE = rate; + sampleLength = DESMUME_SAMPLE_RATE / 32728.498; + samples_per_hline = (DESMUME_SAMPLE_RATE / 59.8261f) / 263.0f; +} + +static double samples = 0; -typedef struct +template +static FORCEINLINE T MinMax(T val, T min, T max) { - int id; - int status; - int format; - u8 *buf8; s16 *buf16; - double pos, inc; - int loopend, looppos; - int loop, length; - s32 adpcm; - int adpcm_pos, adpcm_index; - s32 adpcm_loop; - int adpcm_loop_pos, adpcm_loop_index; - int psg_duty; - int timer; - int volume; - int pan; - int shift; - int repeat, hold; - u32 addr; - s32 volumel; - s32 volumer; - s16 output; -} SChannel; - -typedef struct -{ - s32 *pmixbuf; - s16 *pclipingbuf; - u32 buflen; - SChannel ch[16]; -} SPU_struct; + if (val < min) + return min; + else if (val > max) + return max; -static SPU_struct spu = { 0, 0, 0 }; + return val; +} -static SoundInterface_struct *SNDCore=nullptr; -extern SoundInterface_struct *SNDCoreList[]; +//--------------external spu interface--------------- int SPU_ChangeSoundCore(int coreid, int buffersize) { - int i; - SPU_DeInit(); + int i; - // Allocate memory for sound buffer - spu.buflen = buffersize * 2; /* stereo */ - spu.pmixbuf = (s32 *) malloc(spu.buflen * sizeof(s32)); - if (!spu.pmixbuf) - { - SPU_DeInit(); - return -1; - } - - spu.pclipingbuf = (s16 *) malloc(spu.buflen * sizeof(s16)); - if (!spu.pclipingbuf) - { - SPU_DeInit(); - return -1; - } - - // So which core do we want? - if (coreid == SNDCORE_DEFAULT) - coreid = 0; // Assume we want the first one - - // Go through core list and find the id - for (i = 0; SNDCoreList[i] != nullptr; i++) - { - if (SNDCoreList[i]->id == coreid) - { - // Set to current core - SNDCore = SNDCoreList[i]; - break; - } - } - - if (SNDCore == nullptr) - { - SPU_DeInit(); - return -1; - } - - if (SNDCore->Init(spu.buflen) == -1) - { - // Since it failed, instead of it being fatal, we'll just use the dummy - // core instead - SNDCore = &SNDDummy; - } + ::buffersize = buffersize; - return 0; -} -int SPU_Init(int coreid, int buffersize) -{ - SPU_DeInit(); - SPU_Reset(); - return SPU_ChangeSoundCore(coreid, buffersize); + // Make sure the old core is freed + if (SNDCore) + SNDCore->DeInit(); + + // So which core do we want? + if (coreid == SNDCORE_DEFAULT) + coreid = 0; // Assume we want the first one + + SPU_currentCoreNum = coreid; + + // Go through core list and find the id + for (i = 0; SNDCoreList[i] != NULL; i++) + { + if (SNDCoreList[i]->id == coreid) + { + // Set to current core + SNDCore = SNDCoreList[i]; + break; + } + } + + SNDCoreId = coreid; + + //If the user picked the dummy core, disable the user spu + if(SNDCore == &SNDDummy) + return 0; + + //If the core wasnt found in the list for some reason, disable the user spu + if (SNDCore == NULL) + return -1; + + // Since it failed, instead of it being fatal, disable the user spu + if (SNDCore->Init(buffersize * 2) == -1) + { + SNDCore = 0; + return -1; + } + + SNDCore->SetVolume(volume); + + SPU_SetSynchMode(synchmode,synchmethod); + + return 0; } -void SPU_Pause(int pause) + +SoundInterface_struct *SPU_SoundCore() { - if(pause) - SNDCore->MuteAudio(); - else - SNDCore->UnMuteAudio(); + return SNDCore; } -void SPU_SetVolume(int volume) + +void SPU_ReInit(bool fakeBoot) { - if (SNDCore) - SNDCore->SetVolume(volume); + SPU_Init(SNDCoreId, buffersize); + + // Firmware set BIAS to 0x200 + if (fakeBoot) + SPU_WriteWord(0x04000504, 0x0200); } -void SPU_DeInit(void) -{ - spu.buflen = 0; - if (spu.pmixbuf) - { - free(spu.pmixbuf); - spu.pmixbuf = 0; - } - if (spu.pclipingbuf) - { - free(spu.pclipingbuf); - spu.pclipingbuf = 0; - } - if (SNDCore) - { - SNDCore->DeInit(); - } - SNDCore = &SNDDummy; -} - -static const short g_adpcm_index[16] = { -1, -1, -1, -1, -1, -1, -1, -1, 2, 2, 4, 4, 6, 6, 8, 8 }; - -static const int g_adpcm_mult[89] = -{ - 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x0010, 0x0011, - 0x0013, 0x0015, 0x0017, 0x0019, 0x001C, 0x001F, 0x0022, 0x0025, 0x0029, 0x002D, - 0x0032, 0x0037, 0x003C, 0x0042, 0x0049, 0x0050, 0x0058, 0x0061, 0x006B, 0x0076, - 0x0082, 0x008F, 0x009D, 0x00AD, 0x00BE, 0x00D1, 0x00E6, 0x00FD, 0x0117, 0x0133, - 0x0151, 0x0173, 0x0198, 0x01C1, 0x01EE, 0x0220, 0x0256, 0x0292, 0x02D4, 0x031C, - 0x036C, 0x03C3, 0x0424, 0x048E, 0x0502, 0x0583, 0x0610, 0x06AB, 0x0756, 0x0812, - 0x08E0, 0x09C3, 0x0ABD, 0x0BD0, 0x0CFF, 0x0E4C, 0x0FBA, 0x114C, 0x1307, 0x14EE, - 0x1706, 0x1954, 0x1BDC, 0x1EA5, 0x21B6, 0x2515, 0x28CA, 0x2CDF, 0x315B, 0x364B, - 0x3BB9, 0x41B2, 0x4844, 0x4F7E, 0x5771, 0x602F, 0x69CE, 0x7462, 0x7FFF, -}; -static const s16 g_psg_duty[8][8] = { - { -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, +0x7FFF }, - { -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, +0x7FFF, +0x7FFF }, - { -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, +0x7FFF, +0x7FFF, +0x7FFF }, - { -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, +0x7FFF, +0x7FFF, +0x7FFF, +0x7FFF }, - { -0x7FFF, -0x7FFF, -0x7FFF, +0x7FFF, +0x7FFF, +0x7FFF, +0x7FFF, +0x7FFF }, - { -0x7FFF, -0x7FFF, +0x7FFF, +0x7FFF, +0x7FFF, +0x7FFF, +0x7FFF, +0x7FFF }, - { -0x7FFF, +0x7FFF, +0x7FFF, +0x7FFF, +0x7FFF, +0x7FFF, +0x7FFF, +0x7FFF }, - { -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF }, -}; +int SPU_Init(int coreid, int buffersize) +{ + SPU_core = new SPU_struct((int)ceil(samples_per_hline)); + SPU_Reset(); + SPU_SetSynchMode(synchmode, synchmethod); -static void reset_channel(SChannel *ch, int id) -{ - ch->status = 0; - ch->id = id; + return SPU_ChangeSoundCore(coreid, buffersize); } -void SPU_Reset(void) +void SPU_Pause(int pause) { - int i; - for (i = 0;i < 16; i++) - reset_channel(&spu.ch[i], i); - - for (i = 0x400; i < 0x51D; i++) - T1WriteByte(MMU.ARM7_REG, i, 0); -} -void SPU_KeyOn(int channel) -{ -} - -static INLINE void adjust_channel_timer(SChannel *ch) -{ - ch->inc = (((double)33512000) / (44100 * 2)) / (double)(0x10000 - ch->timer); -} - -static int check_valid(u32 addr, u32 size) -{ - u32 t1, t2; - - if(size > MMU.MMU_MASK[1][(addr >> 20) & 0xff]) return 0; - - t1 = addr; - t2 = (addr + size); - t1 &= MMU.MMU_MASK[1][(addr >> 20) & 0xff]; - t2 &= MMU.MMU_MASK[1][(addr >> 20) & 0xff]; - - if(t2 < t1) return 0; - - return 1; -} - -static void start_channel(SChannel *ch) -{ - - switch(ch->format) - { - case FORMAT_PCM8: - { - u8 *p = MMU.MMU_MEM[1][(ch->addr >> 20) & 0xff]; - u32 ofs = MMU.MMU_MASK[1][(ch->addr >> 20) & 0xff] & ch->addr; - u32 size = ((ch->length + ch->loop) << 2); - if((p != nullptr) && check_valid(ch->addr, size)) - { - ch->buf8 = p + ofs; - ch->looppos = ch->loop << 2; - ch->loopend = size; - ch->pos = 0; - ch->status = 1; - } - } - break; - case FORMAT_PCM16: - { - u8 *p = MMU.MMU_MEM[1][(ch->addr >> 20) & 0xff]; - u32 ofs = MMU.MMU_MASK[1][(ch->addr >> 20) & 0xff] & ch->addr; - u32 size = ((ch->length + ch->loop) << 1); - if((p != nullptr) && check_valid(ch->addr, size << 1)) - { - ch->buf16 = (s16 *)(p + ofs - (ofs & 1)); - ch->looppos = ch->loop << 1; - ch->loopend = size; - ch->pos = 0; - ch->status = 1; - } - } - break; - case FORMAT_ADPCM: - { - u8 *p = MMU.MMU_MEM[1][(ch->addr >> 20) & 0xff]; - u32 ofs = MMU.MMU_MASK[1][(ch->addr >> 20) & 0xff] & ch->addr; - u32 size = ((ch->length + ch->loop) << 3); - if((p != nullptr) && check_valid(ch->addr, size >> 1)) - { - ch->buf8 = p + ofs; -#ifdef WORDS_BIGENDIAN - ch->adpcm = ((s32)(s16)T1ReadWord((u8 *)ch->buf8, 0)) << 3; -#else - ch->adpcm = ((s32)*(s16 *)ch->buf8) << 3; -#endif - ch->adpcm_index = (ch->buf8[2] & 0x7F); - ch->adpcm_pos = 8; - ch->pos = 9; - ch->looppos = ch->loop << 3; - ch->loopend = size; - ch->adpcm_loop_index = -1; - ch->status = 1; - } - } - break; - case FORMAT_PSG: - ch->status = 1; - if(ch->id < 14) - { - ch->pos = 0; - } - else - { - ch->pos = 0x7FFF; - } - break; - } -} - -static void stop_channel(SChannel *ch) -{ - u32 addr = 0x400 + (ch->id << 4) + 3; - ch->status = 0; - T1WriteByte(MMU.ARM7_REG, addr, (u8)(T1ReadByte(MMU.ARM7_REG, addr) & ~0x80)); -} -static void set_channel_volume(SChannel *ch) -{ - s32 vol1 = (T1ReadByte(MMU.ARM7_REG, 0x500) & 0x7F) * ch->volume; - s32 vol2; - vol2 = vol1 * ch->pan; - vol1 = vol1 * (127-ch->pan); - ch->volumel = vol1 >> (21 - VOL_SHIFT + ch->shift); - ch->volumer = vol2 >> (21 - VOL_SHIFT + ch->shift); -} - -void SPU_WriteByte(u32 addr, u8 x) -{ - addr &= 0x00000FFF; - T1WriteByte(MMU.ARM7_REG, addr, x); - - if(addr < 0x500) - { - SChannel *ch; - switch(addr & 0x0F) - { - case 0x0: - ch = spu.ch + (addr >> 4 & 0xF); - ch->volume = (x & 0x7F); - set_channel_volume(ch); - break; - case 0x1: - ch = spu.ch + (addr >> 4 & 0xF); - ch->shift = (x & 0x03); - ch->hold = (x >> 7 & 0x01); - set_channel_volume(ch); - break; - case 0x2: - ch = spu.ch + (addr >> 4 & 0xF); - ch->pan = (x & 0x7F); - set_channel_volume(ch); - break; - case 0x3: - ch = spu.ch + (addr >> 4 & 0xF); - ch->psg_duty = (x & 0x07); - ch->repeat = (x >> 3 & 0x03); - ch->format = (x >> 5 & 0x03); - if(x & 0x80) start_channel(ch); else stop_channel(ch); - break; -#if !DISABLE_XSF_TESTS - case 0x04: - case 0x05: - case 0x06: - case 0x07: - ch = spu.ch + (addr >> 4 & 0xF); - ch->addr = (T1ReadLong(MMU.ARM7_REG, addr & ~3) & 0x07FFFFFF); - break; - case 0x08: - case 0x09: - ch = spu.ch + (addr >> 4 & 0xF); - ch->timer = T1ReadWord(MMU.ARM7_REG, addr & ~1); - adjust_channel_timer(ch); - break; - case 0x0a: - case 0x0b: - ch = spu.ch + (addr >> 4 & 0xF); - ch->loop = T1ReadWord(MMU.ARM7_REG, addr & ~1); - break; - case 0x0c: - case 0x0e: - case 0x0d: - case 0x0f: - ch = spu.ch + (addr >> 4 & 0xF); - ch->length = (T1ReadLong(MMU.ARM7_REG, addr & ~3) & 0x003FFFFF); - break; -#endif - } - } + if (SNDCore == NULL) return; + if(pause) + SNDCore->MuteAudio(); + else + SNDCore->UnMuteAudio(); } - -void SPU_WriteWord(u32 addr, u16 x) +void SPU_SetSynchMode(int mode, int method) { - addr &= 0x00000FFF; - T1WriteWord(MMU.ARM7_REG, addr, x); - - if(addr < 0x500) - { - SChannel *ch; - switch(addr & 0x00F) - { - case 0x0: - ch = spu.ch + (addr >> 4 & 0xF); - ch->volume = (x & 0x007F); - ch->shift = (x >> 8 & 0x0003); - ch->hold = (x >> 15 & 0x0001); - set_channel_volume(ch); - break; - case 0x2: - ch = spu.ch + (addr >> 4 & 0xF); - ch->pan = (x & 0x007F); - ch->psg_duty = (x >> 8 & 0x0007); - ch->repeat = (x >> 11 & 0x0003); - ch->format = (x >> 13 & 0x0003); - set_channel_volume(ch); - if(x & 0x8000) start_channel(ch); else stop_channel(ch); - break; - case 0x08: - ch = spu.ch + (addr >> 4 & 0xF); - ch->timer = x; - adjust_channel_timer(ch); - break; - case 0x0a: - ch = spu.ch + (addr >> 4 & 0xF); - ch->loop = x; - break; -#if !DISABLE_XSF_TESTS - case 0x04: - case 0x06: - ch = spu.ch + (addr >> 4 & 0xF); - ch->addr = (T1ReadLong(MMU.ARM7_REG, addr & ~3) & 0x07FFFFFF); - break; - case 0x0c: - case 0x0e: - ch = spu.ch + (addr >> 4 & 0xF); - ch->length = (T1ReadLong(MMU.ARM7_REG, addr & ~3) & 0x003FFFFF); - break; -#endif - } - } + synchmode = (ESynchMode)mode; + if(synchmethod != (ESynchMethod)method) + { + synchmethod = (ESynchMethod)method; + delete synchronizer; + //grr does this need to be locked? spu might need a lock method + // or maybe not, maybe the platform-specific code that calls this function can deal with it. + synchronizer = metaspu_construct(synchmethod); + } } +void SPU_ClearOutputBuffer() +{ + if(SNDCore && SNDCore->ClearBuffer) + SNDCore->ClearBuffer(); +} -void SPU_WriteLong(u32 addr, u32 x) +void SPU_SetVolume(int volume) { - addr &= 0x00000FFF; - T1WriteLong(MMU.ARM7_REG, addr, x); - - if(addr < 0x500) - { - SChannel *ch; - switch(addr & 0x00F) - { - case 0x0: - ch = spu.ch + (addr >> 4 & 0xF); - ch->volume = (x & 0x7F); - ch->shift = (x >> 8 & 0x00000003); - ch->hold = (x >> 15 & 0x00000001); - ch->pan = (x >> 16 & 0x0000007F); - ch->psg_duty = (x >> 24 & 0x00000007); - ch->repeat = (x >> 27 & 0x00000003); - ch->format = (x >> 29 & 0x00000003); - set_channel_volume(ch); - if(x & 0x80000000) start_channel(ch); else stop_channel(ch); - break; - case 0x04: - ch = spu.ch + (addr >> 4 & 0xF); - ch->addr = (x & 0x07FFFFFF); - break; - case 0x08: - ch = spu.ch + (addr >> 4 & 0xF); - ch->timer = (x & 0x0000FFFF); - ch->loop = (x >> 16 & 0x0000FFFF); - adjust_channel_timer(ch); - break; - case 0x0C: - ch = spu.ch + (addr >> 4 & 0xF); - ch->length = (x & 0x003FFFFF); - break; - } - } + ::volume = volume; + if (SNDCore) + SNDCore->SetVolume(volume); } -////////////////////////////////////////////////////////////////////////////// -u32 SPU_ReadLong(u32 addr) +void SPU_Reset(void) { - addr &= 0xFFF; - return T1ReadLong(MMU.ARM7_REG, addr); -} + int i; -static INLINE s32 clipping(s32 x, s32 min, s32 max) { -#if 1 || defined(SIGNED_IS_NOT_2S_COMPLEMENT) - if (x < min) - { - return (min); - } - else if (x > max) - { - return (max); - } - return (x); -#else - return x ^ ((-(x < min)) & (x ^ min)) ^ ((-(x > max)) & (x ^ max)); -#endif -} + SPU_core->reset(); -extern unsigned long dwChannelMute; + //zero - 09-apr-2010: this concerns me, regarding savestate synch. + //After 0.9.6, lets experiment with removing it and just properly zapping the spu instead + // Reset Registers + for (i = 0x400; i < 0x51D; i++) + T1WriteByte(MMU.ARM7_REG, i, 0); -static void decode_pcm8(SChannel *ch, s32 *out, int length) -{ - int oi; - double pos, inc, len; - if (!ch->buf8) return; - - pos = ch->pos; inc = ch->inc; len = ch->loopend; - - for(oi = 0; oi < length; oi++) - { - ch->output = ((s16)(s8)ch->buf8[(int)pos]) << 8; -#if 0 - if (dwChannelMute & (1 << ch->id)) - { - out++; - out++; - } - else -#endif - { - *(out++) += (ch->output * ch->volumel) >> VOL_SHIFT; - *(out++) += (ch->output * ch->volumer) >> VOL_SHIFT; - } - pos += inc; - if(pos >= len) - { - switch(ch->repeat) - { -#if !DISABLE_XSF_TESTS - case 0: -#endif - case 1: - pos += ch->looppos - len; - break; - default: - stop_channel(ch); - oi = length; - break; - } - } - } - - ch->pos = pos; - return; -} - -static void decode_pcm16(SChannel *ch, s32 *out, int length) -{ - int oi; - double pos, inc, len; - - if (!ch->buf16) return; - - pos = ch->pos; inc = ch->inc; len = ch->loopend; - - for(oi = 0; oi < length; oi++) - { -#ifdef WORDS_BIGENDIAN - ch->output = (s16)T1ReadWord((u8 *)ch->buf16, (int)pos << 1); -#else - ch->output = (s16)ch->buf16[(int)pos]; -#endif -#if 0 - if (dwChannelMute & (1 << ch->id)) - { - out++; - out++; - } - else -#endif - { - *(out++) += (ch->output * ch->volumel) >> VOL_SHIFT; - *(out++) += (ch->output * ch->volumer) >> VOL_SHIFT; - } - pos += inc; - if(pos >= len) - { - switch(ch->repeat) - { -#if !DISABLE_XSF_TESTS - case 0: -#endif - case 1: - pos += ch->looppos - len; - break; - default: - stop_channel(ch); - oi = length; - break; - } - } - } - - ch->pos = pos; -} - -static INLINE void decode_adpcmone_P4(SChannel *ch, int m) -{ - int i, ci0; - u8 *p; - s32 s; - int N; - - i = ch->adpcm_pos; - p = (ch->buf8 + (i >> 1)); - ci0 = ch->adpcm_index; - s = ch->adpcm; - - if (ch->adpcm_loop_index < 0 && m >= ch->looppos) - { - ch->adpcm_loop_index = ci0; - ch->adpcm_loop = s; - ch->adpcm_loop_pos = i; - } - - if(i++ & 1) - { - s32 x1, d1; - x1 = ((*(p++) >> 3) & 0x1F) | 1; - d1 = ((x1 & 0xF) * g_adpcm_mult[ci0] & ~7); - ci0 = clipping((ci0 + g_adpcm_index[x1 & 0xE]), 0, 88); -#if 1 || defined(SIGNED_IS_NOT_2S_COMPLEMENT) - if(x1 & 0x10) d1 = -d1; -#else - d1 -= (d1 + d1) & (-(((x1 >> 4) & 1))); -#endif + samples = 0; +} - s = clipping((s + d1), (-32768 << 3), (32767 << 3)); - } +//------------------------------------------ - N = (((m & ~1) - (i & ~1)) >> 1); - for(i = 0; i < N; i++) - { - s32 x0, d0; - s32 x1, d1; - int ci1; - x0 = ((*p << 1) & 0x1F) | 1; - x1 = ((*p >> 3) & 0x1F) | 1; - ci1 = clipping((ci0 + g_adpcm_index[x0 & 0xE]), 0, 88); - d0 = ((x0 & 0xF) * g_adpcm_mult[ci0] & ~7); - ci0 = clipping((ci1 + g_adpcm_index[x1 & 0xE]), 0, 88); - d1 = ((x1 & 0xF) * g_adpcm_mult[ci1] & ~7); -#if 1 || defined(SIGNED_IS_NOT_2S_COMPLEMENT) - if(x0 & 0x10) d0 = -d0; - if(x1 & 0x10) d1 = -d1; -#else - d0 -= (d0 + d0) & (-(((x0 >> 4) & 1))); - d1 -= (d1 + d1) & (-(((x1 >> 4) & 1))); -#endif - s = clipping((s + d0), (-32768 << 3), (32767 << 3)); - s = clipping((s + d1), (-32768 << 3), (32767 << 3)); - p++; - } - if(m & 1) - { - s32 x0, d0; - x0 = ((*p << 1) & 0x1F) | 1; - d0 = ((x0 & 0xF) * g_adpcm_mult[ci0] & ~7); - ci0 = clipping((ci0 + g_adpcm_index[x0 & 0xE]), 0, 88); -#if 1 || defined(SIGNED_IS_NOT_2S_COMPLEMENT) - if(x0 & 0x10) d0 = -d0; -#else - d0 -= (d0 + d0) & (-(((x0 >> 4) & 1))); -#endif - s = clipping((s + d0), (-32768 << 3), (32767 << 3)); - } +void SPU_struct::reset() +{ + memset(sndbuf,0,bufsize*2*4); + memset(outbuf,0,bufsize*2*2); - ch->output = (s16)(s >> 3); + memset((void *)channels, 0, sizeof(channel_struct) * 16); - ch->adpcm = s; - ch->adpcm_index = ci0; - ch->adpcm_pos = m; -} - -#if 0 // not used -static INLINE void decode_adpcmone_XX(SChannel *ch, int m) -{ - int i, ci0; - u8 *p; - s32 s; - - i = ch->adpcm_pos; - p = (ch->buf8 + (i >> 1)); - ci0 = ch->adpcm_index; - s = ch->adpcm; - - if (ch->adpcm_loop_index < 0 && m >= ch->looppos) - { - ch->adpcm_loop_index = ci0; - ch->adpcm_loop = s; - ch->adpcm_loop_pos = i; - } - - while (i < m) - { - s32 x1, d1; - x1 = ((s32)*p) >> ((i & 1) << 2) & 0xf; - x1 = x1 + x1 + 1; - d1 = ((x1 & 0xF) * g_adpcm_mult[ci0] & ~7); - ci0 = clipping((ci0 + g_adpcm_index[x1 & 0xE]), 0, 88); -#if 1 || defined(SIGNED_IS_NOT_2S_COMPLEMENT) - if(x1 & 0x10) d1 = -d1; -#else - d1 -= (d1 + d1) & (-(((x1 >> 4) & 1))); -#endif + reconstruct(®s); - s = clipping((s + d1), (-32768 << 3), (32767 << 3)); - p += (i & 1); - i++; - } - - ch->output = (s16)(s >> 3); - - ch->adpcm = s; - ch->adpcm_index = ci0; - ch->adpcm_pos = m; + for(int i = 0; i < 16; i++) + { + channels[i].num = i; + } } -#endif - -#define decode_adpcmone decode_adpcmone_P4 -static void decode_adpcm(SChannel *ch, s32 *out, int length) +SPU_struct::SPU_struct(int buffersize) + : bufpos(0) + , buflength(0) + , sndbuf(0) + , outbuf(0) + , bufsize(buffersize) { - int oi; - double pos, inc, len; - if (!ch->buf8) return; - - pos = ch->pos; inc = ch->inc; len = ch->loopend; - - for(oi = 0; oi < length; oi++) - { - int m = (int)pos; - int i = ch->adpcm_pos; - if(i < m) - decode_adpcmone(ch, m); - -#if 0 - if (dwChannelMute & (1 << ch->id)) - { - out++; - out++; - } - else -#endif - { - *(out++) += (ch->output * ch->volumel) >> VOL_SHIFT; - *(out++) += (ch->output * ch->volumer) >> VOL_SHIFT; - } - pos += inc; - if(pos >= len) - { - switch(ch->repeat) - { - case 1: - if (ch->adpcm_loop_index >= 0) - { - pos += ch->looppos - len; - ch->adpcm_pos = ch->adpcm_loop_pos; - ch->adpcm_index = ch->adpcm_loop_index; - ch->adpcm = ch->adpcm_loop; - break; - } -#if !DISABLE_XSF_TESTS - case 0: - pos = 9 - len; -#ifdef WORDS_BIGENDIAN - ch->adpcm = ((s32)(s16)T1ReadWord((u8 *)ch->buf8, 0)) << 3; -#else - ch->adpcm = ((s32)*(s16 *)ch->buf8) << 3; -#endif - ch->adpcm_index = (ch->buf8[2] & 0x7F); - ch->adpcm_pos = 8; - break; -#endif - default: - stop_channel(ch); - oi = length; - break; - } - } - } - ch->pos = pos; -} - -static void decode_psg(SChannel *ch, s32 *out, int length) -{ - int oi; - - if(ch->id < 14) - { - // NOTE: square wave. - double pos, inc; - pos = ch->pos; inc = ch->inc; - for(oi = 0; oi < length; oi++) - { - ch->output = (s16)g_psg_duty[ch->psg_duty][(int)pos & 0x00000007]; -#if 0 - if (dwChannelMute & (1 << ch->id)) - { - out++; - out++; - } - else -#endif - { - *(out++) += (ch->output * ch->volumel) >> VOL_SHIFT; - *(out++) += (ch->output * ch->volumer) >> VOL_SHIFT; - } - pos += inc; - } - ch->pos = pos; - } - else - { - // NOTE: noise. - u16 X; - X = (u16)ch->pos; - for(oi = 0; oi < length; oi++) - { - if(X & 1) - { - X >>= 1; - X ^= 0x6000; - ch->output = -0x8000; - } - else - { - X >>= 1; - ch->output = +0x7FFF; - } - } -#if 0 - if (dwChannelMute & (1 << ch->id)) - { - out++; - out++; - } - else -#endif - { - *(out++) += (ch->output * ch->volumel) >> VOL_SHIFT; - *(out++) += (ch->output * ch->volumer) >> VOL_SHIFT; - } - ch->pos = X; - } + sndbuf = new s32[buffersize*2]; + outbuf = new s16[buffersize*2]; + reset(); } +SPU_struct::~SPU_struct() +{ + if(sndbuf) delete[] sndbuf; + if(outbuf) delete[] outbuf; +} +void SPU_DeInit(void) +{ + if(SNDCore) + SNDCore->DeInit(); + SNDCore = 0; -void SPU_EmulateSamples(u32 numsamples) -{ - u32 sizesmp = numsamples; - u32 sizebyte = sizesmp << 2; - if (sizebyte > spu.buflen * sizeof(s16)) sizebyte = spu.buflen * sizeof(s16); - sizesmp = sizebyte >> 2; - sizebyte = sizesmp << 2; - if (sizesmp > 0) - { - unsigned i; - SChannel *ch = spu.ch; - memset(spu.pmixbuf, 0, spu.buflen * sizeof(s32)); - for (i = 0; i < 16; i++) - { - if (ch->status) - { - switch (ch->format) - { - case 0: - decode_pcm8(ch, spu.pmixbuf, sizesmp); - break; - case 1: - decode_pcm16(ch, spu.pmixbuf, sizesmp); - break; - case 2: - decode_adpcm(ch, spu.pmixbuf, sizesmp); - break; - case 3: - decode_psg(ch, spu.pmixbuf, sizesmp); - break; - } - } - ch++; - } - for (i = 0; i < sizesmp * 2; i++) - spu.pclipingbuf[i] = (s16)clipping(spu.pmixbuf[i], -0x8000, 0x7fff); - SNDCore->UpdateAudio(spu.pclipingbuf, sizesmp); - } + delete SPU_core; SPU_core=0; } -void SPU_Emulate(void) +////////////////////////////////////////////////////////////////////////////// + +void SPU_struct::ShutUp() { - SPU_EmulateSamples(SNDCore->GetAudioSpace()); + for(int i=0;i<16;i++) + channels[i].status = CHANSTAT_STOPPED; } +static FORCEINLINE void adjust_channel_timer(channel_struct *chan) +{ + chan->sampinc = (((double)ARM7_CLOCK) / (DESMUME_SAMPLE_RATE * 2)) / (double)(0x10000 - chan->timer); +} + +void SPU_struct::KeyProbe(int chan_num) +{ + channel_struct &thischan = channels[chan_num]; + if(thischan.status == CHANSTAT_STOPPED) + { + if(thischan.keyon && regs.masteren) + KeyOn(chan_num); + } + else if(thischan.status == CHANSTAT_PLAY) + { + if(!thischan.keyon || !regs.masteren) + KeyOff(chan_num); + } +} + +void SPU_struct::KeyOff(int channel) +{ + channel_struct &thischan = channels[channel]; + thischan.status = CHANSTAT_STOPPED; +} + +void SPU_struct::KeyOn(int channel) +{ + channel_struct &thischan = channels[channel]; + thischan.status = CHANSTAT_PLAY; + + thischan.totlength = thischan.length + thischan.loopstart; + adjust_channel_timer(&thischan); + + switch(thischan.format) + { + case 0: // 8-bit + thischan.sampcnt = -3; + break; + case 1: // 16-bit + thischan.sampcnt = -3; + break; + case 2: // ADPCM + { + thischan.pcm16b = (s16)read16(thischan.addr); + thischan.pcm16b_last = thischan.pcm16b; + thischan.index = read08(thischan.addr + 2) & 0x7F;; + thischan.lastsampcnt = 7; + thischan.sampcnt = -3; + thischan.loop_index = K_ADPCM_LOOPING_RECOVERY_INDEX; + break; + } + case 3: // PSG + { + thischan.sampcnt = -1; + thischan.x = 0x7FFF; + break; + } + default: break; + } + + thischan.double_totlength_shifted = (double)(thischan.totlength << format_shift[thischan.format]); + + if(thischan.format != 3) + { + if(thischan.double_totlength_shifted == 0) + { + thischan.status = CHANSTAT_STOPPED; + } + } +} ////////////////////////////////////////////////////////////////////////////// -// Dummy Sound Interface -////////////////////////////////////////////////////////////////////////////// -static int SNDDummyInit(int buffersize) +u8 SPU_struct::ReadByte(u32 addr) { - return 0; + //individual channel regs + if ((addr & 0x0F00) == 0x0400) + { + u32 chan_num = (addr >> 4) & 0xF; + const channel_struct& thischan = channels[chan_num]; + + switch (addr & 0xF) + { + case 0x0: return thischan.vol; + case 0x1: return (thischan.volumeDiv | (thischan.hold << 7)); + case 0x2: return thischan.pan; + case 0x3: return ( thischan.waveduty + | (thischan.repeat << 3) + | (thischan.format << 5) + | ((thischan.status == CHANSTAT_PLAY)?0x80:0) + ); + case 0x8: return thischan.timer >> 0; + case 0x9: return thischan.timer >> 8; + case 0xA: return thischan.loopstart >> 0; + case 0xB: return thischan.loopstart >> 8; + } + return 0; + } + + switch(addr) + { + //SOUNDCNT + case 0x500: return regs.mastervol; + case 0x501: return (regs.ctl_left + | (regs.ctl_right << 2) + | (regs.ctl_ch1bypass << 4) + | (regs.ctl_ch3bypass << 5) + | (regs.masteren << 7) + ); + + //SOUNDBIAS + case 0x504: return regs.soundbias >> 0; + case 0x505: return regs.soundbias >> 8; + + //SNDCAP0CNT/SNDCAP1CNT + case 0x508: + case 0x509: + { + u32 which = (addr - 0x508); + return regs.cap[which].add + | (regs.cap[which].source << 1) + | (regs.cap[which].oneshot << 2) + | (regs.cap[which].bits8 << 3) + | (regs.cap[which].runtime.running << 7); + } + + //SNDCAP0DAD + case 0x510: return regs.cap[0].dad >> 0; + case 0x511: return regs.cap[0].dad >> 8; + case 0x512: return regs.cap[0].dad >> 16; + case 0x513: return regs.cap[0].dad >> 24; + + //SNDCAP0LEN + case 0x514: return regs.cap[0].len >> 0; + case 0x515: return regs.cap[0].len >> 8; + + //SNDCAP1DAD + case 0x518: return regs.cap[1].dad >> 0; + case 0x519: return regs.cap[1].dad >> 8; + case 0x51A: return regs.cap[1].dad >> 16; + case 0x51B: return regs.cap[1].dad >> 24; + + //SNDCAP1LEN + case 0x51C: return regs.cap[1].len >> 0; + case 0x51D: return regs.cap[1].len >> 8; + } //switch on address + + return 0; +} + +u16 SPU_struct::ReadWord(u32 addr) +{ + //individual channel regs + if ((addr & 0x0F00) == 0x0400) + { + u32 chan_num = (addr >> 4) & 0xF; + const channel_struct& thischan = channels[chan_num]; + + switch (addr & 0xF) + { + case 0x0: return (thischan.vol + | (thischan.volumeDiv << 8) + | (thischan.hold << 15) + ); + case 0x2: return (thischan.pan + | (thischan.waveduty << 8) + | (thischan.repeat << 11) + | (thischan.format << 13) + | ((thischan.status == CHANSTAT_PLAY)?(1 << 15):0) + ); + case 0x8: return thischan.timer; + case 0xA: return thischan.loopstart; + } //switch on individual channel regs + return 0; + } + + switch(addr) + { + //SOUNDCNT + case 0x500: return (regs.mastervol + | (regs.ctl_left << 8) + | (regs.ctl_right << 10) + | (regs.ctl_ch1bypass << 12) + | (regs.ctl_ch3bypass << 13) + | (regs.masteren << 15) + ); + + //SOUNDBIAS + case 0x504: return regs.soundbias; + + //SNDCAP0CNT/SNDCAP1CNT + case 0x508: + { + u8 val0 = regs.cap[0].add + | (regs.cap[0].source << 1) + | (regs.cap[0].oneshot << 2) + | (regs.cap[0].bits8 << 3) + | (regs.cap[0].runtime.running << 7); + u8 val1 = regs.cap[1].add + | (regs.cap[1].source << 1) + | (regs.cap[1].oneshot << 2) + | (regs.cap[1].bits8 << 3) + | (regs.cap[1].runtime.running << 7); + return (u16)(val0 | (val1 << 8)); + } + + //SNDCAP0DAD + case 0x510: return regs.cap[0].dad >> 0; + case 0x512: return regs.cap[0].dad >> 16; + + //SNDCAP0LEN + case 0x514: return regs.cap[0].len; + + //SNDCAP1DAD + case 0x518: return regs.cap[1].dad >> 0; + case 0x51A: return regs.cap[1].dad >> 16; + + //SNDCAP1LEN + case 0x51C: return regs.cap[1].len; + } //switch on address + + return 0; +} + +u32 SPU_struct::ReadLong(u32 addr) +{ + //individual channel regs + if ((addr & 0x0F00) == 0x0400) + { + u32 chan_num = (addr >> 4) & 0xF; + channel_struct &thischan=channels[chan_num]; + + switch (addr & 0xF) + { + case 0x0: return (thischan.vol + | (thischan.volumeDiv << 8) + | (thischan.hold << 15) + | (thischan.pan << 16) + | (thischan.waveduty << 24) + | (thischan.repeat << 27) + | (thischan.format << 29) + | ((thischan.status == CHANSTAT_PLAY)?(1 << 31):0) + ); + case 0x8: return (thischan.timer | (thischan.loopstart << 16)); + } //switch on individual channel regs + return 0; + } + + switch(addr) + { + //SOUNDCNT + case 0x500: return (regs.mastervol + | (regs.ctl_left << 8) + | (regs.ctl_right << 10) + | (regs.ctl_ch1bypass << 12) + | (regs.ctl_ch3bypass << 13) + | (regs.masteren << 15) + ); + + //SOUNDBIAS + case 0x504: return (u32)regs.soundbias; + + //SNDCAP0CNT/SNDCAP1CNT + case 0x508: + { + u8 val0 = regs.cap[0].add + | (regs.cap[0].source << 1) + | (regs.cap[0].oneshot << 2) + | (regs.cap[0].bits8 << 3) + | (regs.cap[0].runtime.running << 7); + u8 val1 = regs.cap[1].add + | (regs.cap[1].source << 1) + | (regs.cap[1].oneshot << 2) + | (regs.cap[1].bits8 << 3) + | (regs.cap[1].runtime.running << 7); + return (u32)(val0 | (val1 << 8)); + } + + //SNDCAP0DAD + case 0x510: return regs.cap[0].dad; + + //SNDCAP0LEN + case 0x514: return (u32)regs.cap[0].len; + + //SNDCAP1DAD + case 0x518: return regs.cap[1].dad; + + //SNDCAP1LEN + case 0x51C: return (u32)regs.cap[1].len; + } //switch on address + + return 0; +} + +SPUFifo::SPUFifo() +{ + reset(); +} + +void SPUFifo::reset() +{ + head = tail = size = 0; +} + +void SPUFifo::enqueue(s16 val) +{ + if(size==16) return; + buffer[tail] = val; + tail++; + tail &= 15; + size++; +} + +s16 SPUFifo::dequeue() +{ + if(size==0) return 0; + head++; + head &= 15; + s16 ret = buffer[head]; + size--; + return ret; +} + +void SPU_struct::ProbeCapture(int which) +{ + //VERY UNTESTED -- HOW MUCH OF THIS RESETS, AND WHEN? + + if(!regs.cap[which].active) + { + regs.cap[which].runtime.running = 0; + return; + } + + REGS::CAP &cap = regs.cap[which]; + cap.runtime.running = 1; + cap.runtime.curdad = cap.dad; + u32 len = cap.len; + if(len==0) len=1; + cap.runtime.maxdad = cap.dad + len*4; + cap.runtime.sampcnt = 0; + cap.runtime.fifo.reset(); +} + +void SPU_struct::WriteByte(u32 addr, u8 val) +{ + //individual channel regs + if ((addr & 0x0F00) == 0x0400) + { + u8 chan_num = (addr >> 4) & 0xF; + channel_struct &thischan = channels[chan_num]; + + switch (addr & 0x000F) + { + case 0x0: thischan.vol = (val & 0x7F); break; + case 0x1: + thischan.volumeDiv = (val & 0x03); + thischan.hold = (val >> 7) & 0x01; + break; + case 0x2: thischan.pan = (val & 0x7F); break; + case 0x3: + thischan.waveduty = (val & 0x07); + thischan.repeat = (val >> 3) & 0x03; + thischan.format = (val >> 5) & 0x03; + thischan.keyon = (val >> 7) & 0x01; + KeyProbe(chan_num); + break; + case 0x4: thischan.addr &= 0xFFFFFF00; thischan.addr |= (val & 0xFC); break; + case 0x5: thischan.addr &= 0xFFFF00FF; thischan.addr |= (val << 8); break; + case 0x6: thischan.addr &= 0xFF00FFFF; thischan.addr |= (val << 16); break; + case 0x7: thischan.addr &= 0x00FFFFFF; thischan.addr |= ((val&7) << 24); break; //only 27 bits of this register are used + case 0x8: thischan.timer &= 0xFF00; thischan.timer |= (val << 0); adjust_channel_timer(&thischan); break; + case 0x9: thischan.timer &= 0x00FF; thischan.timer |= (val << 8); adjust_channel_timer(&thischan); break; + + case 0xA: thischan.loopstart &= 0xFF00; thischan.loopstart |= (val << 0); break; + case 0xB: thischan.loopstart &= 0x00FF; thischan.loopstart |= (val << 8); break; + case 0xC: thischan.length &= 0xFFFFFF00; thischan.length |= (val << 0); break; + case 0xD: thischan.length &= 0xFFFF00FF; thischan.length |= (val << 8); break; + case 0xE: thischan.length &= 0xFF00FFFF; thischan.length |= ((val & 0x3F) << 16); //only 22 bits of this register are used + case 0xF: break; + + } //switch on individual channel regs + + return; + } + + switch(addr) + { + //SOUNDCNT + case 0x500: regs.mastervol = (val & 0x7F); break; + case 0x501: + regs.ctl_left = (val >> 0) & 3; + regs.ctl_right = (val >> 2) & 3; + regs.ctl_ch1bypass = (val >> 4) & 1; + regs.ctl_ch3bypass = (val >> 5) & 1; + regs.masteren = (val >> 7) & 1; + break; + + //SOUNDBIAS + case 0x504: regs.soundbias &= 0xFF00; regs.soundbias |= (val << 0); break; + case 0x505: regs.soundbias &= 0x00FF; regs.soundbias |= ((val&3) << 8); break; + + //SNDCAP0CNT/SNDCAP1CNT + case 0x508: + case 0x509: + { + u32 which = (addr - 0x508); + regs.cap[which].add = BIT0(val); + regs.cap[which].source = BIT1(val); + regs.cap[which].oneshot = BIT2(val); + regs.cap[which].bits8 = BIT3(val); + regs.cap[which].active = BIT7(val); + ProbeCapture(which); + break; + } + + //SNDCAP0DAD + case 0x510: regs.cap[0].dad &= 0xFFFFFF00; regs.cap[0].dad |= (val & 0xFC); break; + case 0x511: regs.cap[0].dad &= 0xFFFF00FF; regs.cap[0].dad |= (val << 8); break; + case 0x512: regs.cap[0].dad &= 0xFF00FFFF; regs.cap[0].dad |= (val << 16); break; + case 0x513: regs.cap[0].dad &= 0x00FFFFFF; regs.cap[0].dad |= ((val&7) << 24); break; + + //SNDCAP0LEN + case 0x514: regs.cap[0].len &= 0xFF00; regs.cap[0].len |= (val << 0); break; + case 0x515: regs.cap[0].len &= 0x00FF; regs.cap[0].len |= (val << 8); break; + + //SNDCAP1DAD + case 0x518: regs.cap[1].dad &= 0xFFFFFF00; regs.cap[1].dad |= (val & 0xFC); break; + case 0x519: regs.cap[1].dad &= 0xFFFF00FF; regs.cap[1].dad |= (val << 8); break; + case 0x51A: regs.cap[1].dad &= 0xFF00FFFF; regs.cap[1].dad |= (val << 16); break; + case 0x51B: regs.cap[1].dad &= 0xFF000000; regs.cap[1].dad |= ((val&7) << 24); break; + + //SNDCAP1LEN + case 0x51C: regs.cap[1].len &= 0xFF00; regs.cap[1].len |= (val << 0); break; + case 0x51D: regs.cap[1].len &= 0x00FF; regs.cap[1].len |= (val << 8); break; + } //switch on address +} + +void SPU_struct::WriteWord(u32 addr, u16 val) +{ + //individual channel regs + if ((addr & 0x0F00) == 0x0400) + { + u32 chan_num = (addr >> 4) & 0xF; + channel_struct &thischan=channels[chan_num]; + + switch (addr & 0xF) + { + case 0x0: + thischan.vol = (val & 0x7F); + thischan.volumeDiv = (val >> 8) & 0x3; + thischan.hold = (val >> 15) & 0x1; + break; + case 0x2: + thischan.pan = (val & 0x7F); + thischan.waveduty = (val >> 8) & 0x7; + thischan.repeat = (val >> 11) & 0x3; + thischan.format = (val >> 13) & 0x3; + thischan.keyon = (val >> 15) & 0x1; + KeyProbe(chan_num); + break; + case 0x4: thischan.addr &= 0xFFFF0000; thischan.addr |= (val & 0xFFFC); break; + case 0x6: thischan.addr &= 0x0000FFFF; thischan.addr |= ((val & 0x07FF) << 16); break; + case 0x8: thischan.timer = val; adjust_channel_timer(&thischan); break; + case 0xA: thischan.loopstart = val; break; + case 0xC: thischan.length &= 0xFFFF0000; thischan.length |= (val << 0); break; + case 0xE: thischan.length &= 0x0000FFFF; thischan.length |= ((val & 0x003F) << 16); break; + } //switch on individual channel regs + return; + } + + switch (addr) + { + //SOUNDCNT + case 0x500: + regs.mastervol = (val & 0x7F); + regs.ctl_left = (val >> 8) & 0x03; + regs.ctl_right = (val >> 10) & 0x03; + regs.ctl_ch1bypass = (val >> 12) & 0x01; + regs.ctl_ch3bypass = (val >> 13) & 0x01; + regs.masteren = (val >> 15) & 0x01; + for(u8 i=0; i<16; i++) + KeyProbe(i); + break; + + //SOUNDBIAS + case 0x504: regs.soundbias = (val & 0x3FF); break; + + //SNDCAP0CNT/SNDCAP1CNT + case 0x508: + { + regs.cap[0].add = BIT0(val); + regs.cap[0].source = BIT1(val); + regs.cap[0].oneshot = BIT2(val); + regs.cap[0].bits8 = BIT3(val); + regs.cap[0].active = BIT7(val); + ProbeCapture(0); + + regs.cap[1].add = BIT8(val); + regs.cap[1].source = BIT9(val); + regs.cap[1].oneshot = BIT10(val); + regs.cap[1].bits8 = BIT11(val); + regs.cap[1].active = BIT15(val); + ProbeCapture(1); + break; + } + + //SNDCAP0DAD + case 0x510: regs.cap[0].dad &= 0xFFFF0000; regs.cap[0].dad |= (val & 0xFFFC); break; + case 0x512: regs.cap[0].dad &= 0x0000FFFF; regs.cap[0].dad |= ((val & 0x07FF) << 16); break; + + //SNDCAP0LEN + case 0x514: regs.cap[0].len = val; break; + + //SNDCAP1DAD + case 0x518: regs.cap[1].dad &= 0xFFFF0000; regs.cap[1].dad |= (val & 0xFFFC); break; + case 0x51A: regs.cap[1].dad &= 0x0000FFFF; regs.cap[1].dad |= ((val & 0x07FF) << 16); break; + + //SNDCAP1LEN + case 0x51C: regs.cap[1].len = val; break; + } //switch on address +} + +void SPU_struct::WriteLong(u32 addr, u32 val) +{ + //individual channel regs + if ((addr & 0x0F00) == 0x0400) + { + u32 chan_num = (addr >> 4) & 0xF; + channel_struct &thischan=channels[chan_num]; + + switch (addr & 0xF) + { + case 0x0: + thischan.vol = val & 0x7F; + thischan.volumeDiv = (val >> 8) & 0x3; + thischan.hold = (val >> 15) & 0x1; + thischan.pan = (val >> 16) & 0x7F; + thischan.waveduty = (val >> 24) & 0x7; + thischan.repeat = (val >> 27) & 0x3; + thischan.format = (val >> 29) & 0x3; + thischan.keyon = (val >> 31) & 0x1; + KeyProbe(chan_num); + break; + + case 0x4: thischan.addr = (val & 0x07FFFFFC); break; + case 0x8: + thischan.timer = (val & 0xFFFF); + thischan.loopstart = ((val >> 16) & 0xFFFF); + adjust_channel_timer(&thischan); + break; + + case 0xC: thischan.length = (val & 0x003FFFFF); break; //only 22 bits of this register are used + } //switch on individual channel regs + return; + } + + switch(addr) + { + //SOUNDCNT + case 0x500: + regs.mastervol = (val & 0x7F); + regs.ctl_left = ((val >> 8) & 3); + regs.ctl_right = ((val>>10) & 3); + regs.ctl_ch1bypass = ((val >> 12) & 1); + regs.ctl_ch3bypass = ((val >> 13) & 1); + regs.masteren = ((val >> 15) & 1); + for(u8 i=0; i<16; i++) + KeyProbe(i); + break; + + //SOUNDBIAS + case 0x504: regs.soundbias = (val & 0x3FF); + + //SNDCAP0CNT/SNDCAP1CNT + case 0x508: + regs.cap[0].add = BIT0(val); + regs.cap[0].source = BIT1(val); + regs.cap[0].oneshot = BIT2(val); + regs.cap[0].bits8 = BIT3(val); + regs.cap[0].active = BIT7(val); + ProbeCapture(0); + + regs.cap[1].add = BIT8(val); + regs.cap[1].source = BIT9(val); + regs.cap[1].oneshot = BIT10(val); + regs.cap[1].bits8 = BIT11(val); + regs.cap[1].active = BIT15(val); + ProbeCapture(1); + break; + + //SNDCAP0DAD + case 0x510: regs.cap[0].dad = (val & 0x07FFFFFC); break; + + //SNDCAP0LEN + case 0x514: regs.cap[0].len = (val & 0xFFFF); break; + + //SNDCAP1DAD + case 0x518: regs.cap[1].dad = (val & 0x07FFFFFC); break; + + //SNDCAP1LEN + case 0x51C: regs.cap[1].len = (val & 0xFFFF); break; + } //switch on address } ////////////////////////////////////////////////////////////////////////////// -static void SNDDummyDeInit() +static FORCEINLINE void FetchPSGData(channel_struct *chan, s32 *data) { + if (chan->sampcnt < 0) + { + *data = 0; + return; + } + + if(chan->num < 8) + { + *data = 0; + } + else if(chan->num < 14) + { + *data = (s32)wavedutytbl[chan->waveduty][(sputrunc(chan->sampcnt)) & 0x7]; + } + else + { + if(chan->lastsampcnt == sputrunc(chan->sampcnt)) + { + *data = (s32)chan->psgnoise_last; + return; + } + + u32 max = sputrunc(chan->sampcnt); + for(u32 i = chan->lastsampcnt; i < max; i++) + { + if(chan->x & 0x1) + { + chan->x = (chan->x >> 1) ^ 0x6000; + chan->psgnoise_last = -0x7FFF; + } + else + { + chan->x >>= 1; + chan->psgnoise_last = 0x7FFF; + } + } + + chan->lastsampcnt = sputrunc(chan->sampcnt); + + *data = (s32)chan->psgnoise_last; + } } ////////////////////////////////////////////////////////////////////////////// -static void SNDDummyUpdateAudio(s16 *buffer, u32 num_samples) +static FORCEINLINE void MixL(SPU_struct* SPU, channel_struct *chan, s32 data) { + data = spumuldiv7(data, chan->vol) >> volume_shift[chan->volumeDiv]; + SPU->sndbuf[SPU->bufpos<<1] += data; } -////////////////////////////////////////////////////////////////////////////// +static FORCEINLINE void MixR(SPU_struct* SPU, channel_struct *chan, s32 data) +{ + data = spumuldiv7(data, chan->vol) >> volume_shift[chan->volumeDiv]; + SPU->sndbuf[(SPU->bufpos<<1)+1] += data; +} -static u32 SNDDummyGetAudioSpace() +static FORCEINLINE void MixLR(SPU_struct* SPU, channel_struct *chan, s32 data) { - return 735; + data = spumuldiv7(data, chan->vol) >> volume_shift[chan->volumeDiv]; + SPU->sndbuf[SPU->bufpos<<1] += spumuldiv7(data, 127 - chan->pan); + SPU->sndbuf[(SPU->bufpos<<1)+1] += spumuldiv7(data, chan->pan); } ////////////////////////////////////////////////////////////////////////////// -static void SNDDummyMuteAudio() +template static FORCEINLINE void TestForLoop(SPU_struct *SPU, channel_struct *chan) { + const int shift = (FORMAT == 0 ? 2 : 1); + + chan->sampcnt += chan->sampinc; + + if (chan->sampcnt > chan->double_totlength_shifted) + { + // Do we loop? Or are we done? + if (chan->repeat == 1) + { + while (chan->sampcnt > chan->double_totlength_shifted) { + chan->sampcnt -= chan->double_totlength_shifted - (double)(chan->loopstart << shift); + } + } + else + { + SPU->KeyOff(chan->num); + SPU->bufpos = SPU->buflength; + } + } +} + +static FORCEINLINE void TestForLoop2(SPU_struct *SPU, channel_struct *chan) +{ + // Minimum length (the sum of PNT+LEN) is 4 words (16 bytes), + // smaller values (0..3 words) are causing hang-ups + // (busy bit remains set infinite, but no sound output occurs). + // fix: 7th Dragon (JP) - http://sourceforge.net/p/desmume/bugs/1357/ + if (chan->totlength < 4) return; + + chan->sampcnt += chan->sampinc; + + if (chan->sampcnt > chan->double_totlength_shifted) + { + // Do we loop? Or are we done? + if (chan->repeat == 1) + { + double step = (chan->double_totlength_shifted - (double)(chan->loopstart << 3)); + + while (chan->sampcnt > chan->double_totlength_shifted) chan->sampcnt -= step; + + if(chan->loop_index == K_ADPCM_LOOPING_RECOVERY_INDEX) + { + chan->pcm16b = (s16)read16(chan->addr); + chan->index = read08(chan->addr+2) & 0x7F; + chan->lastsampcnt = 7; + } + else + { + chan->pcm16b = chan->loop_pcm16b; + chan->index = chan->loop_index; + chan->lastsampcnt = (chan->loopstart << 3); + } + } + else + { + chan->status = CHANSTAT_STOPPED; + SPU->KeyOff(chan->num); + SPU->bufpos = SPU->buflength; + } + } +} + +template FORCEINLINE static void SPU_Mix(SPU_struct* SPU, channel_struct *chan, s32 data) +{ + switch(CHANNELS) + { + case -1: break; // not reached + case 0: MixL(SPU, chan, data); break; + case 1: MixLR(SPU, chan, data); break; + case 2: MixR(SPU, chan, data); break; + } + SPU->lastdata = data; +} + +//WORK + template +FORCEINLINE static void ____SPU_ChanUpdate(SPU_struct* const SPU, channel_struct* const chan) +{ + for (; SPU->bufpos < SPU->buflength; SPU->bufpos++) + { + if(CHANNELS != -1) + { + s32 data; + if (chan->sampcnt < 0) { + data = 0; + } else if (FORMAT == 3) { + FetchPSGData(chan, &data); + } else { + const SampleData& sample = spuSampleCache.getSample(chan->addr, chan->loopstart, chan->length, SampleData::Format(FORMAT)); + data = sample.sampleAt(chan->sampcnt, IInterpolator::allInterpolators[CommonSettings.spuInterpolationMode]); + } + SPU_Mix(SPU, chan, data); + } + + switch(FORMAT) { + case 0: case 1: TestForLoop(SPU, chan); break; + case 2: TestForLoop2(SPU, chan); break; + case 3: chan->sampcnt += chan->sampinc; break; + } + } +} + +template +FORCEINLINE static void ___SPU_ChanUpdate(const bool actuallyMix, SPU_struct* const SPU, channel_struct* const chan) +{ + if(!actuallyMix) + ____SPU_ChanUpdate(SPU,chan); + else if (chan->pan == 0) + ____SPU_ChanUpdate(SPU,chan); + else if (chan->pan == 127) + ____SPU_ChanUpdate(SPU,chan); + else + ____SPU_ChanUpdate(SPU,chan); +} + +FORCEINLINE static void _SPU_ChanUpdate(const bool actuallyMix, SPU_struct* const SPU, channel_struct* const chan) +{ + switch(chan->format) + { + case 0: ___SPU_ChanUpdate<0>(actuallyMix, SPU, chan); break; + case 1: ___SPU_ChanUpdate<1>(actuallyMix, SPU, chan); break; + case 2: ___SPU_ChanUpdate<2>(actuallyMix, SPU, chan); break; + case 3: ___SPU_ChanUpdate<3>(actuallyMix, SPU, chan); break; + default: assert(false); + } +} + +//ENTERNEW +static void SPU_MixAudio_Advanced(bool actuallyMix, SPU_struct *SPU, int length) +{ + //the advanced spu function correctly handles all sound control mixing options, as well as capture + //this code is not entirely optimal, as it relies on sort of manhandling the core mixing functions + //in order to get the results it needs. + + //THIS IS MAX HACKS!!!! + //AND NEEDS TO BE REWRITTEN ALONG WITH THE DEEPEST PARTS OF THE SPU + //ONCE WE KNOW THAT IT WORKS + + //BIAS gets ignored since our spu is still not bit perfect, + //and it doesnt matter for purposes of capture + + //-----------DEBUG CODE + bool skipcap = false; + //----------------- + + s32 samp0[2] = {0,0}; + + //believe it or not, we are going to do this one sample at a time. + //like i said, it is slower. + for (int samp = 0; samp < length; samp++) + { + SPU->sndbuf[0] = 0; + SPU->sndbuf[1] = 0; + SPU->buflength = 1; + + s32 capmix[2] = {0,0}; + s32 mix[2] = {0,0}; + s32 chanout[16]; + s32 submix[32]; + + //generate each channel, and helpfully mix it at the same time + for (int i = 0; i < 16; i++) + { + channel_struct *chan = &SPU->channels[i]; + + if (chan->status == CHANSTAT_PLAY) + { + SPU->bufpos = 0; + + bool bypass = false; + if (i==1 && SPU->regs.ctl_ch1bypass) bypass=true; + if (i==3 && SPU->regs.ctl_ch3bypass) bypass=true; + + + //output to mixer unless we are bypassed. + //dont output to mixer if the user muted us + bool outputToMix = true; + if (CommonSettings.spu_muteChannels[i]) outputToMix = false; + if (bypass) outputToMix = false; + bool outputToCap = outputToMix; + if (CommonSettings.spu_captureMuted && !bypass) outputToCap = true; + + //channels 1 and 3 should probably always generate their audio + //internally at least, just in case they get used by the spu output + bool domix = outputToCap || outputToMix || i==1 || i==3; + + //clear the output buffer since this is where _SPU_ChanUpdate wants to accumulate things + SPU->sndbuf[0] = SPU->sndbuf[1] = 0; + + //get channel's next output sample. + _SPU_ChanUpdate(domix, SPU, chan); + chanout[i] = SPU->lastdata >> volume_shift[chan->volumeDiv]; + + //save the panned results + submix[i*2] = SPU->sndbuf[0]; + submix[i*2+1] = SPU->sndbuf[1]; + + //send sample to our capture mix + if (outputToCap) + { + capmix[0] += submix[i*2]; + capmix[1] += submix[i*2+1]; + } + + //send sample to our main mixer + if (outputToMix) + { + mix[0] += submix[i*2]; + mix[1] += submix[i*2+1]; + } + } + else + { + chanout[i] = 0; + submix[i*2] = 0; + submix[i*2+1] = 0; + } + } //foreach channel + + s32 mixout[2] = {mix[0],mix[1]}; + s32 capmixout[2] = {capmix[0],capmix[1]}; + s32 sndout[2] = { 0, 0 }; + s32 capout[2]; + + //create SPU output + switch (SPU->regs.ctl_left) + { + case SPU_struct::REGS::LOM_LEFT_MIXER: sndout[0] = mixout[0]; break; + case SPU_struct::REGS::LOM_CH1: sndout[0] = submix[1*2+0]; break; + case SPU_struct::REGS::LOM_CH3: sndout[0] = submix[3*2+0]; break; + case SPU_struct::REGS::LOM_CH1_PLUS_CH3: sndout[0] = submix[1*2+0] + submix[3*2+0]; break; + } + switch (SPU->regs.ctl_right) + { + case SPU_struct::REGS::ROM_RIGHT_MIXER: sndout[1] = mixout[1]; break; + case SPU_struct::REGS::ROM_CH1: sndout[1] = submix[1*2+1]; break; + case SPU_struct::REGS::ROM_CH3: sndout[1] = submix[3*2+1]; break; + case SPU_struct::REGS::ROM_CH1_PLUS_CH3: sndout[1] = submix[1*2+1] + submix[3*2+1]; break; + } + + + //generate capture output ("capture bugs" from gbatek are not emulated) + if (SPU->regs.cap[0].source == 0) + capout[0] = capmixout[0]; //cap0 = L-mix + else if (SPU->regs.cap[0].add) + capout[0] = chanout[0] + chanout[1]; //cap0 = ch0+ch1 + else capout[0] = chanout[0]; //cap0 = ch0 + + if (SPU->regs.cap[1].source == 0) + capout[1] = capmixout[1]; //cap1 = R-mix + else if (SPU->regs.cap[1].add) + capout[1] = chanout[2] + chanout[3]; //cap1 = ch2+ch3 + else capout[1] = chanout[2]; //cap1 = ch2 + + capout[0] = MinMax(capout[0],-0x8000,0x7FFF); + capout[1] = MinMax(capout[1],-0x8000,0x7FFF); + + //write the output sample where it is supposed to go + if (samp == 0) + { + samp0[0] = sndout[0]; + samp0[1] = sndout[1]; + } + else + { + SPU->sndbuf[samp*2+0] = sndout[0]; + SPU->sndbuf[samp*2+1] = sndout[1]; + } + + for (int capchan = 0; capchan < 2; capchan++) + { + if (SPU->regs.cap[capchan].runtime.running) + { + SPU_struct::REGS::CAP& cap = SPU->regs.cap[capchan]; + u32 last = sputrunc(cap.runtime.sampcnt); + cap.runtime.sampcnt += SPU->channels[1+2*capchan].sampinc; + u32 curr = sputrunc(cap.runtime.sampcnt); + for (u32 j = last; j < curr; j++) + { + //so, this is a little strange. why go through a fifo? + //it seems that some games will set up a reverb effect by capturing + //to the nearly same address as playback, but ahead by a couple. + //So, playback will always end up being what was captured a couple of samples ago. + //This system counts on playback always having read ahead 16 samples. + //In that case, playback will end up being what was processed at one entire buffer length ago, + //since the 16 samples would have read ahead before they got captured over + + //It's actually the source channels which should have a fifo, but we are + //not going to take the hit in speed and complexity. Save it for a future rewrite. + //Instead, what we do here is delay the capture by 16 samples to create a similar effect. + //Subjectively, it seems to be working. + + //Don't do anything until the fifo is filled, so as to delay it + if (cap.runtime.fifo.size < 16) + { + cap.runtime.fifo.enqueue(capout[capchan]); + continue; + } + + //(actually capture sample from fifo instead of most recently generated) + u32 multiplier; + s32 sample = cap.runtime.fifo.dequeue(); + cap.runtime.fifo.enqueue(capout[capchan]); + + if (cap.bits8) + { + s8 sample8 = sample >> 8; + if (skipcap) _MMU_write08<1,MMU_AT_DMA>(cap.runtime.curdad,0); + else _MMU_write08<1,MMU_AT_DMA>(cap.runtime.curdad,sample8); + cap.runtime.curdad++; + multiplier = 4; + } + else + { + s16 sample16 = sample; + if (skipcap) _MMU_write16<1,MMU_AT_DMA>(cap.runtime.curdad,0); + else _MMU_write16<1,MMU_AT_DMA>(cap.runtime.curdad,sample16); + cap.runtime.curdad+=2; + multiplier = 2; + } + + if (cap.runtime.curdad >= cap.runtime.maxdad) + { + cap.runtime.curdad = cap.dad; + cap.runtime.sampcnt -= cap.len*multiplier; + } + } //sampinc loop + } //if capchan running + } //capchan loop + } //main sample loop + + SPU->sndbuf[0] = samp0[0]; + SPU->sndbuf[1] = samp0[1]; +} + +//ENTER +static void SPU_MixAudio(bool actuallyMix, SPU_struct *SPU, int length) +{ + if (actuallyMix) + { + memset(SPU->sndbuf, 0, length*4*2); + memset(SPU->outbuf, 0, length*2*2); + } + + SPU_MixAudio_Advanced(actuallyMix, SPU, length); + + //we used to bail out if speakers were disabled. + //this is technically wrong. sound may still be captured, or something. + //in all likelihood, any game doing this probably master disabled the SPU also + //so, optimization of this case is probably not necessary. + //later, we'll just silence the output + bool speakers = T1ReadWord(MMU.ARM7_REG, 0x304) & 0x01; + + u8 vol = SPU->regs.mastervol; + + // convert from 32-bit->16-bit + if (actuallyMix && speakers) { + for (int i = 0; i < length*2; i++) + { + // Apply Master Volume + SPU->sndbuf[i] = spumuldiv7(SPU->sndbuf[i], vol); + s16 outsample = MinMax(SPU->sndbuf[i],-0x8000,0x7FFF); + SPU->outbuf[i] = outsample; + } + } } ////////////////////////////////////////////////////////////////////////////// -static void SNDDummyUnMuteAudio() -{ + +//emulates one hline of the cpu core. +//this will produce a variable number of samples, calculated to keep a 44100hz output +//in sync with the emulator framerate +int spu_core_samples = 0; +void SPU_Emulate_core() +{ + bool needToMix = true; + SoundInterface_struct *soundProcessor = SPU_SoundCore(); + + samples += samples_per_hline; + spu_core_samples = (int)(samples); + samples -= spu_core_samples; + + SPU_MixAudio(needToMix, SPU_core, spu_core_samples); + + if (soundProcessor == NULL) + { + return; + } + + if (soundProcessor->FetchSamples != NULL) + { + soundProcessor->FetchSamples(SPU_core->outbuf, spu_core_samples, synchmode, synchronizer); + } + else + { + SPU_DefaultFetchSamples(SPU_core->outbuf, spu_core_samples, synchmode, synchronizer); + } +} + +void SPU_Emulate_user(bool mix) +{ + static s16 *postProcessBuffer = NULL; + static size_t postProcessBufferSize = 0; + size_t freeSampleCount = 0; + size_t processedSampleCount = 0; + SoundInterface_struct *soundProcessor = SPU_SoundCore(); + + if (soundProcessor == NULL) + { + return; + } + + // Check to see how many free samples are available. + // If there are some, fill up the output buffer. + freeSampleCount = soundProcessor->GetAudioSpace(); + if (freeSampleCount == 0) + { + return; + } + + if (freeSampleCount > buffersize) + { + freeSampleCount = buffersize; + } + + // If needed, resize the post-process buffer to guarantee that + // we can store all the sound data. + if (postProcessBufferSize < freeSampleCount * 2 * sizeof(s16)) + { + postProcessBufferSize = freeSampleCount * 2 * sizeof(s16); + postProcessBuffer = (s16 *)realloc(postProcessBuffer, postProcessBufferSize); + } + + if (soundProcessor->PostProcessSamples != NULL) + { + processedSampleCount = soundProcessor->PostProcessSamples(postProcessBuffer, freeSampleCount, synchmode, synchronizer); + } + else + { + processedSampleCount = SPU_DefaultPostProcessSamples(postProcessBuffer, freeSampleCount, synchmode, synchronizer); + } + + soundProcessor->UpdateAudio(postProcessBuffer, processedSampleCount); } -////////////////////////////////////////////////////////////////////////////// +void SPU_DefaultFetchSamples(s16 *sampleBuffer, size_t sampleCount, ESynchMode synchMode, ISynchronizingAudioBuffer *theSynchronizer) +{ + theSynchronizer->enqueue_samples(sampleBuffer, sampleCount); +} -static void SNDDummySetVolume(int volume) +size_t SPU_DefaultPostProcessSamples(s16 *postProcessBuffer, size_t requestedSampleCount, ESynchMode synchMode, ISynchronizingAudioBuffer *theSynchronizer) { + return theSynchronizer->output_samples(postProcessBuffer, requestedSampleCount); } ////////////////////////////////////////////////////////////////////////////// +// Dummy Sound Interface +////////////////////////////////////////////////////////////////////////////// -SoundInterface_struct SNDDummy = -{ - SNDCORE_DUMMY, - "Dummy Sound Interface", - SNDDummyInit, - SNDDummyDeInit, - SNDDummyUpdateAudio, - SNDDummyGetAudioSpace, - SNDDummyMuteAudio, - SNDDummyUnMuteAudio, - SNDDummySetVolume +int SNDDummyInit(int buffersize); +void SNDDummyDeInit(); +void SNDDummyUpdateAudio(s16 *buffer, u32 num_samples); +u32 SNDDummyGetAudioSpace(); +void SNDDummyMuteAudio(); +void SNDDummyUnMuteAudio(); +void SNDDummySetVolume(int volume); +void SNDDummyClearBuffer(); +void SNDDummyFetchSamples(s16 *sampleBuffer, size_t sampleCount, ESynchMode synchMode, ISynchronizingAudioBuffer *theSynchronizer); +size_t SNDDummyPostProcessSamples(s16 *postProcessBuffer, size_t requestedSampleCount, ESynchMode synchMode, ISynchronizingAudioBuffer *theSynchronizer); + +SoundInterface_struct SNDDummy = { + SNDCORE_DUMMY, + "Dummy Sound Interface", + SNDDummyInit, + SNDDummyDeInit, + SNDDummyUpdateAudio, + SNDDummyGetAudioSpace, + SNDDummyMuteAudio, + SNDDummyUnMuteAudio, + SNDDummySetVolume, + SNDDummyClearBuffer, + SNDDummyFetchSamples, + SNDDummyPostProcessSamples }; +int SNDDummyInit(int buffersize) { return 0; } +void SNDDummyDeInit() {} +void SNDDummyUpdateAudio(s16 *buffer, u32 num_samples) { } +u32 SNDDummyGetAudioSpace() { return DESMUME_SAMPLE_RATE/60 + 5; } +void SNDDummyMuteAudio() {} +void SNDDummyUnMuteAudio() {} +void SNDDummySetVolume(int volume) {} +void SNDDummyClearBuffer() {} +void SNDDummyFetchSamples(s16 *sampleBuffer, size_t sampleCount, ESynchMode synchMode, ISynchronizingAudioBuffer *theSynchronizer) {} +size_t SNDDummyPostProcessSamples(s16 *postProcessBuffer, size_t requestedSampleCount, ESynchMode synchMode, ISynchronizingAudioBuffer *theSynchronizer) { return 0; } + diff -Nru audacious-plugins-4.1/src/xsf/desmume/SPU.h audacious-plugins-4.3.1/src/xsf/desmume/SPU.h --- audacious-plugins-4.1/src/xsf/desmume/SPU.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/SPU.h 2023-04-29 20:17:32.000000000 +0000 @@ -1,31 +1,61 @@ -/* Copyright (C) 2006 Theo Berkau +/* + Copyright 2006 Theo Berkau + Copyright (C) 2006-2015 DeSmuME team + + This file 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 file 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. - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + You should have received a copy of the GNU General Public License + along with the this software. If not, see . */ #ifndef SPU_H #define SPU_H +#include +#include +#include +#include +#include + #include "types.h" +#include "matrix.h" +#include "metaspu.h" +#include "../spu/samplecache.h" + +class EMUFILE; #define SNDCORE_DEFAULT -1 #define SNDCORE_DUMMY 0 -typedef struct +#define CHANSTAT_STOPPED 0 +#define CHANSTAT_PLAY 1 + + +//who made these static? theyre used in multiple places. +FORCEINLINE u32 sputrunc(float f) { return u32floor(f); } +FORCEINLINE u32 sputrunc(double d) { return u32floor(d); } +FORCEINLINE s32 spumuldiv7(s32 val, u8 multiplier) { + assert(multiplier <= 127); + return (multiplier == 127) ? val : ((val * multiplier) >> 7); +} + +enum SPUInterpolationMode +{ + SPUInterpolation_None = 0, + SPUInterpolation_Linear = 1, + SPUInterpolation_Cosine = 2, + SPUInterpolation_Sharp = 3 +}; + +struct SoundInterface_struct { int id; const char *Name; @@ -36,22 +66,205 @@ void (*MuteAudio)(); void (*UnMuteAudio)(); void (*SetVolume)(int volume); -} SoundInterface_struct; + void (*ClearBuffer)(); + void (*FetchSamples)(s16 *sampleBuffer, size_t sampleCount, ESynchMode synchMode, ISynchronizingAudioBuffer *theSynchronizer); + size_t (*PostProcessSamples)(s16 *postProcessBuffer, size_t requestedSampleCount, ESynchMode synchMode, ISynchronizingAudioBuffer *theSynchronizer); +}; + extern SoundInterface_struct SNDDummy; +extern SoundInterface_struct SNDFile; +extern int SPU_currentCoreNum; + +struct channel_struct +{ + channel_struct() : num(0), + vol(0), + volumeDiv(0), + hold(0), + pan(0), + waveduty(0), + repeat(0), + format(0), + keyon(0), + status(0), + addr(0), + timer(0), + loopstart(0), + length(0), + totlength(0), + double_totlength_shifted(0.0), + sampcnt(0.0), + sampinc(0.0), + lastsampcnt(0), + pcm16b(0), + pcm16b_last(0), + loop_pcm16b(0), + index(0), + loop_index(0), + x(0), + psgnoise_last(0) + {} + u32 num; + u8 vol; + u8 volumeDiv; + u8 hold; + u8 pan; + u8 waveduty; + u8 repeat; + u8 format; + u8 keyon; + u8 status; + u32 addr; + u16 timer; + u16 loopstart; + u32 length; + u32 totlength; + double double_totlength_shifted; + double sampcnt; + double sampinc; + // ADPCM specific + u32 lastsampcnt; + s16 pcm16b, pcm16b_last; + s16 loop_pcm16b; + s32 index; + int loop_index; + u16 x; + s16 psgnoise_last; +}; + +class SPUFifo +{ +public: + SPUFifo(); + void enqueue(s16 val); + s16 dequeue(); + s16 buffer[16]; + s32 head,tail,size; + void reset(); +}; + +class SPU_struct +{ +public: + SPU_struct(int buffersize); + u32 bufpos; + u32 buflength; + s32 *sndbuf; + s32 lastdata; //the last sample that a channel generated + s16 *outbuf; + u32 bufsize; + channel_struct channels[16]; + + //registers + struct REGS { + REGS() + : mastervol(0) + , ctl_left(0) + , ctl_right(0) + , ctl_ch1bypass(0) + , ctl_ch3bypass(0) + , masteren(0) + , soundbias(0) + {} + + u8 mastervol; + u8 ctl_left, ctl_right; + u8 ctl_ch1bypass, ctl_ch3bypass; + u8 masteren; + u16 soundbias; + + enum LeftOutputMode + { + LOM_LEFT_MIXER=0, LOM_CH1=1, LOM_CH3=2, LOM_CH1_PLUS_CH3=3 + }; + + enum RightOutputMode + { + ROM_RIGHT_MIXER=0, ROM_CH1=1, ROM_CH3=2, ROM_CH1_PLUS_CH3=3 + }; + + struct CAP { + CAP() + : add(0), source(0), oneshot(0), bits8(0), active(0), dad(0), len(0) + {} + u8 add, source, oneshot, bits8, active; + u32 dad; + u16 len; + struct Runtime { + Runtime() + : running(0), curdad(0), maxdad(0) + {} + u8 running; + u32 curdad; + u32 maxdad; + double sampcnt; + SPUFifo fifo; + } runtime; + } cap[2]; + } regs; + + void reset(); + ~SPU_struct(); + void KeyOff(int channel); + void KeyOn(int channel); + void KeyProbe(int channel); + void ProbeCapture(int which); + void WriteByte(u32 addr, u8 val); + void WriteWord(u32 addr, u16 val); + void WriteLong(u32 addr, u32 val); + u8 ReadByte(u32 addr); + u16 ReadWord(u32 addr); + u32 ReadLong(u32 addr); + bool isSPU(u32 addr) { return ((addr >= 0x04000400) && (addr < 0x04000520)); } + + //kills all channels but leaves SPU otherwise running normally + void ShutUp(); +}; +extern SPU_struct *SPU_core; +extern int spu_core_samples; int SPU_ChangeSoundCore(int coreid, int buffersize); +SoundInterface_struct *SPU_SoundCore(); + +void SPU_ReInit(bool fakeBoot = false); int SPU_Init(int coreid, int buffersize); void SPU_Pause(int pause); void SPU_SetVolume(int volume); +void SPU_SetSynchMode(int mode, int method); +void SPU_ClearOutputBuffer(void); void SPU_Reset(void); void SPU_DeInit(void); void SPU_KeyOn(int channel); -void SPU_WriteByte(u32 addr, u8 val); -void SPU_WriteWord(u32 addr, u16 val); -void SPU_WriteLong(u32 addr, u32 val); -u32 SPU_ReadLong(u32 addr); -void SPU_Emulate(void); -void SPU_EmulateSamples(u32 numsamples); +static FORCEINLINE void SPU_WriteByte(u32 addr, u8 val) +{ + addr &= 0xFFF; + + SPU_core->WriteByte(addr,val); +} +static FORCEINLINE void SPU_WriteWord(u32 addr, u16 val) +{ + addr &= 0xFFF; + + SPU_core->WriteWord(addr,val); +} +static FORCEINLINE void SPU_WriteLong(u32 addr, u32 val) +{ + addr &= 0xFFF; + + SPU_core->WriteLong(addr,val); +} +static FORCEINLINE u8 SPU_ReadByte(u32 addr) { return SPU_core->ReadByte(addr & 0x0FFF); } +static FORCEINLINE u16 SPU_ReadWord(u32 addr) { return SPU_core->ReadWord(addr & 0x0FFF); } +static FORCEINLINE u32 SPU_ReadLong(u32 addr) { return SPU_core->ReadLong(addr & 0x0FFF); } +void SPU_Emulate_core(void); +void SPU_Emulate_user(bool mix = true); +void SPU_DefaultFetchSamples(s16 *sampleBuffer, size_t sampleCount, ESynchMode synchMode, ISynchronizingAudioBuffer *theSynchronizer); +size_t SPU_DefaultPostProcessSamples(s16 *postProcessBuffer, size_t requestedSampleCount, ESynchMode synchMode, ISynchronizingAudioBuffer *theSynchronizer); + +extern double DESMUME_SAMPLE_RATE; +void SetDesmumeSampleRate(double rate); + +extern SampleCache spuSampleCache; #endif diff -Nru audacious-plugins-4.1/src/xsf/desmume/arm_instructions.cc audacious-plugins-4.3.1/src/xsf/desmume/arm_instructions.cc --- audacious-plugins-4.1/src/xsf/desmume/arm_instructions.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/arm_instructions.cc 2023-04-29 20:17:32.000000000 +0000 @@ -1,7857 +1,6155 @@ -/* Copyright (C) 2006 yopyop - Copyright (C) 2006 shash - yopyop156@ifrance.com - yopyop156.ifrance.com - +/* + Copyright (C) 2006 yopyop Copyright (C) 2006-2007 shash + Copyright (C) 2008-2012 DeSmuME team - This file is part of DeSmuME + This file 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 file 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. - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + You should have received a copy of the GNU General Public License + along with the this software. If not, see . */ +// ARM core TODO: +// - Check all the LDM/STM opcodes: quirks when Rb included in Rlist; opcodes +// operating on user registers (LDMXX2/STMXX2) +// - Force User mode memory access for LDRx/STRx opcodes with bit24=0 and bit21=1 +// (has to be done at memory side; once the PU is emulated well enough) +// - Check LDMxx2/STMxx2 (those opcodes that act on User mode registers instead +// of current ones) + #include "cp15.h" -#include "debug.h" #include "MMU.h" +#include "armcpu.h" +#include "NDSSystem.h" +#include "MMU_timing.h" + +#define cpu (&ARMPROC) +#define TEMPLATE template + +// ----------------------------------------------------------------------------- +// Shifting macros +// ----------------------------------------------------------------------------- + +#define LSL_IMM \ + uint32_t shift_op = cpu->R[REG_POS(i, 0)] << ((i >> 7) & 0x1F); + +#define S_LSL_IMM \ + uint32_t shift_op = (i >> 7) & 0x1F; \ + uint32_t c = cpu->CPSR.bits.C; \ + if (!shift_op) \ + shift_op = cpu->R[REG_POS(i, 0)]; \ + else \ + { \ + c = BIT_N(cpu->R[REG_POS(i, 0)], 32 - shift_op); \ + shift_op = cpu->R[REG_POS(i, 0)] << shift_op; \ + } +#define LSL_REG \ + uint32_t shift_op = cpu->R[REG_POS(i, 8)] & 0xFF; \ + if (shift_op >= 32) \ + shift_op = 0; \ + else \ + shift_op = cpu->R[REG_POS(i, 0)] << shift_op; + +#define S_LSL_REG \ + uint32_t shift_op = cpu->R[REG_POS(i,8)] & 0xFF; \ + uint32_t c = cpu->CPSR.bits.C; \ + if (!shift_op) \ + shift_op = cpu->R[REG_POS(i, 0)]; \ + else if (shift_op < 32) \ + { \ + c = BIT_N(cpu->R[REG_POS(i, 0)], 32 - shift_op); \ + shift_op = cpu->R[REG_POS(i, 0)] << shift_op; \ + } \ + else if (shift_op == 32) \ + { \ + shift_op = 0; \ + c = BIT0(cpu->R[REG_POS(i, 0)]); \ + } \ + else \ + { \ + shift_op = 0; \ + c = 0; \ + } -// Use this macros for reading/writing, so the GDB stub isn't broken -#ifdef GDB_STUB - #define READ32(a,b) cpu->mem_if->read32(a,b) - #define WRITE32(a,b,c) cpu->mem_if->write32(a,b,c) - #define READ16(a,b) cpu->mem_if->read16(a,b) - #define WRITE16(a,b,c) cpu->mem_if->write16(a,b,c) - #define READ8(a,b) cpu->mem_if->read8(a,b) - #define WRITE8(a,b,c) cpu->mem_if->write8(a,b,c) -#else - #define READ32(a,b) MMU_read32(cpu->proc_ID, b) - #define WRITE32(a,b,c) MMU_write32(cpu->proc_ID,b,c) - #define READ16(a,b) MMU_read16(cpu->proc_ID, b) - #define WRITE16(a,b,c) MMU_write16(cpu->proc_ID,b,c) - #define READ8(a,b) MMU_read8(cpu->proc_ID, b) - #define WRITE8(a,b,c) MMU_write8(cpu->proc_ID,b,c) -#endif +#define LSR_IMM \ + uint32_t shift_op = (i >> 7) & 0x1F; \ + if (shift_op) \ + shift_op = cpu->R[REG_POS(i, 0)] >> shift_op; + +#define S_LSR_IMM \ + uint32_t shift_op = (i >> 7) & 0x1F; \ + uint32_t c = cpu->CPSR.bits.C; \ + if (!shift_op) \ + c = BIT31(cpu->R[REG_POS(i, 0)]); \ + else \ + { \ + c = BIT_N(cpu->R[REG_POS(i, 0)], shift_op - 1); \ + shift_op = cpu->R[REG_POS(i, 0)]>>shift_op; \ + } +#define LSR_REG \ + uint32_t shift_op = cpu->R[REG_POS(i,8)] & 0xFF; \ + if (shift_op >= 32) \ + shift_op = 0; \ + else \ + shift_op = cpu->R[REG_POS(i, 0)] >> shift_op; + +#define S_LSR_REG \ + uint32_t shift_op = cpu->R[REG_POS(i,8)] & 0xFF; \ + uint32_t c = cpu->CPSR.bits.C; \ + if (!shift_op) \ + shift_op = cpu->R[REG_POS(i ,0)]; \ + else if (shift_op < 32) \ + { \ + c = BIT_N(cpu->R[REG_POS(i, 0)], shift_op - 1); \ + shift_op = cpu->R[REG_POS(i, 0)] >> shift_op; \ + } \ + else if (shift_op == 32) \ + { \ + c = BIT31(cpu->R[REG_POS(i, 0)]); \ + shift_op = 0; \ + } \ + else \ + { \ + c = 0; \ + shift_op = 0; \ + } +#define ASR_IMM \ + uint32_t shift_op = (i >> 7) & 0x1F; \ + if (!shift_op) \ + shift_op = BIT31(cpu->R[REG_POS(i, 0)]) * 0xFFFFFFFF; \ + else \ + shift_op = static_cast(static_cast(cpu->R[REG_POS(i, 0)]) >> shift_op); + +#define S_ASR_IMM \ + uint32_t shift_op = (i >> 7) & 0x1F; \ + uint32_t c = cpu->CPSR.bits.C; \ + if (!shift_op) \ + { \ + shift_op = BIT31(cpu->R[REG_POS(i, 0)]) * 0xFFFFFFFF; \ + c = BIT31(cpu->R[REG_POS(i, 0)]); \ + } \ + else \ + { \ + c = BIT_N(cpu->R[REG_POS(i, 0)], shift_op - 1); \ + shift_op = static_cast(static_cast(cpu->R[REG_POS(i, 0)]) >> shift_op); \ + } -#define LSL_IMM shift_op = cpu->R[REG_POS(i,0)]<<((i>>7)&0x1F); +#define ASR_REG \ + uint32_t shift_op = cpu->R[REG_POS(i,8)] & 0xFF; \ + if (!shift_op) \ + shift_op = cpu->R[REG_POS(i, 0)]; \ + else if (shift_op < 32) \ + shift_op = static_cast(static_cast(cpu->R[REG_POS(i, 0)]) >> shift_op); \ + else \ + shift_op = BIT31(cpu->R[REG_POS(i, 0)]) * 0xFFFFFFFF; + +#define S_ASR_REG \ + uint32_t shift_op = cpu->R[REG_POS(i, 8)] & 0xFF; \ + uint32_t c = cpu->CPSR.bits.C; \ + if (!shift_op) \ + shift_op = cpu->R[REG_POS(i, 0)]; \ + else if (shift_op < 32) \ + { \ + c = BIT_N(cpu->R[REG_POS(i, 0)], shift_op - 1); \ + shift_op = static_cast(static_cast(cpu->R[REG_POS(i, 0)]) >> shift_op); \ + } \ + else \ + { \ + c = BIT31(cpu->R[REG_POS(i, 0)]); \ + shift_op = BIT31(cpu->R[REG_POS(i, 0)]) * 0xFFFFFFFF; \ + } -#define S_LSL_IMM u32 shift_op = ((i>>7)&0x1F);\ - u32 c = cpu->CPSR.bits.C;\ - if(shift_op==0)\ - shift_op=cpu->R[REG_POS(i,0)];\ - else\ - {\ - c = BIT_N(cpu->R[REG_POS(i,0)], 32-shift_op);\ - shift_op = cpu->R[REG_POS(i,0)]<<((i>>7)&0x1F);\ - } - -#define LSL_REG u32 shift_op = (cpu->R[REG_POS(i,8)])&0xFF;\ - if(shift_op>=32)\ - shift_op=0;\ - else\ - shift_op=cpu->R[REG_POS(i,0)]<R[REG_POS(i,8)])&0xFF;\ - u32 c = cpu->CPSR.bits.C;\ - if(shift_op==0)\ - shift_op=cpu->R[REG_POS(i,0)];\ - else\ - if(shift_op<32)\ - {\ - c = BIT_N(cpu->R[REG_POS(i,0)], 32-shift_op);\ - shift_op = cpu->R[REG_POS(i,0)]<R[REG_POS(i,0)]);\ - }\ - else\ - {\ - shift_op = 0;\ - c = 0;\ - } - -#define LSR_IMM shift_op = ((i>>7)&0x1F);\ - if(shift_op!=0)\ - shift_op = cpu->R[REG_POS(i,0)]>>shift_op; - -#define S_LSR_IMM u32 shift_op = ((i>>7)&0x1F);\ - u32 c = cpu->CPSR.bits.C;\ - if(shift_op==0)\ - {\ - c = BIT31(cpu->R[REG_POS(i,0)]);\ - }\ - else\ - {\ - c = BIT_N(cpu->R[REG_POS(i,0)], shift_op-1);\ - shift_op = cpu->R[REG_POS(i,0)]>>shift_op;\ - } - -#define LSR_REG u32 shift_op = (cpu->R[REG_POS(i,8)])&0xFF;\ - if(shift_op>=32)\ - shift_op = 0;\ - else\ - shift_op = cpu->R[REG_POS(i,0)]>>shift_op; - -#define S_LSR_REG u32 shift_op = (cpu->R[REG_POS(i,8)])&0xFF;\ - u32 c = cpu->CPSR.bits.C;\ - if(shift_op==0)\ - {\ - shift_op = cpu->R[REG_POS(i,0)];\ - }\ - else\ - if(shift_op<32)\ - {\ - c = BIT_N(cpu->R[REG_POS(i,0)], shift_op-1);\ - shift_op = cpu->R[REG_POS(i,0)]>>shift_op;\ - }\ - else\ - if(shift_op==32)\ - {\ - c = BIT31(cpu->R[REG_POS(i,0)]);\ - shift_op = 0;\ - }\ - else\ - {\ - c = 0;\ - shift_op = 0;\ - } - -#define ASR_IMM shift_op = ((i>>7)&0x1F);\ - if(shift_op==0)\ - shift_op=BIT31(cpu->R[REG_POS(i,0)])*0xFFFFFFFF;\ - else\ - shift_op = (u32)(((s32)(cpu->R[REG_POS(i,0)]))>>shift_op); - -#define S_ASR_IMM u32 shift_op = ((i>>7)&0x1F);\ - u32 c = cpu->CPSR.bits.C;\ - if(shift_op==0)\ - {\ - shift_op=BIT31(cpu->R[REG_POS(i,0)])*0xFFFFFFFF;\ - c = BIT31(cpu->R[REG_POS(i,0)]);\ - }\ - else\ - {\ - c = BIT_N(cpu->R[REG_POS(i,0)], shift_op-1);\ - shift_op = (u32)(((s32)(cpu->R[REG_POS(i,0)]))>>shift_op);\ - } - -#define ASR_REG u32 shift_op = (cpu->R[REG_POS(i,8)])&0xFF;\ - if(shift_op==0)\ - shift_op=cpu->R[REG_POS(i,0)];\ - else\ - if(shift_op<32)\ - shift_op = (u32)(((s32)(cpu->R[REG_POS(i,0)]))>>shift_op);\ - else\ - shift_op=BIT31(cpu->R[REG_POS(i,0)])*0xFFFFFFFF; - -#define S_ASR_REG u32 shift_op = (cpu->R[REG_POS(i,8)])&0xFF;\ - u32 c = cpu->CPSR.bits.C;\ - if(shift_op==0)\ - shift_op=cpu->R[REG_POS(i,0)];\ - else\ - if(shift_op<32)\ - {\ - c = BIT_N(cpu->R[REG_POS(i,0)], shift_op-1);\ - shift_op = (u32)(((s32)(cpu->R[REG_POS(i,0)]))>>shift_op);\ - }\ - else\ - {\ - c = BIT31(cpu->R[REG_POS(i,0)]);\ - shift_op=BIT31(cpu->R[REG_POS(i,0)])*0xFFFFFFFF;\ - } - -#define ROR_IMM shift_op = ((i>>7)&0x1F);\ - if(shift_op==0)\ - {\ - u32 tmp = cpu->CPSR.bits.C;\ - shift_op = (tmp<<31)|(cpu->R[REG_POS(i,0)]>>1);\ - }\ - else\ - shift_op = ROR(cpu->R[REG_POS(i,0)],shift_op); - -#define S_ROR_IMM u32 shift_op = ((i>>7)&0x1F);\ - u32 c = cpu->CPSR.bits.C;\ - if(shift_op==0)\ - {\ - u32 tmp = cpu->CPSR.bits.C;\ - shift_op = (tmp<<31)|(cpu->R[REG_POS(i,0)]>>1);\ - c = BIT0(cpu->R[REG_POS(i,0)]);\ - }\ - else\ - {\ - c = BIT_N(cpu->R[REG_POS(i,0)], shift_op-1);\ - shift_op = ROR(cpu->R[REG_POS(i,0)],shift_op);\ - } - -#define ROR_REG u32 shift_op = (cpu->R[REG_POS(i,8)])&0xFF;\ - if((shift_op==0)||((shift_op&0xF)==0))\ - shift_op=cpu->R[REG_POS(i,0)];\ - else\ - shift_op = ROR(cpu->R[REG_POS(i,0)],(shift_op&0xF)); - -#define S_ROR_REG u32 shift_op = (cpu->R[REG_POS(i,8)])&0xFF;\ - u32 c = cpu->CPSR.bits.C;\ - if(shift_op==0)\ - shift_op=cpu->R[REG_POS(i,0)];\ - else\ - {\ - shift_op&=0xF;\ - if(shift_op==0)\ - {\ - shift_op=cpu->R[REG_POS(i,0)];\ - c = BIT31(cpu->R[REG_POS(i,0)]);\ - }\ - else\ - {\ - c = BIT_N(cpu->R[REG_POS(i,0)], shift_op-1);\ - shift_op = ROR(cpu->R[REG_POS(i,0)],(shift_op&0xF));\ - }\ - } - -#define IMM_VALUE u32 shift_op = ROR((i&0xFF), (i>>7)&0x1E); - -#define S_IMM_VALUE u32 shift_op = ROR((i&0xFF), (i>>7)&0x1E);\ - u32 c = cpu->CPSR.bits.C;\ - if((i>>8)&0xF)\ - c = BIT31(shift_op); - -#define IMM_OFF (((i>>4)&0xF0)+(i&0xF)) +#define ROR_IMM \ + uint32_t shift_op = (i >> 7) & 0x1F; \ + if (!shift_op) \ + shift_op = (static_cast(cpu->CPSR.bits.C) << 31) | (cpu->R[REG_POS(i, 0)] >> 1); \ + else \ + shift_op = ROR(cpu->R[REG_POS(i, 0)], shift_op); + +#define S_ROR_IMM \ + uint32_t shift_op = (i >> 7) & 0x1F; \ + uint32_t c = cpu->CPSR.bits.C; \ + if (!shift_op) \ + { \ + shift_op = (static_cast(cpu->CPSR.bits.C) << 31) | (cpu->R[REG_POS(i, 0)] >> 1); \ + c = BIT0(cpu->R[REG_POS(i, 0)]); \ + } \ + else \ + { \ + c = BIT_N(cpu->R[REG_POS(i, 0)], shift_op - 1); \ + shift_op = ROR(cpu->R[REG_POS(i, 0)], shift_op); \ + } + +#define ROR_REG \ + uint32_t shift_op = cpu->R[REG_POS(i, 8)] & 0xFF; \ + if (!shift_op || !(shift_op & 0x1F)) \ + shift_op = cpu->R[REG_POS(i, 0)]; \ + else \ + shift_op = ROR(cpu->R[REG_POS(i, 0)], shift_op & 0x1F); + +#define S_ROR_REG \ + uint32_t shift_op = cpu->R[REG_POS(i, 8)] & 0xFF; \ + uint32_t c = cpu->CPSR.bits.C; \ + if (!shift_op) \ + shift_op = cpu->R[REG_POS(i, 0)]; \ + else \ + { \ + shift_op &= 0x1F; \ + if (!shift_op) \ + { \ + shift_op = cpu->R[REG_POS(i, 0)]; \ + c = BIT31(cpu->R[REG_POS(i, 0)]); \ + } \ + else \ + { \ + c = BIT_N(cpu->R[REG_POS(i, 0)], shift_op - 1); \ + shift_op = ROR(cpu->R[REG_POS(i, 0)], shift_op); \ + } \ + } + +#define IMM_VALUE \ + uint32_t shift_op = ROR(i & 0xFF, (i >> 7) & 0x1E); + +#define S_IMM_VALUE \ + uint32_t shift_op = ROR(i & 0xFF, (i >> 7) & 0x1E); \ + uint32_t c = cpu->CPSR.bits.C; \ + if ((i >> 8) & 0xF) \ + c = BIT31(shift_op); -#define IMM_OFF_12 ((i)&0xFFF) +#define IMM_OFF (((i >> 4) & 0xF0) + (i & 0xF)) -extern BOOL execute; +#define IMM_OFF_12 ((i) & 0xFFF) -static u32 FASTCALL OP_UND(armcpu_t *cpu) +// ----------------------------------------------------------------------------- +// Undefined instruction +// ----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_UND(uint32_t) { - LOG("Undefined instruction: %08X\n", cpu->instruction); - execute = false; + TRAPUNDEF(cpu); return 1; } -//-----------------------AND------------------------------------ +// ----------------------------------------------------------------------------- +// AND / ANDS +// Timing: OK +// ----------------------------------------------------------------------------- -#define OP_AND(a, b) cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] & shift_op;\ - if(REG_POS(i,12)==15)\ - {\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - return a; +#define OP_AND(a, b) \ + cpu->R[REG_POS(i, 12)] = cpu->R[REG_POS(i, 16)] & shift_op; \ + if (REG_POS(i, 12) == 15) \ + { \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + return a; -#define OP_ANDS(a, b)\ - if(REG_POS(i,12)==15)\ - {\ - Status_Reg SPSR;\ - cpu->R[15] = cpu->R[REG_POS(i,16)] & shift_op;\ - SPSR = cpu->SPSR;\ - armcpu_switchMode(cpu, SPSR.bits.mode);\ - cpu->CPSR=SPSR;\ - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1));\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] & shift_op;\ - cpu->CPSR.bits.C = c;\ - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]);\ - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0);\ - return a; +#define OP_ANDS(a, b) \ + cpu->R[REG_POS(i, 12)] = cpu->R[REG_POS(i, 16)] & shift_op; \ + if (REG_POS(i, 12) == 15) \ + { \ + Status_Reg SPSR = cpu->SPSR; \ + armcpu_switchMode(cpu, SPSR.bits.mode); \ + cpu->CPSR = SPSR; \ + cpu->changeCPSR(); \ + cpu->R[15] &= 0xFFFFFFFC | (static_cast(cpu->CPSR.bits.T) << 1); \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + cpu->CPSR.bits.C = c; \ + cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i, 12)]); \ + cpu->CPSR.bits.Z = !cpu->R[REG_POS(i, 12)]; \ + return a; -static u32 FASTCALL OP_AND_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_AND_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSL_IMM; - OP_AND(1, 3); + LSL_IMM; + OP_AND(1, 3); } -static u32 FASTCALL OP_AND_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_AND_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - LSL_REG; - OP_AND(2, 4); + LSL_REG; + OP_AND(2, 4); } -static u32 FASTCALL OP_AND_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_AND_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSR_IMM; - OP_AND(1, 3); + LSR_IMM; + OP_AND(1, 3); } -static u32 FASTCALL OP_AND_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_AND_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - LSR_REG; - OP_AND(2, 4); + LSR_REG; + OP_AND(2, 4); } -static u32 FASTCALL OP_AND_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_AND_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ASR_IMM; - OP_AND(1, 3); + ASR_IMM; + OP_AND(1, 3); } -static u32 FASTCALL OP_AND_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_AND_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - ASR_REG; - OP_AND(2, 4); + ASR_REG; + OP_AND(2, 4); } -static u32 FASTCALL OP_AND_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_AND_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ROR_IMM; - OP_AND(1, 3); + ROR_IMM; + OP_AND(1, 3); } -static u32 FASTCALL OP_AND_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_AND_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - ROR_REG; - OP_AND(2, 4); + ROR_REG; + OP_AND(2, 4); } -static u32 FASTCALL OP_AND_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_AND_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - IMM_VALUE; - OP_AND(1, 3); + IMM_VALUE; + OP_AND(1, 3); } -static u32 FASTCALL OP_AND_S_LSL_IMM(armcpu_t *cpu) + +TEMPLATE static uint32_t FASTCALL OP_AND_S_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_LSL_IMM; - OP_ANDS(2, 4); + S_LSL_IMM; + OP_ANDS(1, 3); } -static u32 FASTCALL OP_AND_S_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_AND_S_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - S_LSL_REG; - OP_ANDS(3, 5); + S_LSL_REG; + OP_ANDS(2, 4); } -static u32 FASTCALL OP_AND_S_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_AND_S_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_LSR_IMM; - OP_ANDS(2, 4); + S_LSR_IMM; + OP_ANDS(1, 3); } -static u32 FASTCALL OP_AND_S_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_AND_S_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_LSR_REG; - OP_ANDS(3, 5); + S_LSR_REG; + OP_ANDS(2, 4); } -static u32 FASTCALL OP_AND_S_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_AND_S_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_ASR_IMM; - OP_ANDS(2, 4); + S_ASR_IMM; + OP_ANDS(1, 3); } -static u32 FASTCALL OP_AND_S_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_AND_S_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_ASR_REG; - OP_ANDS(3, 5); + S_ASR_REG; + OP_ANDS(2, 4); } -static u32 FASTCALL OP_AND_S_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_AND_S_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_ROR_IMM; - OP_ANDS(2, 4); + S_ROR_IMM; + OP_ANDS(1, 3); } -static u32 FASTCALL OP_AND_S_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_AND_S_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_ROR_REG; - OP_ANDS(3, 5); + S_ROR_REG; + OP_ANDS(2, 4); } -static u32 FASTCALL OP_AND_S_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_AND_S_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - S_IMM_VALUE; - OP_ANDS(2, 4); + S_IMM_VALUE; + OP_ANDS(1, 3); } -//--------------EOR------------------------------ +// ----------------------------------------------------------------------------- +// EOR / EORS +// ----------------------------------------------------------------------------- -#define OP_EOR(a, b) cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] ^ shift_op;\ - if(REG_POS(i,12)==15)\ - {\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - return a; +#define OP_EOR(a, b) \ + cpu->R[REG_POS(i, 12)] = cpu->R[REG_POS(i, 16)] ^ shift_op; \ + if (REG_POS(i, 12) == 15) \ + { \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + return a; -#define OP_EORS(a, b) cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] ^ shift_op;\ - if(REG_POS(i,12)==15)\ - {\ - Status_Reg SPSR = cpu->SPSR;\ - armcpu_switchMode(cpu, SPSR.bits.mode);\ - cpu->CPSR=SPSR;\ - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1));\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - cpu->CPSR.bits.C = c;\ - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]);\ - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0);\ - return a; +#define OP_EORS(a, b) \ + cpu->R[REG_POS(i, 12)] = cpu->R[REG_POS(i, 16)] ^ shift_op; \ + if (REG_POS(i, 12) == 15) \ + { \ + Status_Reg SPSR = cpu->SPSR; \ + armcpu_switchMode(cpu, SPSR.bits.mode); \ + cpu->CPSR = SPSR; \ + cpu->changeCPSR(); \ + cpu->R[15] &= 0xFFFFFFFC | (static_cast(cpu->CPSR.bits.T) << 1); \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + cpu->CPSR.bits.C = c; \ + cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i, 12)]); \ + cpu->CPSR.bits.Z = !cpu->R[REG_POS(i, 12)]; \ + return a; -static u32 FASTCALL OP_EOR_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_EOR_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSL_IMM; - OP_EOR(1, 3); + LSL_IMM; + OP_EOR(1, 3); } -static u32 FASTCALL OP_EOR_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_EOR_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - LSL_REG; - OP_EOR(2, 4); + LSL_REG; + OP_EOR(2, 4); } -static u32 FASTCALL OP_EOR_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_EOR_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSR_IMM; - OP_EOR(1, 3); + LSR_IMM; + OP_EOR(1, 3); } -static u32 FASTCALL OP_EOR_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_EOR_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - LSR_REG; - OP_EOR(2, 4); + LSR_REG; + OP_EOR(2, 4); } -static u32 FASTCALL OP_EOR_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_EOR_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ASR_IMM; - OP_EOR(1, 3); + ASR_IMM; + OP_EOR(1, 3); } -static u32 FASTCALL OP_EOR_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_EOR_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - ASR_REG; - OP_EOR(2, 4); + ASR_REG; + OP_EOR(2, 4); } -static u32 FASTCALL OP_EOR_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_EOR_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ROR_IMM; - OP_EOR(1, 3); + ROR_IMM; + OP_EOR(1, 3); } -static u32 FASTCALL OP_EOR_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_EOR_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - ROR_REG; - OP_EOR(2, 4); + ROR_REG; + OP_EOR(2, 4); } -static u32 FASTCALL OP_EOR_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_EOR_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - IMM_VALUE; - OP_EOR(1, 3); + IMM_VALUE; + OP_EOR(1, 3); } -static u32 FASTCALL OP_EOR_S_LSL_IMM(armcpu_t *cpu) + +TEMPLATE static uint32_t FASTCALL OP_EOR_S_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_LSL_IMM; - OP_EORS(2, 4); + S_LSL_IMM; + OP_EORS(1, 3); } -static u32 FASTCALL OP_EOR_S_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_EOR_S_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - S_LSL_REG; - OP_EORS(3, 5); + S_LSL_REG; + OP_EORS(2, 4); } -static u32 FASTCALL OP_EOR_S_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_EOR_S_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_LSR_IMM; - OP_EORS(2, 4); + S_LSR_IMM; + OP_EORS(1, 3); } -static u32 FASTCALL OP_EOR_S_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_EOR_S_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_LSR_REG; - OP_EORS(3, 5); + S_LSR_REG; + OP_EORS(2, 4); } -static u32 FASTCALL OP_EOR_S_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_EOR_S_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_ASR_IMM; - OP_EORS(2, 4); + S_ASR_IMM; + OP_EORS(1, 3); } -static u32 FASTCALL OP_EOR_S_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_EOR_S_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_ASR_REG; - OP_EORS(3, 5); + S_ASR_REG; + OP_EORS(2, 4); } -static u32 FASTCALL OP_EOR_S_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_EOR_S_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_ROR_IMM; - OP_EORS(2, 4); + S_ROR_IMM; + OP_EORS(1, 3); } -static u32 FASTCALL OP_EOR_S_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_EOR_S_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_ROR_REG; - OP_EORS(3, 5); + S_ROR_REG; + OP_EORS(2, 4); } -static u32 FASTCALL OP_EOR_S_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_EOR_S_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - S_IMM_VALUE; - OP_EORS(2, 4); + S_IMM_VALUE; + OP_EORS(1, 3); } -//-------------SUB------------------------------------- +// ----------------------------------------------------------------------------- +// SUB / SUBS +// ----------------------------------------------------------------------------- -#define OP_SUB(a, b) cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] - shift_op;\ - if(REG_POS(i,12)==15)\ - {\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - return a; +#define OP_SUB(a, b) \ + cpu->R[REG_POS(i, 12)] = cpu->R[REG_POS(i, 16)] - shift_op; \ + if (REG_POS(i, 12) == 15) \ + { \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + return a; -#define OPSUBS(a, b) cpu->R[REG_POS(i,12)] = v - shift_op;\ - if(REG_POS(i,12)==15)\ - {\ - Status_Reg SPSR = cpu->SPSR;\ - armcpu_switchMode(cpu, SPSR.bits.mode);\ - cpu->CPSR=SPSR;\ - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1));\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]);\ - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0);\ - cpu->CPSR.bits.C = !UNSIGNED_UNDERFLOW(v, shift_op, cpu->R[REG_POS(i,12)]);\ - cpu->CPSR.bits.V = SIGNED_UNDERFLOW(v, shift_op, cpu->R[REG_POS(i,12)]);\ - return a; +#define OP_SUBS(a, b) \ + cpu->R[REG_POS(i, 12)] = v - shift_op; \ + if (REG_POS(i, 12) == 15) \ + { \ + Status_Reg SPSR = cpu->SPSR; \ + armcpu_switchMode(cpu, SPSR.bits.mode); \ + cpu->CPSR = SPSR; \ + cpu->changeCPSR(); \ + cpu->R[15] &= 0xFFFFFFFC | (static_cast(cpu->CPSR.bits.T) << 1); \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i, 12)]); \ + cpu->CPSR.bits.Z = !cpu->R[REG_POS(i, 12)]; \ + cpu->CPSR.bits.C = !BorrowFrom(v, shift_op); \ + cpu->CPSR.bits.V = OverflowFromSUB(cpu->R[REG_POS(i,12)], v, shift_op); \ + return a; -static u32 FASTCALL OP_SUB_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SUB_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSL_IMM; - OP_SUB(1, 3); + LSL_IMM; + OP_SUB(1, 3); } -static u32 FASTCALL OP_SUB_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SUB_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - LSL_REG; - OP_SUB(2, 4); + LSL_REG; + OP_SUB(2, 4); } -static u32 FASTCALL OP_SUB_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SUB_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSR_IMM; - OP_SUB(1, 3); + LSR_IMM; + OP_SUB(1, 3); } -static u32 FASTCALL OP_SUB_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SUB_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - LSR_REG; - OP_SUB(2, 4); + LSR_REG; + OP_SUB(2, 4); } -static u32 FASTCALL OP_SUB_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SUB_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ASR_IMM; - OP_SUB(1, 3); + ASR_IMM; + OP_SUB(1, 3); } -static u32 FASTCALL OP_SUB_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SUB_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - ASR_REG; - OP_SUB(2, 4); + ASR_REG; + OP_SUB(2, 4); } -static u32 FASTCALL OP_SUB_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SUB_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ROR_IMM; - OP_SUB(1, 3); + ROR_IMM; + OP_SUB(1, 3); } -static u32 FASTCALL OP_SUB_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SUB_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - ROR_REG; - OP_SUB(2, 4); + ROR_REG; + OP_SUB(2, 4); } -static u32 FASTCALL OP_SUB_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SUB_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - IMM_VALUE; - OP_SUB(1, 3); + IMM_VALUE; + OP_SUB(1, 3); } -static u32 FASTCALL OP_SUB_S_LSL_IMM(armcpu_t *cpu) + +TEMPLATE static uint32_t FASTCALL OP_SUB_S_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - LSL_IMM; - OPSUBS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSL_IMM; + OP_SUBS(1, 3); } -static u32 FASTCALL OP_SUB_S_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SUB_S_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - LSL_REG; - OPSUBS(3, 5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSL_REG; + OP_SUBS(2, 4); } -static u32 FASTCALL OP_SUB_S_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SUB_S_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - LSR_IMM; - OPSUBS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSR_IMM; + OP_SUBS(1, 3); } -static u32 FASTCALL OP_SUB_S_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SUB_S_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - LSR_REG; - OPSUBS(3, 5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSR_REG; + OP_SUBS(2, 4); } -static u32 FASTCALL OP_SUB_S_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SUB_S_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - ASR_IMM; - OPSUBS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ASR_IMM; + OP_SUBS(1, 3); } -static u32 FASTCALL OP_SUB_S_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SUB_S_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - ASR_REG; - OPSUBS(3, 5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ASR_REG; + OP_SUBS(2, 4); } -static u32 FASTCALL OP_SUB_S_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SUB_S_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - ROR_IMM; - OPSUBS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ROR_IMM; + OP_SUBS(1, 3); } -static u32 FASTCALL OP_SUB_S_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SUB_S_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - ROR_REG; - OPSUBS(3, 5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ROR_REG; + OP_SUBS(2, 4); } -static u32 FASTCALL OP_SUB_S_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SUB_S_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - IMM_VALUE; - OPSUBS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + IMM_VALUE; + OP_SUBS(1, 3); } -//------------------RSB------------------------ +// ----------------------------------------------------------------------------- +// RSB / RSBS +// ----------------------------------------------------------------------------- -#define OP_RSB(a, b) cpu->R[REG_POS(i,12)] = shift_op - cpu->R[REG_POS(i,16)];\ - if(REG_POS(i,12)==15)\ - {\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - return a; +#define OP_RSB(a, b) \ + cpu->R[REG_POS(i, 12)] = shift_op - cpu->R[REG_POS(i, 16)]; \ + if (REG_POS(i, 12) == 15) \ + { \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + return a; -#define OP_RSBS(a, b) cpu->R[REG_POS(i,12)] = shift_op - v;\ - if(REG_POS(i,12)==15)\ - {\ - Status_Reg SPSR = cpu->SPSR;\ - armcpu_switchMode(cpu, SPSR.bits.mode);\ - cpu->CPSR=SPSR;\ - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1));\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]);\ - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0);\ - cpu->CPSR.bits.C = !UNSIGNED_UNDERFLOW(shift_op, v, cpu->R[REG_POS(i,12)]);\ - cpu->CPSR.bits.V = SIGNED_UNDERFLOW(shift_op, v, cpu->R[REG_POS(i,12)]);\ - return a; +#define OP_RSBS(a, b) \ + cpu->R[REG_POS(i, 12)] = shift_op - v; \ + if (REG_POS(i, 12) == 15) \ + { \ + Status_Reg SPSR = cpu->SPSR; \ + armcpu_switchMode(cpu, SPSR.bits.mode); \ + cpu->CPSR = SPSR; \ + cpu->changeCPSR(); \ + cpu->R[15] &= 0xFFFFFFFC | (static_cast(cpu->CPSR.bits.T) << 1); \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i, 12)]); \ + cpu->CPSR.bits.Z = !cpu->R[REG_POS(i, 12)]; \ + cpu->CPSR.bits.C = !BorrowFrom(shift_op, v); \ + cpu->CPSR.bits.V = OverflowFromSUB(cpu->R[REG_POS(i, 12)], shift_op, v); \ + return a; -static u32 FASTCALL OP_RSB_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSB_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSL_IMM; - OP_RSB(1, 3); + LSL_IMM; + OP_RSB(1, 3); } -static u32 FASTCALL OP_RSB_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSB_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - LSL_REG; - OP_RSB(2, 4); + LSL_REG; + OP_RSB(2, 4); } -static u32 FASTCALL OP_RSB_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSB_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSR_IMM; - OP_RSB(1, 3); + LSR_IMM; + OP_RSB(1, 3); } -static u32 FASTCALL OP_RSB_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSB_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - LSR_REG; - OP_RSB(2, 4); + LSR_REG; + OP_RSB(2, 4); } -static u32 FASTCALL OP_RSB_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSB_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ASR_IMM; - OP_RSB(1, 3); + ASR_IMM; + OP_RSB(1, 3); } -static u32 FASTCALL OP_RSB_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSB_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - ASR_REG; - OP_RSB(2, 4); + ASR_REG; + OP_RSB(2, 4); } -static u32 FASTCALL OP_RSB_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSB_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ROR_IMM; - OP_RSB(1, 3); + ROR_IMM; + OP_RSB(1, 3); } -static u32 FASTCALL OP_RSB_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSB_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - ROR_REG; - OP_RSB(2, 4); + ROR_REG; + OP_RSB(2, 4); } -static u32 FASTCALL OP_RSB_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSB_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - IMM_VALUE; - OP_RSB(1, 3); + IMM_VALUE; + OP_RSB(1, 3); } -static u32 FASTCALL OP_RSB_S_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSB_S_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - LSL_IMM; - OP_RSBS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSL_IMM; + OP_RSBS(1, 3); } -static u32 FASTCALL OP_RSB_S_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSB_S_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - LSL_REG; - OP_RSBS(3, 5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSL_REG; + OP_RSBS(2, 4); } -static u32 FASTCALL OP_RSB_S_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSB_S_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - LSR_IMM; - OP_RSBS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSR_IMM; + OP_RSBS(1, 3); } -static u32 FASTCALL OP_RSB_S_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSB_S_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - LSR_REG; - OP_RSBS(3, 5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSR_REG; + OP_RSBS(2, 4); } -static u32 FASTCALL OP_RSB_S_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSB_S_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - ASR_IMM; - OP_RSBS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ASR_IMM; + OP_RSBS(1, 3); } -static u32 FASTCALL OP_RSB_S_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSB_S_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - ASR_REG; - OP_RSBS(3, 5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ASR_REG; + OP_RSBS(2, 4); } -static u32 FASTCALL OP_RSB_S_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSB_S_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - ROR_IMM; - OP_RSBS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ROR_IMM; + OP_RSBS(1, 3); } -static u32 FASTCALL OP_RSB_S_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSB_S_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - ROR_REG; - OP_RSBS(3, 5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ROR_REG; + OP_RSBS(2, 4); } -static u32 FASTCALL OP_RSB_S_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSB_S_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - IMM_VALUE; - OP_RSBS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + IMM_VALUE; + OP_RSBS(1, 3); } -//------------------ADD----------------------------------- +// ----------------------------------------------------------------------------- +// ADD / ADDS +// ----------------------------------------------------------------------------- + +#define OP_ADD(a, b) \ + cpu->R[REG_POS(i, 12)] = cpu->R[REG_POS(i, 16)] + shift_op; \ + if (REG_POS(i, 12) == 15) \ + { \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + return a; -#define OP_ADD(a, b) cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] + shift_op;\ - if(REG_POS(i,12)==15)\ - {\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - return a; +#define OP_ADDS(a, b) \ + cpu->R[REG_POS(i,12)] = v + shift_op; \ + if (REG_POS(i, 12) == 15) \ + { \ + Status_Reg SPSR = cpu->SPSR; \ + armcpu_switchMode(cpu, SPSR.bits.mode); \ + cpu->CPSR = SPSR; \ + cpu->changeCPSR(); \ + cpu->R[15] &= 0xFFFFFFFC | (static_cast(cpu->CPSR.bits.T) << 1); \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i, 12)]); \ + cpu->CPSR.bits.Z = !cpu->R[REG_POS(i, 12)]; \ + cpu->CPSR.bits.C = CarryFrom(v, shift_op); \ + cpu->CPSR.bits.V = OverflowFromADD(cpu->R[REG_POS(i, 12)], v, shift_op); \ + return a; -static u32 FASTCALL OP_ADD_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSL_IMM; - OP_ADD(1, 3); + LSL_IMM; + OP_ADD(1, 3); } -static u32 FASTCALL OP_ADD_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - LSL_REG; - OP_ADD(2, 4); + LSL_REG; + OP_ADD(2, 4); } -static u32 FASTCALL OP_ADD_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSR_IMM; - OP_ADD(1, 3); + LSR_IMM; + OP_ADD(1, 3); } -static u32 FASTCALL OP_ADD_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - LSR_REG; - OP_ADD(2, 4); + LSR_REG; + OP_ADD(2, 4); } -static u32 FASTCALL OP_ADD_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ASR_IMM; - OP_ADD(1, 3); + ASR_IMM; + OP_ADD(1, 3); } -static u32 FASTCALL OP_ADD_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - ASR_REG; - OP_ADD(2, 4); + ASR_REG; + OP_ADD(2, 4); } -static u32 FASTCALL OP_ADD_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ROR_IMM; - OP_ADD(1, 3); + ROR_IMM; + OP_ADD(1, 3); } -static u32 FASTCALL OP_ADD_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - ROR_REG; - OP_ADD(2, 4); + ROR_REG; + OP_ADD(2, 4); } -static u32 FASTCALL OP_ADD_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - IMM_VALUE; - OP_ADD(1, 3); + IMM_VALUE; + OP_ADD(1, 3); } -#define OP_ADDS(a, b) cpu->R[REG_POS(i,12)] = v + shift_op;\ - if(REG_POS(i,12)==15)\ - {\ - Status_Reg SPSR = cpu->SPSR;\ - armcpu_switchMode(cpu, SPSR.bits.mode);\ - cpu->CPSR=SPSR;\ - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1));\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]);\ - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0);\ - cpu->CPSR.bits.C = UNSIGNED_OVERFLOW(v, shift_op, cpu->R[REG_POS(i,12)]);\ - cpu->CPSR.bits.V = SIGNED_OVERFLOW(v, shift_op, cpu->R[REG_POS(i,12)]);\ - return a; - -static u32 FASTCALL OP_ADD_S_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_S_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - LSL_IMM; - OP_ADDS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSL_IMM; + OP_ADDS(1, 3); } -static u32 FASTCALL OP_ADD_S_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_S_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - LSL_REG; - OP_ADDS(3, 5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSL_REG; + OP_ADDS(2, 4); } -static u32 FASTCALL OP_ADD_S_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_S_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - LSR_IMM; - OP_ADDS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSR_IMM; + OP_ADDS(1, 3); } -static u32 FASTCALL OP_ADD_S_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_S_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - LSR_REG; - OP_ADDS(3, 5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSR_REG; + OP_ADDS(2, 4); } -static u32 FASTCALL OP_ADD_S_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_S_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - ASR_IMM; - OP_ADDS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ASR_IMM; + OP_ADDS(1, 3); } -static u32 FASTCALL OP_ADD_S_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_S_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - ASR_REG; - OP_ADDS(3, 5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ASR_REG; + OP_ADDS(2, 4); } -static u32 FASTCALL OP_ADD_S_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_S_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - ROR_IMM; - OP_ADDS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ROR_IMM; + OP_ADDS(1, 3); } -static u32 FASTCALL OP_ADD_S_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_S_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - ROR_REG; - OP_ADDS(3, 5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ROR_REG; + OP_ADDS(2, 4); } -static u32 FASTCALL OP_ADD_S_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_S_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - IMM_VALUE; - OP_ADDS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + IMM_VALUE; + OP_ADDS(1, 3); } -//------------------ADC----------------------------------- +// ----------------------------------------------------------------------------- +// ADC / ADCS +// ----------------------------------------------------------------------------- +#define OP_ADC(a, b) \ + cpu->R[REG_POS(i, 12)] = cpu->R[REG_POS(i, 16)] + shift_op + cpu->CPSR.bits.C; \ + if (REG_POS(i, 12) == 15) \ + { \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + return a; -#define OP_ADC(a, b) cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] + shift_op + cpu->CPSR.bits.C;\ - if(REG_POS(i,12)==15)\ - {\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - return a; +#define OP_ADCS(a, b) \ +{ \ + if (REG_POS(i, 12) == 15) \ + { \ + cpu->R[REG_POS(i, 12)] = v + shift_op + cpu->CPSR.bits.C; \ + Status_Reg SPSR = cpu->SPSR; \ + armcpu_switchMode(cpu, SPSR.bits.mode); \ + cpu->CPSR = SPSR; \ + cpu->changeCPSR(); \ + cpu->R[15] &= 0xFFFFFFFC | (static_cast(cpu->CPSR.bits.T) << 1); \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + if (!cpu->CPSR.bits.C) \ + { \ + cpu->R[REG_POS(i, 12)] = v + shift_op; \ + cpu->CPSR.bits.C = cpu->R[REG_POS(i, 12)] < v; \ + } \ + else \ + { \ + cpu->R[REG_POS(i, 12)] = v + shift_op + 1; \ + cpu->CPSR.bits.C = cpu->R[REG_POS(i, 12)] <= v; \ + } \ + cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i, 12)]); \ + cpu->CPSR.bits.Z = !cpu->R[REG_POS(i, 12)]; \ + cpu->CPSR.bits.V = BIT31((v ^ shift_op ^ -1) & (v ^ cpu->R[REG_POS(i, 12)])); \ + return a; \ +} -static u32 FASTCALL OP_ADC_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADC_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSL_IMM; - OP_ADC(1, 3); + LSL_IMM; + OP_ADC(1, 3); } -static u32 FASTCALL OP_ADC_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADC_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - LSL_REG; - OP_ADC(2, 4); + LSL_REG; + OP_ADC(2, 4); } -static u32 FASTCALL OP_ADC_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADC_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSR_IMM; - OP_ADC(1, 3); + LSR_IMM; + OP_ADC(1, 3); } -static u32 FASTCALL OP_ADC_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADC_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - LSR_REG; - OP_ADC(2, 4); + LSR_REG; + OP_ADC(2, 4); } -static u32 FASTCALL OP_ADC_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADC_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ASR_IMM; - OP_ADC(1, 3); + ASR_IMM; + OP_ADC(1, 3); } -static u32 FASTCALL OP_ADC_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADC_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - ASR_REG; - OP_ADC(2, 4); + ASR_REG; + OP_ADC(2, 4); } -static u32 FASTCALL OP_ADC_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADC_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ROR_IMM; - OP_ADC(1, 3); + ROR_IMM; + OP_ADC(1, 3); } -static u32 FASTCALL OP_ADC_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADC_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - ROR_REG; - OP_ADC(2, 4); + ROR_REG; + OP_ADC(2, 4); } -static u32 FASTCALL OP_ADC_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADC_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - IMM_VALUE; - OP_ADC(1, 3); + IMM_VALUE; + OP_ADC(1, 3); } -#define OP_ADCS(a, b) \ - { \ - u32 tmp = shift_op + cpu->CPSR.bits.C;\ - cpu->R[REG_POS(i,12)] = v + tmp;\ - if(REG_POS(i,12)==15)\ - {\ - Status_Reg SPSR = cpu->SPSR;\ - armcpu_switchMode(cpu, SPSR.bits.mode);\ - cpu->CPSR=SPSR;\ - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1));\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]);\ - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0);\ - cpu->CPSR.bits.C = UNSIGNED_OVERFLOW(shift_op, cpu->CPSR.bits.C, tmp) | UNSIGNED_OVERFLOW(v, tmp, cpu->R[REG_POS(i,12)]);\ - cpu->CPSR.bits.V = SIGNED_OVERFLOW(shift_op, cpu->CPSR.bits.C, tmp) | SIGNED_OVERFLOW(v, tmp, cpu->R[REG_POS(i,12)]);\ - return a; \ - } -static u32 FASTCALL OP_ADC_S_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADC_S_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - LSL_IMM; - OP_ADCS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSL_IMM; + OP_ADCS(1, 3); } -static u32 FASTCALL OP_ADC_S_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADC_S_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - LSL_REG; - OP_ADCS(3, 5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSL_REG; + OP_ADCS(2, 4); } -static u32 FASTCALL OP_ADC_S_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADC_S_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - LSR_IMM; - OP_ADCS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSR_IMM; + OP_ADCS(1, 3); } -static u32 FASTCALL OP_ADC_S_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADC_S_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - LSR_REG; - OP_ADCS(3, 5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSR_REG; + OP_ADCS(2, 4); } -static u32 FASTCALL OP_ADC_S_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADC_S_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - ASR_IMM; - OP_ADCS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ASR_IMM; + OP_ADCS(1, 3); } -static u32 FASTCALL OP_ADC_S_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADC_S_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - ASR_REG; - OP_ADCS(3, 5); + uint32_t v = cpu->R[REG_POS(i,16)]; + ASR_REG; + OP_ADCS(2, 4); } -static u32 FASTCALL OP_ADC_S_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADC_S_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - ROR_IMM; - OP_ADCS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ROR_IMM; + OP_ADCS(1, 3); } -static u32 FASTCALL OP_ADC_S_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADC_S_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - ROR_REG; - OP_ADCS(3, 5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ROR_REG; + OP_ADCS(2, 4); } -static u32 FASTCALL OP_ADC_S_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADC_S_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - IMM_VALUE; - OP_ADCS(2, 4); + uint32_t v = cpu->R[REG_POS(i,16)]; + IMM_VALUE; + OP_ADCS(1, 3); } -//-------------SBC------------------------------------- +// ----------------------------------------------------------------------------- +// SBC / SBCS +// ----------------------------------------------------------------------------- + +#define OP_SBC(a, b) \ + cpu->R[REG_POS(i, 12)] = cpu->R[REG_POS(i, 16)] - shift_op - !cpu->CPSR.bits.C; \ + if (REG_POS(i, 12) == 15) \ + { \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + return a; -#define OP_SBC(a, b) cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] - shift_op - (!cpu->CPSR.bits.C);\ - if(REG_POS(i,12)==15)\ - {\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - return a; +#define OP_SBCS(a, b) \ +{ \ + if (REG_POS(i, 12) == 15) \ + { \ + cpu->R[REG_POS(i,12)] = v - shift_op - !cpu->CPSR.bits.C; \ + Status_Reg SPSR = cpu->SPSR; \ + armcpu_switchMode(cpu, SPSR.bits.mode); \ + cpu->CPSR = SPSR; \ + cpu->changeCPSR(); \ + cpu->R[15] &= 0xFFFFFFFC | (static_cast(cpu->CPSR.bits.T) << 1); \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + if (!cpu->CPSR.bits.C) \ + { \ + cpu->R[REG_POS(i, 12)] = v - shift_op - 1; \ + cpu->CPSR.bits.C = v > shift_op; \ + } \ + else \ + { \ + cpu->R[REG_POS(i, 12)] = v - shift_op; \ + cpu->CPSR.bits.C = v >= shift_op; \ + } \ + cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i, 12)]); \ + cpu->CPSR.bits.Z = !cpu->R[REG_POS(i, 12)]; \ + cpu->CPSR.bits.V = BIT31((v ^ shift_op) & (v ^ cpu->R[REG_POS(i, 12)])); \ + return a; \ +} -static u32 FASTCALL OP_SBC_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SBC_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSL_IMM; - OP_SBC(1, 3); + LSL_IMM; + OP_SBC(1, 3); } -static u32 FASTCALL OP_SBC_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SBC_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - LSL_REG; - OP_SBC(2, 4); + LSL_REG; + OP_SBC(2, 4); } -static u32 FASTCALL OP_SBC_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SBC_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSR_IMM; - OP_SBC(1, 3); + LSR_IMM; + OP_SBC(1, 3); } -static u32 FASTCALL OP_SBC_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SBC_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - LSR_REG; - OP_SBC(2, 4); + LSR_REG; + OP_SBC(2, 4); } -static u32 FASTCALL OP_SBC_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SBC_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ASR_IMM; - OP_SBC(1, 3); + ASR_IMM; + OP_SBC(1, 3); } -static u32 FASTCALL OP_SBC_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SBC_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - ASR_REG; - OP_SBC(2, 4); + ASR_REG; + OP_SBC(2, 4); } -static u32 FASTCALL OP_SBC_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SBC_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ROR_IMM; - OP_SBC(1, 3); + ROR_IMM; + OP_SBC(1, 3); } -static u32 FASTCALL OP_SBC_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SBC_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - ROR_REG; - OP_SBC(2, 4); + ROR_REG; + OP_SBC(2, 4); } -static u32 FASTCALL OP_SBC_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SBC_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - IMM_VALUE; - OP_SBC(1, 3); + IMM_VALUE; + OP_SBC(1, 3); } -#define OP_SBCS(a, b) \ - { \ - u32 tmp = v - (!cpu->CPSR.bits.C);\ - cpu->R[REG_POS(i,12)] = tmp - shift_op;\ - if(REG_POS(i,12)==15)\ - {\ - Status_Reg SPSR = cpu->SPSR;\ - armcpu_switchMode(cpu, SPSR.bits.mode);\ - cpu->CPSR=SPSR;\ - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1));\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]);\ - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0);\ - cpu->CPSR.bits.C = (!UNSIGNED_UNDERFLOW(v, (int)(!cpu->CPSR.bits.C), tmp)) & (!UNSIGNED_UNDERFLOW(tmp, shift_op, cpu->R[REG_POS(i,12)]));\ - cpu->CPSR.bits.V = SIGNED_UNDERFLOW(v, (int)(!cpu->CPSR.bits.C), tmp) | SIGNED_UNDERFLOW(tmp, shift_op, cpu->R[REG_POS(i,12)]);\ - return a; \ - } -static u32 FASTCALL OP_SBC_S_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SBC_S_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - LSL_IMM; - OP_SBCS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSL_IMM; + OP_SBCS(1, 3); } -static u32 FASTCALL OP_SBC_S_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SBC_S_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - LSL_REG; - OP_SBCS(3, 5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSL_REG; + OP_SBCS(2, 4); } -static u32 FASTCALL OP_SBC_S_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SBC_S_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - LSR_IMM; - OP_SBCS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSR_IMM; + OP_SBCS(1, 3); } -static u32 FASTCALL OP_SBC_S_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SBC_S_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - LSR_REG; - OP_SBCS(3, 5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSR_REG; + OP_SBCS(2, 4); } -static u32 FASTCALL OP_SBC_S_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SBC_S_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - ASR_IMM; - OP_SBCS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ASR_IMM; + OP_SBCS(1, 3); } -static u32 FASTCALL OP_SBC_S_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SBC_S_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - ASR_REG; - OP_SBCS(3, 5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ASR_REG; + OP_SBCS(2, 4); } -static u32 FASTCALL OP_SBC_S_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SBC_S_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - ROR_IMM; - OP_SBCS(2, 4); + uint32_t v = cpu->R[REG_POS(i,16)]; + ROR_IMM; + OP_SBCS(1, 3); } -static u32 FASTCALL OP_SBC_S_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SBC_S_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - ROR_REG; - OP_SBCS(3, 5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ROR_REG; + OP_SBCS(2, 4); } -static u32 FASTCALL OP_SBC_S_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SBC_S_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - IMM_VALUE; - OP_SBCS(2, 4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + IMM_VALUE; + OP_SBCS(1, 3); } -//---------------RSC---------------------------------- +// ----------------------------------------------------------------------------- +// RSC / RSCS +// ----------------------------------------------------------------------------- -#define OP_RSC(a, b) cpu->R[REG_POS(i,12)] = shift_op - cpu->R[REG_POS(i,16)] - (!cpu->CPSR.bits.C);\ - if(REG_POS(i,12)==15)\ - {\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - return a; +#define OP_RSC(a, b) \ + cpu->R[REG_POS(i, 12)] = shift_op - cpu->R[REG_POS(i, 16)] + cpu->CPSR.bits.C - 1; \ + if (REG_POS(i, 12) == 15) \ + { \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + return a; -static u32 FASTCALL OP_RSC_LSL_IMM(armcpu_t *cpu) -{ - u32 i = cpu->instruction; - u32 shift_op; - LSL_IMM; - OP_RSC(1, 3); +#define OP_RSCS(a, b) \ +{ \ + if (REG_POS(i, 12) == 15) \ + { \ + cpu->R[REG_POS(i, 12)] = shift_op - v - !cpu->CPSR.bits.C; \ + Status_Reg SPSR = cpu->SPSR; \ + armcpu_switchMode(cpu, SPSR.bits.mode); \ + cpu->CPSR = SPSR; \ + cpu->changeCPSR(); \ + cpu->R[15] &= 0xFFFFFFFC | (static_cast(cpu->CPSR.bits.T) << 1); \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + if (!cpu->CPSR.bits.C) \ + { \ + cpu->R[REG_POS(i, 12)] = shift_op - v - 1; \ + cpu->CPSR.bits.C = shift_op > v; \ + } \ + else \ + { \ + cpu->R[REG_POS(i, 12)] = shift_op - v; \ + cpu->CPSR.bits.C = shift_op >= v; \ + } \ + cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i, 12)]); \ + cpu->CPSR.bits.Z = !cpu->R[REG_POS(i, 12)]; \ + cpu->CPSR.bits.V = BIT31((shift_op ^ v) & (shift_op ^ cpu->R[REG_POS(i, 12)])); \ + return a; \ } -static u32 FASTCALL OP_RSC_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSC_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - LSL_REG; - OP_RSC(2, 4); + LSL_IMM; + OP_RSC(1, 3); } -static u32 FASTCALL OP_RSC_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSC_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSR_IMM; - OP_RSC(1, 3); + LSL_REG; + OP_RSC(2, 4); } -static u32 FASTCALL OP_RSC_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSC_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - LSR_REG; - OP_RSC(2, 4); + LSR_IMM; + OP_RSC(1, 3); } -static u32 FASTCALL OP_RSC_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSC_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ASR_IMM; - OP_RSC(1, 3); + LSR_REG; + OP_RSC(2, 4); } -static u32 FASTCALL OP_RSC_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSC_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - ASR_REG; - OP_RSC(2, 4); + ASR_IMM; + OP_RSC(1, 3); } -static u32 FASTCALL OP_RSC_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSC_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ROR_IMM; - OP_RSC(1, 3); + ASR_REG; + OP_RSC(2, 4); } -static u32 FASTCALL OP_RSC_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSC_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - ROR_REG; - OP_RSC(2, 4); + ROR_IMM; + OP_RSC(1, 3); } -static u32 FASTCALL OP_RSC_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSC_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - IMM_VALUE; - OP_RSC(1, 3); + ROR_REG; + OP_RSC(2, 4); } -#define OP_RSCS(a,b) \ - { \ - u32 tmp = shift_op - (!cpu->CPSR.bits.C);\ - cpu->R[REG_POS(i,12)] = tmp - v;\ - if(REG_POS(i,12)==15)\ - {\ - Status_Reg SPSR = cpu->SPSR;\ - armcpu_switchMode(cpu, SPSR.bits.mode);\ - cpu->CPSR=SPSR;\ - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1));\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]);\ - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0);\ - cpu->CPSR.bits.C = (!UNSIGNED_UNDERFLOW(shift_op, (int)(!cpu->CPSR.bits.C), tmp)) & (!UNSIGNED_UNDERFLOW(tmp, v, cpu->R[REG_POS(i,12)]));\ - cpu->CPSR.bits.V = SIGNED_UNDERFLOW(shift_op, (int)(!cpu->CPSR.bits.C), tmp) | SIGNED_UNDERFLOW(tmp, v, cpu->R[REG_POS(i,12)]);\ - return a; \ - } +TEMPLATE static uint32_t FASTCALL OP_RSC_IMM_VAL(uint32_t i) +{ + IMM_VALUE; + OP_RSC(1, 3); +} -static u32 FASTCALL OP_RSC_S_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSC_S_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - LSL_IMM; - OP_RSCS(2,4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSL_IMM; + OP_RSCS(1,3); } -static u32 FASTCALL OP_RSC_S_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSC_S_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - LSL_REG; - OP_RSCS(3,5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSL_REG; + OP_RSCS(2,4); } -static u32 FASTCALL OP_RSC_S_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSC_S_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - LSR_IMM; - OP_RSCS(2,4); + uint32_t v = cpu->R[REG_POS(i,16)]; + LSR_IMM; + OP_RSCS(1,3); } -static u32 FASTCALL OP_RSC_S_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSC_S_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - LSR_REG; - OP_RSCS(3,5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + LSR_REG; + OP_RSCS(2,4); } -static u32 FASTCALL OP_RSC_S_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSC_S_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - ASR_IMM; - OP_RSCS(2,4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ASR_IMM; + OP_RSCS(1,3); } -static u32 FASTCALL OP_RSC_S_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSC_S_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - ASR_REG; - OP_RSCS(3,5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ASR_REG; + OP_RSCS(2,4); } -static u32 FASTCALL OP_RSC_S_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSC_S_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - u32 shift_op; - ROR_IMM; - OP_RSCS(2,4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ROR_IMM; + OP_RSCS(1,3); } -static u32 FASTCALL OP_RSC_S_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSC_S_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - ROR_REG; - OP_RSCS(3,5); + uint32_t v = cpu->R[REG_POS(i, 16)]; + ROR_REG; + OP_RSCS(2,4); } -static u32 FASTCALL OP_RSC_S_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_RSC_S_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,16)]; - IMM_VALUE; - OP_RSCS(2,4); + uint32_t v = cpu->R[REG_POS(i, 16)]; + IMM_VALUE; + OP_RSCS(1,3); } -//-------------------TST---------------------------- +// ----------------------------------------------------------------------------- +// TST +// ----------------------------------------------------------------------------- #define OP_TST(a) \ - { \ - unsigned tmp = cpu->R[REG_POS(i,16)] & shift_op;\ - cpu->CPSR.bits.C = c;\ - cpu->CPSR.bits.N = BIT31(tmp);\ - cpu->CPSR.bits.Z = (tmp==0);\ - return a; \ - } +{ \ + uint32_t tmp = cpu->R[REG_POS(i, 16)] & shift_op; \ + cpu->CPSR.bits.C = c; \ + cpu->CPSR.bits.N = BIT31(tmp); \ + cpu->CPSR.bits.Z = !tmp; \ + return a; \ +} -static u32 FASTCALL OP_TST_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_TST_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_LSL_IMM; - OP_TST(1); + S_LSL_IMM; + OP_TST(1); } -static u32 FASTCALL OP_TST_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_TST_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - S_LSL_REG; - OP_TST(2); + S_LSL_REG; + OP_TST(2); } -static u32 FASTCALL OP_TST_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_TST_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_LSR_IMM; - OP_TST(1); + S_LSR_IMM; + OP_TST(1); } -static u32 FASTCALL OP_TST_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_TST_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_LSR_REG; - OP_TST(2); + S_LSR_REG; + OP_TST(2); } -static u32 FASTCALL OP_TST_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_TST_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_ASR_IMM; - OP_TST(1); + S_ASR_IMM; + OP_TST(1); } -static u32 FASTCALL OP_TST_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_TST_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_ASR_REG; - OP_TST(2); + S_ASR_REG; + OP_TST(2); } -static u32 FASTCALL OP_TST_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_TST_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_ROR_IMM; - OP_TST(1); + S_ROR_IMM; + OP_TST(1); } -static u32 FASTCALL OP_TST_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_TST_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_ROR_REG; - OP_TST(2); + S_ROR_REG; + OP_TST(2); } -static u32 FASTCALL OP_TST_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_TST_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - S_IMM_VALUE; - OP_TST(1); + S_IMM_VALUE; + OP_TST(1); } -//-------------------TEQ---------------------------- +// ----------------------------------------------------------------------------- +// TEQ +// ----------------------------------------------------------------------------- #define OP_TEQ(a) \ - { \ - unsigned tmp = cpu->R[REG_POS(i,16)] ^ shift_op;\ - cpu->CPSR.bits.C = c;\ - cpu->CPSR.bits.N = BIT31(tmp);\ - cpu->CPSR.bits.Z = (tmp==0);\ - return a; \ - } +{ \ + unsigned tmp = cpu->R[REG_POS(i, 16)] ^ shift_op; \ + cpu->CPSR.bits.C = c; \ + cpu->CPSR.bits.N = BIT31(tmp); \ + cpu->CPSR.bits.Z = !tmp; \ + return a; \ +} -static u32 FASTCALL OP_TEQ_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_TEQ_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_LSL_IMM; - OP_TEQ(1); + S_LSL_IMM; + OP_TEQ(1); } -static u32 FASTCALL OP_TEQ_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_TEQ_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - S_LSL_REG; - OP_TEQ(2); + S_LSL_REG; + OP_TEQ(2); } -static u32 FASTCALL OP_TEQ_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_TEQ_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_LSR_IMM; - OP_TEQ(1); + S_LSR_IMM; + OP_TEQ(1); } -static u32 FASTCALL OP_TEQ_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_TEQ_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_LSR_REG; - OP_TEQ(2); + S_LSR_REG; + OP_TEQ(2); } -static u32 FASTCALL OP_TEQ_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_TEQ_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_ASR_IMM; - OP_TEQ(1); + S_ASR_IMM; + OP_TEQ(1); } -static u32 FASTCALL OP_TEQ_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_TEQ_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_ASR_REG; - OP_TEQ(2); + S_ASR_REG; + OP_TEQ(2); } -static u32 FASTCALL OP_TEQ_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_TEQ_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_ROR_IMM; - OP_TEQ(1); + S_ROR_IMM; + OP_TEQ(1); } -static u32 FASTCALL OP_TEQ_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_TEQ_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_ROR_REG; - OP_TEQ(2); + S_ROR_REG; + OP_TEQ(2); } -static u32 FASTCALL OP_TEQ_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_TEQ_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - S_IMM_VALUE; - OP_TEQ(1); + S_IMM_VALUE; + OP_TEQ(1); } -//-------------CMP------------------------------------- +// ----------------------------------------------------------------------------- +// CMP +// ----------------------------------------------------------------------------- #define OP_CMP(a) \ - { \ - u32 tmp = cpu->R[REG_POS(i,16)] - shift_op;\ - cpu->CPSR.bits.N = BIT31(tmp);\ - cpu->CPSR.bits.Z = (tmp==0);\ - cpu->CPSR.bits.C = !UNSIGNED_UNDERFLOW(cpu->R[REG_POS(i,16)], shift_op, tmp);\ - cpu->CPSR.bits.V = SIGNED_UNDERFLOW(cpu->R[REG_POS(i,16)], shift_op, tmp);\ - return a; \ - } +{ \ + uint32_t tmp = cpu->R[REG_POS(i, 16)] - shift_op; \ + cpu->CPSR.bits.N = BIT31(tmp); \ + cpu->CPSR.bits.Z = !tmp; \ + cpu->CPSR.bits.C = !BorrowFrom(cpu->R[REG_POS(i, 16)], shift_op); \ + cpu->CPSR.bits.V = OverflowFromSUB(tmp, cpu->R[REG_POS(i, 16)], shift_op); \ + return a; \ +} -static u32 FASTCALL OP_CMP_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMP_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSL_IMM; - OP_CMP(1); + LSL_IMM; + OP_CMP(1); } -static u32 FASTCALL OP_CMP_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMP_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - LSL_REG; - OP_CMP(2); + LSL_REG; + OP_CMP(2); } -static u32 FASTCALL OP_CMP_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMP_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSR_IMM; - OP_CMP(1); + LSR_IMM; + OP_CMP(1); } -static u32 FASTCALL OP_CMP_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMP_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - LSR_REG; - OP_CMP(2); + LSR_REG; + OP_CMP(2); } -static u32 FASTCALL OP_CMP_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMP_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ASR_IMM; - OP_CMP(1); + ASR_IMM; + OP_CMP(1); } -static u32 FASTCALL OP_CMP_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMP_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - ASR_REG; - OP_CMP(2); + ASR_REG; + OP_CMP(2); } -static u32 FASTCALL OP_CMP_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMP_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ROR_IMM; - OP_CMP(1); + ROR_IMM; + OP_CMP(1); } -static u32 FASTCALL OP_CMP_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMP_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - ROR_REG; - OP_CMP(2); + ROR_REG; + OP_CMP(2); } -static u32 FASTCALL OP_CMP_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMP_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - IMM_VALUE; - OP_CMP(1); + IMM_VALUE; + OP_CMP(1); } -//---------------CMN--------------------------- +// ----------------------------------------------------------------------------- +// CMN +// ----------------------------------------------------------------------------- #define OP_CMN(a) \ - { \ - u32 tmp = cpu->R[REG_POS(i,16)] + shift_op;\ - cpu->CPSR.bits.N = BIT31(tmp);\ - cpu->CPSR.bits.Z = (tmp==0);\ - cpu->CPSR.bits.C = UNSIGNED_OVERFLOW(cpu->R[REG_POS(i,16)], shift_op, tmp);\ - cpu->CPSR.bits.V = SIGNED_OVERFLOW(cpu->R[REG_POS(i,16)], shift_op, tmp);\ - return a; \ - } +{ \ + uint32_t tmp = cpu->R[REG_POS(i, 16)] + shift_op; \ + cpu->CPSR.bits.N = BIT31(tmp); \ + cpu->CPSR.bits.Z = !tmp; \ + cpu->CPSR.bits.C = CarryFrom(cpu->R[REG_POS(i, 16)], shift_op); \ + cpu->CPSR.bits.V = OverflowFromADD(tmp, cpu->R[REG_POS(i, 16)], shift_op); \ + return a; \ +} -static u32 FASTCALL OP_CMN_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMN_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSL_IMM; - OP_CMN(1); + LSL_IMM; + OP_CMN(1); } -static u32 FASTCALL OP_CMN_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMN_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - LSL_REG; - OP_CMN(2); + LSL_REG; + OP_CMN(2); } -static u32 FASTCALL OP_CMN_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMN_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSR_IMM; - OP_CMN(1); + LSR_IMM; + OP_CMN(1); } -static u32 FASTCALL OP_CMN_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMN_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - LSR_REG; - OP_CMN(2); + LSR_REG; + OP_CMN(2); } -static u32 FASTCALL OP_CMN_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMN_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ASR_IMM; - OP_CMN(1); + ASR_IMM; + OP_CMN(1); } -static u32 FASTCALL OP_CMN_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMN_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - ASR_REG; - OP_CMN(2); + ASR_REG; + OP_CMN(2); } -static u32 FASTCALL OP_CMN_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMN_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ROR_IMM; - OP_CMN(1); + ROR_IMM; + OP_CMN(1); } -static u32 FASTCALL OP_CMN_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMN_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - ROR_REG; - OP_CMN(2); + ROR_REG; + OP_CMN(2); } -static u32 FASTCALL OP_CMN_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMN_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - IMM_VALUE; - OP_CMN(1); + IMM_VALUE; + OP_CMN(1); } -//------------------ORR------------------- +// ----------------------------------------------------------------------------- +// ORR / ORRS +// ----------------------------------------------------------------------------- -#define OP_ORR(a, b) cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] | shift_op;\ - if(REG_POS(i,12)==15)\ - {\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - return a; +#define OP_ORR(a, b) \ + cpu->R[REG_POS(i, 12)] = cpu->R[REG_POS(i, 16)] | shift_op; \ + if (REG_POS(i, 12) == 15) \ + { \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + return a; -static u32 FASTCALL OP_ORR_LSL_IMM(armcpu_t *cpu) +#define OP_ORRS(a,b) \ +{ \ + cpu->R[REG_POS(i, 12)] = cpu->R[REG_POS(i, 16)] | shift_op; \ + if (REG_POS(i, 12) == 15) \ + { \ + Status_Reg SPSR = cpu->SPSR; \ + armcpu_switchMode(cpu, SPSR.bits.mode); \ + cpu->CPSR = SPSR; \ + cpu->changeCPSR(); \ + cpu->R[15] &= 0xFFFFFFFC | (static_cast(cpu->CPSR.bits.T) << 1); \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + cpu->CPSR.bits.C = c; \ + cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i, 12)]); \ + cpu->CPSR.bits.Z = !cpu->R[REG_POS(i, 12)]; \ + return a; \ +} + +TEMPLATE static uint32_t FASTCALL OP_ORR_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSL_IMM; - OP_ORR(1, 3); + LSL_IMM; + OP_ORR(1, 3); } -static u32 FASTCALL OP_ORR_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ORR_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - LSL_REG; - OP_ORR(2, 4); + LSL_REG; + OP_ORR(2, 4); } -static u32 FASTCALL OP_ORR_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ORR_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSR_IMM; - OP_ORR(1, 3); + LSR_IMM; + OP_ORR(1, 3); } -static u32 FASTCALL OP_ORR_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ORR_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - LSR_REG; - OP_ORR(2, 4); + LSR_REG; + OP_ORR(2, 4); } -static u32 FASTCALL OP_ORR_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ORR_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ASR_IMM; - OP_ORR(1, 3); + ASR_IMM; + OP_ORR(1, 3); } -static u32 FASTCALL OP_ORR_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ORR_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - ASR_REG; - OP_ORR(2, 4); + ASR_REG; + OP_ORR(2, 4); } -static u32 FASTCALL OP_ORR_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ORR_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ROR_IMM; - OP_ORR(1, 3); + ROR_IMM; + OP_ORR(1, 3); } -static u32 FASTCALL OP_ORR_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ORR_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - ROR_REG; - OP_ORR(2, 4); + ROR_REG; + OP_ORR(2, 4); } -static u32 FASTCALL OP_ORR_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ORR_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - IMM_VALUE; - OP_ORR(1, 3); + IMM_VALUE; + OP_ORR(1, 3); } -static u32 FASTCALL OP_ORR_S_LSL_IMM(armcpu_t *cpu) + +TEMPLATE static uint32_t FASTCALL OP_ORR_S_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_LSL_IMM; - cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] | shift_op; - if(REG_POS(i,12)==15) - { - Status_Reg SPSR = cpu->SPSR; - armcpu_switchMode(cpu, SPSR.bits.mode); - cpu->CPSR=SPSR; - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1)); - cpu->next_instruction = cpu->R[15]; - return 4; - } - cpu->CPSR.bits.C = c; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]); - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0); - return 2; + S_LSL_IMM; + OP_ORRS(1,3); } -static u32 FASTCALL OP_ORR_S_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ORR_S_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - S_LSL_REG; - cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] | shift_op; - if(REG_POS(i,12)==15) - { - Status_Reg SPSR = cpu->SPSR; - armcpu_switchMode(cpu, SPSR.bits.mode); - cpu->CPSR=SPSR; - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1)); - cpu->next_instruction = cpu->R[15]; - return 5; - } - cpu->CPSR.bits.C = c; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]); - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0); - return 3; + S_LSL_REG; + OP_ORRS(2,4); } -static u32 FASTCALL OP_ORR_S_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ORR_S_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_LSR_IMM; - cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] | shift_op; - if(REG_POS(i,12)==15) - { - Status_Reg SPSR = cpu->SPSR; - armcpu_switchMode(cpu, SPSR.bits.mode); - cpu->CPSR=SPSR; - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1)); - cpu->next_instruction = cpu->R[15]; - return 4; - } - cpu->CPSR.bits.C = c; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]); - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0); - return 2; + S_LSR_IMM; + OP_ORRS(1,3); } -static u32 FASTCALL OP_ORR_S_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ORR_S_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_LSR_REG; - cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] | shift_op; - if(REG_POS(i,12)==15) - { - Status_Reg SPSR = cpu->SPSR; - armcpu_switchMode(cpu, SPSR.bits.mode); - cpu->CPSR=SPSR; - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1)); - cpu->next_instruction = cpu->R[15]; - return 5; - } - cpu->CPSR.bits.C = c; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]); - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0); - return 3; + S_LSR_REG; + OP_ORRS(2,4); } -static u32 FASTCALL OP_ORR_S_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ORR_S_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_ASR_IMM; - cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] | shift_op; - if(REG_POS(i,12)==15) - { - Status_Reg SPSR = cpu->SPSR; - armcpu_switchMode(cpu, SPSR.bits.mode); - cpu->CPSR=SPSR; - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1)); - cpu->next_instruction = cpu->R[15]; - return 4; - } - cpu->CPSR.bits.C = c; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]); - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0); - return 2; + S_ASR_IMM; + OP_ORRS(1,3); } -static u32 FASTCALL OP_ORR_S_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ORR_S_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_ASR_REG; - cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] | shift_op; - if(REG_POS(i,12)==15) - { - Status_Reg SPSR = cpu->SPSR; - armcpu_switchMode(cpu, SPSR.bits.mode); - cpu->CPSR=SPSR; - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1)); - cpu->next_instruction = cpu->R[15]; - return 5; - } - cpu->CPSR.bits.C = c; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]); - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0); - return 3; + S_ASR_REG; + OP_ORRS(2,4); } -static u32 FASTCALL OP_ORR_S_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ORR_S_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_ROR_IMM; - cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] | shift_op; - if(REG_POS(i,12)==15) - { - Status_Reg SPSR = cpu->SPSR; - armcpu_switchMode(cpu, SPSR.bits.mode); - cpu->CPSR=SPSR; - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1)); - cpu->next_instruction = cpu->R[15]; - return 4; - } - cpu->CPSR.bits.C = c; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]); - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0); - return 2; + S_ROR_IMM; + OP_ORRS(1,3); } -static u32 FASTCALL OP_ORR_S_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ORR_S_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_ROR_REG; - cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] | shift_op; - if(REG_POS(i,12)==15) - { - Status_Reg SPSR = cpu->SPSR; - armcpu_switchMode(cpu, SPSR.bits.mode); - cpu->CPSR=SPSR; - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1)); - cpu->next_instruction = cpu->R[15]; - return 5; - } - cpu->CPSR.bits.C = c; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]); - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0); - return 3; + S_ROR_REG; + OP_ORRS(2,4); } -static u32 FASTCALL OP_ORR_S_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ORR_S_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - S_IMM_VALUE; - cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] | shift_op; - if(REG_POS(i,12)==15) - { - Status_Reg SPSR = cpu->SPSR; - armcpu_switchMode(cpu, SPSR.bits.mode); - cpu->CPSR=SPSR; - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1)); - cpu->next_instruction = cpu->R[15]; - return 4; - } - cpu->CPSR.bits.C = c; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]); - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0); - return 2; + S_IMM_VALUE; + OP_ORRS(1,3); } -//------------------MOV------------------- +// ----------------------------------------------------------------------------- +// MOV / MOVS +// ----------------------------------------------------------------------------- -#define OP_MOV(a, b) cpu->R[REG_POS(i,12)] = shift_op;\ - if(REG_POS(i,12)==15)\ - {\ - cpu->next_instruction = shift_op;\ - return b;\ - }\ - return a; +#define OP_MOV(a, b) \ + cpu->R[REG_POS(i, 12)] = shift_op; \ + if (REG_POS(i, 12) == 15) \ + { \ + cpu->next_instruction = shift_op; \ + return b; \ + } \ + return a; -#define OP_MOV_S(a, b) cpu->R[REG_POS(i,12)] = shift_op;\ - if(BIT20(i) && REG_POS(i,12)==15)\ - {\ - Status_Reg SPSR = cpu->SPSR;\ - armcpu_switchMode(cpu, SPSR.bits.mode);\ - cpu->CPSR=SPSR;\ - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1));\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - cpu->CPSR.bits.C = c;\ - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]);\ - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0);\ - return a;\ +#define OP_MOVS(a, b) \ + cpu->R[REG_POS(i, 12)] = shift_op; \ + if (REG_POS(i, 12) == 15) \ + { \ + Status_Reg SPSR = cpu->SPSR; \ + armcpu_switchMode(cpu, SPSR.bits.mode); \ + cpu->CPSR = SPSR; \ + cpu->changeCPSR(); \ + cpu->R[15] &= 0xFFFFFFFC | (static_cast(cpu->CPSR.bits.T) << 1); \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + cpu->CPSR.bits.C = c; \ + cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i, 12)]); \ + cpu->CPSR.bits.Z = !cpu->R[REG_POS(i, 12)]; \ + return a; -static u32 FASTCALL OP_MOV_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MOV_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSL_IMM; - OP_MOV(1,3); + if (i == 0xE1A00000) // nop: MOV R0, R0 + return 1; + + LSL_IMM; + OP_MOV(1,3); } -static u32 FASTCALL OP_MOV_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MOV_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - LSL_REG; - if (REG_POS(i,0) == 15) shift_op += 4; - OP_MOV(2,4); + LSL_REG; + if (REG_POS(i, 0) == 15) + shift_op += 4; + OP_MOV(2,4); } -static u32 FASTCALL OP_MOV_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MOV_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSR_IMM; - OP_MOV(1,3); + LSR_IMM; + OP_MOV(1,3); } -static u32 FASTCALL OP_MOV_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MOV_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - LSR_REG; - if (REG_POS(i,0) == 15) shift_op += 4; - OP_MOV(2,4); + LSR_REG; + if (REG_POS(i, 0) == 15) + shift_op += 4; + OP_MOV(2,4); } -static u32 FASTCALL OP_MOV_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MOV_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ASR_IMM; - OP_MOV(1,3); + ASR_IMM; + OP_MOV(1,3); } -static u32 FASTCALL OP_MOV_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MOV_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - ASR_REG; - OP_MOV(2,4); + ASR_REG; + OP_MOV(2,4); } -static u32 FASTCALL OP_MOV_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MOV_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ROR_IMM; - OP_MOV(2,4); + ROR_IMM; + OP_MOV(1,3); } -static u32 FASTCALL OP_MOV_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MOV_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - ROR_REG; - OP_MOV(2,4); + ROR_REG; + OP_MOV(2,4); } -static u32 FASTCALL OP_MOV_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MOV_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - IMM_VALUE; - OP_MOV(1,3); + IMM_VALUE; + OP_MOV(1,3); } -static u32 FASTCALL OP_MOV_S_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MOV_S_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_LSL_IMM; - OP_MOV_S(2,4); + S_LSL_IMM; + OP_MOVS(1,3); } -static u32 FASTCALL OP_MOV_S_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MOV_S_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - S_LSL_REG; - if (REG_POS(i,0) == 15) shift_op += 4; - OP_MOV_S(3,5); + S_LSL_REG; + if (REG_POS(i, 0) == 15) + shift_op += 4; + OP_MOVS(2,4); } -static u32 FASTCALL OP_MOV_S_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MOV_S_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_LSR_IMM; - OP_MOV_S(2,4); + S_LSR_IMM; + OP_MOVS(1,3); } -static u32 FASTCALL OP_MOV_S_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MOV_S_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_LSR_REG; - if (REG_POS(i,0) == 15) shift_op += 4; - OP_MOV_S(3,5); + S_LSR_REG; + if (REG_POS(i, 0) == 15) + shift_op += 4; + OP_MOVS(2,4); } -static u32 FASTCALL OP_MOV_S_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MOV_S_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_ASR_IMM; - OP_MOV_S(2,4); + S_ASR_IMM; + OP_MOVS(1,3); } -static u32 FASTCALL OP_MOV_S_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MOV_S_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_ASR_REG; - OP_MOV_S(3,5); + S_ASR_REG; + OP_MOVS(2,4); } -static u32 FASTCALL OP_MOV_S_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MOV_S_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_ROR_IMM; - OP_MOV_S(2,4); + S_ROR_IMM; + OP_MOVS(1,3); } -static u32 FASTCALL OP_MOV_S_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MOV_S_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_ROR_REG; - OP_MOV_S(3,5); + S_ROR_REG; + OP_MOVS(2,4); } -static u32 FASTCALL OP_MOV_S_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MOV_S_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - S_IMM_VALUE; - OP_MOV_S(2,4); + S_IMM_VALUE; + OP_MOVS(1,3); } -//------------------BIC------------------- -#define OPP_BIC(a, b) cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] & (~shift_op);\ - if(REG_POS(i,12)==15)\ - {\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - return a; +// ----------------------------------------------------------------------------- +// BIC / BICS +// ----------------------------------------------------------------------------- + +#define OP_BIC(a, b) \ + cpu->R[REG_POS(i, 12)] = cpu->R[REG_POS(i, 16)] & ~shift_op; \ + if (REG_POS(i, 12) == 15) \ + { \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + return a; -#define OPP_BIC_S(a, b) cpu->R[REG_POS(i,12)] = cpu->R[REG_POS(i,16)] & (~shift_op);\ - if(REG_POS(i,12)==15)\ - {\ - Status_Reg SPSR = cpu->SPSR;\ - armcpu_switchMode(cpu, SPSR.bits.mode);\ - cpu->CPSR=SPSR;\ - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1));\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - cpu->CPSR.bits.C = c;\ - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]);\ - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0);\ - return a; +#define OP_BICS(a, b) \ + cpu->R[REG_POS(i, 12)] = cpu->R[REG_POS(i, 16)] & ~shift_op; \ + if (REG_POS(i, 12) == 15) \ + { \ + Status_Reg SPSR = cpu->SPSR; \ + armcpu_switchMode(cpu, SPSR.bits.mode); \ + cpu->CPSR = SPSR; \ + cpu->changeCPSR(); \ + cpu->R[15] &= 0xFFFFFFFC | (static_cast(cpu->CPSR.bits.T) << 1); \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + cpu->CPSR.bits.C = c; \ + cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i, 12)]); \ + cpu->CPSR.bits.Z = !cpu->R[REG_POS(i, 12)]; \ + return a; -static u32 FASTCALL OP_BIC_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BIC_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSL_IMM; - OPP_BIC(1,3); + LSL_IMM; + OP_BIC(1,3); } -static u32 FASTCALL OP_BIC_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BIC_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - LSL_REG; - OPP_BIC(2,4); + LSL_REG; + OP_BIC(2,4); } -static u32 FASTCALL OP_BIC_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BIC_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSR_IMM; - OPP_BIC(1,3); + LSR_IMM; + OP_BIC(1,3); } -static u32 FASTCALL OP_BIC_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BIC_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - LSR_REG; - OPP_BIC(2,4); + LSR_REG; + OP_BIC(2,4); } -static u32 FASTCALL OP_BIC_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BIC_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ASR_IMM; - OPP_BIC(1,3); + ASR_IMM; + OP_BIC(1,3); } -static u32 FASTCALL OP_BIC_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BIC_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - ASR_REG; - OPP_BIC(2,4); + ASR_REG; + OP_BIC(2,4); } -static u32 FASTCALL OP_BIC_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BIC_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ROR_IMM; - OPP_BIC(1,3); + ROR_IMM; + OP_BIC(1,3); } -static u32 FASTCALL OP_BIC_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BIC_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - ROR_REG; - OPP_BIC(2,4); + ROR_REG; + OP_BIC(2,4); } -static u32 FASTCALL OP_BIC_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BIC_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - IMM_VALUE; - OPP_BIC(1,3); + IMM_VALUE; + OP_BIC(1,3); } -static u32 FASTCALL OP_BIC_S_LSL_IMM(armcpu_t *cpu) + +TEMPLATE static uint32_t FASTCALL OP_BIC_S_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_LSL_IMM; - OPP_BIC_S(2,4); + S_LSL_IMM; + OP_BICS(1,3); } -static u32 FASTCALL OP_BIC_S_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BIC_S_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - S_LSL_REG; - OPP_BIC_S(3,5); + S_LSL_REG; + OP_BICS(2,4); } -static u32 FASTCALL OP_BIC_S_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BIC_S_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_LSR_IMM; - OPP_BIC_S(2,4); + S_LSR_IMM; + OP_BICS(1,3); } -static u32 FASTCALL OP_BIC_S_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BIC_S_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_LSR_REG; - OPP_BIC_S(3,5); + S_LSR_REG; + OP_BICS(2,4); } -static u32 FASTCALL OP_BIC_S_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BIC_S_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_ASR_IMM; - OPP_BIC_S(2,4); + S_ASR_IMM; + OP_BICS(1,3); } -static u32 FASTCALL OP_BIC_S_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BIC_S_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_ASR_REG; - OPP_BIC_S(3,5); + S_ASR_REG; + OP_BICS(2,4); } -static u32 FASTCALL OP_BIC_S_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BIC_S_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_ROR_IMM; - OPP_BIC_S(2,4); + S_ROR_IMM; + OP_BICS(1,3); } -static u32 FASTCALL OP_BIC_S_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BIC_S_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_ROR_REG; - OPP_BIC_S(3,5); + S_ROR_REG; + OP_BICS(2,4); } -static u32 FASTCALL OP_BIC_S_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BIC_S_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - S_IMM_VALUE; - OPP_BIC_S(2,4); + S_IMM_VALUE; + OP_BICS(1,3); } -//------------------MVN------------------- -#define OPP_MVN(a, b) cpu->R[REG_POS(i,12)] = ~shift_op;\ - if(REG_POS(i,12)==15)\ - {\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - return a; +// ----------------------------------------------------------------------------- +// MVN / MVNS +// ----------------------------------------------------------------------------- + +#define OP_MVN(a, b) \ + cpu->R[REG_POS(i, 12)] = ~shift_op; \ + if (REG_POS(i, 12) == 15) \ + { \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + return a; -#define OPP_MVN_S(a, b) cpu->R[REG_POS(i,12)] = ~shift_op;\ - if(REG_POS(i,12)==15)\ - {\ - Status_Reg SPSR = cpu->SPSR;\ - armcpu_switchMode(cpu, SPSR.bits.mode);\ - cpu->CPSR=SPSR;\ - cpu->R[15] &= (0XFFFFFFFC|(((u32)SPSR.bits.T)<<1));\ - cpu->next_instruction = cpu->R[15];\ - return b;\ - }\ - cpu->CPSR.bits.C = c;\ - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,12)]);\ - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,12)]==0);\ - return a; +#define OP_MVNS(a, b) \ + cpu->R[REG_POS(i, 12)] = ~shift_op; \ + if (REG_POS(i, 12) == 15) \ + { \ + Status_Reg SPSR = cpu->SPSR; \ + armcpu_switchMode(cpu, SPSR.bits.mode); \ + cpu->CPSR = SPSR; \ + cpu->changeCPSR(); \ + cpu->R[15] &= 0xFFFFFFFC | (static_cast(cpu->CPSR.bits.T) << 1); \ + cpu->next_instruction = cpu->R[15]; \ + return b; \ + } \ + cpu->CPSR.bits.C = c; \ + cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i, 12)]); \ + cpu->CPSR.bits.Z = !cpu->R[REG_POS(i, 12)]; \ + return a; -static u32 FASTCALL OP_MVN_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MVN_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSL_IMM; - OPP_MVN(1,3); + LSL_IMM; + OP_MVN(1,3); } -static u32 FASTCALL OP_MVN_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MVN_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - LSL_REG; - OPP_MVN(2,4); + LSL_REG; + OP_MVN(2,4); } -static u32 FASTCALL OP_MVN_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MVN_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - LSR_IMM; - OPP_MVN(1,3); + LSR_IMM; + OP_MVN(1,3); } -static u32 FASTCALL OP_MVN_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MVN_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - LSR_REG; - OPP_MVN(2,4); + LSR_REG; + OP_MVN(2,4); } -static u32 FASTCALL OP_MVN_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MVN_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ASR_IMM; - OPP_MVN(1,3); + ASR_IMM; + OP_MVN(1,3); } -static u32 FASTCALL OP_MVN_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MVN_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - ASR_REG; - OPP_MVN(2,4); + ASR_REG; + OP_MVN(2,4); } -static u32 FASTCALL OP_MVN_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MVN_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - u32 shift_op; - ROR_IMM; - OPP_MVN(1,3); + ROR_IMM; + OP_MVN(1,3); } -static u32 FASTCALL OP_MVN_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MVN_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - ROR_REG; - OPP_MVN(2,4); + ROR_REG; + OP_MVN(2,4); } -static u32 FASTCALL OP_MVN_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MVN_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - IMM_VALUE; - OPP_MVN(1,3); + IMM_VALUE; + OP_MVN(1,3); } -static u32 FASTCALL OP_MVN_S_LSL_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MVN_S_LSL_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_LSL_IMM; - OPP_MVN_S(2,4); + S_LSL_IMM; + OP_MVNS(1,3); } -static u32 FASTCALL OP_MVN_S_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MVN_S_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - S_LSL_REG; - OPP_MVN_S(3,5); + S_LSL_REG; + OP_MVNS(2,4); } -static u32 FASTCALL OP_MVN_S_LSR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MVN_S_LSR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_LSR_IMM; - OPP_MVN_S(2,4); + S_LSR_IMM; + OP_MVNS(1,3); } -static u32 FASTCALL OP_MVN_S_LSR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MVN_S_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_LSR_REG; - OPP_MVN_S(3,5); + S_LSR_REG; + OP_MVNS(2,4); } -static u32 FASTCALL OP_MVN_S_ASR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MVN_S_ASR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_ASR_IMM; - OPP_MVN_S(2,4); + S_ASR_IMM; + OP_MVNS(1,3); } -static u32 FASTCALL OP_MVN_S_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MVN_S_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_ASR_REG; - OPP_MVN_S(3,5); + S_ASR_REG; + OP_MVNS(2,4); } -static u32 FASTCALL OP_MVN_S_ROR_IMM(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MVN_S_ROR_IMM(uint32_t i) { - u32 i = cpu->instruction; - S_ROR_IMM; - OPP_MVN_S(2,4); + S_ROR_IMM; + OP_MVNS(1,3); } -static u32 FASTCALL OP_MVN_S_ROR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MVN_S_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - S_ROR_REG; - OPP_MVN_S(3,5); + S_ROR_REG; + OP_MVNS(2,4); } -static u32 FASTCALL OP_MVN_S_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MVN_S_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - S_IMM_VALUE; - OPP_MVN_S(2,4); + S_IMM_VALUE; + OP_MVNS(1,3); } -//-------------MUL------------------------ -#define OPP_M(a,b) v >>= 8;\ - if((v==0)||(v==0xFFFFFF))\ - return b;\ - v >>= 8;\ - if((v==0)||(v==0xFFFF))\ - return b+1;\ - v >>= 8;\ - if((v==0)||(v==0xFF))\ - return b+2;\ - return a;\ +// ----------------------------------------------------------------------------- +// MUL / MULS / MLA / MLAS +// ----------------------------------------------------------------------------- + +#define MUL_Mxx_END(c) \ + v >>= 8; \ + if (!v || v == 0xFFFFFF) \ + return c + 1; \ + v >>= 8; \ + if (!v || v == 0xFFFF) \ + return c + 2; \ + v >>= 8; \ + if (!v || v == 0xFF) \ + return c + 3; \ + return c + 4; -static u32 FASTCALL OP_MUL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MUL(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,0)]; - cpu->R[REG_POS(i,16)] = cpu->R[REG_POS(i,8)] * v; - OPP_M(5,2); + uint32_t v = cpu->R[REG_POS(i, 8)]; + cpu->R[REG_POS(i, 16)] = cpu->R[REG_POS(i, 0)] * v; + + MUL_Mxx_END(1); } -static u32 FASTCALL OP_MLA(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MLA(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,0)]; - u32 a = cpu->R[REG_POS(i,8)]; - u32 b = cpu->R[REG_POS(i,12)]; - cpu->R[REG_POS(i,16)] = a * v + b; + uint32_t v = cpu->R[REG_POS(i, 8)]; + cpu->R[REG_POS(i, 16)] = cpu->R[REG_POS(i, 0)] * v + cpu->R[REG_POS(i, 12)]; - OPP_M(6,3); + MUL_Mxx_END(2); } -static u32 FASTCALL OP_MUL_S(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MUL_S(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,0)]; - cpu->R[REG_POS(i,16)] = cpu->R[REG_POS(i,8)] * v; + uint32_t v = cpu->R[REG_POS(i, 8)]; + cpu->R[REG_POS(i, 16)] = cpu->R[REG_POS(i, 0)] * v; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,16)]); - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,16)]==0); + cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i, 16)]); + cpu->CPSR.bits.Z = !cpu->R[REG_POS(i, 16)]; - OPP_M(6,3); + MUL_Mxx_END(1); } -static u32 FASTCALL OP_MLA_S(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MLA_S(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,0)]; - cpu->R[REG_POS(i,16)] = cpu->R[REG_POS(i,8)] * v + cpu->R[REG_POS(i,12)]; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,16)]); - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,16)]==0); - OPP_M(7,4); + uint32_t v = cpu->R[REG_POS(i, 8)]; + cpu->R[REG_POS(i, 16)] = cpu->R[REG_POS(i, 0)] * v + cpu->R[REG_POS(i, 12)]; + + cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i, 16)]); + cpu->CPSR.bits.Z = !cpu->R[REG_POS(i, 16)]; + + MUL_Mxx_END(2); } -//----------UMUL-------------------------- +// ----------------------------------------------------------------------------- +// UMULL / UMULLS / UMLAL / UMLALS +// ----------------------------------------------------------------------------- + +#define MUL_UMxxL_END(c) \ + v >>= 8; \ + if (!v) \ + return c + 1; \ + v >>= 8; \ + if (!v) \ + return c + 2; \ + v >>= 8; \ + if (!v) \ + return c + 3; \ + return c + 4; -static u32 FASTCALL OP_UMULL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_UMULL(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,0)]; - u64 res = (u64)v * (u64)cpu->R[REG_POS(i,8)]; + uint32_t v = cpu->R[REG_POS(i, 8)]; + uint64_t res = static_cast(cpu->R[REG_POS(i, 0)]) * static_cast(v); - cpu->R[REG_POS(i,12)] = (u32)res; - cpu->R[REG_POS(i,16)] = (u32)(res>>32); + cpu->R[REG_POS(i, 12)] = static_cast(res); + cpu->R[REG_POS(i, 16)] = static_cast(res >> 32); - OPP_M(6,3); + MUL_UMxxL_END(2); } -static u32 FASTCALL OP_UMLAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_UMLAL(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,0)]; - u64 res = (u64)v * (u64)cpu->R[REG_POS(i,8)] + (u64)cpu->R[REG_POS(i,12)]; + uint32_t v = cpu->R[REG_POS(i, 8)]; + uint64_t res = static_cast(cpu->R[REG_POS(i, 0)]) * static_cast(v); - cpu->R[REG_POS(i,12)] = (u32)res; - cpu->R[REG_POS(i,16)] += (u32)(res>>32); + // RdLo = (Rm * Rs)[31:0] + RdLo /* Unsigned multiplication */ + // RdHi = (Rm * Rs)[63:32] + RdHi + CarryFrom((Rm * Rs)[31:0] + RdLo) + uint32_t tmp = static_cast(res); // low + cpu->R[REG_POS(i, 16)] = static_cast(res >> 32) + cpu->R[REG_POS(i, 16)] + CarryFrom(tmp, cpu->R[REG_POS(i, 12)]); + cpu->R[REG_POS(i, 12)] += tmp; - OPP_M(7,4); + MUL_UMxxL_END(3); } -static u32 FASTCALL OP_UMULL_S(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_UMULL_S(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,0)]; - u64 res = (u64)v * (u64)cpu->R[REG_POS(i,8)]; + uint32_t v = cpu->R[REG_POS(i, 8)]; + uint64_t res = static_cast(cpu->R[REG_POS(i, 0)]) * static_cast(v); - cpu->R[REG_POS(i,12)] = (u32)res; - cpu->R[REG_POS(i,16)] = (u32)(res>>32); + cpu->R[REG_POS(i, 12)] = static_cast(res); + cpu->R[REG_POS(i, 16)] = static_cast(res >> 32); - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,16)]); - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,16)]==0) & (cpu->R[REG_POS(i,12)]==0); + cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i, 16)]); + cpu->CPSR.bits.Z = !cpu->R[REG_POS(i, 16)] && !cpu->R[REG_POS(i, 12)]; - OPP_M(7,4); + MUL_UMxxL_END(2); } -static u32 FASTCALL OP_UMLAL_S(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_UMLAL_S(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_POS(i,0)]; - u64 res = (u64)v * (u64)cpu->R[REG_POS(i,8)] + (u64)cpu->R[REG_POS(i,12)]; + uint32_t v = cpu->R[REG_POS(i, 8)]; + uint64_t res = static_cast(cpu->R[REG_POS(i, 0)]) * static_cast(v); - cpu->R[REG_POS(i,12)] = (u32)res; - cpu->R[REG_POS(i,16)] += (u32)(res>>32); + // RdLo = (Rm * Rs)[31:0] + RdLo /* Unsigned multiplication */ + // RdHi = (Rm * Rs)[63:32] + RdHi + CarryFrom((Rm * Rs)[31:0] + RdLo) + uint32_t tmp = static_cast(res); // low + cpu->R[REG_POS(i, 16)] = static_cast(res >> 32) + cpu->R[REG_POS(i, 16)] + CarryFrom(tmp, cpu->R[REG_POS(i, 12)]); + cpu->R[REG_POS(i, 12)] += tmp; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,16)]); - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,16)]==0) & (cpu->R[REG_POS(i,12)]==0); + cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i, 16)]); + cpu->CPSR.bits.Z = !cpu->R[REG_POS(i, 16)] && !cpu->R[REG_POS(i, 12)]; - OPP_M(8,5); + MUL_UMxxL_END(3); } -//----------SMUL-------------------------- +// ----------------------------------------------------------------------------- +// SMULL / SMULLS / SMLAL / SMLALS +// ----------------------------------------------------------------------------- -static u32 FASTCALL OP_SMULL(armcpu_t *cpu) -{ - u32 i = cpu->instruction; - s64 v = (s32)cpu->R[REG_POS(i,0)]; - s64 b = (s32)cpu->R[REG_POS(i,8)]; - s64 res = v * b; +#define MUL_SMxxL_END(c) \ + v &= 0xFFFFFFFF; \ + v >>= 8; \ + if (!v || v == 0xFFFFFF) \ + return c + 1; \ + v >>= 8; \ + if (!v || v == 0xFFFF) \ + return c + 2; \ + v >>= 8; \ + if (!v || v == 0xFF) \ + return c + 3; \ + return c + 4; - cpu->R[REG_POS(i,12)] = (u32)(res&0xFFFFFFFF); - cpu->R[REG_POS(i,16)] = (u32)(res>>32); +TEMPLATE static uint32_t FASTCALL OP_SMULL(uint32_t i) +{ + int64_t v = static_cast(cpu->R[REG_POS(i, 8)]); + int64_t res = v * static_cast(static_cast(cpu->R[REG_POS(i, 0)])); - v &= 0xFFFFFFFF; + cpu->R[REG_POS(i, 12)] = static_cast(res); + cpu->R[REG_POS(i, 16)] = static_cast(res >> 32); - OPP_M(6,3); + MUL_SMxxL_END(2); } -static u32 FASTCALL OP_SMLAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SMLAL(uint32_t i) { - u32 i = cpu->instruction; - - s64 v = (s32)cpu->R[REG_POS(i,0)]; - s64 b = (s32)cpu->R[REG_POS(i,8)]; - s64 res = v * b + (u64)cpu->R[REG_POS(i,12)]; + int64_t v = static_cast(cpu->R[REG_POS(i, 8)]); + int64_t res = v * static_cast(static_cast(cpu->R[REG_POS(i, 0)])); - //LOG("%08X * %08X + %08X%08X\r\n", cpu->R[REG_POS(i,0)], cpu->R[REG_POS(i,8)], cpu->R[REG_POS(i,16)], cpu->R[REG_POS(i,12)]); + uint32_t tmp = static_cast(res); + cpu->R[REG_POS(i, 16)] = static_cast(res >> 32) + cpu->R[REG_POS(i, 16)] + CarryFrom(tmp, cpu->R[REG_POS(i, 12)]); + cpu->R[REG_POS(i, 12)] += tmp; - cpu->R[REG_POS(i,12)] = (u32)res; - cpu->R[REG_POS(i,16)] += (u32)(res>>32); - - //LOG("= %08X%08X %08X%08X\r\n", cpu->R[REG_POS(i,16)], cpu->R[REG_POS(i,12)], res); - - v &= 0xFFFFFFFF; - - OPP_M(7,4); + MUL_SMxxL_END(3); } -static u32 FASTCALL OP_SMULL_S(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SMULL_S(uint32_t i) { - u32 i = cpu->instruction; - s64 v = (s32)cpu->R[REG_POS(i,0)]; - s64 b = (s32)cpu->R[REG_POS(i,8)]; - s64 res = v * b; + int64_t v = static_cast(cpu->R[REG_POS(i, 8)]); + int64_t res = v * static_cast(static_cast(cpu->R[REG_POS(i, 0)])); - cpu->R[REG_POS(i,12)] = (u32)res; - cpu->R[REG_POS(i,16)] = (u32)(res>>32); + cpu->R[REG_POS(i, 12)] = static_cast(res); + cpu->R[REG_POS(i, 16)] = static_cast(res >> 32); - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,16)]); - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,16)]==0) & (cpu->R[REG_POS(i,12)]==0); + cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i, 16)]); + cpu->CPSR.bits.Z = !cpu->R[REG_POS(i, 16)] && !cpu->R[REG_POS(i, 12)]; - v &= 0xFFFFFFFF; - - OPP_M(7,4); + MUL_SMxxL_END(2); } -static u32 FASTCALL OP_SMLAL_S(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SMLAL_S(uint32_t i) { - u32 i = cpu->instruction; - s64 v = (s32)cpu->R[REG_POS(i,0)]; - s64 b = (s32)cpu->R[REG_POS(i,8)]; - s64 res = v * b + (u64)cpu->R[REG_POS(i,12)]; - - cpu->R[REG_POS(i,12)] = (u32)res; - cpu->R[REG_POS(i,16)] += (u32)(res>>32); + int64_t v = static_cast(cpu->R[REG_POS(i, 8)]); + int64_t res = v * static_cast(static_cast(cpu->R[REG_POS(i, 0)])); - cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i,16)]); - cpu->CPSR.bits.Z = (cpu->R[REG_POS(i,16)]==0) & (cpu->R[REG_POS(i,12)]==0); + uint32_t tmp = static_cast(res); + cpu->R[REG_POS(i, 16)] = static_cast(res >> 32) + cpu->R[REG_POS(i, 16)] + CarryFrom(tmp, cpu->R[REG_POS(i, 12)]); + cpu->R[REG_POS(i, 12)] += tmp; - v &= 0xFFFFFFFF; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_POS(i, 16)]); + cpu->CPSR.bits.Z = !cpu->R[REG_POS(i, 16)] && !cpu->R[REG_POS(i, 12)]; - OPP_M(8,5); + MUL_SMxxL_END(3); } -//---------------SWP------------------------------ +// ----------------------------------------------------------------------------- +// SWP / SWPB +// ----------------------------------------------------------------------------- -static u32 FASTCALL OP_SWP(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SWP(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - u32 tmp = ROR(READ32(cpu->mem_if->data, adr), ((cpu->R[REG_POS(i,16)]&3)<<3)); + uint32_t adr = cpu->R[REG_POS(i, 16)]; + uint32_t tmp = ROR(READ32(cpu->mem_if->data, adr), (adr & 3) << 3); - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,0)]); - cpu->R[REG_POS(i,12)] = tmp; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 0)]); + cpu->R[REG_POS(i, 12)] = tmp; - return 4 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]*2; + uint32_t c = MMU_memAccessCycles(adr); + c += MMU_memAccessCycles(adr); + return MMU_aluMemCycles(4, c); } -static u32 FASTCALL OP_SWPB(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SWPB(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - u8 tmp = READ8(cpu->mem_if->data, adr); - WRITE8(cpu->mem_if->data, adr, (u8)(cpu->R[REG_POS(i,0)]&0xFF)); - cpu->R[REG_POS(i,12)] = tmp; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + uint8_t tmp = READ8(cpu->mem_if->data, adr); - return 4 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]*2; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 0)] & 0xFF)); + cpu->R[REG_POS(i, 12)] = tmp; + + uint32_t c = MMU_memAccessCycles(adr); + c += MMU_memAccessCycles(adr); + return MMU_aluMemCycles(4, c); } -//------------LDRH----------------------------- +// ----------------------------------------------------------------------------- +// LDRH +// ----------------------------------------------------------------------------- -static u32 FASTCALL OP_LDRH_P_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRH_P_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + IMM_OFF; - cpu->R[REG_POS(i,12)] = (u32)READ16(cpu->mem_if->data, adr); + uint32_t adr = cpu->R[REG_POS(i, 16)] + IMM_OFF; + cpu->R[REG_POS(i, 12)] = static_cast(READ16(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRH_M_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRH_M_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - IMM_OFF; - cpu->R[REG_POS(i,12)] = (u32)READ16(cpu->mem_if->data, adr); + uint32_t adr = cpu->R[REG_POS(i, 16)] - IMM_OFF; + cpu->R[REG_POS(i, 12)] = static_cast(READ16(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRH_P_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRH_P_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + cpu->R[REG_POS(i,0)]; - cpu->R[REG_POS(i,12)] = (u32)READ16(cpu->mem_if->data, adr); + uint32_t adr = cpu->R[REG_POS(i, 16)] + cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 12)] = static_cast(READ16(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRH_M_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRH_M_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - cpu->R[REG_POS(i,0)]; - cpu->R[REG_POS(i,12)] = (u32)READ16(cpu->mem_if->data, adr); + uint32_t adr = cpu->R[REG_POS(i, 16)] - cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 12)] = static_cast(READ16(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRH_PRE_INDE_P_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRH_PRE_INDE_P_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + IMM_OFF; - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = (u32)READ16(cpu->mem_if->data, adr); + uint32_t adr = cpu->R[REG_POS(i, 16)] + IMM_OFF; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(READ16(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRH_PRE_INDE_M_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRH_PRE_INDE_M_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - IMM_OFF; - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = (u32)READ16(cpu->mem_if->data, adr); - + uint32_t adr = cpu->R[REG_POS(i, 16)] - IMM_OFF; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(READ16(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRH_PRE_INDE_P_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRH_PRE_INDE_P_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + cpu->R[REG_POS(i,0)]; - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] =(u32)READ16(cpu->mem_if->data, adr); + uint32_t adr = cpu->R[REG_POS(i, 16)] + cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(READ16(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRH_PRE_INDE_M_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRH_PRE_INDE_M_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - cpu->R[REG_POS(i,0)]; - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = (u32)READ16(cpu->mem_if->data, adr); + uint32_t adr = cpu->R[REG_POS(i, 16)] - cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(READ16(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRH_POS_INDE_P_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRH_POS_INDE_P_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - cpu->R[REG_POS(i,12)] = (u32)READ16(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] += IMM_OFF; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] += IMM_OFF; + cpu->R[REG_POS(i, 12)] = static_cast(READ16(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRH_POS_INDE_M_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRH_POS_INDE_M_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - cpu->R[REG_POS(i,12)] = (u32)READ16(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] -= IMM_OFF; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] -= IMM_OFF; + cpu->R[REG_POS(i, 12)] = static_cast(READ16(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRH_POS_INDE_P_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRH_POS_INDE_P_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - cpu->R[REG_POS(i,12)] = (u32)READ16(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] += cpu->R[REG_POS(i,0)]; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] += cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 12)] = static_cast(READ16(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRH_POS_INDE_M_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRH_POS_INDE_M_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - cpu->R[REG_POS(i,12)] = (u32)READ16(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] -= cpu->R[REG_POS(i,0)]; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] -= cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 12)] = static_cast(READ16(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -//------------STRH----------------------------- +// ----------------------------------------------------------------------------- +// STRH +// ----------------------------------------------------------------------------- -static u32 FASTCALL OP_STRH_P_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRH_P_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + IMM_OFF; - WRITE16(cpu->mem_if->data, adr, (u16)cpu->R[REG_POS(i,12)]); + uint32_t adr = cpu->R[REG_POS(i, 16)] + IMM_OFF; + WRITE16(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRH_M_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRH_M_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - IMM_OFF; - WRITE16(cpu->mem_if->data, adr, (u16)cpu->R[REG_POS(i,12)]); + uint32_t adr = cpu->R[REG_POS(i, 16)] - IMM_OFF; + WRITE16(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRH_P_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRH_P_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + cpu->R[REG_POS(i,0)]; - WRITE16(cpu->mem_if->data, adr, (u16)cpu->R[REG_POS(i,12)]); + uint32_t adr = cpu->R[REG_POS(i, 16)] + cpu->R[REG_POS(i, 0)]; + WRITE16(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRH_M_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRH_M_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - cpu->R[REG_POS(i,0)]; - WRITE16(cpu->mem_if->data, adr, (u16)cpu->R[REG_POS(i,12)]); + uint32_t adr = cpu->R[REG_POS(i, 16)] - cpu->R[REG_POS(i, 0)]; + WRITE16(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRH_PRE_INDE_P_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRH_PRE_INDE_P_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + IMM_OFF; - cpu->R[REG_POS(i,16)] = adr; - WRITE16(cpu->mem_if->data, adr, (u16)cpu->R[REG_POS(i,12)]); + uint32_t adr = cpu->R[REG_POS(i, 16)] + IMM_OFF; + cpu->R[REG_POS(i, 16)] = adr; + WRITE16(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRH_PRE_INDE_M_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRH_PRE_INDE_M_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - IMM_OFF; - WRITE16(cpu->mem_if->data, adr, (u16)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + uint32_t adr = cpu->R[REG_POS(i, 16)] - IMM_OFF; + cpu->R[REG_POS(i, 16)] = adr; + WRITE16(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRH_PRE_INDE_P_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRH_PRE_INDE_P_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + cpu->R[REG_POS(i,0)]; - WRITE16(cpu->mem_if->data, adr, (u16)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + uint32_t adr = cpu->R[REG_POS(i, 16)] + cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 16)] = adr; + WRITE16(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRH_PRE_INDE_M_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRH_PRE_INDE_M_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - cpu->R[REG_POS(i,0)]; - WRITE16(cpu->mem_if->data, adr, (u16)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + uint32_t adr = cpu->R[REG_POS(i, 16)] - cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 16)] = adr; + WRITE16(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRH_POS_INDE_P_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRH_POS_INDE_P_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - WRITE16(cpu->mem_if->data, adr, (u16)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] += IMM_OFF; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE16(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); + cpu->R[REG_POS(i, 16)] += IMM_OFF; - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRH_POS_INDE_M_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRH_POS_INDE_M_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - WRITE16(cpu->mem_if->data, adr, (u16)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] -= IMM_OFF; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE16(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); + cpu->R[REG_POS(i, 16)] -= IMM_OFF; - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRH_POS_INDE_P_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRH_POS_INDE_P_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - WRITE16(cpu->mem_if->data, adr, (u16)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] += cpu->R[REG_POS(i,0)]; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE16(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); + cpu->R[REG_POS(i, 16)] += cpu->R[REG_POS(i, 0)]; - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRH_POS_INDE_M_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRH_POS_INDE_M_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - WRITE16(cpu->mem_if->data, adr, (u16)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] -= cpu->R[REG_POS(i,0)]; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE16(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); + cpu->R[REG_POS(i, 16)] -= cpu->R[REG_POS(i, 0)]; - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -//----------------LDRSH-------------------------- +// ----------------------------------------------------------------------------- +// LDRSH +// ----------------------------------------------------------------------------- -static u32 FASTCALL OP_LDRSH_P_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSH_P_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + IMM_OFF; - cpu->R[REG_POS(i,12)] = (s32)((s16)READ16(cpu->mem_if->data, adr)); + uint32_t adr = cpu->R[REG_POS(i, 16)] + IMM_OFF; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ16(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSH_M_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSH_M_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - IMM_OFF; - cpu->R[REG_POS(i,12)] = (s32)((s16)READ16(cpu->mem_if->data, adr)); + uint32_t adr = cpu->R[REG_POS(i, 16)] - IMM_OFF; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ16(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSH_P_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSH_P_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + cpu->R[REG_POS(i,0)]; - cpu->R[REG_POS(i,12)] = (s32)((s16)READ16(cpu->mem_if->data, adr)); + uint32_t adr = cpu->R[REG_POS(i, 16)] + cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ16(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSH_M_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSH_M_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - cpu->R[REG_POS(i,0)]; - cpu->R[REG_POS(i,12)] = (s32)((s16)READ16(cpu->mem_if->data, adr)); + uint32_t adr = cpu->R[REG_POS(i, 16)] - cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ16(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSH_PRE_INDE_P_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSH_PRE_INDE_P_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + IMM_OFF; - cpu->R[REG_POS(i,12)] = (s32)((s16)READ16(cpu->mem_if->data, adr)); - cpu->R[REG_POS(i,16)] = adr; + uint32_t adr = cpu->R[REG_POS(i, 16)] + IMM_OFF; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ16(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSH_PRE_INDE_M_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSH_PRE_INDE_M_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - IMM_OFF; - cpu->R[REG_POS(i,12)] = (s32)((s16)READ16(cpu->mem_if->data, adr)); - cpu->R[REG_POS(i,16)] = adr; + uint32_t adr = cpu->R[REG_POS(i, 16)] - IMM_OFF; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ16(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSH_PRE_INDE_P_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSH_PRE_INDE_P_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + cpu->R[REG_POS(i,0)]; - cpu->R[REG_POS(i,12)] = (s32)((s16)READ16(cpu->mem_if->data, adr)); - cpu->R[REG_POS(i,16)] = adr; + uint32_t adr = cpu->R[REG_POS(i, 16)] + cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ16(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSH_PRE_INDE_M_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSH_PRE_INDE_M_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - cpu->R[REG_POS(i,0)]; - cpu->R[REG_POS(i,12)] = (s32)((s16)READ16(cpu->mem_if->data, adr)); - cpu->R[REG_POS(i,16)] = adr; + uint32_t adr = cpu->R[REG_POS(i, 16)] - cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ16(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSH_POS_INDE_P_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSH_POS_INDE_P_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - cpu->R[REG_POS(i,12)] = (s32)((s16)READ16(cpu->mem_if->data, adr)); - cpu->R[REG_POS(i,16)] += IMM_OFF; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] += IMM_OFF; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ16(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSH_POS_INDE_M_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSH_POS_INDE_M_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - cpu->R[REG_POS(i,12)] = (s32)((s16)READ16(cpu->mem_if->data, adr)); - cpu->R[REG_POS(i,16)] -= IMM_OFF; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] -= IMM_OFF; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ16(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSH_POS_INDE_P_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSH_POS_INDE_P_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - cpu->R[REG_POS(i,12)] = (s32)((s16)READ16(cpu->mem_if->data, adr)); - cpu->R[REG_POS(i,16)] += cpu->R[REG_POS(i,0)]; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] += cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ16(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSH_POS_INDE_M_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSH_POS_INDE_M_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - cpu->R[REG_POS(i,12)] = (s32)((s16)READ16(cpu->mem_if->data, adr)); - cpu->R[REG_POS(i,16)] -= cpu->R[REG_POS(i,0)]; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] -= cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ16(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -//----------------------LDRSB---------------------- +// ----------------------------------------------------------------------------- +// LDRSB +// ----------------------------------------------------------------------------- -static u32 FASTCALL OP_LDRSB_P_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSB_P_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + IMM_OFF; - cpu->R[REG_POS(i,12)] = (s32)((s8)READ8(cpu->mem_if->data, adr)); + uint32_t adr = cpu->R[REG_POS(i, 16)] + IMM_OFF; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ8(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSB_M_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSB_M_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - IMM_OFF; - cpu->R[REG_POS(i,12)] = (s32)((s8)READ8(cpu->mem_if->data, adr)); + uint32_t adr = cpu->R[REG_POS(i, 16)] - IMM_OFF; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ8(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSB_P_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSB_P_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + cpu->R[REG_POS(i,0)]; - cpu->R[REG_POS(i,12)] = (s32)((s8)READ8(cpu->mem_if->data, adr)); + uint32_t adr = cpu->R[REG_POS(i, 16)] + cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ8(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSB_M_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSB_M_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - cpu->R[REG_POS(i,0)]; - cpu->R[REG_POS(i,12)] = (s32)((s8)READ8(cpu->mem_if->data, adr)); + uint32_t adr = cpu->R[REG_POS(i, 16)] - cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ8(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSB_PRE_INDE_P_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSB_PRE_INDE_P_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + IMM_OFF; - cpu->R[REG_POS(i,12)] = (s32)((s8)READ8(cpu->mem_if->data, adr)); - cpu->R[REG_POS(i,16)] = adr; + uint32_t adr = cpu->R[REG_POS(i, 16)] + IMM_OFF; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ8(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSB_PRE_INDE_M_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSB_PRE_INDE_M_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - IMM_OFF; - cpu->R[REG_POS(i,12)] = (s32)((s8)READ8(cpu->mem_if->data, adr)); - cpu->R[REG_POS(i,16)] = adr; + uint32_t adr = cpu->R[REG_POS(i, 16)] - IMM_OFF; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ8(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSB_PRE_INDE_P_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSB_PRE_INDE_P_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + cpu->R[REG_POS(i,0)]; - cpu->R[REG_POS(i,12)] = (s32)((s8)READ8(cpu->mem_if->data, adr)); - cpu->R[REG_POS(i,16)] = adr; + uint32_t adr = cpu->R[REG_POS(i, 16)] + cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ8(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSB_PRE_INDE_M_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSB_PRE_INDE_M_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - cpu->R[REG_POS(i,0)]; - cpu->R[REG_POS(i,12)] = (s32)((s8)READ8(cpu->mem_if->data, adr)); - cpu->R[REG_POS(i,16)] = adr; + uint32_t adr = cpu->R[REG_POS(i, 16)] - cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ8(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSB_POS_INDE_P_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSB_POS_INDE_P_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - cpu->R[REG_POS(i,12)] = (s32)((s8)READ8(cpu->mem_if->data, adr)); - cpu->R[REG_POS(i,16)] += IMM_OFF; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] += IMM_OFF; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ8(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSB_POS_INDE_M_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSB_POS_INDE_M_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - cpu->R[REG_POS(i,12)] = (s32)((s8)READ8(cpu->mem_if->data, adr)); - cpu->R[REG_POS(i,16)] -= IMM_OFF; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] -= IMM_OFF; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ8(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSB_POS_INDE_P_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSB_POS_INDE_P_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - cpu->R[REG_POS(i,12)] = (s32)((s8)READ8(cpu->mem_if->data, adr)); - cpu->R[REG_POS(i,16)] += cpu->R[REG_POS(i,0)]; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] += cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ8(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRSB_POS_INDE_M_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRSB_POS_INDE_M_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - cpu->R[REG_POS(i,12)] = (s32)((s8)READ8(cpu->mem_if->data, adr)); - cpu->R[REG_POS(i,16)] -= cpu->R[REG_POS(i,0)]; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] -= cpu->R[REG_POS(i, 0)]; + cpu->R[REG_POS(i, 12)] = static_cast(static_cast(READ8(cpu->mem_if->data, adr))); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -//--------------MRS-------------------------------- +// ----------------------------------------------------------------------------- +// MRS / MSR +// ----------------------------------------------------------------------------- -static u32 FASTCALL OP_MRS_CPSR(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MRS_CPSR(uint32_t i) { - cpu->R[REG_POS(cpu->instruction,12)] = cpu->CPSR.val; + cpu->R[REG_POS(i, 12)] = cpu->CPSR.val; - return 1; + return 1; } -static u32 FASTCALL OP_MRS_SPSR(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MRS_SPSR(uint32_t i) { - cpu->R[REG_POS(cpu->instruction,12)] = cpu->SPSR.val; + cpu->R[REG_POS(i, 12)] = cpu->SPSR.val; - return 1; + return 1; } -//--------------MSR-------------------------------- +#define OP_MSR_CPSR_(operand) \ + uint32_t byte_mask = cpu->CPSR.bits.mode == USR ? (BIT19(i) ? 0xFF000000 : 0x00000000) : \ + (BIT16(i) ? 0x000000FF : 0x00000000) | (BIT17(i) ? 0x0000FF00:0x00000000) | (BIT18(i) ? 0x00FF0000 : 0x00000000) | (BIT19(i) ? 0xFF000000 : 0x00000000); \ + if (cpu->CPSR.bits.mode != USR && BIT16(i)) \ + armcpu_switchMode(cpu, operand & 0x1F); \ + cpu->CPSR.val = (cpu->CPSR.val & ~byte_mask) | (operand & byte_mask); \ + cpu->changeCPSR(); + +#define OP_MSR_SPSR_(operand) \ + if (cpu->CPSR.bits.mode == USR || cpu->CPSR.bits.mode == SYS) \ + return 1; \ + uint32_t byte_mask = (BIT16(i) ? 0x000000FF : 0x00000000) | (BIT17(i) ? 0x0000FF00 : 0x00000000) | (BIT18(i) ? 0x00FF0000 : 0x00000000) | (BIT19(i) ? 0xFF000000 : 0x00000000); \ + cpu->SPSR.val = (cpu->SPSR.val & ~byte_mask) | (operand & byte_mask); \ + cpu->changeCPSR(); + +//#define __NEW_MSR +#ifdef __NEW_MSR +#define v4T_UNALLOC_MASK 0x0FFFFF00 +#define v4T_USER_MASK 0xF0000000 +#define v4T_PRIV_MASK 0x0000000F +#define v4T_STATE_MASK 0x00000020 + +#define v5TE_UNALLOC_MASK 0x07FFFF00 +#define v5TE_USER_MASK 0xF8000000 +#define v5TE_PRIV_MASK 0x0000000F +#define v5TE_STATE_MASK 0x00000020 +#endif -static u32 FASTCALL OP_MSR_CPSR(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MSR_CPSR(uint32_t i) { - u32 i = cpu->instruction; - u32 operand = cpu->R[REG_POS(i,0)]; + uint32_t operand = cpu->R[REG_POS(i, 0)]; - if(cpu->CPSR.bits.mode!=USR) - { - if(BIT16(i)) - { - armcpu_switchMode(cpu, operand & 0x1F); - cpu->CPSR.val = (cpu->CPSR.val & 0xFFFFFF00) | (operand & 0xFF); - } - if(BIT17(i)) - cpu->CPSR.val = (cpu->CPSR.val & 0xFFFF00FF) | (operand & 0xFF00); - if(BIT18(i)) - cpu->CPSR.val = (cpu->CPSR.val & 0xFF00FFFF) | (operand & 0xFF0000); - } - if(BIT19(i)) - cpu->CPSR.val = (cpu->CPSR.val & 0x00FFFFFF) | (operand & 0xFF000000); +#ifdef __NEW_MSR + uint32_t mask = 0; + uint32_t byte_mask = (BIT16(i) ? 0x000000FF : 0x00000000) | (BIT17(i) ? 0x0000FF00 : 0x00000000) | (BIT18(i) ? 0x00FF0000 : 0x00000000) | (BIT19(i) ? 0xFF000000 : 0x00000000); + + uint32_t unallocMask = PROCNUM?v4T_UNALLOC_MASK : v5TE_UNALLOC_MASK; + uint32_t userMask = PROCNUM?v4T_USER_MASK : v5TE_USER_MASK; + uint32_t privMask = PROCNUM?v4T_PRIV_MASK : v5TE_PRIV_MASK; + uint32_t stateMask = PROCNUM?v4T_STATE_MASK : v5TE_STATE_MASK; + + if (operand & unallocMask) + fprintf(stderr, "ARM%c: MSR_CPSR_REG UNPREDICTABLE UNALLOC (operand %08X)\n", PROCNUM ? '7' : '9', operand); + if (cpu->CPSR.bits.mode != USR) // Privileged mode + { + if (BIT16(i)) + armcpu_switchMode(cpu, operand & 0x1F); + if (operand & stateMask) + fprintf(stderr, "ARM%c: MSR_CPSR_REG UNPREDICTABLE STATE (operand %08X)\n", PROCNUM ? '7' : '9', operand); + else + mask = byte_mask & (userMask | privMask); + } + else + mask = byte_mask & userMask; - return 1; + u32 new_val = (cpu->CPSR.val & ~mask) | (operand & mask); + cpu->CPSR.val = (cpu->CPSR.val & ~mask) | (operand & mask); + cpu->changeCPSR(); +#else + OP_MSR_CPSR_(operand); +#endif + return 1; } -static u32 FASTCALL OP_MSR_SPSR(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MSR_SPSR(uint32_t i) { - u32 i = cpu->instruction; - u32 operand = cpu->R[REG_POS(i,0)]; - - if(cpu->CPSR.bits.mode!=USR) - { - if(BIT16(i)) - { - cpu->SPSR.val = (cpu->SPSR.val & 0xFFFFFF00) | (operand & 0XFF); - } - if(BIT17(i)) - cpu->SPSR.val = (cpu->SPSR.val & 0xFFFF00FF) | (operand & 0XFF00); - if(BIT18(i)) - cpu->SPSR.val = (cpu->SPSR.val & 0xFF00FFFF) | (operand & 0XFF0000); - } - if(BIT19(i)) - cpu->SPSR.val = (cpu->SPSR.val & 0x00FFFFFF) | (operand & 0XFF000000); - - return 1; + //fprintf(stderr, "OP_MSR_SPSR\n"); + uint32_t operand = cpu->R[REG_POS(i, 0)]; + OP_MSR_SPSR_(operand); + return 1; } -static u32 FASTCALL OP_MSR_CPSR_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MSR_CPSR_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - IMM_VALUE; - - if(cpu->CPSR.bits.mode!=USR) - { - if(BIT16(i)) - { - armcpu_switchMode(cpu, shift_op & 0x1F); - cpu->CPSR.val = (cpu->CPSR.val & 0xFFFFFF00) | (shift_op & 0XFF); - } - if(BIT17(i)) - cpu->CPSR.val = (cpu->CPSR.val & 0xFFFF00FF) | (shift_op & 0XFF00); - if(BIT18(i)) - cpu->CPSR.val = (cpu->CPSR.val & 0xFF00FFFF) | (shift_op & 0XFF0000); - } - if(BIT19(i)) - { - //cpu->CPSR.val = (cpu->CPSR.val & 0xFF000000) | (shift_op & 0XFF000000); - cpu->CPSR.val = (cpu->CPSR.val & 0x00FFFFFF) | (shift_op & 0xFF000000); - } - - return 1; + //fprintf(stderr, "OP_MSR_CPSR_IMM_VAL\n"); + IMM_VALUE; + OP_MSR_CPSR_(shift_op); + return 1; } -static u32 FASTCALL OP_MSR_SPSR_IMM_VAL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MSR_SPSR_IMM_VAL(uint32_t i) { - u32 i = cpu->instruction; - IMM_VALUE; - - if(cpu->CPSR.bits.mode!=USR) - { - if(BIT16(i)) - { - cpu->SPSR.val = (cpu->SPSR.val & 0xFFFFFF00) | (shift_op & 0XFF); - } - if(BIT17(i)) - cpu->SPSR.val = (cpu->SPSR.val & 0xFFFF00FF) | (shift_op & 0XFF00); - if(BIT18(i)) - cpu->SPSR.val = (cpu->SPSR.val & 0xFF00FFFF) | (shift_op & 0XFF0000); - } - if(BIT19(i)) - cpu->SPSR.val = (cpu->SPSR.val & 0xFF000000) | (shift_op & 0XFF000000); - - return 1; + //fprintf(stderr, "OP_MSR_SPSR_IMM_VAL\n"); + IMM_VALUE; + OP_MSR_SPSR_(shift_op); + return 1; } -//-----------------BRANCH-------------------------- +// ----------------------------------------------------------------------------- +// Branch +// ----------------------------------------------------------------------------- -static u32 FASTCALL OP_BX(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BX(uint32_t i) { - u32 tmp = cpu->R[REG_POS(cpu->instruction, 0)]; + uint32_t tmp = cpu->R[REG_POS(i, 0)]; - cpu->CPSR.bits.T = BIT0(tmp); - cpu->R[15] = tmp & 0xFFFFFFFE; - cpu->next_instruction = cpu->R[15]; - return 3; + cpu->CPSR.bits.T = BIT0(tmp); + cpu->R[15] = tmp & (0xFFFFFFFC | (cpu->CPSR.bits.T << 1)); + cpu->next_instruction = cpu->R[15]; + return 3; } -static u32 FASTCALL OP_BLX_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BLX_REG(uint32_t i) { - u32 tmp = cpu->R[REG_POS(cpu->instruction, 0)]; + uint32_t tmp = cpu->R[REG_POS(i, 0)]; - cpu->R[14] = cpu->next_instruction; - cpu->CPSR.bits.T = BIT0(tmp); - cpu->R[15] = tmp & 0xFFFFFFFE; - cpu->next_instruction = cpu->R[15]; - return 3; + cpu->R[14] = cpu->next_instruction; + cpu->CPSR.bits.T = BIT0(tmp); + cpu->R[15] = tmp & (0xFFFFFFFC | (cpu->CPSR.bits.T << 1)); + cpu->next_instruction = cpu->R[15]; + return 3; } -#define SIGNEXTEND_24(i) (((s32)((i)<<8))>>8) +static inline uint32_t SIGNEXTEND_24(uint32_t i) { return static_cast((static_cast(i) << 8) >> 8); } -static u32 FASTCALL OP_B(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_B(uint32_t i) { - u32 off = SIGNEXTEND_24(cpu->instruction); - if(CONDITION(cpu->instruction)==0xF) + /*static const uint32_t mov_r12_r12 = 0xE1A0C00C; + const uint32_t last = _MMU_read32(cpu->instruct_adr-4); + if(last == mov_r12_r12) + { + const uint32_t next = _MMU_read16(cpu->instruct_adr+4); + if(next == 0x6464) + NocashMessage(cpu, 8); + }*/ + + uint32_t off = SIGNEXTEND_24(i); + if (CONDITION(i) == 0xF) { cpu->R[14] = cpu->next_instruction; cpu->CPSR.bits.T = 1; } - cpu->R[15] += (off<<2); + cpu->R[15] += off << 2; + cpu->R[15] &= 0xFFFFFFFC | (cpu->CPSR.bits.T << 1); cpu->next_instruction = cpu->R[15]; - return 3; + return 3; } -static u32 FASTCALL OP_BL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BL(uint32_t i) { - u32 off = SIGNEXTEND_24(cpu->instruction); - if(CONDITION(cpu->instruction)==0xF) + uint32_t off = SIGNEXTEND_24(i); + if (CONDITION(i) == 0xF) { cpu->CPSR.bits.T = 1; cpu->R[15] += 2; } cpu->R[14] = cpu->next_instruction; - cpu->R[15] += (off<<2); + cpu->R[15] += off << 2; + cpu->R[15] &= 0xFFFFFFFC | (cpu->CPSR.bits.T << 1); cpu->next_instruction = cpu->R[15]; return 3; } -//----------------CLZ------------------------------- - -u8 CLZ_TAB[16]= -{ - 0, // 0000 - 1, // 0001 - 2, 2, // 001X - 3, 3, 3, 3, // 01XX - 4, 4, 4, 4, 4, 4, 4, 4 // 1XXX +// ----------------------------------------------------------------------------- +// CLZ +// ----------------------------------------------------------------------------- + +const uint8_t CLZ_TAB[]= +{ + 0, // 0000 + 1, // 0001 + 2, 2, // 001X + 3, 3, 3, 3, // 01XX + 4, 4, 4, 4, 4, 4, 4, 4 // 1XXX }; -static u32 FASTCALL OP_CLZ(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CLZ(uint32_t i) { - u32 i = cpu->instruction; - u32 Rm = cpu->R[REG_POS(i,0)]; - u32 pos; + uint32_t Rm = cpu->R[REG_POS(i, 0)]; - if(Rm==0) - { - cpu->R[REG_POS(i,12)]=32; - return 2; - } + if (!Rm) + { + cpu->R[REG_POS(i, 12)] = 32; + return 2; + } - Rm |= (Rm >>1); - Rm |= (Rm >>2); - Rm |= (Rm >>4); - Rm |= (Rm >>8); - Rm |= (Rm >>16); + Rm |= Rm >> 1; + Rm |= Rm >> 2; + Rm |= Rm >> 4; + Rm |= Rm >> 8; + Rm |= Rm >> 16; - pos = - CLZ_TAB[Rm&0xF] + - CLZ_TAB[(Rm>>4)&0xF] + - CLZ_TAB[(Rm>>8)&0xF] + - CLZ_TAB[(Rm>>12)&0xF] + - CLZ_TAB[(Rm>>16)&0xF] + - CLZ_TAB[(Rm>>20)&0xF] + - CLZ_TAB[(Rm>>24)&0xF] + - CLZ_TAB[(Rm>>28)&0xF]; + uint32_t pos = CLZ_TAB[Rm & 0xF] + CLZ_TAB[(Rm >> 4) & 0xF] + CLZ_TAB[(Rm >> 8) & 0xF] + CLZ_TAB[(Rm >> 12) & 0xF] + + CLZ_TAB[(Rm >> 16) & 0xF] + CLZ_TAB[(Rm >> 20) & 0xF] + CLZ_TAB[(Rm >> 24) & 0xF] + CLZ_TAB[(Rm >> 28) & 0xF]; - cpu->R[REG_POS(i,12)]=32 - pos; + cpu->R[REG_POS(i, 12)] = 32 - pos; - return 2; + return 2; } -//--------------------QADD--QSUB------------------------------ +// ----------------------------------------------------------------------------- +// QADD / QDADD / QSUB / QDSUB +// ----------------------------------------------------------------------------- -static u32 FASTCALL OP_QADD(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_QADD(uint32_t i) { - u32 i = cpu->instruction; - u32 res = cpu->R[REG_POS(i,16)]+cpu->R[REG_POS(i,0)]; + uint32_t res = cpu->R[REG_POS(i, 16)] + cpu->R[REG_POS(i, 0)]; - LOG("spe add\r\n"); - if(SIGNED_OVERFLOW(cpu->R[REG_POS(i,16)],cpu->R[REG_POS(i,0)], res)) + if (SIGNED_OVERFLOW(cpu->R[REG_POS(i, 16)], cpu->R[REG_POS(i, 0)], res)) { - cpu->CPSR.bits.Q=1; - cpu->R[REG_POS(i,12)]=0x80000000-BIT31(res); + cpu->CPSR.bits.Q = 1; + cpu->R[REG_POS(i, 12)] = 0x80000000 - BIT31(res); return 2; } - cpu->R[REG_POS(i,12)]=res; - if(REG_POS(i,12)==15) + cpu->R[REG_POS(i, 12)] = res; + if (REG_POS(i, 12) == 15) { - cpu->R[15] &= 0XFFFFFFFC; - cpu->next_instruction = cpu->R[15]; - return 3; - } - return 2; + cpu->R[15] &= 0xFFFFFFFC; + cpu->next_instruction = cpu->R[15]; + return 3; + } + return 2; } -static u32 FASTCALL OP_QSUB(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_QSUB(uint32_t i) { - u32 i = cpu->instruction; - u32 res = cpu->R[REG_POS(i,0)]-cpu->R[REG_POS(i,16)]; + uint32_t res = cpu->R[REG_POS(i, 0)] - cpu->R[REG_POS(i, 16)]; - LOG("spe add\r\n"); - if(SIGNED_UNDERFLOW(cpu->R[REG_POS(i,0)], cpu->R[REG_POS(i,16)], res)) + if (SIGNED_UNDERFLOW(cpu->R[REG_POS(i, 0)], cpu->R[REG_POS(i, 16)], res)) { - cpu->CPSR.bits.Q=1; - cpu->R[REG_POS(i,12)]=0x80000000-BIT31(res); + cpu->CPSR.bits.Q = 1; + cpu->R[REG_POS(i, 12)] = 0x80000000 - BIT31(res); return 2; } - cpu->R[REG_POS(i,12)]=res; - if(REG_POS(i,12)==15) + cpu->R[REG_POS(i, 12)] = res; + if (REG_POS(i, 12) == 15) { - cpu->R[15] &= 0XFFFFFFFC; - cpu->next_instruction = cpu->R[15]; - return 3; - } - return 2; + cpu->R[15] &= 0xFFFFFFFC; + cpu->next_instruction = cpu->R[15]; + return 3; + } + return 2; } -static u32 FASTCALL OP_QDADD(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_QDADD(uint32_t i) { - u32 i = cpu->instruction; - u32 mul = cpu->R[REG_POS(i,16)]<<1; - u32 res; + uint32_t mul = cpu->R[REG_POS(i, 16)] << 1; - - LOG("spe add\r\n"); - if(BIT31(cpu->R[REG_POS(i,16)])!=BIT31(mul)) + if (BIT31(cpu->R[REG_POS(i, 16)]) != BIT31(mul)) { - cpu->CPSR.bits.Q=1; - mul = 0x80000000-BIT31(mul); + cpu->CPSR.bits.Q = 1; + mul = 0x80000000 - BIT31(mul); } - res = mul + cpu->R[REG_POS(i,0)]; - if(SIGNED_OVERFLOW(cpu->R[REG_POS(i,0)],mul, res)) + uint32_t res = mul + cpu->R[REG_POS(i, 0)]; + if (SIGNED_OVERFLOW(cpu->R[REG_POS(i, 0)], mul, res)) { - cpu->CPSR.bits.Q=1; - cpu->R[REG_POS(i,12)]=0x80000000-BIT31(res); + cpu->CPSR.bits.Q = 1; + cpu->R[REG_POS(i, 12)] = 0x80000000 - BIT31(res); return 2; } - cpu->R[REG_POS(i,12)]=res; - if(REG_POS(i,12)==15) + cpu->R[REG_POS(i, 12)] = res; + if (REG_POS(i, 12) == 15) { - cpu->R[15] &= 0XFFFFFFFC; - cpu->next_instruction = cpu->R[15]; - return 3; - } - return 2; + cpu->R[15] &= 0xFFFFFFFC; + cpu->next_instruction = cpu->R[15]; + return 3; + } + return 2; } -static u32 FASTCALL OP_QDSUB(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_QDSUB(uint32_t i) { - u32 i = cpu->instruction; - u32 mul = cpu->R[REG_POS(i,16)]<<1; - u32 res; - + uint32_t mul = cpu->R[REG_POS(i, 16)] << 1; - LOG("spe add\r\n"); - if(BIT31(cpu->R[REG_POS(i,16)])!=BIT31(mul)) + if (BIT31(cpu->R[REG_POS(i, 16)]) != BIT31(mul)) { - cpu->CPSR.bits.Q=1; - mul = 0x80000000-BIT31(mul); + cpu->CPSR.bits.Q = 1; + mul = 0x80000000 - BIT31(mul); } - res = cpu->R[REG_POS(i,0)] - mul; - if(SIGNED_UNDERFLOW(cpu->R[REG_POS(i,0)], mul, res)) + uint32_t res = cpu->R[REG_POS(i, 0)] - mul; + if (SIGNED_UNDERFLOW(cpu->R[REG_POS(i, 0)], mul, res)) { - cpu->CPSR.bits.Q=1; - cpu->R[REG_POS(i,12)]=0x80000000-BIT31(res); + cpu->CPSR.bits.Q = 1; + cpu->R[REG_POS(i, 12)] = 0x80000000 - BIT31(res); return 2; } - cpu->R[REG_POS(i,12)]=res; - if(REG_POS(i,12)==15) + cpu->R[REG_POS(i, 12)] = res; + if (REG_POS(i, 12) == 15) { - cpu->R[15] &= 0XFFFFFFFC; - cpu->next_instruction = cpu->R[15]; - return 3; - } - return 2; + cpu->R[15] &= 0xFFFFFFFC; + cpu->next_instruction = cpu->R[15]; + return 3; + } + return 2; } -//-----------------SMUL------------------------------- +// ----------------------------------------------------------------------------- +// SMUL +// ----------------------------------------------------------------------------- -#define HWORD(i) ((s32)(((s32)(i))>>16)) -#define LWORD(i) (s32)(((s32)((i)<<16))>>16) +static inline int32_t HWORD(uint32_t i) { return static_cast(static_cast(i) >> 16); } +static inline int32_t LWORD(uint32_t i) { return static_cast(static_cast(i << 16) >> 16); } -static u32 FASTCALL OP_SMUL_B_B(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SMUL_B_B(uint32_t i) { - u32 i = cpu->instruction; - - cpu->R[REG_POS(i,16)] = (u32)(LWORD(cpu->R[REG_POS(i,0)])* LWORD(cpu->R[REG_POS(i,8)])); + // checked + cpu->R[REG_POS(i, 16)] = static_cast(LWORD(cpu->R[REG_POS(i, 0)]) * LWORD(cpu->R[REG_POS(i, 8)])); - return 2; + return 2; } -static u32 FASTCALL OP_SMUL_B_T(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SMUL_B_T(uint32_t i) { - u32 i = cpu->instruction; + cpu->R[REG_POS(i, 16)] = static_cast(LWORD(cpu->R[REG_POS(i, 0)]) * HWORD(cpu->R[REG_POS(i, 8)])); - cpu->R[REG_POS(i,16)] = (u32)(LWORD(cpu->R[REG_POS(i,0)])* HWORD(cpu->R[REG_POS(i,8)])); - - return 2; + return 2; } -static u32 FASTCALL OP_SMUL_T_B(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SMUL_T_B(uint32_t i) { - u32 i = cpu->instruction; - - cpu->R[REG_POS(i,16)] = (u32)(HWORD(cpu->R[REG_POS(i,0)])* LWORD(cpu->R[REG_POS(i,8)])); + cpu->R[REG_POS(i, 16)] = static_cast(HWORD(cpu->R[REG_POS(i, 0)]) * LWORD(cpu->R[REG_POS(i, 8)])); - return 2; + return 2; } -static u32 FASTCALL OP_SMUL_T_T(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SMUL_T_T(uint32_t i) { - u32 i = cpu->instruction; - - cpu->R[REG_POS(i,16)] = (u32)(HWORD(cpu->R[REG_POS(i,0)])* HWORD(cpu->R[REG_POS(i,8)])); + cpu->R[REG_POS(i, 16)] = static_cast(HWORD(cpu->R[REG_POS(i, 0)]) * HWORD(cpu->R[REG_POS(i, 8)])); - return 2; + return 2; } -//-----------SMLA---------------------------- +// ----------------------------------------------------------------------------- +// SMLA +// ----------------------------------------------------------------------------- -static u32 FASTCALL OP_SMLA_B_B(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SMLA_B_B(uint32_t i) { - u32 i = cpu->instruction; - u32 tmp = (u32)(LWORD(cpu->R[REG_POS(i,0)])* LWORD(cpu->R[REG_POS(i,8)])); - u32 a = cpu->R[REG_POS(i,12)]; + uint32_t tmp = static_cast(static_cast(cpu->R[REG_POS(i, 0)]) * static_cast(cpu->R[REG_POS(i, 8)])); - //LOG("SMLABB %08X * %08X + %08X = %08X\r\n", cpu->R[REG_POS(i,0)], cpu->R[REG_POS(i,8)], a, tmp + a); - cpu->R[REG_POS(i,16)] = tmp + a; + cpu->R[REG_POS(i, 16)] = tmp + cpu->R[REG_POS(i, 12)]; - if(SIGNED_OVERFLOW(tmp, a, cpu->R[REG_POS(i,16)])) - cpu->CPSR.bits.Q = 1; + if (OverflowFromADD(cpu->R[REG_POS(i, 16)], tmp, cpu->R[REG_POS(i, 12)])) + cpu->CPSR.bits.Q = 1; - return 2; + return 2; } -static u32 FASTCALL OP_SMLA_B_T(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SMLA_B_T(uint32_t i) { - u32 i = cpu->instruction; - u32 tmp = (u32)(LWORD(cpu->R[REG_POS(i,0)])* HWORD(cpu->R[REG_POS(i,8)])); - u32 a = cpu->R[REG_POS(i,12)]; + uint32_t tmp = static_cast(LWORD(cpu->R[REG_POS(i, 0)]) * HWORD(cpu->R[REG_POS(i, 8)])); + uint32_t a = cpu->R[REG_POS(i, 12)]; - //LOG("SMLABT %08X * %08X + %08X = %08X\r\n", cpu->R[REG_POS(i,0)], cpu->R[REG_POS(i,8)], a, tmp + a); - cpu->R[REG_POS(i,16)] = tmp + a; + cpu->R[REG_POS(i, 16)] = tmp + a; - if(SIGNED_OVERFLOW(tmp, a, cpu->R[REG_POS(i,16)])) - cpu->CPSR.bits.Q = 1; + if (SIGNED_OVERFLOW(tmp, a, cpu->R[REG_POS(i, 16)])) + cpu->CPSR.bits.Q = 1; - return 2; + return 2; } -static u32 FASTCALL OP_SMLA_T_B(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SMLA_T_B(uint32_t i) { - u32 i = cpu->instruction; - u32 tmp = (u32)(HWORD(cpu->R[REG_POS(i,0)])* LWORD(cpu->R[REG_POS(i,8)])); - u32 a = cpu->R[REG_POS(i,12)]; + uint32_t tmp = static_cast(HWORD(cpu->R[REG_POS(i, 0)]) * LWORD(cpu->R[REG_POS(i, 8)])); + uint32_t a = cpu->R[REG_POS(i, 12)]; - //LOG("SMLATB %08X * %08X + %08X = %08X\r\n", cpu->R[REG_POS(i,0)], cpu->R[REG_POS(i,8)], a, tmp + a); - cpu->R[REG_POS(i,16)] = tmp + a; + cpu->R[REG_POS(i, 16)] = tmp + a; - if(SIGNED_OVERFLOW(tmp, a, cpu->R[REG_POS(i,16)])) - cpu->CPSR.bits.Q = 1; + if (SIGNED_OVERFLOW(tmp, a, cpu->R[REG_POS(i, 16)])) + cpu->CPSR.bits.Q = 1; - return 2; + return 2; } -static u32 FASTCALL OP_SMLA_T_T(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SMLA_T_T(uint32_t i) { - u32 i = cpu->instruction; - u32 tmp = (u32)(HWORD(cpu->R[REG_POS(i,0)])* HWORD(cpu->R[REG_POS(i,8)])); - u32 a = cpu->R[REG_POS(i,12)]; + uint32_t tmp = static_cast(HWORD(cpu->R[REG_POS(i, 0)]) * HWORD(cpu->R[REG_POS(i, 8)])); + uint32_t a = cpu->R[REG_POS(i, 12)]; - //LOG("SMLATT %08X * %08X + %08X = %08X\r\n", cpu->R[REG_POS(i,0)], cpu->R[REG_POS(i,8)], a, tmp + a); - cpu->R[REG_POS(i,16)] = tmp + a; + cpu->R[REG_POS(i, 16)] = tmp + a; - if(SIGNED_OVERFLOW(tmp, a, cpu->R[REG_POS(i,16)])) - cpu->CPSR.bits.Q = 1; + if (SIGNED_OVERFLOW(tmp, a, cpu->R[REG_POS(i, 16)])) + cpu->CPSR.bits.Q = 1; - return 2; + return 2; } -//--------------SMLAL--------------------------------------- +// ----------------------------------------------------------------------------- +// SMLAL +// ----------------------------------------------------------------------------- -static u32 FASTCALL OP_SMLAL_B_B(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SMLAL_B_B(uint32_t i) { - u32 i = cpu->instruction; - s64 tmp = (s64)(LWORD(cpu->R[REG_POS(i,0)])* LWORD(cpu->R[REG_POS(i,8)])); - u64 res = (u64)tmp + cpu->R[REG_POS(i,12)]; + int64_t tmp = static_cast(LWORD(cpu->R[REG_POS(i, 0)]) * LWORD(cpu->R[REG_POS(i, 8)])); + uint64_t res = static_cast(tmp) + cpu->R[REG_POS(i, 12)]; - LOG("SMLALBB %08X * %08X + %08X%08X = %08X%08X\r\n", (int)cpu->R[REG_POS(i,0)], (int)cpu->R[REG_POS(i,8)], (int)cpu->R[REG_POS(i,16)], (int)cpu->R[REG_POS(i,12)], (int)(cpu->R[REG_POS(i,16)] + (res + ((tmp<0)*0xFFFFFFFF))), (int)(u32) res); + cpu->R[REG_POS(i, 12)] = static_cast(res); + cpu->R[REG_POS(i, 16)] += static_cast(res + ((tmp < 0) * 0xFFFFFFFF)); - cpu->R[REG_POS(i,12)] = (u32) res; - cpu->R[REG_POS(i,16)] += (res + ((tmp<0)*0xFFFFFFFF)); - - return 2; + return 2; } -static u32 FASTCALL OP_SMLAL_B_T(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SMLAL_B_T(uint32_t i) { - u32 i = cpu->instruction; - s64 tmp = (s64)(LWORD(cpu->R[REG_POS(i,0)])* HWORD(cpu->R[REG_POS(i,8)])); - u64 res = (u64)tmp + cpu->R[REG_POS(i,12)]; - - LOG("SMLALBT %08X * %08X + %08X%08X = %08X%08X\r\n", (int)cpu->R[REG_POS(i,0)], (int)cpu->R[REG_POS(i,8)], (int)cpu->R[REG_POS(i,16)], (int)cpu->R[REG_POS(i,12)], (int)(cpu->R[REG_POS(i,16)] + res + ((tmp<0)*0xFFFFFFFF)), (int)(u32) res); + int64_t tmp = static_cast(LWORD(cpu->R[REG_POS(i, 0)]) * HWORD(cpu->R[REG_POS(i, 8)])); + uint64_t res = static_cast(tmp) + cpu->R[REG_POS(i, 12)]; - cpu->R[REG_POS(i,12)] = (u32) res; - cpu->R[REG_POS(i,16)] += res + ((tmp<0)*0xFFFFFFFF); + cpu->R[REG_POS(i, 12)] = static_cast(res); + cpu->R[REG_POS(i, 16)] += static_cast(res + ((tmp < 0) * 0xFFFFFFFF)); - return 2; + return 2; } -static u32 FASTCALL OP_SMLAL_T_B(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SMLAL_T_B(uint32_t i) { - u32 i = cpu->instruction; - s64 tmp = (s64)(HWORD(cpu->R[REG_POS(i,0)])* (s64)LWORD(cpu->R[REG_POS(i,8)])); - u64 res = (u64)tmp + cpu->R[REG_POS(i,12)]; + int64_t tmp = static_cast(HWORD(cpu->R[REG_POS(i, 0)]) * static_cast(LWORD(cpu->R[REG_POS(i, 8)]))); + uint64_t res = static_cast(tmp) + cpu->R[REG_POS(i, 12)]; - LOG("SMLALTB %08X * %08X + %08X%08X = %08X%08X\r\n", (int)cpu->R[REG_POS(i,0)], (int)cpu->R[REG_POS(i,8)], (int)cpu->R[REG_POS(i,16)], (int)cpu->R[REG_POS(i,12)], (int)(cpu->R[REG_POS(i,16)] + res + ((tmp<0)*0xFFFFFFFF)), (int)(u32) res); + cpu->R[REG_POS(i, 12)] = static_cast(res); + cpu->R[REG_POS(i, 16)] += static_cast(res + ((tmp < 0) * 0xFFFFFFFF)); - cpu->R[REG_POS(i,12)] = (u32) res; - cpu->R[REG_POS(i,16)] += res + ((tmp<0)*0xFFFFFFFF); - - return 2; + return 2; } -static u32 FASTCALL OP_SMLAL_T_T(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SMLAL_T_T(uint32_t i) { - u32 i = cpu->instruction; - s64 tmp = (s64)(HWORD(cpu->R[REG_POS(i,0)])* HWORD(cpu->R[REG_POS(i,8)])); - u64 res = (u64)tmp + cpu->R[REG_POS(i,12)]; - - LOG("SMLALTT %08X * %08X + %08X%08X = %08X%08X\r\n", (int)cpu->R[REG_POS(i,0)], (int)cpu->R[REG_POS(i,8)], (int)cpu->R[REG_POS(i,16)], (int)cpu->R[REG_POS(i,12)], (int)(cpu->R[REG_POS(i,16)] + res + ((tmp<0)*0xFFFFFFFF)), (int)(u32) res); + int64_t tmp = static_cast(HWORD(cpu->R[REG_POS(i, 0)]) * HWORD(cpu->R[REG_POS(i, 8)])); + uint64_t res = static_cast(tmp) + cpu->R[REG_POS(i, 12)]; - cpu->R[REG_POS(i,12)] = (u32) res; - cpu->R[REG_POS(i,16)] += res + ((tmp<0)*0xFFFFFFFF); + cpu->R[REG_POS(i, 12)] = static_cast(res); + cpu->R[REG_POS(i, 16)] += static_cast(res + ((tmp < 0) * 0xFFFFFFFF)); - return 2; + return 2; } -//--------------SMULW-------------------- +// ----------------------------------------------------------------------------- +// SMULW +// ----------------------------------------------------------------------------- -static u32 FASTCALL OP_SMULW_B(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SMULW_B(uint32_t i) { - u32 i = cpu->instruction; - s64 tmp = (s64)LWORD(cpu->R[REG_POS(i,8)]) * (s64)((s32)cpu->R[REG_POS(i,0)]); - - //LOG("SMULWB %08X * %08X = %08X\r\n", cpu->R[REG_POS(i,0)], cpu->R[REG_POS(i,8)], ((tmp>>16)&0xFFFFFFFF); + int64_t tmp = static_cast(LWORD(cpu->R[REG_POS(i, 8)])) * static_cast(static_cast(cpu->R[REG_POS(i, 0)])); - cpu->R[REG_POS(i,16)] = ((tmp>>16)&0xFFFFFFFF); + cpu->R[REG_POS(i, 16)] = (tmp >> 16) & 0xFFFFFFFF; - return 2; + return 2; } -static u32 FASTCALL OP_SMULW_T(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SMULW_T(uint32_t i) { - u32 i = cpu->instruction; - s64 tmp = (s64)HWORD(cpu->R[REG_POS(i,8)]) * (s64)((s32)cpu->R[REG_POS(i,0)]); + int64_t tmp = static_cast(HWORD(cpu->R[REG_POS(i, 8)])) * static_cast(static_cast(cpu->R[REG_POS(i, 0)])); - //LOG("SMULWT %08X * %08X = %08X\r\n", cpu->R[REG_POS(i,0)], cpu->R[REG_POS(i,8)], ((tmp>>16)&0xFFFFFFFF)); + cpu->R[REG_POS(i, 16)] = (tmp >> 16) & 0xFFFFFFFF; - cpu->R[REG_POS(i,16)] = ((tmp>>16)&0xFFFFFFFF); - - return 2; + return 2; } -//--------------SMLAW------------------- -static u32 FASTCALL OP_SMLAW_B(armcpu_t *cpu) -{ - u32 i = cpu->instruction; - s64 tmp = (s64)LWORD(cpu->R[REG_POS(i,8)]) * (s64)((s32)cpu->R[REG_POS(i,0)]); - u32 a = cpu->R[REG_POS(i,12)]; +// ----------------------------------------------------------------------------- +// SMLAW +// ----------------------------------------------------------------------------- - //LOG("SMLAWB %08X * %08X + %08X = %08X\r\n", cpu->R[REG_POS(i,0)], cpu->R[REG_POS(i,8)], a, (tmp>>16) + a); +TEMPLATE static uint32_t FASTCALL OP_SMLAW_B(uint32_t i) +{ + int64_t tmp = static_cast(LWORD(cpu->R[REG_POS(i, 8)])) * static_cast(static_cast(cpu->R[REG_POS(i, 0)])); + uint32_t a = cpu->R[REG_POS(i, 12)]; - tmp = (tmp>>16); + tmp >>= 16; - cpu->R[REG_POS(i,16)] = tmp + a; + cpu->R[REG_POS(i, 16)] = static_cast(tmp + a); - if(SIGNED_OVERFLOW(tmp, a, cpu->R[REG_POS(i,16)])) - cpu->CPSR.bits.Q = 1; + if (SIGNED_OVERFLOW(static_cast(tmp), a, cpu->R[REG_POS(i, 16)])) + cpu->CPSR.bits.Q = 1; - return 2; + return 2; } -static u32 FASTCALL OP_SMLAW_T(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SMLAW_T(uint32_t i) { - u32 i = cpu->instruction; - s64 tmp = (s64)HWORD(cpu->R[REG_POS(i,8)]) * (s64)((s32)cpu->R[REG_POS(i,0)]); - u32 a = cpu->R[REG_POS(i,12)]; - - //LOG("SMLAWT %08X * %08X + %08X = %08X\r\n", cpu->R[REG_POS(i,0)], cpu->R[REG_POS(i,8)], a, ((tmp>>16)&0xFFFFFFFF) + a); + int64_t tmp = static_cast(HWORD(cpu->R[REG_POS(i, 8)])) * static_cast(static_cast(cpu->R[REG_POS(i, 0)])); + uint32_t a = cpu->R[REG_POS(i, 12)]; - tmp = ((tmp>>16)&0xFFFFFFFF); - cpu->R[REG_POS(i,16)] = tmp + a; + tmp = (tmp >> 16) & 0xFFFFFFFF; + cpu->R[REG_POS(i, 16)] = static_cast(tmp + a); - if(SIGNED_OVERFLOW(tmp, a, cpu->R[REG_POS(i,16)])) - cpu->CPSR.bits.Q = 1; + if (SIGNED_OVERFLOW(static_cast(tmp), a, cpu->R[REG_POS(i, 16)])) + cpu->CPSR.bits.Q = 1; - return 2; + return 2; } -//------------LDR--------------------------- +// ----------------------------------------------------------------------------- +// LDR +// ----------------------------------------------------------------------------- +#define OP_LDR(a, b) \ + cpu->R[REG_POS(i, 12)] = ROR(READ32(cpu->mem_if->data, adr), 8 * (adr & 3)); \ +\ + if (REG_POS(i, 12) == 15) \ + { \ + if (!PROCNUM) \ + { \ + cpu->CPSR.bits.T = BIT0(cpu->R[15]); \ + cpu->R[15] &= 0xFFFFFFFE; \ + } \ + else \ + cpu->R[15] &= 0xFFFFFFFC; \ + cpu->next_instruction = cpu->R[15]; \ + return MMU_aluMemAccessCycles(b, adr); \ + } \ +\ + return MMU_aluMemAccessCycles(a, adr); -static u32 FASTCALL OP_LDR_P_IMM_OFF(armcpu_t *cpu) -{ - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + IMM_OFF_12; - u32 val = READ32(cpu->mem_if->data, adr); +// PRE +#define OP_LDR_W(a, b) \ + cpu->R[REG_POS(i, 16)] = adr;\ + cpu->R[REG_POS(i, 12)] = ROR(READ32(cpu->mem_if->data, adr), 8 * (adr & 3)); \ +\ + if (REG_POS(i, 12) == 15) \ + { \ + if (!PROCNUM) \ + { \ + cpu->CPSR.bits.T = BIT0(cpu->R[15]); \ + cpu->R[15] &= 0xFFFFFFFE; \ + } \ + else \ + cpu->R[15] &= 0xFFFFFFFC; \ + cpu->next_instruction = cpu->R[15]; \ + return MMU_aluMemAccessCycles(b, adr); \ + } \ +\ + return MMU_aluMemAccessCycles(a, adr); - if(adr&3) - val = ROR(val, 8*(adr&3)); +// POST +#define OP_LDR_W2(a, b, c) \ + uint32_t adr = cpu->R[REG_POS(i, 16)]; \ + cpu->R[REG_POS(i, 16)] = adr + c;\ + cpu->R[REG_POS(i, 12)] = ROR(READ32(cpu->mem_if->data, adr), 8 * (adr & 3)); \ +\ + if (REG_POS(i, 12) == 15) \ + { \ + if (!PROCNUM) \ + { \ + cpu->CPSR.bits.T = BIT0(cpu->R[15]); \ + cpu->R[15] &= 0xFFFFFFFE; \ + } \ + else \ + cpu->R[15] &= 0xFFFFFFFC; \ + cpu->next_instruction = cpu->R[15]; \ + return MMU_aluMemAccessCycles(b, adr); \ + } \ +\ + return MMU_aluMemAccessCycles(a, adr); - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - cpu->R[REG_POS(i,12)] = val; - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; +TEMPLATE static uint32_t FASTCALL OP_LDR_P_IMM_OFF(uint32_t i) +{ + uint32_t adr = cpu->R[REG_POS(i, 16)] + IMM_OFF_12; + OP_LDR(3, 5); } -static u32 FASTCALL OP_LDR_M_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_M_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - IMM_OFF_12; - u32 val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + uint32_t adr = cpu->R[REG_POS(i, 16)] - IMM_OFF_12; + OP_LDR(3, 5); } -static u32 FASTCALL OP_LDR_P_LSL_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_P_LSL_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + OP_LDR(3, 5); } -static u32 FASTCALL OP_LDR_M_LSL_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_M_LSL_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + OP_LDR(3, 5); } -static u32 FASTCALL OP_LDR_P_LSR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_P_LSR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + OP_LDR(3, 5); } -static u32 FASTCALL OP_LDR_M_LSR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_M_LSR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + OP_LDR(3, 5); } -static u32 FASTCALL OP_LDR_P_ASR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_P_ASR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + OP_LDR(3, 5); } -static u32 FASTCALL OP_LDR_M_ASR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_M_ASR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + OP_LDR(3, 5); } -static u32 FASTCALL OP_LDR_P_ROR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_P_ROR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + OP_LDR(3, 5); } -static u32 FASTCALL OP_LDR_M_ROR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_M_ROR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,12)] = val; - cpu->R[REG_POS(i,16)] = adr; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + OP_LDR(3, 5); } -static u32 FASTCALL OP_LDR_P_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_P_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + IMM_OFF_12; - u32 val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + uint32_t adr = cpu->R[REG_POS(i, 16)] + IMM_OFF_12; + OP_LDR_W(3, 5); } -static u32 FASTCALL OP_LDR_M_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_M_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - IMM_OFF_12; - u32 val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; - - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + uint32_t adr = cpu->R[REG_POS(i, 16)] - IMM_OFF_12; + OP_LDR_W(3, 5); } -static u32 FASTCALL OP_LDR_P_LSL_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_P_LSL_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; - - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + OP_LDR_W(3, 5); } -static u32 FASTCALL OP_LDR_M_LSL_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_M_LSL_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; - - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + OP_LDR_W(3, 5); } -static u32 FASTCALL OP_LDR_P_LSR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_P_LSR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; - - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + OP_LDR_W(3, 5); } -static u32 FASTCALL OP_LDR_M_LSR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_M_LSR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; - - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + OP_LDR_W(3, 5); } -static u32 FASTCALL OP_LDR_P_ASR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_P_ASR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; - - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + OP_LDR_W(3, 5); } -static u32 FASTCALL OP_LDR_M_ASR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_M_ASR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; - - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + OP_LDR_W(3, 5); } -static u32 FASTCALL OP_LDR_P_ROR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_P_ROR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; - - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + OP_LDR_W(3, 5); } -static u32 FASTCALL OP_LDR_M_ROR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_M_ROR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + OP_LDR_W(3, 5); } -static u32 FASTCALL OP_LDR_P_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_P_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - u32 val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr + IMM_OFF_12; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr + IMM_OFF_12; - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + OP_LDR_W2(3, 5, IMM_OFF_12); } -//------------------------------------------------------------ -static u32 FASTCALL OP_LDR_P_IMM_OFF_POSTIND2(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_M_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - - u32 adr = cpu->R[REG_POS(i,16)]; - u32 val = READ32(cpu->mem_if->data, adr); - u32 old; - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr + IMM_OFF_12; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - old = armcpu_switchMode(cpu, USR); - cpu->R[REG_POS(i,12)] = val; - armcpu_switchMode(cpu, old); - - cpu->R[REG_POS(i,16)] = adr + IMM_OFF_12; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + OP_LDR_W2(3, 5, -IMM_OFF_12); } -//------------------------------------------------------------ - -static u32 FASTCALL OP_LDR_M_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_P_LSL_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - u32 val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr - IMM_OFF_12; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr - IMM_OFF_12; - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + LSL_IMM; + OP_LDR_W2(3, 5, shift_op); } -static u32 FASTCALL OP_LDR_P_LSL_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_M_LSL_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr + shift_op; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr + shift_op; - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + LSL_IMM; + OP_LDR_W2(3, 5, -shift_op); } -static u32 FASTCALL OP_LDR_M_LSL_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_P_LSR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr - shift_op; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr - shift_op; - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + LSR_IMM; + OP_LDR_W2(3, 5, shift_op); } -static u32 FASTCALL OP_LDR_P_LSR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_M_LSR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr + shift_op; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr + shift_op; - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + LSR_IMM; + OP_LDR_W2(3, 5, -shift_op); } -static u32 FASTCALL OP_LDR_M_LSR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_P_ASR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr - shift_op; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr - shift_op; - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + ASR_IMM; + OP_LDR_W2(3, 5, shift_op); } -static u32 FASTCALL OP_LDR_P_ASR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_M_ASR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr + shift_op; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr + shift_op; - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + ASR_IMM; + OP_LDR_W2(3, 5, -shift_op); } -static u32 FASTCALL OP_LDR_M_ASR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_P_ROR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr - shift_op; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr - shift_op; - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + ROR_IMM; + OP_LDR_W2(3, 5, shift_op); } -static u32 FASTCALL OP_LDR_P_ROR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_M_ROR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr + shift_op; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr + shift_op; - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + ROR_IMM; + OP_LDR_W2(3, 5, -shift_op); } -static u32 FASTCALL OP_LDR_M_ROR_IMM_OFF_POSTIND(armcpu_t *cpu) +// ----------------------------------------------------------------------------- +// LDREX +// ----------------------------------------------------------------------------- +TEMPLATE static uint32_t FASTCALL OP_LDREX(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ32(cpu->mem_if->data, adr); - - if(adr&3) - val = ROR(val, 8*(adr&3)); - - if(REG_POS(i,12)==15) - { - cpu->R[15] = val & (0XFFFFFFFC | (((u32)cpu->LDTBit)<<1)); - cpu->CPSR.bits.T = BIT0(val) & cpu->LDTBit; - cpu->next_instruction = cpu->R[15]; - cpu->R[REG_POS(i,16)] = adr - shift_op; - return 5 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - } - - cpu->R[REG_POS(i,16)] = adr - shift_op; - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + fprintf(stderr, "LDREX\n"); + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 12)] = ROR(READ32(cpu->mem_if->data, adr), 8 * (adr & 3)); + return MMU_aluMemAccessCycles(3, adr); } -//-----------------LDRB------------------------------------------- +// ----------------------------------------------------------------------------- +// LDRB +// ----------------------------------------------------------------------------- -static u32 FASTCALL OP_LDRB_P_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_P_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + IMM_OFF_12; - u32 val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; + uint32_t adr = cpu->R[REG_POS(i, 16)] + IMM_OFF_12; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_M_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_M_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - IMM_OFF_12; - u32 val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; + uint32_t adr = cpu->R[REG_POS(i, 16)] - IMM_OFF_12; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_P_LSL_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_P_LSL_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_M_LSL_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_M_LSL_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_P_LSR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_P_LSR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + cpu->R[REG_POS(i, 12)] = READ8(cpu->mem_if->data, adr); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_M_LSR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_M_LSR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_P_ASR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_P_ASR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_M_ASR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_M_ASR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_P_ROR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_P_ROR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_M_ROR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_M_ROR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; - cpu->R[REG_POS(i,16)] = adr; + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_P_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_P_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + IMM_OFF_12; - u32 val = READ8(cpu->mem_if->data, adr); - - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; - + uint32_t adr = cpu->R[REG_POS(i, 16)] + IMM_OFF_12; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_M_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_M_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - IMM_OFF_12; - u32 val = READ8(cpu->mem_if->data, adr); + uint32_t adr = cpu->R[REG_POS(i, 16)] - IMM_OFF_12; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_P_LSL_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_P_LSL_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - val = READ8(cpu->mem_if->data, adr); - - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; - + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_M_LSL_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_M_LSL_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - val = READ8(cpu->mem_if->data, adr); + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; - - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_P_LSR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_P_LSR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_M_LSR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_M_LSR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_P_ASR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_P_ASR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_M_ASR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_M_ASR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_P_ROR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_P_ROR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_M_ROR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_M_ROR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] = adr; - cpu->R[REG_POS(i,12)] = val; + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + cpu->R[REG_POS(i, 16)] = adr; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_P_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_P_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - u32 val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] = adr + IMM_OFF_12; - cpu->R[REG_POS(i,12)] = val; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] = adr + IMM_OFF_12; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_M_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_M_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - u32 val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] = adr - IMM_OFF_12; - cpu->R[REG_POS(i,12)] = val; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] = adr - IMM_OFF_12; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_P_LSL_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_P_LSL_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] = adr + shift_op; - cpu->R[REG_POS(i,12)] = val; + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] = adr + shift_op; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_M_LSL_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_M_LSL_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] = adr - shift_op; - cpu->R[REG_POS(i,12)] = val; + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] = adr - shift_op; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_P_LSR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_P_LSR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] = adr + shift_op; - cpu->R[REG_POS(i,12)] = val; + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] = adr + shift_op; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_M_LSR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_M_LSR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] = adr - shift_op; - cpu->R[REG_POS(i,12)] = val; + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] = adr - shift_op; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_P_ASR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_P_ASR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] = adr + shift_op; - cpu->R[REG_POS(i,12)] = val; + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] = adr + shift_op; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_M_ASR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_M_ASR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] = adr - shift_op; - cpu->R[REG_POS(i,12)] = val; + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] = adr - shift_op; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_P_ROR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_P_ROR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] = adr + shift_op; - cpu->R[REG_POS(i,12)] = val; + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] = adr + shift_op; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_M_ROR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_M_ROR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 val; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,16)] = adr - shift_op; - cpu->R[REG_POS(i,12)] = val; + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + cpu->R[REG_POS(i, 16)] = adr - shift_op; + cpu->R[REG_POS(i, 12)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -//----------------------STR-------------------------------- +// ----------------------------------------------------------------------------- +// STR +// ----------------------------------------------------------------------------- -static u32 FASTCALL OP_STR_P_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_P_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + IMM_OFF_12; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); + uint32_t adr = cpu->R[REG_POS(i, 16)] + IMM_OFF_12; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); + + return MMU_aluMemAccessCycles(2, adr); +} -// execute = false; +TEMPLATE static uint32_t FASTCALL OP_STR_M_IMM_OFF(uint32_t i) +{ + uint32_t adr = cpu->R[REG_POS(i, 16)] - IMM_OFF_12; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_M_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_P_LSL_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - IMM_OFF_12; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_P_LSL_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_M_LSL_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_M_LSL_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_P_LSR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_P_LSR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_M_LSR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_M_LSR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_P_ASR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_P_ASR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_M_ASR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_M_ASR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_P_ROR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_P_ROR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_M_ROR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_M_ROR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_P_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + uint32_t adr = cpu->R[REG_POS(i, 16)] + IMM_OFF_12; + cpu->R[REG_POS(i, 16)] = adr; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_P_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_M_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + IMM_OFF_12; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + uint32_t adr = cpu->R[REG_POS(i, 16)] - IMM_OFF_12; + cpu->R[REG_POS(i, 16)] = adr; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_M_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_P_LSL_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - IMM_OFF_12; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + cpu->R[REG_POS(i, 16)] = adr; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_P_LSL_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_M_LSL_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + cpu->R[REG_POS(i, 16)] = adr; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_M_LSL_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_P_LSR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + cpu->R[REG_POS(i, 16)] = adr; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_P_LSR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_M_LSR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + cpu->R[REG_POS(i, 16)] = adr; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_M_LSR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_P_ASR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + cpu->R[REG_POS(i, 16)] = adr; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_P_ASR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_M_ASR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + cpu->R[REG_POS(i, 16)] = adr; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_M_ASR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_P_ROR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + cpu->R[REG_POS(i, 16)] = adr; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_P_ROR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_M_ROR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + cpu->R[REG_POS(i, 16)] = adr; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_M_ROR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_P_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); + cpu->R[REG_POS(i, 16)] = adr + IMM_OFF_12; - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_P_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_M_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr + IMM_OFF_12; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); + cpu->R[REG_POS(i, 16)] = adr - IMM_OFF_12; - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_M_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_P_LSL_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr - IMM_OFF_12; + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); + cpu->R[REG_POS(i, 16)] = adr + shift_op; - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_P_LSL_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_M_LSL_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr + shift_op; + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); + cpu->R[REG_POS(i, 16)] = adr - shift_op; - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_M_LSL_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_P_LSR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr - shift_op; + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); + cpu->R[REG_POS(i, 16)] = adr + shift_op; - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_P_LSR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_M_LSR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr + shift_op; + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); + cpu->R[REG_POS(i, 16)] = adr - shift_op; - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_M_LSR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_P_ASR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr - shift_op; + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); + cpu->R[REG_POS(i, 16)] = adr + shift_op; - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_P_ASR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_M_ASR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr + shift_op; + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); + cpu->R[REG_POS(i, 16)] = adr - shift_op; - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_M_ASR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_P_ROR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr - shift_op; + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); + cpu->R[REG_POS(i, 16)] = adr + shift_op; - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_P_ROR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_M_ROR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr + shift_op; + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 12)]); + cpu->R[REG_POS(i, 16)] = adr - shift_op; - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_M_ROR_IMM_OFF_POSTIND(armcpu_t *cpu) +// ----------------------------------------------------------------------------- +// STREX +// ----------------------------------------------------------------------------- +TEMPLATE static uint32_t FASTCALL OP_STREX(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr - shift_op; + fprintf(stderr, "STREX\n"); + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_POS(i, 0)]); + cpu->R[REG_POS(i, 12)] = 0; - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -//-----------------------STRB------------------------------------- +// ----------------------------------------------------------------------------- +// STRB +// ----------------------------------------------------------------------------- -static u32 FASTCALL OP_STRB_P_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_P_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + IMM_OFF_12; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); + uint32_t adr = cpu->R[REG_POS(i, 16)] + IMM_OFF_12; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_M_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_M_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - IMM_OFF_12; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); + uint32_t adr = cpu->R[REG_POS(i, 16)] - IMM_OFF_12; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_P_LSL_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_P_LSL_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_M_LSL_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_M_LSL_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_P_LSR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_P_LSR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_M_LSR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_M_LSR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_P_ASR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_P_ASR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_M_ASR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_M_ASR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_P_ROR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_P_ROR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_M_ROR_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_M_ROR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_P_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_P_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] + IMM_OFF_12; - WRITE8(cpu->mem_if->data, adr, cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + uint32_t adr = cpu->R[REG_POS(i, 16)] + IMM_OFF_12; + cpu->R[REG_POS(i, 16)] = adr; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_M_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_M_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)] - IMM_OFF_12; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + uint32_t adr = cpu->R[REG_POS(i, 16)] - IMM_OFF_12; + cpu->R[REG_POS(i, 16)] = adr; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_P_LSL_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_P_LSL_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + cpu->R[REG_POS(i, 16)] = adr; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_M_LSL_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_M_LSL_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + cpu->R[REG_POS(i, 16)] = adr; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_P_LSR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_P_LSR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + cpu->R[REG_POS(i, 16)] = adr; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_M_LSR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_M_LSR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + cpu->R[REG_POS(i, 16)] = adr; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_P_ASR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_P_ASR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + cpu->R[REG_POS(i, 16)] = adr; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_M_ASR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_M_ASR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + cpu->R[REG_POS(i, 16)] = adr; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_P_ROR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_P_ROR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)] + shift_op; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] + shift_op; + cpu->R[REG_POS(i, 16)] = adr; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_M_ROR_IMM_OFF_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_M_ROR_IMM_OFF_PREIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)] - shift_op; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr; + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)] - shift_op; + cpu->R[REG_POS(i, 16)] = adr; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_P_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_P_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr + IMM_OFF_12; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); + cpu->R[REG_POS(i, 16)] = adr + IMM_OFF_12; - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_M_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_M_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr - IMM_OFF_12; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); + cpu->R[REG_POS(i, 16)] = adr - IMM_OFF_12; - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_P_LSL_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_P_LSL_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr + shift_op; + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); + cpu->R[REG_POS(i, 16)] = adr + shift_op; - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_M_LSL_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_M_LSL_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr - shift_op; + LSL_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); + cpu->R[REG_POS(i, 16)] = adr - shift_op; - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_P_LSR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_P_LSR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr + shift_op; + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); + cpu->R[REG_POS(i, 16)] = adr + shift_op; - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_M_LSR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_M_LSR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr - shift_op; + LSR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); + cpu->R[REG_POS(i, 16)] = adr - shift_op; - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_P_ASR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_P_ASR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr + shift_op; + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); + cpu->R[REG_POS(i, 16)] = adr + shift_op; - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_M_ASR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_M_ASR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr - shift_op; + ASR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); + cpu->R[REG_POS(i, 16)] = adr - shift_op; - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_P_ROR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_P_ROR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr + shift_op; + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); + cpu->R[REG_POS(i, 16)] = adr + shift_op; - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_M_ROR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_M_ROR_IMM_OFF_POSTIND(uint32_t i) { - u32 i = cpu->instruction; - u32 adr; - u32 shift_op; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr - shift_op; + ROR_IMM; + uint32_t adr = cpu->R[REG_POS(i, 16)]; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_POS(i, 12)])); + cpu->R[REG_POS(i, 16)] = adr - shift_op; - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -//-----------------------LDRBT------------------------------------- +// ----------------------------------------------------------------------------- +// LDMIA / LDMIB / LDMDA / LDMDB +// ----------------------------------------------------------------------------- -static u32 FASTCALL OP_LDRBT_P_IMM_OFF_POSTIND(armcpu_t *cpu) -{ - u32 oldmode; - u32 i; - u32 adr; - u32 val; - - if(cpu->CPSR.bits.mode==USR) - return 2; - oldmode = armcpu_switchMode(cpu, SYS); +#define OP_L_IA(reg, adr) \ + if (BIT##reg(i)) \ + { \ + registres[reg] = READ32(cpu->mem_if->data, start); \ + c += MMU_memAccessCycles(start); \ + adr += 4; \ + } - i = cpu->instruction; - adr = cpu->R[REG_POS(i,16)]; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; - cpu->R[REG_POS(i,16)] = adr + IMM_OFF_12; +#define OP_L_IB(reg, adr) \ + if (BIT##reg(i)) \ + { \ + adr += 4; \ + registres[reg] = READ32(cpu->mem_if->data, start); \ + c += MMU_memAccessCycles(start); \ + } - armcpu_switchMode(cpu, oldmode); +#define OP_L_DA(reg, adr) \ + if (BIT##reg(i)) \ + { \ + registres[reg] = READ32(cpu->mem_if->data, start); \ + c += MMU_memAccessCycles(start); \ + adr -= 4; \ + } - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; -} +#define OP_L_DB(reg, adr) \ + if (BIT##reg(i)) \ + { \ + adr -= 4; \ + registres[reg] = READ32(cpu->mem_if->data, start); \ + c += MMU_memAccessCycles(start); \ + } -static u32 FASTCALL OP_LDRBT_M_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDMIA(uint32_t i) { - u32 oldmode; - u32 i; - u32 adr; - u32 val; - - if(cpu->CPSR.bits.mode==USR) - return 2; - oldmode = armcpu_switchMode(cpu, SYS); + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; - //execute = false; - LOG("Untested opcode: OP_LDRBT_M_IMM_OFF_POSTIND\n"); + uint32_t *registres = cpu->R; + OP_L_IA(0, start); + OP_L_IA(1, start); + OP_L_IA(2, start); + OP_L_IA(3, start); + OP_L_IA(4, start); + OP_L_IA(5, start); + OP_L_IA(6, start); + OP_L_IA(7, start); + OP_L_IA(8, start); + OP_L_IA(9, start); + OP_L_IA(10, start); + OP_L_IA(11, start); + OP_L_IA(12, start); + OP_L_IA(13, start); + OP_L_IA(14, start); - i = cpu->instruction; - adr = cpu->R[REG_POS(i,16)]; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; - cpu->R[REG_POS(i,16)] = adr - IMM_OFF_12; + if (BIT15(i)) + { + uint32_t tmp = READ32(cpu->mem_if->data, start); + // TODO + // The general-purpose registers loaded can include the PC. If they do, the word loaded for the PC is treated + // as an address and a branch occurs to that address. In ARMv5 and above, bit[0] of the loaded value + // determines whether execution continues after this branch in ARM state or in Thumb state, as though a BX + // (loaded_value) instruction had been executed (but see also The T and J bits on page A2-15 for operation on + // non-T variants of ARMv5). In earlier versions of the architecture, bits[1:0] of the loaded value are ignored + // and execution continues in ARM state, as though the instruction MOV PC,(loaded_value) had been executed. + // + //value = Memory[address,4] + //if (architecture version 5 or above) then + // pc = value AND 0xFFFFFFFE + // T Bit = value[0] + //else + // pc = value AND 0xFFFFFFFC + if (!PROCNUM) + { + cpu->CPSR.bits.T = BIT0(tmp); + registres[15] = tmp & 0xFFFFFFFE; + } + else + registres[15] = tmp & 0xFFFFFFFC; - armcpu_switchMode(cpu, oldmode); + //start += 4; + cpu->next_instruction = registres[15]; + c += MMU_memAccessCycles(start); + } - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemCycles(2, c); } -static u32 FASTCALL OP_LDRBT_P_LSL_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDMIB(uint32_t i) { - u32 oldmode; - u32 i; - u32 adr; - u32 val; - u32 shift_op; - - if(cpu->CPSR.bits.mode==USR) - return 2; - oldmode = armcpu_switchMode(cpu, SYS); - //execute = false; - LOG("Untested opcode: OP_LDRBT_P_LSL_IMM_OFF_POSTIND"); - + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; - i = cpu->instruction; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; - cpu->R[REG_POS(i,16)] = adr + shift_op; + uint32_t *registres = cpu->R; + + OP_L_IB(0, start); + OP_L_IB(1, start); + OP_L_IB(2, start); + OP_L_IB(3, start); + OP_L_IB(4, start); + OP_L_IB(5, start); + OP_L_IB(6, start); + OP_L_IB(7, start); + OP_L_IB(8, start); + OP_L_IB(9, start); + OP_L_IB(10, start); + OP_L_IB(11, start); + OP_L_IB(12, start); + OP_L_IB(13, start); + OP_L_IB(14, start); - armcpu_switchMode(cpu, oldmode); + if (BIT15(i)) + { + start += 4; + c += MMU_memAccessCycles(start); + uint32_t tmp = READ32(cpu->mem_if->data, start); + if (!PROCNUM) + { + cpu->CPSR.bits.T = BIT0(tmp); + registres[15] = tmp & 0xFFFFFFFE; + } + else + registres[15] = tmp & 0xFFFFFFFC; + cpu->next_instruction = registres[15]; + return MMU_aluMemCycles(4, c); + } - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemCycles(2, c); } -static u32 FASTCALL OP_LDRBT_M_LSL_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDMDA(uint32_t i) { - u32 oldmode; - u32 i; - u32 adr; - u32 val; - u32 shift_op; - - if(cpu->CPSR.bits.mode==USR) - return 2; - - oldmode = armcpu_switchMode(cpu, SYS); - //execute = false; - LOG("Untested opcode: OP_LDRBT_M_LSL_IMM_OFF_POSTIND"); + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; + uint32_t *registres = cpu->R; - i = cpu->instruction; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; - cpu->R[REG_POS(i,16)] = adr - shift_op; + if (BIT15(i)) + { + uint32_t tmp = READ32(cpu->mem_if->data, start); + if (!PROCNUM) + { + cpu->CPSR.bits.T = BIT0(tmp); + registres[15] = tmp & 0xFFFFFFFE; + } + else + registres[15] = tmp & 0xFFFFFFFC; + c += MMU_memAccessCycles(start); + start -= 4; + cpu->next_instruction = registres[15]; + } - armcpu_switchMode(cpu, oldmode); + OP_L_DA(14, start); + OP_L_DA(13, start); + OP_L_DA(12, start); + OP_L_DA(11, start); + OP_L_DA(10, start); + OP_L_DA(9, start); + OP_L_DA(8, start); + OP_L_DA(7, start); + OP_L_DA(6, start); + OP_L_DA(5, start); + OP_L_DA(4, start); + OP_L_DA(3, start); + OP_L_DA(2, start); + OP_L_DA(1, start); + OP_L_DA(0, start); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemCycles(2, c); } -static u32 FASTCALL OP_LDRBT_P_LSR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDMDB(uint32_t i) { - u32 oldmode; - u32 i; - u32 adr; - u32 val; - u32 shift_op; - - if(cpu->CPSR.bits.mode==USR) - return 2; + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; - oldmode = armcpu_switchMode(cpu, SYS); - //execute = false; - LOG("Untested opcode: OP_LDRBT_P_LSR_IMM_OFF_POSTIND"); + uint32_t *registres = cpu->R; + if (BIT15(i)) + { + start -= 4; + uint32_t tmp = READ32(cpu->mem_if->data, start); + if (!PROCNUM) + { + cpu->CPSR.bits.T = BIT0(tmp); + registres[15] = tmp & 0xFFFFFFFE; + } + else + registres[15] = tmp & 0xFFFFFFFC; + cpu->next_instruction = registres[15]; + c += MMU_memAccessCycles(start); + } - i = cpu->instruction; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; - cpu->R[REG_POS(i,16)] = adr + shift_op; - - armcpu_switchMode(cpu, oldmode); + OP_L_DB(14, start); + OP_L_DB(13, start); + OP_L_DB(12, start); + OP_L_DB(11, start); + OP_L_DB(10, start); + OP_L_DB(9, start); + OP_L_DB(8, start); + OP_L_DB(7, start); + OP_L_DB(6, start); + OP_L_DB(5, start); + OP_L_DB(4, start); + OP_L_DB(3, start); + OP_L_DB(2, start); + OP_L_DB(1, start); + OP_L_DB(0, start); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemCycles(2, c); } -static u32 FASTCALL OP_LDRBT_M_LSR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDMIA_W(uint32_t i) { - u32 oldmode; - u32 i; - u32 adr; - u32 val; - u32 shift_op; + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; + uint32_t bitList = (~((2 << REG_POS(i, 16)) - 1)) & 0xFFFF; + + uint32_t *registres = cpu->R; + + OP_L_IA(0, start); + OP_L_IA(1, start); + OP_L_IA(2, start); + OP_L_IA(3, start); + OP_L_IA(4, start); + OP_L_IA(5, start); + OP_L_IA(6, start); + OP_L_IA(7, start); + OP_L_IA(8, start); + OP_L_IA(9, start); + OP_L_IA(10, start); + OP_L_IA(11, start); + OP_L_IA(12, start); + OP_L_IA(13, start); + OP_L_IA(14, start); - if(cpu->CPSR.bits.mode==USR) - return 2; - - oldmode = armcpu_switchMode(cpu, SYS); - //execute = false; - LOG("Untested opcode: OP_LDRBT_M_LSR_IMM_OFF_POSTIND"); - - - i = cpu->instruction; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; - cpu->R[REG_POS(i,16)] = adr - shift_op; + if (BIT15(i)) + { + uint32_t tmp = READ32(cpu->mem_if->data, start); + if (!PROCNUM) + { + cpu->CPSR.bits.T = BIT0(tmp); + registres[15] = tmp & 0xFFFFFFFE; + } + else + registres[15] = tmp & 0xFFFFFFFC; + c += MMU_memAccessCycles(start); + start += 4; + cpu->next_instruction = registres[15]; + } - armcpu_switchMode(cpu, oldmode); + if (i & (1 << REG_POS(i, 16))) + { + if (i & bitList) + cpu->R[REG_POS(i, 16)] = start; + } + else + cpu->R[REG_POS(i, 16)] = start; - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemCycles(BIT15(i) ? 4 : 2, c); } -static u32 FASTCALL OP_LDRBT_P_ASR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDMIB_W(uint32_t i) { - u32 oldmode; - u32 i; - u32 adr; - u32 val; - u32 shift_op; - - if(cpu->CPSR.bits.mode==USR) - return 2; + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; + uint32_t bitList = (~((2 << REG_POS(i, 16)) - 1)) & 0xFFFF; + + uint32_t *registres = cpu->R; + + OP_L_IB(0, start); + OP_L_IB(1, start); + OP_L_IB(2, start); + OP_L_IB(3, start); + OP_L_IB(4, start); + OP_L_IB(5, start); + OP_L_IB(6, start); + OP_L_IB(7, start); + OP_L_IB(8, start); + OP_L_IB(9, start); + OP_L_IB(10, start); + OP_L_IB(11, start); + OP_L_IB(12, start); + OP_L_IB(13, start); + OP_L_IB(14, start); - oldmode = armcpu_switchMode(cpu, SYS); - //execute = false; - LOG("Untested opcode: OP_LDRBT_P_ASR_IMM_OFF_POSTIND"); - - - i = cpu->instruction; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; - cpu->R[REG_POS(i,16)] = adr + shift_op; + if (BIT15(i)) + { + uint32_t tmp; + start += 4; + c += MMU_memAccessCycles(start); + tmp = READ32(cpu->mem_if->data, start); + if (!PROCNUM) + { + cpu->CPSR.bits.T = BIT0(tmp); + registres[15] = tmp & 0xFFFFFFFE; + } + else + registres[15] = tmp & 0xFFFFFFFC; + cpu->next_instruction = registres[15]; + } - armcpu_switchMode(cpu, oldmode); + if (i & (1 << REG_POS(i, 16))) + { + if (i & bitList) + cpu->R[REG_POS(i, 16)] = start; + } + else + cpu->R[REG_POS(i, 16)] = start; - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemCycles(BIT15(i) ? 4 : 2, c); } -static u32 FASTCALL OP_LDRBT_M_ASR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDMDA_W(uint32_t i) { - u32 oldmode; - u32 i; - u32 adr; - u32 val; - u32 shift_op; - - if(cpu->CPSR.bits.mode==USR) - return 2; + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; + uint32_t bitList = (~((2 << REG_POS(i, 16)) - 1)) & 0xFFFF; - oldmode = armcpu_switchMode(cpu, SYS); - //execute = false; - LOG("Untested opcode: OP_LDRBT_M_ASR_IMM_OFF_POSTIND"); + uint32_t *registres = cpu->R; + if (BIT15(i)) + { + uint32_t tmp = READ32(cpu->mem_if->data, start); + if (!PROCNUM) + { + cpu->CPSR.bits.T = BIT0(tmp); + registres[15] = tmp & 0xFFFFFFFE; + } + else + registres[15] = tmp & 0xFFFFFFFC; + c += MMU_memAccessCycles(start); + start -= 4; + cpu->next_instruction = registres[15]; + } - i = cpu->instruction; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; - cpu->R[REG_POS(i,16)] = adr - shift_op; + OP_L_DA(14, start); + OP_L_DA(13, start); + OP_L_DA(12, start); + OP_L_DA(11, start); + OP_L_DA(10, start); + OP_L_DA(9, start); + OP_L_DA(8, start); + OP_L_DA(7, start); + OP_L_DA(6, start); + OP_L_DA(5, start); + OP_L_DA(4, start); + OP_L_DA(3, start); + OP_L_DA(2, start); + OP_L_DA(1, start); + OP_L_DA(0, start); - armcpu_switchMode(cpu, oldmode); + if (i & (1 << REG_POS(i, 16))) + { + if (i & bitList) + cpu->R[REG_POS(i, 16)] = start; + } + else + cpu->R[REG_POS(i, 16)] = start; - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemCycles(2, c); } -static u32 FASTCALL OP_LDRBT_P_ROR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDMDB_W(uint32_t i) { - u32 oldmode; - u32 i; - u32 adr; - u32 val; - u32 shift_op; - - if(cpu->CPSR.bits.mode==USR) - return 2; + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; + uint32_t bitList = (~((2 << REG_POS(i, 16)) - 1)) & 0xFFFF; - oldmode = armcpu_switchMode(cpu, SYS); - //execute = false; - LOG("Untested opcode: OP_LDRBT_P_ROR_IMM_OFF_POSTIND"); + uint32_t *registres = cpu->R; + if (BIT15(i)) + { + uint32_t tmp; + start -= 4; + tmp = READ32(cpu->mem_if->data, start); + if (!PROCNUM) + { + cpu->CPSR.bits.T = BIT0(tmp); + registres[15] = tmp & 0xFFFFFFFE; + } + else + registres[15] = tmp & 0xFFFFFFFC; + cpu->next_instruction = registres[15]; + c += MMU_memAccessCycles(start); + } - i = cpu->instruction; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; - cpu->R[REG_POS(i,16)] = adr + shift_op; + OP_L_DB(14, start); + OP_L_DB(13, start); + OP_L_DB(12, start); + OP_L_DB(11, start); + OP_L_DB(10, start); + OP_L_DB(9, start); + OP_L_DB(8, start); + OP_L_DB(7, start); + OP_L_DB(6, start); + OP_L_DB(5, start); + OP_L_DB(4, start); + OP_L_DB(3, start); + OP_L_DB(2, start); + OP_L_DB(1, start); + OP_L_DB(0, start); - armcpu_switchMode(cpu, oldmode); + if (i & (1 << REG_POS(i, 16))) + { + if (i & bitList) + cpu->R[REG_POS(i, 16)] = start; + } + else + cpu->R[REG_POS(i, 16)] = start; - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemCycles(2, c); } -static u32 FASTCALL OP_LDRBT_M_ROR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDMIA2(uint32_t i) { - u32 oldmode; - u32 i; - u32 adr; - u32 val; - u32 shift_op; - - if(cpu->CPSR.bits.mode==USR) - return 2; - - oldmode = armcpu_switchMode(cpu, SYS); - //execute = false; - LOG("Untested opcode: OP_LDRBT_M_ROR_IMM_OFF_POSTIND"); + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; + uint32_t oldmode = 0; + if (!BIT15(i)) + { + if (cpu->CPSR.bits.mode == USR || cpu->CPSR.bits.mode == SYS) + { + fprintf(stderr, "ERROR1\n"); + return 1; + } + oldmode = armcpu_switchMode(cpu, SYS); + } - i = cpu->instruction; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)]; - val = READ8(cpu->mem_if->data, adr); - cpu->R[REG_POS(i,12)] = val; - cpu->R[REG_POS(i,16)] = adr - shift_op; + uint32_t *registres = cpu->R; - armcpu_switchMode(cpu, oldmode); + OP_L_IA(0, start); + OP_L_IA(1, start); + OP_L_IA(2, start); + OP_L_IA(3, start); + OP_L_IA(4, start); + OP_L_IA(5, start); + OP_L_IA(6, start); + OP_L_IA(7, start); + OP_L_IA(8, start); + OP_L_IA(9, start); + OP_L_IA(10, start); + OP_L_IA(11, start); + OP_L_IA(12, start); + OP_L_IA(13, start); + OP_L_IA(14, start); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + if (!BIT15(i)) + armcpu_switchMode(cpu, static_cast(oldmode)); + else + { + uint32_t tmp = READ32(cpu->mem_if->data, start); + Status_Reg SPSR; + cpu->R[15] = tmp & (0XFFFFFFFC | (BIT0(tmp) << 1)); + SPSR = cpu->SPSR; + armcpu_switchMode(cpu, SPSR.bits.mode); + cpu->CPSR = SPSR; + cpu->changeCPSR(); + //start += 4; + cpu->next_instruction = cpu->R[15]; + c += MMU_memAccessCycles(start); + } + return MMU_aluMemCycles(2, c); } -//----------------------STRBT---------------------------- - -static u32 FASTCALL OP_STRBT_P_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDMIB2(uint32_t i) { - u32 oldmode; - u32 i; - u32 adr; - - if(cpu->CPSR.bits.mode==USR) - return 2; - - oldmode = armcpu_switchMode(cpu, SYS); + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; + uint32_t oldmode = 0; + if (!BIT15(i)) + { + if (cpu->CPSR.bits.mode == USR || cpu->CPSR.bits.mode == SYS) + { + fprintf(stderr, "ERROR1\n"); + return 1; + } + oldmode = armcpu_switchMode(cpu, SYS); + } - i = cpu->instruction; - adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr + IMM_OFF_12; + uint32_t *registres = cpu->R; - armcpu_switchMode(cpu, oldmode); + OP_L_IB(0, start); + OP_L_IB(1, start); + OP_L_IB(2, start); + OP_L_IB(3, start); + OP_L_IB(4, start); + OP_L_IB(5, start); + OP_L_IB(6, start); + OP_L_IB(7, start); + OP_L_IB(8, start); + OP_L_IB(9, start); + OP_L_IB(10, start); + OP_L_IB(11, start); + OP_L_IB(12, start); + OP_L_IB(13, start); + OP_L_IB(14, start); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + if (!BIT15(i)) + armcpu_switchMode(cpu, static_cast(oldmode)); + else + { + Status_Reg SPSR; + start += 4; + uint32_t tmp = READ32(cpu->mem_if->data, start); + registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp) << 1)); + SPSR = cpu->SPSR; + armcpu_switchMode(cpu, SPSR.bits.mode); + cpu->CPSR = SPSR; + cpu->changeCPSR(); + cpu->next_instruction = registres[15]; + c += MMU_memAccessCycles(start); + } + return MMU_aluMemCycles(2, c); } -static u32 FASTCALL OP_STRBT_M_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDMDA2(uint32_t i) { - u32 oldmode; - u32 i; - u32 adr; + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i,16)]; - if(cpu->CPSR.bits.mode==USR) - return 2; + uint32_t oldmode = 0; + if (!BIT15(i)) + { + if (cpu->CPSR.bits.mode == USR || cpu->CPSR.bits.mode == SYS) + { + fprintf(stderr, "ERROR1\n"); + return 1; + } + oldmode = armcpu_switchMode(cpu, SYS); + } - oldmode = armcpu_switchMode(cpu, SYS); + uint32_t *registres = cpu->R; + if (BIT15(i)) + { + uint32_t tmp = READ32(cpu->mem_if->data, start); + registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp) << 1)); + cpu->CPSR = cpu->SPSR; + cpu->changeCPSR(); + c += MMU_memAccessCycles(start); + start -= 4; + cpu->next_instruction = registres[15]; + } - i = cpu->instruction; - adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr - IMM_OFF_12; + OP_L_DA(14, start); + OP_L_DA(13, start); + OP_L_DA(12, start); + OP_L_DA(11, start); + OP_L_DA(10, start); + OP_L_DA(9, start); + OP_L_DA(8, start); + OP_L_DA(7, start); + OP_L_DA(6, start); + OP_L_DA(5, start); + OP_L_DA(4, start); + OP_L_DA(3, start); + OP_L_DA(2, start); + OP_L_DA(1, start); + OP_L_DA(0, start); - armcpu_switchMode(cpu, oldmode); + if (!BIT15(i)) + armcpu_switchMode(cpu, static_cast(oldmode)); + else + { + Status_Reg SPSR = cpu->SPSR; + armcpu_switchMode(cpu, SPSR.bits.mode); + cpu->CPSR = SPSR; + cpu->changeCPSR(); + } - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemCycles(2, c); } -static u32 FASTCALL OP_STRBT_P_LSL_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDMDB2(uint32_t i) { - u32 oldmode; - u32 i; - u32 adr; - u32 shift_op; + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i,16)]; - if(cpu->CPSR.bits.mode==USR) - return 2; + uint32_t oldmode = 0; + if (!BIT15(i)) + { + if (cpu->CPSR.bits.mode == USR || cpu->CPSR.bits.mode == SYS) + { + fprintf(stderr, "ERROR1\n"); + return 1; + } + oldmode = armcpu_switchMode(cpu, SYS); + } - oldmode = armcpu_switchMode(cpu, SYS); + uint32_t *registres = cpu->R; + if (BIT15(i)) + { + uint32_t tmp; + start -= 4; + tmp = READ32(cpu->mem_if->data, start); + registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp) << 1)); + cpu->CPSR = cpu->SPSR; + cpu->changeCPSR(); + cpu->next_instruction = registres[15]; + c += MMU_memAccessCycles(start); + } - i = cpu->instruction; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr + shift_op; + OP_L_DB(14, start); + OP_L_DB(13, start); + OP_L_DB(12, start); + OP_L_DB(11, start); + OP_L_DB(10, start); + OP_L_DB(9, start); + OP_L_DB(8, start); + OP_L_DB(7, start); + OP_L_DB(6, start); + OP_L_DB(5, start); + OP_L_DB(4, start); + OP_L_DB(3, start); + OP_L_DB(2, start); + OP_L_DB(1, start); + OP_L_DB(0, start); - armcpu_switchMode(cpu, oldmode); + if (!BIT15(i)) + armcpu_switchMode(cpu, static_cast(oldmode)); + else + { + Status_Reg SPSR = cpu->SPSR; + armcpu_switchMode(cpu, SPSR.bits.mode); + cpu->CPSR = SPSR; + cpu->changeCPSR(); + } - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemCycles(2, c); } -static u32 FASTCALL OP_STRBT_M_LSL_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDMIA2_W(uint32_t i) { - u32 oldmode; - u32 i; - u32 adr; - u32 shift_op; + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i,16)]; - if(cpu->CPSR.bits.mode==USR) - return 2; - - oldmode = armcpu_switchMode(cpu, SYS); + uint32_t oldmode = 0; + if (!BIT15(i)) + { + if (cpu->CPSR.bits.mode == USR || cpu->CPSR.bits.mode == SYS) + { + fprintf(stderr, "ERROR1\n"); + return 1; + } + oldmode = armcpu_switchMode(cpu, SYS); + } + uint32_t *registres = cpu->R; - i = cpu->instruction; - LSL_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr - shift_op; + OP_L_IA(0, start); + OP_L_IA(1, start); + OP_L_IA(2, start); + OP_L_IA(3, start); + OP_L_IA(4, start); + OP_L_IA(5, start); + OP_L_IA(6, start); + OP_L_IA(7, start); + OP_L_IA(8, start); + OP_L_IA(9, start); + OP_L_IA(10, start); + OP_L_IA(11, start); + OP_L_IA(12, start); + OP_L_IA(13, start); + OP_L_IA(14, start); - armcpu_switchMode(cpu, oldmode); + if (!BIT15(i)) + { + if (!BIT_N(i, REG_POS(i, 16))) + registres[REG_POS(i, 16)] = start; + armcpu_switchMode(cpu, static_cast(oldmode)); + return MMU_aluMemCycles(2, c); + } - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + if (!BIT_N(i, REG_POS(i, 16))) + registres[REG_POS(i, 16)] = start + 4; + uint32_t tmp = READ32(cpu->mem_if->data, start); + registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp) << 1)); + Status_Reg SPSR = cpu->SPSR; + armcpu_switchMode(cpu, SPSR.bits.mode); + cpu->CPSR = SPSR; + cpu->changeCPSR(); + cpu->next_instruction = registres[15]; + c += MMU_memAccessCycles(start); + + return MMU_aluMemCycles(2, c); } -static u32 FASTCALL OP_STRBT_P_LSR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDMIB2_W(uint32_t i) { - u32 oldmode; - u32 i; - u32 adr; - u32 shift_op; + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; - if(cpu->CPSR.bits.mode==USR) - return 2; + uint32_t oldmode = 0; + if (!BIT15(i)) + { + if (cpu->CPSR.bits.mode == USR || cpu->CPSR.bits.mode == SYS) + { + fprintf(stderr, "ERROR1\n"); + return 1; + } + oldmode = armcpu_switchMode(cpu, SYS); + } - oldmode = armcpu_switchMode(cpu, SYS); + uint32_t *registres = cpu->R; + OP_L_IB(0, start); + OP_L_IB(1, start); + OP_L_IB(2, start); + OP_L_IB(3, start); + OP_L_IB(4, start); + OP_L_IB(5, start); + OP_L_IB(6, start); + OP_L_IB(7, start); + OP_L_IB(8, start); + OP_L_IB(9, start); + OP_L_IB(10, start); + OP_L_IB(11, start); + OP_L_IB(12, start); + OP_L_IB(13, start); + OP_L_IB(14, start); - i = cpu->instruction; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr + shift_op; + if (!BIT15(i)) + { + if (!BIT_N(i, REG_POS(i, 16))) + registres[REG_POS(i, 16)] = start; + armcpu_switchMode(cpu, static_cast(oldmode)); - armcpu_switchMode(cpu, oldmode); + return MMU_aluMemCycles(2, c); + } - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + if (!BIT_N(i, REG_POS(i,16))) + registres[REG_POS(i,16)] = start + 4; + uint32_t tmp = READ32(cpu->mem_if->data, start + 4); + registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp) << 1)); + cpu->CPSR = cpu->SPSR; + cpu->changeCPSR(); + cpu->next_instruction = registres[15]; + Status_Reg SPSR = cpu->SPSR; + armcpu_switchMode(cpu, SPSR.bits.mode); + cpu->CPSR = SPSR; + cpu->changeCPSR(); + c += MMU_memAccessCycles(start); + + return MMU_aluMemCycles(2, c); } -static u32 FASTCALL OP_STRBT_M_LSR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDMDA2_W(uint32_t i) { - u32 oldmode; - u32 i; - u32 adr; - u32 shift_op; + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i,16)]; + + uint32_t oldmode = 0; + if (!BIT15(i)) + { + if (cpu->CPSR.bits.mode == USR || cpu->CPSR.bits.mode == SYS) + { + fprintf(stderr, "ERROR1\n"); + return 1; + } + oldmode = armcpu_switchMode(cpu, SYS); + } - if(cpu->CPSR.bits.mode==USR) - return 2; + uint32_t *registres = cpu->R; - oldmode = armcpu_switchMode(cpu, SYS); + if (BIT15(i)) + { + if (BIT_N(i, REG_POS(i, 16))) + fprintf(stderr, "error1_1\n"); + uint32_t tmp = READ32(cpu->mem_if->data, start); + registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp) << 1)); + c += MMU_memAccessCycles(start); + start -= 4; + cpu->next_instruction = registres[15]; + } + OP_L_DA(14, start); + OP_L_DA(13, start); + OP_L_DA(12, start); + OP_L_DA(11, start); + OP_L_DA(10, start); + OP_L_DA(9, start); + OP_L_DA(8, start); + OP_L_DA(7, start); + OP_L_DA(6, start); + OP_L_DA(5, start); + OP_L_DA(4, start); + OP_L_DA(3, start); + OP_L_DA(2, start); + OP_L_DA(1, start); + OP_L_DA(0, start); - i = cpu->instruction; - LSR_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr - shift_op; + if (!BIT_N(i, REG_POS(i, 16))) + registres[REG_POS(i, 16)] = start; - armcpu_switchMode(cpu, oldmode); + if (!BIT15(i)) + { + armcpu_switchMode(cpu, static_cast(oldmode)); + return MMU_aluMemCycles(2, c); + } - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + Status_Reg SPSR = cpu->SPSR; + armcpu_switchMode(cpu, SPSR.bits.mode); + cpu->CPSR = SPSR; + cpu->changeCPSR(); + return MMU_aluMemCycles(2, c); } -static u32 FASTCALL OP_STRBT_P_ASR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDMDB2_W(uint32_t i) { - u32 oldmode; - u32 i; - u32 adr; - u32 shift_op; + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; + + uint32_t oldmode = 0; + if (!BIT15(i)) + { + if (cpu->CPSR.bits.mode == USR || cpu->CPSR.bits.mode == SYS) + { + fprintf(stderr, "ERROR1\n"); + return 1; + } + oldmode = armcpu_switchMode(cpu, SYS); + } - if(cpu->CPSR.bits.mode==USR) - return 2; + uint32_t *registres = cpu->R; - oldmode = armcpu_switchMode(cpu, SYS); + if (BIT15(i)) + { + if (BIT_N(i, REG_POS(i, 16))) + fprintf(stderr, "error1_2\n"); + start -= 4; + uint32_t tmp = READ32(cpu->mem_if->data, start); + c += MMU_memAccessCycles(start); + registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp) << 1)); + cpu->CPSR = cpu->SPSR; + cpu->changeCPSR(); + cpu->next_instruction = registres[15]; + } + OP_L_DB(14, start); + OP_L_DB(13, start); + OP_L_DB(12, start); + OP_L_DB(11, start); + OP_L_DB(10, start); + OP_L_DB(9, start); + OP_L_DB(8, start); + OP_L_DB(7, start); + OP_L_DB(6, start); + OP_L_DB(5, start); + OP_L_DB(4, start); + OP_L_DB(3, start); + OP_L_DB(2, start); + OP_L_DB(1, start); + OP_L_DB(0, start); - i = cpu->instruction; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr + shift_op; + if (!BIT_N(i, REG_POS(i, 16))) + registres[REG_POS(i, 16)] = start; - armcpu_switchMode(cpu, oldmode); + if (!BIT15(i)) + { + armcpu_switchMode(cpu, static_cast(oldmode)); + return MMU_aluMemCycles(2, c); + } - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + Status_Reg SPSR = cpu->SPSR; + armcpu_switchMode(cpu, SPSR.bits.mode); + cpu->CPSR = SPSR; + cpu->changeCPSR(); + return MMU_aluMemCycles(2, c); } -static u32 FASTCALL OP_STRBT_M_ASR_IMM_OFF_POSTIND(armcpu_t *cpu) -{ - u32 oldmode; - u32 i; - u32 adr; - u32 shift_op; +// ----------------------------------------------------------------------------- +// STMIA / STMIB / STMDA / STMDB +// ----------------------------------------------------------------------------- - if(cpu->CPSR.bits.mode==USR) - return 2; +TEMPLATE static uint32_t FASTCALL OP_STMIA(uint32_t i) +{ + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; - oldmode = armcpu_switchMode(cpu, SYS); + for (uint32_t b = 0; b < 16; ++b) + { + if (BIT_N(i, b)) + { + WRITE32(cpu->mem_if->data, start, cpu->R[b]); + c += MMU_memAccessCycles(start); + start += 4; + } + } + return MMU_aluMemCycles(1, c); +} +TEMPLATE static uint32_t FASTCALL OP_STMIB(uint32_t i) +{ + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; - i = cpu->instruction; - ASR_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr - shift_op; + for (uint32_t b = 0; b < 16; ++b) + { + if (BIT_N(i, b)) + { + start += 4; + WRITE32(cpu->mem_if->data, start, cpu->R[b]); + c += MMU_memAccessCycles(start); + } + } + return MMU_aluMemCycles(1, c); +} - armcpu_switchMode(cpu, oldmode); +TEMPLATE static uint32_t FASTCALL OP_STMDA(uint32_t i) +{ + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + for (uint32_t b = 0; b < 16; ++b) + { + if (BIT_N(i, 15 - b)) + { + WRITE32(cpu->mem_if->data, start, cpu->R[15 - b]); + c += MMU_memAccessCycles(start); + start -= 4; + } + } + return MMU_aluMemCycles(1, c); } -static u32 FASTCALL OP_STRBT_P_ROR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STMDB(uint32_t i) { - u32 oldmode; - u32 i; - u32 adr; - u32 shift_op; + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; - if(cpu->CPSR.bits.mode==USR) - return 2; + for (uint32_t b = 0; b < 16; ++b) + { + if (BIT_N(i, 15 - b)) + { + start -= 4; + WRITE32(cpu->mem_if->data, start, cpu->R[15 - b]); + c += MMU_memAccessCycles(start); + } + } + return MMU_aluMemCycles(1, c); +} - oldmode = armcpu_switchMode(cpu, SYS); +TEMPLATE static uint32_t FASTCALL OP_STMIA_W(uint32_t i) +{ + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; + for (uint32_t b = 0; b < 16; ++b) + { + if (BIT_N(i, b)) + { + WRITE32(cpu->mem_if->data, start, cpu->R[b]); + c += MMU_memAccessCycles(start); + start += 4; + } + } - i = cpu->instruction; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr + shift_op; + cpu->R[REG_POS(i, 16)] = start; + return MMU_aluMemCycles(1, c); +} - armcpu_switchMode(cpu, oldmode); +TEMPLATE static uint32_t FASTCALL OP_STMIB_W(uint32_t i) +{ + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + for (uint32_t b = 0; b < 16; ++b) + { + if (BIT_N(i, b)) + { + start += 4; + WRITE32(cpu->mem_if->data, start, cpu->R[b]); + c += MMU_memAccessCycles(start); + } + } + cpu->R[REG_POS(i, 16)] = start; + return MMU_aluMemCycles(1, c); } -static u32 FASTCALL OP_STRBT_M_ROR_IMM_OFF_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STMDA_W(uint32_t i) { - u32 oldmode; - u32 i; - u32 adr; - u32 shift_op; + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; - if(cpu->CPSR.bits.mode==USR) - return 2; - - oldmode = armcpu_switchMode(cpu, SYS); + for (uint32_t b = 0; b < 16; ++b) + { + if (BIT_N(i, 15 - b)) + { + WRITE32(cpu->mem_if->data, start, cpu->R[15 - b]); + c += MMU_memAccessCycles(start); + start -= 4; + } + } + cpu->R[REG_POS(i, 16)] = start; + return MMU_aluMemCycles(1, c); +} - i = cpu->instruction; - ROR_IMM; - adr = cpu->R[REG_POS(i,16)]; - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_POS(i,12)]); - cpu->R[REG_POS(i,16)] = adr - shift_op; +TEMPLATE static uint32_t FASTCALL OP_STMDB_W(uint32_t i) +{ + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; - armcpu_switchMode(cpu, oldmode); + for (uint32_t b = 0; b < 16; ++b) + { + if (BIT_N(i, 15 - b)) + { + start -= 4; + WRITE32(cpu->mem_if->data, start, cpu->R[15 - b]); + c += MMU_memAccessCycles(start); + } + } - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + cpu->R[REG_POS(i, 16)] = start; + return MMU_aluMemCycles(1, c); } -//---------------------LDM----------------------------- - -#define OP_L_IA(reg, adr) if(BIT##reg(i))\ - {\ - registres[reg] = READ32(cpu->mem_if->data, start);\ - c += waitState[(start>>24)&0xF];\ - adr += 4;\ - } +TEMPLATE static uint32_t FASTCALL OP_STMIA2(uint32_t i) +{ + if (cpu->CPSR.bits.mode == USR) + return 2; -#define OP_L_IB(reg, adr) if(BIT##reg(i))\ - {\ - adr += 4;\ - registres[reg] = READ32(cpu->mem_if->data, start);\ - c += waitState[(start>>24)&0xF];\ - } + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; + uint32_t oldmode = armcpu_switchMode(cpu, SYS); -#define OP_L_DA(reg, adr) if(BIT##reg(i))\ - {\ - registres[reg] = READ32(cpu->mem_if->data, start);\ - c += waitState[(start>>24)&0xF];\ - adr -= 4;\ - } + for (uint32_t b = 0; b < 16; ++b) + { + if (BIT_N(i, b)) + { + WRITE32(cpu->mem_if->data, start, cpu->R[b]); + c += MMU_memAccessCycles(start); + start += 4; + } + } -#define OP_L_DB(reg, adr) if(BIT##reg(i))\ - {\ - adr -= 4;\ - registres[reg] = READ32(cpu->mem_if->data, start);\ - c += waitState[(start>>24)&0xF];\ - } + armcpu_switchMode(cpu, static_cast(oldmode)); + return MMU_aluMemCycles(1, c); +} -static u32 FASTCALL OP_LDMIA(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STMIB2(uint32_t i) { - u32 i = cpu->instruction; - u32 c = 0; - u32 start = cpu->R[REG_POS(i,16)]; - - u32 * registres = cpu->R; - u32 * waitState = MMU.MMU_WAIT32[cpu->proc_ID]; + if (cpu->CPSR.bits.mode == USR) + return 2; - OP_L_IA(0, start); - OP_L_IA(1, start); - OP_L_IA(2, start); - OP_L_IA(3, start); - OP_L_IA(4, start); - OP_L_IA(5, start); - OP_L_IA(6, start); - OP_L_IA(7, start); - OP_L_IA(8, start); - OP_L_IA(9, start); - OP_L_IA(10, start); - OP_L_IA(11, start); - OP_L_IA(12, start); - OP_L_IA(13, start); - OP_L_IA(14, start); + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; + uint32_t oldmode = armcpu_switchMode(cpu, SYS); - if(BIT15(i)) - { - u32 tmp = READ32(cpu->mem_if->data, start); - registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp)<<1)); - cpu->CPSR.bits.T = BIT0(tmp); - //start += 4; - cpu->next_instruction = registres[15]; - c += waitState[(start>>24)&0xF]; - } + for (uint32_t b = 0; b < 16; ++b) + { + if (BIT_N(i, b)) + { + start += 4; + WRITE32(cpu->mem_if->data, start, cpu->R[b]); + c += MMU_memAccessCycles(start); + } + } - return c + 2; + armcpu_switchMode(cpu, static_cast(oldmode)); + return MMU_aluMemCycles(1, c); } -static u32 FASTCALL OP_LDMIB(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STMDA2(uint32_t i) { - u32 i = cpu->instruction; - u32 c = 0; - u32 start = cpu->R[REG_POS(i,16)]; - - u32 * registres = cpu->R; - u32 * waitState = MMU.MMU_WAIT32[cpu->proc_ID]; + if (cpu->CPSR.bits.mode == USR) + return 2; - OP_L_IB(0, start); - OP_L_IB(1, start); - OP_L_IB(2, start); - OP_L_IB(3, start); - OP_L_IB(4, start); - OP_L_IB(5, start); - OP_L_IB(6, start); - OP_L_IB(7, start); - OP_L_IB(8, start); - OP_L_IB(9, start); - OP_L_IB(10, start); - OP_L_IB(11, start); - OP_L_IB(12, start); - OP_L_IB(13, start); - OP_L_IB(14, start); + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; + uint32_t oldmode = armcpu_switchMode(cpu, SYS); - if(BIT15(i)) - { - u32 tmp; - start += 4; - c += waitState[(start>>24)&0xF]; - tmp = READ32(cpu->mem_if->data, start); - registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp)<<1)); - cpu->CPSR.bits.T = BIT0(tmp); - cpu->next_instruction = registres[15]; - c += 2 + (c==0); - } + for (uint32_t b = 0; b < 16; ++b) + { + if (BIT_N(i, 15 - b)) + { + WRITE32(cpu->mem_if->data, start, cpu->R[15 - b]); + c += MMU_memAccessCycles(start); + start -= 4; + } + } - return c + 2; + armcpu_switchMode(cpu, static_cast(oldmode)); + return MMU_aluMemCycles(1, c); } -static u32 FASTCALL OP_LDMDA(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STMDB2(uint32_t i) { - u32 i = cpu->instruction; - u32 c = 0; - u32 start = cpu->R[REG_POS(i,16)]; - - u32 * registres = cpu->R; - u32 * waitState = MMU.MMU_WAIT32[cpu->proc_ID]; + if (cpu->CPSR.bits.mode == USR) + return 2; - if(BIT15(i)) - { - u32 tmp = READ32(cpu->mem_if->data, start); - registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp)<<1)); - cpu->CPSR.bits.T = BIT0(tmp); - c += waitState[(start>>24)&0xF]; - start -= 4; - cpu->next_instruction = registres[15]; - } + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; + uint32_t oldmode = armcpu_switchMode(cpu, SYS); - OP_L_DA(14, start); - OP_L_DA(13, start); - OP_L_DA(12, start); - OP_L_DA(11, start); - OP_L_DA(10, start); - OP_L_DA(9, start); - OP_L_DA(8, start); - OP_L_DA(7, start); - OP_L_DA(6, start); - OP_L_DA(5, start); - OP_L_DA(4, start); - OP_L_DA(3, start); - OP_L_DA(2, start); - OP_L_DA(1, start); - OP_L_DA(0, start); + for (uint32_t b = 0; b < 16; ++b) + { + if (BIT_N(i, 15 - b)) + { + start -= 4; + WRITE32(cpu->mem_if->data, start, cpu->R[15 - b]); + c += MMU_memAccessCycles(start); + } + } - return c + 2; + armcpu_switchMode(cpu, static_cast(oldmode)); + return MMU_aluMemCycles(1, c); } -static u32 FASTCALL OP_LDMDB(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STMIA2_W(uint32_t i) { - u32 i = cpu->instruction; - u32 c = 0; - u32 start = cpu->R[REG_POS(i,16)]; + if (cpu->CPSR.bits.mode == USR) + return 2; - u32 * registres = cpu->R; - u32 * waitState = MMU.MMU_WAIT32[cpu->proc_ID]; + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; + uint32_t oldmode = armcpu_switchMode(cpu, SYS); - if(BIT15(i)) - { - u32 tmp; - start -= 4; - tmp = READ32(cpu->mem_if->data, start); - registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp)<<1)); - cpu->CPSR.bits.T = BIT0(tmp); - cpu->next_instruction = registres[15]; - c += waitState[(start>>24)&0xF]; - } + for (uint32_t b = 0; b < 16; ++b) + { + if (BIT_N(i, b)) + { + WRITE32(cpu->mem_if->data, start, cpu->R[b]); + c += MMU_memAccessCycles(start); + start += 4; + } + } - OP_L_DB(14, start); - OP_L_DB(13, start); - OP_L_DB(12, start); - OP_L_DB(11, start); - OP_L_DB(10, start); - OP_L_DB(9, start); - OP_L_DB(8, start); - OP_L_DB(7, start); - OP_L_DB(6, start); - OP_L_DB(5, start); - OP_L_DB(4, start); - OP_L_DB(3, start); - OP_L_DB(2, start); - OP_L_DB(1, start); - OP_L_DB(0, start); + cpu->R[REG_POS(i, 16)] = start; - return c + 2; + armcpu_switchMode(cpu, static_cast(oldmode)); + return MMU_aluMemCycles(1, c); } -static u32 FASTCALL OP_LDMIA_W(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STMIB2_W(uint32_t i) { - u32 i = cpu->instruction, c = 0; - u32 start = cpu->R[REG_POS(i,16)]; - u32 bitList = (~((2 << REG_POS(i,16))-1)) & 0xFFFF; - - u32 * registres = cpu->R; - u32 * waitState = MMU.MMU_WAIT32[cpu->proc_ID]; - - OP_L_IA(0, start); - OP_L_IA(1, start); - OP_L_IA(2, start); - OP_L_IA(3, start); - OP_L_IA(4, start); - OP_L_IA(5, start); - OP_L_IA(6, start); - OP_L_IA(7, start); - OP_L_IA(8, start); - OP_L_IA(9, start); - OP_L_IA(10, start); - OP_L_IA(11, start); - OP_L_IA(12, start); - OP_L_IA(13, start); - OP_L_IA(14, start); + if (cpu->CPSR.bits.mode == USR) + return 2; - if(BIT15(i)) - { - u32 tmp = READ32(cpu->mem_if->data, start); - registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp)<<1)); - cpu->CPSR.bits.T = BIT0(tmp); - c += waitState[(start>>24)&0xF]; - start += 4; - cpu->next_instruction = registres[15]; - } + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; + uint32_t oldmode = armcpu_switchMode(cpu, SYS); - if(i & (1 << REG_POS(i,16))) { - if(i & bitList) - cpu->R[REG_POS(i,16)] = start; + for (uint32_t b = 0; b < 16; ++b) + { + if (BIT_N(i, b)) + { + start += 4; + WRITE32(cpu->mem_if->data, start, cpu->R[b]); + c += MMU_memAccessCycles(start); + } } - else - cpu->R[REG_POS(i,16)] = start; - - return c + 2; -} -static u32 FASTCALL OP_LDMIB_W(armcpu_t *cpu) -{ - u32 i = cpu->instruction, c = 0; - u32 start = cpu->R[REG_POS(i,16)]; - u32 bitList = (~((2 << REG_POS(i,16))-1)) & 0xFFFF; - - u32 * registres = cpu->R; - u32 * waitState = MMU.MMU_WAIT32[cpu->proc_ID]; - - OP_L_IB(0, start); - OP_L_IB(1, start); - OP_L_IB(2, start); - OP_L_IB(3, start); - OP_L_IB(4, start); - OP_L_IB(5, start); - OP_L_IB(6, start); - OP_L_IB(7, start); - OP_L_IB(8, start); - OP_L_IB(9, start); - OP_L_IB(10, start); - OP_L_IB(11, start); - OP_L_IB(12, start); - OP_L_IB(13, start); - OP_L_IB(14, start); - - if(BIT15(i)) - { - u32 tmp; - start += 4; - c += waitState[(start>>24)&0xF]; - tmp = READ32(cpu->mem_if->data, start); - registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp)<<1)); - cpu->CPSR.bits.T = BIT0(tmp); - cpu->next_instruction = registres[15]; - c += 2 + (c==0); - } - - if(i & (1 << REG_POS(i,16))) { - if(i & bitList) - cpu->R[REG_POS(i,16)] = start; - } - else - cpu->R[REG_POS(i,16)] = start; + armcpu_switchMode(cpu, static_cast(oldmode)); + cpu->R[REG_POS(i, 16)] = start; - return c + 2; + return MMU_aluMemCycles(1, c); } -static u32 FASTCALL OP_LDMDA_W(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STMDA2_W(uint32_t i) { - u32 i = cpu->instruction, c = 0; - u32 start = cpu->R[REG_POS(i,16)]; - u32 bitList = (~((2 << REG_POS(i,16))-1)) & 0xFFFF; + if (cpu->CPSR.bits.mode == USR) + return 2; - u32 * registres = cpu->R; - u32 * waitState = MMU.MMU_WAIT32[cpu->proc_ID]; + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; + uint32_t oldmode = armcpu_switchMode(cpu, SYS); - if(BIT15(i)) + for (uint32_t b = 0; b < 16; ++b) { - u32 tmp = READ32(cpu->mem_if->data, start); - registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp)<<1)); - cpu->CPSR.bits.T = BIT0(tmp); - c += waitState[(start>>24)&0xF]; - start -= 4; - cpu->next_instruction = registres[15]; + if (BIT_N(i, 15 - b)) + { + WRITE32(cpu->mem_if->data, start, cpu->R[15 - b]); + c += MMU_memAccessCycles(start); + start -= 4; + } } - OP_L_DA(14, start); - OP_L_DA(13, start); - OP_L_DA(12, start); - OP_L_DA(11, start); - OP_L_DA(10, start); - OP_L_DA(9, start); - OP_L_DA(8, start); - OP_L_DA(7, start); - OP_L_DA(6, start); - OP_L_DA(5, start); - OP_L_DA(4, start); - OP_L_DA(3, start); - OP_L_DA(2, start); - OP_L_DA(1, start); - OP_L_DA(0, start); - - if(i & (1 << REG_POS(i,16))) { - if(i & bitList) - cpu->R[REG_POS(i,16)] = start; - } - else - cpu->R[REG_POS(i,16)] = start; + cpu->R[REG_POS(i, 16)] = start; - return c + 2; + armcpu_switchMode(cpu, static_cast(oldmode)); + return MMU_aluMemCycles(1, c); } -static u32 FASTCALL OP_LDMDB_W(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STMDB2_W(uint32_t i) { - u32 i = cpu->instruction, c = 0; - u32 start = cpu->R[REG_POS(i,16)]; - u32 bitList = (~((2 << REG_POS(i,16))-1)) & 0xFFFF; - u32 * registres = cpu->R; - u32 * waitState = MMU.MMU_WAIT32[cpu->proc_ID]; + if (cpu->CPSR.bits.mode == USR) + return 2; - if(BIT15(i)) + uint32_t c = 0; + uint32_t start = cpu->R[REG_POS(i, 16)]; + uint32_t oldmode = armcpu_switchMode(cpu, SYS); + + for (uint32_t b = 0; b < 16; ++b) { - u32 tmp; - start -= 4; - tmp = READ32(cpu->mem_if->data, start); - registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp)<<1)); - cpu->CPSR.bits.T = BIT0(tmp); - cpu->next_instruction = registres[15]; - c += waitState[(start>>24)&0xF]; + if (BIT_N(i, 15 - b)) + { + start -= 4; + WRITE32(cpu->mem_if->data, start, cpu->R[15 - b]); + c += MMU_memAccessCycles(start); + } } - OP_L_DB(14, start); - OP_L_DB(13, start); - OP_L_DB(12, start); - OP_L_DB(11, start); - OP_L_DB(10, start); - OP_L_DB(9, start); - OP_L_DB(8, start); - OP_L_DB(7, start); - OP_L_DB(6, start); - OP_L_DB(5, start); - OP_L_DB(4, start); - OP_L_DB(3, start); - OP_L_DB(2, start); - OP_L_DB(1, start); - OP_L_DB(0, start); - - if(i & (1 << REG_POS(i,16))) { - if(i & bitList) - cpu->R[REG_POS(i,16)] = start; - } - else - cpu->R[REG_POS(i,16)] = start; + cpu->R[REG_POS(i, 16)] = start; - return c + 2; + armcpu_switchMode(cpu, static_cast(oldmode)); + return MMU_aluMemCycles(1, c); } -static u32 FASTCALL OP_LDMIA2(armcpu_t *cpu) -{ - u32 i = cpu->instruction; - u32 oldmode = 0; - - u32 c = 0; - - u32 start = cpu->R[REG_POS(i,16)]; - u32 * registres; - u32 * waitState; - - if(BIT15(i)==0) - { - if(cpu->CPSR.bits.mode==USR) - return 1; - oldmode = armcpu_switchMode(cpu, SYS); - } - - registres = cpu->R; - waitState = MMU.MMU_WAIT32[cpu->proc_ID]; - - OP_L_IA(0, start); - OP_L_IA(1, start); - OP_L_IA(2, start); - OP_L_IA(3, start); - OP_L_IA(4, start); - OP_L_IA(5, start); - OP_L_IA(6, start); - OP_L_IA(7, start); - OP_L_IA(8, start); - OP_L_IA(9, start); - OP_L_IA(10, start); - OP_L_IA(11, start); - OP_L_IA(12, start); - OP_L_IA(13, start); - OP_L_IA(14, start); - - if(BIT15(i)) - { - u32 tmp = READ32(cpu->mem_if->data, start); - Status_Reg SPSR; - cpu->R[15] = tmp & (0XFFFFFFFC | (BIT0(tmp)<<1)); - SPSR = cpu->SPSR; - armcpu_switchMode(cpu, SPSR.bits.mode); - cpu->CPSR=SPSR; - //start += 4; - cpu->next_instruction = cpu->R[15]; - c += MMU.MMU_WAIT32[cpu->proc_ID][(start>>24)&0xF]; - } - else - { - armcpu_switchMode(cpu, oldmode); - } - return c + 2; -} - -static u32 FASTCALL OP_LDMIB2(armcpu_t *cpu) -{ - u32 i = cpu->instruction; - u32 oldmode = 0; - u32 c = 0; - - u32 start = cpu->R[REG_POS(i,16)]; - u32 * registres; - u32 * waitState; - //execute = false; - LOG("Untested opcode: OP_LDMIB2"); - - if(BIT15(i)==0) - { - if(cpu->CPSR.bits.mode==USR) - return 2; - oldmode = armcpu_switchMode(cpu, SYS); - } - - registres = cpu->R; - waitState = MMU.MMU_WAIT32[cpu->proc_ID]; - - OP_L_IB(0, start); - OP_L_IB(1, start); - OP_L_IB(2, start); - OP_L_IB(3, start); - OP_L_IB(4, start); - OP_L_IB(5, start); - OP_L_IB(6, start); - OP_L_IB(7, start); - OP_L_IB(8, start); - OP_L_IB(9, start); - OP_L_IB(10, start); - OP_L_IB(11, start); - OP_L_IB(12, start); - OP_L_IB(13, start); - OP_L_IB(14, start); - - if(BIT15(i)) - { - u32 tmp; - Status_Reg SPSR; - start += 4; - tmp = READ32(cpu->mem_if->data, start); - registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp)<<1)); - SPSR = cpu->SPSR; - armcpu_switchMode(cpu, SPSR.bits.mode); - cpu->CPSR=SPSR; - cpu->next_instruction = registres[15]; - c += waitState[(start>>24)&0xF]; - } - else - { - armcpu_switchMode(cpu, oldmode); - } - return c + 2; -} - -static u32 FASTCALL OP_LDMDA2(armcpu_t *cpu) -{ - u32 i = cpu->instruction; - - u32 oldmode = 0; - u32 c = 0; - u32 * registres; - u32 * waitState; - - u32 start = cpu->R[REG_POS(i,16)]; - //execute = false; - LOG("Untested opcode: OP_LDMDA2"); - - if(BIT15(i)==0) - { - if(cpu->CPSR.bits.mode==USR) - return 2; - oldmode = armcpu_switchMode(cpu, SYS); - } - - registres = cpu->R; - waitState = MMU.MMU_WAIT32[cpu->proc_ID]; - - if(BIT15(i)) - { - u32 tmp = READ32(cpu->mem_if->data, start); - registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp)<<1)); - cpu->CPSR = cpu->SPSR; - c += waitState[(start>>24)&0xF]; - start -= 4; - cpu->next_instruction = registres[15]; - } - - OP_L_DA(14, start); - OP_L_DA(13, start); - OP_L_DA(12, start); - OP_L_DA(11, start); - OP_L_DA(10, start); - OP_L_DA(9, start); - OP_L_DA(8, start); - OP_L_DA(7, start); - OP_L_DA(6, start); - OP_L_DA(5, start); - OP_L_DA(4, start); - OP_L_DA(3, start); - OP_L_DA(2, start); - OP_L_DA(1, start); - OP_L_DA(0, start); - - if(BIT15(i)==0) - { - armcpu_switchMode(cpu, oldmode); - } - else - { - Status_Reg SPSR = cpu->SPSR; - armcpu_switchMode(cpu, SPSR.bits.mode); - cpu->CPSR=SPSR; - } - - return c + 2; -} - -static u32 FASTCALL OP_LDMDB2(armcpu_t *cpu) -{ - u32 i = cpu->instruction; - - u32 oldmode = 0; - u32 c = 0; - u32 * registres; - u32 * waitState; - - u32 start = cpu->R[REG_POS(i,16)]; - if(BIT15(i)==0) - { - if(cpu->CPSR.bits.mode==USR) - return 2; - oldmode = armcpu_switchMode(cpu, SYS); - } - - registres = cpu->R; - waitState = MMU.MMU_WAIT32[cpu->proc_ID]; - - if(BIT15(i)) - { - u32 tmp; - start -= 4; - tmp = READ32(cpu->mem_if->data, start); - registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp)<<1)); - cpu->CPSR = cpu->SPSR; - cpu->next_instruction = registres[15]; - c += waitState[(start>>24)&0xF]; - } - - OP_L_DB(14, start); - OP_L_DB(13, start); - OP_L_DB(12, start); - OP_L_DB(11, start); - OP_L_DB(10, start); - OP_L_DB(9, start); - OP_L_DB(8, start); - OP_L_DB(7, start); - OP_L_DB(6, start); - OP_L_DB(5, start); - OP_L_DB(4, start); - OP_L_DB(3, start); - OP_L_DB(2, start); - OP_L_DB(1, start); - OP_L_DB(0, start); - - if(BIT15(i)==0) - { - armcpu_switchMode(cpu, oldmode); - } - else - { - Status_Reg SPSR = cpu->SPSR; - armcpu_switchMode(cpu, SPSR.bits.mode); - cpu->CPSR=SPSR; - } - - return 2 + c; -} - -static u32 FASTCALL OP_LDMIA2_W(armcpu_t *cpu) -{ - u32 i = cpu->instruction; - u32 c = 0; - - u32 oldmode = 0; - u32 start = cpu->R[REG_POS(i,16)]; - u32 * registres; - u32 * waitState; - u32 tmp; - Status_Reg SPSR; -// execute = false; - if(BIT15(i)==0) - { - if(cpu->CPSR.bits.mode==USR) - return 2; - oldmode = armcpu_switchMode(cpu, SYS); - } - - registres = cpu->R; - waitState = MMU.MMU_WAIT32[cpu->proc_ID]; - - OP_L_IA(0, start); - OP_L_IA(1, start); - OP_L_IA(2, start); - OP_L_IA(3, start); - OP_L_IA(4, start); - OP_L_IA(5, start); - OP_L_IA(6, start); - OP_L_IA(7, start); - OP_L_IA(8, start); - OP_L_IA(9, start); - OP_L_IA(10, start); - OP_L_IA(11, start); - OP_L_IA(12, start); - OP_L_IA(13, start); - OP_L_IA(14, start); - - if(BIT15(i)==0) - { - registres[REG_POS(i,16)] = start; - armcpu_switchMode(cpu, oldmode); - return c + 2; - } - - registres[REG_POS(i,16)] = start + 4; - tmp = READ32(cpu->mem_if->data, start); - registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp)<<1)); - SPSR = cpu->SPSR; - armcpu_switchMode(cpu, SPSR.bits.mode); - cpu->CPSR=SPSR; - cpu->next_instruction = registres[15]; - c += waitState[(start>>24)&0xF]; - - return c + 2; -} - -static u32 FASTCALL OP_LDMIB2_W(armcpu_t *cpu) -{ - u32 i = cpu->instruction; - u32 c = 0; - - u32 oldmode = 0; - u32 start = cpu->R[REG_POS(i,16)]; - u32 * registres; - u32 * waitState; - u32 tmp; - Status_Reg SPSR; - - if(BIT15(i)==0) - { - if(cpu->CPSR.bits.mode==USR) - return 2; - oldmode = armcpu_switchMode(cpu, SYS); - } - - registres = cpu->R; - waitState = MMU.MMU_WAIT32[cpu->proc_ID]; - - OP_L_IB(0, start); - OP_L_IB(1, start); - OP_L_IB(2, start); - OP_L_IB(3, start); - OP_L_IB(4, start); - OP_L_IB(5, start); - OP_L_IB(6, start); - OP_L_IB(7, start); - OP_L_IB(8, start); - OP_L_IB(9, start); - OP_L_IB(10, start); - OP_L_IB(11, start); - OP_L_IB(12, start); - OP_L_IB(13, start); - OP_L_IB(14, start); - - if(BIT15(i)==0) - { - armcpu_switchMode(cpu, oldmode); - registres[REG_POS(i,16)] = start; - - return c + 2; - } - - registres[REG_POS(i,16)] = start + 4; - tmp = READ32(cpu->mem_if->data, start + 4); - registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp)<<1)); - cpu->CPSR = cpu->SPSR; - cpu->next_instruction = registres[15]; - SPSR = cpu->SPSR; - armcpu_switchMode(cpu, SPSR.bits.mode); - cpu->CPSR=SPSR; - c += waitState[(start>>24)&0xF]; - - return c + 2; -} - -static u32 FASTCALL OP_LDMDA2_W(armcpu_t *cpu) -{ - u32 i = cpu->instruction; - u32 c = 0; - - u32 oldmode = 0; - u32 start = cpu->R[REG_POS(i,16)]; - u32 * registres; - u32 * waitState; - Status_Reg SPSR; -// execute = false; - if(BIT15(i)==0) - { - if(cpu->CPSR.bits.mode==USR) - return 2; - oldmode = armcpu_switchMode(cpu, SYS); - } - - registres = cpu->R; - waitState = MMU.MMU_WAIT32[cpu->proc_ID]; - - if(BIT15(i)) - { - u32 tmp = READ32(cpu->mem_if->data, start); - registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp)<<1)); - c += waitState[(start>>24)&0xF]; - start -= 4; - cpu->next_instruction = registres[15]; - } - - OP_L_DA(14, start); - OP_L_DA(13, start); - OP_L_DA(12, start); - OP_L_DA(11, start); - OP_L_DA(10, start); - OP_L_DA(9, start); - OP_L_DA(8, start); - OP_L_DA(7, start); - OP_L_DA(6, start); - OP_L_DA(5, start); - OP_L_DA(4, start); - OP_L_DA(3, start); - OP_L_DA(2, start); - OP_L_DA(1, start); - OP_L_DA(0, start); - - registres[REG_POS(i,16)] = start; - - if(BIT15(i)==0) - { - armcpu_switchMode(cpu, oldmode); - return c + 2; - } - - SPSR = cpu->SPSR; - armcpu_switchMode(cpu, SPSR.bits.mode); - cpu->CPSR=SPSR; - return c + 2; -} - -static u32 FASTCALL OP_LDMDB2_W(armcpu_t *cpu) -{ - u32 i = cpu->instruction; - u32 c = 0; - - u32 oldmode = 0; - u32 start = cpu->R[REG_POS(i,16)]; - u32 * registres; - u32 * waitState; - Status_Reg SPSR; -// execute = false; - if(BIT15(i)==0) - { - if(cpu->CPSR.bits.mode==USR) - return 2; - oldmode = armcpu_switchMode(cpu, SYS); - } - - registres = cpu->R; - waitState = MMU.MMU_WAIT32[cpu->proc_ID]; - - if(BIT15(i)) - { - u32 tmp; - start -= 4; - tmp = READ32(cpu->mem_if->data, start); - c += waitState[(start>>24)&0xF]; - registres[15] = tmp & (0XFFFFFFFC | (BIT0(tmp)<<1)); - cpu->CPSR = cpu->SPSR; - cpu->next_instruction = registres[15]; - } - - OP_L_DB(14, start); - OP_L_DB(13, start); - OP_L_DB(12, start); - OP_L_DB(11, start); - OP_L_DB(10, start); - OP_L_DB(9, start); - OP_L_DB(8, start); - OP_L_DB(7, start); - OP_L_DB(6, start); - OP_L_DB(5, start); - OP_L_DB(4, start); - OP_L_DB(3, start); - OP_L_DB(2, start); - OP_L_DB(1, start); - OP_L_DB(0, start); - - registres[REG_POS(i,16)] = start; - - if(BIT15(i)==0) - { - armcpu_switchMode(cpu, oldmode); - return c + 2; - } - - SPSR = cpu->SPSR; - armcpu_switchMode(cpu, SPSR.bits.mode); - cpu->CPSR=SPSR; - return c + 2; -} - -//------------------------------STM---------------------------------- - -static u32 FASTCALL OP_STMIA(armcpu_t *cpu) -{ - u32 i = cpu->instruction, c = 0, b; - u32 start = cpu->R[REG_POS(i,16)]; - - for(b=0; b<16; ++b) - { - if(BIT_N(i, b)) - { - WRITE32(cpu->mem_if->data, start, cpu->R[b]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(start>>24)&0xF]; - start += 4; - } - } - return c + 1; -} - -static u32 FASTCALL OP_STMIB(armcpu_t *cpu) -{ - u32 i = cpu->instruction, c = 0, b; - u32 start = cpu->R[REG_POS(i,16)]; - - for(b=0; b<16; ++b) - { - if(BIT_N(i, b)) - { - start += 4; - WRITE32(cpu->mem_if->data, start, cpu->R[b]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(start>>24)&0xF]; - } - } - return c + 1; -} - -static u32 FASTCALL OP_STMDA(armcpu_t *cpu) -{ - u32 i = cpu->instruction, c = 0, b; - u32 start = cpu->R[REG_POS(i,16)]; - - for(b=0; b<16; ++b) - { - if(BIT_N(i, 15-b)) - { - WRITE32(cpu->mem_if->data, start, cpu->R[15-b]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(start>>24)&0xF]; - start -= 4; - } - } - return c + 1; -} - -static u32 FASTCALL OP_STMDB(armcpu_t *cpu) -{ - u32 i = cpu->instruction, c = 0, b; - u32 start = cpu->R[REG_POS(i,16)]; - - for(b=0; b<16; ++b) - { - if(BIT_N(i, 15-b)) - { - start -= 4; - WRITE32(cpu->mem_if->data, start, cpu->R[15-b]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(start>>24)&0xF]; - } - } - return c + 1; -} - -static u32 FASTCALL OP_STMIA_W(armcpu_t *cpu) -{ - u32 i = cpu->instruction, c = 0, b; - u32 start = cpu->R[REG_POS(i,16)]; - - for(b=0; b<16; ++b) - { - if(BIT_N(i, b)) - { - WRITE32(cpu->mem_if->data, start, cpu->R[b]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(start>>24)&0xF]; - start += 4; - } - } - - cpu->R[REG_POS(i,16)] = start; - return c + 1; -} - -static u32 FASTCALL OP_STMIB_W(armcpu_t *cpu) -{ - u32 i = cpu->instruction, c = 0, b; - u32 start = cpu->R[REG_POS(i,16)]; - - for(b=0; b<16; ++b) - { - if(BIT_N(i, b)) - { - start += 4; - WRITE32(cpu->mem_if->data, start, cpu->R[b]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(start>>24)&0xF]; - } - } - cpu->R[REG_POS(i,16)] = start; - return c + 1; -} - -static u32 FASTCALL OP_STMDA_W(armcpu_t *cpu) -{ - u32 i = cpu->instruction, c = 0, b; - u32 start = cpu->R[REG_POS(i,16)]; - - for(b=0; b<16; ++b) - { - if(BIT_N(i, 15-b)) - { - WRITE32(cpu->mem_if->data, start, cpu->R[15-b]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(start>>24)&0xF]; - start -= 4; - } - } - - cpu->R[REG_POS(i,16)] = start; - return c + 1; -} - -static u32 FASTCALL OP_STMDB_W(armcpu_t *cpu) -{ - u32 i = cpu->instruction, c = 0, b; - u32 start = cpu->R[REG_POS(i,16)]; - - for(b=0; b<16; ++b) - { - if(BIT_N(i, 15-b)) - { - start -= 4; - WRITE32(cpu->mem_if->data, start, cpu->R[15-b]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(start>>24)&0xF]; - } - } - - cpu->R[REG_POS(i,16)] = start; - return c + 1; -} - -static u32 FASTCALL OP_STMIA2(armcpu_t *cpu) -{ - u32 i, c, b; - u32 start; - u32 oldmode; - - if(cpu->CPSR.bits.mode==USR) - return 2; - - i = cpu->instruction; - c = 0; - start = cpu->R[REG_POS(i,16)]; - oldmode = armcpu_switchMode(cpu, SYS); - - //execute = false; - LOG("Untested opcode: OP_STMIA2"); - - for(b=0; b<16; ++b) - { - if(BIT_N(i, b)) - { - WRITE32(cpu->mem_if->data, start, cpu->R[b]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(start>>24)&0xF]; - start += 4; - } - } - - armcpu_switchMode(cpu, oldmode); - return c + 1; -} - -static u32 FASTCALL OP_STMIB2(armcpu_t *cpu) -{ - u32 i, c, b; - u32 start; - u32 oldmode; - - if(cpu->CPSR.bits.mode==USR) - return 2; - - i = cpu->instruction; - c = 0; - start = cpu->R[REG_POS(i,16)]; - oldmode = armcpu_switchMode(cpu, SYS); - - //execute = false; - LOG("Untested opcode: OP_STMIB2"); - - for(b=0; b<16; ++b) - { - if(BIT_N(i, b)) - { - start += 4; - WRITE32(cpu->mem_if->data, start, cpu->R[b]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(start>>24)&0xF]; - } - } - - armcpu_switchMode(cpu, oldmode); - return c + 1; -} - -static u32 FASTCALL OP_STMDA2(armcpu_t *cpu) -{ - u32 i, c, b; - u32 start; - u32 oldmode; - - if(cpu->CPSR.bits.mode==USR) - return 2; - - i = cpu->instruction; - c = 0; - start = cpu->R[REG_POS(i,16)]; - oldmode = armcpu_switchMode(cpu, SYS); - - //execute = false; - LOG("Untested opcode: OP_STMDA2"); - - for(b=0; b<16; ++b) - { - if(BIT_N(i, 15-b)) - { - WRITE32(cpu->mem_if->data, start, cpu->R[15-b]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(start>>24)&0xF]; - start -= 4; - } - } - - armcpu_switchMode(cpu, oldmode); - return c + 1; -} - -static u32 FASTCALL OP_STMDB2(armcpu_t *cpu) -{ - u32 i, c, b; - u32 start; - u32 oldmode; - - if(cpu->CPSR.bits.mode==USR) - return 2; - i = cpu->instruction; - c=0; - start = cpu->R[REG_POS(i,16)]; - oldmode = armcpu_switchMode(cpu, SYS); - - for(b=0; b<16; ++b) - { - if(BIT_N(i, 15-b)) - { - start -= 4; - WRITE32(cpu->mem_if->data, start, cpu->R[15-b]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(start>>24)&0xF]; - } - } - - armcpu_switchMode(cpu, oldmode); - return c + 1; -} - -static u32 FASTCALL OP_STMIA2_W(armcpu_t *cpu) -{ - u32 i, c, b; - u32 start; - u32 oldmode; - - if(cpu->CPSR.bits.mode==USR) - return 2; - - i = cpu->instruction; - c=0; - start = cpu->R[REG_POS(i,16)]; - oldmode = armcpu_switchMode(cpu, SYS); - - //execute = false; - LOG("Untested opcode: OP_STMIA2_W"); - - for(b=0; b<16; ++b) - { - if(BIT_N(i, b)) - { - WRITE32(cpu->mem_if->data, start, cpu->R[b]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(start>>24)&0xF]; - start += 4; - } - } - - cpu->R[REG_POS(i,16)] = start; - - armcpu_switchMode(cpu, oldmode); - return c + 1; -} - -static u32 FASTCALL OP_STMIB2_W(armcpu_t *cpu) -{ - u32 i, c, b; - u32 start; - u32 oldmode; - - if(cpu->CPSR.bits.mode==USR) - return 2; - i = cpu->instruction; - c=0; - start = cpu->R[REG_POS(i,16)]; - oldmode = armcpu_switchMode(cpu, SYS); - - for(b=0; b<16; ++b) - { - if(BIT_N(i, b)) - { - start += 4; - WRITE32(cpu->mem_if->data, start, cpu->R[b]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(start>>24)&0xF]; - } - } - armcpu_switchMode(cpu, oldmode); - cpu->R[REG_POS(i,16)] = start; - - return c + 1; -} - -static u32 FASTCALL OP_STMDA2_W(armcpu_t *cpu) -{ - u32 i, c, b; - u32 start; - u32 oldmode; - - if(cpu->CPSR.bits.mode==USR) - return 2; - - i = cpu->instruction; - c = 0; - start = cpu->R[REG_POS(i,16)]; - oldmode = armcpu_switchMode(cpu, SYS); - //execute = false; - LOG("Untested opcode: OP_STMDA2_W"); - - for(b=0; b<16; ++b) - { - if(BIT_N(i, 15-b)) - { - WRITE32(cpu->mem_if->data, start, cpu->R[15-b]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(start>>24)&0xF]; - start -= 4; - } - } - - cpu->R[REG_POS(i,16)] = start; - - armcpu_switchMode(cpu, oldmode); - return c + 1; -} - -static u32 FASTCALL OP_STMDB2_W(armcpu_t *cpu) -{ - u32 i, c, b; - u32 start; - u32 oldmode; - - if(cpu->CPSR.bits.mode==USR) - return 2; - - i = cpu->instruction; - c = 0; - - start = cpu->R[REG_POS(i,16)]; - oldmode = armcpu_switchMode(cpu, SYS); - - //execute = false; - LOG("Untested opcode: OP_STMDB2_W"); - - for(b=0; b<16; ++b) - { - if(BIT_N(i, 15-b)) - { - start -= 4; - WRITE32(cpu->mem_if->data, start, cpu->R[15-b]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(start>>24)&0xF]; - } - } - - cpu->R[REG_POS(i,16)] = start; +// ----------------------------------------------------------------------------- +// LDRD / STRD +// ----------------------------------------------------------------------------- - armcpu_switchMode(cpu, oldmode); - return c + 1; -} - -/* - * - * The Enhanced DSP Extension LDRD and STRD instructions. - * - */ -static u32 FASTCALL -OP_LDRD_STRD_POST_INDEX( armcpu_t *cpu) { - u32 i = cpu->instruction; - u32 Rd_num = REG_POS( i, 12); - u32 addr = cpu->R[REG_POS(i,16)]; - u32 index; +TEMPLATE static uint32_t FASTCALL OP_LDRD_STRD_POST_INDEX(uint32_t i) +{ + uint32_t Rd_num = REG_POS(i, 12); + uint32_t addr = cpu->R[REG_POS(i, 16)]; + uint32_t index; - /* I bit - immediate or register */ - if ( BIT22(i)) - index = IMM_OFF; - else - index = cpu->R[REG_POS(i,0)]; + //fprintf(stderr, "%s POST\n", BIT5(i)?"STRD":"LDRD"); + /* I bit - immediate or register */ + if (BIT22(i)) + index = IMM_OFF; + else + index = cpu->R[REG_POS(i, 0)]; - /* U bit - add or subtract */ - if ( BIT23(i)) - cpu->R[REG_POS(i,16)] += index; - else - cpu->R[REG_POS(i,16)] -= index; + // U bit - add or subtract + if (BIT23(i)) + cpu->R[REG_POS(i, 16)] += index; + else + cpu->R[REG_POS(i, 16)] -= index; - if ( !(Rd_num & 0x1)) { - /* Store/Load */ - if ( BIT5(i)) { - WRITE32(cpu->mem_if->data, addr, cpu->R[Rd_num]); - WRITE32(cpu->mem_if->data, addr + 4, cpu->R[Rd_num + 1]); - } - else { - cpu->R[Rd_num] = READ32(cpu->mem_if->data, addr); - cpu->R[Rd_num + 1] = READ32(cpu->mem_if->data, addr + 4); - } - } + uint32_t c = 0; + if (!(Rd_num & 0x1)) + { + // Store/Load + if (BIT5(i)) + { + WRITE32(cpu->mem_if->data, addr, cpu->R[Rd_num]); + WRITE32(cpu->mem_if->data, addr + 4, cpu->R[Rd_num + 1]); + c += MMU_memAccessCycles(addr); + c += MMU_memAccessCycles(addr + 4); + } + else + { + cpu->R[Rd_num] = READ32(cpu->mem_if->data, addr); + cpu->R[Rd_num + 1] = READ32(cpu->mem_if->data, addr + 4); + c += MMU_memAccessCycles(addr); + c += MMU_memAccessCycles(addr + 4); + } + } - return 3 + (MMU.MMU_WAIT32[cpu->proc_ID][(addr>>24)&0xF] * 2); + return MMU_aluMemCycles(3, c); } -static u32 FASTCALL -OP_LDRD_STRD_OFFSET_PRE_INDEX( armcpu_t *cpu) { - u32 i = cpu->instruction; - u32 Rd_num = REG_POS( i, 12); - u32 addr = cpu->R[REG_POS(i,16)]; - u32 index; - - /* I bit - immediate or register */ - if ( BIT22(i)) - index = IMM_OFF; - else - index = cpu->R[REG_POS(i,0)]; - - /* U bit - add or subtract */ - if ( BIT23(i)) { - addr += index; +TEMPLATE static uint32_t FASTCALL OP_LDRD_STRD_OFFSET_PRE_INDEX(uint32_t i) +{ + uint32_t Rd_num = REG_POS(i, 12); + uint32_t addr = cpu->R[REG_POS(i, 16)]; + uint32_t index; - /* W bit - writeback */ - if ( BIT21(i)) - cpu->R[REG_POS(i,16)] = addr; - } - else { - addr -= index; + //fprintf(stderr, "%s PRE\n", BIT5(i)?"STRD":"LDRD"); + // I bit - immediate or register + if (BIT22(i)) + index = IMM_OFF; + else + index = cpu->R[REG_POS(i, 0)]; - /* W bit - writeback */ - if ( BIT21(i)) - cpu->R[REG_POS(i,16)] = addr; - } + // U bit - add or subtract + if (BIT23(i)) + addr += index; + else + addr -= index; - if ( !(Rd_num & 0x1)) { - /* Store/Load */ - if ( BIT5(i)) { - WRITE32(cpu->mem_if->data, addr, cpu->R[Rd_num]); - WRITE32(cpu->mem_if->data, addr + 4, cpu->R[Rd_num + 1]); - } - else { - cpu->R[Rd_num] = READ32(cpu->mem_if->data, addr); - cpu->R[Rd_num + 1] = READ32(cpu->mem_if->data, addr + 4); - } - } + uint32_t c = 0; + if (!(Rd_num & 0x1)) + { + // Store/Load + if (BIT5(i)) + { + WRITE32(cpu->mem_if->data, addr, cpu->R[Rd_num]); + WRITE32(cpu->mem_if->data, addr + 4, cpu->R[Rd_num + 1]); + c += MMU_memAccessCycles(addr); + c += MMU_memAccessCycles(addr + 4); + // W bit - writeback + if (BIT21(i)) + cpu->R[REG_POS(i, 16)] = addr; + } + else + { + // W bit - writeback + if (BIT21(i)) + cpu->R[REG_POS(i, 16)] = addr; + cpu->R[Rd_num] = READ32(cpu->mem_if->data, addr); + cpu->R[Rd_num + 1] = READ32(cpu->mem_if->data, addr + 4); + c += MMU_memAccessCycles(addr); + c += MMU_memAccessCycles(addr + 4); + } + } - return 3 + (MMU.MMU_WAIT32[cpu->proc_ID][(addr>>24)&0xF] * 2); + return MMU_aluMemCycles(3, c); } +// ----------------------------------------------------------------------------- +// STC +// the NDS has no coproc that responses to a STC, no feedback is given to the arm +// ----------------------------------------------------------------------------- - -//---------------------STC---------------------------------- - -static u32 FASTCALL OP_STC_P_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STC_P_IMM_OFF(uint32_t) { - { - /* the NDS has no coproc that responses to a STC, no feedback is given to the arm */ - return 2; - } + //INFO("OP_STC_P_IMM_OFF\n"); + return TRAPUNDEF(cpu); } -static u32 FASTCALL OP_STC_M_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STC_M_IMM_OFF(uint32_t) { - { - /* the NDS has no coproc that responses to a STC, no feedback is given to the arm */ - return 2; - } + //INFO("OP_STC_M_IMM_OFF\n"); + return TRAPUNDEF(cpu); } -static u32 FASTCALL OP_STC_P_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STC_P_PREIND(uint32_t) { - { - /* the NDS has no coproc that responses to a STC, no feedback is given to the arm */ - return 2; - } + //INFO("OP_STC_P_PREIND\n"); + return TRAPUNDEF(cpu); } -static u32 FASTCALL OP_STC_M_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STC_M_PREIND(uint32_t) { - { - /* the NDS has no coproc that responses to a STC, no feedback is given to the arm */ - return 2; - } + //INFO("OP_STC_M_PREIND\n"); + return TRAPUNDEF(cpu); } -static u32 FASTCALL OP_STC_P_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STC_P_POSTIND(uint32_t) { - { - /* the NDS has no coproc that responses to a STC, no feedback is given to the arm */ - return 2; - } + //INFO("OP_STC_P_POSTIND: cp_num %i\n", (i>>8)&0x0F); + return TRAPUNDEF(cpu); } -static u32 FASTCALL OP_STC_M_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STC_M_POSTIND(uint32_t) { - { - /* the NDS has no coproc that responses to a STC, no feedback is given to the arm */ - return 2; - } + //INFO("OP_STC_M_POSTIND\n"); + return TRAPUNDEF(cpu); } -static u32 FASTCALL OP_STC_OPTION(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STC_OPTION(uint32_t) { - { - /* the NDS has no coproc that responses to a STC, no feedback is given to the arm */ - return 2; - } + //INFO("OP_STC_OPTION\n"); + return TRAPUNDEF(cpu); } -//---------------------LDC---------------------------------- +// ----------------------------------------------------------------------------- +// LDC +// the NDS has no coproc that responses to a LDC, no feedback is given to the arm +// ----------------------------------------------------------------------------- -static u32 FASTCALL OP_LDC_P_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDC_P_IMM_OFF(uint32_t) { - { - /* the NDS has no coproc that responses to a LDC, no feedback is given to the arm */ - return 2; - } + //INFO("OP_LDC_P_IMM_OFF\n"); + return TRAPUNDEF(cpu); } -static u32 FASTCALL OP_LDC_M_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDC_M_IMM_OFF(uint32_t) { - { - /* the NDS has no coproc that responses to a LDC, no feedback is given to the arm */ - return 2; - } + //INFO("OP_LDC_M_IMM_OFF\n"); + return TRAPUNDEF(cpu); } -static u32 FASTCALL OP_LDC_P_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDC_P_PREIND(uint32_t) { - { - /* the NDS has no coproc that responses to a LDC, no feedback is given to the arm */ - return 2; - } + //INFO("OP_LDC_P_PREIND\n"); + return TRAPUNDEF(cpu); } -static u32 FASTCALL OP_LDC_M_PREIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDC_M_PREIND(uint32_t) { - { - /* the NDS has no coproc that responses to a LDC, no feedback is given to the arm */ - return 2; - } + //INFO("OP_LDC_M_PREIND\n"); + return TRAPUNDEF(cpu); } -static u32 FASTCALL OP_LDC_P_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDC_P_POSTIND(uint32_t) { - { - /* the NDS has no coproc that responses to a LDC, no feedback is given to the arm */ - return 2; - } + //INFO("OP_LDC_P_POSTIND\n"); + return TRAPUNDEF(cpu); } -static u32 FASTCALL OP_LDC_M_POSTIND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDC_M_POSTIND(uint32_t) { - { - /* the NDS has no coproc that responses to a LDC, no feedback is given to the arm */ - return 2; - } + //INFO("OP_LDC_M_POSTIND\n"); + return TRAPUNDEF(cpu); } -static u32 FASTCALL OP_LDC_OPTION(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDC_OPTION(uint32_t) { - { - /* the NDS has no coproc that responses to a LDC, no feedback is given to the arm */ - return 2; - } + //INFO("OP_LDC_OPTION\n"); + return TRAPUNDEF(cpu); } -//----------------MCR----------------------- +// ----------------------------------------------------------------------------- +// MCR / MRC +// ----------------------------------------------------------------------------- -static u32 FASTCALL OP_MCR(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MCR(uint32_t i) { - u32 i = cpu->instruction; - u32 cpnum = REG_POS(i, 8); + uint32_t cpnum = REG_POS(i, 8); + + if (cpnum != 15) + return 2; - if(!cpu->coproc[cpnum]) - { - execute = false; - return 2; - } + cp15.moveARM2CP(cpu->R[REG_POS(i, 12)], REG_POS(i, 16), REG_POS(i, 0), (i >> 21) & 0x7, (i >> 5) & 0x7); - armcp15_moveARM2CP((armcp15_t*)cpu->coproc[cpnum], cpu->R[REG_POS(i, 12)], REG_POS(i, 16), REG_POS(i, 0), (i>>21)&7, (i>>5)&7); - //cpu->coproc[cpnum]->moveARM2CP(cpu->R[REG_POS(i, 12)], REG_POS(i, 16), REG_POS(i, 0), (i>>21)&7, (i>>5)&7); - return 2; + return 2; } -//----------------MRC----------------------- - -static u32 FASTCALL OP_MRC(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MRC(uint32_t i) { - u32 i = cpu->instruction; - u32 cpnum = REG_POS(i, 8); + //if (PROCNUM != 0) return 1; - if(!cpu->coproc[cpnum]) - { - execute = false; - return 2; - } + uint32_t cpnum = REG_POS(i, 8); - armcp15_moveCP2ARM((armcp15_t*)cpu->coproc[cpnum], &cpu->R[REG_POS(i, 12)], REG_POS(i, 16), REG_POS(i, 0), (i>>21)&7, (i>>5)&7); - //cpu->coproc[cpnum]->moveCP2ARM(&cpu->R[REG_POS(i, 12)], REG_POS(i, 16), REG_POS(i, 0), (i>>21)&7, (i>>5)&7); - return 4; + if (cpnum != 15) + return 2; + + // ARM REF: + //data = value from Coprocessor[cp_num] + //if Rd is R15 then + // N flag = data[31] + // Z flag = data[30] + // C flag = data[29] + // V flag = data[28] + //else /* Rd is not R15 */ + // Rd = data + + uint32_t data = 0; + cp15.moveCP2ARM(&data, REG_POS(i, 16), REG_POS(i, 0), (i >> 21) & 0x7, (i >> 5) & 0x7); + if (REG_POS(i, 12) == 15) + { + cpu->CPSR.bits.N = BIT31(data); + cpu->CPSR.bits.Z = BIT30(data); + cpu->CPSR.bits.C = BIT29(data); + cpu->CPSR.bits.V = BIT28(data); + } + else + cpu->R[REG_POS(i, 12)] = data; + //cpu->coproc[cpnum]->moveCP2ARM(&cpu->R[REG_POS(i, 12)], REG_POS(i, 16), REG_POS(i, 0), (i>>21)&7, (i>>5)&7); + return 4; } -//--------------SWI------------------------------- -static u32 FASTCALL OP_SWI(armcpu_t *cpu) +// ----------------------------------------------------------------------------- +// SWI +// ----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_SWI(uint32_t i) { - if (((cpu->intVector != 0) ^ (cpu->proc_ID == ARMCPU_ARM9))) - { - /* TODO (#1#): translocated SWI vectors */ - /* we use an irq thats not in the irq tab, as - it was replaced duie to a changed intVector */ - Status_Reg tmp = cpu->CPSR; - armcpu_switchMode(cpu, SVC); /* enter svc mode */ - cpu->R[14] = cpu->R[15] - 4; /* jump to swi Vector */ - cpu->SPSR = tmp; /* save old CPSR as new SPSR */ - cpu->CPSR.bits.T = 0; /* handle as ARM32 code */ - cpu->CPSR.bits.I = cpu->SPSR.bits.I; /* keep int disable flag */ - cpu->R[15] = cpu->intVector + 0x08; - cpu->next_instruction = cpu->R[15]; - return 4; - } - else - { - u32 swinum = (cpu->instruction>>16)&0x1F; - return cpu->swi_tab[swinum](cpu) + 3; - } + uint32_t swinum = (i >> 16) & 0xFF; + + // ideas-style debug prints (execute this SWI with the null terminated string address in R0) + if (swinum == 0xFC) + return 0; + + // if the user has changed the intVector to point away from the nds bioses, + // then it doesn't really make any sense to use the builtin SWI's since + // the bios ones aren't getting called anyway + bool bypassBuiltinSWI = (cpu->intVector == 0x00000000 && !PROCNUM) || (cpu->intVector == 0xFFFF0000 && PROCNUM == 1); + + if (cpu->swi_tab && !bypassBuiltinSWI) + { + swinum &= 0x1F; + //fprintf(stderr, "%d ARM SWI %d \n",PROCNUM,swinum); + return cpu->swi_tab[swinum]() + 3; + } + else + { + /* TODO (#1#): translocated SWI vectors */ + /* we use an irq thats not in the irq tab, as + it was replaced duie to a changed intVector */ + Status_Reg tmp = cpu->CPSR; + armcpu_switchMode(cpu, SVC); /* enter svc mode */ + cpu->R[14] = cpu->next_instruction; + cpu->SPSR = tmp; /* save old CPSR as new SPSR */ + cpu->CPSR.bits.T = 0; /* handle as ARM32 code */ + cpu->CPSR.bits.I = 1; + cpu->changeCPSR(); + cpu->R[15] = cpu->intVector + 0x08; + cpu->next_instruction = cpu->R[15]; + return 3; + } } -//----------------BKPT------------------------- -static u32 FASTCALL OP_BKPT(armcpu_t *cpu) -{ - execute = false; - return 4; +// ----------------------------------------------------------------------------- +// BKPT +// ----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_BKPT(uint32_t /*i*/) +{ + /* ARM-ref + if (not overridden by debug hardware) + R14_abt = address of BKPT instruction + 4 + SPSR_abt = CPSR + CPSR[4:0] = 0b10111 // Enter Abort mode + CPSR[5] = 0 // Execute in ARM state + // CPSR[6] is unchanged + CPSR[7] = 1 // Disable normal interrupts + CPSR[8] = 1 // Disable imprecise aborts - v6 only + CPSR[9] = CP15_reg1_EEbit + if high vectors configured then + PC = 0xFFFF000C + else + PC = 0x0000000C + */ + + /* + static uint32_t last_bkpt = 0xFFFFFFFF; + if(i != last_bkpt) + fprintf(stderr, "ARM OP_BKPT triggered\n"); + last_bkpt = i; + + //this is not 100% correctly emulated, but it does the job + cpu->next_instruction = cpu->instruct_adr; + return 4; + */ + + fprintf(stderr, "ARM OP_BKPT triggered\n"); + Status_Reg tmp = cpu->CPSR; + armcpu_switchMode(cpu, ABT); // enter abt mode + cpu->R[14] = cpu->instruct_adr + 4; + cpu->SPSR = tmp; // save old CPSR as new SPSR + cpu->CPSR.bits.T = 0; // handle as ARM32 code + cpu->CPSR.bits.I = 1; + cpu->changeCPSR(); + cpu->R[15] = cpu->intVector + 0x0C; + cpu->next_instruction = cpu->R[15]; + return 4; } -//----------------CDP----------------------- +// ----------------------------------------------------------------------------- +// CDP +// ----------------------------------------------------------------------------- -static u32 FASTCALL OP_CDP(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CDP(uint32_t) { - execute = false; - return 4; + //INFO("Stopped (OP_CDP) \n"); + return TRAPUNDEF(cpu); } -#define TYPE_RETOUR u32 -#define PARAMETRES armcpu_t *cpu -#define CALLTYPE FASTCALL -#define NOM_TAB arm_instructions_set +//----------------------------------------------------------------------------- +// The End +//----------------------------------------------------------------------------- +const OpFunc arm_instructions_set[2][4096] = +{ + { +#define TABDECL(x) x<0> +#include "instruction_tabdef.inc" +#undef TABDECL + }, + { +#define TABDECL(x) x<1> #include "instruction_tabdef.inc" +#undef TABDECL + } +}; diff -Nru audacious-plugins-4.1/src/xsf/desmume/armcpu.cc audacious-plugins-4.3.1/src/xsf/desmume/armcpu.cc --- audacious-plugins-4.1/src/xsf/desmume/armcpu.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/armcpu.cc 2023-04-29 20:17:32.000000000 +0000 @@ -1,187 +1,82 @@ -/* Copyright (C) 2006 yopyop - yopyop156@ifrance.com - yopyop156.ifrance.com - - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +/* + Copyright (C) 2006 yopyop + Copyright (C) 2009-2012 DeSmuME team + + This file 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 file 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 the this software. If not, see . */ -#include "arm_instructions.h" -#include "thumb_instructions.h" +#include +#include +#include +#include +#include "types.h" +#include "instructions.h" #include "cp15.h" #include "bios.h" -#include -#include - -const unsigned char arm_cond_table[16*16] = { - /* N=0, Z=0, C=0, V=0 */ - 0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF, - 0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x20, - /* N=0, Z=0, C=0, V=1 */ - 0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00, - 0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x20, - /* N=0, Z=0, C=1, V=0 */ - 0x00,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF, - 0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x20, - /* N=0, Z=0, C=1, V=1 */ - 0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00, - 0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x20, - /* N=0, Z=1, C=0, V=0 */ - 0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF, - 0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x20, - /* N=0, Z=1, C=0, V=1 */ - 0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00, - 0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x20, - /* N=0, Z=1, C=1, V=0 */ - 0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF, - 0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x20, - /* N=0, Z=1, C=1, V=1 */ - 0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0x00, - 0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x20, - /* N=1, Z=0, C=0, V=0 */ - 0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF, - 0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x20, - /* N=1, Z=0, C=0, V=1 */ - 0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00, - 0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x20, - /* N=1, Z=0, C=1, V=0 */ - 0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF, - 0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x20, - /* N=1, Z=0, C=1, V=1 */ - 0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00, - 0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x20, - /* N=1, Z=1, C=0, V=0 */ - 0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF, - 0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x20, - /* N=1, Z=1, C=0, V=1 */ - 0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00, - 0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x20, - /* N=1, Z=1, C=1, V=0 */ - 0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF, - 0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x20, - /* N=1, Z=1, C=1, V=1 */ - 0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00, - 0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x20, -}; - -armcpu_t NDS_ARM7; -armcpu_t NDS_ARM9; - -#define SWAP(a, b, c) do \ - { \ - c=a; \ - a=b; \ - b=c; \ - } \ - while(0) - -#ifdef GDB_STUB - -#define STALLED_CYCLE_COUNT 10 - -static void -stall_cpu( void *instance) { - armcpu_t *armcpu = (armcpu_t *)instance; - - armcpu->stalled = 1; -} - -static void -unstall_cpu( void *instance) { - armcpu_t *armcpu = (armcpu_t *)instance; - - armcpu->stalled = 0; -} +#include "NDSSystem.h" +#include "MMU_timing.h" +#ifdef HAVE_LUA +#include "lua-engine.h" +#endif -static void -install_post_exec_fn( void *instance, - void (*ex_fn)( void *, u32 adr, int thumb), - void *fn_data) { - armcpu_t *armcpu = (armcpu_t *)instance; +template static uint32_t armcpu_prefetch(); - armcpu->post_ex_fn = ex_fn; - armcpu->post_ex_fn_data = fn_data; +static inline uint32_t armcpu_prefetch(armcpu_t *armcpu) +{ + if (!armcpu->proc_ID) + return armcpu_prefetch<0>(); + else + return armcpu_prefetch<1>(); } -static void -remove_post_exec_fn( void *instance) { - armcpu_t *armcpu = (armcpu_t *)instance; - - armcpu->post_ex_fn = nullptr; -} -#endif +armcpu_t NDS_ARM7; +armcpu_t NDS_ARM9; -#ifdef GDB_STUB -int armcpu_new( armcpu_t *armcpu, u32 id, - struct armcpu_memory_iface *mem_if, - struct armcpu_ctrl_iface **ctrl_iface_ret) -#else -int armcpu_new( armcpu_t *armcpu, u32 id) -#endif +int armcpu_new(armcpu_t *armcpu, uint32_t id) { armcpu->proc_ID = id; - if(id==0) - armcpu->swi_tab = ARM9_swi_tab; - else - armcpu->swi_tab = ARM7_swi_tab; - -#ifdef GDB_STUB - armcpu->mem_if = mem_if; - - /* populate the control interface */ - armcpu->ctrl_iface.stall = stall_cpu; - armcpu->ctrl_iface.unstall = unstall_cpu; - armcpu->ctrl_iface.read_reg = read_cpu_reg; - armcpu->ctrl_iface.set_reg = set_cpu_reg; - armcpu->ctrl_iface.install_post_ex_fn = install_post_exec_fn; - armcpu->ctrl_iface.remove_post_ex_fn = remove_post_exec_fn; - armcpu->ctrl_iface.data = armcpu; - - *ctrl_iface_ret = &armcpu->ctrl_iface; - armcpu->stalled = 0; - armcpu->post_ex_fn = nullptr; -#endif armcpu_init(armcpu, 0); return 0; } -void armcpu_init(armcpu_t *armcpu, u32 adr) +// call this whenever CPSR is changed (other than CNVZQ or T flags); interrupts may need to be unleashed +void armcpu_t::changeCPSR() { - u32 i; - - armcpu->LDTBit = (armcpu->proc_ID==0); //Si ARM9 utiliser le syte v5 pour le load - armcpu->intVector = 0xFFFF0000 * (armcpu->proc_ID==0); - armcpu->waitIRQ = false; - armcpu->wirq = false; + // but all it does is give them a chance to unleash by forcing an immediate reschedule + // TODO - we could actually set CPSR through here and look for a change in the I bit + // that would be a little optimization as well as a safety measure if we prevented setting CPSR directly + NDS_Reschedule(); +} -#ifdef GDB_STUB - armcpu->irq_flag = 0; +void armcpu_init(armcpu_t *armcpu, uint32_t adr) +{ +#if defined(_M_X64) || defined(__x86_64__) + memcpy(&armcpu->cond_table[0], &arm_cond_table[0], sizeof(arm_cond_table)); #endif - if(armcpu->coproc[15]) free(armcpu->coproc[15]); + armcpu->LDTBit = !armcpu->proc_ID; // Si ARM9 utiliser le syte v5 pour le load + armcpu->intVector = 0xFFFF0000 * !armcpu->proc_ID; + armcpu->waitIRQ = false; + armcpu->halt_IE_and_IF = false; + armcpu->intrWaitARM_state = 0; - for(i = 0; i < 15; ++i) - { + for (int i = 0; i < 16; ++i) armcpu->R[i] = 0; - armcpu->coproc[i] = nullptr; - } armcpu->CPSR.val = armcpu->SPSR.val = SYS; @@ -194,294 +89,272 @@ armcpu->SPSR_svc.val = armcpu->SPSR_abt.val = armcpu->SPSR_und.val = armcpu->SPSR_irq.val = armcpu->SPSR_fiq.val = 0; -#ifdef GDB_STUB - armcpu->instruct_adr = adr; - armcpu->R[15] = adr + 8; -#else - armcpu->R[15] = adr; -#endif - armcpu->next_instruction = adr; - armcpu->coproc[15] = (armcp_t*)armcp15_new(armcpu); - -#ifndef GDB_STUB armcpu_prefetch(armcpu); -#endif } -u32 armcpu_switchMode(armcpu_t *armcpu, u8 mode) +uint32_t armcpu_switchMode(armcpu_t *armcpu, uint8_t mode) { - u32 oldmode = armcpu->CPSR.bits.mode; + uint32_t oldmode = armcpu->CPSR.bits.mode; - switch(oldmode) + switch (oldmode) { - case USR : - case SYS : + case USR: + case SYS: armcpu->R13_usr = armcpu->R[13]; armcpu->R14_usr = armcpu->R[14]; break; - - case FIQ : - { - u32 tmp; - SWAP(armcpu->R[8], armcpu->R8_fiq, tmp); - SWAP(armcpu->R[9], armcpu->R9_fiq, tmp); - SWAP(armcpu->R[10], armcpu->R10_fiq, tmp); - SWAP(armcpu->R[11], armcpu->R11_fiq, tmp); - SWAP(armcpu->R[12], armcpu->R12_fiq, tmp); - armcpu->R13_fiq = armcpu->R[13]; - armcpu->R14_fiq = armcpu->R[14]; - armcpu->SPSR_fiq = armcpu->SPSR; - break; - } - case IRQ : + case FIQ: + std::swap(armcpu->R[8], armcpu->R8_fiq); + std::swap(armcpu->R[9], armcpu->R9_fiq); + std::swap(armcpu->R[10], armcpu->R10_fiq); + std::swap(armcpu->R[11], armcpu->R11_fiq); + std::swap(armcpu->R[12], armcpu->R12_fiq); + armcpu->R13_fiq = armcpu->R[13]; + armcpu->R14_fiq = armcpu->R[14]; + armcpu->SPSR_fiq = armcpu->SPSR; + break; + case IRQ: armcpu->R13_irq = armcpu->R[13]; armcpu->R14_irq = armcpu->R[14]; armcpu->SPSR_irq = armcpu->SPSR; break; - - case SVC : + case SVC: armcpu->R13_svc = armcpu->R[13]; armcpu->R14_svc = armcpu->R[14]; armcpu->SPSR_svc = armcpu->SPSR; break; - - case ABT : + case ABT: armcpu->R13_abt = armcpu->R[13]; armcpu->R14_abt = armcpu->R[14]; armcpu->SPSR_abt = armcpu->SPSR; break; - - case UND : + case UND: armcpu->R13_und = armcpu->R[13]; armcpu->R14_und = armcpu->R[14]; armcpu->SPSR_und = armcpu->SPSR; break; - default : - break; - } - - switch(mode) - { - case USR : - case SYS : - armcpu->R[13] = armcpu->R13_usr; - armcpu->R[14] = armcpu->R14_usr; - //SPSR = CPSR; - break; - - case FIQ : - { - u32 tmp; - SWAP(armcpu->R[8], armcpu->R8_fiq, tmp); - SWAP(armcpu->R[9], armcpu->R9_fiq, tmp); - SWAP(armcpu->R[10], armcpu->R10_fiq, tmp); - SWAP(armcpu->R[11], armcpu->R11_fiq, tmp); - SWAP(armcpu->R[12], armcpu->R12_fiq, tmp); - armcpu->R[13] = armcpu->R13_fiq; - armcpu->R[14] = armcpu->R14_fiq; - armcpu->SPSR = armcpu->SPSR_fiq; - break; - } - - case IRQ : - armcpu->R[13] = armcpu->R13_irq; - armcpu->R[14] = armcpu->R14_irq; - armcpu->SPSR = armcpu->SPSR_irq; - break; - - case SVC : - armcpu->R[13] = armcpu->R13_svc; - armcpu->R[14] = armcpu->R14_svc; - armcpu->SPSR = armcpu->SPSR_svc; - break; - - case ABT : - armcpu->R[13] = armcpu->R13_abt; - armcpu->R[14] = armcpu->R14_abt; - armcpu->SPSR = armcpu->SPSR_abt; - break; - - case UND : - armcpu->R[13] = armcpu->R13_und; - armcpu->R[14] = armcpu->R14_und; - armcpu->SPSR = armcpu->SPSR_und; - break; + default: + fprintf(stderr, "switchMode: WRONG mode %02X\n",mode); + } - default : - break; + switch (mode) + { + case USR: + case SYS: + armcpu->R[13] = armcpu->R13_usr; + armcpu->R[14] = armcpu->R14_usr; + //SPSR = CPSR; + break; + case FIQ: + std::swap(armcpu->R[8], armcpu->R8_fiq); + std::swap(armcpu->R[9], armcpu->R9_fiq); + std::swap(armcpu->R[10], armcpu->R10_fiq); + std::swap(armcpu->R[11], armcpu->R11_fiq); + std::swap(armcpu->R[12], armcpu->R12_fiq); + armcpu->R[13] = armcpu->R13_fiq; + armcpu->R[14] = armcpu->R14_fiq; + armcpu->SPSR = armcpu->SPSR_fiq; + break; + case IRQ: + armcpu->R[13] = armcpu->R13_irq; + armcpu->R[14] = armcpu->R14_irq; + armcpu->SPSR = armcpu->SPSR_irq; + break; + case SVC: + armcpu->R[13] = armcpu->R13_svc; + armcpu->R[14] = armcpu->R14_svc; + armcpu->SPSR = armcpu->SPSR_svc; + break; + case ABT: + armcpu->R[13] = armcpu->R13_abt; + armcpu->R[14] = armcpu->R14_abt; + armcpu->SPSR = armcpu->SPSR_abt; + break; + case UND: + armcpu->R[13] = armcpu->R13_und; + armcpu->R[14] = armcpu->R14_und; + armcpu->SPSR = armcpu->SPSR_und; + break; + default: + break; } armcpu->CPSR.bits.mode = mode & 0x1F; + armcpu->changeCPSR(); return oldmode; } -u32 armcpu_prefetch(armcpu_t *armcpu) +uint32_t armcpu_Wait4IRQ(armcpu_t *cpu) { -#ifdef GDB_STUB - u32 temp_instruction; -#endif + cpu->waitIRQ = true; + cpu->halt_IE_and_IF = true; + return 1; +} - if(armcpu->CPSR.bits.T == 0) - { -#ifdef GDB_STUB - temp_instruction = - armcpu->mem_if->prefetch32( armcpu->mem_if->data, - armcpu->next_instruction); - - if ( !armcpu->stalled) { - armcpu->instruction = temp_instruction; - armcpu->instruct_adr = armcpu->next_instruction; - armcpu->next_instruction += 4; - armcpu->R[15] = armcpu->next_instruction + 4; - } -#else - armcpu->instruction = MMU_read32_acl(armcpu->proc_ID, armcpu->next_instruction,CP15_ACCESS_EXECUTE); +template static inline uint32_t armcpu_prefetch() +{ + armcpu_t *const armcpu = &ARMPROC; + uint32_t curInstruction = armcpu->next_instruction; - armcpu->instruct_adr = armcpu->next_instruction; - armcpu->next_instruction += 4; - armcpu->R[15] = armcpu->next_instruction + 4; -#endif + if (!armcpu->CPSR.bits.T) + { + curInstruction &= 0xFFFFFFFC; // please don't change this to 0x0FFFFFFC -- the NDS will happily run on 0xF******* addresses all day long + // please note that we must setup R[15] before reading the instruction since there is a protection + // which prevents PC > 0x3FFF from reading the bios region + armcpu->instruct_adr = curInstruction; + armcpu->next_instruction = curInstruction + 4; + armcpu->R[15] = curInstruction + 8; + armcpu->instruction = _MMU_read32(curInstruction); - return MMU.MMU_WAIT32[armcpu->proc_ID][(armcpu->instruct_adr>>24)&0xF]; + return MMU_codeFetchCycles(curInstruction); } + curInstruction &= 0xFFFFFFFE; // please don't change this to 0x0FFFFFFE -- the NDS will happily run on 0xF******* addresses all day long + // please note that we must setup R[15] before reading the instruction since there is a protection + // which prevents PC > 0x3FFF from reading the bios region + armcpu->instruct_adr = curInstruction; + armcpu->next_instruction = curInstruction + 2; + armcpu->R[15] = curInstruction + 4; + armcpu->instruction = _MMU_read16(curInstruction); -#ifdef GDB_STUB - temp_instruction = - armcpu->mem_if->prefetch16( armcpu->mem_if->data, - armcpu->next_instruction); - - if ( !armcpu->stalled) { - armcpu->instruction = temp_instruction; - armcpu->instruct_adr = armcpu->next_instruction; - armcpu->next_instruction = armcpu->next_instruction + 2; - armcpu->R[15] = armcpu->next_instruction + 2; + if (!PROCNUM) + { + // arm9 fetches 2 instructions at a time in thumb mode + if (!(curInstruction == armcpu->instruct_adr + 2 && (curInstruction & 2))) + return MMU_codeFetchCycles(curInstruction); + else + return 0; } -#else - armcpu->instruction = MMU_read16_acl(armcpu->proc_ID, armcpu->next_instruction,CP15_ACCESS_EXECUTE); - armcpu->instruct_adr = armcpu->next_instruction; - armcpu->next_instruction += 2; - armcpu->R[15] = armcpu->next_instruction + 2; -#endif - - return MMU.MMU_WAIT16[armcpu->proc_ID][(armcpu->instruct_adr>>24)&0xF]; + return MMU_codeFetchCycles(curInstruction); } - -BOOL armcpu_irqExeption(armcpu_t *armcpu) +// TODO - merge with armcpu_irqException? +// http://www.ethernut.de/en/documents/arm-exceptions.html +// http://docs.google.com/viewer?a=v&q=cache:V4ht1YkxprMJ:www.cs.nctu.edu.tw/~wjtsai/EmbeddedSystemDesign/Ch3-1.pdf+arm+exception+handling&hl=en&gl=us&pid=bl&srcid=ADGEEShx9VTHbUhWdDOrTVRzLkcCsVfJiijncNDkkgkrlJkLa7D0LCpO8fQ_hhU3DTcgZh9rcZWWQq4TYhhCovJ625h41M0ZUX3WGasyzWQFxYzDCB-VS6bsUmpoJnRxAc-bdkD0qmsu&sig=AHIEtbR9VHvDOCRmZFQDUVwy53iJDjoSPQ +void armcpu_exception(armcpu_t *cpu, uint32_t number) { - Status_Reg tmp; + Mode cpumode = USR; + switch (number) + { + case EXCEPTION_RESET: + cpumode = SVC; + break; + case EXCEPTION_UNDEFINED_INSTRUCTION: + cpumode = UND; + break; + case EXCEPTION_SWI: + cpumode = SVC; + break; + case EXCEPTION_PREFETCH_ABORT: + cpumode = ABT; + break; + case EXCEPTION_DATA_ABORT: + cpumode = ABT; + break; + case EXCEPTION_RESERVED_0x14: + execute = false; + break; + case EXCEPTION_IRQ: + cpumode = IRQ; + break; + case EXCEPTION_FAST_IRQ: + cpumode = FIQ; + } - if(armcpu->CPSR.bits.I) return false; + Status_Reg tmp = cpu->CPSR; + armcpu_switchMode(cpu, cpumode); // enter new mode + cpu->R[14] = cpu->next_instruction; + cpu->SPSR = tmp; // save old CPSR as new SPSR + cpu->CPSR.bits.T = 0; // handle as ARM32 code + cpu->CPSR.bits.I = 1; + cpu->changeCPSR(); + cpu->R[15] = cpu->intVector + number; + cpu->next_instruction = cpu->R[15]; + fprintf(stderr, "armcpu_exception!\n"); -#ifdef GDB_STUB - armcpu->irq_flag = 0; -#endif + // HOW DOES THIS WORTK WITHOUT A PREFETCH, LIKE IRQ BELOW? + // I REALLY WISH WE DIDNT PREFETCH BEFORE EXECUTING +} + +bool armcpu_irqException(armcpu_t *armcpu) +{ + Status_Reg tmp; tmp = armcpu->CPSR; armcpu_switchMode(armcpu, IRQ); -#ifdef GDB_STUB - armcpu->R[14] = armcpu->next_instruction + 4; -#else armcpu->R[14] = armcpu->instruct_adr + 4; -#endif armcpu->SPSR = tmp; armcpu->CPSR.bits.T = 0; armcpu->CPSR.bits.I = 1; armcpu->next_instruction = armcpu->intVector + 0x18; armcpu->waitIRQ = 0; -#ifndef GDB_STUB - armcpu->R[15] = armcpu->next_instruction + 8; + // must retain invariant of having next instruction to be executed prefetched + // (yucky) armcpu_prefetch(armcpu); -#endif return true; } -/* -static BOOL armcpu_prefetchExeption(armcpu_t *armcpu) -{ - Status_Reg tmp; - if(armcpu->CPSR.bits.I) return false; - tmp = armcpu->CPSR; - armcpu_switchMode(armcpu, ABT); - armcpu->R[14] = armcpu->next_instruction + 4; - armcpu->SPSR = tmp; - armcpu->CPSR.bits.T = 0; - armcpu->CPSR.bits.I = 1; - armcpu->next_instruction = armcpu->intVector + 0xC; - armcpu->R[15] = armcpu->next_instruction + 8; - armcpu->waitIRQ = 0; - return true; -} -*/ - -BOOL -armcpu_flagIrq( armcpu_t *armcpu) { - if(armcpu->CPSR.bits.I) return false; - - armcpu->waitIRQ = 0; - -#ifdef GDB_STUB - armcpu->irq_flag = 1; -#endif - return true; +uint32_t TRAPUNDEF(armcpu_t *cpu) +{ + if (!!cpu->intVector ^ (cpu->proc_ID == ARMCPU_ARM9)) + { + armcpu_exception(&NDS_ARM9, EXCEPTION_UNDEFINED_INSTRUCTION); + return 4; + } + else + { + execute = false; + return 4; + } } - -u32 armcpu_exec(armcpu_t *armcpu) +template uint32_t armcpu_exec() { - u32 c = 1; + // Usually, fetching and executing are processed parallelly. + // So this function stores the cycles of each process to + // the variables below, and returns appropriate cycle count. + uint32_t cFetch = 0; + uint32_t cExecute = 0; -#ifdef GDB_STUB - if ( armcpu->stalled) - return STALLED_CYCLE_COUNT; + // this assert is annoying. but sometimes it is handy. + //assert(ARMPROC.instruct_adr!=0x00000000); - /* check for interrupts */ - if ( armcpu->irq_flag) { - armcpu_irqExeption( armcpu); - } + //cFetch = armcpu_prefetch(&ARMPROC); - c = armcpu_prefetch(armcpu); + //fprintf(stderr, "%d: %08X\n",PROCNUM,ARMPROC.instruct_adr); - if ( armcpu->stalled) { - return c; - } -#endif - - if(armcpu->CPSR.bits.T == 0) + if (!ARMPROC.CPSR.bits.T) { -/* if((TEST_COND(CONDITION(armcpu->instruction), armcpu->CPSR)) || ((CONDITION(armcpu->instruction)==0xF)&&(CODE(armcpu->instruction)==0x5)))*/ - if((TEST_COND(CONDITION(armcpu->instruction), CODE(armcpu->instruction), armcpu->CPSR))) + if ( + CONDITION(ARMPROC.instruction) == 0x0E // fast path for unconditional instructions + || (TEST_COND(CONDITION(ARMPROC.instruction), CODE(ARMPROC.instruction), ARMPROC.CPSR)) // handles any condition + ) { - c += arm_instructions_set[INSTRUCTION_INDEX(armcpu->instruction)](armcpu); - } -#ifdef GDB_STUB - if ( armcpu->post_ex_fn != nullptr) { - /* call the external post execute function */ - armcpu->post_ex_fn( armcpu->post_ex_fn_data, - armcpu->instruct_adr, 0); - } -#else - c += armcpu_prefetch(armcpu); +#ifdef HAVE_LUA + CallRegisteredLuaMemHook(ARMPROC.instruct_adr, 4, ARMPROC.instruction, LUAMEMHOOK_EXEC); // should report even if condition=false? #endif - return c; + cExecute = arm_instructions_set[PROCNUM][INSTRUCTION_INDEX(ARMPROC.instruction)](ARMPROC.instruction); + } + else + cExecute = 1; // If condition=false: 1S cycle + cFetch = armcpu_prefetch(); + return MMU_fetchExecuteCycles(cExecute, cFetch); } - c += thumb_instructions_set[armcpu->instruction>>6](armcpu); - -#ifdef GDB_STUB - if ( armcpu->post_ex_fn != nullptr) { - /* call the external post execute function */ - armcpu->post_ex_fn( armcpu->post_ex_fn_data, armcpu->instruct_adr, 1); - } -#else - c += armcpu_prefetch(armcpu); +#ifdef HAVE_LUA + CallRegisteredLuaMemHook(ARMPROC.instruct_adr, 2, ARMPROC.instruction, LUAMEMHOOK_EXEC); #endif - return c; + cExecute = thumb_instructions_set[PROCNUM][ARMPROC.instruction>>6](ARMPROC.instruction); + + cFetch = armcpu_prefetch(); + return MMU_fetchExecuteCycles(cExecute, cFetch); } +// these templates needed to be instantiated manually +template uint32_t armcpu_exec<0>(); +template uint32_t armcpu_exec<1>(); diff -Nru audacious-plugins-4.1/src/xsf/desmume/armcpu.h audacious-plugins-4.3.1/src/xsf/desmume/armcpu.h --- audacious-plugins-4.1/src/xsf/desmume/armcpu.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/armcpu.h 2023-04-29 20:17:32.000000000 +0000 @@ -1,92 +1,125 @@ -/* Copyright (C) 2006 yopyop - yopyop156@ifrance.com - yopyop156.ifrance.com - - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +/* + Copyright (C) 2006 yopyop + Copyright (C) 2006-2012 DeSmuME team + + This file 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 file 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 the this software. If not, see . */ -#ifndef ARM_CPU -#define ARM_CPU +#pragma once #include "types.h" #include "bits.h" #include "MMU.h" +#include "instructions.h" -#define ARMCPU_ARM7 1 -#define ARMCPU_ARM9 0 +inline uint32_t CODE(uint32_t i) { return (i >> 25) & 0x7; } -#define CODE(i) (((i)>>25)&0X7) -#define OPCODE(i) (((i)>>21)&0xF) -#define SIGNEBIT(i) BIT_N(i,20) - -#define INSTRUCTION_INDEX(i) ((((i)>>16)&0xFF0)|(((i)>>4)&0xF)) - -#define ROR(i, j) ((((u32)(i))>>(j)) | (((u32)(i))<<(32-(j)))) - -#define UNSIGNED_OVERFLOW(a,b,c) ((BIT31(a)&BIT31(b)) | \ - ((BIT31(a)|BIT31(b))&BIT31(~c))) - -#define UNSIGNED_UNDERFLOW(a,b,c) ((BIT31(~a)&BIT31(b)) | \ - ((BIT31(~a)|BIT31(b))&BIT31(c))) - -#define SIGNED_OVERFLOW(a,b,c) ((BIT31(a)&BIT31(b)&BIT31(~c))|\ - (BIT31(~a)&BIT31(~(b))&BIT31(c))) - -#define SIGNED_UNDERFLOW(a,b,c) ((BIT31(a)&BIT31(~(b))&BIT31(~c))|\ - (BIT31(~a)&BIT31(b)&BIT31(c))) - -#define EQ 0x0 -#define NE 0x1 -#define CS 0x2 -#define CC 0x3 -#define MI 0x4 -#define PL 0x5 -#define VS 0x6 -#define VC 0x7 -#define HI 0x8 -#define LS 0x9 -#define GE 0xA -#define LT 0xB -#define GT 0xC -#define LE 0xD -#define AL 0xE +const uint32_t EXCEPTION_RESET = 0x00; +const uint32_t EXCEPTION_UNDEFINED_INSTRUCTION = 0x04; +const uint32_t EXCEPTION_SWI = 0x08; +const uint32_t EXCEPTION_PREFETCH_ABORT = 0x0C; +const uint32_t EXCEPTION_DATA_ABORT = 0x10; +const uint32_t EXCEPTION_RESERVED_0x14 = 0x14; +const uint32_t EXCEPTION_IRQ = 0x18; +const uint32_t EXCEPTION_FAST_IRQ = 0x1C; -/* -#define TEST_COND(cond, CPSR) (((cond)==AL) ||\ - (((cond)==EQ) && ( CPSR.bits.Z))||\ - (((cond)==NE) && (!CPSR.bits.Z))||\ - (((cond)==CS) && ( CPSR.bits.C))||\ - (((cond)==CC) && (!CPSR.bits.C))||\ - (((cond)==MI) && ( CPSR.bits.N))||\ - (((cond)==PL) && (!CPSR.bits.N))||\ - (((cond)==VS) && ( CPSR.bits.V))||\ - (((cond)==VC) && (!CPSR.bits.V))||\ - (((cond)==HI) && (CPSR.bits.C) && (!CPSR.bits.Z))||\ - (((cond)==LS) && ((CPSR.bits.Z) || (!CPSR.bits.C)))||\ - (((cond)==GE) && (CPSR.bits.N==CPSR.bits.V))||\ - (((cond)==LT) && (CPSR.bits.N!=CPSR.bits.V))||\ - (((cond)==GT) && (CPSR.bits.Z==0) && (CPSR.bits.N==CPSR.bits.V))||\ - (((cond)==LE) && ((CPSR.bits.Z) || (CPSR.bits.N!=CPSR.bits.V)))) -*/ +inline uint32_t INSTRUCTION_INDEX(uint32_t i) { return ((i >> 16) & 0xFF0) | ((i >> 4) & 0xF); } + +inline uint32_t ROR(uint32_t i, uint32_t j) { return (i >> j) | (i << (32 - j)); } + +template inline T UNSIGNED_OVERFLOW(T a, T b, T c) { return BIT31((a & b) | ((a | b) & ~c)); } + +template inline T UNSIGNED_UNDERFLOW(T a, T b, T c) { return BIT31((~a & b) | ((~a | b) & c)); } + +template inline T SIGNED_OVERFLOW(T a, T b, T c) { return BIT31((a & b & ~c) | (~a & ~b & c)); } + +template inline T SIGNED_UNDERFLOW(T a, T b, T c) { return BIT31((a & ~b & ~c) | (~a & b & c)); } + +// ============================= CPRS flags funcs +inline bool CarryFrom(int32_t left, int32_t right) +{ + uint32_t res = 0xFFFFFFFFU - static_cast(left); -extern const unsigned char arm_cond_table[16*16]; + return static_cast(right) > res; +} -#define TEST_COND(cond, inst, CPSR) ((arm_cond_table[((CPSR.val >> 24) & 0xf0)+(cond)] >> (inst)) & 1) +inline bool BorrowFrom(int32_t left, int32_t right) +{ + return static_cast(right) > static_cast(left); +} +inline bool OverflowFromADD(int32_t alu_out, int32_t left, int32_t right) +{ + return ((left >= 0 && right >= 0) || (left < 0 && right < 0)) && ((left < 0 && alu_out >= 0) || (left >= 0 && alu_out < 0)); +} + +inline bool OverflowFromSUB(int32_t alu_out, int32_t left, int32_t right) +{ + return ((left < 0 && right >= 0) || (left >= 0 && right < 0)) && ((left < 0 && alu_out >= 0) || (left >= 0 && alu_out < 0)); +} + +const uint8_t arm_cond_table[] = +{ + // N=0, Z=0, C=0, V=0 + 0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF, // 0x00 + 0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x20, // 0x00 + // N=0, Z=0, C=0, V=1 + 0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00, // 0x10 + 0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x20, + // N=0, Z=0, C=1, V=0 + 0x00,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF, // 0x20 + 0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x20, + // N=0, Z=0, C=1, V=1 + 0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00, // 0x30 + 0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x20, + // N=0, Z=1, C=0, V=0 + 0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF, // 0x40 + 0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x20, + // N=0, Z=1, C=0, V=1 + 0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00, // 0x50 + 0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x20, + // N=0, Z=1, C=1, V=0 + 0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF, // 0x60 + 0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x20, + // N=0, Z=1, C=1, V=1 + 0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0x00, // 0x70 + 0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x20, + // N=1, Z=0, C=0, V=0 + 0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF, // 0x80 + 0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x20, + // N=1, Z=0, C=0, V=1 + 0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00, // 0x90 + 0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x20, + // N=1, Z=0, C=1, V=0 + 0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF, // 0xA0 + 0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x20, + // N=1, Z=0, C=1, V=1 + 0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00, // 0xB0 + 0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x20, + // N=1, Z=1, C=0, V=0 + 0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF, // 0xC0 + 0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x20, + // N=1, Z=1, C=0, V=1 + 0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00, // 0xD0 + 0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x20, + // N=1, Z=1, C=1, V=0 + 0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF, // 0xE0 + 0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x20, + // N=1, Z=1, C=1, V=1 + 0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00, // 0xF0 + 0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x20 +}; enum Mode { @@ -104,7 +137,7 @@ { struct { - u32 N : 1, + uint32_t N : 1, Z : 1, C : 1, V : 1, @@ -113,16 +146,16 @@ I : 1, F : 1, T : 1, - mode : 5; + mode : 5; } bits; - u32 val; + uint32_t val; } Status_Reg; #else typedef union { struct { - u32 mode : 5, + uint32_t mode : 5, T : 1, F : 1, I : 1, @@ -133,147 +166,78 @@ Z : 1, N : 1; } bits; - u32 val; + uint32_t val; } Status_Reg; #endif -/** - * The control interface to a CPU - */ -struct armcpu_ctrl_iface { - /** stall the processor */ - void (*stall)( void *instance); - - /** unstall the processor */ - void (*unstall)( void *instance); - - /** read a register value */ - u32 (*read_reg)( void *instance, u32 reg_num); - - /** set a register value */ - void (*set_reg)( void *instance, u32 reg_num, u32 value); - - /** install the post execute function */ - void (*install_post_ex_fn)( void *instance, - void (*fn)( void *, u32 adr, int thumb), - void *fn_data); - - /** remove the post execute function */ - void (*remove_post_ex_fn)( void *instance); - - /** the private data passed to all interface functions */ - void *data; -}; - +inline uint8_t TEST_COND(uint32_t cond, uint32_t inst, Status_Reg CPSR) { return arm_cond_table[((CPSR.val >> 24) & 0xf0) | cond] & (1 << inst); } -typedef void* armcp_t; +typedef void *armcp_t; -typedef struct armcpu_t +struct armcpu_t { - u32 proc_ID; - u32 instruction; //4 - u32 instruct_adr; //8 - u32 next_instruction; //12 + uint32_t proc_ID; + uint32_t instruction; //4 + uint32_t instruct_adr; //8 + uint32_t next_instruction; //12 - u32 R[16]; //16 + uint32_t R[16]; //16 Status_Reg CPSR; //80 Status_Reg SPSR; - u32 R13_usr, R14_usr; - u32 R13_svc, R14_svc; - u32 R13_abt, R14_abt; - u32 R13_und, R14_und; - u32 R13_irq, R14_irq; - u32 R8_fiq, R9_fiq, R10_fiq, R11_fiq, R12_fiq, R13_fiq, R14_fiq; - Status_Reg SPSR_svc, SPSR_abt, SPSR_und, SPSR_irq, SPSR_fiq; + void changeCPSR(); - armcp_t *coproc[16]; + uint32_t R13_usr, R14_usr; + uint32_t R13_svc, R14_svc; + uint32_t R13_abt, R14_abt; + uint32_t R13_und, R14_und; + uint32_t R13_irq, R14_irq; + uint32_t R8_fiq, R9_fiq, R10_fiq, R11_fiq, R12_fiq, R13_fiq, R14_fiq; + Status_Reg SPSR_svc, SPSR_abt, SPSR_und, SPSR_irq, SPSR_fiq; - u32 intVector; - u8 LDTBit; //1 : ARMv5 style 0 : non ARMv5 - BOOL waitIRQ; - BOOL wIRQ; - BOOL wirq; + uint32_t intVector; + uint8_t LDTBit; // 1 : ARMv5 style 0 : non ARMv5 + bool waitIRQ; + bool halt_IE_and_IF; //the cpu is halted, waiting for IE&IF to signal something + uint8_t intrWaitARM_state; - u32 (* *swi_tab)(struct armcpu_t * cpu); + bool BIOS_loaded; -#ifdef GDB_STUB - /** there is a pending irq for the cpu */ - int irq_flag; + uint32_t (**swi_tab)(); - /** the post executed function (if installed) */ - void (*post_ex_fn)( void *, u32 adr, int thumb); + // flag indicating if the processor is stalled (for debugging) + int stalled; - /** data for the post executed function */ - void *post_ex_fn_data; +#if defined(_M_X64) || defined(__x86_64__) + uint8_t cond_table[16 * 16]; +#endif +}; +int armcpu_new(armcpu_t *armcpu, uint32_t id); +void armcpu_init(armcpu_t *armcpu, uint32_t adr); +uint32_t armcpu_switchMode(armcpu_t *armcpu, uint8_t mode); - /** flag indicating if the processor is stalled */ - int stalled; +bool armcpu_irqException(armcpu_t *armcpu); +void armcpu_exception(armcpu_t *cpu, uint32_t number); +uint32_t TRAPUNDEF(armcpu_t* cpu); +uint32_t armcpu_Wait4IRQ(armcpu_t *cpu); - /** the memory interface */ - struct armcpu_memory_iface *mem_if; +extern armcpu_t NDS_ARM7, NDS_ARM9; - /** the ctrl interface */ - struct armcpu_ctrl_iface ctrl_iface; -#endif -} armcpu_t; +template uint32_t armcpu_exec(); -#ifdef GDB_STUB -int armcpu_new( armcpu_t *armcpu, u32 id, struct armcpu_memory_iface *mem_if, - struct armcpu_ctrl_iface **ctrl_iface_ret); -#else -int armcpu_new( armcpu_t *armcpu, u32 id); -#endif -void armcpu_init(armcpu_t *armcpu, u32 adr); -u32 armcpu_switchMode(armcpu_t *armcpu, u8 mode); -u32 armcpu_prefetch(armcpu_t *armcpu); -u32 armcpu_exec(armcpu_t *armcpu); -BOOL armcpu_irqExeption(armcpu_t *armcpu); -//BOOL armcpu_prefetchExeption(armcpu_t *armcpu); -BOOL -armcpu_flagIrq( armcpu_t *armcpu); - -extern armcpu_t NDS_ARM7; -extern armcpu_t NDS_ARM9; - -static INLINE void NDS_makeARM9Int(u32 num) +inline void setIF(int PROCNUM, uint32_t flag) { - /* flag the interrupt request source */ - MMU.reg_IF[0] |= (1<. */ +#include #include "cp15.h" -#include #include "MMU.h" -#include "SPU.h" -#include "debug.h" - -extern BOOL execute; +#include "NDSSystem.h" -static u16 getsinetbl[] = { -0x0000, 0x0324, 0x0648, 0x096A, 0x0C8C, 0x0FAB, 0x12C8, 0x15E2, -0x18F9, 0x1C0B, 0x1F1A, 0x2223, 0x2528, 0x2826, 0x2B1F, 0x2E11, -0x30FB, 0x33DF, 0x36BA, 0x398C, 0x3C56, 0x3F17, 0x41CE, 0x447A, -0x471C, 0x49B4, 0x4C3F, 0x4EBF, 0x5133, 0x539B, 0x55F5, 0x5842, -0x5A82, 0x5CB3, 0x5ED7, 0x60EB, 0x62F1, 0x64E8, 0x66CF, 0x68A6, -0x6A6D, 0x6C23, 0x6DC9, 0x6F5E, 0x70E2, 0x7254, 0x73B5, 0x7504, -0x7641, 0x776B, 0x7884, 0x7989, 0x7A7C, 0x7B5C, 0x7C29, 0x7CE3, -0x7D89, 0x7E1D, 0x7E9C, 0x7F09, 0x7F61, 0x7FA6, 0x7FD8, 0x7FF5 -}; - -static u16 getpitchtbl[] = { -0x0000, 0x003B, 0x0076, 0x00B2, 0x00ED, 0x0128, 0x0164, 0x019F, -0x01DB, 0x0217, 0x0252, 0x028E, 0x02CA, 0x0305, 0x0341, 0x037D, -0x03B9, 0x03F5, 0x0431, 0x046E, 0x04AA, 0x04E6, 0x0522, 0x055F, -0x059B, 0x05D8, 0x0614, 0x0651, 0x068D, 0x06CA, 0x0707, 0x0743, -0x0780, 0x07BD, 0x07FA, 0x0837, 0x0874, 0x08B1, 0x08EF, 0x092C, -0x0969, 0x09A7, 0x09E4, 0x0A21, 0x0A5F, 0x0A9C, 0x0ADA, 0x0B18, -0x0B56, 0x0B93, 0x0BD1, 0x0C0F, 0x0C4D, 0x0C8B, 0x0CC9, 0x0D07, -0x0D45, 0x0D84, 0x0DC2, 0x0E00, 0x0E3F, 0x0E7D, 0x0EBC, 0x0EFA, -0x0F39, 0x0F78, 0x0FB6, 0x0FF5, 0x1034, 0x1073, 0x10B2, 0x10F1, -0x1130, 0x116F, 0x11AE, 0x11EE, 0x122D, 0x126C, 0x12AC, 0x12EB, -0x132B, 0x136B, 0x13AA, 0x13EA, 0x142A, 0x146A, 0x14A9, 0x14E9, -0x1529, 0x1569, 0x15AA, 0x15EA, 0x162A, 0x166A, 0x16AB, 0x16EB, -0x172C, 0x176C, 0x17AD, 0x17ED, 0x182E, 0x186F, 0x18B0, 0x18F0, -0x1931, 0x1972, 0x19B3, 0x19F5, 0x1A36, 0x1A77, 0x1AB8, 0x1AFA, -0x1B3B, 0x1B7D, 0x1BBE, 0x1C00, 0x1C41, 0x1C83, 0x1CC5, 0x1D07, -0x1D48, 0x1D8A, 0x1DCC, 0x1E0E, 0x1E51, 0x1E93, 0x1ED5, 0x1F17, -0x1F5A, 0x1F9C, 0x1FDF, 0x2021, 0x2064, 0x20A6, 0x20E9, 0x212C, -0x216F, 0x21B2, 0x21F5, 0x2238, 0x227B, 0x22BE, 0x2301, 0x2344, -0x2388, 0x23CB, 0x240E, 0x2452, 0x2496, 0x24D9, 0x251D, 0x2561, -0x25A4, 0x25E8, 0x262C, 0x2670, 0x26B4, 0x26F8, 0x273D, 0x2781, -0x27C5, 0x280A, 0x284E, 0x2892, 0x28D7, 0x291C, 0x2960, 0x29A5, -0x29EA, 0x2A2F, 0x2A74, 0x2AB9, 0x2AFE, 0x2B43, 0x2B88, 0x2BCD, -0x2C13, 0x2C58, 0x2C9D, 0x2CE3, 0x2D28, 0x2D6E, 0x2DB4, 0x2DF9, -0x2E3F, 0x2E85, 0x2ECB, 0x2F11, 0x2F57, 0x2F9D, 0x2FE3, 0x302A, -0x3070, 0x30B6, 0x30FD, 0x3143, 0x318A, 0x31D0, 0x3217, 0x325E, -0x32A5, 0x32EC, 0x3332, 0x3379, 0x33C1, 0x3408, 0x344F, 0x3496, -0x34DD, 0x3525, 0x356C, 0x35B4, 0x35FB, 0x3643, 0x368B, 0x36D3, -0x371A, 0x3762, 0x37AA, 0x37F2, 0x383A, 0x3883, 0x38CB, 0x3913, -0x395C, 0x39A4, 0x39ED, 0x3A35, 0x3A7E, 0x3AC6, 0x3B0F, 0x3B58, -0x3BA1, 0x3BEA, 0x3C33, 0x3C7C, 0x3CC5, 0x3D0E, 0x3D58, 0x3DA1, -0x3DEA, 0x3E34, 0x3E7D, 0x3EC7, 0x3F11, 0x3F5A, 0x3FA4, 0x3FEE, -0x4038, 0x4082, 0x40CC, 0x4116, 0x4161, 0x41AB, 0x41F5, 0x4240, -0x428A, 0x42D5, 0x431F, 0x436A, 0x43B5, 0x4400, 0x444B, 0x4495, -0x44E1, 0x452C, 0x4577, 0x45C2, 0x460D, 0x4659, 0x46A4, 0x46F0, -0x473B, 0x4787, 0x47D3, 0x481E, 0x486A, 0x48B6, 0x4902, 0x494E, -0x499A, 0x49E6, 0x4A33, 0x4A7F, 0x4ACB, 0x4B18, 0x4B64, 0x4BB1, -0x4BFE, 0x4C4A, 0x4C97, 0x4CE4, 0x4D31, 0x4D7E, 0x4DCB, 0x4E18, -0x4E66, 0x4EB3, 0x4F00, 0x4F4E, 0x4F9B, 0x4FE9, 0x5036, 0x5084, -0x50D2, 0x5120, 0x516E, 0x51BC, 0x520A, 0x5258, 0x52A6, 0x52F4, -0x5343, 0x5391, 0x53E0, 0x542E, 0x547D, 0x54CC, 0x551A, 0x5569, -0x55B8, 0x5607, 0x5656, 0x56A5, 0x56F4, 0x5744, 0x5793, 0x57E2, -0x5832, 0x5882, 0x58D1, 0x5921, 0x5971, 0x59C1, 0x5A10, 0x5A60, -0x5AB0, 0x5B01, 0x5B51, 0x5BA1, 0x5BF1, 0x5C42, 0x5C92, 0x5CE3, -0x5D34, 0x5D84, 0x5DD5, 0x5E26, 0x5E77, 0x5EC8, 0x5F19, 0x5F6A, -0x5FBB, 0x600D, 0x605E, 0x60B0, 0x6101, 0x6153, 0x61A4, 0x61F6, -0x6248, 0x629A, 0x62EC, 0x633E, 0x6390, 0x63E2, 0x6434, 0x6487, -0x64D9, 0x652C, 0x657E, 0x65D1, 0x6624, 0x6676, 0x66C9, 0x671C, -0x676F, 0x67C2, 0x6815, 0x6869, 0x68BC, 0x690F, 0x6963, 0x69B6, -0x6A0A, 0x6A5E, 0x6AB1, 0x6B05, 0x6B59, 0x6BAD, 0x6C01, 0x6C55, -0x6CAA, 0x6CFE, 0x6D52, 0x6DA7, 0x6DFB, 0x6E50, 0x6EA4, 0x6EF9, -0x6F4E, 0x6FA3, 0x6FF8, 0x704D, 0x70A2, 0x70F7, 0x714D, 0x71A2, -0x71F7, 0x724D, 0x72A2, 0x72F8, 0x734E, 0x73A4, 0x73FA, 0x7450, -0x74A6, 0x74FC, 0x7552, 0x75A8, 0x75FF, 0x7655, 0x76AC, 0x7702, -0x7759, 0x77B0, 0x7807, 0x785E, 0x78B4, 0x790C, 0x7963, 0x79BA, -0x7A11, 0x7A69, 0x7AC0, 0x7B18, 0x7B6F, 0x7BC7, 0x7C1F, 0x7C77, -0x7CCF, 0x7D27, 0x7D7F, 0x7DD7, 0x7E2F, 0x7E88, 0x7EE0, 0x7F38, -0x7F91, 0x7FEA, 0x8042, 0x809B, 0x80F4, 0x814D, 0x81A6, 0x81FF, -0x8259, 0x82B2, 0x830B, 0x8365, 0x83BE, 0x8418, 0x8472, 0x84CB, -0x8525, 0x857F, 0x85D9, 0x8633, 0x868E, 0x86E8, 0x8742, 0x879D, -0x87F7, 0x8852, 0x88AC, 0x8907, 0x8962, 0x89BD, 0x8A18, 0x8A73, -0x8ACE, 0x8B2A, 0x8B85, 0x8BE0, 0x8C3C, 0x8C97, 0x8CF3, 0x8D4F, -0x8DAB, 0x8E07, 0x8E63, 0x8EBF, 0x8F1B, 0x8F77, 0x8FD4, 0x9030, -0x908C, 0x90E9, 0x9146, 0x91A2, 0x91FF, 0x925C, 0x92B9, 0x9316, -0x9373, 0x93D1, 0x942E, 0x948C, 0x94E9, 0x9547, 0x95A4, 0x9602, -0x9660, 0x96BE, 0x971C, 0x977A, 0x97D8, 0x9836, 0x9895, 0x98F3, -0x9952, 0x99B0, 0x9A0F, 0x9A6E, 0x9ACD, 0x9B2C, 0x9B8B, 0x9BEA, -0x9C49, 0x9CA8, 0x9D08, 0x9D67, 0x9DC7, 0x9E26, 0x9E86, 0x9EE6, -0x9F46, 0x9FA6, 0xA006, 0xA066, 0xA0C6, 0xA127, 0xA187, 0xA1E8, -0xA248, 0xA2A9, 0xA30A, 0xA36B, 0xA3CC, 0xA42D, 0xA48E, 0xA4EF, -0xA550, 0xA5B2, 0xA613, 0xA675, 0xA6D6, 0xA738, 0xA79A, 0xA7FC, -0xA85E, 0xA8C0, 0xA922, 0xA984, 0xA9E7, 0xAA49, 0xAAAC, 0xAB0E, -0xAB71, 0xABD4, 0xAC37, 0xAC9A, 0xACFD, 0xAD60, 0xADC3, 0xAE27, -0xAE8A, 0xAEED, 0xAF51, 0xAFB5, 0xB019, 0xB07C, 0xB0E0, 0xB145, -0xB1A9, 0xB20D, 0xB271, 0xB2D6, 0xB33A, 0xB39F, 0xB403, 0xB468, -0xB4CD, 0xB532, 0xB597, 0xB5FC, 0xB662, 0xB6C7, 0xB72C, 0xB792, -0xB7F7, 0xB85D, 0xB8C3, 0xB929, 0xB98F, 0xB9F5, 0xBA5B, 0xBAC1, -0xBB28, 0xBB8E, 0xBBF5, 0xBC5B, 0xBCC2, 0xBD29, 0xBD90, 0xBDF7, -0xBE5E, 0xBEC5, 0xBF2C, 0xBF94, 0xBFFB, 0xC063, 0xC0CA, 0xC132, -0xC19A, 0xC202, 0xC26A, 0xC2D2, 0xC33A, 0xC3A2, 0xC40B, 0xC473, -0xC4DC, 0xC544, 0xC5AD, 0xC616, 0xC67F, 0xC6E8, 0xC751, 0xC7BB, -0xC824, 0xC88D, 0xC8F7, 0xC960, 0xC9CA, 0xCA34, 0xCA9E, 0xCB08, -0xCB72, 0xCBDC, 0xCC47, 0xCCB1, 0xCD1B, 0xCD86, 0xCDF1, 0xCE5B, -0xCEC6, 0xCF31, 0xCF9C, 0xD008, 0xD073, 0xD0DE, 0xD14A, 0xD1B5, -0xD221, 0xD28D, 0xD2F8, 0xD364, 0xD3D0, 0xD43D, 0xD4A9, 0xD515, -0xD582, 0xD5EE, 0xD65B, 0xD6C7, 0xD734, 0xD7A1, 0xD80E, 0xD87B, -0xD8E9, 0xD956, 0xD9C3, 0xDA31, 0xDA9E, 0xDB0C, 0xDB7A, 0xDBE8, -0xDC56, 0xDCC4, 0xDD32, 0xDDA0, 0xDE0F, 0xDE7D, 0xDEEC, 0xDF5B, -0xDFC9, 0xE038, 0xE0A7, 0xE116, 0xE186, 0xE1F5, 0xE264, 0xE2D4, -0xE343, 0xE3B3, 0xE423, 0xE493, 0xE503, 0xE573, 0xE5E3, 0xE654, -0xE6C4, 0xE735, 0xE7A5, 0xE816, 0xE887, 0xE8F8, 0xE969, 0xE9DA, -0xEA4B, 0xEABC, 0xEB2E, 0xEB9F, 0xEC11, 0xEC83, 0xECF5, 0xED66, -0xEDD9, 0xEE4B, 0xEEBD, 0xEF2F, 0xEFA2, 0xF014, 0xF087, 0xF0FA, -0xF16D, 0xF1E0, 0xF253, 0xF2C6, 0xF339, 0xF3AD, 0xF420, 0xF494, -0xF507, 0xF57B, 0xF5EF, 0xF663, 0xF6D7, 0xF74C, 0xF7C0, 0xF834, -0xF8A9, 0xF91E, 0xF992, 0xFA07, 0xFA7C, 0xFAF1, 0xFB66, 0xFBDC, -0xFC51, 0xFCC7, 0xFD3C, 0xFDB2, 0xFE28, 0xFE9E, 0xFF14, 0xFF8A -}; +#define cpu (&ARMPROC) +#define TEMPLATE template -static u8 getvoltbl[] = { -0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, -0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0E, -0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x11, 0x11, 0x11, 0x11, 0x11, 0x12, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x14, -0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x18, -0x18, 0x18, 0x18, 0x19, 0x19, 0x19, 0x19, 0x1A, 0x1A, 0x1A, 0x1B, 0x1B, 0x1B, 0x1C, 0x1C, 0x1C, -0x1D, 0x1D, 0x1D, 0x1E, 0x1E, 0x1E, 0x1F, 0x1F, 0x1F, 0x20, 0x20, 0x20, 0x21, 0x21, 0x22, 0x22, -0x22, 0x23, 0x23, 0x24, 0x24, 0x24, 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x27, 0x28, 0x28, 0x29, -0x29, 0x2A, 0x2A, 0x2B, 0x2B, 0x2C, 0x2C, 0x2D, 0x2D, 0x2E, 0x2E, 0x2F, 0x2F, 0x30, 0x31, 0x31, -0x32, 0x32, 0x33, 0x33, 0x34, 0x35, 0x35, 0x36, 0x36, 0x37, 0x38, 0x38, 0x39, 0x3A, 0x3A, 0x3B, -0x3C, 0x3C, 0x3D, 0x3E, 0x3F, 0x3F, 0x40, 0x41, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45, 0x46, 0x47, -0x48, 0x49, 0x4A, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x52, 0x53, 0x54, 0x55, -0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x67, -0x68, 0x69, 0x6A, 0x6B, 0x6D, 0x6E, 0x6F, 0x71, 0x72, 0x73, 0x75, 0x76, 0x77, 0x79, 0x7A, 0x7B, -0x7D, 0x7E, 0x7F, 0x20, 0x21, 0x21, 0x21, 0x22, 0x22, 0x23, 0x23, 0x23, 0x24, 0x24, 0x25, 0x25, -0x26, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28, 0x29, 0x29, 0x2A, 0x2A, 0x2B, 0x2B, 0x2C, 0x2C, 0x2D, -0x2D, 0x2E, 0x2E, 0x2F, 0x2F, 0x30, 0x30, 0x31, 0x31, 0x32, 0x33, 0x33, 0x34, 0x34, 0x35, 0x36, -0x36, 0x37, 0x37, 0x38, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x3C, 0x3D, 0x3E, 0x3E, 0x3F, 0x40, 0x40, -0x41, 0x42, 0x43, 0x43, 0x44, 0x45, 0x46, 0x47, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4D, -0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, -0x5E, 0x5F, 0x60, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6F, 0x70, -0x71, 0x73, 0x74, 0x75, 0x77, 0x78, 0x79, 0x7B, 0x7C, 0x7E, 0x7E, 0x40, 0x41, 0x42, 0x43, 0x43, -0x44, 0x45, 0x46, 0x47, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, -0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, -0x62, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6B, 0x6C, 0x6D, 0x6E, 0x70, 0x71, 0x72, 0x74, 0x75, -0x76, 0x78, 0x79, 0x7B, 0x7C, 0x7D, 0x7E, 0x40, 0x41, 0x42, 0x42, 0x43, 0x44, 0x45, 0x46, 0x46, -0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, -0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x65, 0x66, -0x67, 0x68, 0x69, 0x6A, 0x6C, 0x6D, 0x6E, 0x6F, 0x71, 0x72, 0x73, 0x75, 0x76, 0x77, 0x79, 0x7A, -0x7C, 0x7D, 0x7E, 0x7F +struct CompressionHeader +{ +public: + CompressionHeader(u32 _value) : value(_value) {} + u32 DataSize() const { return value&15; } + u32 Type() const { return (value>>4)&15; } + u32 DecompressedSize() const { return value>>24; } +private: + u32 value; }; -u32 bios_nop(armcpu_t * cpu) +static const uint16_t getsinetbl[] = { - if (cpu->proc_ID == ARMCPU_ARM9) - { - LOG("Unimplemented bios function %02X(ARM9) was used. R0:%08X\n", (cpu->instruction)&0x1F, cpu->R[0]); - } - else - { - LOG("Unimplemented bios function %02X(ARM7) was used. R0:%08X\n", (cpu->instruction)&0x1F, cpu->R[0]); - } - return 3; -} - -u32 delayLoop(armcpu_t * cpu) -{ - return cpu->R[0] * 4; -} - -//u32 oldmode[2]; - -u32 intrWaitARM(armcpu_t * cpu) -{ - u32 intrFlagAdr;// = (((armcp15_t *)(cpu->coproc[15]))->DTCMRegion&0xFFFFF000)+0x3FF8; - u32 intr; - u32 intrFlag = 0; - - //execute = false; - if(cpu->proc_ID) - { - intrFlagAdr = 0x380FFF8; - } else { - intrFlagAdr = (((armcp15_t *)(cpu->coproc[15]))->DTCMRegion&0xFFFFF000)+0x3FF8; - } - intr = MMU_read32(cpu->proc_ID, intrFlagAdr); - intrFlag = cpu->R[1] & intr; - - if(intrFlag) - { - // si une(ou plusieurs) des interruptions que l'on attend s'est(se sont) produite(s) - // on efface son(les) occurence(s). - intr ^= intrFlag; - MMU_write32(cpu->proc_ID, intrFlagAdr, intr); - //cpu->switchMode(oldmode[cpu->proc_ID]); - return 1; - } - - cpu->R[15] = cpu->instruct_adr; - cpu->next_instruction = cpu->R[15]; - cpu->waitIRQ = 1; - //oldmode[cpu->proc_ID] = cpu->switchMode(SVC); - - return 1; -} - -u32 waitVBlankARM(armcpu_t * cpu) -{ - u32 intrFlagAdr;// = (((armcp15_t *)(cpu->coproc[15]))->DTCMRegion&0xFFFFF000)+0x3FF8; - u32 intr; - u32 intrFlag = 0; - - //execute = false; - if(cpu->proc_ID) - { - intrFlagAdr = 0x380FFF8; - } else { - intrFlagAdr = (((armcp15_t *)(cpu->coproc[15]))->DTCMRegion&0xFFFFF000)+0x3FF8; - } - intr = MMU_read32(cpu->proc_ID, intrFlagAdr); - intrFlag = 1 & intr; - - if(intrFlag) - { - // si une(ou plusieurs) des interruptions que l'on attend s'est(se sont) produite(s) - // on efface son(les) occurence(s). - intr ^= intrFlag; - MMU_write32(cpu->proc_ID, intrFlagAdr, intr); - //cpu->switchMode(oldmode[cpu->proc_ID]); - return 1; - } - - cpu->R[15] = cpu->instruct_adr; - cpu->next_instruction = cpu->R[15]; - cpu->waitIRQ = 1; - //oldmode[cpu->proc_ID] = cpu->switchMode(SVC); - - return 1; -} - -u32 wait4IRQ(armcpu_t* cpu) -{ - //execute= false; - if(cpu->wirq) - { - if(!cpu->waitIRQ) - { - cpu->waitIRQ = 0; - cpu->wirq = 0; - //cpu->switchMode(oldmode[cpu->proc_ID]); - return 1; - } - cpu->R[15] = cpu->instruct_adr; - cpu->next_instruction = cpu->R[15]; - return 1; - } - cpu->waitIRQ = 1; - cpu->wirq = 1; - cpu->R[15] = cpu->instruct_adr; - cpu->next_instruction = cpu->R[15]; - //oldmode[cpu->proc_ID] = cpu->switchMode(SVC); - return 1; -} - -u32 devide(armcpu_t* cpu) -{ - s32 num = (s32)cpu->R[0]; - s32 dnum = (s32)cpu->R[1]; - - if(dnum==0) return 0; - - cpu->R[0] = (u32)(num / dnum); - cpu->R[1] = (u32)(num % dnum); - cpu->R[3] = (u32) (((s32)cpu->R[0])<0 ? -cpu->R[0] : cpu->R[0]); - - return 6; -} - -u32 copy(armcpu_t* cpu) -{ - u32 src = cpu->R[0]; - u32 dst = cpu->R[1]; - u32 cnt = cpu->R[2]; - - switch(BIT26(cnt)) - { - case 0: - src &= 0xFFFFFFFE; - dst &= 0xFFFFFFFE; - switch(BIT24(cnt)) - { - case 0: - cnt &= 0x1FFFFF; - while(cnt) - { - MMU_write16(cpu->proc_ID, dst, MMU_read16(cpu->proc_ID, src)); - cnt--; - dst+=2; - src+=2; - } - break; - case 1: - { - u32 val = MMU_read16(cpu->proc_ID, src); - cnt &= 0x1FFFFF; - while(cnt) - { - MMU_write16(cpu->proc_ID, dst, val); - cnt--; - dst+=2; - } - } - break; - } - break; - case 1: - src &= 0xFFFFFFFC; - dst &= 0xFFFFFFFC; - switch(BIT24(cnt)) - { - case 0: - cnt &= 0x1FFFFF; - while(cnt) - { - MMU_write32(cpu->proc_ID, dst, MMU_read32(cpu->proc_ID, src)); - cnt--; - dst+=4; - src+=4; - } - break; - case 1: - { - u32 val = MMU_read32(cpu->proc_ID, src); - cnt &= 0x1FFFFF; - while(cnt) - { - MMU_write32(cpu->proc_ID, dst, val); - cnt--; - dst+=4; - } - } - break; - } - break; - } - return 1; -} - -u32 fastCopy(armcpu_t* cpu) -{ - u32 src = cpu->R[0] & 0xFFFFFFFC; - u32 dst = cpu->R[1] & 0xFFFFFFFC; - u32 cnt = cpu->R[2]; - - switch(BIT24(cnt)) - { - case 0: - cnt &= 0x1FFFFF; - while(cnt) - { - MMU_write32(cpu->proc_ID, dst, MMU_read32(cpu->proc_ID, src)); - cnt--; - dst+=4; - src+=4; - } - break; - case 1: - { - u32 val = MMU_read32(cpu->proc_ID, src); - cnt &= 0x1FFFFF; - while(cnt) - { - MMU_write32(cpu->proc_ID, dst, val); - cnt--; - dst+=4; - } - } - break; - } - return 1; -} - -u32 LZ77UnCompVram(armcpu_t* cpu) -{ - int i1, i2; - int byteCount; - int byteShift; - u32 writeValue; - int len; - u32 source = cpu->R[0]; - u32 dest = cpu->R[1]; - u32 header = MMU_read32(cpu->proc_ID, source); - source += 4; - - if(((source & 0xe000000) == 0) || - ((source + ((header >> 8) & 0x1fffff)) & 0xe000000) == 0) - return 0; - - byteCount = 0; - byteShift = 0; - writeValue = 0; - - len = header >> 8; - - while(len > 0) { - u8 d = MMU_read8(cpu->proc_ID, source++); - - if(d) { - for(i1 = 0; i1 < 8; i1++) { - if(d & 0x80) { - int length; - int offset; - u32 windowOffset; - u16 data = MMU_read8(cpu->proc_ID, source++) << 8; - data |= MMU_read8(cpu->proc_ID, source++); - length = (data >> 12) + 3; - offset = (data & 0x0FFF); - windowOffset = dest + byteCount - offset - 1; - for(i2 = 0; i2 < length; i2++) { - writeValue |= (MMU_read8(cpu->proc_ID, windowOffset++) << byteShift); - byteShift += 8; - byteCount++; - - if(byteCount == 2) { - MMU_write16(cpu->proc_ID, dest, writeValue); - dest += 2; - byteCount = 0; - byteShift = 0; - writeValue = 0; - } - len--; - if(len == 0) - return 0; - } - } else { - writeValue |= (MMU_read8(cpu->proc_ID, source++) << byteShift); - byteShift += 8; - byteCount++; - if(byteCount == 2) { - MMU_write16(cpu->proc_ID, dest, writeValue); - dest += 2; - byteCount = 0; - byteShift = 0; - writeValue = 0; - } - len--; - if(len == 0) - return 0; - } - d <<= 1; - } - } else { - for(i1 = 0; i1 < 8; i1++) { - writeValue |= (MMU_read8(cpu->proc_ID, source++) << byteShift); - byteShift += 8; - byteCount++; - if(byteCount == 2) { - MMU_write16(cpu->proc_ID, dest, writeValue); - dest += 2; - byteShift = 0; - byteCount = 0; - writeValue = 0; - } - len--; - if(len == 0) - return 0; - } - } - } - return 1; -} + 0x0000, 0x0324, 0x0648, 0x096A, 0x0C8C, 0x0FAB, 0x12C8, 0x15E2, + 0x18F9, 0x1C0B, 0x1F1A, 0x2223, 0x2528, 0x2826, 0x2B1F, 0x2E11, + 0x30FB, 0x33DF, 0x36BA, 0x398C, 0x3C56, 0x3F17, 0x41CE, 0x447A, + 0x471C, 0x49B4, 0x4C3F, 0x4EBF, 0x5133, 0x539B, 0x55F5, 0x5842, + 0x5A82, 0x5CB3, 0x5ED7, 0x60EB, 0x62F1, 0x64E8, 0x66CF, 0x68A6, + 0x6A6D, 0x6C23, 0x6DC9, 0x6F5E, 0x70E2, 0x7254, 0x73B5, 0x7504, + 0x7641, 0x776B, 0x7884, 0x7989, 0x7A7C, 0x7B5C, 0x7C29, 0x7CE3, + 0x7D89, 0x7E1D, 0x7E9C, 0x7F09, 0x7F61, 0x7FA6, 0x7FD8, 0x7FF5 +}; -u32 LZ77UnCompWram(armcpu_t* cpu) +static const uint16_t getpitchtbl[] = { - int i1, i2; - int len; - u32 source = cpu->R[0]; - u32 dest = cpu->R[1]; - - u32 header = MMU_read32(cpu->proc_ID, source); - source += 4; - - if(((source & 0xe000000) == 0) || - ((source + ((header >> 8) & 0x1fffff)) & 0xe000000) == 0) - return 0; - - len = header >> 8; - - while(len > 0) { - u8 d = MMU_read8(cpu->proc_ID, source++); - - if(d) { - for(i1 = 0; i1 < 8; i1++) { - if(d & 0x80) { - int length; - int offset; - u32 windowOffset; - u16 data = MMU_read8(cpu->proc_ID, source++) << 8; - data |= MMU_read8(cpu->proc_ID, source++); - length = (data >> 12) + 3; - offset = (data & 0x0FFF); - windowOffset = dest - offset - 1; - for(i2 = 0; i2 < length; i2++) { - MMU_write8(cpu->proc_ID, dest++, MMU_read8(cpu->proc_ID, windowOffset++)); - len--; - if(len == 0) - return 0; - } - } else { - MMU_write8(cpu->proc_ID, dest++, MMU_read8(cpu->proc_ID, source++)); - len--; - if(len == 0) - return 0; - } - d <<= 1; - } - } else { - for(i1 = 0; i1 < 8; i1++) { - MMU_write8(cpu->proc_ID, dest++, MMU_read8(cpu->proc_ID, source++)); - len--; - if(len == 0) - return 0; - } - } - } - return 1; -} + 0x0000, 0x003B, 0x0076, 0x00B2, 0x00ED, 0x0128, 0x0164, 0x019F, + 0x01DB, 0x0217, 0x0252, 0x028E, 0x02CA, 0x0305, 0x0341, 0x037D, + 0x03B9, 0x03F5, 0x0431, 0x046E, 0x04AA, 0x04E6, 0x0522, 0x055F, + 0x059B, 0x05D8, 0x0614, 0x0651, 0x068D, 0x06CA, 0x0707, 0x0743, + 0x0780, 0x07BD, 0x07FA, 0x0837, 0x0874, 0x08B1, 0x08EF, 0x092C, + 0x0969, 0x09A7, 0x09E4, 0x0A21, 0x0A5F, 0x0A9C, 0x0ADA, 0x0B18, + 0x0B56, 0x0B93, 0x0BD1, 0x0C0F, 0x0C4D, 0x0C8B, 0x0CC9, 0x0D07, + 0x0D45, 0x0D84, 0x0DC2, 0x0E00, 0x0E3F, 0x0E7D, 0x0EBC, 0x0EFA, + 0x0F39, 0x0F78, 0x0FB6, 0x0FF5, 0x1034, 0x1073, 0x10B2, 0x10F1, + 0x1130, 0x116F, 0x11AE, 0x11EE, 0x122D, 0x126C, 0x12AC, 0x12EB, + 0x132B, 0x136B, 0x13AA, 0x13EA, 0x142A, 0x146A, 0x14A9, 0x14E9, + 0x1529, 0x1569, 0x15AA, 0x15EA, 0x162A, 0x166A, 0x16AB, 0x16EB, + 0x172C, 0x176C, 0x17AD, 0x17ED, 0x182E, 0x186F, 0x18B0, 0x18F0, + 0x1931, 0x1972, 0x19B3, 0x19F5, 0x1A36, 0x1A77, 0x1AB8, 0x1AFA, + 0x1B3B, 0x1B7D, 0x1BBE, 0x1C00, 0x1C41, 0x1C83, 0x1CC5, 0x1D07, + 0x1D48, 0x1D8A, 0x1DCC, 0x1E0E, 0x1E51, 0x1E93, 0x1ED5, 0x1F17, + 0x1F5A, 0x1F9C, 0x1FDF, 0x2021, 0x2064, 0x20A6, 0x20E9, 0x212C, + 0x216F, 0x21B2, 0x21F5, 0x2238, 0x227B, 0x22BE, 0x2301, 0x2344, + 0x2388, 0x23CB, 0x240E, 0x2452, 0x2496, 0x24D9, 0x251D, 0x2561, + 0x25A4, 0x25E8, 0x262C, 0x2670, 0x26B4, 0x26F8, 0x273D, 0x2781, + 0x27C5, 0x280A, 0x284E, 0x2892, 0x28D7, 0x291C, 0x2960, 0x29A5, + 0x29EA, 0x2A2F, 0x2A74, 0x2AB9, 0x2AFE, 0x2B43, 0x2B88, 0x2BCD, + 0x2C13, 0x2C58, 0x2C9D, 0x2CE3, 0x2D28, 0x2D6E, 0x2DB4, 0x2DF9, + 0x2E3F, 0x2E85, 0x2ECB, 0x2F11, 0x2F57, 0x2F9D, 0x2FE3, 0x302A, + 0x3070, 0x30B6, 0x30FD, 0x3143, 0x318A, 0x31D0, 0x3217, 0x325E, + 0x32A5, 0x32EC, 0x3332, 0x3379, 0x33C1, 0x3408, 0x344F, 0x3496, + 0x34DD, 0x3525, 0x356C, 0x35B4, 0x35FB, 0x3643, 0x368B, 0x36D3, + 0x371A, 0x3762, 0x37AA, 0x37F2, 0x383A, 0x3883, 0x38CB, 0x3913, + 0x395C, 0x39A4, 0x39ED, 0x3A35, 0x3A7E, 0x3AC6, 0x3B0F, 0x3B58, + 0x3BA1, 0x3BEA, 0x3C33, 0x3C7C, 0x3CC5, 0x3D0E, 0x3D58, 0x3DA1, + 0x3DEA, 0x3E34, 0x3E7D, 0x3EC7, 0x3F11, 0x3F5A, 0x3FA4, 0x3FEE, + 0x4038, 0x4082, 0x40CC, 0x4116, 0x4161, 0x41AB, 0x41F5, 0x4240, + 0x428A, 0x42D5, 0x431F, 0x436A, 0x43B5, 0x4400, 0x444B, 0x4495, + 0x44E1, 0x452C, 0x4577, 0x45C2, 0x460D, 0x4659, 0x46A4, 0x46F0, + 0x473B, 0x4787, 0x47D3, 0x481E, 0x486A, 0x48B6, 0x4902, 0x494E, + 0x499A, 0x49E6, 0x4A33, 0x4A7F, 0x4ACB, 0x4B18, 0x4B64, 0x4BB1, + 0x4BFE, 0x4C4A, 0x4C97, 0x4CE4, 0x4D31, 0x4D7E, 0x4DCB, 0x4E18, + 0x4E66, 0x4EB3, 0x4F00, 0x4F4E, 0x4F9B, 0x4FE9, 0x5036, 0x5084, + 0x50D2, 0x5120, 0x516E, 0x51BC, 0x520A, 0x5258, 0x52A6, 0x52F4, + 0x5343, 0x5391, 0x53E0, 0x542E, 0x547D, 0x54CC, 0x551A, 0x5569, + 0x55B8, 0x5607, 0x5656, 0x56A5, 0x56F4, 0x5744, 0x5793, 0x57E2, + 0x5832, 0x5882, 0x58D1, 0x5921, 0x5971, 0x59C1, 0x5A10, 0x5A60, + 0x5AB0, 0x5B01, 0x5B51, 0x5BA1, 0x5BF1, 0x5C42, 0x5C92, 0x5CE3, + 0x5D34, 0x5D84, 0x5DD5, 0x5E26, 0x5E77, 0x5EC8, 0x5F19, 0x5F6A, + 0x5FBB, 0x600D, 0x605E, 0x60B0, 0x6101, 0x6153, 0x61A4, 0x61F6, + 0x6248, 0x629A, 0x62EC, 0x633E, 0x6390, 0x63E2, 0x6434, 0x6487, + 0x64D9, 0x652C, 0x657E, 0x65D1, 0x6624, 0x6676, 0x66C9, 0x671C, + 0x676F, 0x67C2, 0x6815, 0x6869, 0x68BC, 0x690F, 0x6963, 0x69B6, + 0x6A0A, 0x6A5E, 0x6AB1, 0x6B05, 0x6B59, 0x6BAD, 0x6C01, 0x6C55, + 0x6CAA, 0x6CFE, 0x6D52, 0x6DA7, 0x6DFB, 0x6E50, 0x6EA4, 0x6EF9, + 0x6F4E, 0x6FA3, 0x6FF8, 0x704D, 0x70A2, 0x70F7, 0x714D, 0x71A2, + 0x71F7, 0x724D, 0x72A2, 0x72F8, 0x734E, 0x73A4, 0x73FA, 0x7450, + 0x74A6, 0x74FC, 0x7552, 0x75A8, 0x75FF, 0x7655, 0x76AC, 0x7702, + 0x7759, 0x77B0, 0x7807, 0x785E, 0x78B4, 0x790C, 0x7963, 0x79BA, + 0x7A11, 0x7A69, 0x7AC0, 0x7B18, 0x7B6F, 0x7BC7, 0x7C1F, 0x7C77, + 0x7CCF, 0x7D27, 0x7D7F, 0x7DD7, 0x7E2F, 0x7E88, 0x7EE0, 0x7F38, + 0x7F91, 0x7FEA, 0x8042, 0x809B, 0x80F4, 0x814D, 0x81A6, 0x81FF, + 0x8259, 0x82B2, 0x830B, 0x8365, 0x83BE, 0x8418, 0x8472, 0x84CB, + 0x8525, 0x857F, 0x85D9, 0x8633, 0x868E, 0x86E8, 0x8742, 0x879D, + 0x87F7, 0x8852, 0x88AC, 0x8907, 0x8962, 0x89BD, 0x8A18, 0x8A73, + 0x8ACE, 0x8B2A, 0x8B85, 0x8BE0, 0x8C3C, 0x8C97, 0x8CF3, 0x8D4F, + 0x8DAB, 0x8E07, 0x8E63, 0x8EBF, 0x8F1B, 0x8F77, 0x8FD4, 0x9030, + 0x908C, 0x90E9, 0x9146, 0x91A2, 0x91FF, 0x925C, 0x92B9, 0x9316, + 0x9373, 0x93D1, 0x942E, 0x948C, 0x94E9, 0x9547, 0x95A4, 0x9602, + 0x9660, 0x96BE, 0x971C, 0x977A, 0x97D8, 0x9836, 0x9895, 0x98F3, + 0x9952, 0x99B0, 0x9A0F, 0x9A6E, 0x9ACD, 0x9B2C, 0x9B8B, 0x9BEA, + 0x9C49, 0x9CA8, 0x9D08, 0x9D67, 0x9DC7, 0x9E26, 0x9E86, 0x9EE6, + 0x9F46, 0x9FA6, 0xA006, 0xA066, 0xA0C6, 0xA127, 0xA187, 0xA1E8, + 0xA248, 0xA2A9, 0xA30A, 0xA36B, 0xA3CC, 0xA42D, 0xA48E, 0xA4EF, + 0xA550, 0xA5B2, 0xA613, 0xA675, 0xA6D6, 0xA738, 0xA79A, 0xA7FC, + 0xA85E, 0xA8C0, 0xA922, 0xA984, 0xA9E7, 0xAA49, 0xAAAC, 0xAB0E, + 0xAB71, 0xABD4, 0xAC37, 0xAC9A, 0xACFD, 0xAD60, 0xADC3, 0xAE27, + 0xAE8A, 0xAEED, 0xAF51, 0xAFB5, 0xB019, 0xB07C, 0xB0E0, 0xB145, + 0xB1A9, 0xB20D, 0xB271, 0xB2D6, 0xB33A, 0xB39F, 0xB403, 0xB468, + 0xB4CD, 0xB532, 0xB597, 0xB5FC, 0xB662, 0xB6C7, 0xB72C, 0xB792, + 0xB7F7, 0xB85D, 0xB8C3, 0xB929, 0xB98F, 0xB9F5, 0xBA5B, 0xBAC1, + 0xBB28, 0xBB8E, 0xBBF5, 0xBC5B, 0xBCC2, 0xBD29, 0xBD90, 0xBDF7, + 0xBE5E, 0xBEC5, 0xBF2C, 0xBF94, 0xBFFB, 0xC063, 0xC0CA, 0xC132, + 0xC19A, 0xC202, 0xC26A, 0xC2D2, 0xC33A, 0xC3A2, 0xC40B, 0xC473, + 0xC4DC, 0xC544, 0xC5AD, 0xC616, 0xC67F, 0xC6E8, 0xC751, 0xC7BB, + 0xC824, 0xC88D, 0xC8F7, 0xC960, 0xC9CA, 0xCA34, 0xCA9E, 0xCB08, + 0xCB72, 0xCBDC, 0xCC47, 0xCCB1, 0xCD1B, 0xCD86, 0xCDF1, 0xCE5B, + 0xCEC6, 0xCF31, 0xCF9C, 0xD008, 0xD073, 0xD0DE, 0xD14A, 0xD1B5, + 0xD221, 0xD28D, 0xD2F8, 0xD364, 0xD3D0, 0xD43D, 0xD4A9, 0xD515, + 0xD582, 0xD5EE, 0xD65B, 0xD6C7, 0xD734, 0xD7A1, 0xD80E, 0xD87B, + 0xD8E9, 0xD956, 0xD9C3, 0xDA31, 0xDA9E, 0xDB0C, 0xDB7A, 0xDBE8, + 0xDC56, 0xDCC4, 0xDD32, 0xDDA0, 0xDE0F, 0xDE7D, 0xDEEC, 0xDF5B, + 0xDFC9, 0xE038, 0xE0A7, 0xE116, 0xE186, 0xE1F5, 0xE264, 0xE2D4, + 0xE343, 0xE3B3, 0xE423, 0xE493, 0xE503, 0xE573, 0xE5E3, 0xE654, + 0xE6C4, 0xE735, 0xE7A5, 0xE816, 0xE887, 0xE8F8, 0xE969, 0xE9DA, + 0xEA4B, 0xEABC, 0xEB2E, 0xEB9F, 0xEC11, 0xEC83, 0xECF5, 0xED66, + 0xEDD9, 0xEE4B, 0xEEBD, 0xEF2F, 0xEFA2, 0xF014, 0xF087, 0xF0FA, + 0xF16D, 0xF1E0, 0xF253, 0xF2C6, 0xF339, 0xF3AD, 0xF420, 0xF494, + 0xF507, 0xF57B, 0xF5EF, 0xF663, 0xF6D7, 0xF74C, 0xF7C0, 0xF834, + 0xF8A9, 0xF91E, 0xF992, 0xFA07, 0xFA7C, 0xFAF1, 0xFB66, 0xFBDC, + 0xFC51, 0xFCC7, 0xFD3C, 0xFDB2, 0xFE28, 0xFE9E, 0xFF14, 0xFF8A +}; -u32 RLUnCompVram(armcpu_t* cpu) +static const uint8_t getvoltbl[] = { - int i; - int len; - int byteCount; - int byteShift; - u32 writeValue; - u32 source = cpu->R[0]; - u32 dest = cpu->R[1]; - - u32 header = MMU_read32(cpu->proc_ID, source); - source += 4; - - if(((source & 0xe000000) == 0) || - ((source + ((header >> 8) & 0x1fffff)) & 0xe000000) == 0) - return 0; - - len = header >> 8; - byteCount = 0; - byteShift = 0; - writeValue = 0; - - while(len > 0) { - u8 d = MMU_read8(cpu->proc_ID, source++); - int l = d & 0x7F; - if(d & 0x80) { - u8 data = MMU_read8(cpu->proc_ID, source++); - l += 3; - for(i = 0;i < l; i++) { - writeValue |= (data << byteShift); - byteShift += 8; - byteCount++; - - if(byteCount == 2) { - MMU_write16(cpu->proc_ID, dest, writeValue); - dest += 2; - byteCount = 0; - byteShift = 0; - writeValue = 0; - } - len--; - if(len == 0) - return 0; - } - } else { - l++; - for(i = 0; i < l; i++) { - writeValue |= (MMU_read8(cpu->proc_ID, source++) << byteShift); - byteShift += 8; - byteCount++; - if(byteCount == 2) { - MMU_write16(cpu->proc_ID, dest, writeValue); - dest += 2; - byteCount = 0; - byteShift = 0; - writeValue = 0; - } - len--; - if(len == 0) - return 0; - } - } - } - return 1; -} + 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x09, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, + 0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x11, 0x11, 0x11, 0x11, 0x11, 0x12, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x14, + 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x18, + 0x18, 0x18, 0x18, 0x19, 0x19, 0x19, 0x19, 0x1A, 0x1A, 0x1A, 0x1B, 0x1B, 0x1B, 0x1C, 0x1C, 0x1C, + 0x1D, 0x1D, 0x1D, 0x1E, 0x1E, 0x1E, 0x1F, 0x1F, 0x1F, 0x20, 0x20, 0x20, 0x21, 0x21, 0x22, 0x22, + 0x22, 0x23, 0x23, 0x24, 0x24, 0x24, 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x27, 0x28, 0x28, 0x29, + 0x29, 0x2A, 0x2A, 0x2B, 0x2B, 0x2C, 0x2C, 0x2D, 0x2D, 0x2E, 0x2E, 0x2F, 0x2F, 0x30, 0x31, 0x31, + 0x32, 0x32, 0x33, 0x33, 0x34, 0x35, 0x35, 0x36, 0x36, 0x37, 0x38, 0x38, 0x39, 0x3A, 0x3A, 0x3B, + 0x3C, 0x3C, 0x3D, 0x3E, 0x3F, 0x3F, 0x40, 0x41, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4A, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x52, 0x53, 0x54, 0x55, + 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x67, + 0x68, 0x69, 0x6A, 0x6B, 0x6D, 0x6E, 0x6F, 0x71, 0x72, 0x73, 0x75, 0x76, 0x77, 0x79, 0x7A, 0x7B, + 0x7D, 0x7E, 0x7F, 0x20, 0x21, 0x21, 0x21, 0x22, 0x22, 0x23, 0x23, 0x23, 0x24, 0x24, 0x25, 0x25, + 0x26, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28, 0x29, 0x29, 0x2A, 0x2A, 0x2B, 0x2B, 0x2C, 0x2C, 0x2D, + 0x2D, 0x2E, 0x2E, 0x2F, 0x2F, 0x30, 0x30, 0x31, 0x31, 0x32, 0x33, 0x33, 0x34, 0x34, 0x35, 0x36, + 0x36, 0x37, 0x37, 0x38, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x3C, 0x3D, 0x3E, 0x3E, 0x3F, 0x40, 0x40, + 0x41, 0x42, 0x43, 0x43, 0x44, 0x45, 0x46, 0x47, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4D, + 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, + 0x5E, 0x5F, 0x60, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6F, 0x70, + 0x71, 0x73, 0x74, 0x75, 0x77, 0x78, 0x79, 0x7B, 0x7C, 0x7E, 0x7E, 0x40, 0x41, 0x42, 0x43, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, + 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, + 0x62, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6B, 0x6C, 0x6D, 0x6E, 0x70, 0x71, 0x72, 0x74, 0x75, + 0x76, 0x78, 0x79, 0x7B, 0x7C, 0x7D, 0x7E, 0x40, 0x41, 0x42, 0x42, 0x43, 0x44, 0x45, 0x46, 0x46, + 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, + 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x65, 0x66, + 0x67, 0x68, 0x69, 0x6A, 0x6C, 0x6D, 0x6E, 0x6F, 0x71, 0x72, 0x73, 0x75, 0x76, 0x77, 0x79, 0x7A, + 0x7C, 0x7D, 0x7E, 0x7F +}; -u32 RLUnCompWram(armcpu_t* cpu) +TEMPLATE static uint32_t bios_nop() { - int i; - int len; - u32 source = cpu->R[0]; - u32 dest = cpu->R[1]; - - u32 header = MMU_read32(cpu->proc_ID, source); - source += 4; - - if(((source & 0xe000000) == 0) || - ((source + ((header >> 8) & 0x1fffff)) & 0xe000000) == 0) - return 0; - - len = header >> 8; - - while(len > 0) { - u8 d = MMU_read8(cpu->proc_ID, source++); - int l = d & 0x7F; - if(d & 0x80) { - u8 data = MMU_read8(cpu->proc_ID, source++); - l += 3; - for(i = 0;i < l; i++) { - MMU_write8(cpu->proc_ID, dest++, data); - len--; - if(len == 0) - return 0; - } - } else { - l++; - for(i = 0; i < l; i++) { - MMU_write8(cpu->proc_ID, dest++, MMU_read8(cpu->proc_ID, source++)); - len--; - if(len == 0) - return 0; - } - } - } - return 1; + return 3; } -u32 UnCompHuffman(armcpu_t* cpu) +TEMPLATE static uint32_t WaitByLoop() { - u32 source, dest, writeValue, header, treeStart, mask; - u32 data; - u8 treeSize, currentNode, rootNode; - int byteCount, byteShift, len, pos; - int writeData; - - source = cpu->R[0]; - dest = cpu->R[1]; - - header = MMU_read8(cpu->proc_ID, source); - source += 4; - - if(((source & 0xe000000) == 0) || - ((source + ((header >> 8) & 0x1fffff)) & 0xe000000) == 0) - return 0; - - treeSize = MMU_read8(cpu->proc_ID, source++); - - treeStart = source; - - source += ((treeSize+1)<<1)-1; // minus because we already skipped one byte - - len = header >> 8; - - mask = 0x80000000; - data = MMU_read8(cpu->proc_ID, source); - source += 4; - - pos = 0; - rootNode = MMU_read8(cpu->proc_ID, treeStart); - currentNode = rootNode; - writeData = 0; - byteShift = 0; - byteCount = 0; - writeValue = 0; - - if((header & 0x0F) == 8) { - while(len > 0) { - // take left - if(pos == 0) - pos++; - else - pos += (((currentNode & 0x3F)+1)<<1); - - if(data & mask) { - // right - if(currentNode & 0x40) - writeData = 1; - currentNode = MMU_read8(cpu->proc_ID, treeStart+pos+1); - } else { - // left - if(currentNode & 0x80) - writeData = 1; - currentNode = MMU_read8(cpu->proc_ID, treeStart+pos); - } + uint32_t elapsed; - if(writeData) { - writeValue |= (currentNode << byteShift); - byteCount++; - byteShift += 8; - - pos = 0; - currentNode = rootNode; - writeData = 0; - - if(byteCount == 4) { - byteCount = 0; - byteShift = 0; - MMU_write8(cpu->proc_ID, dest, writeValue); - writeValue = 0; - dest += 4; - len -= 4; - } - } - mask >>= 1; - if(mask == 0) { - mask = 0x80000000; - data = MMU_read8(cpu->proc_ID, source); - source += 4; - } - } - } else { - int halfLen = 0; - int value = 0; - while(len > 0) { - // take left - if(pos == 0) - pos++; - else - pos += (((currentNode & 0x3F)+1)<<1); - - if((data & mask)) { - // right - if(currentNode & 0x40) - writeData = 1; - currentNode = MMU_read8(cpu->proc_ID, treeStart+pos+1); - } else { - // left - if(currentNode & 0x80) - writeData = 1; - currentNode = MMU_read8(cpu->proc_ID, treeStart+pos); - } - - if(writeData) { - if(halfLen == 0) - value |= currentNode; - else - value |= (currentNode<<4); - - halfLen += 4; - if(halfLen == 8) { - writeValue |= (value << byteShift); - byteCount++; - byteShift += 8; - - halfLen = 0; - value = 0; - - if(byteCount == 4) { - byteCount = 0; - byteShift = 0; - MMU_write8(cpu->proc_ID, dest, writeValue); - dest += 4; - writeValue = 0; - len -= 4; - } - } - pos = 0; - currentNode = rootNode; - writeData = 0; - } - mask >>= 1; - if(mask == 0) { - mask = 0x80000000; - data = MMU_read8(cpu->proc_ID, source); - source += 4; - } - } - } - return 1; -} - -u32 BitUnPack(armcpu_t* cpu) -{ - u32 source,dest,header,base,d,temp; - int len,bits,revbits,dataSize,data,bitwritecount,mask,bitcount,addBase; - u8 b; - - source = cpu->R[0]; - dest = cpu->R[1]; - header = cpu->R[2]; - - len = MMU_read16(cpu->proc_ID, header); - // check address - bits = MMU_read8(cpu->proc_ID, header+2); - revbits = 8 - bits; - // u32 value = 0; - base = MMU_read8(cpu->proc_ID, header+4); - addBase = (base & 0x80000000) ? 1 : 0; - base &= 0x7fffffff; - dataSize = MMU_read8(cpu->proc_ID, header+3); - - data = 0; - bitwritecount = 0; - while(1) { - len -= 1; - if(len < 0) - break; - mask = 0xff >> revbits; - b = MMU_read8(cpu->proc_ID, source); - source++; - bitcount = 0; - while(1) { - if(bitcount >= 8) - break; - d = b & mask; - temp = d >> bitcount; - if(!temp && addBase) { + if (PROCNUM == ARMCPU_ARM9) + { + if (cp15.ctrl & ((1 << 16) | (1 << 18))) // DTCM or ITCM is on (cache) + elapsed = cpu->R[0] * 2; + else + elapsed = cpu->R[0] * 8; + } + else + elapsed = cpu->R[0] * 4; + cpu->R[0] = 0; + return elapsed; +} + +TEMPLATE static uint32_t wait4IRQ() +{ + cpu->waitIRQ = true; + cpu->halt_IE_and_IF = true; + return 1; +} + +TEMPLATE static uint32_t intrWaitARM() +{ + // TODO - account for differences between arm7 and arm9 (according to gbatek, the "bug doesn't work") + + const uint32_t intrFlagAdr = PROCNUM == ARMCPU_ARM7 ? 0x380FFF8 : (cp15.DTCMRegion & 0xFFFFF000) + 0x3FF8; + + // set IME=1 + // without this, no irq handlers can happen (even though IF&IE waits can happily happen) + // and so no bits in the OS irq flag variable can get set by the handlers + _MMU_write32(0x04000208, 1); + + // analyze the OS irq flag variable + uint32_t intr = _MMU_read32(intrFlagAdr); + uint32_t intrFlag = cpu->R[1] & intr; + + // if the user requested us to discard flags, then clear the flag(s) we're going to be waiting on. + // (be sure to only do this only on the first run through. use a little state machine to control that) + if (!cpu->intrWaitARM_state && cpu->R[0] == 1) + { + intr ^= intrFlag; + _MMU_write32(intrFlagAdr, intr); + + // we want to make sure we wait at least once below + intrFlag = 0; + } + + cpu->intrWaitARM_state = 1; + + // now, if the condition is satisfied (and it won't be the first time through, no matter what, due to cares taken above) + if (intrFlag) + { + // write back the OS irq flags with the ones we were waiting for cleared + intr ^= intrFlag; + _MMU_write32(intrFlagAdr, intr); + + cpu->intrWaitARM_state = 0; + return 1; + } + + // the condition wasn't satisfied. this means that we need to halt, wait for some enabled interrupt, + // and then ensure that we return to this opcode again to check the condition again + cpu->waitIRQ = true; + cpu->halt_IE_and_IF = true; + + // (rewire PC to jump back to this opcode) + uint32_t instructAddr = cpu->instruct_adr; + cpu->R[15] = instructAddr; + cpu->next_instruction = instructAddr; + return 1; +} + +TEMPLATE static uint32_t waitVBlankARM() +{ + cpu->R[0] = 1; + cpu->R[1] = 1; + return intrWaitARM(); +} + +TEMPLATE static uint32_t sleep() +{ + _MMU_write08(0x04000301, 0xC0); + return 1; +} + +TEMPLATE static uint32_t divide() +{ + int32_t num = cpu->R[0]; + int32_t dnum = cpu->R[1]; + + if (!dnum) + return 0; + + int32_t res = num / dnum; + cpu->R[0] = res; + cpu->R[1] = num % dnum; + cpu->R[3] = std::abs(res); + + return 6; +} + +TEMPLATE static uint32_t copy() +{ + uint32_t src = cpu->R[0]; + uint32_t dst = cpu->R[1]; + uint32_t cnt = cpu->R[2]; + + switch (BIT26(cnt)) + { + case 0: + src &= 0xFFFFFFFE; + dst &= 0xFFFFFFFE; + switch (BIT24(cnt)) + { + case 0: + cnt &= 0x1FFFFF; + while (cnt) + { + _MMU_write16(dst, _MMU_read16(src)); + --cnt; + dst += 2; + src += 2; + } + break; + case 1: + { + uint16_t val = _MMU_read16(src); + cnt &= 0x1FFFFF; + while (cnt) + { + _MMU_write16(dst, val); + --cnt; + dst += 2; + } + break; + } + } + break; + case 1: + src &= 0xFFFFFFFC; + dst &= 0xFFFFFFFC; + switch (BIT24(cnt)) + { + case 0: + cnt &= 0x1FFFFF; + while (cnt) + { + _MMU_write32(dst, _MMU_read32(src)); + --cnt; + dst += 4; + src += 4; + } + break; + case 1: + { + uint32_t val = _MMU_read32(src); + cnt &= 0x1FFFFF; + while (cnt) + { + _MMU_write32(dst, val); + --cnt; + dst += 4; + } + break; + } + } + break; + } + return 1; +} + +TEMPLATE static uint32_t fastCopy() +{ + uint32_t src = cpu->R[0] & 0xFFFFFFFC; + uint32_t dst = cpu->R[1] & 0xFFFFFFFC; + uint32_t cnt = cpu->R[2]; + + switch (BIT24(cnt)) + { + case 0: + cnt &= 0x1FFFFF; + while (cnt) + { + _MMU_write32(dst, _MMU_read32(src)); + --cnt; + dst += 4; + src += 4; + } + break; + case 1: + { + uint32_t val = _MMU_read32(src); + cnt &= 0x1FFFFF; + while (cnt) + { + _MMU_write32(dst, val); + --cnt; + dst += 4; + } + break; + } + } + return 1; +} + +TEMPLATE static uint32_t LZ77UnCompVram() +{ + uint32_t source = cpu->R[0]; + uint32_t dest = cpu->R[1]; + uint32_t header = _MMU_read32(source); + source += 4; + + if (!(source & 0xe000000) || !((source + ((header >> 8) & 0x1fffff)) & 0xe000000)) + return 0; + + int byteCount = 0; + int byteShift = 0; + uint32_t writeValue = 0; + + int len = header >> 8; + + while (len > 0) + { + uint8_t d = _MMU_read08(source++); + + int i1, i2; + if (d) + { + for (i1 = 0; i1 < 8; ++i1) + { + if (d & 0x80) + { + uint16_t data = _MMU_read08(source++) << 8; + data |= _MMU_read08(source++); + int length = (data >> 12) + 3; + int offset = data & 0x0FFF; + uint32_t windowOffset = dest + byteCount - offset - 1; + for (i2 = 0; i2 < length; ++i2) + { + writeValue |= _MMU_read08(windowOffset++) << byteShift; + byteShift += 8; + ++byteCount; + + if (byteCount == 2) + { + _MMU_write16(dest, writeValue & 0xFFFF); + dest += 2; + byteCount = 0; + byteShift = 0; + writeValue = 0; + } + --len; + if (!len) + return 0; + } + } + else + { + writeValue |= _MMU_read08(source++) << byteShift; + byteShift += 8; + ++byteCount; + if (byteCount == 2) + { + _MMU_write16(dest, writeValue & 0xFFFF); + dest += 2; + byteCount = 0; + byteShift = 0; + writeValue = 0; + } + --len; + if (!len) + return 0; + } + d <<= 1; + } + } + else + { + for (i1 = 0; i1 < 8; ++i1) + { + writeValue |= _MMU_read08(source++) << byteShift; + byteShift += 8; + ++byteCount; + if (byteCount == 2) + { + _MMU_write16(dest, writeValue & 0xFFFF); + dest += 2; + byteShift = 0; + byteCount = 0; + writeValue = 0; + } + --len; + if (!len) + return 0; + } + } + } + return 1; +} + +TEMPLATE static uint32_t LZ77UnCompWram() +{ + uint32_t source = cpu->R[0]; + uint32_t dest = cpu->R[1]; + uint32_t header = _MMU_read32(source); + source += 4; + + if (!(source & 0xe000000) || !((source + ((header >> 8) & 0x1fffff)) & 0xe000000)) + return 0; + + int len = header >> 8; + + while (len > 0) + { + uint8_t d = _MMU_read08(source++); + + int i1, i2; + if (d) + { + for (i1 = 0; i1 < 8; ++i1) + { + if (d & 0x80) + { + uint16_t data = _MMU_read08(source++) << 8; + data |= _MMU_read08(source++); + int length = (data >> 12) + 3; + int offset = data & 0x0FFF; + uint32_t windowOffset = dest - offset - 1; + for (i2 = 0; i2 < length; ++i2) + { + _MMU_write08(dest++, _MMU_read08(windowOffset++)); + --len; + if (!len) + return 0; + } + } + else + { + _MMU_write08(dest++, _MMU_read08(source++)); + --len; + if (!len) + return 0; + } + d <<= 1; + } + } + else + { + for (i1 = 0; i1 < 8; ++i1) + { + _MMU_write08(dest++, _MMU_read08(source++)); + --len; + if (!len) + return 0; + } + } + } + return 1; +} + +TEMPLATE static uint32_t RLUnCompVram() +{ + uint32_t source = cpu->R[0]; + uint32_t dest = cpu->R[1]; + uint32_t header = _MMU_read32(source); + source += 4; + + if (!(source & 0xe000000) || !((source + ((header >> 8) & 0x1fffff)) & 0xe000000)) + return 0; + + int len = header >> 8; + int byteCount = 0; + int byteShift = 0; + uint32_t writeValue = 0; + + while (len > 0) + { + uint8_t d = _MMU_read08(source++); + int l = d & 0x7F; + + int i; + if (d & 0x80) + { + uint8_t data = _MMU_read08(source++); + l += 3; + for (i = 0; i < l; ++i) + { + writeValue |= data << byteShift; + byteShift += 8; + ++byteCount; + + if (byteCount == 2) + { + _MMU_write16(dest, writeValue & 0xFFFF); + dest += 2; + byteCount = 0; + byteShift = 0; + writeValue = 0; + } + --len; + if (!len) + return 0; + } + } + else + { + ++l; + for (i = 0; i < l; ++i) + { + writeValue |= _MMU_read08(source++) << byteShift; + byteShift += 8; + ++byteCount; + + if (byteCount == 2) + { + _MMU_write16(dest, writeValue & 0xFFFF); + dest += 2; + byteCount = 0; + byteShift = 0; + writeValue = 0; + } + --len; + if (!len) + return 0; + } + } + } + return 1; +} + +TEMPLATE static uint32_t RLUnCompWram() +{ + uint32_t source = cpu->R[0]; + uint32_t dest = cpu->R[1]; + uint32_t header = _MMU_read32(source); + source += 4; + + if (!(source & 0xe000000) || !((source + ((header >> 8) & 0x1fffff)) & 0xe000000)) + return 0; + + int len = header >> 8; + + while (len > 0) + { + uint8_t d = _MMU_read08(source++); + int l = d & 0x7F; + + int i; + if (d & 0x80) + { + uint8_t data = _MMU_read08(source++); + l += 3; + for (i = 0; i < l; ++i) + { + _MMU_write08(dest++, data); + --len; + if (!len) + return 0; + } + } + else + { + ++l; + for (i = 0; i < l; ++i) + { + _MMU_write08(dest++, _MMU_read08(source++)); + --len; + if (!len) + return 0; + } + } + } + return 1; +} + +TEMPLATE static uint32_t UnCompHuffman() +{ + uint32_t source = cpu->R[0]; + uint32_t dest = cpu->R[1]; + uint32_t header = _MMU_read32(source); + source += 4; + + if (!(source & 0xe000000) || !((source + ((header >> 8) & 0x1fffff)) & 0xe000000)) + return 0; + + uint8_t treeSize = _MMU_read08(source++); + + uint32_t treeStart = source; + + source += ((treeSize + 1) << 1) - 1; // minus because we already skipped one byte + + int len = header >> 8; + + uint32_t mask = 0x80000000; + uint32_t data = _MMU_read32(source); + source += 4; + + int pos = 0; + uint8_t rootNode = _MMU_read08(treeStart); + uint8_t currentNode = rootNode; + int writeData = 0; + int byteShift = 0; + int byteCount = 0; + uint32_t writeValue = 0; + + if ((header & 0x0F) == 8) + { + while (len > 0) + { + // take left + if (!pos) + ++pos; + else + pos += ((currentNode & 0x3F) + 1) << 1; + + if (data & mask) + { + // right + if (currentNode & 0x40) + writeData = 1; + currentNode = _MMU_read08(treeStart + pos + 1); + } + else + { + // left + if (currentNode & 0x80) + writeData = 1; + currentNode = _MMU_read08(treeStart + pos); + } + + if (writeData) + { + writeValue |= currentNode << byteShift; + ++byteCount; + byteShift += 8; + + pos = 0; + currentNode = rootNode; + writeData = 0; + + if (byteCount == 4) + { + byteCount = 0; + byteShift = 0; + _MMU_write32(dest, writeValue); + writeValue = 0; + dest += 4; + len -= 4; + } + } + mask >>= 1; + if (!mask) + { + mask = 0x80000000; + data = _MMU_read32(source); + source += 4; + } + } + } + else + { + int halfLen = 0; + int value = 0; + while (len > 0) + { + // take left + if (!pos) + ++pos; + else + pos += ((currentNode & 0x3F) + 1) << 1; + + if (data & mask) + { + // right + if (currentNode & 0x40) + writeData = 1; + currentNode = _MMU_read08(treeStart + pos + 1); + } + else + { + // left + if (currentNode & 0x80) + writeData = 1; + currentNode = _MMU_read08(treeStart + pos); + } + + if (writeData) + { + if (!halfLen) + value |= currentNode; + else + value |= currentNode << 4; + + halfLen += 4; + if (halfLen == 8) + { + writeValue |= value << byteShift; + ++byteCount; + byteShift += 8; + + halfLen = 0; + value = 0; + + if (byteCount == 4) + { + byteCount = 0; + byteShift = 0; + _MMU_write32(dest, writeValue); + dest += 4; + writeValue = 0; + len -= 4; + } + } + pos = 0; + currentNode = rootNode; + writeData = 0; + } + mask >>= 1; + if (!mask) + { + mask = 0x80000000; + data = _MMU_read32(source); + source += 4; + } + } + } + return 1; +} + +TEMPLATE static uint32_t BitUnPack() +{ + uint32_t source = cpu->R[0]; + uint32_t dest = cpu->R[1]; + uint32_t header = cpu->R[2]; + + int len = _MMU_read16(header); + int bits = _MMU_read08(header + 2); + switch (bits) + { + case 1: + case 2: + case 4: + case 8: + break; + default: + return 0; // error + } + int dataSize = _MMU_read08(header + 3); + switch (dataSize) + { + case 1: + case 2: + case 4: + case 8: + case 16: + case 32: + break; + default: + return 0; // error + } + + int revbits = 8 - bits; + uint32_t base = _MMU_read32(header + 4); + int addBase = base & 0x80000000 ? 1 : 0; + base &= 0x7fffffff; + + int data = 0; + int bitwritecount = 0; + while (1) + { + len -= 1; + if (len < 0) + break; + int mask = 0xff >> revbits; + uint8_t b = _MMU_read08(source); + ++source; + int bitcount = 0; + while (1) + { + if (bitcount >= 8) + break; + uint32_t temp = b & mask; + if (temp || addBase) { temp += base; } - data |= temp << bitwritecount; - bitwritecount += dataSize; - if(bitwritecount >= 32) { - MMU_write8(cpu->proc_ID, dest, data); - dest += 4; - data = 0; - bitwritecount = 0; - } - mask <<= bits; - bitcount += bits; - } + data |= temp << bitwritecount; + bitwritecount += dataSize; + if (bitwritecount >= 32) + { + _MMU_write32(dest, data); + dest += 4; + data = 0; + bitwritecount = 0; + } + bitcount += bits; + b >>= bits; + } + } + return 1; +} + +TEMPLATE static uint32_t Diff8bitUnFilterWram() +{ + uint32_t source = cpu->R[0]; + uint32_t dest = cpu->R[1]; + CompressionHeader header(_MMU_read32(source)); + source += 4; + + int len = header.DecompressedSize(); + + if (PROCNUM == ARMCPU_ARM7) { + if (!(source & 0xe000000) || !((source + (len & 0x1fffff)) & 0xe000000)) + return 0; } - return 1; -} - -u32 Diff8bitUnFilterWram(armcpu_t* cpu) -{ - u32 source,dest,header; - u8 data,diff; - int len; - source = cpu->R[0]; - dest = cpu->R[1]; + uint8_t data = _MMU_read08(source++); + _MMU_write08(dest++, data); + --len; - header = MMU_read8(cpu->proc_ID, source); - source += 4; - - if(((source & 0xe000000) == 0) || - (( (source + ((header >> 8) & 0x1fffff)) & 0xe000000) == 0)) - return 0; - - len = header >> 8; - - data = MMU_read8(cpu->proc_ID, source++); - MMU_write8(cpu->proc_ID, dest++, data); - len--; - - while(len > 0) { - diff = MMU_read8(cpu->proc_ID, source++); - data += diff; - MMU_write8(cpu->proc_ID, dest++, data); - len--; - } - return 1; + while (len > 0) + { + uint8_t diff = _MMU_read08(source++); + data += diff; + _MMU_write08(dest++, data); + --len; + } + return 1; } -u32 Diff16bitUnFilter(armcpu_t* cpu) +TEMPLATE static uint32_t Diff16bitUnFilter() { - u32 source,dest,header; - u16 data; - int len; - - source = cpu->R[0]; - dest = cpu->R[1]; - - header = MMU_read8(cpu->proc_ID, source); - source += 4; - - if(((source & 0xe000000) == 0) || - ((source + ((header >> 8) & 0x1fffff)) & 0xe000000) == 0) - return 0; - - len = header >> 8; - - data = MMU_read16(cpu->proc_ID, source); - source += 2; - MMU_write16(cpu->proc_ID, dest, data); - dest += 2; - len -= 2; - - while(len >= 2) { - u16 diff = MMU_read16(cpu->proc_ID, source); - source += 2; - data += diff; - MMU_write16(cpu->proc_ID, dest, data); - dest += 2; - len -= 2; - } - return 1; -} + uint32_t source = cpu->R[0]; + uint32_t dest = cpu->R[1]; + CompressionHeader header(_MMU_read32(source)); + source += 4; -u32 bios_sqrt(armcpu_t* cpu) -{ - cpu->R[0] = (u32)sqrt((double)(cpu->R[0])); - return 1; -} + int len = header.DecompressedSize(); -u32 setHaltCR(armcpu_t* cpu) -{ - MMU_write8(cpu->proc_ID, 0x4000300+cpu->proc_ID, cpu->R[0]); - return 1; -} + uint16_t data = _MMU_read16(source); + source += 2; + _MMU_write16(dest, data); + dest += 2; + len -= 2; -u32 getSineTab(armcpu_t* cpu) -{ - cpu->R[0] = getsinetbl[cpu->R[0]]; - return 1; + while (len >= 2) + { + uint16_t diff = _MMU_read16(source); + source += 2; + data += diff; + _MMU_write16(dest, data); + dest += 2; + len -= 2; + } + return 1; } -u32 getPitchTab(armcpu_t* cpu) +TEMPLATE static uint32_t bios_sqrt() { - cpu->R[0] = getpitchtbl[cpu->R[0]]; - return 1; + cpu->R[0] = static_cast(std::sqrt(static_cast(cpu->R[0]))); + return 1; } -u32 getVolumeTab(armcpu_t* cpu) +TEMPLATE static uint32_t CustomPost() { - cpu->R[0] = getvoltbl[cpu->R[0]]; - return 1; + _MMU_write08(REG_POSTFLG, cpu->R[0]); + return 1; } -u32 getCRC16(armcpu_t* cpu) +TEMPLATE static uint32_t CustomHalt() { - unsigned int i,j; - - u32 crc = cpu->R[0]; - u32 datap = cpu->R[1]; - u32 size = cpu->R[2]; - - static u16 val[] = { 0xC0C1,0xC181,0xC301,0xC601,0xCC01,0xD801,0xF001,0xA001 }; - for(i = 0; i < size; i++) - { - crc = crc ^ MMU_read8( cpu->proc_ID, datap + i); - - for(j = 0; j < 8; j++) { - int do_bit = 0; - - if ( crc & 0x1) - do_bit = 1; - - crc = crc >> 1; - - if ( do_bit) { - crc = crc ^ (val[j] << (7-j)); - } - } - } - cpu->R[0] = crc; - return 1; + _MMU_write08(REG_HALTCNT, cpu->R[2]); + return 1; } -u32 SoundBias(armcpu_t* cpu) +TEMPLATE static uint32_t getSineTab() { - u32 current = SPU_ReadLong(0x4000504); - if (cpu->R[0] > current) - SPU_WriteLong(0x4000504, current + 0x1); - else - SPU_WriteLong(0x4000504, current - 0x1); - return cpu->R[1]; -} - -u32 (* ARM9_swi_tab[32])(armcpu_t* cpu)={ - bios_nop, // 0x00 - bios_nop, // 0x01 - bios_nop, // 0x02 - delayLoop, // 0x03 - intrWaitARM, // 0x04 - waitVBlankARM, // 0x05 - wait4IRQ, // 0x06 - bios_nop, // 0x07 - bios_nop, // 0x08 - devide, // 0x09 - bios_nop, // 0x0A - copy, // 0x0B - fastCopy, // 0x0C - bios_sqrt, // 0x0D - getCRC16, // 0x0E - bios_nop, // 0x0F - BitUnPack, // 0x10 - LZ77UnCompWram, // 0x11 - LZ77UnCompVram, // 0x12 - UnCompHuffman, // 0x13 - RLUnCompWram, // 0x14 - RLUnCompVram, // 0x15 - Diff8bitUnFilterWram, // 0x16 - bios_nop, // 0x17 - Diff16bitUnFilter, // 0x18 - bios_nop, // 0x19 - bios_nop, // 0x1A - bios_nop, // 0x1B - bios_nop, // 0x1C - bios_nop, // 0x1D - bios_nop, // 0x1E - setHaltCR, // 0x1F -}; - -u32 (* ARM7_swi_tab[32])(armcpu_t* cpu)={ - bios_nop, // 0x00 - bios_nop, // 0x01 - bios_nop, // 0x02 - delayLoop, // 0x03 - intrWaitARM, // 0x04 - waitVBlankARM, // 0x05 - wait4IRQ, // 0x06 - wait4IRQ, // 0x07 - SoundBias, // 0x08 - devide, // 0x09 - bios_nop, // 0x0A - copy, // 0x0B - fastCopy, // 0x0C - bios_sqrt, // 0x0D - getCRC16, // 0x0E - bios_nop, // 0x0F - BitUnPack, // 0x10 - LZ77UnCompWram, // 0x11 - LZ77UnCompVram, // 0x12 - UnCompHuffman, // 0x13 - RLUnCompWram, // 0x14 - RLUnCompVram, // 0x15 - Diff8bitUnFilterWram, // 0x16 - bios_nop, // 0x17 - bios_nop, // 0x18 - bios_nop, // 0x19 - getSineTab, // 0x1A - getPitchTab, // 0x1B - getVolumeTab, // 0x1C - bios_nop, // 0x1D - bios_nop, // 0x1E - setHaltCR, // 0x1F + // ds returns garbage according to gbatek, but we must protect ourselves + if (cpu->R[0] >= ARRAY_SIZE(getsinetbl)) + { + fprintf(stderr, "Invalid SWI getSineTab: %08X\n", cpu->R[0]); + return 1; + } + + cpu->R[0] = getsinetbl[cpu->R[0]]; + return 1; +} + +TEMPLATE static uint32_t getPitchTab() +{ + // ds returns garbage according to gbatek, but we must protect ourselves + if (cpu->R[0] >= ARRAY_SIZE(getpitchtbl)) + { + fprintf(stderr, "Invalid SWI getPitchTab: %08X\n", cpu->R[0]); + return 1; + } + + cpu->R[0] = getpitchtbl[cpu->R[0]]; + return 1; +} + +TEMPLATE static uint32_t getVolumeTab() +{ + // ds returns garbage according to gbatek, but we must protect ourselves + if (cpu->R[0] >= ARRAY_SIZE(getvoltbl)) + { + fprintf(stderr, "Invalid SWI getVolumeTab: %08X\n", cpu->R[0]); + return 1; + } + + cpu->R[0] = getvoltbl[cpu->R[0]]; + return 1; +} + +TEMPLATE static uint32_t getCRC16() +{ + // gbatek is wrong. + + // dawn of sorrow uses this to checksum its save data; + // if this implementation is wrong, then it won't match what the real bios returns, + // and savefiles created with a bios will be invalid when loaded with non-bios (and vice-versa) + + uint16_t crc = cpu->R[0] & 0xFFFF; + uint32_t datap = cpu->R[1]; + uint32_t size = cpu->R[2] >> 1; + uint16_t currVal = 0; + + const uint16_t val[] = { 0x0000, 0xCC01, 0xD801, 0x1400, 0xF001, 0x3C00, 0x2800, 0xE401, 0xA001, 0x6C00, 0x7800, 0xB401, 0x5000, 0x9C01, 0x8801, 0x4400 }; + + for (uint32_t i = 0; i < size; ++i) + { + currVal = _MMU_read16(datap + i * 2); + + for (int j = 0; j < 4; ++j) + { + uint16_t tabVal = val[crc & 0xF]; + crc >>= 4; + crc ^= tabVal; + + uint16_t tempVal = currVal >> (4 * j); + tabVal = val[tempVal & 0xF]; + crc ^= tabVal; + } + } + + // R3 contains the last processed halfword + cpu->R[3] = currVal; + return 1; +} + +TEMPLATE static uint32_t isDebugger() +{ + // gbatek has additional specifications which are not emulated here + cpu->R[0] = 0; + return 1; +} + +TEMPLATE static uint32_t SoundBias() +{ + uint32_t curBias = _MMU_read32(0x04000504); + uint32_t newBias = !curBias ? 0x000:0x200; + uint32_t delay = newBias > curBias ? newBias - curBias : curBias - newBias; + + _MMU_write32(0x04000504, newBias); + return cpu->R[1] * delay; +} + +TEMPLATE static uint32_t getBootProcs() +{ + cpu->R[0] = 0x00000A2E; + cpu->R[1] = 0x00002C3C; + cpu->R[3] = 0x000005FF; + return 1; +} + +uint32_t (*ARM_swi_tab[][32])() = +{ + { + bios_nop, // 0x00 + bios_nop, // 0x01 + bios_nop, // 0x02 + WaitByLoop, // 0x03 + intrWaitARM, // 0x04 + waitVBlankARM, // 0x05 + wait4IRQ, // 0x06 + bios_nop, // 0x07 + bios_nop, // 0x08 + divide, // 0x09 + bios_nop, // 0x0A + copy, // 0x0B + fastCopy, // 0x0C + bios_sqrt, // 0x0D + getCRC16, // 0x0E + isDebugger, // 0x0F + BitUnPack, // 0x10 + LZ77UnCompWram, // 0x11 + LZ77UnCompVram, // 0x12 + UnCompHuffman, // 0x13 + RLUnCompWram, // 0x14 + RLUnCompVram, // 0x15 + Diff8bitUnFilterWram, // 0x16 + bios_nop, // 0x17 + Diff16bitUnFilter, // 0x18 + bios_nop, // 0x19 + bios_nop, // 0x1A + bios_nop, // 0x1B + bios_nop, // 0x1C + bios_nop, // 0x1D + bios_nop, // 0x1E + CustomPost, // 0x1F + }, + { + bios_nop, // 0x00 + bios_nop, // 0x01 + bios_nop, // 0x02 + WaitByLoop, // 0x03 + intrWaitARM, // 0x04 + waitVBlankARM, // 0x05 + wait4IRQ, // 0x06 + sleep, // 0x07 + SoundBias, // 0x08 + divide, // 0x09 + bios_nop, // 0x0A + copy, // 0x0B + fastCopy, // 0x0C + bios_sqrt, // 0x0D + getCRC16, // 0x0E + isDebugger, // 0x0F + BitUnPack, // 0x10 + LZ77UnCompWram, // 0x11 + LZ77UnCompVram, // 0x12 + UnCompHuffman, // 0x13 + RLUnCompWram, // 0x14 + RLUnCompVram, // 0x15 + bios_nop, // 0x16 + bios_nop, // 0x17 + bios_nop, // 0x18 + bios_nop, // 0x19 + getSineTab, // 0x1A + getPitchTab, // 0x1B + getVolumeTab, // 0x1C + getBootProcs, // 0x1D + bios_nop, // 0x1E + CustomHalt, // 0x1F + } }; diff -Nru audacious-plugins-4.1/src/xsf/desmume/bios.h audacious-plugins-4.3.1/src/xsf/desmume/bios.h --- audacious-plugins-4.1/src/xsf/desmume/bios.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/bios.h 2023-04-29 20:17:32.000000000 +0000 @@ -1,32 +1,23 @@ -/* Copyright (C) 2006 yopyop - yopyop156@ifrance.com - yopyop156.ifrance.com - - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +/* + Copyright (C) 2006 yopyop + Copyright (C) 2006-2012 DeSmuME team + + This file 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 file 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 the this software. If not, see . */ -#ifndef BIOS_H -#define BIOS_H +#pragma once #include "armcpu.h" -extern u32 (* ARM9_swi_tab[32])(armcpu_t * cpu); -extern u32 (* ARM7_swi_tab[32])(armcpu_t * cpu); -extern u32 wait4IRQ(armcpu_t * cpu); - -#endif - +extern uint32_t (*ARM_swi_tab[2][32])(); diff -Nru audacious-plugins-4.1/src/xsf/desmume/bits.h audacious-plugins-4.3.1/src/xsf/desmume/bits.h --- audacious-plugins-4.1/src/xsf/desmume/bits.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/bits.h 2023-04-29 20:17:32.000000000 +0000 @@ -1,44 +1,41 @@ -#ifndef BITS_H -#define BITS_H +#pragma once -#define BIT(n) (1<<(n)) +inline uint32_t BIT(uint32_t n) { return 1 << n; } -#define BIT_N(i,n) (((i)>>(n))&1) -#define BIT0(i) ((i)&1) -#define BIT1(i) BIT_N(i,1) -#define BIT2(i) BIT_N(i,2) -#define BIT3(i) BIT_N(i,3) -#define BIT4(i) BIT_N(i,4) -#define BIT5(i) BIT_N(i,5) -#define BIT6(i) BIT_N(i,6) -#define BIT7(i) BIT_N(i,7) -#define BIT8(i) BIT_N(i,8) -#define BIT9(i) BIT_N(i,9) -#define BIT10(i) BIT_N(i,10) -#define BIT11(i) BIT_N(i,11) -#define BIT12(i) BIT_N(i,12) -#define BIT13(i) BIT_N(i,13) -#define BIT14(i) BIT_N(i,14) -#define BIT15(i) BIT_N(i,15) -#define BIT16(i) BIT_N(i,16) -#define BIT17(i) BIT_N(i,17) -#define BIT18(i) BIT_N(i,18) -#define BIT19(i) BIT_N(i,19) -#define BIT20(i) BIT_N(i,20) -#define BIT21(i) BIT_N(i,21) -#define BIT22(i) BIT_N(i,22) -#define BIT23(i) BIT_N(i,23) -#define BIT24(i) BIT_N(i,24) -#define BIT25(i) BIT_N(i,25) -#define BIT26(i) BIT_N(i,26) -#define BIT27(i) BIT_N(i,27) -#define BIT28(i) BIT_N(i,28) -#define BIT29(i) BIT_N(i,29) -#define BIT30(i) BIT_N(i,30) -#define BIT31(i) ((i)>>31) +inline uint32_t BIT_N(uint32_t i, uint32_t n) { return (i >> n) & 1; } +inline uint32_t BIT0(uint32_t i) { return i & 1; } +inline uint32_t BIT1(uint32_t i) { return BIT_N(i, 1); } +inline uint32_t BIT2(uint32_t i) { return BIT_N(i, 2); } +inline uint32_t BIT3(uint32_t i) { return BIT_N(i, 3); } +inline uint32_t BIT4(uint32_t i) { return BIT_N(i, 4); } +inline uint32_t BIT5(uint32_t i) { return BIT_N(i, 5); } +inline uint32_t BIT6(uint32_t i) { return BIT_N(i, 6); } +inline uint32_t BIT7(uint32_t i) { return BIT_N(i, 7); } +inline uint32_t BIT8(uint32_t i) { return BIT_N(i, 8); } +inline uint32_t BIT9(uint32_t i) { return BIT_N(i, 9); } +inline uint32_t BIT10(uint32_t i) { return BIT_N(i, 10); } +inline uint32_t BIT11(uint32_t i) { return BIT_N(i, 11); } +inline uint32_t BIT12(uint32_t i) { return BIT_N(i, 12); } +inline uint32_t BIT13(uint32_t i) { return BIT_N(i, 13); } +inline uint32_t BIT14(uint32_t i) { return BIT_N(i, 14); } +inline uint32_t BIT15(uint32_t i) { return BIT_N(i, 15); } +inline uint32_t BIT16(uint32_t i) { return BIT_N(i, 16); } +inline uint32_t BIT17(uint32_t i) { return BIT_N(i, 17); } +inline uint32_t BIT18(uint32_t i) { return BIT_N(i, 18); } +inline uint32_t BIT19(uint32_t i) { return BIT_N(i, 19); } +inline uint32_t BIT20(uint32_t i) { return BIT_N(i, 20); } +inline uint32_t BIT21(uint32_t i) { return BIT_N(i, 21); } +inline uint32_t BIT22(uint32_t i) { return BIT_N(i, 22); } +inline uint32_t BIT23(uint32_t i) { return BIT_N(i, 23); } +inline uint32_t BIT24(uint32_t i) { return BIT_N(i, 24); } +inline uint32_t BIT25(uint32_t i) { return BIT_N(i, 25); } +inline uint32_t BIT26(uint32_t i) { return BIT_N(i, 26); } +inline uint32_t BIT27(uint32_t i) { return BIT_N(i, 27); } +inline uint32_t BIT28(uint32_t i) { return BIT_N(i, 28); } +inline uint32_t BIT29(uint32_t i) { return BIT_N(i, 29); } +inline uint32_t BIT30(uint32_t i) { return BIT_N(i, 30); } +inline uint32_t BIT31(uint32_t i) { return i >> 31; } -#define CONDITION(i) (i)>>28 +inline uint32_t CONDITION(uint32_t i) { return i >> 28; } -#define REG_POS(i,n) (((i)>>n)&0xF) - -#endif +inline uint32_t REG_POS(uint32_t i, uint32_t n) { return (i >> n) & 0xF; } diff -Nru audacious-plugins-4.1/src/xsf/desmume/cp15.cc audacious-plugins-4.3.1/src/xsf/desmume/cp15.cc --- audacious-plugins-4.1/src/xsf/desmume/cp15.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/cp15.cc 2023-04-29 20:17:32.000000000 +0000 @@ -1,90 +1,91 @@ -/* Copyright (C) 2006 yopyop - yopyop156@ifrance.com - yopyop156.ifrance.com - - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ +/* + Copyright (C) 2006 yopyop + Copyright (C) 2006-2011 DeSmuME team + + This file 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 file 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. -#include + You should have received a copy of the GNU General Public License + along with the this software. If not, see . +*/ +#include #include "cp15.h" -#include "debug.h" #include "MMU.h" -armcp15_t *armcp15_new(armcpu_t * c) +armcp15_t cp15; + +bool armcp15_t::reset(armcpu_t *c) { - int i; - armcp15_t *armcp15 = (armcp15_t*)malloc(sizeof(armcp15_t)); - if(!armcp15) return nullptr; - - armcp15->cpu = c; - armcp15->IDCode = 0x41049460; - armcp15->cacheType = 0x0F0D2112; - armcp15->TCMSize = 0x00140140; - armcp15->ctrl = 0x00000000; - armcp15->DCConfig = 0x0; - armcp15->ICConfig = 0x0; - armcp15->writeBuffCtrl = 0x0; - armcp15->und = 0x0; - armcp15->DaccessPerm = 0x22222222; - armcp15->IaccessPerm = 0x22222222; - armcp15->protectBaseSize0 = 0x0; - armcp15->protectBaseSize1 = 0x0; - armcp15->protectBaseSize2 = 0x0; - armcp15->protectBaseSize3 = 0x0; - armcp15->protectBaseSize4 = 0x0; - armcp15->protectBaseSize5 = 0x0; - armcp15->protectBaseSize6 = 0x0; - armcp15->protectBaseSize7 = 0x0; - armcp15->cacheOp = 0x0; - armcp15->DcacheLock = 0x0; - armcp15->IcacheLock = 0x0; - armcp15->ITCMRegion = 0x0C; - armcp15->DTCMRegion = 0x0080000A; - armcp15->processID = 0; - - /* preset calculated regionmasks */ - for (i=0;i<8;i++) { - armcp15->regionWriteMask_USR[i] = 0 ; - armcp15->regionWriteMask_SYS[i] = 0 ; - armcp15->regionReadMask_USR[i] = 0 ; - armcp15->regionReadMask_SYS[i] = 0 ; - armcp15->regionExecuteMask_USR[i] = 0 ; - armcp15->regionExecuteMask_SYS[i] = 0 ; - armcp15->regionWriteSet_USR[i] = 0 ; - armcp15->regionWriteSet_SYS[i] = 0 ; - armcp15->regionReadSet_USR[i] = 0 ; - armcp15->regionReadSet_SYS[i] = 0 ; - armcp15->regionExecuteSet_USR[i] = 0 ; - armcp15->regionExecuteSet_SYS[i] = 0 ; - } ; + //fprintf(stderr, "CP15 Reset\n"); + this->cpu = c; + this->IDCode = 0x41059461; + this->cacheType = 0x0F0D2112; + this->TCMSize = 0x00140180; + this->ctrl = 0x00012078; + this->DCConfig = 0x0; + this->ICConfig = 0x0; + this->writeBuffCtrl = 0x0; + this->und = 0x0; + this->DaccessPerm = 0x22222222; + this->IaccessPerm = 0x22222222; + this->protectBaseSize0 = 0x0; + this->protectBaseSize1 = 0x0; + this->protectBaseSize2 = 0x0; + this->protectBaseSize3 = 0x0; + this->protectBaseSize4 = 0x0; + this->protectBaseSize5 = 0x0; + this->protectBaseSize6 = 0x0; + this->protectBaseSize7 = 0x0; + this->cacheOp = 0x0; + this->DcacheLock = 0x0; + this->IcacheLock = 0x0; + this->ITCMRegion = 0x0C; + this->DTCMRegion = 0x0080000A; + this->processID = 0; + + MMU.ARM9_RW_MODE = BIT7(this->ctrl); + this->cpu->intVector = 0xFFFF0000 * BIT13(this->ctrl); + this->cpu->LDTBit = !BIT15(this->ctrl); // TBit + + /* preset calculated regionmasks */ + for (uint8_t i = 0; i < 8; ++i) + { + this->regionWriteMask_USR[i] = 0; + this->regionWriteMask_SYS[i] = 0; + this->regionReadMask_USR[i] = 0; + this->regionReadMask_SYS[i] = 0; + this->regionExecuteMask_USR[i] = 0; + this->regionExecuteMask_SYS[i] = 0; + this->regionWriteSet_USR[i] = 0; + this->regionWriteSet_SYS[i] = 0; + this->regionReadSet_USR[i] = 0; + this->regionReadSet_SYS[i] = 0; + this->regionExecuteSet_USR[i] = 0; + this->regionExecuteSet_SYS[i] = 0; + } - return armcp15; + return true; } -#define ACCESSTYPE(val,n) (((val) >> (4*n)) & 0x0F) -#define SIZEIDENTIFIER(val) ((((val) >> 1) & 0x1F)) -#define SIZEBINARY(val) (1 << (SIZEIDENTIFIER(val)+1)) -#define MASKFROMREG(val) (~((SIZEBINARY(val)-1) | 0x3F)) -#define SETFROMREG(val) ((val) & MASKFROMREG(val)) +static inline uint32_t ACCESSTYPE(uint32_t val, unsigned char n) { return (val >> (4 * n)) & 0x0F; } +static inline uint32_t SIZEIDENTIFIER(uint32_t val) { return (val >> 1) & 0x1F; } +static inline uint32_t SIZEBINARY(uint32_t val) { return 1 << (SIZEIDENTIFIER(val) + 1); } +static inline uint32_t MASKFROMREG(uint32_t val) { return ~((SIZEBINARY(val) - 1) | 0x3F); } +static inline uint32_t SETFROMREG(uint32_t val) { return val & MASKFROMREG(val); } /* sets the precalculated regions to mask,set for the affected accesstypes */ -void armcp15_setSingleRegionAccess(armcp15_t *armcp15,unsigned long dAccess,unsigned long iAccess,unsigned char num, unsigned long mask,unsigned long set) { +void armcp15_t::setSingleRegionAccess(uint32_t dAccess, uint32_t iAccess, unsigned char num, uint32_t mask, uint32_t set) +{ - switch (ACCESSTYPE(dAccess,num)) { + switch (ACCESSTYPE(dAccess, num)) + { case 4: /* UNP */ case 7: /* UNP */ case 8: /* UNP */ @@ -96,67 +97,67 @@ case 14: /* UNP */ case 15: /* UNP */ case 0: /* no access at all */ - armcp15->regionWriteMask_USR[num] = 0 ; - armcp15->regionWriteSet_USR[num] = 0xFFFFFFFF ; - armcp15->regionReadMask_USR[num] = 0 ; - armcp15->regionReadSet_USR[num] = 0xFFFFFFFF ; - armcp15->regionWriteMask_SYS[num] = 0 ; - armcp15->regionWriteSet_SYS[num] = 0xFFFFFFFF ; - armcp15->regionReadMask_SYS[num] = 0 ; - armcp15->regionReadSet_SYS[num] = 0xFFFFFFFF ; - break ; + this->regionWriteMask_USR[num] = 0; + this->regionWriteSet_USR[num] = 0xFFFFFFFF; + this->regionReadMask_USR[num] = 0; + this->regionReadSet_USR[num] = 0xFFFFFFFF; + this->regionWriteMask_SYS[num] = 0; + this->regionWriteSet_SYS[num] = 0xFFFFFFFF; + this->regionReadMask_SYS[num] = 0; + this->regionReadSet_SYS[num] = 0xFFFFFFFF; + break; case 1: /* no access at USR, all to sys */ - armcp15->regionWriteMask_USR[num] = 0 ; - armcp15->regionWriteSet_USR[num] = 0xFFFFFFFF ; - armcp15->regionReadMask_USR[num] = 0 ; - armcp15->regionReadSet_USR[num] = 0xFFFFFFFF ; - armcp15->regionWriteMask_SYS[num] = mask ; - armcp15->regionWriteSet_SYS[num] = set ; - armcp15->regionReadMask_SYS[num] = mask ; - armcp15->regionReadSet_SYS[num] = set ; - break ; + this->regionWriteMask_USR[num] = 0; + this->regionWriteSet_USR[num] = 0xFFFFFFFF; + this->regionReadMask_USR[num] = 0; + this->regionReadSet_USR[num] = 0xFFFFFFFF; + this->regionWriteMask_SYS[num] = mask; + this->regionWriteSet_SYS[num] = set; + this->regionReadMask_SYS[num] = mask; + this->regionReadSet_SYS[num] = set; + break; case 2: /* read at USR, all to sys */ - armcp15->regionWriteMask_USR[num] = 0 ; - armcp15->regionWriteSet_USR[num] = 0xFFFFFFFF ; - armcp15->regionReadMask_USR[num] = mask ; - armcp15->regionReadSet_USR[num] = set ; - armcp15->regionWriteMask_SYS[num] = mask ; - armcp15->regionWriteSet_SYS[num] = set ; - armcp15->regionReadMask_SYS[num] = mask ; - armcp15->regionReadSet_SYS[num] = set ; - break ; + this->regionWriteMask_USR[num] = 0; + this->regionWriteSet_USR[num] = 0xFFFFFFFF; + this->regionReadMask_USR[num] = mask; + this->regionReadSet_USR[num] = set; + this->regionWriteMask_SYS[num] = mask; + this->regionWriteSet_SYS[num] = set; + this->regionReadMask_SYS[num] = mask; + this->regionReadSet_SYS[num] = set; + break; case 3: /* all to USR, all to sys */ - armcp15->regionWriteMask_USR[num] = mask ; - armcp15->regionWriteSet_USR[num] = set ; - armcp15->regionReadMask_USR[num] = mask ; - armcp15->regionReadSet_USR[num] = set ; - armcp15->regionWriteMask_SYS[num] = mask ; - armcp15->regionWriteSet_SYS[num] = set ; - armcp15->regionReadMask_SYS[num] = mask ; - armcp15->regionReadSet_SYS[num] = set ; - break ; + this->regionWriteMask_USR[num] = mask; + this->regionWriteSet_USR[num] = set; + this->regionReadMask_USR[num] = mask; + this->regionReadSet_USR[num] = set; + this->regionWriteMask_SYS[num] = mask; + this->regionWriteSet_SYS[num] = set; + this->regionReadMask_SYS[num] = mask; + this->regionReadSet_SYS[num] = set; + break; case 5: /* no access at USR, read to sys */ - armcp15->regionWriteMask_USR[num] = 0 ; - armcp15->regionWriteSet_USR[num] = 0xFFFFFFFF ; - armcp15->regionReadMask_USR[num] = 0 ; - armcp15->regionReadSet_USR[num] = 0xFFFFFFFF ; - armcp15->regionWriteMask_SYS[num] = 0 ; - armcp15->regionWriteSet_SYS[num] = 0xFFFFFFFF ; - armcp15->regionReadMask_SYS[num] = mask ; - armcp15->regionReadSet_SYS[num] = set ; - break ; + this->regionWriteMask_USR[num] = 0; + this->regionWriteSet_USR[num] = 0xFFFFFFFF; + this->regionReadMask_USR[num] = 0; + this->regionReadSet_USR[num] = 0xFFFFFFFF; + this->regionWriteMask_SYS[num] = 0; + this->regionWriteSet_SYS[num] = 0xFFFFFFFF; + this->regionReadMask_SYS[num] = mask; + this->regionReadSet_SYS[num] = set; + break; case 6: /* read at USR, read to sys */ - armcp15->regionWriteMask_USR[num] = 0 ; - armcp15->regionWriteSet_USR[num] = 0xFFFFFFFF ; - armcp15->regionReadMask_USR[num] = mask ; - armcp15->regionReadSet_USR[num] = set ; - armcp15->regionWriteMask_SYS[num] = 0 ; - armcp15->regionWriteSet_SYS[num] = 0xFFFFFFFF ; - armcp15->regionReadMask_SYS[num] = mask ; - armcp15->regionReadSet_SYS[num] = set ; - break ; + this->regionWriteMask_USR[num] = 0; + this->regionWriteSet_USR[num] = 0xFFFFFFFF; + this->regionReadMask_USR[num] = mask; + this->regionReadSet_USR[num] = set; + this->regionWriteMask_SYS[num] = 0; + this->regionWriteSet_SYS[num] = 0xFFFFFFFF; + this->regionReadMask_SYS[num] = mask; + this->regionReadSet_SYS[num] = set; } - switch (ACCESSTYPE(iAccess,num)) { + switch (ACCESSTYPE(iAccess, num)) + { case 4: /* UNP */ case 7: /* UNP */ case 8: /* UNP */ @@ -168,423 +169,386 @@ case 14: /* UNP */ case 15: /* UNP */ case 0: /* no access at all */ - armcp15->regionExecuteMask_USR[num] = 0 ; - armcp15->regionExecuteSet_USR[num] = 0xFFFFFFFF ; - armcp15->regionExecuteMask_SYS[num] = 0 ; - armcp15->regionExecuteSet_SYS[num] = 0xFFFFFFFF ; - break ; + this->regionExecuteMask_USR[num] = 0; + this->regionExecuteSet_USR[num] = 0xFFFFFFFF; + this->regionExecuteMask_SYS[num] = 0; + this->regionExecuteSet_SYS[num] = 0xFFFFFFFF; + break; case 1: - armcp15->regionExecuteMask_USR[num] = 0 ; - armcp15->regionExecuteSet_USR[num] = 0xFFFFFFFF ; - armcp15->regionExecuteMask_SYS[num] = mask ; - armcp15->regionExecuteSet_SYS[num] = set ; - break ; + this->regionExecuteMask_USR[num] = 0; + this->regionExecuteSet_USR[num] = 0xFFFFFFFF; + this->regionExecuteMask_SYS[num] = mask; + this->regionExecuteSet_SYS[num] = set; + break; case 2: case 3: case 6: - armcp15->regionExecuteMask_USR[num] = mask ; - armcp15->regionExecuteSet_USR[num] = set ; - armcp15->regionExecuteMask_SYS[num] = mask ; - armcp15->regionExecuteSet_SYS[num] = set ; - break ; + this->regionExecuteMask_USR[num] = mask; + this->regionExecuteSet_USR[num] = set; + this->regionExecuteMask_SYS[num] = mask; + this->regionExecuteSet_SYS[num] = set; } } /* precalculate region masks/sets from cp15 register */ -void armcp15_maskPrecalc(armcp15_t *armcp15) +void armcp15_t::maskPrecalc() { - #define precalc(num) { \ - u32 mask = 0, set = 0xFFFFFFFF ; /* (x & 0) == 0xFF..FF is allways false (disabled) */ \ - if (BIT_N(armcp15->protectBaseSize##num,0)) /* if region is enabled */ \ - { /* reason for this define: naming includes var */ \ - mask = MASKFROMREG(armcp15->protectBaseSize##num) ; \ - set = SETFROMREG(armcp15->protectBaseSize##num) ; \ - if (SIZEIDENTIFIER(armcp15->protectBaseSize##num)==0x1F) \ - { /* for the 4GB region, u32 suffers wraparound */ \ - mask = 0 ; set = 0 ; /* (x & 0) == 0 is allways true (enabled) */ \ +#define precalc(num) \ +{ \ + uint32_t mask = 0, set = 0xFFFFFFFF; /* (x & 0) == 0xFF..FF is allways false (disabled) */ \ + if (BIT_N(this->protectBaseSize##num, 0)) /* if region is enabled */ \ + { \ + /* reason for this define: naming includes var */ \ + mask = MASKFROMREG(this->protectBaseSize##num); \ + set = SETFROMREG(this->protectBaseSize##num); \ + if (SIZEIDENTIFIER(this->protectBaseSize##num) == 0x1F) \ + { \ + /* for the 4GB region, u32 suffers wraparound */ \ + mask = 0; \ + set = 0; /* (x & 0) == 0 is allways true (enabled) */ \ } \ - } \ - armcp15_setSingleRegionAccess(armcp15,armcp15->DaccessPerm,armcp15->IaccessPerm,num,mask,set) ; \ - } - precalc(0) ; - precalc(1) ; - precalc(2) ; - precalc(3) ; - precalc(4) ; - precalc(5) ; - precalc(6) ; - precalc(7) ; -} - -INLINE BOOL armcp15_isAccessAllowed(armcp15_t *armcp15,u32 address,u32 access) -{ - int i ; - if (!(armcp15->ctrl & 1)) return true ; /* protection checking is not enabled */ - for (i=0;i<8;i++) { - switch (access) { - case CP15_ACCESS_WRITEUSR: - if ((address & armcp15->regionWriteMask_USR[i]) == armcp15->regionWriteSet_USR[i]) return true ; - break ; - case CP15_ACCESS_WRITESYS: - if ((address & armcp15->regionWriteMask_SYS[i]) == armcp15->regionWriteSet_SYS[i]) return true ; - break ; - case CP15_ACCESS_READUSR: - if ((address & armcp15->regionReadMask_USR[i]) == armcp15->regionReadSet_USR[i]) return true ; - break ; - case CP15_ACCESS_READSYS: - if ((address & armcp15->regionReadMask_SYS[i]) == armcp15->regionReadSet_SYS[i]) return true ; - break ; - case CP15_ACCESS_EXECUSR: - if ((address & armcp15->regionExecuteMask_USR[i]) == armcp15->regionExecuteSet_USR[i]) return true ; - break ; - case CP15_ACCESS_EXECSYS: - if ((address & armcp15->regionExecuteMask_SYS[i]) == armcp15->regionExecuteSet_SYS[i]) return true ; - break ; - } - } - /* when protections are enabled, but no region allows access, deny access */ - return false ; + } \ + this->setSingleRegionAccess(this->DaccessPerm, this->IaccessPerm, num, mask, set); \ } - -BOOL armcp15_dataProcess(armcp15_t *armcp15, u8 CRd, u8 CRn, u8 CRm, u8 opcode1, u8 opcode2) -{ - return false; + precalc(0); + precalc(1); + precalc(2); + precalc(3); + precalc(4); + precalc(5); + precalc(6); + precalc(7); +#undef precalc } -BOOL armcp15_load(armcp15_t *armcp15, u8 CRd, u8 adr) +bool armcp15_t::moveCP2ARM(uint32_t *R, uint8_t CRn, uint8_t CRm, uint8_t opcode1, uint8_t opcode2) { - return false; -} - -BOOL armcp15_store(armcp15_t *armcp15, u8 CRd, u8 adr) -{ - return false; -} - -BOOL armcp15_moveCP2ARM(armcp15_t *armcp15, u32 * R, u8 CRn, u8 CRm, u8 opcode1, u8 opcode2) -{ - if(armcp15->cpu->CPSR.bits.mode == USR) return false; + if (!this->cpu) + { + fprintf(stderr, "ERROR: cp15 don\'t allocated\n"); + return false; + } + if (this->cpu->CPSR.bits.mode == USR) + return false; - switch(CRn) + switch (CRn) { - case 0 : - if((opcode1 == 0)&&(CRm==0)) + case 0: + if (!opcode1 && !CRm) { - switch(opcode2) - { - case 1 : - *R = armcp15->cacheType; - return true; - case 2 : - *R = armcp15->TCMSize; - return true; - default : - *R = armcp15->IDCode; - return true; - } + switch (opcode2) + { + case 1: + *R = this->cacheType; + return true; + case 2: + *R = this->TCMSize; + return true; + default: + *R = this->IDCode; + return true; + } } return false; - case 1 : - if((opcode1==0) && (opcode2==0) && (CRm==0)) + case 1: + if (!opcode1 && !opcode2 && !CRm) { - *R = armcp15->ctrl; + *R = this->ctrl; return true; } return false; - - case 2 : - if((opcode1==0) && (CRm==0)) + case 2: + if (!opcode1 && !CRm) { - switch(opcode2) + switch (opcode2) { - case 0 : - *R = armcp15->DCConfig; - return true; - case 1 : - *R = armcp15->ICConfig; - return true; - default : - return false; + case 0: + *R = this->DCConfig; + return true; + case 1: + *R = this->ICConfig; + return true; + default: + return false; } } return false; - case 3 : - if((opcode1==0) && (opcode2==0) && (CRm==0)) + case 3: + if (!opcode1 && ~static_cast(opcode2) && !CRm) { - *R = armcp15->writeBuffCtrl; + *R = this->writeBuffCtrl; return true; } return false; - case 5 : - if((opcode1==0) && (CRm==0)) + case 5: + if (!opcode1 && !CRm) { - switch(opcode2) + switch (opcode2) { - case 2 : - *R = armcp15->DaccessPerm; - return true; - case 3 : - *R = armcp15->IaccessPerm; - return true; - default : - return false; + case 2: + *R = this->DaccessPerm; + return true; + case 3: + *R = this->IaccessPerm; + return true; + default: + return false; } } return false; - case 6 : - if((opcode1==0) && (opcode2==0)) + case 6: + if (!opcode1 && !opcode2) { - switch(CRm) + switch (CRm) { - case 0 : - *R = armcp15->protectBaseSize0; - return true; - case 1 : - *R = armcp15->protectBaseSize1; - return true; - case 2 : - *R = armcp15->protectBaseSize2; - return true; - case 3 : - *R = armcp15->protectBaseSize3; - return true; - case 4 : - *R = armcp15->protectBaseSize4; - return true; - case 5 : - *R = armcp15->protectBaseSize5; - return true; - case 6 : - *R = armcp15->protectBaseSize6; - return true; - case 7 : - *R = armcp15->protectBaseSize7; - return true; - default : - return false; + case 0: + *R = this->protectBaseSize0; + return true; + case 1: + *R = this->protectBaseSize1; + return true; + case 2: + *R = this->protectBaseSize2; + return true; + case 3: + *R = this->protectBaseSize3; + return true; + case 4: + *R = this->protectBaseSize4; + return true; + case 5: + *R = this->protectBaseSize5; + return true; + case 6: + *R = this->protectBaseSize6; + return true; + case 7: + *R = this->protectBaseSize7; + return true; + default: + return false; } } return false; - case 9 : - if(opcode1==0) + case 9: + if (!opcode1) { - switch(CRm) + switch (CRm) { - case 0 : - switch(opcode2) + case 0: + switch (opcode2) { - case 0 : - *R = armcp15->DcacheLock; - return true; - case 1 : - *R = armcp15->IcacheLock; - return true; - default : + case 0: + *R = this->DcacheLock; + return true; + case 1: + *R = this->IcacheLock; + return true; + default: return false; } - case 1 : - switch(opcode2) + case 1: + switch (opcode2) { - case 0 : - *R = armcp15->DTCMRegion; - return true; - case 1 : - *R = armcp15->ITCMRegion; - return true; - default : - return false; + case 0: + *R = this->DTCMRegion; + return true; + case 1: + *R = this->ITCMRegion; + return true; + default: + return false; } } } - return false; - default : + return false; + default: return false; } } - -u32 CP15wait4IRQ(armcpu_t *cpu) +bool armcp15_t::moveARM2CP(uint32_t val, uint8_t CRn, uint8_t CRm, uint8_t opcode1, uint8_t opcode2) { - /* on the first call, wirq is not set */ - if(cpu->wirq) + if (!this->cpu) { - /* check wether an irq was issued */ - if(!cpu->waitIRQ) - { - cpu->waitIRQ = 0; - cpu->wirq = 0; - return 1; /* return execution */ - } - /* otherwise, repeat this instruction */ - cpu->R[15] = cpu->instruct_adr; - cpu->next_instruction = cpu->R[15]; - return 1; + fprintf(stderr, "ERROR: cp15 don\'t allocated\n"); + return false; } - /* first run, set us into waiting state */ - cpu->waitIRQ = 1; - cpu->wirq = 1; - /* and set next instruction to repeat this */ - cpu->R[15] = cpu->instruct_adr; - cpu->next_instruction = cpu->R[15]; - /* CHECKME: IME shouldn't be modified (?) */ - MMU.reg_IME[0] = 1; - return 1; -} - -BOOL armcp15_moveARM2CP(armcp15_t *armcp15, u32 val, u8 CRn, u8 CRm, u8 opcode1, u8 opcode2) -{ - if(armcp15->cpu->CPSR.bits.mode == USR) return false; + if (this->cpu->CPSR.bits.mode == USR) + return false; - switch(CRn) + switch (CRn) { - case 1 : - if((opcode1==0) && (opcode2==0) && (CRm==0)) - { - armcp15->ctrl = val; - MMU.ARM9_RW_MODE = BIT7(val); - armcp15->cpu->intVector = 0x0FFF0000 * (BIT13(val)); - armcp15->cpu->LDTBit = !BIT15(val); //TBit - /*if(BIT17(val)) - { - log::ajouter("outch !!!!!!!"); - } - if(BIT19(val)) - { - log::ajouter("outch !!!!!!!"); - }*/ - return true; - } - return false; - case 2 : - if((opcode1==0) && (CRm==0)) - { - switch(opcode2) - { - case 0 : - armcp15->DCConfig = val; - return true; - case 1 : - armcp15->ICConfig = val; - return true; - default : - return false; + case 1: + if (!opcode1 && !opcode2 && !CRm) + { + // On the NDS bit0,2,7,12..19 are R/W, Bit3..6 are always set, all other bits are always zero. + this->ctrl = (val & 0x000FF085) | 0x00000078; + MMU.ARM9_RW_MODE = BIT7(val); + // zero 31-jan-2010: change from 0x0FFF0000 to 0xFFFF0000 per gbatek + this->cpu->intVector = 0xFFFF0000 * BIT13(val); + this->cpu->LDTBit = !BIT15(val); // TBit + return true; } - } - return false; - case 3 : - if((opcode1==0) && (opcode2==0) && (CRm==0)) - { - armcp15->writeBuffCtrl = val; - return true; - } - return false; - if((opcode1==0) && (CRm==0)) - { - switch(opcode2) - { - case 2 : - armcp15->DaccessPerm = val; - armcp15_maskPrecalc(armcp15); - return true; - case 3 : - armcp15->IaccessPerm = val; - armcp15_maskPrecalc(armcp15); - return true; - default : - return false; + return false; + case 2: + if (!opcode1 && !CRm) + { + switch (opcode2) + { + case 0: + this->DCConfig = val; + return true; + case 1: + this->ICConfig = val; + return true; + default: + return false; + } } - } - return false; - case 6 : - if((opcode1==0) && (opcode2==0)) - { - switch(CRm) - { - case 0 : - armcp15->protectBaseSize0 = val; - armcp15_maskPrecalc(armcp15) ; - return true; - case 1 : - armcp15->protectBaseSize1 = val; - armcp15_maskPrecalc(armcp15) ; - return true; - case 2 : - armcp15->protectBaseSize2 = val; - armcp15_maskPrecalc(armcp15) ; - return true; - case 3 : - armcp15->protectBaseSize3 = val; - armcp15_maskPrecalc(armcp15) ; - return true; - case 4 : - armcp15->protectBaseSize4 = val; - armcp15_maskPrecalc(armcp15) ; - return true; - case 5 : - armcp15->protectBaseSize5 = val; - armcp15_maskPrecalc(armcp15) ; - return true; - case 6 : - armcp15->protectBaseSize6 = val; - armcp15_maskPrecalc(armcp15) ; - return true; - case 7 : - armcp15->protectBaseSize7 = val; - armcp15_maskPrecalc(armcp15) ; - return true; - default : - return false; + return false; + case 3: + if (!opcode1 && !opcode2 && !CRm) + { + this->writeBuffCtrl = val; + return true; } - } - return false; - case 7 : - if((CRm==0)&&(opcode1==0)&&((opcode2==4))) - { - CP15wait4IRQ(armcp15->cpu); - return true; - } - return false; - case 9 : - if(opcode1==0) - { - switch(CRm) + return false; + case 5: + if (!opcode1 && !CRm) { - case 0 : - switch(opcode2) + switch (opcode2) { - case 0 : - armcp15->DcacheLock = val; + case 2: + this->DaccessPerm = val; + this->maskPrecalc(); return true; - case 1 : - armcp15->IcacheLock = val; + case 3: + this->IaccessPerm = val; + this->maskPrecalc(); return true; - default : + default: return false; + } } - case 1 : - switch(opcode2) + return false; + case 6: + if (!opcode1 && !opcode2) { - case 0 : - armcp15->DTCMRegion = val; - MMU.DTCMRegion = val & 0x0FFFFFFC0; - /*sprintf(logbuf, "%08X", val); - log::ajouter(logbuf);*/ - return true; - case 1 : - armcp15->ITCMRegion = val; - /* ITCM base is not writeable! */ - MMU.ITCMRegion = 0; - return true; - default : - return false; + switch (CRm) + { + case 0: + this->protectBaseSize0 = val; + this->maskPrecalc(); + return true; + case 1: + this->protectBaseSize1 = val; + this->maskPrecalc(); + return true; + case 2: + this->protectBaseSize2 = val; + this->maskPrecalc(); + return true; + case 3: + this->protectBaseSize3 = val; + this->maskPrecalc(); + return true; + case 4: + this->protectBaseSize4 = val; + this->maskPrecalc(); + return true; + case 5: + this->protectBaseSize5 = val; + this->maskPrecalc(); + return true; + case 6: + this->protectBaseSize6 = val; + this->maskPrecalc(); + return true; + case 7: + this->protectBaseSize7 = val; + this->maskPrecalc(); + return true; + default: + return false; + } + } + return false; + case 7: + if (!CRm && !opcode1 && opcode2 == 4) + { + this->cpu->waitIRQ = true; + this->cpu->halt_IE_and_IF = true; + // IME set deliberately omitted: only SWI sets IME to 1 + return true; + } + return false; + case 9: + if (!opcode1) + { + switch (CRm) + { + case 0: + switch (opcode2) + { + case 0: + this->DcacheLock = val; + return true; + case 1: + this->IcacheLock = val; + return true; + default: + return false; + } + case 1: + switch (opcode2) + { + case 0: + MMU.DTCMRegion = this->DTCMRegion = val & 0x0FFFF000; + return true; + case 1: + this->ITCMRegion = val; + // ITCM base is not writeable! + MMU.ITCMRegion = 0; + return true; + default: + return false; + } } } - } - return false; - default : + return false; + default: return false; } } - - +/* precalculate region masks/sets from cp15 register ----- JIT */ +void maskPrecalc() +{ +#define precalc(num) \ +{ \ + uint32_t mask = 0, set = 0xFFFFFFFF; /* (x & 0) == 0xFF..FF is allways false (disabled) */ \ + if (BIT_N(cp15.protectBaseSize##num, 0)) /* if region is enabled */ \ + { \ + /* reason for this define: naming includes var */ \ + mask = MASKFROMREG(cp15.protectBaseSize##num); \ + set = SETFROMREG(cp15.protectBaseSize##num); \ + if (SIZEIDENTIFIER(cp15.protectBaseSize##num) == 0x1F) \ + { \ + /* for the 4GB region, u32 suffers wraparound */ \ + mask = 0; \ + set = 0; /* (x & 0) == 0 is allways true (enabled) */ \ + } \ + } \ + cp15.setSingleRegionAccess(cp15.DaccessPerm, cp15.IaccessPerm, num, mask, set); \ +} + precalc(0); + precalc(1); + precalc(2); + precalc(3); + precalc(4); + precalc(5); + precalc(6); + precalc(7); +#undef precalc +} diff -Nru audacious-plugins-4.1/src/xsf/desmume/cp15.h audacious-plugins-4.3.1/src/xsf/desmume/cp15.h --- audacious-plugins-4.1/src/xsf/desmume/cp15.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/cp15.h 2023-04-29 20:17:32.000000000 +0000 @@ -1,93 +1,111 @@ -/* Copyright (C) 2006 yopyop - yopyop156@ifrance.com - yopyop156.ifrance.com - - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +/* + Copyright (C) 2006 yopyop + Copyright (C) 2006-2010 DeSmuME team + + This file 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 file 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 the this software. If not, see . */ -#ifndef __CP15_H__ -#define __CP15_H__ +#pragma once #include "armcpu.h" -typedef struct +const uint32_t CP15_ACCESS_WRITE = 0; +const uint32_t CP15_ACCESS_READ = 2; +const uint32_t CP15_ACCESS_EXECUTE = 4; +const uint32_t CP15_ACCESS_WRITEUSR = CP15_ACCESS_WRITE; +const uint32_t CP15_ACCESS_WRITESYS = 1; +const uint32_t CP15_ACCESS_READUSR = CP15_ACCESS_READ; +const uint32_t CP15_ACCESS_READSYS = 3; +const uint32_t CP15_ACCESS_EXECUSR = CP15_ACCESS_EXECUTE; +const uint32_t CP15_ACCESS_EXECSYS = 5; + +struct armcp15_t { - u32 IDCode; - u32 cacheType; - u32 TCMSize; - u32 ctrl; - u32 DCConfig; - u32 ICConfig; - u32 writeBuffCtrl; - u32 und; - u32 DaccessPerm; - u32 IaccessPerm; - u32 protectBaseSize0; - u32 protectBaseSize1; - u32 protectBaseSize2; - u32 protectBaseSize3; - u32 protectBaseSize4; - u32 protectBaseSize5; - u32 protectBaseSize6; - u32 protectBaseSize7; - u32 cacheOp; - u32 DcacheLock; - u32 IcacheLock; - u32 ITCMRegion; - u32 DTCMRegion; - u32 processID; - u32 RAM_TAG; - u32 testState; - u32 cacheDbg; - /* calculated bitmasks for the regions to decide rights uppon */ - /* calculation is done in the MCR instead of on mem access for performance */ - u32 regionWriteMask_USR[8] ; - u32 regionWriteMask_SYS[8] ; - u32 regionReadMask_USR[8] ; - u32 regionReadMask_SYS[8] ; - u32 regionExecuteMask_USR[8] ; - u32 regionExecuteMask_SYS[8] ; - u32 regionWriteSet_USR[8] ; - u32 regionWriteSet_SYS[8] ; - u32 regionReadSet_USR[8] ; - u32 regionReadSet_SYS[8] ; - u32 regionExecuteSet_USR[8] ; - u32 regionExecuteSet_SYS[8] ; - - armcpu_t * cpu; - -} armcp15_t; - -armcp15_t *armcp15_new(armcpu_t *c); -BOOL armcp15_dataProcess(armcp15_t *armcp15, u8 CRd, u8 CRn, u8 CRm, u8 opcode1, u8 opcode2); -BOOL armcp15_load(armcp15_t *armcp15, u8 CRd, u8 adr); -BOOL armcp15_store(armcp15_t *armcp15, u8 CRd, u8 adr); -BOOL armcp15_moveCP2ARM(armcp15_t *armcp15, u32 * R, u8 CRn, u8 CRm, u8 opcode1, u8 opcode2); -BOOL armcp15_moveARM2CP(armcp15_t *armcp15, u32 val, u8 CRn, u8 CRm, u8 opcode1, u8 opcode2); -BOOL armcp15_isAccessAllowed(armcp15_t *armcp15, u32 address, u32 access); - -#define CP15_ACCESS_WRITE 0 -#define CP15_ACCESS_READ 2 -#define CP15_ACCESS_EXECUTE 4 -#define CP15_ACCESS_WRITEUSR CP15_ACCESS_WRITE -#define CP15_ACCESS_WRITESYS 1 -#define CP15_ACCESS_READUSR CP15_ACCESS_READ -#define CP15_ACCESS_READSYS 3 -#define CP15_ACCESS_EXECUSR CP15_ACCESS_EXECUTE -#define CP15_ACCESS_EXECSYS 5 +public: + uint32_t IDCode; + uint32_t cacheType; + uint32_t TCMSize; + uint32_t ctrl; + uint32_t DCConfig; + uint32_t ICConfig; + uint32_t writeBuffCtrl; + uint32_t und; + uint32_t DaccessPerm; + uint32_t IaccessPerm; + uint32_t protectBaseSize0; + uint32_t protectBaseSize1; + uint32_t protectBaseSize2; + uint32_t protectBaseSize3; + uint32_t protectBaseSize4; + uint32_t protectBaseSize5; + uint32_t protectBaseSize6; + uint32_t protectBaseSize7; + uint32_t cacheOp; + uint32_t DcacheLock; + uint32_t IcacheLock; + uint32_t ITCMRegion; + uint32_t DTCMRegion; + uint32_t processID; + uint32_t RAM_TAG; + uint32_t testState; + uint32_t cacheDbg; + /* calculated bitmasks for the regions to decide rights uppon */ + /* calculation is done in the MCR instead of on mem access for performance */ + uint32_t regionWriteMask_USR[8]; + uint32_t regionWriteMask_SYS[8]; + uint32_t regionReadMask_USR[8]; + uint32_t regionReadMask_SYS[8]; + uint32_t regionExecuteMask_USR[8]; + uint32_t regionExecuteMask_SYS[8]; + uint32_t regionWriteSet_USR[8]; + uint32_t regionWriteSet_SYS[8]; + uint32_t regionReadSet_USR[8]; + uint32_t regionReadSet_SYS[8]; + uint32_t regionExecuteSet_USR[8]; + uint32_t regionExecuteSet_SYS[8]; + + armcpu_t *cpu; + + void setSingleRegionAccess(uint32_t dAccess, uint32_t iAccess, unsigned char num, uint32_t mask, uint32_t set); + void maskPrecalc(); + +public: + armcp15_t() : IDCode(0), cacheType(0), TCMSize(0), ctrl(0), DCConfig(0), ICConfig(0), writeBuffCtrl(0), und(0), DaccessPerm(0), IaccessPerm(0), protectBaseSize0(0), protectBaseSize1(0), protectBaseSize2(0), + protectBaseSize3(0), protectBaseSize4(0), protectBaseSize5(0), protectBaseSize6(0), protectBaseSize7(0), cacheOp(0), DcacheLock(0), IcacheLock(0), ITCMRegion(0), DTCMRegion(0), processID(0), RAM_TAG(0), + testState(0), cacheDbg(0), cpu(nullptr) + { + memset(&this->regionWriteMask_USR[0], 0, sizeof(this->regionWriteMask_USR)); + memset(&this->regionWriteMask_SYS[0], 0, sizeof(this->regionWriteMask_SYS)); + memset(&this->regionReadMask_USR[0], 0, sizeof(this->regionReadMask_USR)); + memset(&this->regionReadMask_SYS[0], 0, sizeof(this->regionReadMask_SYS)); + memset(&this->regionExecuteMask_USR[0], 0, sizeof(this->regionExecuteMask_USR)); + memset(&this->regionExecuteMask_SYS[0], 0, sizeof(this->regionExecuteMask_SYS)); + memset(&this->regionWriteSet_USR[0], 0, sizeof(this->regionWriteSet_USR)); + memset(&this->regionWriteSet_SYS[0], 0, sizeof(this->regionWriteSet_SYS)); + memset(&this->regionReadSet_USR[0], 0, sizeof(this->regionReadSet_USR)); + memset(&this->regionReadSet_SYS[0], 0, sizeof(this->regionReadSet_SYS)); + memset(&this->regionExecuteSet_USR[0], 0, sizeof(this->regionExecuteSet_USR)); + memset(&this->regionExecuteSet_SYS[0], 0, sizeof(this->regionExecuteSet_SYS)); + } + bool reset(armcpu_t *c); + bool dataProcess(uint8_t CRd, uint8_t CRn, uint8_t CRm, uint8_t opcode1, uint8_t opcode2); + bool load(uint8_t CRd, uint8_t adr); + bool store(uint8_t CRd, uint8_t adr); + bool moveCP2ARM(uint32_t *R, uint8_t CRn, uint8_t CRm, uint8_t opcode1, uint8_t opcode2); + bool moveARM2CP(uint32_t val, uint8_t CRn, uint8_t CRm, uint8_t opcode1, uint8_t opcode2); + bool isAccessAllowed(uint32_t address,uint32_t access); +}; -#endif /* __CP15_H__*/ +extern armcp15_t cp15; +void maskPrecalc(); diff -Nru audacious-plugins-4.1/src/xsf/desmume/emufile.cc audacious-plugins-4.3.1/src/xsf/desmume/emufile.cc --- audacious-plugins-4.1/src/xsf/desmume/emufile.cc 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/emufile.cc 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,49 @@ +/* +The MIT License + +Copyright (C) 2009-2010 DeSmuME team + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#include "emufile.h" + +size_t EMUFILE_MEMORY::_fread(void *ptr, size_t bytes) +{ + uint32_t remain = this->len - this->pos; + uint32_t todo = std::min(remain, bytes); + if (!len) + { + this->failbit = true; + return 0; + } + if (todo <= 4) + { + uint8_t *src = this->buf() + this->pos; + uint8_t *dst = static_cast(ptr); + for (uint32_t i = 0; i < todo; ++i) + *dst++ = *src++; + } + else + memcpy(ptr, this->buf() + this->pos, todo); + this->pos += todo; + if (todo < bytes) + this->failbit = true; + return todo; +} diff -Nru audacious-plugins-4.1/src/xsf/desmume/emufile.h audacious-plugins-4.3.1/src/xsf/desmume/emufile.h --- audacious-plugins-4.1/src/xsf/desmume/emufile.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/emufile.h 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,208 @@ +/* +The MIT License + +Copyright (C) 2009-2012 DeSmuME team + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +// don't use emufile for files bigger than 2GB! you have been warned! some day this will be fixed. + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include "types.h" + +#if defined(_MSC_VER) || defined(__MINGW32__) +# include +#else +# include +#endif + +class EMUFILE +{ +protected: + bool failbit; + +public: + EMUFILE() : failbit(false) { } + virtual ~EMUFILE() { } + + bool fail(bool unset = false) + { + bool ret = failbit; + if (unset) + unfail(); + return ret; + } + void unfail() { failbit = false; } + + size_t fread(void *ptr, size_t bytes) + { + return _fread(ptr, bytes); + } + + // virtuals + virtual size_t _fread(void *ptr, size_t bytes) = 0; + + virtual int fseek(int offset, int origin) = 0; + + virtual size_t ftell() = 0; + virtual size_t size() = 0; +}; + +// todo - handle read-only specially? +class EMUFILE_MEMORY : public EMUFILE +{ +protected: + std::vector *vec; + bool ownvec; + int32_t pos, len; + + void reserve(uint32_t amt) + { + if (this->vec->size() < amt) + this->vec->resize(amt); + } +public: + EMUFILE_MEMORY(std::vector *underlying) : vec(underlying), ownvec(false), pos(0), len(underlying->size()) { } + EMUFILE_MEMORY(uint32_t preallocate) : vec(new std::vector()), ownvec(true), pos(0), len(0) + { + this->vec->resize(preallocate); + this->len = preallocate; + } + EMUFILE_MEMORY() : vec(new std::vector()), ownvec(true), pos(0), len(0) + { + this->vec->reserve(1024); + } + EMUFILE_MEMORY(void *Buf, int32_t Size) : vec(new std::vector()), ownvec(true), pos(0), len(Size) + { + this->vec->resize(Size); + if (Size) + memcpy(&(*this->vec)[0], Buf, Size); + } + + ~EMUFILE_MEMORY() + { + if (this->ownvec) + delete this->vec; + } + + uint8_t *buf() + { + if (!this->size()) + this->reserve(1); + return &(*this->vec)[0]; + } + + virtual size_t _fread(void *ptr, size_t bytes); + + virtual int fseek(int offset, int origin) + { + // work differently for read-only...? + switch (origin) + { + case SEEK_SET: + this->pos = offset; + break; + case SEEK_CUR: + this->pos += offset; + break; + case SEEK_END: + this->pos = this->size() + offset; + break; + default: + assert(false); + } + this->reserve(pos); + return 0; + } + + virtual size_t ftell() + { + return this->pos; + } + + virtual size_t size() + { + return this->len; + } +}; + +class EMUFILE_FILE : public EMUFILE +{ +protected: + FILE *fp; + std::string fname; + char mode[16]; +private: + void open(const char *fn, const char *Mode) + { + this->fp = fopen(fn, Mode); + if (!this->fp) + this->failbit = true; + this->fname = fn; + strcpy(this->mode, Mode); + } +public: + EMUFILE_FILE(const std::string &fn, const char *Mode) + { + this->open(fn.c_str(), Mode); + } + + virtual ~EMUFILE_FILE() + { + if (this->fp) + fclose(this->fp); + } + + virtual size_t _fread(void *ptr, size_t bytes) + { + size_t ret = ::fread(ptr, 1, bytes, this->fp); + if (ret < bytes) + this->failbit = true; + return ret; + } + + virtual int fseek(int offset, int origin) + { + return ::fseek(this->fp, offset, origin); + } + + virtual size_t ftell() + { + return ::ftell(this->fp); + } + + virtual size_t size() + { + int oldpos = this->ftell(); + this->fseek(0, SEEK_END); + int len = this->ftell(); + this->fseek(oldpos, SEEK_SET); + return len; + } +}; diff -Nru audacious-plugins-4.1/src/xsf/desmume/firmware.cc audacious-plugins-4.3.1/src/xsf/desmume/firmware.cc --- audacious-plugins-4.1/src/xsf/desmume/firmware.cc 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/firmware.cc 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,627 @@ +/* + Copyright (C) 2009-2011 DeSmuME Team + + This file 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 file 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 the this software. If not, see . +*/ + +#include "firmware.h" +#include "NDSSystem.h" + +#define WANT_AUD_BSWAP +#include + +static inline uint32_t DWNUM(uint32_t i) { return i >> 2; } + +bool CFIRMWARE::getKeyBuf() +{ + FILE *file = fopen(CommonSettings.ARM7BIOS, "rb"); + if (!file) + return false; + + fseek(file, 0x30, SEEK_SET); + size_t res = fread(this->keyBuf, 4, 0x412, file); + fclose(file); + return res == 0x412; +} + +void CFIRMWARE::crypt64BitUp(uint32_t *ptr) +{ + uint32_t Y = ptr[0]; + uint32_t X = ptr[1]; + + for (uint32_t i = 0x00; i <= 0x0F; ++i) + { + uint32_t Z = this->keyBuf[i] ^ X; + X = this->keyBuf[DWNUM(0x048 + (((Z >> 24) & 0xFF) << 2))]; + X = this->keyBuf[DWNUM(0x448 + (((Z >> 16) & 0xFF) << 2))] + X; + X = this->keyBuf[DWNUM(0x848 + (((Z >> 8) & 0xFF) << 2))] ^ X; + X = this->keyBuf[DWNUM(0xC48 + ((Z & 0xFF) << 2))] + X; + X = Y ^ X; + Y = Z; + } + + ptr[0] = X ^ this->keyBuf[DWNUM(0x40)]; + ptr[1] = Y ^ this->keyBuf[DWNUM(0x44)]; +} + +void CFIRMWARE::crypt64BitDown(uint32_t *ptr) +{ + uint32_t Y = ptr[0]; + uint32_t X = ptr[1]; + + for (uint32_t i = 0x11; i >= 0x02; --i) + { + uint32_t Z = this->keyBuf[i] ^ X; + X = this->keyBuf[DWNUM(0x048 + (((Z >> 24) & 0xFF) << 2))]; + X = this->keyBuf[DWNUM(0x448 + (((Z >> 16) & 0xFF) << 2))] + X; + X = this->keyBuf[DWNUM(0x848 + (((Z >> 8) & 0xFF) << 2))] ^ X; + X = this->keyBuf[DWNUM(0xC48 + ((Z & 0xFF) << 2))] + X; + X = Y ^ X; + Y = Z; + } + + ptr[0] = X ^ this->keyBuf[DWNUM(0x04)]; + ptr[1] = Y ^ this->keyBuf[DWNUM(0x00)]; +} + +void CFIRMWARE::applyKeycode(uint32_t modulo) +{ + this->crypt64BitUp(&this->keyCode[1]); + this->crypt64BitUp(&this->keyCode[0]); + + uint32_t scratch[] = { 0x00000000, 0x00000000 }; + + for (uint32_t i = 0; i <= 0x44; i += 4) + this->keyBuf[DWNUM(i)] = this->keyBuf[DWNUM(i)] ^ bswap32(this->keyCode[DWNUM(i % modulo)]); + + for (uint32_t i = 0; i <= 0x1040; i += 8) + { + this->crypt64BitUp(scratch); + this->keyBuf[DWNUM(i)] = scratch[1]; + this->keyBuf[DWNUM(i + 4)] = scratch[0]; + } +} + +bool CFIRMWARE::initKeycode(uint32_t idCode, int level, uint32_t modulo) +{ + if (!this->getKeyBuf()) + return false; + + this->keyCode[0] = idCode; + this->keyCode[1] = idCode >> 1; + this->keyCode[2] = idCode << 1; + + if (level >= 1) + this->applyKeycode(modulo); + if (level >= 2) + this->applyKeycode(modulo); + + this->keyCode[1] <<= 1; + this->keyCode[2] >>= 1; + + if (level >= 3) + this->applyKeycode(modulo); + + return true; +} + +uint16_t CFIRMWARE::getBootCodeCRC16() +{ + uint32_t crc = 0xFFFF; + const uint16_t val[] = { 0xC0C1, 0xC181, 0xC301, 0xC601, 0xCC01, 0xD801, 0xF001, 0xA001 }; + + unsigned i, j; + for (i = 0; i < this->size9; ++i) + { + crc ^= this->tmp_data9[i]; + + for (j = 0; j < 8; ++j) + { + if (crc & 0x0001) + crc = (crc >> 1) ^ (val[j] << (7 - j)); + else + crc >>= 1; + } + } + + for (i = 0; i < this->size7; ++i) + { + crc ^= this->tmp_data7[i]; + + for (j = 0; j < 8; ++j) + { + if (crc & 0x0001) + crc = (crc >> 1) ^ (val[j] << (7 - j)); + else + crc >>= 1; + } + } + + return crc & 0xFFFF; +} + +uint32_t CFIRMWARE::decrypt(const uint8_t *in, std::unique_ptr &out) +{ + uint32_t curBlock[2] = { 0 }; + + uint32_t xIn = 4, xOut = 0; + + memcpy(curBlock, in, 8); + this->crypt64BitDown(curBlock); + uint32_t blockSize = curBlock[0] >> 8; + + if (!blockSize) + return 0; + + out.reset(new uint8_t[blockSize]); + if (!out) + return 0; + memset(&out[0], 0xFF, blockSize); + + uint32_t xLen = blockSize; + while (xLen > 0) + { + uint8_t d = T1ReadByte(reinterpret_cast(curBlock), xIn % 8); + ++xIn; + if (!(xIn % 8)) + { + memcpy(curBlock, in + xIn, 8); + this->crypt64BitDown(curBlock); + } + + for (uint32_t i = 0; i < 8; ++i) + { + if (d & 0x80) + { + uint16_t data = T1ReadByte(reinterpret_cast(curBlock), xIn % 8) << 8; + ++xIn; + if (!(xIn % 8)) + { + memcpy(curBlock, in + xIn, 8); + this->crypt64BitDown(curBlock); + } + data |= T1ReadByte(reinterpret_cast(curBlock), xIn % 8); + ++xIn; + if (!(xIn % 8)) + { + memcpy(curBlock, in + xIn, 8); + this->crypt64BitDown(curBlock); + } + + uint32_t len = (data >> 12) + 3; + uint32_t offset = data & 0xFFF; + uint32_t windowOffset = xOut - offset - 1; + + for (uint32_t j = 0; j < len; ++j) + { + T1WriteByte(&out[0], xOut, T1ReadByte(&out[0], windowOffset)); + ++xOut; + ++windowOffset; + + --xLen; + if (!xLen) + return blockSize; + } + } + else + { + T1WriteByte(&out[0], xOut, T1ReadByte(reinterpret_cast(curBlock), xIn % 8)); + ++xOut; + ++xIn; + if (!(xIn % 8)) + { + memcpy(curBlock, in + xIn, 8); + this->crypt64BitDown(curBlock); + } + + --xLen; + if (!xLen) + return blockSize; + } + + d = (d << 1) & 0xFF; + } + } + + return blockSize; +} + +uint32_t CFIRMWARE::decompress(const uint8_t *in, std::unique_ptr &out) +{ + uint32_t curBlock[2] = { 0 }; + + uint32_t xIn = 4, xOut = 0; + + memcpy(curBlock, in, 8); + uint32_t blockSize = curBlock[0] >> 8; + + if (!blockSize) + return 0; + + out.reset(new uint8_t[blockSize]); + if (!out) + return 0; + memset(&out[0], 0xFF, blockSize); + + uint32_t xLen = blockSize; + while (xLen > 0) + { + uint8_t d = T1ReadByte(reinterpret_cast(curBlock), xIn % 8); + ++xIn; + if (!(xIn % 8)) + memcpy(curBlock, in + xIn, 8); + + for (uint32_t i = 0; i < 8; ++i) + { + if (d & 0x80) + { + uint16_t data = T1ReadByte(reinterpret_cast(curBlock), xIn % 8) << 8; + ++xIn; + if (!(xIn % 8)) + memcpy(curBlock, in + xIn, 8); + data |= T1ReadByte(reinterpret_cast(curBlock), xIn % 8); + ++xIn; + if (!(xIn % 8)) + memcpy(curBlock, in + xIn, 8); + + uint32_t len = (data >> 12) + 3; + uint32_t offset = data & 0xFFF; + uint32_t windowOffset = xOut - offset - 1; + + for (uint32_t j = 0; j < len; ++j) + { + T1WriteByte(&out[0], xOut, T1ReadByte(&out[0], windowOffset)); + ++xOut; + ++windowOffset; + + --xLen; + if (!xLen) + return blockSize; + } + } + else + { + T1WriteByte(&out[0], xOut, T1ReadByte(reinterpret_cast(curBlock), xIn % 8)); + ++xOut; + ++xIn; + if (!(xIn % 8)) + memcpy(curBlock, in + xIn, 8); + + --xLen; + if (!xLen) + return blockSize; + } + + d = (d << 1) & 0xFF; + } + } + + return blockSize; +} + +// ================================================================================ +bool CFIRMWARE::load() +{ + if (!CommonSettings.UseExtFirmware) + return false; + if (!strlen(CommonSettings.Firmware)) + return false; + + FILE *fp = fopen(CommonSettings.Firmware, "rb"); + if (!fp) + return false; + fseek(fp, 0, SEEK_END); + uint32_t size = ftell(fp); + fseek(fp, 0, SEEK_SET); + if (size != 262144 && size != 524288) + { + fclose(fp); + return false; + } + +#if 1 + if (size == 524288) + { + fclose(fp); + return false; + } +#endif + + auto data = std::unique_ptr(new uint8_t[size]); + if (!data) + { + fclose(fp); + return false; + } + + if (fread(&data[0], 1, size, fp) != size) + { + fclose(fp); + return false; + } + + memcpy(&header, &data[0], sizeof(header)); + if (header.fw_identifier[0] != 'M' || header.fw_identifier[1] != 'A' || header.fw_identifier[2] != 'C') + { + fclose(fp); + return false; + } + + uint16_t shift1 = header.shift_amounts & 0x07; + uint16_t shift2 = (header.shift_amounts >> 3) & 0x07; + uint16_t shift3 = (header.shift_amounts >> 6) & 0x07; + uint16_t shift4 = (header.shift_amounts >> 9) & 0x07; + + // todo - add support for 512Kb + uint32_t part1addr = header.part1_rom_boot9_addr << (2 + shift1); + uint32_t part1ram = 0x02800000 - (header.part1_ram_boot9_addr << (2 + shift2)); + uint32_t part2addr = header.part2_rom_boot7_addr << (2 + shift3); + uint32_t part2ram = 0x03810000 - (header.part2_ram_boot7_addr << (2 + shift4)); + + this->ARM9bootAddr = part1ram; + this->ARM7bootAddr = part2ram; + + if (!this->initKeycode(T1ReadLong(&data[0], 0x08), 1, 0xC)) + { + fclose(fp); + return false; + } + +#if 0 + this->crypt64BitDown(reinterpret_cast(&data[0x18])); +#else + // fix touch coords + data[0x18] = 0x00; + data[0x19] = 0x00; + data[0x1A] = 0x00; + data[0x1B] = 0x00; + + data[0x1C] = 0x00; + data[0x1D] = 0xFF; + data[0x1E] = 0x00; + data[0x1F] = 0x00; +#endif + + if (!this->initKeycode(T1ReadLong(&data[0], 0x08), 2, 0xC)) + { + fclose(fp); + return false; + } + + this->size9 = this->decrypt(&data[part1addr], this->tmp_data9); + if (!this->tmp_data9) + { + fclose(fp); + return false; + } + + this->size7 = this->decrypt(&data[part2addr], this->tmp_data7); + if (!this->tmp_data7) + { + this->tmp_data9.reset(); + fclose(fp); + return false; + } + + uint16_t crc16_mine = this->getBootCodeCRC16(); + + if (crc16_mine != header.part12_boot_crc16) + { + this->tmp_data9.reset(); + this->tmp_data7.reset(); + fclose(fp); + return false; + } + + // Copy firmware boot codes to their respective locations + uint32_t src = 0; + for (uint32_t i = 0; i < (this->size9 >> 2); ++i) + { + _MMU_write32(part1ram, T1ReadLong(&this->tmp_data9[0], src)); + src += 4; + part1ram += 4; + } + + src = 0; + for (uint32_t i = 0; i < (this->size7 >> 2); ++i) + { + _MMU_write32(part2ram, T1ReadLong(&this->tmp_data7[0], src)); + src += 4; + part2ram += 4; + } + this->tmp_data7.reset(); + this->tmp_data9.reset(); + + this->patched = false; + if (data[0x17C] != 0xFF) + this->patched = true; + + if (this->patched) + { + uint32_t patch_offset = 0x3FC80; + if (data[0x17C] > 1) + patch_offset = 0x3F680; + + memcpy(&header, &data[patch_offset], sizeof(header)); + + shift1 = header.shift_amounts & 0x07; + shift2 = (header.shift_amounts >> 3) & 0x07; + shift3 = (header.shift_amounts >> 6) & 0x07; + shift4 = (header.shift_amounts >> 9) & 0x07; + + // todo - add support for 512Kb + part1addr = header.part1_rom_boot9_addr << (2 + shift1); + part1ram = 0x02800000 - (header.part1_ram_boot9_addr << (2 + shift2)); + part2addr = header.part2_rom_boot7_addr << (2 + shift3); + part2ram = 0x03810000 - (header.part2_ram_boot7_addr << (2 + shift4)); + + this->ARM9bootAddr = part1ram; + this->ARM7bootAddr = part2ram; + + this->size9 = this->decompress(&data[part1addr], this->tmp_data9); + if (!this->tmp_data9) + { + fclose(fp); + return false; + } + + this->size7 = this->decompress(&data[part2addr], this->tmp_data7); + if (!this->tmp_data7) + { + this->tmp_data9.reset(); + fclose(fp); + return false; + }; + // Copy firmware boot codes to their respective locations + src = 0; + for (uint32_t i = 0; i < (this->size9 >> 2); ++i) + { + _MMU_write32(part1ram, T1ReadLong(&this->tmp_data9[0], src)); + src += 4; + part1ram += 4; + } + + src = 0; + for (uint32_t i = 0; i < (this->size7 >> 2); ++i) + { + _MMU_write32(part2ram, T1ReadLong(&this->tmp_data7[0], src)); + src += 4; + part2ram += 4; + } + this->tmp_data7.reset(); + this->tmp_data9.reset(); + } + + // TODO: add 512Kb support + memcpy(&MMU.fw.data[0], &data[0], 262144); + MMU.fw.fp = nullptr; + + return true; +} + +// ===================================================================================================== +static uint32_t calc_CRC16(uint32_t start, const uint8_t *data, int count) +{ + uint32_t crc = start & 0xffff; + const uint16_t val[] = { 0xC0C1, 0xC181, 0xC301, 0xC601, 0xCC01, 0xD801, 0xF001, 0xA001 }; + for (int i = 0; i < count; ++i) + { + crc ^= data[i]; + + for (int j = 0; j < 8; ++j) + { + bool do_bit = false; + + if (crc & 0x1) + do_bit = true; + + crc >>= 1; + + if (do_bit) + crc ^= val[j] << (7 - j); + } + } + return crc; +} + +int copy_firmware_user_data(uint8_t *dest_buffer, const uint8_t *fw_data) +{ + /* + * Determine which of the two user settings in the firmware is the current + * and valid one and then copy this into the destination buffer. + * + * The current setting will have a greater count. + * Settings are only valid if its CRC16 is correct. + */ + int copy_good = 0; + + uint32_t user_settings_offset = fw_data[0x20]; + user_settings_offset |= fw_data[0x21] << 8; + user_settings_offset <<= 3; + + if (user_settings_offset <= 0x3FE00) + { + int32_t copy_settings_offset = -1; + + uint32_t crc = calc_CRC16(0xffff, &fw_data[user_settings_offset], NDS_FW_USER_SETTINGS_MEM_BYTE_COUNT); + uint32_t fw_crc = fw_data[user_settings_offset + 0x72]; + fw_crc |= fw_data[user_settings_offset + 0x73] << 8; + bool user1_valid = crc == fw_crc; + + crc = calc_CRC16(0xffff, &fw_data[user_settings_offset + 0x100], NDS_FW_USER_SETTINGS_MEM_BYTE_COUNT); + fw_crc = fw_data[user_settings_offset + 0x100 + 0x72]; + fw_crc |= fw_data[user_settings_offset + 0x100 + 0x73] << 8; + bool user2_valid = crc == fw_crc; + + if (user1_valid) + { + if (user2_valid) + { + uint16_t count1, count2; + + count1 = fw_data[user_settings_offset + 0x70]; + count1 |= fw_data[user_settings_offset + 0x71] << 8; + + count2 = fw_data[user_settings_offset + 0x100 + 0x70]; + count2 |= fw_data[user_settings_offset + 0x100 + 0x71] << 8; + + if (count2 > count1) + copy_settings_offset = user_settings_offset + 0x100; + else + copy_settings_offset = user_settings_offset; + } + else + copy_settings_offset = user_settings_offset; + } + else if (user2_valid) + /* copy the second user settings */ + copy_settings_offset = user_settings_offset + 0x100; + + if (copy_settings_offset > 0) + { + memcpy(dest_buffer, &fw_data[copy_settings_offset], NDS_FW_USER_SETTINGS_MEM_BYTE_COUNT); + copy_good = 1; + } + } + + return copy_good; +} + +void NDS_FillDefaultFirmwareConfigData(NDS_fw_config_data *fw_config) +{ + const char *default_nickname = "DeSmuME"; + const char *default_message = "DeSmuME makes you happy!"; + + memset(fw_config, 0, sizeof(struct NDS_fw_config_data)); + fw_config->ds_type = NDS_CONSOLE_TYPE_FAT; + + fw_config->fav_colour = 7; + + fw_config->birth_day = 23; + fw_config->birth_month = 6; + + int str_length = strlen(default_nickname); + int i; + for (i = 0; i < str_length; ++i) + fw_config->nickname[i] = default_nickname[i]; + fw_config->nickname_len = str_length; + + str_length = strlen(default_message); + for (i = 0; i < str_length; ++i) + fw_config->message[i] = default_message[i]; + fw_config->message_len = str_length; + + /* default to English */ + fw_config->language = 1; +} diff -Nru audacious-plugins-4.1/src/xsf/desmume/firmware.h audacious-plugins-4.3.1/src/xsf/desmume/firmware.h --- audacious-plugins-4.1/src/xsf/desmume/firmware.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/firmware.h 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,81 @@ +/* + Copyright (C) 2009-2011 DeSmuME Team + + This file 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 file 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 the this software. If not, see . +*/ + +#pragma once + +#include +#include "types.h" + +// the count of bytes copied from the firmware into memory +const int NDS_FW_USER_SETTINGS_MEM_BYTE_COUNT = 0x70; + +#define FW_CONFIG_FILE_EXT "dfc" + +class CFIRMWARE +{ +private: + std::unique_ptr tmp_data9; + std::unique_ptr tmp_data7; + uint32_t size9, size7; + + uint32_t keyBuf[0x412]; + uint32_t keyCode[3]; + + bool getKeyBuf(); + void crypt64BitUp(uint32_t *ptr); + void crypt64BitDown(uint32_t *ptr); + void applyKeycode(uint32_t modulo); + bool initKeycode(uint32_t idCode, int level, uint32_t modulo); + uint16_t getBootCodeCRC16(); + uint32_t decrypt(const uint8_t *in, std::unique_ptr &out); + uint32_t decompress(const uint8_t *in, std::unique_ptr &out); +public: + CFIRMWARE(): size9(0), size7(0), ARM9bootAddr(0), ARM7bootAddr(0), patched(0) { } + + bool load(); + + struct HEADER + { + uint16_t part3_rom_gui9_addr; // 000h + uint16_t part4_rom_wifi7_addr; // 002h + uint16_t part34_gui_wifi_crc16; // 004h + uint16_t part12_boot_crc16; // 006h + uint8_t fw_identifier[4]; // 008h + uint16_t part1_rom_boot9_addr; // 00Ch + uint16_t part1_ram_boot9_addr; // 00Eh + uint16_t part2_rom_boot7_addr; // 010h + uint16_t part2_ram_boot7_addr; // 012h + uint16_t shift_amounts; // 014h + uint16_t part5_data_gfx_addr; // 016h + + uint8_t fw_timestamp[5]; // 018h + uint8_t console_type; // 01Dh + uint16_t unused1; // 01Eh + uint16_t user_settings_offset; // 020h + uint16_t unknown1; // 022h + uint16_t unknown2; // 024h + uint16_t part5_crc16; // 026h + uint16_t unused2; // 028h - FFh filled + } header; + + uint32_t ARM9bootAddr; + uint32_t ARM7bootAddr; + bool patched; +}; + +int copy_firmware_user_data(uint8_t *dest_buffer, const uint8_t *fw_data); +void NDS_FillDefaultFirmwareConfigData(struct NDS_fw_config_data *fw_config); diff -Nru audacious-plugins-4.1/src/xsf/desmume/instruction_attributes.h audacious-plugins-4.3.1/src/xsf/desmume/instruction_attributes.h --- audacious-plugins-4.1/src/xsf/desmume/instruction_attributes.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/instruction_attributes.h 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,5171 @@ +/* Copyright (C) 2006 yopyop + Copyright (C) 2011 Loren Merritt + Copyright (C) 2012 DeSmuME team + + This file 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 3 of the License, or + (at your option) any later version. + + This file 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 the this software. If not, see . +*/ + +#pragma once + +#include "types.h" + +#define INSTR_CYCLES_MASK 0x7 +#define INSTR_CYCLES(c) c // constant cycles. does not include the penalty for writing to r15 for instructions other than dedicated branches. +#define INSTR_CYCLES_VARIABLE 0 // duration to be determined at runtime +#define INSTR_CYCLES_V INSTR_CYCLES_VARIABLE + +#define SRCREG_NONE 0x0000 +#define SRCREG_POS0 0x0008 +#define SRCREG_POS3 0x0010 +#define SRCREG_POS8 0x0020 +#define SRCREG_POS12 0x0040 +#define SRCREG_POS16 0x0080 +#define SRCREG_STM 0x0100 + +#define BRANCH_NEVER 0x00000000 +#define BRANCH_ALWAYS 0x00000800 +#define BRANCH_POS0 0x00001000 // branch if (REG_NUM(i,0)|((i>>4)&8))==15 +#define BRANCH_POS12 0x00002000 // branch if REG_POS(i,12)==15 +#define BRANCH_LDM 0x00004000 +#define BRANCH_SWI 0x00008000 // branch if use external SWI - if (cpu->swi_tab == NULL) + +#define JIT_BYPASS 0x80000000 // JIT makes no assumptions about what this instruction does + +const uint32_t instruction_attributes[] = +{ +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_AND_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_AND_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_AND_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_AND_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_AND_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_AND_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_AND_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_AND_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_AND_LSL_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8, //OP_MUL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_AND_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRH_POS_INDE_M_REG_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_AND_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_POST_INDEX +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_AND_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_POST_INDEX +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_AND_S_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_AND_S_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_AND_S_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_AND_S_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_AND_S_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_AND_S_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_AND_S_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_AND_S_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_AND_S_LSL_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8, //OP_MUL_S +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_AND_S_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRH_POS_INDE_M_REG_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_AND_S_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRSB_POS_INDE_M_REG_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_AND_S_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRSH_POS_INDE_M_REG_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_EOR_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_EOR_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_EOR_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_EOR_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_EOR_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_EOR_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_EOR_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_EOR_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_EOR_LSL_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS12, //OP_MLA +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_EOR_LSR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_EOR_ASR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_EOR_ROR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_EOR_S_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_EOR_S_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_EOR_S_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_EOR_S_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_EOR_S_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_EOR_S_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_EOR_S_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_EOR_S_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_EOR_S_LSL_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS12, //OP_MLA_S +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_EOR_S_LSR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_EOR_S_ASR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_EOR_S_ROR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SUB_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_SUB_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SUB_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_SUB_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SUB_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_SUB_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SUB_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_SUB_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SUB_LSL_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SUB_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRH_POS_INDE_M_IMM_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SUB_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_POST_INDEX +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SUB_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_POST_INDEX +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SUB_S_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_SUB_S_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SUB_S_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_SUB_S_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SUB_S_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_SUB_S_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SUB_S_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_SUB_S_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SUB_S_LSL_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SUB_S_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRH_POS_INDE_M_IMM_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SUB_S_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRSB_POS_INDE_M_IMM_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SUB_S_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRSH_POS_INDE_M_IMM_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSB_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_RSB_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSB_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_RSB_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSB_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_RSB_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSB_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_RSB_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSB_LSL_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSB_LSR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSB_ASR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSB_ROR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSB_S_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_RSB_S_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSB_S_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_RSB_S_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSB_S_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_RSB_S_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSB_S_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_RSB_S_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSB_S_LSL_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSB_S_LSR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSB_S_ASR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSB_S_ROR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADD_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ADD_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADD_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ADD_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADD_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ADD_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADD_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ADD_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADD_LSL_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8, //OP_UMULL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADD_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRH_POS_INDE_P_REG_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADD_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_POST_INDEX +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADD_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_POST_INDEX +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADD_S_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ADD_S_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADD_S_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ADD_S_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADD_S_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ADD_S_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADD_S_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ADD_S_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADD_S_LSL_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8, //OP_UMULL_S +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADD_S_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRH_POS_INDE_P_REG_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADD_S_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRSB_POS_INDE_P_REG_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADD_S_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRSH_POS_INDE_P_REG_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADC_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ADC_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADC_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ADC_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADC_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ADC_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADC_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ADC_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADC_LSL_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS12 | SRCREG_POS16, //OP_UMLAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADC_LSR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADC_ASR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADC_ROR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADC_S_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ADC_S_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADC_S_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ADC_S_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADC_S_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ADC_S_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADC_S_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ADC_S_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADC_S_LSL_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS12 | SRCREG_POS16, //OP_UMLAL_S +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADC_S_LSR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADC_S_ASR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ADC_S_ROR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SBC_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_SBC_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SBC_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_SBC_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SBC_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_SBC_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SBC_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_SBC_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SBC_LSL_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8, //OP_SMULL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SBC_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRH_POS_INDE_P_IMM_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SBC_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_POST_INDEX +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SBC_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_POST_INDEX +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SBC_S_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_SBC_S_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SBC_S_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_SBC_S_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SBC_S_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_SBC_S_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SBC_S_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_SBC_S_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SBC_S_LSL_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8, //OP_SMULL_S +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SBC_S_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRH_POS_INDE_P_IMM_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SBC_S_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRSB_POS_INDE_P_IMM_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_SBC_S_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRSH_POS_INDE_P_IMM_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSC_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_RSC_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSC_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_RSC_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSC_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_RSC_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSC_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_RSC_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSC_LSL_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS12 | SRCREG_POS16, //OP_SMLAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSC_LSR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSC_ASR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSC_ROR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSC_S_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_RSC_S_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSC_S_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_RSC_S_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSC_S_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_RSC_S_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSC_S_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_RSC_S_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSC_S_LSL_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS12 | SRCREG_POS16, //OP_SMLAL_S +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSC_S_LSR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSC_S_ASR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_RSC_S_ROR_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MRS_CPSR +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_QADD +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS12, //OP_SMLA_B_B +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_SWP +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS12, //OP_SMLA_T_B +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRH_M_REG_OFF +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS12, //OP_SMLA_B_T +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_OFFSET_PRE_INDEX +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS12, //OP_SMLA_T_T +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_OFFSET_PRE_INDEX +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_TST_LSL_IMM +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_TST_LSL_REG +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_TST_LSR_IMM +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_TST_LSR_REG +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_TST_ASR_IMM +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_TST_ASR_REG +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_TST_ROR_IMM +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_TST_ROR_REG +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_TST_LSL_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_TST_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRH_M_REG_OFF +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_TST_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRSB_M_REG_OFF +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_TST_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRSH_M_REG_OFF +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0, //OP_MSR_CPSR +INSTR_CYCLES(3) | BRANCH_ALWAYS | SRCREG_POS0, //OP_BX +JIT_BYPASS, //OP_UND +INSTR_CYCLES(3) | BRANCH_ALWAYS | SRCREG_POS0, //OP_BLX_REG +JIT_BYPASS, //OP_UND +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_QSUB +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_BKPT +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS12, //OP_SMLAW_B +JIT_BYPASS, //OP_UND +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8, //OP_SMULW_B +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRH_PRE_INDE_M_REG_OFF +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS12, //OP_SMLAW_T +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_OFFSET_PRE_INDEX +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8, //OP_SMULW_T +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_OFFSET_PRE_INDEX +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_TEQ_LSL_IMM +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_TEQ_LSL_REG +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_TEQ_LSR_IMM +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_TEQ_LSR_REG +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_TEQ_ASR_IMM +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_TEQ_ASR_REG +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_TEQ_ROR_IMM +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_TEQ_ROR_REG +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_TEQ_LSL_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_TEQ_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRH_PRE_INDE_M_REG_OFF +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_TEQ_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRSB_PRE_INDE_M_REG_OFF +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_TEQ_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRSH_PRE_INDE_M_REG_OFF +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MRS_SPSR +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_QDADD +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS12 | SRCREG_POS16, //OP_SMLAL_B_B +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_SWPB +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS12 | SRCREG_POS16, //OP_SMLAL_T_B +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRH_M_IMM_OFF +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS12 | SRCREG_POS16, //OP_SMLAL_B_T +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_OFFSET_PRE_INDEX +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS12 | SRCREG_POS16, //OP_SMLAL_T_T +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_OFFSET_PRE_INDEX +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_CMP_LSL_IMM +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_CMP_LSL_REG +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_CMP_LSR_IMM +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_CMP_LSR_REG +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_CMP_ASR_IMM +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_CMP_ASR_REG +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_CMP_ROR_IMM +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_CMP_ROR_REG +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_CMP_LSL_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_CMP_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRH_M_IMM_OFF +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_CMP_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRSB_M_IMM_OFF +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_CMP_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRSH_M_IMM_OFF +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0, //OP_MSR_SPSR +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0, //OP_CLZ +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_QDSUB +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8, //OP_SMUL_B_B +JIT_BYPASS, //OP_UND +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8, //OP_SMUL_T_B +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRH_PRE_INDE_M_IMM_OFF +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8, //OP_SMUL_B_T +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_OFFSET_PRE_INDEX +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8, //OP_SMUL_T_T +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_OFFSET_PRE_INDEX +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_CMN_LSL_IMM +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_CMN_LSL_REG +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_CMN_LSR_IMM +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_CMN_LSR_REG +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_CMN_ASR_IMM +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_CMN_ASR_REG +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_CMN_ROR_IMM +INSTR_CYCLES(2) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_CMN_ROR_REG +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_CMN_LSL_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_CMN_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRH_PRE_INDE_M_IMM_OFF +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_CMN_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRSB_PRE_INDE_M_IMM_OFF +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_CMN_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRSH_PRE_INDE_M_IMM_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ORR_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ORR_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ORR_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ORR_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ORR_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ORR_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ORR_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ORR_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ORR_LSL_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ORR_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRH_P_REG_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ORR_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_OFFSET_PRE_INDEX +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ORR_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_OFFSET_PRE_INDEX +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ORR_S_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ORR_S_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ORR_S_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ORR_S_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ORR_S_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ORR_S_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ORR_S_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_ORR_S_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ORR_S_LSL_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ORR_S_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRH_P_REG_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ORR_S_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRSB_P_REG_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_ORR_S_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRSH_P_REG_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MOV_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8, //OP_MOV_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MOV_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8, //OP_MOV_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MOV_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8, //OP_MOV_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MOV_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8, //OP_MOV_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MOV_LSL_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MOV_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRH_PRE_INDE_P_REG_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MOV_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_OFFSET_PRE_INDEX +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MOV_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_OFFSET_PRE_INDEX +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MOV_S_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8, //OP_MOV_S_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MOV_S_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8, //OP_MOV_S_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MOV_S_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8, //OP_MOV_S_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MOV_S_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8, //OP_MOV_S_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MOV_S_LSL_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MOV_S_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRH_PRE_INDE_P_REG_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MOV_S_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRSB_PRE_INDE_P_REG_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MOV_S_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRSH_PRE_INDE_P_REG_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_BIC_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_BIC_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_BIC_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_BIC_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_BIC_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_BIC_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_BIC_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_BIC_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_BIC_LSL_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_BIC_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRH_P_IMM_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_BIC_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_OFFSET_PRE_INDEX +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_BIC_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_OFFSET_PRE_INDEX +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_BIC_S_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_BIC_S_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_BIC_S_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_BIC_S_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_BIC_S_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_BIC_S_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_BIC_S_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8 | SRCREG_POS16, //OP_BIC_S_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_BIC_S_LSL_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_BIC_S_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRH_P_IMM_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_BIC_S_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRSB_P_IMM_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_BIC_S_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRSH_P_IMM_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MVN_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8, //OP_MVN_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MVN_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8, //OP_MVN_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MVN_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8, //OP_MVN_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MVN_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8, //OP_MVN_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MVN_LSL_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MVN_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRH_PRE_INDE_P_IMM_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MVN_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_OFFSET_PRE_INDEX +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MVN_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRD_STRD_OFFSET_PRE_INDEX +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MVN_S_LSL_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8, //OP_MVN_S_LSL_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MVN_S_LSR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8, //OP_MVN_S_LSR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MVN_S_ASR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8, //OP_MVN_S_ASR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MVN_S_ROR_IMM +INSTR_CYCLES(2) | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS8, //OP_MVN_S_ROR_REG +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MVN_S_LSL_IMM +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MVN_S_LSR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRH_PRE_INDE_P_IMM_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MVN_S_ASR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRSB_PRE_INDE_P_IMM_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS0, //OP_MVN_S_ROR_IMM +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRSH_PRE_INDE_P_IMM_OFF +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_AND_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_EOR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SUB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSB_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADD_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ADC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_SBC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_RSC_S_IMM_VAL +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TST_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TST_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TST_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TST_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TST_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TST_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TST_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TST_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TST_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TST_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TST_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TST_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TST_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TST_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TST_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TST_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_CPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_CPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_CPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_CPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_CPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_CPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_CPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_CPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_CPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_CPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_CPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_CPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_CPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_CPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_CPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_CPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TEQ_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TEQ_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TEQ_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TEQ_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TEQ_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TEQ_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TEQ_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TEQ_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TEQ_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TEQ_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TEQ_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TEQ_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TEQ_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TEQ_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TEQ_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_TEQ_IMM_VAL +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +JIT_BYPASS, //OP_UND +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMP_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMP_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMP_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMP_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMP_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMP_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMP_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMP_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMP_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMP_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMP_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMP_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMP_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMP_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMP_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMP_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_SPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_SPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_SPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_SPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_SPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_SPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_SPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_SPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_SPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_SPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_SPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_SPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_SPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_SPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_SPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MSR_SPSR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS16, //OP_CMN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_ORR_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MOV_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_POS16, //OP_BIC_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_S_IMM_VAL +INSTR_CYCLES(1) | BRANCH_POS12 | SRCREG_NONE, //OP_MVN_S_IMM_VAL +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_POSTIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_M_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS16, //OP_LDR_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS16, //OP_LDRB_P_IMM_OFF_PREIND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_LSL_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_LSR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_ASR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_ROR_IMM_OFF_POSTIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_LSL_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_LSR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_ASR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_ROR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_LSL_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_LSR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_ASR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_ROR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_LSL_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_LSR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_ASR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_ROR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_LSL_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_LSR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_ASR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_ROR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_LSL_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_LSR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_ASR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_ROR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_LSL_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_LSR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_ASR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_M_ROR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_LSL_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_LSR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_ASR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_ROR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_LSL_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_LSR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_ASR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_M_ROR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_LSL_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_LSR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_ASR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_ROR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_LSL_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_LSR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_ASR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_ROR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_LSL_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_LSR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_ASR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_ROR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_LSL_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_LSR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_ASR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_ROR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_LSL_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_LSR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_ASR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_ROR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_LSL_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_LSR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_ASR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_M_ROR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_LSL_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_LSR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_ASR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_ROR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_LSL_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_LSR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_ASR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_M_ROR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_LSL_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_LSR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_ASR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_ROR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_LSL_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_LSR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_ASR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_ROR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSL_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_ASR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_ROR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSL_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_ASR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_ROR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_LSL_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_LSR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_ASR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_ROR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_LSL_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_LSR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_ASR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STR_P_ROR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSL_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_ASR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_ROR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSL_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_LSR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_ASR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_POS12 | SRCREG_POS0 | SRCREG_POS16, //OP_LDR_P_ROR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_LSL_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_LSR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_ASR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_ROR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_LSL_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_LSR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_ASR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_ROR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_LSL_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_LSR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_ASR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_ROR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_LSL_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_LSR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_ASR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_ROR_IMM_OFF +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_LSL_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_LSR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_ASR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_ROR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_LSL_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_LSR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_ASR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS12 | SRCREG_POS16, //OP_STRB_P_ROR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_LSL_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_LSR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_ASR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_ROR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_LSL_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_LSR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_ASR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS16, //OP_LDRB_P_ROR_IMM_OFF_PREIND +JIT_BYPASS, //OP_UND +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIA2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMDB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMDB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2 +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2 +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2_W +INSTR_CYCLES_V | BRANCH_NEVER | SRCREG_STM | SRCREG_POS16, //OP_STMIB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2_W +INSTR_CYCLES_V | BRANCH_LDM | SRCREG_POS16, //OP_LDMIB2_W +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_B +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BL +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_STC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_LDC_M_POSTIND +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_STC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_LDC_OPTION +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_STC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_LDC_P_POSTIND +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_LDC_M_IMM_OFF +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_STC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_LDC_M_PREIND +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_LDC_P_IMM_OFF +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_STC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_LDC_P_PREIND +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_MCR +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +JIT_BYPASS, //OP_CDP +INSTR_CYCLES(3) | BRANCH_NEVER, //OP_MRC +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI +}; + +const uint32_t thumb_attributes[] = +{ +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL_0 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR_0 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_LSR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR_0 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ASR +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM3 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM3 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM3 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM3 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM3 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM3 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM3 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM3 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM3 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM3 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM3 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM3 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM3 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM3 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM3 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM3 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MOV_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SUB_IMM8 +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_AND +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_EOR +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_LSL_REG +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_LSR_REG +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_ASR_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADC_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_SBC_REG +INSTR_CYCLES(2) | BRANCH_NEVER, //OP_ROR_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_TST +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_NEG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_CMN +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ORR +INSTR_CYCLES_V | BRANCH_NEVER, //OP_MUL_REG +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_BIC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_MVN +INSTR_CYCLES(1) | BRANCH_POS0 | SRCREG_POS0 | SRCREG_POS3, //OP_ADD_SPE +INSTR_CYCLES(1) | BRANCH_POS0 | SRCREG_POS0 | SRCREG_POS3, //OP_ADD_SPE +INSTR_CYCLES(1) | BRANCH_POS0 | SRCREG_POS0 | SRCREG_POS3, //OP_ADD_SPE +INSTR_CYCLES(1) | BRANCH_POS0 | SRCREG_POS0 | SRCREG_POS3, //OP_ADD_SPE +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS3, //OP_CMP_SPE +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS3, //OP_CMP_SPE +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS3, //OP_CMP_SPE +INSTR_CYCLES(1) | BRANCH_NEVER | SRCREG_POS0 | SRCREG_POS3, //OP_CMP_SPE +INSTR_CYCLES(1) | BRANCH_POS0 | SRCREG_POS3, //OP_MOV_SPE +INSTR_CYCLES(1) | BRANCH_POS0 | SRCREG_POS3, //OP_MOV_SPE +INSTR_CYCLES(1) | BRANCH_POS0 | SRCREG_POS3, //OP_MOV_SPE +INSTR_CYCLES(1) | BRANCH_POS0 | SRCREG_POS3, //OP_MOV_SPE +INSTR_CYCLES(3) | BRANCH_ALWAYS | SRCREG_POS3, //OP_BX_THUMB +INSTR_CYCLES(3) | BRANCH_ALWAYS | SRCREG_POS3, //OP_BX_THUMB +INSTR_CYCLES(4) | BRANCH_ALWAYS | SRCREG_POS3, //OP_BLX_THUMB +INSTR_CYCLES(4) | BRANCH_ALWAYS | SRCREG_POS3, //OP_BLX_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_PCREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRSB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRSB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRSB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRSB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRSB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRSB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRSB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRSB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRSH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRSH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRSH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRSH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRSH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRSH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRSH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRSH_REG_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRB_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDRH_IMM_OFF +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDR_SPREL +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2PC +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADD_2SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADJUST_P_SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADJUST_P_SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADJUST_M_SP +INSTR_CYCLES(1) | BRANCH_NEVER, //OP_ADJUST_M_SP +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_PUSH +INSTR_CYCLES_V | BRANCH_NEVER, //OP_PUSH +INSTR_CYCLES_V | BRANCH_NEVER, //OP_PUSH +INSTR_CYCLES_V | BRANCH_NEVER, //OP_PUSH +INSTR_CYCLES_V | BRANCH_NEVER, //OP_PUSH_LR +INSTR_CYCLES_V | BRANCH_NEVER, //OP_PUSH_LR +INSTR_CYCLES_V | BRANCH_NEVER, //OP_PUSH_LR +INSTR_CYCLES_V | BRANCH_NEVER, //OP_PUSH_LR +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_POP +INSTR_CYCLES_V | BRANCH_NEVER, //OP_POP +INSTR_CYCLES_V | BRANCH_NEVER, //OP_POP +INSTR_CYCLES_V | BRANCH_NEVER, //OP_POP +INSTR_CYCLES_V | BRANCH_ALWAYS, //OP_POP_PC +INSTR_CYCLES_V | BRANCH_ALWAYS, //OP_POP_PC +INSTR_CYCLES_V | BRANCH_ALWAYS, //OP_POP_PC +INSTR_CYCLES_V | BRANCH_ALWAYS, //OP_POP_PC +JIT_BYPASS, //OP_BKPT_THUMB +JIT_BYPASS, //OP_BKPT_THUMB +JIT_BYPASS, //OP_BKPT_THUMB +JIT_BYPASS, //OP_BKPT_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +JIT_BYPASS, //OP_UND_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_STMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES_V | BRANCH_NEVER, //OP_LDMIA_THUMB +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_COND +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI_THUMB +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI_THUMB +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI_THUMB +INSTR_CYCLES_V | BRANCH_SWI, //OP_SWI_THUMB +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(1) | BRANCH_ALWAYS, //OP_B_UNCOND +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(3) | BRANCH_ALWAYS, //OP_BLX +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(1) | BRANCH_NEVER , //OP_BL_10 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +INSTR_CYCLES(4) | BRANCH_ALWAYS, //OP_BL_11 +}; diff -Nru audacious-plugins-4.1/src/xsf/desmume/instruction_tabdef.inc audacious-plugins-4.3.1/src/xsf/desmume/instruction_tabdef.inc --- audacious-plugins-4.1/src/xsf/desmume/instruction_tabdef.inc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/instruction_tabdef.inc 2023-04-29 20:17:32.000000000 +0000 @@ -1,4400 +1,4369 @@ -/* Copyright (C) 2006 yopyop - yopyop156@ifrance.com - yopyop156.ifrance.com - - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +/* + Copyright (C) 2006 yopyop + Copyright (C) 2007-2012 DeSmuME team + This file 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 file 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 the this software. If not, see . */ -TYPE_RETOUR (*CALLTYPE NOM_TAB[4096])(PARAMETRES)={ - OP_AND_LSL_IMM, // 000 0000 0 0000 - OP_AND_LSL_REG, // 000 0000 0 0001 - OP_AND_LSR_IMM, // 000 0000 0 0010 - OP_AND_LSR_REG, // 000 0000 0 0011 - OP_AND_ASR_IMM, // 000 0000 0 0100 - OP_AND_ASR_REG, // 000 0000 0 0101 - OP_AND_ROR_IMM, // 000 0000 0 0110 - OP_AND_ROR_REG, // 000 0000 0 0111 - - OP_AND_LSL_IMM, // 000 0000 0 1000 - OP_MUL, // 000 0000 0 1001 - OP_AND_LSR_IMM, // OOO OOOO O 1010 - OP_STRH_POS_INDE_M_REG_OFF, // 000 0000 0 1011 - OP_AND_ASR_IMM, // 000 0000 0 1100 - OP_LDRD_STRD_POST_INDEX, - // 000 0000 0 1101 - OP_AND_ROR_IMM, // 000 0000 0 1110 - OP_LDRD_STRD_POST_INDEX, - // 000 0000 0 1111 - - OP_AND_S_LSL_IMM, // 000 0000 1 0000 - OP_AND_S_LSL_REG, // 000 0000 1 0001 - OP_AND_S_LSR_IMM, // 000 0000 1 0010 - OP_AND_S_LSR_REG, // 000 0000 1 0011 - OP_AND_S_ASR_IMM, // 000 0000 1 0100 - OP_AND_S_ASR_REG, // 000 0000 1 0101 - OP_AND_S_ROR_IMM, // 000 0000 1 0110 - OP_AND_S_ROR_REG, // 000 0000 1 0111 - - OP_AND_S_LSL_IMM, // 000 0000 1 1000 - OP_MUL_S, // 000 0000 1 1001 - OP_AND_S_LSR_IMM, // 000 0000 1 1010 - OP_LDRH_POS_INDE_M_REG_OFF, // 000 0000 1 1011 - OP_AND_S_ASR_IMM, // 000 0000 1 1100 - OP_LDRSB_POS_INDE_M_REG_OFF,// 000 0000 1 1101 - OP_AND_S_ROR_IMM, // 000 0000 1 1110 - OP_LDRSH_POS_INDE_M_REG_OFF,// 000 0000 1 1111 - - OP_EOR_LSL_IMM, // 000 0001 0 0000 - OP_EOR_LSL_REG, // 000 0001 0 0001 - OP_EOR_LSR_IMM, // 000 0001 0 0010 - OP_EOR_LSR_REG, // 000 0001 0 0011 - OP_EOR_ASR_IMM, // 000 0001 0 0100 - OP_EOR_ASR_REG, // 000 0001 0 0101 - OP_EOR_ROR_IMM, // 000 0001 0 0110 - OP_EOR_ROR_REG, // 000 0001 0 0111 - - OP_EOR_LSL_IMM, // 000 0001 0 1000 - OP_MLA, // 000 0001 0 1001 - OP_EOR_LSR_IMM, // OOO OOO1 O 1010 - OP_UND, // 000 0001 0 1011 - OP_EOR_ASR_IMM, // 000 0001 0 1100 - OP_UND, // 000 0001 0 1101 - OP_EOR_ROR_IMM, // 000 0001 0 1110 - OP_UND, // 000 0001 0 1111 - - OP_EOR_S_LSL_IMM, // 000 0001 1 0000 - OP_EOR_S_LSL_REG, // 000 0001 1 0001 - OP_EOR_S_LSR_IMM, // 000 0001 1 0010 - OP_EOR_S_LSR_REG, // 000 0001 1 0011 - OP_EOR_S_ASR_IMM, // 000 0001 1 0100 - OP_EOR_S_ASR_REG, // 000 0001 1 0101 - OP_EOR_S_ROR_IMM, // 000 0001 1 0110 - OP_EOR_S_ROR_REG, // 000 0001 1 0111 - - OP_EOR_S_LSL_IMM, // 000 0001 1 1000 - OP_MLA_S, // 000 0001 1 1001 - OP_EOR_S_LSR_IMM, // 000 0001 1 1010 - OP_UND, // 000 0001 1 1011 - OP_EOR_S_ASR_IMM, // 000 0001 1 1100 - OP_UND, // 000 0001 1 1101 - OP_EOR_S_ROR_IMM, // 000 0001 1 1110 - OP_UND, // 000 0001 1 1111 - - OP_SUB_LSL_IMM, // 000 0010 0 0000 - OP_SUB_LSL_REG, // 000 0010 0 0001 - OP_SUB_LSR_IMM, // 000 0010 0 0010 - OP_SUB_LSR_REG, // 000 0010 0 0011 - OP_SUB_ASR_IMM, // 000 0010 0 0100 - OP_SUB_ASR_REG, // 000 0010 0 0101 - OP_SUB_ROR_IMM, // 000 0010 0 0110 - OP_SUB_ROR_REG, // 000 0010 0 0111 - - OP_SUB_LSL_IMM, // 000 0010 0 1000 - OP_UND, // 000 0010 0 1001 - OP_SUB_LSR_IMM, // OOO OO1O O 1010 - OP_STRH_POS_INDE_M_IMM_OFF, // 000 0010 0 1011 - OP_SUB_ASR_IMM, // 000 0010 0 1100 - OP_LDRD_STRD_POST_INDEX, - // 000 0010 0 1101 - OP_SUB_ROR_IMM, // 000 0010 0 1110 - OP_LDRD_STRD_POST_INDEX, - // 000 0010 0 1111 - - OP_SUB_S_LSL_IMM, // 000 0010 1 0000 - OP_SUB_S_LSL_REG, // 000 0010 1 0001 - OP_SUB_S_LSR_IMM, // 000 0010 1 0010 - OP_SUB_S_LSR_REG, // 000 0010 1 0011 - OP_SUB_S_ASR_IMM, // 000 0010 1 0100 - OP_SUB_S_ASR_REG, // 000 0010 1 0101 - OP_SUB_S_ROR_IMM, // 000 0010 1 0110 - OP_SUB_S_ROR_REG, // 000 0010 1 0111 - - OP_SUB_S_LSL_IMM, // 000 0010 1 1000 - OP_UND, // 000 0010 1 1001 - OP_SUB_S_LSR_IMM, // 000 0010 1 1010 - OP_LDRH_POS_INDE_M_IMM_OFF, // 000 0010 1 1011 - OP_SUB_S_ASR_IMM, // 000 0010 1 1100 - OP_LDRSB_POS_INDE_M_IMM_OFF,// 000 0010 1 1101 - OP_SUB_S_ROR_IMM, // 000 0010 1 1110 - OP_LDRSH_POS_INDE_M_IMM_OFF,// 000 0010 1 1111 -//-------------------- - OP_RSB_LSL_IMM, // 000 0011 0 0000 - OP_RSB_LSL_REG, // 000 0011 0 0001 - OP_RSB_LSR_IMM, // 000 0011 0 0010 - OP_RSB_LSR_REG, // 000 0011 0 0011 - OP_RSB_ASR_IMM, // 000 0011 0 0100 - OP_RSB_ASR_REG, // 000 0011 0 0101 - OP_RSB_ROR_IMM, // 000 0011 0 0110 - OP_RSB_ROR_REG, // 000 0011 0 0111 - - OP_RSB_LSL_IMM, // 000 0011 0 1000 - OP_UND, // 000 0011 0 1001 - OP_RSB_LSR_IMM, // OOO OO11 O 1010 - OP_UND, // 000 0011 0 1011 - OP_RSB_ASR_IMM, // 000 0011 0 1100 - OP_UND, // 000 0011 0 1101 - OP_RSB_ROR_IMM, // 000 0011 0 1110 - OP_UND, // 000 0011 0 1111 - - OP_RSB_S_LSL_IMM, // 000 0011 1 0000 - OP_RSB_S_LSL_REG, // 000 0011 1 0001 - OP_RSB_S_LSR_IMM, // 000 0011 1 0010 - OP_RSB_S_LSR_REG, // 000 0011 1 0011 - OP_RSB_S_ASR_IMM, // 000 0011 1 0100 - OP_RSB_S_ASR_REG, // 000 0011 1 0101 - OP_RSB_S_ROR_IMM, // 000 0011 1 0110 - OP_RSB_S_ROR_REG, // 000 0011 1 0111 - - OP_RSB_S_LSL_IMM, // 000 0011 1 1000 - OP_UND, // 000 0011 1 1001 - OP_RSB_S_LSR_IMM, // 000 0011 1 1010 - OP_UND, // 000 0011 1 1011 - OP_RSB_S_ASR_IMM, // 000 0011 1 1100 - OP_UND, // 000 0011 1 1101 - OP_RSB_S_ROR_IMM, // 000 0011 1 1110 - OP_UND, // 000 0011 1 1111 -//-------------------------- - OP_ADD_LSL_IMM, // 000 0100 0 0000 - OP_ADD_LSL_REG, // 000 0100 0 0001 - OP_ADD_LSR_IMM, // 000 0100 0 0010 - OP_ADD_LSR_REG, // 000 0100 0 0011 - OP_ADD_ASR_IMM, // 000 0100 0 0100 - OP_ADD_ASR_REG, // 000 0100 0 0101 - OP_ADD_ROR_IMM, // 000 0100 0 0110 - OP_ADD_ROR_REG, // 000 0100 0 0111 - - OP_ADD_LSL_IMM, // 000 0100 0 1000 - OP_UMULL, // 000 0100 0 1001 - OP_ADD_LSR_IMM, // OOO O10O O 1010 - OP_STRH_POS_INDE_P_REG_OFF, // 000 0100 0 1011 - OP_ADD_ASR_IMM, // 000 0100 0 1100 - OP_LDRD_STRD_POST_INDEX, - // 000 0100 0 1101 - OP_ADD_ROR_IMM, // 000 0100 0 1110 - OP_LDRD_STRD_POST_INDEX, - // 000 0100 0 1111 - - OP_ADD_S_LSL_IMM, // 000 0100 1 0000 - OP_ADD_S_LSL_REG, // 000 0100 1 0001 - OP_ADD_S_LSR_IMM, // 000 0100 1 0010 - OP_ADD_S_LSR_REG, // 000 0100 1 0011 - OP_ADD_S_ASR_IMM, // 000 0100 1 0100 - OP_ADD_S_ASR_REG, // 000 0100 1 0101 - OP_ADD_S_ROR_IMM, // 000 0100 1 0110 - OP_ADD_S_ROR_REG, // 000 0100 1 0111 - - OP_ADD_S_LSL_IMM, // 000 0100 1 1000 - OP_UMULL_S, // 000 0100 1 1001 - OP_ADD_S_LSR_IMM, // 000 0100 1 1010 - OP_LDRH_POS_INDE_P_REG_OFF, // 000 0100 1 1011 - OP_ADD_S_ASR_IMM, // 000 0100 1 1100 - OP_LDRSB_POS_INDE_P_REG_OFF,// 000 0100 1 1101 - OP_ADD_S_ROR_IMM, // 000 0100 1 1110 - OP_LDRSH_POS_INDE_P_REG_OFF,// 000 0100 1 1111 -//----------------------------------------- - OP_ADC_LSL_IMM, // 000 0101 0 0000 - OP_ADC_LSL_REG, // 000 0101 0 0001 - OP_ADC_LSR_IMM, // 000 0101 0 0010 - OP_ADC_LSR_REG, // 000 0101 0 0011 - OP_ADC_ASR_IMM, // 000 0101 0 0100 - OP_ADC_ASR_REG, // 000 0101 0 0101 - OP_ADC_ROR_IMM, // 000 0101 0 0110 - OP_ADC_ROR_REG, // 000 0101 0 0111 - - OP_ADC_LSL_IMM, // 000 0101 0 1000 - OP_UMLAL, // 000 0101 0 1001 - OP_ADC_LSR_IMM, // OOO O101 O 1010 - OP_UND, // 000 0101 0 1011 - OP_ADC_ASR_IMM, // 000 0101 0 1100 - OP_UND, // 000 0101 0 1101 - OP_ADC_ROR_IMM, // 000 0101 0 1110 - OP_UND, // 000 0101 0 1111 - - OP_ADC_S_LSL_IMM, // 000 0101 1 0000 - OP_ADC_S_LSL_REG, // 000 0101 1 0001 - OP_ADC_S_LSR_IMM, // 000 0101 1 0010 - OP_ADC_S_LSR_REG, // 000 0101 1 0011 - OP_ADC_S_ASR_IMM, // 000 0101 1 0100 - OP_ADC_S_ASR_REG, // 000 0101 1 0101 - OP_ADC_S_ROR_IMM, // 000 0101 1 0110 - OP_ADC_S_ROR_REG, // 000 0101 1 0111 - - OP_ADC_S_LSL_IMM, // 000 0101 1 1000 - OP_UMLAL_S, // 000 0101 1 1001 - OP_ADC_S_LSR_IMM, // 000 0101 1 1010 - OP_UND, // 000 0101 1 1011 - OP_ADC_S_ASR_IMM, // 000 0101 1 1100 - OP_UND, // 000 0101 1 1101 - OP_ADC_S_ROR_IMM, // 000 0101 1 1110 - OP_UND, // 000 0101 1 1111 -//------------------------------------------ - OP_SBC_LSL_IMM, // 000 0110 0 0000 - OP_SBC_LSL_REG, // 000 0110 0 0001 - OP_SBC_LSR_IMM, // 000 0110 0 0010 - OP_SBC_LSR_REG, // 000 0110 0 0011 - OP_SBC_ASR_IMM, // 000 0110 0 0100 - OP_SBC_ASR_REG, // 000 0110 0 0101 - OP_SBC_ROR_IMM, // 000 0110 0 0110 - OP_SBC_ROR_REG, // 000 0110 0 0111 - - OP_SBC_LSL_IMM, // 000 0110 0 1000 - OP_SMULL, // 000 0110 0 1001 - OP_SBC_LSR_IMM, // OOO O11O O 1010 - OP_STRH_POS_INDE_P_IMM_OFF, // 000 0110 0 1011 - OP_SBC_ASR_IMM, // 000 0110 0 1100 - OP_LDRD_STRD_POST_INDEX, - // 000 0110 0 1101 - OP_SBC_ROR_IMM, // 000 0110 0 1110 - OP_LDRD_STRD_POST_INDEX, - // 000 0110 0 1111 - - OP_SBC_S_LSL_IMM, // 000 0110 1 0000 - OP_SBC_S_LSL_REG, // 000 0110 1 0001 - OP_SBC_S_LSR_IMM, // 000 0110 1 0010 - OP_SBC_S_LSR_REG, // 000 0110 1 0011 - OP_SBC_S_ASR_IMM, // 000 0110 1 0100 - OP_SBC_S_ASR_REG, // 000 0110 1 0101 - OP_SBC_S_ROR_IMM, // 000 0110 1 0110 - OP_SBC_S_ROR_REG, // 000 0110 1 0111 - - OP_SBC_S_LSL_IMM, // 000 0110 1 1000 - OP_SMULL_S, // 000 0110 1 1001 - OP_SBC_S_LSR_IMM, // 000 0110 1 1010 - OP_LDRH_POS_INDE_P_IMM_OFF, // 000 0110 1 1011 - OP_SBC_S_ASR_IMM, // 000 0110 1 1100 - OP_LDRSB_POS_INDE_P_IMM_OFF,// 000 0110 1 1101 - OP_SBC_S_ROR_IMM, // 000 0110 1 1110 - OP_LDRSH_POS_INDE_P_IMM_OFF,// 000 0110 1 1111 -//------------------------------------------ - OP_RSC_LSL_IMM, // 000 0111 0 0000 - OP_RSC_LSL_REG, // 000 0111 0 0001 - OP_RSC_LSR_IMM, // 000 0111 0 0010 - OP_RSC_LSR_REG, // 000 0111 0 0011 - OP_RSC_ASR_IMM, // 000 0111 0 0100 - OP_RSC_ASR_REG, // 000 0111 0 0101 - OP_RSC_ROR_IMM, // 000 0111 0 0110 - OP_RSC_ROR_REG, // 000 0111 0 0111 - - OP_RSC_LSL_IMM, // 000 0111 0 1000 - OP_SMLAL, // 000 0111 0 1001 - OP_RSC_LSR_IMM, // OOO O111 O 1010 - OP_UND, // 000 0111 0 1011 - OP_RSC_ASR_IMM, // 000 0111 0 1100 - OP_UND, // 000 0111 0 1101 - OP_RSC_ROR_IMM, // 000 0111 0 1110 - OP_UND, // 000 0111 0 1111 - - OP_RSC_S_LSL_IMM, // 000 0111 1 0000 - OP_RSC_S_LSL_REG, // 000 0111 1 0001 - OP_RSC_S_LSR_IMM, // 000 0111 1 0010 - OP_RSC_S_LSR_REG, // 000 0111 1 0011 - OP_RSC_S_ASR_IMM, // 000 0111 1 0100 - OP_RSC_S_ASR_REG, // 000 0111 1 0101 - OP_RSC_S_ROR_IMM, // 000 0111 1 0110 - OP_RSC_S_ROR_REG, // 000 0111 1 0111 - - OP_RSC_S_LSL_IMM, // 000 0111 1 1000 - OP_SMLAL_S, // 000 0111 1 1001 - OP_RSC_S_LSR_IMM, // 000 0111 1 1010 - OP_UND, // 000 0111 1 1011 - OP_RSC_S_ASR_IMM, // 000 0111 1 1100 - OP_UND, // 000 0111 1 1101 - OP_RSC_S_ROR_IMM, // 000 0111 1 1110 - OP_UND, // 000 0111 1 1111 -//------------------------------------------ - OP_MRS_CPSR, // 000 1000 0 0000 - OP_UND, // 000 1000 0 0001 - OP_UND, // 000 1000 0 0010 - OP_UND, // 000 1000 0 0011 - OP_UND, // 000 1000 0 0100 - OP_QADD, // 000 1000 0 0101 - OP_UND, // 000 1000 0 0110 - OP_UND, // 000 1000 0 0111 - - OP_SMLA_B_B, // 000 1000 0 1000 - OP_SWP, // 000 1000 0 1001 - OP_SMLA_T_B, // 000 1000 0 1010 - OP_STRH_M_REG_OFF, // 000 1000 0 1011 - OP_SMLA_B_T, // 000 1000 0 1100 - OP_LDRD_STRD_OFFSET_PRE_INDEX, - // 000 1000 0 1101 - OP_SMLA_T_T, // 000 1000 0 1110 - OP_LDRD_STRD_OFFSET_PRE_INDEX, - // 000 1000 0 1111 - - OP_TST_LSL_IMM, // 000 1000 1 0000 - OP_TST_LSL_REG, // 000 1000 1 0001 - OP_TST_LSR_IMM, // 000 1000 1 0010 - OP_TST_LSR_REG, // 000 1000 1 0011 - OP_TST_ASR_IMM, // 000 1000 1 0100 - OP_TST_ASR_REG, // 000 1000 1 0101 - OP_TST_ROR_IMM, // 000 1000 1 0110 - OP_TST_ROR_REG, // 000 1000 1 0111 - - OP_TST_LSL_IMM, // 000 1000 1 1000 - OP_UND, // 000 1000 1 1001 - OP_TST_LSR_IMM, // OOO 100O 1 1010 - OP_LDRH_M_REG_OFF, // 000 1000 1 1011 - OP_TST_ASR_IMM, // 000 1000 1 1100 - OP_LDRSB_M_REG_OFF,// 000 1000 1 1101 - OP_TST_ROR_IMM, // 000 1000 1 1110 - OP_LDRSH_M_REG_OFF,// 000 1000 1 1111 -//------------------------------------------ - OP_MSR_CPSR, // 000 1001 0 0000 - OP_BX, // 000 1001 0 0001 - OP_UND, // 000 1001 0 0010 - OP_BLX_REG, // 000 1001 0 0011 - OP_UND, // 000 1001 0 0100 - OP_QSUB, // 000 1001 0 0101 - OP_UND, // 000 1001 0 0110 - OP_BKPT, // 000 1001 0 0111 - - OP_SMLAW_B, // 000 1001 0 1000 - OP_UND, // 000 1001 0 1001 - OP_SMULW_B, // 000 1001 0 1010 - OP_STRH_PRE_INDE_M_REG_OFF, // 000 1001 0 1011 - OP_SMLAW_T, // 000 1001 0 1100 - OP_LDRD_STRD_OFFSET_PRE_INDEX, - // 000 1001 0 1101 - OP_SMULW_T, // 000 1001 0 1110 - OP_LDRD_STRD_OFFSET_PRE_INDEX, - // 000 1001 0 1111 - - OP_TEQ_LSL_IMM, // 000 1001 1 0000 - OP_TEQ_LSL_REG, // 000 1001 1 0001 - OP_TEQ_LSR_IMM, // 000 1001 1 0010 - OP_TEQ_LSR_REG, // 000 1001 1 0011 - OP_TEQ_ASR_IMM, // 000 1001 1 0100 - OP_TEQ_ASR_REG, // 000 1001 1 0101 - OP_TEQ_ROR_IMM, // 000 1001 1 0110 - OP_TEQ_ROR_REG, // 000 1001 1 0111 - - OP_TEQ_LSL_IMM, // 000 1001 1 1000 - OP_UND, // 000 1001 1 1001 - OP_TEQ_LSR_IMM, // OOO 1001 1 1010 - OP_LDRH_PRE_INDE_M_REG_OFF, // 000 1001 1 1011 - OP_TEQ_ASR_IMM, // 000 1001 1 1100 - OP_LDRSB_PRE_INDE_M_REG_OFF, // 000 1001 1 1101 - OP_TEQ_ROR_IMM, // 000 1001 1 1110 - OP_LDRSH_PRE_INDE_M_REG_OFF, // 000 1001 1 1111 -//------------------------------------------ - OP_MRS_SPSR, // 000 1010 0 0000 - OP_UND, // 000 1010 0 0001 - OP_UND, // 000 1010 0 0010 - OP_UND, // 000 1010 0 0011 - OP_UND, // 000 1010 0 0100 - OP_QDADD, // 000 1010 0 0101 - OP_UND, // 000 1010 0 0110 - OP_UND, // 000 1010 0 0111 - - OP_SMLAL_B_B, // 000 1010 0 1000 - OP_SWPB, // 000 1010 0 1001 - OP_SMLAL_T_B, // 000 1010 0 1010 - OP_STRH_M_IMM_OFF, // 000 1010 0 1011 - OP_SMLAL_B_T, // 000 1010 0 1100 - OP_LDRD_STRD_OFFSET_PRE_INDEX, - // 000 1010 0 1101 - OP_SMLAL_T_T, // 000 1010 0 1110 - OP_LDRD_STRD_OFFSET_PRE_INDEX, - // 000 1010 0 1111 - - OP_CMP_LSL_IMM, // 000 1010 1 0000 - OP_CMP_LSL_REG, // 000 1010 1 0001 - OP_CMP_LSR_IMM, // 000 1010 1 0010 - OP_CMP_LSR_REG, // 000 1010 1 0011 - OP_CMP_ASR_IMM, // 000 1010 1 0100 - OP_CMP_ASR_REG, // 000 1010 1 0101 - OP_CMP_ROR_IMM, // 000 1010 1 0110 - OP_CMP_ROR_REG, // 000 1010 1 0111 - - OP_CMP_LSL_IMM, // 000 1010 1 1000 - OP_UND, // 000 1010 1 1001 - OP_CMP_LSR_IMM, // OOO 1O1O 1 1010 - OP_LDRH_M_IMM_OFF, // 000 1010 1 1011 - OP_CMP_ASR_IMM, // 000 1010 1 1100 - OP_LDRSB_M_IMM_OFF,// 000 1010 1 1101 - OP_CMP_ROR_IMM, // 000 1010 1 1110 - OP_LDRSH_M_IMM_OFF,// 000 1010 1 1111 -//------------------------------------------ - OP_MSR_SPSR, // 000 1011 0 0000 - OP_CLZ, // 000 1011 0 0001 - OP_UND, // 000 1011 0 0010 - OP_UND, // 000 1011 0 0011 - OP_UND, // 000 1011 0 0100 - OP_QDSUB, // 000 1011 0 0101 - OP_UND, // 000 1011 0 0110 - OP_UND, // 000 1011 0 0111 - - OP_SMUL_B_B, // 000 1011 0 1000 - OP_UND, // 000 1011 0 1001 - OP_SMUL_T_B, // 000 1011 0 1010 - OP_STRH_PRE_INDE_M_IMM_OFF, // 000 1011 0 1011 - OP_SMUL_B_T, // 000 1011 0 1100 - OP_LDRD_STRD_OFFSET_PRE_INDEX, - // 000 1011 0 1101 - OP_SMUL_T_T, // 000 1011 0 1110 - OP_LDRD_STRD_OFFSET_PRE_INDEX, - // 000 1011 0 1111 - - OP_CMN_LSL_IMM, // 000 1011 1 0000 - OP_CMN_LSL_REG, // 000 1011 1 0001 - OP_CMN_LSR_IMM, // 000 1011 1 0010 - OP_CMN_LSR_REG, // 000 1011 1 0011 - OP_CMN_ASR_IMM, // 000 1011 1 0100 - OP_CMN_ASR_REG, // 000 1011 1 0101 - OP_CMN_ROR_IMM, // 000 1011 1 0110 - OP_CMN_ROR_REG, // 000 1011 1 0111 - - OP_CMN_LSL_IMM, // 000 1011 1 1000 - OP_UND, // 000 1011 1 1001 - OP_CMN_LSR_IMM, // OOO 1O11 1 1010 - OP_LDRH_PRE_INDE_M_IMM_OFF, // 000 1011 1 1011 - OP_CMN_ASR_IMM, // 000 1011 1 1100 - OP_LDRSB_PRE_INDE_M_IMM_OFF, // 000 1011 1 1101 - OP_CMN_ROR_IMM, // 000 1011 1 1110 - OP_LDRSH_PRE_INDE_M_IMM_OFF, // 000 1011 1 1111 -//------------------------------------------ - OP_ORR_LSL_IMM, // 000 1100 0 0000 - OP_ORR_LSL_REG, // 000 1100 0 0001 - OP_ORR_LSR_IMM, // 000 1100 0 0010 - OP_ORR_LSR_REG, // 000 1100 0 0011 - OP_ORR_ASR_IMM, // 000 1100 0 0100 - OP_ORR_ASR_REG, // 000 1100 0 0101 - OP_ORR_ROR_IMM, // 000 1100 0 0110 - OP_ORR_ROR_REG, // 000 1100 0 0111 - - OP_ORR_LSL_IMM, // 000 1100 0 1000 - OP_UND, // 000 1100 0 1001 - OP_ORR_LSR_IMM, // OOO 110O O 1010 - OP_STRH_P_REG_OFF, // 000 1100 0 1011 - OP_ORR_ASR_IMM, // 000 1100 0 1100 - OP_LDRD_STRD_OFFSET_PRE_INDEX, - // 000 1100 0 1101 - OP_ORR_ROR_IMM, // 000 1100 0 1110 - OP_LDRD_STRD_OFFSET_PRE_INDEX, - // 000 1100 0 1111 - - OP_ORR_S_LSL_IMM, // 000 1100 1 0000 - OP_ORR_S_LSL_REG, // 000 1100 1 0001 - OP_ORR_S_LSR_IMM, // 000 1100 1 0010 - OP_ORR_S_LSR_REG, // 000 1100 1 0011 - OP_ORR_S_ASR_IMM, // 000 1100 1 0100 - OP_ORR_S_ASR_REG, // 000 1100 1 0101 - OP_ORR_S_ROR_IMM, // 000 1100 1 0110 - OP_ORR_S_ROR_REG, // 000 1100 1 0111 - - OP_ORR_S_LSL_IMM, // 000 1100 1 1000 - OP_UND, // 000 1100 1 1001 - OP_ORR_S_LSR_IMM, // 000 1100 1 1010 - OP_LDRH_P_REG_OFF, // 000 1100 1 1011 - OP_ORR_S_ASR_IMM, // 000 1100 1 1100 - OP_LDRSB_P_REG_OFF,// 000 1100 1 1101 - OP_ORR_S_ROR_IMM, // 000 1100 1 1110 - OP_LDRSH_P_REG_OFF,// 000 1100 1 1111 -//------------------------------------------ - OP_MOV_LSL_IMM, // 000 1101 0 0000 - OP_MOV_LSL_REG, // 000 1101 0 0001 - OP_MOV_LSR_IMM, // 000 1101 0 0010 - OP_MOV_LSR_REG, // 000 1101 0 0011 - OP_MOV_ASR_IMM, // 000 1101 0 0100 - OP_MOV_ASR_REG, // 000 1101 0 0101 - OP_MOV_ROR_IMM, // 000 1101 0 0110 - OP_MOV_ROR_REG, // 000 1101 0 0111 - - OP_MOV_LSL_IMM, // 000 1101 0 1000 - OP_UND, // 000 1101 0 1001 - OP_MOV_LSR_IMM, // OOO 1101 O 1010 - OP_STRH_PRE_INDE_P_REG_OFF, // 000 1101 0 1011 - OP_MOV_ASR_IMM, // 000 1101 0 1100 - OP_LDRD_STRD_OFFSET_PRE_INDEX, - // 000 1101 0 1101 - OP_MOV_ROR_IMM, // 000 1101 0 1110 - OP_LDRD_STRD_OFFSET_PRE_INDEX, - // 000 1101 0 1111 - - OP_MOV_S_LSL_IMM, // 000 1101 1 0000 - OP_MOV_S_LSL_REG, // 000 1101 1 0001 - OP_MOV_S_LSR_IMM, // 000 1101 1 0010 - OP_MOV_S_LSR_REG, // 000 1101 1 0011 - OP_MOV_S_ASR_IMM, // 000 1101 1 0100 - OP_MOV_S_ASR_REG, // 000 1101 1 0101 - OP_MOV_S_ROR_IMM, // 000 1101 1 0110 - OP_MOV_S_ROR_REG, // 000 1101 1 0111 - - OP_MOV_S_LSL_IMM, // 000 1101 1 1000 - OP_UND, // 000 1101 1 1001 - OP_MOV_S_LSR_IMM, // 000 1101 1 1010 - OP_LDRH_PRE_INDE_P_REG_OFF, // 000 1101 1 1011 - OP_MOV_S_ASR_IMM, // 000 1101 1 1100 - OP_LDRSB_PRE_INDE_P_REG_OFF,// 000 1101 1 1101 - OP_MOV_S_ROR_IMM, // 000 1101 1 1110 - OP_LDRSH_PRE_INDE_P_REG_OFF,// 000 1101 1 1111 -//------------------------------------------ - OP_BIC_LSL_IMM, // 000 1110 0 0000 - OP_BIC_LSL_REG, // 000 1110 0 0001 - OP_BIC_LSR_IMM, // 000 1110 0 0010 - OP_BIC_LSR_REG, // 000 1110 0 0011 - OP_BIC_ASR_IMM, // 000 1110 0 0100 - OP_BIC_ASR_REG, // 000 1110 0 0101 - OP_BIC_ROR_IMM, // 000 1110 0 0110 - OP_BIC_ROR_REG, // 000 1110 0 0111 - - OP_BIC_LSL_IMM, // 000 1110 0 1000 - OP_UND, // 000 1110 0 1001 - OP_BIC_LSR_IMM, // OOO 111O O 1010 - OP_STRH_P_IMM_OFF, // 000 1110 0 1011 - OP_BIC_ASR_IMM, // 000 1110 0 1100 - OP_LDRD_STRD_OFFSET_PRE_INDEX, - // 000 1110 0 1101 - OP_BIC_ROR_IMM, // 000 1110 0 1110 - OP_LDRD_STRD_OFFSET_PRE_INDEX, - // 000 1110 0 1111 - - OP_BIC_S_LSL_IMM, // 000 1110 1 0000 - OP_BIC_S_LSL_REG, // 000 1110 1 0001 - OP_BIC_S_LSR_IMM, // 000 1110 1 0010 - OP_BIC_S_LSR_REG, // 000 1110 1 0011 - OP_BIC_S_ASR_IMM, // 000 1110 1 0100 - OP_BIC_S_ASR_REG, // 000 1110 1 0101 - OP_BIC_S_ROR_IMM, // 000 1110 1 0110 - OP_BIC_S_ROR_REG, // 000 1110 1 0111 - - OP_BIC_S_LSL_IMM, // 000 1110 1 1000 - OP_UND, // 000 1110 1 1001 - OP_BIC_S_LSR_IMM, // 000 1110 1 1010 - OP_LDRH_P_IMM_OFF, // 000 1110 1 1011 - OP_BIC_S_ASR_IMM, // 000 1110 1 1100 - OP_LDRSB_P_IMM_OFF,// 000 1110 1 1101 - OP_BIC_S_ROR_IMM, // 000 1110 1 1110 - OP_LDRSH_P_IMM_OFF,// 000 1110 1 1111 -//------------------------------------------- - OP_MVN_LSL_IMM, // 000 1111 0 0000 - OP_MVN_LSL_REG, // 000 1111 0 0001 - OP_MVN_LSR_IMM, // 000 1111 0 0010 - OP_MVN_LSR_REG, // 000 1111 0 0011 - OP_MVN_ASR_IMM, // 000 1111 0 0100 - OP_MVN_ASR_REG, // 000 1111 0 0101 - OP_MVN_ROR_IMM, // 000 1111 0 0110 - OP_MVN_ROR_REG, // 000 1111 0 0111 - - OP_MVN_LSL_IMM, // 000 1111 0 1000 - OP_UND, // 000 1111 0 1001 - OP_MVN_LSR_IMM, // OOO 1111 O 1010 - OP_STRH_PRE_INDE_P_IMM_OFF, // 000 1111 0 1011 - OP_MVN_ASR_IMM, // 000 1111 0 1100 - OP_LDRD_STRD_OFFSET_PRE_INDEX, - // 000 1111 0 1101 - OP_MVN_ROR_IMM, // 000 1111 0 1110 - OP_LDRD_STRD_OFFSET_PRE_INDEX, - // 000 1111 0 1111 - - OP_MVN_S_LSL_IMM, // 000 1111 1 0000 - OP_MVN_S_LSL_REG, // 000 1111 1 0001 - OP_MVN_S_LSR_IMM, // 000 1111 1 0010 - OP_MVN_S_LSR_REG, // 000 1111 1 0011 - OP_MVN_S_ASR_IMM, // 000 1111 1 0100 - OP_MVN_S_ASR_REG, // 000 1111 1 0101 - OP_MVN_S_ROR_IMM, // 000 1111 1 0110 - OP_MVN_S_ROR_REG, // 000 1111 1 0111 - - OP_MVN_S_LSL_IMM, // 000 1111 1 1000 - OP_UND, // 000 1111 1 1001 - OP_MVN_S_LSR_IMM, // 000 1111 1 1010 - OP_LDRH_PRE_INDE_P_IMM_OFF, // 000 1111 1 1011 - OP_MVN_S_ASR_IMM, // 000 1111 1 1100 - OP_LDRSB_PRE_INDE_P_IMM_OFF,// 000 1111 1 1101 - OP_MVN_S_ROR_IMM, // 000 1111 1 1110 - OP_LDRSH_PRE_INDE_P_IMM_OFF,// 000 1111 1 1111 -//------------------------------------------- - OP_AND_IMM_VAL, // 001 0000 0 0000 - OP_AND_IMM_VAL, // 001 0000 0 0001 - OP_AND_IMM_VAL, // 001 0000 0 0010 - OP_AND_IMM_VAL, // 001 0000 0 0011 - OP_AND_IMM_VAL, // 001 0000 0 0100 - OP_AND_IMM_VAL, // 001 0000 0 0101 - OP_AND_IMM_VAL, // 001 0000 0 0110 - OP_AND_IMM_VAL, // 001 0000 0 0111 - OP_AND_IMM_VAL, // 001 0000 0 1000 - OP_AND_IMM_VAL, // 001 0000 0 1001 - OP_AND_IMM_VAL, // 001 0000 0 1010 - OP_AND_IMM_VAL, // 001 0000 0 1011 - OP_AND_IMM_VAL, // 001 0000 0 1100 - OP_AND_IMM_VAL, // 001 0000 0 1101 - OP_AND_IMM_VAL, // 001 0000 0 1110 - OP_AND_IMM_VAL, // 001 0000 0 1111 - - OP_AND_S_IMM_VAL, // 001 0000 1 0000 - OP_AND_S_IMM_VAL, // 001 0000 1 0001 - OP_AND_S_IMM_VAL, // 001 0000 1 0010 - OP_AND_S_IMM_VAL, // 001 0000 1 0011 - OP_AND_S_IMM_VAL, // 001 0000 1 0100 - OP_AND_S_IMM_VAL, // 001 0000 1 0101 - OP_AND_S_IMM_VAL, // 001 0000 1 0110 - OP_AND_S_IMM_VAL, // 001 0000 1 0111 - OP_AND_S_IMM_VAL, // 001 0000 1 1000 - OP_AND_S_IMM_VAL, // 001 0000 1 1001 - OP_AND_S_IMM_VAL, // 001 0000 1 1010 - OP_AND_S_IMM_VAL, // 001 0000 1 1011 - OP_AND_S_IMM_VAL, // 001 0000 1 1100 - OP_AND_S_IMM_VAL, // 001 0000 1 1101 - OP_AND_S_IMM_VAL, // 001 0000 1 1110 - OP_AND_S_IMM_VAL, // 001 0000 1 1111 -//------------------------------------------ - OP_EOR_IMM_VAL, // 001 0001 0 0000 - OP_EOR_IMM_VAL, // 001 0001 0 0001 - OP_EOR_IMM_VAL, // 001 0001 0 0010 - OP_EOR_IMM_VAL, // 001 0001 0 0011 - OP_EOR_IMM_VAL, // 001 0001 0 0100 - OP_EOR_IMM_VAL, // 001 0001 0 0101 - OP_EOR_IMM_VAL, // 001 0001 0 0110 - OP_EOR_IMM_VAL, // 001 0001 0 0111 - OP_EOR_IMM_VAL, // 001 0001 0 1000 - OP_EOR_IMM_VAL, // 001 0001 0 1001 - OP_EOR_IMM_VAL, // 001 0001 0 1010 - OP_EOR_IMM_VAL, // 001 0001 0 1011 - OP_EOR_IMM_VAL, // 001 0001 0 1100 - OP_EOR_IMM_VAL, // 001 0001 0 1101 - OP_EOR_IMM_VAL, // 001 0001 0 1110 - OP_EOR_IMM_VAL, // 001 0001 0 1111 - - OP_EOR_S_IMM_VAL, // 001 0001 1 0000 - OP_EOR_S_IMM_VAL, // 001 0001 1 0001 - OP_EOR_S_IMM_VAL, // 001 0001 1 0010 - OP_EOR_S_IMM_VAL, // 001 0001 1 0011 - OP_EOR_S_IMM_VAL, // 001 0001 1 0100 - OP_EOR_S_IMM_VAL, // 001 0001 1 0101 - OP_EOR_S_IMM_VAL, // 001 0001 1 0110 - OP_EOR_S_IMM_VAL, // 001 0001 1 0111 - OP_EOR_S_IMM_VAL, // 001 0001 1 1000 - OP_EOR_S_IMM_VAL, // 001 0001 1 1001 - OP_EOR_S_IMM_VAL, // 001 0001 1 1010 - OP_EOR_S_IMM_VAL, // 001 0001 1 1011 - OP_EOR_S_IMM_VAL, // 001 0001 1 1100 - OP_EOR_S_IMM_VAL, // 001 0001 1 1101 - OP_EOR_S_IMM_VAL, // 001 0001 1 1110 - OP_EOR_S_IMM_VAL, // 001 0001 1 1111 -//------------------------------------------ - OP_SUB_IMM_VAL, // 001 0010 0 0000 - OP_SUB_IMM_VAL, // 001 0010 0 0001 - OP_SUB_IMM_VAL, // 001 0010 0 0010 - OP_SUB_IMM_VAL, // 001 0010 0 0011 - OP_SUB_IMM_VAL, // 001 0010 0 0100 - OP_SUB_IMM_VAL, // 001 0010 0 0101 - OP_SUB_IMM_VAL, // 001 0010 0 0110 - OP_SUB_IMM_VAL, // 001 0010 0 0111 - OP_SUB_IMM_VAL, // 001 0010 0 1000 - OP_SUB_IMM_VAL, // 001 0010 0 1001 - OP_SUB_IMM_VAL, // 001 0010 0 1010 - OP_SUB_IMM_VAL, // 001 0010 0 1011 - OP_SUB_IMM_VAL, // 001 0010 0 1100 - OP_SUB_IMM_VAL, // 001 0010 0 1101 - OP_SUB_IMM_VAL, // 001 0010 0 1110 - OP_SUB_IMM_VAL, // 001 0010 0 1111 - - OP_SUB_S_IMM_VAL, // 001 0010 1 0000 - OP_SUB_S_IMM_VAL, // 001 0010 1 0001 - OP_SUB_S_IMM_VAL, // 001 0010 1 0010 - OP_SUB_S_IMM_VAL, // 001 0010 1 0011 - OP_SUB_S_IMM_VAL, // 001 0010 1 0100 - OP_SUB_S_IMM_VAL, // 001 0010 1 0101 - OP_SUB_S_IMM_VAL, // 001 0010 1 0110 - OP_SUB_S_IMM_VAL, // 001 0010 1 0111 - OP_SUB_S_IMM_VAL, // 001 0010 1 1000 - OP_SUB_S_IMM_VAL, // 001 0010 1 1001 - OP_SUB_S_IMM_VAL, // 001 0010 1 1010 - OP_SUB_S_IMM_VAL, // 001 0010 1 1011 - OP_SUB_S_IMM_VAL, // 001 0010 1 1100 - OP_SUB_S_IMM_VAL, // 001 0010 1 1101 - OP_SUB_S_IMM_VAL, // 001 0010 1 1110 - OP_SUB_S_IMM_VAL, // 001 0010 1 1111 -//------------------------------------------ - OP_RSB_IMM_VAL, // 001 0011 0 0000 - OP_RSB_IMM_VAL, // 001 0011 0 0001 - OP_RSB_IMM_VAL, // 001 0011 0 0010 - OP_RSB_IMM_VAL, // 001 0011 0 0011 - OP_RSB_IMM_VAL, // 001 0011 0 0100 - OP_RSB_IMM_VAL, // 001 0011 0 0101 - OP_RSB_IMM_VAL, // 001 0011 0 0110 - OP_RSB_IMM_VAL, // 001 0011 0 0111 - OP_RSB_IMM_VAL, // 001 0011 0 1000 - OP_RSB_IMM_VAL, // 001 0011 0 1001 - OP_RSB_IMM_VAL, // 001 0011 0 1010 - OP_RSB_IMM_VAL, // 001 0011 0 1011 - OP_RSB_IMM_VAL, // 001 0011 0 1100 - OP_RSB_IMM_VAL, // 001 0011 0 1101 - OP_RSB_IMM_VAL, // 001 0011 0 1110 - OP_RSB_IMM_VAL, // 001 0011 0 1111 - - OP_RSB_S_IMM_VAL, // 001 0011 1 0000 - OP_RSB_S_IMM_VAL, // 001 0011 1 0001 - OP_RSB_S_IMM_VAL, // 001 0011 1 0010 - OP_RSB_S_IMM_VAL, // 001 0011 1 0011 - OP_RSB_S_IMM_VAL, // 001 0011 1 0100 - OP_RSB_S_IMM_VAL, // 001 0011 1 0101 - OP_RSB_S_IMM_VAL, // 001 0011 1 0110 - OP_RSB_S_IMM_VAL, // 001 0011 1 0111 - OP_RSB_S_IMM_VAL, // 001 0011 1 1000 - OP_RSB_S_IMM_VAL, // 001 0011 1 1001 - OP_RSB_S_IMM_VAL, // 001 0011 1 1010 - OP_RSB_S_IMM_VAL, // 001 0011 1 1011 - OP_RSB_S_IMM_VAL, // 001 0011 1 1100 - OP_RSB_S_IMM_VAL, // 001 0011 1 1101 - OP_RSB_S_IMM_VAL, // 001 0011 1 1110 - OP_RSB_S_IMM_VAL, // 001 0011 1 1111 -//------------------------------------------ - OP_ADD_IMM_VAL, // 001 0100 0 0000 - OP_ADD_IMM_VAL, // 001 0100 0 0001 - OP_ADD_IMM_VAL, // 001 0100 0 0010 - OP_ADD_IMM_VAL, // 001 0100 0 0011 - OP_ADD_IMM_VAL, // 001 0100 0 0100 - OP_ADD_IMM_VAL, // 001 0100 0 0101 - OP_ADD_IMM_VAL, // 001 0100 0 0110 - OP_ADD_IMM_VAL, // 001 0100 0 0111 - OP_ADD_IMM_VAL, // 001 0100 0 1000 - OP_ADD_IMM_VAL, // 001 0100 0 1001 - OP_ADD_IMM_VAL, // 001 0100 0 1010 - OP_ADD_IMM_VAL, // 001 0100 0 1011 - OP_ADD_IMM_VAL, // 001 0100 0 1100 - OP_ADD_IMM_VAL, // 001 0100 0 1101 - OP_ADD_IMM_VAL, // 001 0100 0 1110 - OP_ADD_IMM_VAL, // 001 0100 0 1111 - - OP_ADD_S_IMM_VAL, // 001 0100 1 0000 - OP_ADD_S_IMM_VAL, // 001 0100 1 0001 - OP_ADD_S_IMM_VAL, // 001 0100 1 0010 - OP_ADD_S_IMM_VAL, // 001 0100 1 0011 - OP_ADD_S_IMM_VAL, // 001 0100 1 0100 - OP_ADD_S_IMM_VAL, // 001 0100 1 0101 - OP_ADD_S_IMM_VAL, // 001 0100 1 0110 - OP_ADD_S_IMM_VAL, // 001 0100 1 0111 - OP_ADD_S_IMM_VAL, // 001 0100 1 1000 - OP_ADD_S_IMM_VAL, // 001 0100 1 1001 - OP_ADD_S_IMM_VAL, // 001 0100 1 1010 - OP_ADD_S_IMM_VAL, // 001 0100 1 1011 - OP_ADD_S_IMM_VAL, // 001 0100 1 1100 - OP_ADD_S_IMM_VAL, // 001 0100 1 1101 - OP_ADD_S_IMM_VAL, // 001 0100 1 1110 - OP_ADD_S_IMM_VAL, // 001 0100 1 1111 -//------------------------------------------ - OP_ADC_IMM_VAL, // 001 0101 0 0000 - OP_ADC_IMM_VAL, // 001 0101 0 0001 - OP_ADC_IMM_VAL, // 001 0101 0 0010 - OP_ADC_IMM_VAL, // 001 0101 0 0011 - OP_ADC_IMM_VAL, // 001 0101 0 0100 - OP_ADC_IMM_VAL, // 001 0101 0 0101 - OP_ADC_IMM_VAL, // 001 0101 0 0110 - OP_ADC_IMM_VAL, // 001 0101 0 0111 - OP_ADC_IMM_VAL, // 001 0101 0 1000 - OP_ADC_IMM_VAL, // 001 0101 0 1001 - OP_ADC_IMM_VAL, // 001 0101 0 1010 - OP_ADC_IMM_VAL, // 001 0101 0 1011 - OP_ADC_IMM_VAL, // 001 0101 0 1100 - OP_ADC_IMM_VAL, // 001 0101 0 1101 - OP_ADC_IMM_VAL, // 001 0101 0 1110 - OP_ADC_IMM_VAL, // 001 0101 0 1111 - - OP_ADC_S_IMM_VAL, // 001 0101 1 0000 - OP_ADC_S_IMM_VAL, // 001 0101 1 0001 - OP_ADC_S_IMM_VAL, // 001 0101 1 0010 - OP_ADC_S_IMM_VAL, // 001 0101 1 0011 - OP_ADC_S_IMM_VAL, // 001 0101 1 0100 - OP_ADC_S_IMM_VAL, // 001 0101 1 0101 - OP_ADC_S_IMM_VAL, // 001 0101 1 0110 - OP_ADC_S_IMM_VAL, // 001 0101 1 0111 - OP_ADC_S_IMM_VAL, // 001 0101 1 1000 - OP_ADC_S_IMM_VAL, // 001 0101 1 1001 - OP_ADC_S_IMM_VAL, // 001 0101 1 1010 - OP_ADC_S_IMM_VAL, // 001 0101 1 1011 - OP_ADC_S_IMM_VAL, // 001 0101 1 1100 - OP_ADC_S_IMM_VAL, // 001 0101 1 1101 - OP_ADC_S_IMM_VAL, // 001 0101 1 1110 - OP_ADC_S_IMM_VAL, // 001 0101 1 1111 -//------------------------------------------ - OP_SBC_IMM_VAL, // 001 0110 0 0000 - OP_SBC_IMM_VAL, // 001 0110 0 0001 - OP_SBC_IMM_VAL, // 001 0110 0 0010 - OP_SBC_IMM_VAL, // 001 0110 0 0011 - OP_SBC_IMM_VAL, // 001 0110 0 0100 - OP_SBC_IMM_VAL, // 001 0110 0 0101 - OP_SBC_IMM_VAL, // 001 0110 0 0110 - OP_SBC_IMM_VAL, // 001 0110 0 0111 - OP_SBC_IMM_VAL, // 001 0110 0 1000 - OP_SBC_IMM_VAL, // 001 0110 0 1001 - OP_SBC_IMM_VAL, // 001 0110 0 1010 - OP_SBC_IMM_VAL, // 001 0110 0 1011 - OP_SBC_IMM_VAL, // 001 0110 0 1100 - OP_SBC_IMM_VAL, // 001 0110 0 1101 - OP_SBC_IMM_VAL, // 001 0110 0 1110 - OP_SBC_IMM_VAL, // 001 0110 0 1111 - - OP_SBC_S_IMM_VAL, // 001 0110 1 0000 - OP_SBC_S_IMM_VAL, // 001 0110 1 0001 - OP_SBC_S_IMM_VAL, // 001 0110 1 0010 - OP_SBC_S_IMM_VAL, // 001 0110 1 0011 - OP_SBC_S_IMM_VAL, // 001 0110 1 0100 - OP_SBC_S_IMM_VAL, // 001 0110 1 0101 - OP_SBC_S_IMM_VAL, // 001 0110 1 0110 - OP_SBC_S_IMM_VAL, // 001 0110 1 0111 - OP_SBC_S_IMM_VAL, // 001 0110 1 1000 - OP_SBC_S_IMM_VAL, // 001 0110 1 1001 - OP_SBC_S_IMM_VAL, // 001 0110 1 1010 - OP_SBC_S_IMM_VAL, // 001 0110 1 1011 - OP_SBC_S_IMM_VAL, // 001 0110 1 1100 - OP_SBC_S_IMM_VAL, // 001 0110 1 1101 - OP_SBC_S_IMM_VAL, // 001 0110 1 1110 - OP_SBC_S_IMM_VAL, // 001 0110 1 1111 -//------------------------------------------ - OP_RSC_IMM_VAL, // 001 0111 0 0000 - OP_RSC_IMM_VAL, // 001 0111 0 0001 - OP_RSC_IMM_VAL, // 001 0111 0 0010 - OP_RSC_IMM_VAL, // 001 0111 0 0011 - OP_RSC_IMM_VAL, // 001 0111 0 0100 - OP_RSC_IMM_VAL, // 001 0111 0 0101 - OP_RSC_IMM_VAL, // 001 0111 0 0110 - OP_RSC_IMM_VAL, // 001 0111 0 0111 - OP_RSC_IMM_VAL, // 001 0111 0 1000 - OP_RSC_IMM_VAL, // 001 0111 0 1001 - OP_RSC_IMM_VAL, // 001 0111 0 1010 - OP_RSC_IMM_VAL, // 001 0111 0 1011 - OP_RSC_IMM_VAL, // 001 0111 0 1100 - OP_RSC_IMM_VAL, // 001 0111 0 1101 - OP_RSC_IMM_VAL, // 001 0111 0 1110 - OP_RSC_IMM_VAL, // 001 0111 0 1111 - - OP_RSC_S_IMM_VAL, // 001 0111 1 0000 - OP_RSC_S_IMM_VAL, // 001 0111 1 0001 - OP_RSC_S_IMM_VAL, // 001 0111 1 0010 - OP_RSC_S_IMM_VAL, // 001 0111 1 0011 - OP_RSC_S_IMM_VAL, // 001 0111 1 0100 - OP_RSC_S_IMM_VAL, // 001 0111 1 0101 - OP_RSC_S_IMM_VAL, // 001 0111 1 0110 - OP_RSC_S_IMM_VAL, // 001 0111 1 0111 - OP_RSC_S_IMM_VAL, // 001 0111 1 1000 - OP_RSC_S_IMM_VAL, // 001 0111 1 1001 - OP_RSC_S_IMM_VAL, // 001 0111 1 1010 - OP_RSC_S_IMM_VAL, // 001 0111 1 1011 - OP_RSC_S_IMM_VAL, // 001 0111 1 1100 - OP_RSC_S_IMM_VAL, // 001 0111 1 1101 - OP_RSC_S_IMM_VAL, // 001 0111 1 1110 - OP_RSC_S_IMM_VAL, // 001 0111 1 1111 -//------------------------------------------ - OP_UND, // 001 1000 0 0000 - OP_UND, // 001 1000 0 0001 - OP_UND, // 001 1000 0 0010 - OP_UND, // 001 1000 0 0011 - OP_UND, // 001 1000 0 0100 - OP_UND, // 001 1000 0 0101 - OP_UND, // 001 1000 0 0110 - OP_UND, // 001 1000 0 0111 - OP_UND, // 001 1000 0 1000 - OP_UND, // 001 1000 0 1001 - OP_UND, // 001 1000 0 1010 - OP_UND, // 001 1000 0 1011 - OP_UND, // 001 1000 0 1100 - OP_UND, // 001 1000 0 1101 - OP_UND, // 001 1000 0 1110 - OP_UND, // 001 1000 0 1111 - - OP_TST_IMM_VAL, // 001 1000 1 0000 - OP_TST_IMM_VAL, // 001 1000 1 0001 - OP_TST_IMM_VAL, // 001 1000 1 0010 - OP_TST_IMM_VAL, // 001 1000 1 0011 - OP_TST_IMM_VAL, // 001 1000 1 0100 - OP_TST_IMM_VAL, // 001 1000 1 0101 - OP_TST_IMM_VAL, // 001 1000 1 0110 - OP_TST_IMM_VAL, // 001 1000 1 0111 - OP_TST_IMM_VAL, // 001 1000 1 1000 - OP_TST_IMM_VAL, // 001 1000 1 1001 - OP_TST_IMM_VAL, // 001 1000 1 1010 - OP_TST_IMM_VAL, // 001 1000 1 1011 - OP_TST_IMM_VAL, // 001 1000 1 1100 - OP_TST_IMM_VAL, // 001 1000 1 1101 - OP_TST_IMM_VAL, // 001 1000 1 1110 - OP_TST_IMM_VAL, // 001 1000 1 1111 -//------------------------------------------ - OP_MSR_CPSR_IMM_VAL, // 001 1001 0 0000 - OP_MSR_CPSR_IMM_VAL, // 001 1001 0 0001 - OP_MSR_CPSR_IMM_VAL, // 001 1001 0 0010 - OP_MSR_CPSR_IMM_VAL, // 001 1001 0 0011 - OP_MSR_CPSR_IMM_VAL, // 001 1001 0 0100 - OP_MSR_CPSR_IMM_VAL, // 001 1001 0 0101 - OP_MSR_CPSR_IMM_VAL, // 001 1001 0 0110 - OP_MSR_CPSR_IMM_VAL, // 001 1001 0 0111 - OP_MSR_CPSR_IMM_VAL, // 001 1001 0 1000 - OP_MSR_CPSR_IMM_VAL, // 001 1001 0 1001 - OP_MSR_CPSR_IMM_VAL, // 001 1001 0 1010 - OP_MSR_CPSR_IMM_VAL, // 001 1001 0 1011 - OP_MSR_CPSR_IMM_VAL, // 001 1001 0 1100 - OP_MSR_CPSR_IMM_VAL, // 001 1001 0 1101 - OP_MSR_CPSR_IMM_VAL, // 001 1001 0 1110 - OP_MSR_CPSR_IMM_VAL, // 001 1001 0 1111 - - OP_TEQ_IMM_VAL, // 001 1001 1 0000 - OP_TEQ_IMM_VAL, // 001 1001 1 0001 - OP_TEQ_IMM_VAL, // 001 1001 1 0010 - OP_TEQ_IMM_VAL, // 001 1001 1 0011 - OP_TEQ_IMM_VAL, // 001 1001 1 0100 - OP_TEQ_IMM_VAL, // 001 1001 1 0101 - OP_TEQ_IMM_VAL, // 001 1001 1 0110 - OP_TEQ_IMM_VAL, // 001 1001 1 0111 - OP_TEQ_IMM_VAL, // 001 1001 1 1000 - OP_TEQ_IMM_VAL, // 001 1001 1 1001 - OP_TEQ_IMM_VAL, // 001 1001 1 1010 - OP_TEQ_IMM_VAL, // 001 1001 1 1011 - OP_TEQ_IMM_VAL, // 001 1001 1 1100 - OP_TEQ_IMM_VAL, // 001 1001 1 1101 - OP_TEQ_IMM_VAL, // 001 1001 1 1110 - OP_TEQ_IMM_VAL, // 001 1001 1 1111 -//------------------------------------------ - OP_UND, // 001 1010 0 0000 - OP_UND, // 001 1010 0 0001 - OP_UND, // 001 1010 0 0010 - OP_UND, // 001 1010 0 0011 - OP_UND, // 001 1010 0 0100 - OP_UND, // 001 1010 0 0101 - OP_UND, // 001 1010 0 0110 - OP_UND, // 001 1010 0 0111 - OP_UND, // 001 1010 0 1000 - OP_UND, // 001 1010 0 1001 - OP_UND, // 001 1010 0 1010 - OP_UND, // 001 1010 0 1011 - OP_UND, // 001 1010 0 1100 - OP_UND, // 001 1010 0 1101 - OP_UND, // 001 1010 0 1110 - OP_UND, // 001 1010 0 1111 - - OP_CMP_IMM_VAL, // 001 1010 1 0000 - OP_CMP_IMM_VAL, // 001 1010 1 0001 - OP_CMP_IMM_VAL, // 001 1010 1 0010 - OP_CMP_IMM_VAL, // 001 1010 1 0011 - OP_CMP_IMM_VAL, // 001 1010 1 0100 - OP_CMP_IMM_VAL, // 001 1010 1 0101 - OP_CMP_IMM_VAL, // 001 1010 1 0110 - OP_CMP_IMM_VAL, // 001 1010 1 0111 - OP_CMP_IMM_VAL, // 001 1010 1 1000 - OP_CMP_IMM_VAL, // 001 1010 1 1001 - OP_CMP_IMM_VAL, // 001 1010 1 1010 - OP_CMP_IMM_VAL, // 001 1010 1 1011 - OP_CMP_IMM_VAL, // 001 1010 1 1100 - OP_CMP_IMM_VAL, // 001 1010 1 1101 - OP_CMP_IMM_VAL, // 001 1010 1 1110 - OP_CMP_IMM_VAL, // 001 1010 1 1111 -//------------------------------------------ - OP_MSR_SPSR_IMM_VAL, // 001 1011 0 0000 - OP_MSR_SPSR_IMM_VAL, // 001 1011 0 0001 - OP_MSR_SPSR_IMM_VAL, // 001 1011 0 0010 - OP_MSR_SPSR_IMM_VAL, // 001 1011 0 0011 - OP_MSR_SPSR_IMM_VAL, // 001 1011 0 0100 - OP_MSR_SPSR_IMM_VAL, // 001 1011 0 0101 - OP_MSR_SPSR_IMM_VAL, // 001 1011 0 0110 - OP_MSR_SPSR_IMM_VAL, // 001 1011 0 0111 - OP_MSR_SPSR_IMM_VAL, // 001 1011 0 1000 - OP_MSR_SPSR_IMM_VAL, // 001 1011 0 1001 - OP_MSR_SPSR_IMM_VAL, // 001 1011 0 1010 - OP_MSR_SPSR_IMM_VAL, // 001 1011 0 1011 - OP_MSR_SPSR_IMM_VAL, // 001 1011 0 1100 - OP_MSR_SPSR_IMM_VAL, // 001 1011 0 1101 - OP_MSR_SPSR_IMM_VAL, // 001 1011 0 1110 - OP_MSR_SPSR_IMM_VAL, // 001 1011 0 1111 - - OP_CMN_IMM_VAL, // 001 1011 1 0000 - OP_CMN_IMM_VAL, // 001 1011 1 0001 - OP_CMN_IMM_VAL, // 001 1011 1 0010 - OP_CMN_IMM_VAL, // 001 1011 1 0011 - OP_CMN_IMM_VAL, // 001 1011 1 0100 - OP_CMN_IMM_VAL, // 001 1011 1 0101 - OP_CMN_IMM_VAL, // 001 1011 1 0110 - OP_CMN_IMM_VAL, // 001 1011 1 0111 - OP_CMN_IMM_VAL, // 001 1011 1 1000 - OP_CMN_IMM_VAL, // 001 1011 1 1001 - OP_CMN_IMM_VAL, // 001 1011 1 1010 - OP_CMN_IMM_VAL, // 001 1011 1 1011 - OP_CMN_IMM_VAL, // 001 1011 1 1100 - OP_CMN_IMM_VAL, // 001 1011 1 1101 - OP_CMN_IMM_VAL, // 001 1011 1 1110 - OP_CMN_IMM_VAL, // 001 1011 1 1111 -//------------------------------------------ - OP_ORR_IMM_VAL, // 001 1100 0 0000 - OP_ORR_IMM_VAL, // 001 1100 0 0001 - OP_ORR_IMM_VAL, // 001 1100 0 0010 - OP_ORR_IMM_VAL, // 001 1100 0 0011 - OP_ORR_IMM_VAL, // 001 1100 0 0100 - OP_ORR_IMM_VAL, // 001 1100 0 0101 - OP_ORR_IMM_VAL, // 001 1100 0 0110 - OP_ORR_IMM_VAL, // 001 1100 0 0111 - OP_ORR_IMM_VAL, // 001 1100 0 1000 - OP_ORR_IMM_VAL, // 001 1100 0 1001 - OP_ORR_IMM_VAL, // 001 1100 0 1010 - OP_ORR_IMM_VAL, // 001 1100 0 1011 - OP_ORR_IMM_VAL, // 001 1100 0 1100 - OP_ORR_IMM_VAL, // 001 1100 0 1101 - OP_ORR_IMM_VAL, // 001 1100 0 1110 - OP_ORR_IMM_VAL, // 001 1100 0 1111 - - OP_ORR_S_IMM_VAL, // 001 1100 1 0000 - OP_ORR_S_IMM_VAL, // 001 1100 1 0001 - OP_ORR_S_IMM_VAL, // 001 1100 1 0010 - OP_ORR_S_IMM_VAL, // 001 1100 1 0011 - OP_ORR_S_IMM_VAL, // 001 1100 1 0100 - OP_ORR_S_IMM_VAL, // 001 1100 1 0101 - OP_ORR_S_IMM_VAL, // 001 1100 1 0110 - OP_ORR_S_IMM_VAL, // 001 1100 1 0111 - OP_ORR_S_IMM_VAL, // 001 1100 1 1000 - OP_ORR_S_IMM_VAL, // 001 1100 1 1001 - OP_ORR_S_IMM_VAL, // 001 1100 1 1010 - OP_ORR_S_IMM_VAL, // 001 1100 1 1011 - OP_ORR_S_IMM_VAL, // 001 1100 1 1100 - OP_ORR_S_IMM_VAL, // 001 1100 1 1101 - OP_ORR_S_IMM_VAL, // 001 1100 1 1110 - OP_ORR_S_IMM_VAL, // 001 1100 1 1111 -//------------------------------------------ - OP_MOV_IMM_VAL, // 001 1101 0 0000 - OP_MOV_IMM_VAL, // 001 1101 0 0001 - OP_MOV_IMM_VAL, // 001 1101 0 0010 - OP_MOV_IMM_VAL, // 001 1101 0 0011 - OP_MOV_IMM_VAL, // 001 1101 0 0100 - OP_MOV_IMM_VAL, // 001 1101 0 0101 - OP_MOV_IMM_VAL, // 001 1101 0 0110 - OP_MOV_IMM_VAL, // 001 1101 0 0111 - OP_MOV_IMM_VAL, // 001 1101 0 1000 - OP_MOV_IMM_VAL, // 001 1101 0 1001 - OP_MOV_IMM_VAL, // 001 1101 0 1010 - OP_MOV_IMM_VAL, // 001 1101 0 1011 - OP_MOV_IMM_VAL, // 001 1101 0 1100 - OP_MOV_IMM_VAL, // 001 1101 0 1101 - OP_MOV_IMM_VAL, // 001 1101 0 1110 - OP_MOV_IMM_VAL, // 001 1101 0 1111 - - OP_MOV_S_IMM_VAL, // 001 1101 1 0000 - OP_MOV_S_IMM_VAL, // 001 1101 1 0001 - OP_MOV_S_IMM_VAL, // 001 1101 1 0010 - OP_MOV_S_IMM_VAL, // 001 1101 1 0011 - OP_MOV_S_IMM_VAL, // 001 1101 1 0100 - OP_MOV_S_IMM_VAL, // 001 1101 1 0101 - OP_MOV_S_IMM_VAL, // 001 1101 1 0110 - OP_MOV_S_IMM_VAL, // 001 1101 1 0111 - OP_MOV_S_IMM_VAL, // 001 1101 1 1000 - OP_MOV_S_IMM_VAL, // 001 1101 1 1001 - OP_MOV_S_IMM_VAL, // 001 1101 1 1010 - OP_MOV_S_IMM_VAL, // 001 1101 1 1011 - OP_MOV_S_IMM_VAL, // 001 1101 1 1100 - OP_MOV_S_IMM_VAL, // 001 1101 1 1101 - OP_MOV_S_IMM_VAL, // 001 1101 1 1110 - OP_MOV_S_IMM_VAL, // 001 1101 1 1111 -//------------------------------------------ - OP_BIC_IMM_VAL, // 001 1110 0 0000 - OP_BIC_IMM_VAL, // 001 1110 0 0001 - OP_BIC_IMM_VAL, // 001 1110 0 0010 - OP_BIC_IMM_VAL, // 001 1110 0 0011 - OP_BIC_IMM_VAL, // 001 1110 0 0100 - OP_BIC_IMM_VAL, // 001 1110 0 0101 - OP_BIC_IMM_VAL, // 001 1110 0 0110 - OP_BIC_IMM_VAL, // 001 1110 0 0111 - OP_BIC_IMM_VAL, // 001 1110 0 1000 - OP_BIC_IMM_VAL, // 001 1110 0 1001 - OP_BIC_IMM_VAL, // 001 1110 0 1010 - OP_BIC_IMM_VAL, // 001 1110 0 1011 - OP_BIC_IMM_VAL, // 001 1110 0 1100 - OP_BIC_IMM_VAL, // 001 1110 0 1101 - OP_BIC_IMM_VAL, // 001 1110 0 1110 - OP_BIC_IMM_VAL, // 001 1110 0 1111 - - OP_BIC_S_IMM_VAL, // 001 1110 1 0000 - OP_BIC_S_IMM_VAL, // 001 1110 1 0001 - OP_BIC_S_IMM_VAL, // 001 1110 1 0010 - OP_BIC_S_IMM_VAL, // 001 1110 1 0011 - OP_BIC_S_IMM_VAL, // 001 1110 1 0100 - OP_BIC_S_IMM_VAL, // 001 1110 1 0101 - OP_BIC_S_IMM_VAL, // 001 1110 1 0110 - OP_BIC_S_IMM_VAL, // 001 1110 1 0111 - OP_BIC_S_IMM_VAL, // 001 1110 1 1000 - OP_BIC_S_IMM_VAL, // 001 1110 1 1001 - OP_BIC_S_IMM_VAL, // 001 1110 1 1010 - OP_BIC_S_IMM_VAL, // 001 1110 1 1011 - OP_BIC_S_IMM_VAL, // 001 1110 1 1100 - OP_BIC_S_IMM_VAL, // 001 1110 1 1101 - OP_BIC_S_IMM_VAL, // 001 1110 1 1110 - OP_BIC_S_IMM_VAL, // 001 1110 1 1111 -//------------------------------------------ - OP_MVN_IMM_VAL, // 001 1111 0 0000 - OP_MVN_IMM_VAL, // 001 1111 0 0001 - OP_MVN_IMM_VAL, // 001 1111 0 0010 - OP_MVN_IMM_VAL, // 001 1111 0 0011 - OP_MVN_IMM_VAL, // 001 1111 0 0100 - OP_MVN_IMM_VAL, // 001 1111 0 0101 - OP_MVN_IMM_VAL, // 001 1111 0 0110 - OP_MVN_IMM_VAL, // 001 1111 0 0111 - OP_MVN_IMM_VAL, // 001 1111 0 1000 - OP_MVN_IMM_VAL, // 001 1111 0 1001 - OP_MVN_IMM_VAL, // 001 1111 0 1010 - OP_MVN_IMM_VAL, // 001 1111 0 1011 - OP_MVN_IMM_VAL, // 001 1111 0 1100 - OP_MVN_IMM_VAL, // 001 1111 0 1101 - OP_MVN_IMM_VAL, // 001 1111 0 1110 - OP_MVN_IMM_VAL, // 001 1111 0 1111 - - OP_MVN_S_IMM_VAL, // 001 1111 1 0000 - OP_MVN_S_IMM_VAL, // 001 1111 1 0001 - OP_MVN_S_IMM_VAL, // 001 1111 1 0010 - OP_MVN_S_IMM_VAL, // 001 1111 1 0011 - OP_MVN_S_IMM_VAL, // 001 1111 1 0100 - OP_MVN_S_IMM_VAL, // 001 1111 1 0101 - OP_MVN_S_IMM_VAL, // 001 1111 1 0110 - OP_MVN_S_IMM_VAL, // 001 1111 1 0111 - OP_MVN_S_IMM_VAL, // 001 1111 1 1000 - OP_MVN_S_IMM_VAL, // 001 1111 1 1001 - OP_MVN_S_IMM_VAL, // 001 1111 1 1010 - OP_MVN_S_IMM_VAL, // 001 1111 1 1011 - OP_MVN_S_IMM_VAL, // 001 1111 1 1100 - OP_MVN_S_IMM_VAL, // 001 1111 1 1101 - OP_MVN_S_IMM_VAL, // 001 1111 1 1110 - OP_MVN_S_IMM_VAL, // 001 1111 1 1111 -//------------------------------------------ - OP_STR_M_IMM_OFF_POSTIND, //010 0000 0 0000 - OP_STR_M_IMM_OFF_POSTIND, //010 0000 0 0001 - OP_STR_M_IMM_OFF_POSTIND, //010 0000 0 0010 - OP_STR_M_IMM_OFF_POSTIND, //010 0000 0 0011 - OP_STR_M_IMM_OFF_POSTIND, //010 0000 0 0100 - OP_STR_M_IMM_OFF_POSTIND, //010 0000 0 0101 - OP_STR_M_IMM_OFF_POSTIND, //010 0000 0 0110 - OP_STR_M_IMM_OFF_POSTIND, //010 0000 0 0111 - OP_STR_M_IMM_OFF_POSTIND, //010 0000 0 1000 - OP_STR_M_IMM_OFF_POSTIND, //010 0000 0 1001 - OP_STR_M_IMM_OFF_POSTIND, //010 0000 0 1010 - OP_STR_M_IMM_OFF_POSTIND, //010 0000 0 1011 - OP_STR_M_IMM_OFF_POSTIND, //010 0000 0 1100 - OP_STR_M_IMM_OFF_POSTIND, //010 0000 0 1101 - OP_STR_M_IMM_OFF_POSTIND, //010 0000 0 1110 - OP_STR_M_IMM_OFF_POSTIND, //010 0000 0 1111 - - OP_LDR_M_IMM_OFF_POSTIND, //010 0000 1 0000 - OP_LDR_M_IMM_OFF_POSTIND, //010 0000 1 0001 - OP_LDR_M_IMM_OFF_POSTIND, //010 0000 1 0010 - OP_LDR_M_IMM_OFF_POSTIND, //010 0000 1 0011 - OP_LDR_M_IMM_OFF_POSTIND, //010 0000 1 0100 - OP_LDR_M_IMM_OFF_POSTIND, //010 0000 1 0101 - OP_LDR_M_IMM_OFF_POSTIND, //010 0000 1 0110 - OP_LDR_M_IMM_OFF_POSTIND, //010 0000 1 0111 - OP_LDR_M_IMM_OFF_POSTIND, //010 0000 1 1000 - OP_LDR_M_IMM_OFF_POSTIND, //010 0000 1 1001 - OP_LDR_M_IMM_OFF_POSTIND, //010 0000 1 1010 - OP_LDR_M_IMM_OFF_POSTIND, //010 0000 1 1011 - OP_LDR_M_IMM_OFF_POSTIND, //010 0000 1 1100 - OP_LDR_M_IMM_OFF_POSTIND, //010 0000 1 1101 - OP_LDR_M_IMM_OFF_POSTIND, //010 0000 1 1110 - OP_LDR_M_IMM_OFF_POSTIND, //010 0000 1 1111 -//------------------------------------------ - OP_UND, //010 0001 0 0000 - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, -//------------------------------------------ - OP_STRB_M_IMM_OFF_POSTIND, //010 0010 0 0000 - OP_STRB_M_IMM_OFF_POSTIND, //010 0010 0 0001 - OP_STRB_M_IMM_OFF_POSTIND, //010 0010 0 0010 - OP_STRB_M_IMM_OFF_POSTIND, //010 0010 0 0011 - OP_STRB_M_IMM_OFF_POSTIND, //010 0010 0 0100 - OP_STRB_M_IMM_OFF_POSTIND, //010 0010 0 0101 - OP_STRB_M_IMM_OFF_POSTIND, //010 0010 0 0110 - OP_STRB_M_IMM_OFF_POSTIND, //010 0010 0 0111 - OP_STRB_M_IMM_OFF_POSTIND, //010 0010 0 1000 - OP_STRB_M_IMM_OFF_POSTIND, //010 0010 0 1001 - OP_STRB_M_IMM_OFF_POSTIND, //010 0010 0 1010 - OP_STRB_M_IMM_OFF_POSTIND, //010 0010 0 1011 - OP_STRB_M_IMM_OFF_POSTIND, //010 0010 0 1100 - OP_STRB_M_IMM_OFF_POSTIND, //010 0010 0 1101 - OP_STRB_M_IMM_OFF_POSTIND, //010 0010 0 1110 - OP_STRB_M_IMM_OFF_POSTIND, //010 0010 0 1111 - - OP_LDRB_M_IMM_OFF_POSTIND, //010 0010 1 0000 - OP_LDRB_M_IMM_OFF_POSTIND, //010 0010 1 0001 - OP_LDRB_M_IMM_OFF_POSTIND, //010 0010 1 0010 - OP_LDRB_M_IMM_OFF_POSTIND, //010 0010 1 0011 - OP_LDRB_M_IMM_OFF_POSTIND, //010 0010 1 0100 - OP_LDRB_M_IMM_OFF_POSTIND, //010 0010 1 0101 - OP_LDRB_M_IMM_OFF_POSTIND, //010 0010 1 0110 - OP_LDRB_M_IMM_OFF_POSTIND, //010 0010 1 0111 - OP_LDRB_M_IMM_OFF_POSTIND, //010 0010 1 1000 - OP_LDRB_M_IMM_OFF_POSTIND, //010 0010 1 1001 - OP_LDRB_M_IMM_OFF_POSTIND, //010 0010 1 1010 - OP_LDRB_M_IMM_OFF_POSTIND, //010 0010 1 1011 - OP_LDRB_M_IMM_OFF_POSTIND, //010 0010 1 1100 - OP_LDRB_M_IMM_OFF_POSTIND, //010 0010 1 1101 - OP_LDRB_M_IMM_OFF_POSTIND, //010 0010 1 1110 - OP_LDRB_M_IMM_OFF_POSTIND, //010 0010 1 1111 -//------------------------------------------ - OP_STRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_STRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_STRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_STRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_STRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_STRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_STRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_STRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_STRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_STRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_STRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_STRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_STRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_STRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_STRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_STRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - - OP_LDRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_LDRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_LDRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_LDRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_LDRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_LDRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_LDRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_LDRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_LDRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_LDRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_LDRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_LDRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_LDRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_LDRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_LDRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 - OP_LDRBT_M_IMM_OFF_POSTIND, //010 0011 0 0000 -//------------------------------------------ - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - - OP_LDR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND, //010 0100 0 0000 -//------------------------------------------ - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STR_P_IMM_OFF_POSTIND, //010 0100 0 0000 - - OP_LDR_P_IMM_OFF_POSTIND2, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND2, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND2, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND2, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND2, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND2, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND2, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND2, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND2, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND2, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND2, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND2, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND2, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND2, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND2, //010 0100 0 0000 - OP_LDR_P_IMM_OFF_POSTIND2, //010 0100 0 0000 -//------------------------------------------ - OP_STRB_P_IMM_OFF_POSTIND, //010 0110 0 0000 - OP_STRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - - OP_LDRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRB_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRB_P_IMM_OFF_POSTIND, //010 0110 1 1111 -//------------------------------------------ - OP_STRBT_P_IMM_OFF_POSTIND, //010 0111 0 0000 - OP_STRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_STRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - - OP_LDRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRBT_P_IMM_OFF_POSTIND, //010 0100 0 0000 - OP_LDRBT_P_IMM_OFF_POSTIND, //010 0111 1 1111 -//------------------------------------------ - OP_STR_M_IMM_OFF, //010 1000 0 0000 - OP_STR_M_IMM_OFF, - OP_STR_M_IMM_OFF, - OP_STR_M_IMM_OFF, - OP_STR_M_IMM_OFF, - OP_STR_M_IMM_OFF, - OP_STR_M_IMM_OFF, - OP_STR_M_IMM_OFF, - OP_STR_M_IMM_OFF, - OP_STR_M_IMM_OFF, - OP_STR_M_IMM_OFF, - OP_STR_M_IMM_OFF, - OP_STR_M_IMM_OFF, - OP_STR_M_IMM_OFF, - OP_STR_M_IMM_OFF, - OP_STR_M_IMM_OFF, - - OP_LDR_M_IMM_OFF, - OP_LDR_M_IMM_OFF, - OP_LDR_M_IMM_OFF, - OP_LDR_M_IMM_OFF, - OP_LDR_M_IMM_OFF, - OP_LDR_M_IMM_OFF, - OP_LDR_M_IMM_OFF, - OP_LDR_M_IMM_OFF, - OP_LDR_M_IMM_OFF, - OP_LDR_M_IMM_OFF, - OP_LDR_M_IMM_OFF, - OP_LDR_M_IMM_OFF, - OP_LDR_M_IMM_OFF, - OP_LDR_M_IMM_OFF, - OP_LDR_M_IMM_OFF, - OP_LDR_M_IMM_OFF, //010 1000 1 1111 -//------------------------------------------ - OP_STR_M_IMM_OFF_PREIND, //010 1001 0 0000 - OP_STR_M_IMM_OFF_PREIND, - OP_STR_M_IMM_OFF_PREIND, - OP_STR_M_IMM_OFF_PREIND, - OP_STR_M_IMM_OFF_PREIND, - OP_STR_M_IMM_OFF_PREIND, - OP_STR_M_IMM_OFF_PREIND, - OP_STR_M_IMM_OFF_PREIND, - OP_STR_M_IMM_OFF_PREIND, - OP_STR_M_IMM_OFF_PREIND, - OP_STR_M_IMM_OFF_PREIND, - OP_STR_M_IMM_OFF_PREIND, - OP_STR_M_IMM_OFF_PREIND, - OP_STR_M_IMM_OFF_PREIND, - OP_STR_M_IMM_OFF_PREIND, - OP_STR_M_IMM_OFF_PREIND, - - OP_LDR_M_IMM_OFF_PREIND, - OP_LDR_M_IMM_OFF_PREIND, - OP_LDR_M_IMM_OFF_PREIND, - OP_LDR_M_IMM_OFF_PREIND, - OP_LDR_M_IMM_OFF_PREIND, - OP_LDR_M_IMM_OFF_PREIND, - OP_LDR_M_IMM_OFF_PREIND, - OP_LDR_M_IMM_OFF_PREIND, - OP_LDR_M_IMM_OFF_PREIND, - OP_LDR_M_IMM_OFF_PREIND, - OP_LDR_M_IMM_OFF_PREIND, - OP_LDR_M_IMM_OFF_PREIND, - OP_LDR_M_IMM_OFF_PREIND, - OP_LDR_M_IMM_OFF_PREIND, - OP_LDR_M_IMM_OFF_PREIND, - OP_LDR_M_IMM_OFF_PREIND, //010 1001 1 1111 -//------------------------------------------ - OP_STRB_M_IMM_OFF, //010 1010 0 0000 - OP_STRB_M_IMM_OFF, - OP_STRB_M_IMM_OFF, - OP_STRB_M_IMM_OFF, - OP_STRB_M_IMM_OFF, - OP_STRB_M_IMM_OFF, - OP_STRB_M_IMM_OFF, - OP_STRB_M_IMM_OFF, - OP_STRB_M_IMM_OFF, - OP_STRB_M_IMM_OFF, - OP_STRB_M_IMM_OFF, - OP_STRB_M_IMM_OFF, - OP_STRB_M_IMM_OFF, - OP_STRB_M_IMM_OFF, - OP_STRB_M_IMM_OFF, - OP_STRB_M_IMM_OFF, - - OP_LDRB_M_IMM_OFF, - OP_LDRB_M_IMM_OFF, - OP_LDRB_M_IMM_OFF, - OP_LDRB_M_IMM_OFF, - OP_LDRB_M_IMM_OFF, - OP_LDRB_M_IMM_OFF, - OP_LDRB_M_IMM_OFF, - OP_LDRB_M_IMM_OFF, - OP_LDRB_M_IMM_OFF, - OP_LDRB_M_IMM_OFF, - OP_LDRB_M_IMM_OFF, - OP_LDRB_M_IMM_OFF, - OP_LDRB_M_IMM_OFF, - OP_LDRB_M_IMM_OFF, - OP_LDRB_M_IMM_OFF, - OP_LDRB_M_IMM_OFF, //010 1010 1 1111 -//------------------------------------------ - OP_STRB_M_IMM_OFF_PREIND, //010 1011 0 0000 - OP_STRB_M_IMM_OFF_PREIND, - OP_STRB_M_IMM_OFF_PREIND, - OP_STRB_M_IMM_OFF_PREIND, - OP_STRB_M_IMM_OFF_PREIND, - OP_STRB_M_IMM_OFF_PREIND, - OP_STRB_M_IMM_OFF_PREIND, - OP_STRB_M_IMM_OFF_PREIND, - OP_STRB_M_IMM_OFF_PREIND, - OP_STRB_M_IMM_OFF_PREIND, - OP_STRB_M_IMM_OFF_PREIND, - OP_STRB_M_IMM_OFF_PREIND, - OP_STRB_M_IMM_OFF_PREIND, - OP_STRB_M_IMM_OFF_PREIND, - OP_STRB_M_IMM_OFF_PREIND, - OP_STRB_M_IMM_OFF_PREIND, - - OP_LDRB_M_IMM_OFF_PREIND, - OP_LDRB_M_IMM_OFF_PREIND, - OP_LDRB_M_IMM_OFF_PREIND, - OP_LDRB_M_IMM_OFF_PREIND, - OP_LDRB_M_IMM_OFF_PREIND, - OP_LDRB_M_IMM_OFF_PREIND, - OP_LDRB_M_IMM_OFF_PREIND, - OP_LDRB_M_IMM_OFF_PREIND, - OP_LDRB_M_IMM_OFF_PREIND, - OP_LDRB_M_IMM_OFF_PREIND, - OP_LDRB_M_IMM_OFF_PREIND, - OP_LDRB_M_IMM_OFF_PREIND, - OP_LDRB_M_IMM_OFF_PREIND, - OP_LDRB_M_IMM_OFF_PREIND, - OP_LDRB_M_IMM_OFF_PREIND, - OP_LDRB_M_IMM_OFF_PREIND, //010 1011 1 1111 -//------------------------------------------ - OP_STR_P_IMM_OFF, //010 1100 0 0000 - OP_STR_P_IMM_OFF, - OP_STR_P_IMM_OFF, - OP_STR_P_IMM_OFF, - OP_STR_P_IMM_OFF, - OP_STR_P_IMM_OFF, - OP_STR_P_IMM_OFF, - OP_STR_P_IMM_OFF, - OP_STR_P_IMM_OFF, - OP_STR_P_IMM_OFF, - OP_STR_P_IMM_OFF, - OP_STR_P_IMM_OFF, - OP_STR_P_IMM_OFF, - OP_STR_P_IMM_OFF, - OP_STR_P_IMM_OFF, - OP_STR_P_IMM_OFF, - - OP_LDR_P_IMM_OFF, - OP_LDR_P_IMM_OFF, - OP_LDR_P_IMM_OFF, - OP_LDR_P_IMM_OFF, - OP_LDR_P_IMM_OFF, - OP_LDR_P_IMM_OFF, - OP_LDR_P_IMM_OFF, - OP_LDR_P_IMM_OFF, - OP_LDR_P_IMM_OFF, - OP_LDR_P_IMM_OFF, - OP_LDR_P_IMM_OFF, - OP_LDR_P_IMM_OFF, - OP_LDR_P_IMM_OFF, - OP_LDR_P_IMM_OFF, - OP_LDR_P_IMM_OFF, - OP_LDR_P_IMM_OFF, //010 1100 1 1111 -//------------------------------------------ - OP_STR_P_IMM_OFF_PREIND, //010 1101 0 0000 - OP_STR_P_IMM_OFF_PREIND, - OP_STR_P_IMM_OFF_PREIND, - OP_STR_P_IMM_OFF_PREIND, - OP_STR_P_IMM_OFF_PREIND, - OP_STR_P_IMM_OFF_PREIND, - OP_STR_P_IMM_OFF_PREIND, - OP_STR_P_IMM_OFF_PREIND, - OP_STR_P_IMM_OFF_PREIND, - OP_STR_P_IMM_OFF_PREIND, - OP_STR_P_IMM_OFF_PREIND, - OP_STR_P_IMM_OFF_PREIND, - OP_STR_P_IMM_OFF_PREIND, - OP_STR_P_IMM_OFF_PREIND, - OP_STR_P_IMM_OFF_PREIND, - OP_STR_P_IMM_OFF_PREIND, - - OP_LDR_P_IMM_OFF_PREIND, - OP_LDR_P_IMM_OFF_PREIND, - OP_LDR_P_IMM_OFF_PREIND, - OP_LDR_P_IMM_OFF_PREIND, - OP_LDR_P_IMM_OFF_PREIND, - OP_LDR_P_IMM_OFF_PREIND, - OP_LDR_P_IMM_OFF_PREIND, - OP_LDR_P_IMM_OFF_PREIND, - OP_LDR_P_IMM_OFF_PREIND, - OP_LDR_P_IMM_OFF_PREIND, - OP_LDR_P_IMM_OFF_PREIND, - OP_LDR_P_IMM_OFF_PREIND, - OP_LDR_P_IMM_OFF_PREIND, - OP_LDR_P_IMM_OFF_PREIND, - OP_LDR_P_IMM_OFF_PREIND, - OP_LDR_P_IMM_OFF_PREIND, //010 1101 1 1111 -//------------------------------------------ - OP_STRB_P_IMM_OFF, //010 1110 0 0000 - OP_STRB_P_IMM_OFF, - OP_STRB_P_IMM_OFF, - OP_STRB_P_IMM_OFF, - OP_STRB_P_IMM_OFF, - OP_STRB_P_IMM_OFF, - OP_STRB_P_IMM_OFF, - OP_STRB_P_IMM_OFF, - OP_STRB_P_IMM_OFF, - OP_STRB_P_IMM_OFF, - OP_STRB_P_IMM_OFF, - OP_STRB_P_IMM_OFF, - OP_STRB_P_IMM_OFF, - OP_STRB_P_IMM_OFF, - OP_STRB_P_IMM_OFF, - OP_STRB_P_IMM_OFF, - - OP_LDRB_P_IMM_OFF, - OP_LDRB_P_IMM_OFF, - OP_LDRB_P_IMM_OFF, - OP_LDRB_P_IMM_OFF, - OP_LDRB_P_IMM_OFF, - OP_LDRB_P_IMM_OFF, - OP_LDRB_P_IMM_OFF, - OP_LDRB_P_IMM_OFF, - OP_LDRB_P_IMM_OFF, - OP_LDRB_P_IMM_OFF, - OP_LDRB_P_IMM_OFF, - OP_LDRB_P_IMM_OFF, - OP_LDRB_P_IMM_OFF, - OP_LDRB_P_IMM_OFF, - OP_LDRB_P_IMM_OFF, - OP_LDRB_P_IMM_OFF, //010 1110 1 1111 -//------------------------------------------ - OP_STRB_P_IMM_OFF_PREIND, //010 1111 0 0000 - OP_STRB_P_IMM_OFF_PREIND, - OP_STRB_P_IMM_OFF_PREIND, - OP_STRB_P_IMM_OFF_PREIND, - OP_STRB_P_IMM_OFF_PREIND, - OP_STRB_P_IMM_OFF_PREIND, - OP_STRB_P_IMM_OFF_PREIND, - OP_STRB_P_IMM_OFF_PREIND, - OP_STRB_P_IMM_OFF_PREIND, - OP_STRB_P_IMM_OFF_PREIND, - OP_STRB_P_IMM_OFF_PREIND, - OP_STRB_P_IMM_OFF_PREIND, - OP_STRB_P_IMM_OFF_PREIND, - OP_STRB_P_IMM_OFF_PREIND, - OP_STRB_P_IMM_OFF_PREIND, - OP_STRB_P_IMM_OFF_PREIND, - - OP_LDRB_P_IMM_OFF_PREIND, - OP_LDRB_P_IMM_OFF_PREIND, - OP_LDRB_P_IMM_OFF_PREIND, - OP_LDRB_P_IMM_OFF_PREIND, - OP_LDRB_P_IMM_OFF_PREIND, - OP_LDRB_P_IMM_OFF_PREIND, - OP_LDRB_P_IMM_OFF_PREIND, - OP_LDRB_P_IMM_OFF_PREIND, - OP_LDRB_P_IMM_OFF_PREIND, - OP_LDRB_P_IMM_OFF_PREIND, - OP_LDRB_P_IMM_OFF_PREIND, - OP_LDRB_P_IMM_OFF_PREIND, - OP_LDRB_P_IMM_OFF_PREIND, - OP_LDRB_P_IMM_OFF_PREIND, - OP_LDRB_P_IMM_OFF_PREIND, - OP_LDRB_P_IMM_OFF_PREIND, //010 1111 1 1111 -//------------------------------------------ - OP_STR_M_LSL_IMM_OFF_POSTIND, //011 0000 0 0000 - OP_UND, - OP_STR_M_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_STR_M_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_STR_M_ROR_IMM_OFF_POSTIND, - OP_UND, - OP_STR_M_LSL_IMM_OFF_POSTIND, - OP_UND, - OP_STR_M_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_STR_M_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_STR_M_ROR_IMM_OFF_POSTIND, - OP_UND, - - OP_LDR_M_LSL_IMM_OFF_POSTIND, - OP_UND, - OP_LDR_M_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_LDR_M_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_LDR_M_ROR_IMM_OFF_POSTIND, - OP_UND, - OP_LDR_M_LSL_IMM_OFF_POSTIND, - OP_UND, - OP_LDR_M_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_LDR_M_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_LDR_M_ROR_IMM_OFF_POSTIND, - OP_UND, //011 0000 1 1111 -//------------------------------------------ - OP_UND, //011 0001 0 0000 - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, //011 0001 1 1111 -//------------------------------------------ - OP_STRB_M_LSL_IMM_OFF_POSTIND, //011 0010 0 0000 - OP_UND, - OP_STRB_M_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_STRB_M_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_STRB_M_ROR_IMM_OFF_POSTIND, - OP_UND, - OP_STRB_M_LSL_IMM_OFF_POSTIND, - OP_UND, - OP_STRB_M_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_STRB_M_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_STRB_M_ROR_IMM_OFF_POSTIND, - OP_UND, - - OP_LDRB_M_LSL_IMM_OFF_POSTIND, - OP_UND, - OP_LDRB_M_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRB_M_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRB_M_ROR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRB_M_LSL_IMM_OFF_POSTIND, - OP_UND, - OP_LDRB_M_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRB_M_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRB_M_ROR_IMM_OFF_POSTIND, - OP_UND, //011 0010 1 1111 -//------------------------------------------ - OP_STRBT_M_LSL_IMM_OFF_POSTIND, //011 0011 0 0000 - OP_UND, - OP_STRBT_M_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_STRBT_M_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_STRBT_M_ROR_IMM_OFF_POSTIND, - OP_UND, - OP_STRBT_M_LSL_IMM_OFF_POSTIND, - OP_UND, - OP_STRBT_M_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_STRBT_M_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_STRBT_M_ROR_IMM_OFF_POSTIND, - OP_UND, - - OP_LDRBT_M_LSL_IMM_OFF_POSTIND, - OP_UND, - OP_LDRBT_M_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRBT_M_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRBT_M_ROR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRBT_M_LSL_IMM_OFF_POSTIND, - OP_UND, - OP_LDRBT_M_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRBT_M_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRBT_M_ROR_IMM_OFF_POSTIND, - OP_UND, //011 0011 1 1111 -//------------------------------------------ - OP_STR_P_LSL_IMM_OFF_POSTIND, //011 0100 0 0000 - OP_UND, - OP_STR_P_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_STR_P_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_STR_P_ROR_IMM_OFF_POSTIND, - OP_UND, - OP_STR_P_LSL_IMM_OFF_POSTIND, - OP_UND, - OP_STR_P_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_STR_P_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_STR_P_ROR_IMM_OFF_POSTIND, - OP_UND, - - OP_LDR_P_LSL_IMM_OFF_POSTIND, - OP_UND, - OP_LDR_P_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_LDR_P_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_LDR_P_ROR_IMM_OFF_POSTIND, - OP_UND, - OP_LDR_P_LSL_IMM_OFF_POSTIND, - OP_UND, - OP_LDR_P_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_LDR_P_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_LDR_P_ROR_IMM_OFF_POSTIND, - OP_UND, //011 0100 1 1111 -//------------------------------------------ - OP_UND, //011 0101 0 0000 - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, - OP_UND, //011 0101 1 1111 -//------------------------------------------ - OP_STRB_P_LSL_IMM_OFF_POSTIND, //011 0110 0 0000 - OP_UND, - OP_STRB_P_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_STRB_P_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_STRB_P_ROR_IMM_OFF_POSTIND, - OP_UND, - OP_STRB_P_LSL_IMM_OFF_POSTIND, - OP_UND, - OP_STRB_P_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_STRB_P_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_STRB_P_ROR_IMM_OFF_POSTIND, - OP_UND, - - OP_LDRB_P_LSL_IMM_OFF_POSTIND, - OP_UND, - OP_LDRB_P_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRB_P_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRB_P_ROR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRB_P_LSL_IMM_OFF_POSTIND, - OP_UND, - OP_LDRB_P_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRB_P_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRB_P_ROR_IMM_OFF_POSTIND, - OP_UND, -//------------------------------------------ - OP_STRBT_P_LSL_IMM_OFF_POSTIND, //011 0111 0 0000 - OP_UND, - OP_STRBT_P_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_STRBT_P_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_STRBT_P_ROR_IMM_OFF_POSTIND, - OP_UND, - OP_STRBT_P_LSL_IMM_OFF_POSTIND, - OP_UND, - OP_STRBT_P_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_STRBT_P_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_STRBT_P_ROR_IMM_OFF_POSTIND, - OP_UND, - - OP_LDRBT_P_LSL_IMM_OFF_POSTIND, - OP_UND, - OP_LDRBT_P_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRBT_P_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRBT_P_ROR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRBT_P_LSL_IMM_OFF_POSTIND, - OP_UND, - OP_LDRBT_P_LSR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRBT_P_ASR_IMM_OFF_POSTIND, - OP_UND, - OP_LDRBT_P_ROR_IMM_OFF_POSTIND, - OP_UND, -//------------------------------------------ - OP_STR_M_LSL_IMM_OFF, //011 1000 0 0000 - OP_UND, - OP_STR_M_LSR_IMM_OFF, - OP_UND, - OP_STR_M_ASR_IMM_OFF, - OP_UND, - OP_STR_M_ROR_IMM_OFF, - OP_UND, - OP_STR_M_LSL_IMM_OFF, - OP_UND, - OP_STR_M_LSR_IMM_OFF, - OP_UND, - OP_STR_M_ASR_IMM_OFF, - OP_UND, - OP_STR_M_ROR_IMM_OFF, - OP_UND, - - OP_LDR_M_LSL_IMM_OFF, - OP_UND, - OP_LDR_M_LSR_IMM_OFF, - OP_UND, - OP_LDR_M_ASR_IMM_OFF, - OP_UND, - OP_LDR_M_ROR_IMM_OFF, - OP_UND, - OP_LDR_M_LSL_IMM_OFF, - OP_UND, - OP_LDR_M_LSR_IMM_OFF, - OP_UND, - OP_LDR_M_ASR_IMM_OFF, - OP_UND, - OP_LDR_M_ROR_IMM_OFF, - OP_UND, -//------------------------------------------ - OP_STR_M_LSL_IMM_OFF_PREIND, //011 1001 0 0000 - OP_UND, - OP_STR_M_LSR_IMM_OFF_PREIND, - OP_UND, - OP_STR_M_ASR_IMM_OFF_PREIND, - OP_UND, - OP_STR_M_ROR_IMM_OFF_PREIND, - OP_UND, - OP_STR_M_LSL_IMM_OFF_PREIND, - OP_UND, - OP_STR_M_LSR_IMM_OFF_PREIND, - OP_UND, - OP_STR_M_ASR_IMM_OFF_PREIND, - OP_UND, - OP_STR_M_ROR_IMM_OFF_PREIND, - OP_UND, - - OP_LDR_M_LSL_IMM_OFF_PREIND, - OP_UND, - OP_LDR_M_LSR_IMM_OFF_PREIND, - OP_UND, - OP_LDR_M_ASR_IMM_OFF_PREIND, - OP_UND, - OP_LDR_M_ROR_IMM_OFF_PREIND, - OP_UND, - OP_LDR_M_LSL_IMM_OFF_PREIND, - OP_UND, - OP_LDR_M_LSR_IMM_OFF_PREIND, - OP_UND, - OP_LDR_M_ASR_IMM_OFF_PREIND, - OP_UND, - OP_LDR_M_ROR_IMM_OFF_PREIND, - OP_UND, -//------------------------------------------ - OP_STRB_M_LSL_IMM_OFF, //011 1010 0 0000 - OP_UND, - OP_STRB_M_LSR_IMM_OFF, - OP_UND, - OP_STRB_M_ASR_IMM_OFF, - OP_UND, - OP_STRB_M_ROR_IMM_OFF, - OP_UND, - OP_STRB_M_LSL_IMM_OFF, - OP_UND, - OP_STRB_M_LSR_IMM_OFF, - OP_UND, - OP_STRB_M_ASR_IMM_OFF, - OP_UND, - OP_STRB_M_ROR_IMM_OFF, - OP_UND, - - OP_LDRB_M_LSL_IMM_OFF, - OP_UND, - OP_LDRB_M_LSR_IMM_OFF, - OP_UND, - OP_LDRB_M_ASR_IMM_OFF, - OP_UND, - OP_LDRB_M_ROR_IMM_OFF, - OP_UND, - OP_LDRB_M_LSL_IMM_OFF, - OP_UND, - OP_LDRB_M_LSR_IMM_OFF, - OP_UND, - OP_LDRB_M_ASR_IMM_OFF, - OP_UND, - OP_LDRB_M_ROR_IMM_OFF, - OP_UND, -//------------------------------------------ - OP_STRB_M_LSL_IMM_OFF_PREIND, //011 1011 0 0000 - OP_UND, - OP_STRB_M_LSR_IMM_OFF_PREIND, - OP_UND, - OP_STRB_M_ASR_IMM_OFF_PREIND, - OP_UND, - OP_STRB_M_ROR_IMM_OFF_PREIND, - OP_UND, - OP_STRB_M_LSL_IMM_OFF_PREIND, - OP_UND, - OP_STRB_M_LSR_IMM_OFF_PREIND, - OP_UND, - OP_STRB_M_ASR_IMM_OFF_PREIND, - OP_UND, - OP_STRB_M_ROR_IMM_OFF_PREIND, - OP_UND, - - OP_LDRB_M_LSL_IMM_OFF_PREIND, - OP_UND, - OP_LDRB_M_LSR_IMM_OFF_PREIND, - OP_UND, - OP_LDRB_M_ASR_IMM_OFF_PREIND, - OP_UND, - OP_LDRB_M_ROR_IMM_OFF_PREIND, - OP_UND, - OP_LDRB_M_LSL_IMM_OFF_PREIND, - OP_UND, - OP_LDRB_M_LSR_IMM_OFF_PREIND, - OP_UND, - OP_LDRB_M_ASR_IMM_OFF_PREIND, - OP_UND, - OP_LDRB_M_ROR_IMM_OFF_PREIND, - OP_UND, -//------------------------------------------ - OP_STR_P_LSL_IMM_OFF, //011 1100 0 0000 - OP_UND, - OP_STR_P_LSR_IMM_OFF, - OP_UND, - OP_STR_P_ASR_IMM_OFF, - OP_UND, - OP_STR_P_ROR_IMM_OFF, - OP_UND, - OP_STR_P_LSL_IMM_OFF, - OP_UND, - OP_STR_P_LSR_IMM_OFF, - OP_UND, - OP_STR_P_ASR_IMM_OFF, - OP_UND, - OP_STR_P_ROR_IMM_OFF, - OP_UND, - - OP_LDR_P_LSL_IMM_OFF, - OP_UND, - OP_LDR_P_LSR_IMM_OFF, - OP_UND, - OP_LDR_P_ASR_IMM_OFF, - OP_UND, - OP_LDR_P_ROR_IMM_OFF, - OP_UND, - OP_LDR_P_LSL_IMM_OFF, - OP_UND, - OP_LDR_P_LSR_IMM_OFF, - OP_UND, - OP_LDR_P_ASR_IMM_OFF, - OP_UND, - OP_LDR_P_ROR_IMM_OFF, - OP_UND, -//------------------------------------------ - OP_STR_P_LSL_IMM_OFF_PREIND, //011 1101 0 0000 - OP_UND, - OP_STR_P_LSR_IMM_OFF_PREIND, - OP_UND, - OP_STR_P_ASR_IMM_OFF_PREIND, - OP_UND, - OP_STR_P_ROR_IMM_OFF_PREIND, - OP_UND, - OP_STR_P_LSL_IMM_OFF_PREIND, - OP_UND, - OP_STR_P_LSR_IMM_OFF_PREIND, - OP_UND, - OP_STR_P_ASR_IMM_OFF_PREIND, - OP_UND, - OP_STR_P_ROR_IMM_OFF_PREIND, - OP_UND, - - OP_LDR_P_LSL_IMM_OFF_PREIND, - OP_UND, - OP_LDR_P_LSR_IMM_OFF_PREIND, - OP_UND, - OP_LDR_P_ASR_IMM_OFF_PREIND, - OP_UND, - OP_LDR_P_ROR_IMM_OFF_PREIND, - OP_UND, - OP_LDR_P_LSL_IMM_OFF_PREIND, - OP_UND, - OP_LDR_P_LSR_IMM_OFF_PREIND, - OP_UND, - OP_LDR_P_ASR_IMM_OFF_PREIND, - OP_UND, - OP_LDR_P_ROR_IMM_OFF_PREIND, - OP_UND, -//------------------------------------------ - OP_STRB_P_LSL_IMM_OFF, //011 1110 0 0000 - OP_UND, - OP_STRB_P_LSR_IMM_OFF, - OP_UND, - OP_STRB_P_ASR_IMM_OFF, - OP_UND, - OP_STRB_P_ROR_IMM_OFF, - OP_UND, - OP_STRB_P_LSL_IMM_OFF, - OP_UND, - OP_STRB_P_LSR_IMM_OFF, - OP_UND, - OP_STRB_P_ASR_IMM_OFF, - OP_UND, - OP_STRB_P_ROR_IMM_OFF, - OP_UND, - - OP_LDRB_P_LSL_IMM_OFF, - OP_UND, - OP_LDRB_P_LSR_IMM_OFF, - OP_UND, - OP_LDRB_P_ASR_IMM_OFF, - OP_UND, - OP_LDRB_P_ROR_IMM_OFF, - OP_UND, - OP_LDRB_P_LSL_IMM_OFF, - OP_UND, - OP_LDRB_P_LSR_IMM_OFF, - OP_UND, - OP_LDRB_P_ASR_IMM_OFF, - OP_UND, - OP_LDRB_P_ROR_IMM_OFF, - OP_UND, -//------------------------------------------ - OP_STRB_P_LSL_IMM_OFF_PREIND, //011 1111 0 0000 - OP_UND, - OP_STRB_P_LSR_IMM_OFF_PREIND, - OP_UND, - OP_STRB_P_ASR_IMM_OFF_PREIND, - OP_UND, - OP_STRB_P_ROR_IMM_OFF_PREIND, - OP_UND, - OP_STRB_P_LSL_IMM_OFF_PREIND, - OP_UND, - OP_STRB_P_LSR_IMM_OFF_PREIND, - OP_UND, - OP_STRB_P_ASR_IMM_OFF_PREIND, - OP_UND, - OP_STRB_P_ROR_IMM_OFF_PREIND, - OP_UND, - - OP_LDRB_P_LSL_IMM_OFF_PREIND, - OP_UND, - OP_LDRB_P_LSR_IMM_OFF_PREIND, - OP_UND, - OP_LDRB_P_ASR_IMM_OFF_PREIND, - OP_UND, - OP_LDRB_P_ROR_IMM_OFF_PREIND, - OP_UND, - OP_LDRB_P_LSL_IMM_OFF_PREIND, - OP_UND, - OP_LDRB_P_LSR_IMM_OFF_PREIND, - OP_UND, - OP_LDRB_P_ASR_IMM_OFF_PREIND, - OP_UND, - OP_LDRB_P_ROR_IMM_OFF_PREIND, - OP_UND, //011 1111 1 1111 -//------------------------------------------ - OP_STMDA, //100 0000 0 0000 - OP_STMDA, - OP_STMDA, - OP_STMDA, - OP_STMDA, - OP_STMDA, - OP_STMDA, - OP_STMDA, - OP_STMDA, - OP_STMDA, - OP_STMDA, - OP_STMDA, - OP_STMDA, - OP_STMDA, - OP_STMDA, - OP_STMDA, - - OP_LDMDA, - OP_LDMDA, - OP_LDMDA, - OP_LDMDA, - OP_LDMDA, - OP_LDMDA, - OP_LDMDA, - OP_LDMDA, - OP_LDMDA, - OP_LDMDA, - OP_LDMDA, - OP_LDMDA, - OP_LDMDA, - OP_LDMDA, - OP_LDMDA, - OP_LDMDA, -//------------------------------------------ - OP_STMDA_W, //100 0001 0 0000 - OP_STMDA_W, - OP_STMDA_W, - OP_STMDA_W, - OP_STMDA_W, - OP_STMDA_W, - OP_STMDA_W, - OP_STMDA_W, - OP_STMDA_W, - OP_STMDA_W, - OP_STMDA_W, - OP_STMDA_W, - OP_STMDA_W, - OP_STMDA_W, - OP_STMDA_W, - OP_STMDA_W, - - OP_LDMDA_W, - OP_LDMDA_W, - OP_LDMDA_W, - OP_LDMDA_W, - OP_LDMDA_W, - OP_LDMDA_W, - OP_LDMDA_W, - OP_LDMDA_W, - OP_LDMDA_W, - OP_LDMDA_W, - OP_LDMDA_W, - OP_LDMDA_W, - OP_LDMDA_W, - OP_LDMDA_W, - OP_LDMDA_W, - OP_LDMDA_W, -//------------------------------------------ - OP_STMDA2, //100 0010 0 0000 - OP_STMDA2, - OP_STMDA2, - OP_STMDA2, - OP_STMDA2, - OP_STMDA2, - OP_STMDA2, - OP_STMDA2, - OP_STMDA2, - OP_STMDA2, - OP_STMDA2, - OP_STMDA2, - OP_STMDA2, - OP_STMDA2, - OP_STMDA2, - OP_STMDA2, - - OP_LDMDA2, - OP_LDMDA2, - OP_LDMDA2, - OP_LDMDA2, - OP_LDMDA2, - OP_LDMDA2, - OP_LDMDA2, - OP_LDMDA2, - OP_LDMDA2, - OP_LDMDA2, - OP_LDMDA2, - OP_LDMDA2, - OP_LDMDA2, - OP_LDMDA2, - OP_LDMDA2, - OP_LDMDA2, -//------------------------------------------ - OP_STMDA2_W, //100 0011 0 0000 - OP_STMDA2_W, - OP_STMDA2_W, - OP_STMDA2_W, - OP_STMDA2_W, - OP_STMDA2_W, - OP_STMDA2_W, - OP_STMDA2_W, - OP_STMDA2_W, - OP_STMDA2_W, - OP_STMDA2_W, - OP_STMDA2_W, - OP_STMDA2_W, - OP_STMDA2_W, - OP_STMDA2_W, - OP_STMDA2_W, - - OP_LDMDA2_W, - OP_LDMDA2_W, - OP_LDMDA2_W, - OP_LDMDA2_W, - OP_LDMDA2_W, - OP_LDMDA2_W, - OP_LDMDA2_W, - OP_LDMDA2_W, - OP_LDMDA2_W, - OP_LDMDA2_W, - OP_LDMDA2_W, - OP_LDMDA2_W, - OP_LDMDA2_W, - OP_LDMDA2_W, - OP_LDMDA2_W, - OP_LDMDA2_W, -//------------------------------------------ - OP_STMIA, //100 0100 0 0000 - OP_STMIA, - OP_STMIA, - OP_STMIA, - OP_STMIA, - OP_STMIA, - OP_STMIA, - OP_STMIA, - OP_STMIA, - OP_STMIA, - OP_STMIA, - OP_STMIA, - OP_STMIA, - OP_STMIA, - OP_STMIA, - OP_STMIA, - - OP_LDMIA, - OP_LDMIA, - OP_LDMIA, - OP_LDMIA, - OP_LDMIA, - OP_LDMIA, - OP_LDMIA, - OP_LDMIA, - OP_LDMIA, - OP_LDMIA, - OP_LDMIA, - OP_LDMIA, - OP_LDMIA, - OP_LDMIA, - OP_LDMIA, - OP_LDMIA, -//------------------------------------------ - OP_STMIA_W, //100 0101 0 0000 - OP_STMIA_W, - OP_STMIA_W, - OP_STMIA_W, - OP_STMIA_W, - OP_STMIA_W, - OP_STMIA_W, - OP_STMIA_W, - OP_STMIA_W, - OP_STMIA_W, - OP_STMIA_W, - OP_STMIA_W, - OP_STMIA_W, - OP_STMIA_W, - OP_STMIA_W, - OP_STMIA_W, - - OP_LDMIA_W, - OP_LDMIA_W, - OP_LDMIA_W, - OP_LDMIA_W, - OP_LDMIA_W, - OP_LDMIA_W, - OP_LDMIA_W, - OP_LDMIA_W, - OP_LDMIA_W, - OP_LDMIA_W, - OP_LDMIA_W, - OP_LDMIA_W, - OP_LDMIA_W, - OP_LDMIA_W, - OP_LDMIA_W, - OP_LDMIA_W, -//------------------------------------------ - OP_STMIA2, //100 0110 0 0000 - OP_STMIA2, - OP_STMIA2, - OP_STMIA2, - OP_STMIA2, - OP_STMIA2, - OP_STMIA2, - OP_STMIA2, - OP_STMIA2, - OP_STMIA2, - OP_STMIA2, - OP_STMIA2, - OP_STMIA2, - OP_STMIA2, - OP_STMIA2, - OP_STMIA2, - - OP_LDMIA2, - OP_LDMIA2, - OP_LDMIA2, - OP_LDMIA2, - OP_LDMIA2, - OP_LDMIA2, - OP_LDMIA2, - OP_LDMIA2, - OP_LDMIA2, - OP_LDMIA2, - OP_LDMIA2, - OP_LDMIA2, - OP_LDMIA2, - OP_LDMIA2, - OP_LDMIA2, - OP_LDMIA2, -//------------------------------------------ - OP_STMIA2_W, //100 0111 0 0000 - OP_STMIA2_W, - OP_STMIA2_W, - OP_STMIA2_W, - OP_STMIA2_W, - OP_STMIA2_W, - OP_STMIA2_W, - OP_STMIA2_W, - OP_STMIA2_W, - OP_STMIA2_W, - OP_STMIA2_W, - OP_STMIA2_W, - OP_STMIA2_W, - OP_STMIA2_W, - OP_STMIA2_W, - OP_STMIA2_W, - - OP_LDMIA2_W, - OP_LDMIA2_W, - OP_LDMIA2_W, - OP_LDMIA2_W, - OP_LDMIA2_W, - OP_LDMIA2_W, - OP_LDMIA2_W, - OP_LDMIA2_W, - OP_LDMIA2_W, - OP_LDMIA2_W, - OP_LDMIA2_W, - OP_LDMIA2_W, - OP_LDMIA2_W, - OP_LDMIA2_W, - OP_LDMIA2_W, - OP_LDMIA2_W, -//------------------------------------------ - OP_STMDB, //100 1000 0 0000 - OP_STMDB, - OP_STMDB, - OP_STMDB, - OP_STMDB, - OP_STMDB, - OP_STMDB, - OP_STMDB, - OP_STMDB, - OP_STMDB, - OP_STMDB, - OP_STMDB, - OP_STMDB, - OP_STMDB, - OP_STMDB, - OP_STMDB, - - OP_LDMDB, - OP_LDMDB, - OP_LDMDB, - OP_LDMDB, - OP_LDMDB, - OP_LDMDB, - OP_LDMDB, - OP_LDMDB, - OP_LDMDB, - OP_LDMDB, - OP_LDMDB, - OP_LDMDB, - OP_LDMDB, - OP_LDMDB, - OP_LDMDB, - OP_LDMDB, -//------------------------------------------ - OP_STMDB_W, //100 1001 0 0000 - OP_STMDB_W, - OP_STMDB_W, - OP_STMDB_W, - OP_STMDB_W, - OP_STMDB_W, - OP_STMDB_W, - OP_STMDB_W, - OP_STMDB_W, - OP_STMDB_W, - OP_STMDB_W, - OP_STMDB_W, - OP_STMDB_W, - OP_STMDB_W, - OP_STMDB_W, - OP_STMDB_W, - - OP_LDMDB_W, - OP_LDMDB_W, - OP_LDMDB_W, - OP_LDMDB_W, - OP_LDMDB_W, - OP_LDMDB_W, - OP_LDMDB_W, - OP_LDMDB_W, - OP_LDMDB_W, - OP_LDMDB_W, - OP_LDMDB_W, - OP_LDMDB_W, - OP_LDMDB_W, - OP_LDMDB_W, - OP_LDMDB_W, - OP_LDMDB_W, -//------------------------------------------ - OP_STMDB2, //100 1010 0 0000 - OP_STMDB2, - OP_STMDB2, - OP_STMDB2, - OP_STMDB2, - OP_STMDB2, - OP_STMDB2, - OP_STMDB2, - OP_STMDB2, - OP_STMDB2, - OP_STMDB2, - OP_STMDB2, - OP_STMDB2, - OP_STMDB2, - OP_STMDB2, - OP_STMDB2, - - OP_LDMDB2, - OP_LDMDB2, - OP_LDMDB2, - OP_LDMDB2, - OP_LDMDB2, - OP_LDMDB2, - OP_LDMDB2, - OP_LDMDB2, - OP_LDMDB2, - OP_LDMDB2, - OP_LDMDB2, - OP_LDMDB2, - OP_LDMDB2, - OP_LDMDB2, - OP_LDMDB2, - OP_LDMDB2, -//------------------------------------------ - OP_STMDB2_W, //100 1011 0 0000 - OP_STMDB2_W, - OP_STMDB2_W, - OP_STMDB2_W, - OP_STMDB2_W, - OP_STMDB2_W, - OP_STMDB2_W, - OP_STMDB2_W, - OP_STMDB2_W, - OP_STMDB2_W, - OP_STMDB2_W, - OP_STMDB2_W, - OP_STMDB2_W, - OP_STMDB2_W, - OP_STMDB2_W, - OP_STMDB2_W, - - OP_LDMDB2_W, - OP_LDMDB2_W, - OP_LDMDB2_W, - OP_LDMDB2_W, - OP_LDMDB2_W, - OP_LDMDB2_W, - OP_LDMDB2_W, - OP_LDMDB2_W, - OP_LDMDB2_W, - OP_LDMDB2_W, - OP_LDMDB2_W, - OP_LDMDB2_W, - OP_LDMDB2_W, - OP_LDMDB2_W, - OP_LDMDB2_W, - OP_LDMDB2_W, -//------------------------------------------ - - - OP_STMIB, //100 1100 0 0000 - OP_STMIB, - OP_STMIB, - OP_STMIB, - OP_STMIB, - OP_STMIB, - OP_STMIB, - OP_STMIB, - OP_STMIB, - OP_STMIB, - OP_STMIB, - OP_STMIB, - OP_STMIB, - OP_STMIB, - OP_STMIB, - OP_STMIB, - - OP_LDMIB, - OP_LDMIB, - OP_LDMIB, - OP_LDMIB, - OP_LDMIB, - OP_LDMIB, - OP_LDMIB, - OP_LDMIB, - OP_LDMIB, - OP_LDMIB, - OP_LDMIB, - OP_LDMIB, - OP_LDMIB, - OP_LDMIB, - OP_LDMIB, - OP_LDMIB, -//------------------------------------------ - OP_STMIB_W, //100 1101 0 0000 - OP_STMIB_W, - OP_STMIB_W, - OP_STMIB_W, - OP_STMIB_W, - OP_STMIB_W, - OP_STMIB_W, - OP_STMIB_W, - OP_STMIB_W, - OP_STMIB_W, - OP_STMIB_W, - OP_STMIB_W, - OP_STMIB_W, - OP_STMIB_W, - OP_STMIB_W, - OP_STMIB_W, - - OP_LDMIB_W, - OP_LDMIB_W, - OP_LDMIB_W, - OP_LDMIB_W, - OP_LDMIB_W, - OP_LDMIB_W, - OP_LDMIB_W, - OP_LDMIB_W, - OP_LDMIB_W, - OP_LDMIB_W, - OP_LDMIB_W, - OP_LDMIB_W, - OP_LDMIB_W, - OP_LDMIB_W, - OP_LDMIB_W, - OP_LDMIB_W, -//------------------------------------------ - OP_STMIB2, //100 1110 0 0000 - OP_STMIB2, - OP_STMIB2, - OP_STMIB2, - OP_STMIB2, - OP_STMIB2, - OP_STMIB2, - OP_STMIB2, - OP_STMIB2, - OP_STMIB2, - OP_STMIB2, - OP_STMIB2, - OP_STMIB2, - OP_STMIB2, - OP_STMIB2, - OP_STMIB2, - - OP_LDMIB2, - OP_LDMIB2, - OP_LDMIB2, - OP_LDMIB2, - OP_LDMIB2, - OP_LDMIB2, - OP_LDMIB2, - OP_LDMIB2, - OP_LDMIB2, - OP_LDMIB2, - OP_LDMIB2, - OP_LDMIB2, - OP_LDMIB2, - OP_LDMIB2, - OP_LDMIB2, - OP_LDMIB2, -//------------------------------------------ - OP_STMIB2_W, //100 1111 0 0000 - OP_STMIB2_W, - OP_STMIB2_W, - OP_STMIB2_W, - OP_STMIB2_W, - OP_STMIB2_W, - OP_STMIB2_W, - OP_STMIB2_W, - OP_STMIB2_W, - OP_STMIB2_W, - OP_STMIB2_W, - OP_STMIB2_W, - OP_STMIB2_W, - OP_STMIB2_W, - OP_STMIB2_W, - OP_STMIB2_W, - - OP_LDMIB2_W, - OP_LDMIB2_W, - OP_LDMIB2_W, - OP_LDMIB2_W, - OP_LDMIB2_W, - OP_LDMIB2_W, - OP_LDMIB2_W, - OP_LDMIB2_W, - OP_LDMIB2_W, - OP_LDMIB2_W, - OP_LDMIB2_W, - OP_LDMIB2_W, - OP_LDMIB2_W, - OP_LDMIB2_W, - OP_LDMIB2_W, - OP_LDMIB2_W, -//------------------------------------------ - OP_B, //101 0000 0 0000 - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, -//------------------------------------------ - OP_B, //101 0001 0 0000 - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, -//------------------------------------------ - OP_B, //101 0010 0 0000 - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, -//------------------------------------------ - OP_B, //101 0011 0 0000 - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, -//------------------------------------------ - OP_B, //101 0100 0 0000 - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, -//------------------------------------------ - OP_B, //101 0101 0 0000 - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, -//------------------------------------------ - OP_B, //101 0110 0 0000 - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, -//------------------------------------------ - OP_B, //101 0111 0 0000 - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, - OP_B, -//------------------------------------------ - OP_BL, //101 1000 0 0000 - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, -//------------------------------------------ - OP_BL, //101 1001 0 0000 - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, -//------------------------------------------ - OP_BL, //101 1010 0 0000 - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, -//------------------------------------------ - OP_BL, //101 1011 0 0000 - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, -//------------------------------------------ - OP_BL, //101 1100 0 0000 - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, -//------------------------------------------ - OP_BL, //101 1101 0 0000 - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, -//------------------------------------------ - OP_BL, //101 1110 0 0000 - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, -//------------------------------------------ - OP_BL, //101 1111 0 0000 - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, - OP_BL, -//------------------------------------------ - OP_STC_OPTION, //110 0000 0 0000 - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, -//------------------------------------------ - OP_STC_M_POSTIND, //110 0001 0 0000 - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, -//------------------------------------------ - OP_STC_OPTION, //110 0010 0 0000 - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, -//------------------------------------------ - OP_STC_M_POSTIND, //110 0011 0 0000 - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - OP_STC_M_POSTIND, - - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, - OP_LDC_M_POSTIND, -//------------------------------------------ - OP_STC_OPTION, //110 0100 0 0000 - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, -//------------------------------------------ - OP_STC_P_POSTIND, //110 0101 0 0000 - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, -//------------------------------------------ - OP_STC_OPTION, //110 0110 0 0000 - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - OP_STC_OPTION, - - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, - OP_LDC_OPTION, -//------------------------------------------ - OP_STC_P_POSTIND, //110 0111 0 0000 - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - OP_STC_P_POSTIND, - - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, - OP_LDC_P_POSTIND, -//------------------------------------------ - OP_STC_M_IMM_OFF, //110 1000 0 0000 - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, -//------------------------------------------ - OP_STC_M_PREIND, //110 1001 0 0000 - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, -//------------------------------------------ - OP_STC_M_IMM_OFF, //110 1010 0 0000 - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - OP_STC_M_IMM_OFF, - - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, - OP_LDC_M_IMM_OFF, -//------------------------------------------ - OP_STC_M_PREIND, //110 1011 0 0000 - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - OP_STC_M_PREIND, - - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, - OP_LDC_M_PREIND, -//------------------------------------------ - OP_STC_P_IMM_OFF, //110 1100 0 0000 - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, -//------------------------------------------ - OP_STC_P_PREIND, //110 1101 0 0000 - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, -//------------------------------------------ - OP_STC_P_IMM_OFF, //110 1110 0 0000 - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - OP_STC_P_IMM_OFF, - - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, - OP_LDC_P_IMM_OFF, -//------------------------------------------ - OP_STC_P_PREIND, //110 1111 0 0000 - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - OP_STC_P_PREIND, - - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, - OP_LDC_P_PREIND, -//------------------------------------------ - OP_CDP, //111 0000 0 0000 - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, -//--------------------------------------------- - OP_CDP, //111 0001 0 0000 - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, -//--------------------------------------------- - OP_CDP, //111 0010 0 0000 - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, -//--------------------------------------------- - OP_CDP, //111 0011 0 0000 - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, -//--------------------------------------------- - OP_CDP, //111 0100 0 0000 - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, -//--------------------------------------------- - OP_CDP, //111 0101 0 0000 - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, -//--------------------------------------------- - OP_CDP, //111 0110 0 0000 - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, -//--------------------------------------------- - OP_CDP, //111 0111 0 0000 - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - OP_CDP, - OP_MCR, - - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, - OP_CDP, - OP_MRC, -//--------------------------------------------- - OP_SWI, //111 1000 0 0000 - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, - OP_SWI, -}; +/* 0000 0000 0000 */ TABDECL(OP_AND_LSL_IMM), // OP_AND_LSL_IMM +/* 0000 0000 0001 */ TABDECL(OP_AND_LSL_REG), // OP_AND_LSL_REG +/* 0000 0000 0010 */ TABDECL(OP_AND_LSR_IMM), // OP_AND_LSR_IMM +/* 0000 0000 0011 */ TABDECL(OP_AND_LSR_REG), // OP_AND_LSR_REG +/* 0000 0000 0100 */ TABDECL(OP_AND_ASR_IMM), // OP_AND_ASR_IMM +/* 0000 0000 0101 */ TABDECL(OP_AND_ASR_REG), // OP_AND_ASR_REG +/* 0000 0000 0110 */ TABDECL(OP_AND_ROR_IMM), // OP_AND_ROR_IMM +/* 0000 0000 0111 */ TABDECL(OP_AND_ROR_REG), // OP_AND_ROR_REG +/* 0000 0000 1000 */ TABDECL(OP_AND_LSL_IMM), // OP_AND_LSL_IMM +/* 0000 0000 1001 */ TABDECL(OP_MUL), // OP_MUL +/* 0000 0000 1010 */ TABDECL(OP_AND_LSR_IMM), // OP_AND_LSR_IMM +/* 0000 0000 1011 */ TABDECL(OP_STRH_POS_INDE_M_REG_OFF), // OP_STRH_POS_INDE_M_REG_OFF +/* 0000 0000 1100 */ TABDECL(OP_AND_ASR_IMM), // OP_AND_ASR_IMM +/* 0000 0000 1101 */ TABDECL(OP_LDRD_STRD_POST_INDEX), // OP_LDRD_STRD_POST_INDEX +/* 0000 0000 1110 */ TABDECL(OP_AND_ROR_IMM), // OP_AND_ROR_IMM +/* 0000 0000 1111 */ TABDECL(OP_LDRD_STRD_POST_INDEX), // OP_LDRD_STRD_POST_INDEX + +/* 0000 0001 0000 */ TABDECL(OP_AND_S_LSL_IMM), // OP_AND_S_LSL_IMM +/* 0000 0001 0001 */ TABDECL(OP_AND_S_LSL_REG), // OP_AND_S_LSL_REG +/* 0000 0001 0010 */ TABDECL(OP_AND_S_LSR_IMM), // OP_AND_S_LSR_IMM +/* 0000 0001 0011 */ TABDECL(OP_AND_S_LSR_REG), // OP_AND_S_LSR_REG +/* 0000 0001 0100 */ TABDECL(OP_AND_S_ASR_IMM), // OP_AND_S_ASR_IMM +/* 0000 0001 0101 */ TABDECL(OP_AND_S_ASR_REG), // OP_AND_S_ASR_REG +/* 0000 0001 0110 */ TABDECL(OP_AND_S_ROR_IMM), // OP_AND_S_ROR_IMM +/* 0000 0001 0111 */ TABDECL(OP_AND_S_ROR_REG), // OP_AND_S_ROR_REG +/* 0000 0001 1000 */ TABDECL(OP_AND_S_LSL_IMM), // OP_AND_S_LSL_IMM +/* 0000 0001 1001 */ TABDECL(OP_MUL_S), // OP_MUL_S +/* 0000 0001 1010 */ TABDECL(OP_AND_S_LSR_IMM), // OP_AND_S_LSR_IMM +/* 0000 0001 1011 */ TABDECL(OP_LDRH_POS_INDE_M_REG_OFF), // OP_LDRH_POS_INDE_M_REG_OFF +/* 0000 0001 1100 */ TABDECL(OP_AND_S_ASR_IMM), // OP_AND_S_ASR_IMM +/* 0000 0001 1101 */ TABDECL(OP_LDRSB_POS_INDE_M_REG_OFF), // OP_LDRSB_POS_INDE_M_REG_OFF +/* 0000 0001 1110 */ TABDECL(OP_AND_S_ROR_IMM), // OP_AND_S_ROR_IMM +/* 0000 0001 1111 */ TABDECL(OP_LDRSH_POS_INDE_M_REG_OFF), // OP_LDRSH_POS_INDE_M_REG_OFF + +/* 0000 0010 0000 */ TABDECL(OP_EOR_LSL_IMM), // OP_EOR_LSL_IMM +/* 0000 0010 0001 */ TABDECL(OP_EOR_LSL_REG), // OP_EOR_LSL_REG +/* 0000 0010 0010 */ TABDECL(OP_EOR_LSR_IMM), // OP_EOR_LSR_IMM +/* 0000 0010 0011 */ TABDECL(OP_EOR_LSR_REG), // OP_EOR_LSR_REG +/* 0000 0010 0100 */ TABDECL(OP_EOR_ASR_IMM), // OP_EOR_ASR_IMM +/* 0000 0010 0101 */ TABDECL(OP_EOR_ASR_REG), // OP_EOR_ASR_REG +/* 0000 0010 0110 */ TABDECL(OP_EOR_ROR_IMM), // OP_EOR_ROR_IMM +/* 0000 0010 0111 */ TABDECL(OP_EOR_ROR_REG), // OP_EOR_ROR_REG +/* 0000 0010 1000 */ TABDECL(OP_EOR_LSL_IMM), // OP_EOR_LSL_IMM +/* 0000 0010 1001 */ TABDECL(OP_MLA), // OP_MLA +/* 0000 0010 1010 */ TABDECL(OP_EOR_LSR_IMM), // OP_EOR_LSR_IMM +/* 0000 0010 1011 */ TABDECL(OP_UND), +/* 0000 0010 1100 */ TABDECL(OP_EOR_ASR_IMM), // OP_EOR_ASR_IMM +/* 0000 0010 1101 */ TABDECL(OP_UND), +/* 0000 0010 1110 */ TABDECL(OP_EOR_ROR_IMM), // OP_EOR_ROR_IMM +/* 0000 0010 1111 */ TABDECL(OP_UND), + +/* 0000 0011 0000 */ TABDECL(OP_EOR_S_LSL_IMM), // OP_EOR_S_LSL_IMM +/* 0000 0011 0001 */ TABDECL(OP_EOR_S_LSL_REG), // OP_EOR_S_LSL_REG +/* 0000 0011 0010 */ TABDECL(OP_EOR_S_LSR_IMM), // OP_EOR_S_LSR_IMM +/* 0000 0011 0011 */ TABDECL(OP_EOR_S_LSR_REG), // OP_EOR_S_LSR_REG +/* 0000 0011 0100 */ TABDECL(OP_EOR_S_ASR_IMM), // OP_EOR_S_ASR_IMM +/* 0000 0011 0101 */ TABDECL(OP_EOR_S_ASR_REG), // OP_EOR_S_ASR_REG +/* 0000 0011 0110 */ TABDECL(OP_EOR_S_ROR_IMM), // OP_EOR_S_ROR_IMM +/* 0000 0011 0111 */ TABDECL(OP_EOR_S_ROR_REG), // OP_EOR_S_ROR_REG +/* 0000 0011 1000 */ TABDECL(OP_EOR_S_LSL_IMM), // OP_EOR_S_LSL_IMM +/* 0000 0011 1001 */ TABDECL(OP_MLA_S), // OP_MLA_S +/* 0000 0011 1010 */ TABDECL(OP_EOR_S_LSR_IMM), // OP_EOR_S_LSR_IMM +/* 0000 0011 1011 */ TABDECL(OP_UND), +/* 0000 0011 1100 */ TABDECL(OP_EOR_S_ASR_IMM), // OP_EOR_S_ASR_IMM +/* 0000 0011 1101 */ TABDECL(OP_UND), +/* 0000 0011 1110 */ TABDECL(OP_EOR_S_ROR_IMM), // OP_EOR_S_ROR_IMM +/* 0000 0011 1111 */ TABDECL(OP_UND), + +/* 0000 0100 0000 */ TABDECL(OP_SUB_LSL_IMM), // OP_SUB_LSL_IMM +/* 0000 0100 0001 */ TABDECL(OP_SUB_LSL_REG), // OP_SUB_LSL_REG +/* 0000 0100 0010 */ TABDECL(OP_SUB_LSR_IMM), // OP_SUB_LSR_IMM +/* 0000 0100 0011 */ TABDECL(OP_SUB_LSR_REG), // OP_SUB_LSR_REG +/* 0000 0100 0100 */ TABDECL(OP_SUB_ASR_IMM), // OP_SUB_ASR_IMM +/* 0000 0100 0101 */ TABDECL(OP_SUB_ASR_REG), // OP_SUB_ASR_REG +/* 0000 0100 0110 */ TABDECL(OP_SUB_ROR_IMM), // OP_SUB_ROR_IMM +/* 0000 0100 0111 */ TABDECL(OP_SUB_ROR_REG), // OP_SUB_ROR_REG +/* 0000 0100 1000 */ TABDECL(OP_SUB_LSL_IMM), // OP_SUB_LSL_IMM +/* 0000 0100 1001 */ TABDECL(OP_UND), +/* 0000 0100 1010 */ TABDECL(OP_SUB_LSR_IMM), // OP_SUB_LSR_IMM +/* 0000 0100 1011 */ TABDECL(OP_STRH_POS_INDE_M_IMM_OFF), // OP_STRH_POS_INDE_M_IMM_OFF +/* 0000 0100 1100 */ TABDECL(OP_SUB_ASR_IMM), // OP_SUB_ASR_IMM +/* 0000 0100 1101 */ TABDECL(OP_LDRD_STRD_POST_INDEX), // OP_LDRD_STRD_POST_INDEX +/* 0000 0100 1110 */ TABDECL(OP_SUB_ROR_IMM), // OP_SUB_ROR_IMM +/* 0000 0100 1111 */ TABDECL(OP_LDRD_STRD_POST_INDEX), // OP_LDRD_STRD_POST_INDEX + +/* 0000 0101 0000 */ TABDECL(OP_SUB_S_LSL_IMM), // OP_SUB_S_LSL_IMM +/* 0000 0101 0001 */ TABDECL(OP_SUB_S_LSL_REG), // OP_SUB_S_LSL_REG +/* 0000 0101 0010 */ TABDECL(OP_SUB_S_LSR_IMM), // OP_SUB_S_LSR_IMM +/* 0000 0101 0011 */ TABDECL(OP_SUB_S_LSR_REG), // OP_SUB_S_LSR_REG +/* 0000 0101 0100 */ TABDECL(OP_SUB_S_ASR_IMM), // OP_SUB_S_ASR_IMM +/* 0000 0101 0101 */ TABDECL(OP_SUB_S_ASR_REG), // OP_SUB_S_ASR_REG +/* 0000 0101 0110 */ TABDECL(OP_SUB_S_ROR_IMM), // OP_SUB_S_ROR_IMM +/* 0000 0101 0111 */ TABDECL(OP_SUB_S_ROR_REG), // OP_SUB_S_ROR_REG +/* 0000 0101 1000 */ TABDECL(OP_SUB_S_LSL_IMM), // OP_SUB_S_LSL_IMM +/* 0000 0101 1001 */ TABDECL(OP_UND), +/* 0000 0101 1010 */ TABDECL(OP_SUB_S_LSR_IMM), // OP_SUB_S_LSR_IMM +/* 0000 0101 1011 */ TABDECL(OP_LDRH_POS_INDE_M_IMM_OFF), // OP_LDRH_POS_INDE_M_IMM_OFF +/* 0000 0101 1100 */ TABDECL(OP_SUB_S_ASR_IMM), // OP_SUB_S_ASR_IMM +/* 0000 0101 1101 */ TABDECL(OP_LDRSB_POS_INDE_M_IMM_OFF), // OP_LDRSB_POS_INDE_M_IMM_OFF +/* 0000 0101 1110 */ TABDECL(OP_SUB_S_ROR_IMM), // OP_SUB_S_ROR_IMM +/* 0000 0101 1111 */ TABDECL(OP_LDRSH_POS_INDE_M_IMM_OFF), // OP_LDRSH_POS_INDE_M_IMM_OFF + +/* 0000 0110 0000 */ TABDECL(OP_RSB_LSL_IMM), // OP_RSB_LSL_IMM +/* 0000 0110 0001 */ TABDECL(OP_RSB_LSL_REG), // OP_RSB_LSL_REG +/* 0000 0110 0010 */ TABDECL(OP_RSB_LSR_IMM), // OP_RSB_LSR_IMM +/* 0000 0110 0011 */ TABDECL(OP_RSB_LSR_REG), // OP_RSB_LSR_REG +/* 0000 0110 0100 */ TABDECL(OP_RSB_ASR_IMM), // OP_RSB_ASR_IMM +/* 0000 0110 0101 */ TABDECL(OP_RSB_ASR_REG), // OP_RSB_ASR_REG +/* 0000 0110 0110 */ TABDECL(OP_RSB_ROR_IMM), // OP_RSB_ROR_IMM +/* 0000 0110 0111 */ TABDECL(OP_RSB_ROR_REG), // OP_RSB_ROR_REG +/* 0000 0110 1000 */ TABDECL(OP_RSB_LSL_IMM), // OP_RSB_LSL_IMM +/* 0000 0110 1001 */ TABDECL(OP_UND), +/* 0000 0110 1010 */ TABDECL(OP_RSB_LSR_IMM), // OP_RSB_LSR_IMM +/* 0000 0110 1011 */ TABDECL(OP_UND), +/* 0000 0110 1100 */ TABDECL(OP_RSB_ASR_IMM), // OP_RSB_ASR_IMM +/* 0000 0110 1101 */ TABDECL(OP_UND), +/* 0000 0110 1110 */ TABDECL(OP_RSB_ROR_IMM), // OP_RSB_ROR_IMM +/* 0000 0110 1111 */ TABDECL(OP_UND), + +/* 0000 0111 0000 */ TABDECL(OP_RSB_S_LSL_IMM), // OP_RSB_S_LSL_IMM +/* 0000 0111 0001 */ TABDECL(OP_RSB_S_LSL_REG), // OP_RSB_S_LSL_REG +/* 0000 0111 0010 */ TABDECL(OP_RSB_S_LSR_IMM), // OP_RSB_S_LSR_IMM +/* 0000 0111 0011 */ TABDECL(OP_RSB_S_LSR_REG), // OP_RSB_S_LSR_REG +/* 0000 0111 0100 */ TABDECL(OP_RSB_S_ASR_IMM), // OP_RSB_S_ASR_IMM +/* 0000 0111 0101 */ TABDECL(OP_RSB_S_ASR_REG), // OP_RSB_S_ASR_REG +/* 0000 0111 0110 */ TABDECL(OP_RSB_S_ROR_IMM), // OP_RSB_S_ROR_IMM +/* 0000 0111 0111 */ TABDECL(OP_RSB_S_ROR_REG), // OP_RSB_S_ROR_REG +/* 0000 0111 1000 */ TABDECL(OP_RSB_S_LSL_IMM), // OP_RSB_S_LSL_IMM +/* 0000 0111 1001 */ TABDECL(OP_UND), +/* 0000 0111 1010 */ TABDECL(OP_RSB_S_LSR_IMM), // OP_RSB_S_LSR_IMM +/* 0000 0111 1011 */ TABDECL(OP_UND), +/* 0000 0111 1100 */ TABDECL(OP_RSB_S_ASR_IMM), // OP_RSB_S_ASR_IMM +/* 0000 0111 1101 */ TABDECL(OP_UND), +/* 0000 0111 1110 */ TABDECL(OP_RSB_S_ROR_IMM), // OP_RSB_S_ROR_IMM +/* 0000 0111 1111 */ TABDECL(OP_UND), + +/* 0000 1000 0000 */ TABDECL(OP_ADD_LSL_IMM), // OP_ADD_LSL_IMM +/* 0000 1000 0001 */ TABDECL(OP_ADD_LSL_REG), // OP_ADD_LSL_REG +/* 0000 1000 0010 */ TABDECL(OP_ADD_LSR_IMM), // OP_ADD_LSR_IMM +/* 0000 1000 0011 */ TABDECL(OP_ADD_LSR_REG), // OP_ADD_LSR_REG +/* 0000 1000 0100 */ TABDECL(OP_ADD_ASR_IMM), // OP_ADD_ASR_IMM +/* 0000 1000 0101 */ TABDECL(OP_ADD_ASR_REG), // OP_ADD_ASR_REG +/* 0000 1000 0110 */ TABDECL(OP_ADD_ROR_IMM), // OP_ADD_ROR_IMM +/* 0000 1000 0111 */ TABDECL(OP_ADD_ROR_REG), // OP_ADD_ROR_REG +/* 0000 1000 1000 */ TABDECL(OP_ADD_LSL_IMM), // OP_ADD_LSL_IMM +/* 0000 1000 1001 */ TABDECL(OP_UMULL), // OP_UMULL +/* 0000 1000 1010 */ TABDECL(OP_ADD_LSR_IMM), // OP_ADD_LSR_IMM +/* 0000 1000 1011 */ TABDECL(OP_STRH_POS_INDE_P_REG_OFF), // OP_STRH_POS_INDE_P_REG_OFF +/* 0000 1000 1100 */ TABDECL(OP_ADD_ASR_IMM), // OP_ADD_ASR_IMM +/* 0000 1000 1101 */ TABDECL(OP_LDRD_STRD_POST_INDEX), // OP_LDRD_STRD_POST_INDEX +/* 0000 1000 1110 */ TABDECL(OP_ADD_ROR_IMM), // OP_ADD_ROR_IMM +/* 0000 1000 1111 */ TABDECL(OP_LDRD_STRD_POST_INDEX), // OP_LDRD_STRD_POST_INDEX + +/* 0000 1001 0000 */ TABDECL(OP_ADD_S_LSL_IMM), // OP_ADD_S_LSL_IMM +/* 0000 1001 0001 */ TABDECL(OP_ADD_S_LSL_REG), // OP_ADD_S_LSL_REG +/* 0000 1001 0010 */ TABDECL(OP_ADD_S_LSR_IMM), // OP_ADD_S_LSR_IMM +/* 0000 1001 0011 */ TABDECL(OP_ADD_S_LSR_REG), // OP_ADD_S_LSR_REG +/* 0000 1001 0100 */ TABDECL(OP_ADD_S_ASR_IMM), // OP_ADD_S_ASR_IMM +/* 0000 1001 0101 */ TABDECL(OP_ADD_S_ASR_REG), // OP_ADD_S_ASR_REG +/* 0000 1001 0110 */ TABDECL(OP_ADD_S_ROR_IMM), // OP_ADD_S_ROR_IMM +/* 0000 1001 0111 */ TABDECL(OP_ADD_S_ROR_REG), // OP_ADD_S_ROR_REG +/* 0000 1001 1000 */ TABDECL(OP_ADD_S_LSL_IMM), // OP_ADD_S_LSL_IMM +/* 0000 1001 1001 */ TABDECL(OP_UMULL_S), // OP_UMULL_S +/* 0000 1001 1010 */ TABDECL(OP_ADD_S_LSR_IMM), // OP_ADD_S_LSR_IMM +/* 0000 1001 1011 */ TABDECL(OP_LDRH_POS_INDE_P_REG_OFF), // OP_LDRH_POS_INDE_P_REG_OFF +/* 0000 1001 1100 */ TABDECL(OP_ADD_S_ASR_IMM), // OP_ADD_S_ASR_IMM +/* 0000 1001 1101 */ TABDECL(OP_LDRSB_POS_INDE_P_REG_OFF), // OP_LDRSB_POS_INDE_P_REG_OFF +/* 0000 1001 1110 */ TABDECL(OP_ADD_S_ROR_IMM), // OP_ADD_S_ROR_IMM +/* 0000 1001 1111 */ TABDECL(OP_LDRSH_POS_INDE_P_REG_OFF), // OP_LDRSH_POS_INDE_P_REG_OFF + +/* 0000 1010 0000 */ TABDECL(OP_ADC_LSL_IMM), // OP_ADC_LSL_IMM +/* 0000 1010 0001 */ TABDECL(OP_ADC_LSL_REG), // OP_ADC_LSL_REG +/* 0000 1010 0010 */ TABDECL(OP_ADC_LSR_IMM), // OP_ADC_LSR_IMM +/* 0000 1010 0011 */ TABDECL(OP_ADC_LSR_REG), // OP_ADC_LSR_REG +/* 0000 1010 0100 */ TABDECL(OP_ADC_ASR_IMM), // OP_ADC_ASR_IMM +/* 0000 1010 0101 */ TABDECL(OP_ADC_ASR_REG), // OP_ADC_ASR_REG +/* 0000 1010 0110 */ TABDECL(OP_ADC_ROR_IMM), // OP_ADC_ROR_IMM +/* 0000 1010 0111 */ TABDECL(OP_ADC_ROR_REG), // OP_ADC_ROR_REG +/* 0000 1010 1000 */ TABDECL(OP_ADC_LSL_IMM), // OP_ADC_LSL_IMM +/* 0000 1010 1001 */ TABDECL(OP_UMLAL), // OP_UMLAL +/* 0000 1010 1010 */ TABDECL(OP_ADC_LSR_IMM), // OP_ADC_LSR_IMM +/* 0000 1010 1011 */ TABDECL(OP_UND), +/* 0000 1010 1100 */ TABDECL(OP_ADC_ASR_IMM), // OP_ADC_ASR_IMM +/* 0000 1010 1101 */ TABDECL(OP_UND), +/* 0000 1010 1110 */ TABDECL(OP_ADC_ROR_IMM), // OP_ADC_ROR_IMM +/* 0000 1010 1111 */ TABDECL(OP_UND), + +/* 0000 1011 0000 */ TABDECL(OP_ADC_S_LSL_IMM), // OP_ADC_S_LSL_IMM +/* 0000 1011 0001 */ TABDECL(OP_ADC_S_LSL_REG), // OP_ADC_S_LSL_REG +/* 0000 1011 0010 */ TABDECL(OP_ADC_S_LSR_IMM), // OP_ADC_S_LSR_IMM +/* 0000 1011 0011 */ TABDECL(OP_ADC_S_LSR_REG), // OP_ADC_S_LSR_REG +/* 0000 1011 0100 */ TABDECL(OP_ADC_S_ASR_IMM), // OP_ADC_S_ASR_IMM +/* 0000 1011 0101 */ TABDECL(OP_ADC_S_ASR_REG), // OP_ADC_S_ASR_REG +/* 0000 1011 0110 */ TABDECL(OP_ADC_S_ROR_IMM), // OP_ADC_S_ROR_IMM +/* 0000 1011 0111 */ TABDECL(OP_ADC_S_ROR_REG), // OP_ADC_S_ROR_REG +/* 0000 1011 1000 */ TABDECL(OP_ADC_S_LSL_IMM), // OP_ADC_S_LSL_IMM +/* 0000 1011 1001 */ TABDECL(OP_UMLAL_S), // OP_UMLAL_S +/* 0000 1011 1010 */ TABDECL(OP_ADC_S_LSR_IMM), // OP_ADC_S_LSR_IMM +/* 0000 1011 1011 */ TABDECL(OP_UND), +/* 0000 1011 1100 */ TABDECL(OP_ADC_S_ASR_IMM), // OP_ADC_S_ASR_IMM +/* 0000 1011 1101 */ TABDECL(OP_UND), +/* 0000 1011 1110 */ TABDECL(OP_ADC_S_ROR_IMM), // OP_ADC_S_ROR_IMM +/* 0000 1011 1111 */ TABDECL(OP_UND), + +/* 0000 1100 0000 */ TABDECL(OP_SBC_LSL_IMM), // OP_SBC_LSL_IMM +/* 0000 1100 0001 */ TABDECL(OP_SBC_LSL_REG), // OP_SBC_LSL_REG +/* 0000 1100 0010 */ TABDECL(OP_SBC_LSR_IMM), // OP_SBC_LSR_IMM +/* 0000 1100 0011 */ TABDECL(OP_SBC_LSR_REG), // OP_SBC_LSR_REG +/* 0000 1100 0100 */ TABDECL(OP_SBC_ASR_IMM), // OP_SBC_ASR_IMM +/* 0000 1100 0101 */ TABDECL(OP_SBC_ASR_REG), // OP_SBC_ASR_REG +/* 0000 1100 0110 */ TABDECL(OP_SBC_ROR_IMM), // OP_SBC_ROR_IMM +/* 0000 1100 0111 */ TABDECL(OP_SBC_ROR_REG), // OP_SBC_ROR_REG +/* 0000 1100 1000 */ TABDECL(OP_SBC_LSL_IMM), // OP_SBC_LSL_IMM +/* 0000 1100 1001 */ TABDECL(OP_SMULL), // OP_SMULL +/* 0000 1100 1010 */ TABDECL(OP_SBC_LSR_IMM), // OP_SBC_LSR_IMM +/* 0000 1100 1011 */ TABDECL(OP_STRH_POS_INDE_P_IMM_OFF), // OP_STRH_POS_INDE_P_IMM_OFF +/* 0000 1100 1100 */ TABDECL(OP_SBC_ASR_IMM), // OP_SBC_ASR_IMM +/* 0000 1100 1101 */ TABDECL(OP_LDRD_STRD_POST_INDEX), // OP_LDRD_STRD_POST_INDEX +/* 0000 1100 1110 */ TABDECL(OP_SBC_ROR_IMM), // OP_SBC_ROR_IMM +/* 0000 1100 1111 */ TABDECL(OP_LDRD_STRD_POST_INDEX), // OP_LDRD_STRD_POST_INDEX + +/* 0000 1101 0000 */ TABDECL(OP_SBC_S_LSL_IMM), // OP_SBC_S_LSL_IMM +/* 0000 1101 0001 */ TABDECL(OP_SBC_S_LSL_REG), // OP_SBC_S_LSL_REG +/* 0000 1101 0010 */ TABDECL(OP_SBC_S_LSR_IMM), // OP_SBC_S_LSR_IMM +/* 0000 1101 0011 */ TABDECL(OP_SBC_S_LSR_REG), // OP_SBC_S_LSR_REG +/* 0000 1101 0100 */ TABDECL(OP_SBC_S_ASR_IMM), // OP_SBC_S_ASR_IMM +/* 0000 1101 0101 */ TABDECL(OP_SBC_S_ASR_REG), // OP_SBC_S_ASR_REG +/* 0000 1101 0110 */ TABDECL(OP_SBC_S_ROR_IMM), // OP_SBC_S_ROR_IMM +/* 0000 1101 0111 */ TABDECL(OP_SBC_S_ROR_REG), // OP_SBC_S_ROR_REG +/* 0000 1101 1000 */ TABDECL(OP_SBC_S_LSL_IMM), // OP_SBC_S_LSL_IMM +/* 0000 1101 1001 */ TABDECL(OP_SMULL_S), // OP_SMULL_S +/* 0000 1101 1010 */ TABDECL(OP_SBC_S_LSR_IMM), // OP_SBC_S_LSR_IMM +/* 0000 1101 1011 */ TABDECL(OP_LDRH_POS_INDE_P_IMM_OFF), // OP_LDRH_POS_INDE_P_IMM_OFF +/* 0000 1101 1100 */ TABDECL(OP_SBC_S_ASR_IMM), // OP_SBC_S_ASR_IMM +/* 0000 1101 1101 */ TABDECL(OP_LDRSB_POS_INDE_P_IMM_OFF), // OP_LDRSB_POS_INDE_P_IMM_OFF +/* 0000 1101 1110 */ TABDECL(OP_SBC_S_ROR_IMM), // OP_SBC_S_ROR_IMM +/* 0000 1101 1111 */ TABDECL(OP_LDRSH_POS_INDE_P_IMM_OFF), // OP_LDRSH_POS_INDE_P_IMM_OFF + +/* 0000 1110 0000 */ TABDECL(OP_RSC_LSL_IMM), // OP_RSC_LSL_IMM +/* 0000 1110 0001 */ TABDECL(OP_RSC_LSL_REG), // OP_RSC_LSL_REG +/* 0000 1110 0010 */ TABDECL(OP_RSC_LSR_IMM), // OP_RSC_LSR_IMM +/* 0000 1110 0011 */ TABDECL(OP_RSC_LSR_REG), // OP_RSC_LSR_REG +/* 0000 1110 0100 */ TABDECL(OP_RSC_ASR_IMM), // OP_RSC_ASR_IMM +/* 0000 1110 0101 */ TABDECL(OP_RSC_ASR_REG), // OP_RSC_ASR_REG +/* 0000 1110 0110 */ TABDECL(OP_RSC_ROR_IMM), // OP_RSC_ROR_IMM +/* 0000 1110 0111 */ TABDECL(OP_RSC_ROR_REG), // OP_RSC_ROR_REG +/* 0000 1110 1000 */ TABDECL(OP_RSC_LSL_IMM), // OP_RSC_LSL_IMM +/* 0000 1110 1001 */ TABDECL(OP_SMLAL), // OP_SMLAL +/* 0000 1110 1010 */ TABDECL(OP_RSC_LSR_IMM), // OP_RSC_LSR_IMM +/* 0000 1110 1011 */ TABDECL(OP_UND), +/* 0000 1110 1100 */ TABDECL(OP_RSC_ASR_IMM), // OP_RSC_ASR_IMM +/* 0000 1110 1101 */ TABDECL(OP_UND), +/* 0000 1110 1110 */ TABDECL(OP_RSC_ROR_IMM), // OP_RSC_ROR_IMM +/* 0000 1110 1111 */ TABDECL(OP_UND), + +/* 0000 1111 0000 */ TABDECL(OP_RSC_S_LSL_IMM), // OP_RSC_S_LSL_IMM +/* 0000 1111 0001 */ TABDECL(OP_RSC_S_LSL_REG), // OP_RSC_S_LSL_REG +/* 0000 1111 0010 */ TABDECL(OP_RSC_S_LSR_IMM), // OP_RSC_S_LSR_IMM +/* 0000 1111 0011 */ TABDECL(OP_RSC_S_LSR_REG), // OP_RSC_S_LSR_REG +/* 0000 1111 0100 */ TABDECL(OP_RSC_S_ASR_IMM), // OP_RSC_S_ASR_IMM +/* 0000 1111 0101 */ TABDECL(OP_RSC_S_ASR_REG), // OP_RSC_S_ASR_REG +/* 0000 1111 0110 */ TABDECL(OP_RSC_S_ROR_IMM), // OP_RSC_S_ROR_IMM +/* 0000 1111 0111 */ TABDECL(OP_RSC_S_ROR_REG), // OP_RSC_S_ROR_REG +/* 0000 1111 1000 */ TABDECL(OP_RSC_S_LSL_IMM), // OP_RSC_S_LSL_IMM +/* 0000 1111 1001 */ TABDECL(OP_SMLAL_S), // OP_SMLAL_S +/* 0000 1111 1010 */ TABDECL(OP_RSC_S_LSR_IMM), // OP_RSC_S_LSR_IMM +/* 0000 1111 1011 */ TABDECL(OP_UND), +/* 0000 1111 1100 */ TABDECL(OP_RSC_S_ASR_IMM), // OP_RSC_S_ASR_IMM +/* 0000 1111 1101 */ TABDECL(OP_UND), +/* 0000 1111 1110 */ TABDECL(OP_RSC_S_ROR_IMM), // OP_RSC_S_ROR_IMM +/* 0000 1111 1111 */ TABDECL(OP_UND), + +/* 0001 0000 0000 */ TABDECL(OP_MRS_CPSR), // OP_MRS_CPSR +/* 0001 0000 0001 */ TABDECL(OP_UND), +/* 0001 0000 0010 */ TABDECL(OP_UND), +/* 0001 0000 0011 */ TABDECL(OP_UND), +/* 0001 0000 0100 */ TABDECL(OP_UND), +/* 0001 0000 0101 */ TABDECL(OP_QADD), // OP_QADD +/* 0001 0000 0110 */ TABDECL(OP_UND), +/* 0001 0000 0111 */ TABDECL(OP_UND), +/* 0001 0000 1000 */ TABDECL(OP_SMLA_B_B), // OP_SMLA_B_B +/* 0001 0000 1001 */ TABDECL(OP_SWP), // OP_SWP +/* 0001 0000 1010 */ TABDECL(OP_SMLA_T_B), // OP_SMLA_T_B +/* 0001 0000 1011 */ TABDECL(OP_STRH_M_REG_OFF), // OP_STRH_M_REG_OFF +/* 0001 0000 1100 */ TABDECL(OP_SMLA_B_T), // OP_SMLA_B_T +/* 0001 0000 1101 */ TABDECL(OP_LDRD_STRD_OFFSET_PRE_INDEX), // OP_LDRD_STRD_OFFSET_PRE_INDEX +/* 0001 0000 1110 */ TABDECL(OP_SMLA_T_T), // OP_SMLA_T_T +/* 0001 0000 1111 */ TABDECL(OP_LDRD_STRD_OFFSET_PRE_INDEX), // OP_LDRD_STRD_OFFSET_PRE_INDEX + +/* 0001 0001 0000 */ TABDECL(OP_TST_LSL_IMM), // OP_TST_LSL_IMM +/* 0001 0001 0001 */ TABDECL(OP_TST_LSL_REG), // OP_TST_LSL_REG +/* 0001 0001 0010 */ TABDECL(OP_TST_LSR_IMM), // OP_TST_LSR_IMM +/* 0001 0001 0011 */ TABDECL(OP_TST_LSR_REG), // OP_TST_LSR_REG +/* 0001 0001 0100 */ TABDECL(OP_TST_ASR_IMM), // OP_TST_ASR_IMM +/* 0001 0001 0101 */ TABDECL(OP_TST_ASR_REG), // OP_TST_ASR_REG +/* 0001 0001 0110 */ TABDECL(OP_TST_ROR_IMM), // OP_TST_ROR_IMM +/* 0001 0001 0111 */ TABDECL(OP_TST_ROR_REG), // OP_TST_ROR_REG +/* 0001 0001 1000 */ TABDECL(OP_TST_LSL_IMM), // OP_TST_LSL_IMM +/* 0001 0001 1001 */ TABDECL(OP_UND), +/* 0001 0001 1010 */ TABDECL(OP_TST_LSR_IMM), // OP_TST_LSR_IMM +/* 0001 0001 1011 */ TABDECL(OP_LDRH_M_REG_OFF), // OP_LDRH_M_REG_OFF +/* 0001 0001 1100 */ TABDECL(OP_TST_ASR_IMM), // OP_TST_ASR_IMM +/* 0001 0001 1101 */ TABDECL(OP_LDRSB_M_REG_OFF), // OP_LDRSB_M_REG_OFF +/* 0001 0001 1110 */ TABDECL(OP_TST_ROR_IMM), // OP_TST_ROR_IMM +/* 0001 0001 1111 */ TABDECL(OP_LDRSH_M_REG_OFF), // OP_LDRSH_M_REG_OFF + +/* 0001 0010 0000 */ TABDECL(OP_MSR_CPSR), // OP_MSR_CPSR +/* 0001 0010 0001 */ TABDECL(OP_BX), // OP_BX +/* 0001 0010 0010 */ TABDECL(OP_UND), +/* 0001 0010 0011 */ TABDECL(OP_BLX_REG), // OP_BLX_REG +/* 0001 0010 0100 */ TABDECL(OP_UND), +/* 0001 0010 0101 */ TABDECL(OP_QSUB), // OP_QSUB +/* 0001 0010 0110 */ TABDECL(OP_UND), +/* 0001 0010 0111 */ TABDECL(OP_BKPT), // OP_BKPT +/* 0001 0010 1000 */ TABDECL(OP_SMLAW_B), // OP_SMLAW_B +/* 0001 0010 1001 */ TABDECL(OP_UND), +/* 0001 0010 1010 */ TABDECL(OP_SMULW_B), // OP_SMULW_B +/* 0001 0010 1011 */ TABDECL(OP_STRH_PRE_INDE_M_REG_OFF), // OP_STRH_PRE_INDE_M_REG_OFF +/* 0001 0010 1100 */ TABDECL(OP_SMLAW_T), // OP_SMLAW_T +/* 0001 0010 1101 */ TABDECL(OP_LDRD_STRD_OFFSET_PRE_INDEX), // OP_LDRD_STRD_OFFSET_PRE_INDEX +/* 0001 0010 1110 */ TABDECL(OP_SMULW_T), // OP_SMULW_T +/* 0001 0010 1111 */ TABDECL(OP_LDRD_STRD_OFFSET_PRE_INDEX), // OP_LDRD_STRD_OFFSET_PRE_INDEX + +/* 0001 0011 0000 */ TABDECL(OP_TEQ_LSL_IMM), // OP_TEQ_LSL_IMM +/* 0001 0011 0001 */ TABDECL(OP_TEQ_LSL_REG), // OP_TEQ_LSL_REG +/* 0001 0011 0010 */ TABDECL(OP_TEQ_LSR_IMM), // OP_TEQ_LSR_IMM +/* 0001 0011 0011 */ TABDECL(OP_TEQ_LSR_REG), // OP_TEQ_LSR_REG +/* 0001 0011 0100 */ TABDECL(OP_TEQ_ASR_IMM), // OP_TEQ_ASR_IMM +/* 0001 0011 0101 */ TABDECL(OP_TEQ_ASR_REG), // OP_TEQ_ASR_REG +/* 0001 0011 0110 */ TABDECL(OP_TEQ_ROR_IMM), // OP_TEQ_ROR_IMM +/* 0001 0011 0111 */ TABDECL(OP_TEQ_ROR_REG), // OP_TEQ_ROR_REG +/* 0001 0011 1000 */ TABDECL(OP_TEQ_LSL_IMM), // OP_TEQ_LSL_IMM +/* 0001 0011 1001 */ TABDECL(OP_UND), +/* 0001 0011 1010 */ TABDECL(OP_TEQ_LSR_IMM), // OP_TEQ_LSR_IMM +/* 0001 0011 1011 */ TABDECL(OP_LDRH_PRE_INDE_M_REG_OFF), // OP_LDRH_PRE_INDE_M_REG_OFF +/* 0001 0011 1100 */ TABDECL(OP_TEQ_ASR_IMM), // OP_TEQ_ASR_IMM +/* 0001 0011 1101 */ TABDECL(OP_LDRSB_PRE_INDE_M_REG_OFF), // OP_LDRSB_PRE_INDE_M_REG_OFF +/* 0001 0011 1110 */ TABDECL(OP_TEQ_ROR_IMM), // OP_TEQ_ROR_IMM +/* 0001 0011 1111 */ TABDECL(OP_LDRSH_PRE_INDE_M_REG_OFF), // OP_LDRSH_PRE_INDE_M_REG_OFF + +/* 0001 0100 0000 */ TABDECL(OP_MRS_SPSR), // OP_MRS_SPSR +/* 0001 0100 0001 */ TABDECL(OP_UND), +/* 0001 0100 0010 */ TABDECL(OP_UND), +/* 0001 0100 0011 */ TABDECL(OP_UND), +/* 0001 0100 0100 */ TABDECL(OP_UND), +/* 0001 0100 0101 */ TABDECL(OP_QDADD), // OP_QDADD +/* 0001 0100 0110 */ TABDECL(OP_UND), +/* 0001 0100 0111 */ TABDECL(OP_UND), +/* 0001 0100 1000 */ TABDECL(OP_SMLAL_B_B), // OP_SMLAL_B_B +/* 0001 0100 1001 */ TABDECL(OP_SWPB), // OP_SWPB +/* 0001 0100 1010 */ TABDECL(OP_SMLAL_T_B), // OP_SMLAL_T_B +/* 0001 0100 1011 */ TABDECL(OP_STRH_M_IMM_OFF), // OP_STRH_M_IMM_OFF +/* 0001 0100 1100 */ TABDECL(OP_SMLAL_B_T), // OP_SMLAL_B_T +/* 0001 0100 1101 */ TABDECL(OP_LDRD_STRD_OFFSET_PRE_INDEX), // OP_LDRD_STRD_OFFSET_PRE_INDEX +/* 0001 0100 1110 */ TABDECL(OP_SMLAL_T_T), // OP_SMLAL_T_T +/* 0001 0100 1111 */ TABDECL(OP_LDRD_STRD_OFFSET_PRE_INDEX), // OP_LDRD_STRD_OFFSET_PRE_INDEX + +/* 0001 0101 0000 */ TABDECL(OP_CMP_LSL_IMM), // OP_CMP_LSL_IMM +/* 0001 0101 0001 */ TABDECL(OP_CMP_LSL_REG), // OP_CMP_LSL_REG +/* 0001 0101 0010 */ TABDECL(OP_CMP_LSR_IMM), // OP_CMP_LSR_IMM +/* 0001 0101 0011 */ TABDECL(OP_CMP_LSR_REG), // OP_CMP_LSR_REG +/* 0001 0101 0100 */ TABDECL(OP_CMP_ASR_IMM), // OP_CMP_ASR_IMM +/* 0001 0101 0101 */ TABDECL(OP_CMP_ASR_REG), // OP_CMP_ASR_REG +/* 0001 0101 0110 */ TABDECL(OP_CMP_ROR_IMM), // OP_CMP_ROR_IMM +/* 0001 0101 0111 */ TABDECL(OP_CMP_ROR_REG), // OP_CMP_ROR_REG +/* 0001 0101 1000 */ TABDECL(OP_CMP_LSL_IMM), // OP_CMP_LSL_IMM +/* 0001 0101 1001 */ TABDECL(OP_UND), +/* 0001 0101 1010 */ TABDECL(OP_CMP_LSR_IMM), // OP_CMP_LSR_IMM +/* 0001 0101 1011 */ TABDECL(OP_LDRH_M_IMM_OFF), // OP_LDRH_M_IMM_OFF +/* 0001 0101 1100 */ TABDECL(OP_CMP_ASR_IMM), // OP_CMP_ASR_IMM +/* 0001 0101 1101 */ TABDECL(OP_LDRSB_M_IMM_OFF), // OP_LDRSB_M_IMM_OFF +/* 0001 0101 1110 */ TABDECL(OP_CMP_ROR_IMM), // OP_CMP_ROR_IMM +/* 0001 0101 1111 */ TABDECL(OP_LDRSH_M_IMM_OFF), // OP_LDRSH_M_IMM_OFF + +/* 0001 0110 0000 */ TABDECL(OP_MSR_SPSR), // OP_MSR_SPSR +/* 0001 0110 0001 */ TABDECL(OP_CLZ), // OP_CLZ +/* 0001 0110 0010 */ TABDECL(OP_UND), +/* 0001 0110 0011 */ TABDECL(OP_UND), +/* 0001 0110 0100 */ TABDECL(OP_UND), +/* 0001 0110 0101 */ TABDECL(OP_QDSUB), // OP_QDSUB +/* 0001 0110 0110 */ TABDECL(OP_UND), +/* 0001 0110 0111 */ TABDECL(OP_UND), +/* 0001 0110 1000 */ TABDECL(OP_SMUL_B_B), // OP_SMUL_B_B +/* 0001 0110 1001 */ TABDECL(OP_UND), +/* 0001 0110 1010 */ TABDECL(OP_SMUL_T_B), // OP_SMUL_T_B +/* 0001 0110 1011 */ TABDECL(OP_STRH_PRE_INDE_M_IMM_OFF), // OP_STRH_PRE_INDE_M_IMM_OFF +/* 0001 0110 1100 */ TABDECL(OP_SMUL_B_T), // OP_SMUL_B_T +/* 0001 0110 1101 */ TABDECL(OP_LDRD_STRD_OFFSET_PRE_INDEX), // OP_LDRD_STRD_OFFSET_PRE_INDEX +/* 0001 0110 1110 */ TABDECL(OP_SMUL_T_T), // OP_SMUL_T_T +/* 0001 0110 1111 */ TABDECL(OP_LDRD_STRD_OFFSET_PRE_INDEX), // OP_LDRD_STRD_OFFSET_PRE_INDEX + +/* 0001 0111 0000 */ TABDECL(OP_CMN_LSL_IMM), // OP_CMN_LSL_IMM +/* 0001 0111 0001 */ TABDECL(OP_CMN_LSL_REG), // OP_CMN_LSL_REG +/* 0001 0111 0010 */ TABDECL(OP_CMN_LSR_IMM), // OP_CMN_LSR_IMM +/* 0001 0111 0011 */ TABDECL(OP_CMN_LSR_REG), // OP_CMN_LSR_REG +/* 0001 0111 0100 */ TABDECL(OP_CMN_ASR_IMM), // OP_CMN_ASR_IMM +/* 0001 0111 0101 */ TABDECL(OP_CMN_ASR_REG), // OP_CMN_ASR_REG +/* 0001 0111 0110 */ TABDECL(OP_CMN_ROR_IMM), // OP_CMN_ROR_IMM +/* 0001 0111 0111 */ TABDECL(OP_CMN_ROR_REG), // OP_CMN_ROR_REG +/* 0001 0111 1000 */ TABDECL(OP_CMN_LSL_IMM), // OP_CMN_LSL_IMM +/* 0001 0111 1001 */ TABDECL(OP_UND), +/* 0001 0111 1010 */ TABDECL(OP_CMN_LSR_IMM), // OP_CMN_LSR_IMM +/* 0001 0111 1011 */ TABDECL(OP_LDRH_PRE_INDE_M_IMM_OFF), // OP_LDRH_PRE_INDE_M_IMM_OFF +/* 0001 0111 1100 */ TABDECL(OP_CMN_ASR_IMM), // OP_CMN_ASR_IMM +/* 0001 0111 1101 */ TABDECL(OP_LDRSB_PRE_INDE_M_IMM_OFF), // OP_LDRSB_PRE_INDE_M_IMM_OFF +/* 0001 0111 1110 */ TABDECL(OP_CMN_ROR_IMM), // OP_CMN_ROR_IMM +/* 0001 0111 1111 */ TABDECL(OP_LDRSH_PRE_INDE_M_IMM_OFF), // OP_LDRSH_PRE_INDE_M_IMM_OFF + +/* 0001 1000 0000 */ TABDECL(OP_ORR_LSL_IMM), // OP_ORR_LSL_IMM +/* 0001 1000 0001 */ TABDECL(OP_ORR_LSL_REG), // OP_ORR_LSL_REG +/* 0001 1000 0010 */ TABDECL(OP_ORR_LSR_IMM), // OP_ORR_LSR_IMM +/* 0001 1000 0011 */ TABDECL(OP_ORR_LSR_REG), // OP_ORR_LSR_REG +/* 0001 1000 0100 */ TABDECL(OP_ORR_ASR_IMM), // OP_ORR_ASR_IMM +/* 0001 1000 0101 */ TABDECL(OP_ORR_ASR_REG), // OP_ORR_ASR_REG +/* 0001 1000 0110 */ TABDECL(OP_ORR_ROR_IMM), // OP_ORR_ROR_IMM +/* 0001 1000 0111 */ TABDECL(OP_ORR_ROR_REG), // OP_ORR_ROR_REG +/* 0001 1000 1000 */ TABDECL(OP_ORR_LSL_IMM), // OP_ORR_LSL_IMM +/* 0001 1000 1001 */ TABDECL(OP_STREX), // OP_STREX +/* 0001 1000 1010 */ TABDECL(OP_ORR_LSR_IMM), // OP_ORR_LSR_IMM +/* 0001 1000 1011 */ TABDECL(OP_STRH_P_REG_OFF), // OP_STRH_P_REG_OFF +/* 0001 1000 1100 */ TABDECL(OP_ORR_ASR_IMM), // OP_ORR_ASR_IMM +/* 0001 1000 1101 */ TABDECL(OP_LDRD_STRD_OFFSET_PRE_INDEX), // OP_LDRD_STRD_OFFSET_PRE_INDEX +/* 0001 1000 1110 */ TABDECL(OP_ORR_ROR_IMM), // OP_ORR_ROR_IMM +/* 0001 1000 1111 */ TABDECL(OP_LDRD_STRD_OFFSET_PRE_INDEX), // OP_LDRD_STRD_OFFSET_PRE_INDEX + +/* 0001 1001 0000 */ TABDECL(OP_ORR_S_LSL_IMM), // OP_ORR_S_LSL_IMM +/* 0001 1001 0001 */ TABDECL(OP_ORR_S_LSL_REG), // OP_ORR_S_LSL_REG +/* 0001 1001 0010 */ TABDECL(OP_ORR_S_LSR_IMM), // OP_ORR_S_LSR_IMM +/* 0001 1001 0011 */ TABDECL(OP_ORR_S_LSR_REG), // OP_ORR_S_LSR_REG +/* 0001 1001 0100 */ TABDECL(OP_ORR_S_ASR_IMM), // OP_ORR_S_ASR_IMM +/* 0001 1001 0101 */ TABDECL(OP_ORR_S_ASR_REG), // OP_ORR_S_ASR_REG +/* 0001 1001 0110 */ TABDECL(OP_ORR_S_ROR_IMM), // OP_ORR_S_ROR_IMM +/* 0001 1001 0111 */ TABDECL(OP_ORR_S_ROR_REG), // OP_ORR_S_ROR_REG +/* 0001 1001 1000 */ TABDECL(OP_ORR_S_LSL_IMM), // OP_ORR_S_LSL_IMM +/* 0001 1001 1001 */ TABDECL(OP_LDREX), // OP_LDREX +/* 0001 1001 1010 */ TABDECL(OP_ORR_S_LSR_IMM), // OP_ORR_S_LSR_IMM +/* 0001 1001 1011 */ TABDECL(OP_LDRH_P_REG_OFF), // OP_LDRH_P_REG_OFF +/* 0001 1001 1100 */ TABDECL(OP_ORR_S_ASR_IMM), // OP_ORR_S_ASR_IMM +/* 0001 1001 1101 */ TABDECL(OP_LDRSB_P_REG_OFF), // OP_LDRSB_P_REG_OFF +/* 0001 1001 1110 */ TABDECL(OP_ORR_S_ROR_IMM), // OP_ORR_S_ROR_IMM +/* 0001 1001 1111 */ TABDECL(OP_LDRSH_P_REG_OFF), // OP_LDRSH_P_REG_OFF + +/* 0001 1010 0000 */ TABDECL(OP_MOV_LSL_IMM), // OP_MOV_LSL_IMM +/* 0001 1010 0001 */ TABDECL(OP_MOV_LSL_REG), // OP_MOV_LSL_REG +/* 0001 1010 0010 */ TABDECL(OP_MOV_LSR_IMM), // OP_MOV_LSR_IMM +/* 0001 1010 0011 */ TABDECL(OP_MOV_LSR_REG), // OP_MOV_LSR_REG +/* 0001 1010 0100 */ TABDECL(OP_MOV_ASR_IMM), // OP_MOV_ASR_IMM +/* 0001 1010 0101 */ TABDECL(OP_MOV_ASR_REG), // OP_MOV_ASR_REG +/* 0001 1010 0110 */ TABDECL(OP_MOV_ROR_IMM), // OP_MOV_ROR_IMM +/* 0001 1010 0111 */ TABDECL(OP_MOV_ROR_REG), // OP_MOV_ROR_REG +/* 0001 1010 1000 */ TABDECL(OP_MOV_LSL_IMM), // OP_MOV_LSL_IMM +/* 0001 1010 1001 */ TABDECL(OP_UND), +/* 0001 1010 1010 */ TABDECL(OP_MOV_LSR_IMM), // OP_MOV_LSR_IMM +/* 0001 1010 1011 */ TABDECL(OP_STRH_PRE_INDE_P_REG_OFF), // OP_STRH_PRE_INDE_P_REG_OFF +/* 0001 1010 1100 */ TABDECL(OP_MOV_ASR_IMM), // OP_MOV_ASR_IMM +/* 0001 1010 1101 */ TABDECL(OP_LDRD_STRD_OFFSET_PRE_INDEX), // OP_LDRD_STRD_OFFSET_PRE_INDEX +/* 0001 1010 1110 */ TABDECL(OP_MOV_ROR_IMM), // OP_MOV_ROR_IMM +/* 0001 1010 1111 */ TABDECL(OP_LDRD_STRD_OFFSET_PRE_INDEX), // OP_LDRD_STRD_OFFSET_PRE_INDEX + +/* 0001 1011 0000 */ TABDECL(OP_MOV_S_LSL_IMM), // OP_MOV_S_LSL_IMM +/* 0001 1011 0001 */ TABDECL(OP_MOV_S_LSL_REG), // OP_MOV_S_LSL_REG +/* 0001 1011 0010 */ TABDECL(OP_MOV_S_LSR_IMM), // OP_MOV_S_LSR_IMM +/* 0001 1011 0011 */ TABDECL(OP_MOV_S_LSR_REG), // OP_MOV_S_LSR_REG +/* 0001 1011 0100 */ TABDECL(OP_MOV_S_ASR_IMM), // OP_MOV_S_ASR_IMM +/* 0001 1011 0101 */ TABDECL(OP_MOV_S_ASR_REG), // OP_MOV_S_ASR_REG +/* 0001 1011 0110 */ TABDECL(OP_MOV_S_ROR_IMM), // OP_MOV_S_ROR_IMM +/* 0001 1011 0111 */ TABDECL(OP_MOV_S_ROR_REG), // OP_MOV_S_ROR_REG +/* 0001 1011 1000 */ TABDECL(OP_MOV_S_LSL_IMM), // OP_MOV_S_LSL_IMM +/* 0001 1011 1001 */ TABDECL(OP_UND), +/* 0001 1011 1010 */ TABDECL(OP_MOV_S_LSR_IMM), // OP_MOV_S_LSR_IMM +/* 0001 1011 1011 */ TABDECL(OP_LDRH_PRE_INDE_P_REG_OFF), // OP_LDRH_PRE_INDE_P_REG_OFF +/* 0001 1011 1100 */ TABDECL(OP_MOV_S_ASR_IMM), // OP_MOV_S_ASR_IMM +/* 0001 1011 1101 */ TABDECL(OP_LDRSB_PRE_INDE_P_REG_OFF), // OP_LDRSB_PRE_INDE_P_REG_OFF +/* 0001 1011 1110 */ TABDECL(OP_MOV_S_ROR_IMM), // OP_MOV_S_ROR_IMM +/* 0001 1011 1111 */ TABDECL(OP_LDRSH_PRE_INDE_P_REG_OFF), // OP_LDRSH_PRE_INDE_P_REG_OFF + +/* 0001 1100 0000 */ TABDECL(OP_BIC_LSL_IMM), // OP_BIC_LSL_IMM +/* 0001 1100 0001 */ TABDECL(OP_BIC_LSL_REG), // OP_BIC_LSL_REG +/* 0001 1100 0010 */ TABDECL(OP_BIC_LSR_IMM), // OP_BIC_LSR_IMM +/* 0001 1100 0011 */ TABDECL(OP_BIC_LSR_REG), // OP_BIC_LSR_REG +/* 0001 1100 0100 */ TABDECL(OP_BIC_ASR_IMM), // OP_BIC_ASR_IMM +/* 0001 1100 0101 */ TABDECL(OP_BIC_ASR_REG), // OP_BIC_ASR_REG +/* 0001 1100 0110 */ TABDECL(OP_BIC_ROR_IMM), // OP_BIC_ROR_IMM +/* 0001 1100 0111 */ TABDECL(OP_BIC_ROR_REG), // OP_BIC_ROR_REG +/* 0001 1100 1000 */ TABDECL(OP_BIC_LSL_IMM), // OP_BIC_LSL_IMM +/* 0001 1100 1001 */ TABDECL(OP_UND), +/* 0001 1100 1010 */ TABDECL(OP_BIC_LSR_IMM), // OP_BIC_LSR_IMM +/* 0001 1100 1011 */ TABDECL(OP_STRH_P_IMM_OFF), // OP_STRH_P_IMM_OFF +/* 0001 1100 1100 */ TABDECL(OP_BIC_ASR_IMM), // OP_BIC_ASR_IMM +/* 0001 1100 1101 */ TABDECL(OP_LDRD_STRD_OFFSET_PRE_INDEX), // OP_LDRD_STRD_OFFSET_PRE_INDEX +/* 0001 1100 1110 */ TABDECL(OP_BIC_ROR_IMM), // OP_BIC_ROR_IMM +/* 0001 1100 1111 */ TABDECL(OP_LDRD_STRD_OFFSET_PRE_INDEX), // OP_LDRD_STRD_OFFSET_PRE_INDEX + +/* 0001 1101 0000 */ TABDECL(OP_BIC_S_LSL_IMM), // OP_BIC_S_LSL_IMM +/* 0001 1101 0001 */ TABDECL(OP_BIC_S_LSL_REG), // OP_BIC_S_LSL_REG +/* 0001 1101 0010 */ TABDECL(OP_BIC_S_LSR_IMM), // OP_BIC_S_LSR_IMM +/* 0001 1101 0011 */ TABDECL(OP_BIC_S_LSR_REG), // OP_BIC_S_LSR_REG +/* 0001 1101 0100 */ TABDECL(OP_BIC_S_ASR_IMM), // OP_BIC_S_ASR_IMM +/* 0001 1101 0101 */ TABDECL(OP_BIC_S_ASR_REG), // OP_BIC_S_ASR_REG +/* 0001 1101 0110 */ TABDECL(OP_BIC_S_ROR_IMM), // OP_BIC_S_ROR_IMM +/* 0001 1101 0111 */ TABDECL(OP_BIC_S_ROR_REG), // OP_BIC_S_ROR_REG +/* 0001 1101 1000 */ TABDECL(OP_BIC_S_LSL_IMM), // OP_BIC_S_LSL_IMM +/* 0001 1101 1001 */ TABDECL(OP_UND), +/* 0001 1101 1010 */ TABDECL(OP_BIC_S_LSR_IMM), // OP_BIC_S_LSR_IMM +/* 0001 1101 1011 */ TABDECL(OP_LDRH_P_IMM_OFF), // OP_LDRH_P_IMM_OFF +/* 0001 1101 1100 */ TABDECL(OP_BIC_S_ASR_IMM), // OP_BIC_S_ASR_IMM +/* 0001 1101 1101 */ TABDECL(OP_LDRSB_P_IMM_OFF), // OP_LDRSB_P_IMM_OFF +/* 0001 1101 1110 */ TABDECL(OP_BIC_S_ROR_IMM), // OP_BIC_S_ROR_IMM +/* 0001 1101 1111 */ TABDECL(OP_LDRSH_P_IMM_OFF), // OP_LDRSH_P_IMM_OFF + +/* 0001 1110 0000 */ TABDECL(OP_MVN_LSL_IMM), // OP_MVN_LSL_IMM +/* 0001 1110 0001 */ TABDECL(OP_MVN_LSL_REG), // OP_MVN_LSL_REG +/* 0001 1110 0010 */ TABDECL(OP_MVN_LSR_IMM), // OP_MVN_LSR_IMM +/* 0001 1110 0011 */ TABDECL(OP_MVN_LSR_REG), // OP_MVN_LSR_REG +/* 0001 1110 0100 */ TABDECL(OP_MVN_ASR_IMM), // OP_MVN_ASR_IMM +/* 0001 1110 0101 */ TABDECL(OP_MVN_ASR_REG), // OP_MVN_ASR_REG +/* 0001 1110 0110 */ TABDECL(OP_MVN_ROR_IMM), // OP_MVN_ROR_IMM +/* 0001 1110 0111 */ TABDECL(OP_MVN_ROR_REG), // OP_MVN_ROR_REG +/* 0001 1110 1000 */ TABDECL(OP_MVN_LSL_IMM), // OP_MVN_LSL_IMM +/* 0001 1110 1001 */ TABDECL(OP_UND), +/* 0001 1110 1010 */ TABDECL(OP_MVN_LSR_IMM), // OP_MVN_LSR_IMM +/* 0001 1110 1011 */ TABDECL(OP_STRH_PRE_INDE_P_IMM_OFF), // OP_STRH_PRE_INDE_P_IMM_OFF +/* 0001 1110 1100 */ TABDECL(OP_MVN_ASR_IMM), // OP_MVN_ASR_IMM +/* 0001 1110 1101 */ TABDECL(OP_LDRD_STRD_OFFSET_PRE_INDEX), // OP_LDRD_STRD_OFFSET_PRE_INDEX +/* 0001 1110 1110 */ TABDECL(OP_MVN_ROR_IMM), // OP_MVN_ROR_IMM +/* 0001 1110 1111 */ TABDECL(OP_LDRD_STRD_OFFSET_PRE_INDEX), // OP_LDRD_STRD_OFFSET_PRE_INDEX + +/* 0001 1111 0000 */ TABDECL(OP_MVN_S_LSL_IMM), // OP_MVN_S_LSL_IMM +/* 0001 1111 0001 */ TABDECL(OP_MVN_S_LSL_REG), // OP_MVN_S_LSL_REG +/* 0001 1111 0010 */ TABDECL(OP_MVN_S_LSR_IMM), // OP_MVN_S_LSR_IMM +/* 0001 1111 0011 */ TABDECL(OP_MVN_S_LSR_REG), // OP_MVN_S_LSR_REG +/* 0001 1111 0100 */ TABDECL(OP_MVN_S_ASR_IMM), // OP_MVN_S_ASR_IMM +/* 0001 1111 0101 */ TABDECL(OP_MVN_S_ASR_REG), // OP_MVN_S_ASR_REG +/* 0001 1111 0110 */ TABDECL(OP_MVN_S_ROR_IMM), // OP_MVN_S_ROR_IMM +/* 0001 1111 0111 */ TABDECL(OP_MVN_S_ROR_REG), // OP_MVN_S_ROR_REG +/* 0001 1111 1000 */ TABDECL(OP_MVN_S_LSL_IMM), // OP_MVN_S_LSL_IMM +/* 0001 1111 1001 */ TABDECL(OP_UND), +/* 0001 1111 1010 */ TABDECL(OP_MVN_S_LSR_IMM), // OP_MVN_S_LSR_IMM +/* 0001 1111 1011 */ TABDECL(OP_LDRH_PRE_INDE_P_IMM_OFF), // OP_LDRH_PRE_INDE_P_IMM_OFF +/* 0001 1111 1100 */ TABDECL(OP_MVN_S_ASR_IMM), // OP_MVN_S_ASR_IMM +/* 0001 1111 1101 */ TABDECL(OP_LDRSB_PRE_INDE_P_IMM_OFF), // OP_LDRSB_PRE_INDE_P_IMM_OFF +/* 0001 1111 1110 */ TABDECL(OP_MVN_S_ROR_IMM), // OP_MVN_S_ROR_IMM +/* 0001 1111 1111 */ TABDECL(OP_LDRSH_PRE_INDE_P_IMM_OFF), // OP_LDRSH_PRE_INDE_P_IMM_OFF + +/* 0010 0000 0000 */ TABDECL(OP_AND_IMM_VAL), // OP_AND_IMM_VAL +/* 0010 0000 0001 */ TABDECL(OP_AND_IMM_VAL), // OP_AND_IMM_VAL +/* 0010 0000 0010 */ TABDECL(OP_AND_IMM_VAL), // OP_AND_IMM_VAL +/* 0010 0000 0011 */ TABDECL(OP_AND_IMM_VAL), // OP_AND_IMM_VAL +/* 0010 0000 0100 */ TABDECL(OP_AND_IMM_VAL), // OP_AND_IMM_VAL +/* 0010 0000 0101 */ TABDECL(OP_AND_IMM_VAL), // OP_AND_IMM_VAL +/* 0010 0000 0110 */ TABDECL(OP_AND_IMM_VAL), // OP_AND_IMM_VAL +/* 0010 0000 0111 */ TABDECL(OP_AND_IMM_VAL), // OP_AND_IMM_VAL +/* 0010 0000 1000 */ TABDECL(OP_AND_IMM_VAL), // OP_AND_IMM_VAL +/* 0010 0000 1001 */ TABDECL(OP_AND_IMM_VAL), // OP_AND_IMM_VAL +/* 0010 0000 1010 */ TABDECL(OP_AND_IMM_VAL), // OP_AND_IMM_VAL +/* 0010 0000 1011 */ TABDECL(OP_AND_IMM_VAL), // OP_AND_IMM_VAL +/* 0010 0000 1100 */ TABDECL(OP_AND_IMM_VAL), // OP_AND_IMM_VAL +/* 0010 0000 1101 */ TABDECL(OP_AND_IMM_VAL), // OP_AND_IMM_VAL +/* 0010 0000 1110 */ TABDECL(OP_AND_IMM_VAL), // OP_AND_IMM_VAL +/* 0010 0000 1111 */ TABDECL(OP_AND_IMM_VAL), // OP_AND_IMM_VAL + +/* 0010 0001 0000 */ TABDECL(OP_AND_S_IMM_VAL), // OP_AND_S_IMM_VAL +/* 0010 0001 0001 */ TABDECL(OP_AND_S_IMM_VAL), // OP_AND_S_IMM_VAL +/* 0010 0001 0010 */ TABDECL(OP_AND_S_IMM_VAL), // OP_AND_S_IMM_VAL +/* 0010 0001 0011 */ TABDECL(OP_AND_S_IMM_VAL), // OP_AND_S_IMM_VAL +/* 0010 0001 0100 */ TABDECL(OP_AND_S_IMM_VAL), // OP_AND_S_IMM_VAL +/* 0010 0001 0101 */ TABDECL(OP_AND_S_IMM_VAL), // OP_AND_S_IMM_VAL +/* 0010 0001 0110 */ TABDECL(OP_AND_S_IMM_VAL), // OP_AND_S_IMM_VAL +/* 0010 0001 0111 */ TABDECL(OP_AND_S_IMM_VAL), // OP_AND_S_IMM_VAL +/* 0010 0001 1000 */ TABDECL(OP_AND_S_IMM_VAL), // OP_AND_S_IMM_VAL +/* 0010 0001 1001 */ TABDECL(OP_AND_S_IMM_VAL), // OP_AND_S_IMM_VAL +/* 0010 0001 1010 */ TABDECL(OP_AND_S_IMM_VAL), // OP_AND_S_IMM_VAL +/* 0010 0001 1011 */ TABDECL(OP_AND_S_IMM_VAL), // OP_AND_S_IMM_VAL +/* 0010 0001 1100 */ TABDECL(OP_AND_S_IMM_VAL), // OP_AND_S_IMM_VAL +/* 0010 0001 1101 */ TABDECL(OP_AND_S_IMM_VAL), // OP_AND_S_IMM_VAL +/* 0010 0001 1110 */ TABDECL(OP_AND_S_IMM_VAL), // OP_AND_S_IMM_VAL +/* 0010 0001 1111 */ TABDECL(OP_AND_S_IMM_VAL), // OP_AND_S_IMM_VAL + +/* 0010 0010 0000 */ TABDECL(OP_EOR_IMM_VAL), // OP_EOR_IMM_VAL +/* 0010 0010 0001 */ TABDECL(OP_EOR_IMM_VAL), // OP_EOR_IMM_VAL +/* 0010 0010 0010 */ TABDECL(OP_EOR_IMM_VAL), // OP_EOR_IMM_VAL +/* 0010 0010 0011 */ TABDECL(OP_EOR_IMM_VAL), // OP_EOR_IMM_VAL +/* 0010 0010 0100 */ TABDECL(OP_EOR_IMM_VAL), // OP_EOR_IMM_VAL +/* 0010 0010 0101 */ TABDECL(OP_EOR_IMM_VAL), // OP_EOR_IMM_VAL +/* 0010 0010 0110 */ TABDECL(OP_EOR_IMM_VAL), // OP_EOR_IMM_VAL +/* 0010 0010 0111 */ TABDECL(OP_EOR_IMM_VAL), // OP_EOR_IMM_VAL +/* 0010 0010 1000 */ TABDECL(OP_EOR_IMM_VAL), // OP_EOR_IMM_VAL +/* 0010 0010 1001 */ TABDECL(OP_EOR_IMM_VAL), // OP_EOR_IMM_VAL +/* 0010 0010 1010 */ TABDECL(OP_EOR_IMM_VAL), // OP_EOR_IMM_VAL +/* 0010 0010 1011 */ TABDECL(OP_EOR_IMM_VAL), // OP_EOR_IMM_VAL +/* 0010 0010 1100 */ TABDECL(OP_EOR_IMM_VAL), // OP_EOR_IMM_VAL +/* 0010 0010 1101 */ TABDECL(OP_EOR_IMM_VAL), // OP_EOR_IMM_VAL +/* 0010 0010 1110 */ TABDECL(OP_EOR_IMM_VAL), // OP_EOR_IMM_VAL +/* 0010 0010 1111 */ TABDECL(OP_EOR_IMM_VAL), // OP_EOR_IMM_VAL + +/* 0010 0011 0000 */ TABDECL(OP_EOR_S_IMM_VAL), // OP_EOR_S_IMM_VAL +/* 0010 0011 0001 */ TABDECL(OP_EOR_S_IMM_VAL), // OP_EOR_S_IMM_VAL +/* 0010 0011 0010 */ TABDECL(OP_EOR_S_IMM_VAL), // OP_EOR_S_IMM_VAL +/* 0010 0011 0011 */ TABDECL(OP_EOR_S_IMM_VAL), // OP_EOR_S_IMM_VAL +/* 0010 0011 0100 */ TABDECL(OP_EOR_S_IMM_VAL), // OP_EOR_S_IMM_VAL +/* 0010 0011 0101 */ TABDECL(OP_EOR_S_IMM_VAL), // OP_EOR_S_IMM_VAL +/* 0010 0011 0110 */ TABDECL(OP_EOR_S_IMM_VAL), // OP_EOR_S_IMM_VAL +/* 0010 0011 0111 */ TABDECL(OP_EOR_S_IMM_VAL), // OP_EOR_S_IMM_VAL +/* 0010 0011 1000 */ TABDECL(OP_EOR_S_IMM_VAL), // OP_EOR_S_IMM_VAL +/* 0010 0011 1001 */ TABDECL(OP_EOR_S_IMM_VAL), // OP_EOR_S_IMM_VAL +/* 0010 0011 1010 */ TABDECL(OP_EOR_S_IMM_VAL), // OP_EOR_S_IMM_VAL +/* 0010 0011 1011 */ TABDECL(OP_EOR_S_IMM_VAL), // OP_EOR_S_IMM_VAL +/* 0010 0011 1100 */ TABDECL(OP_EOR_S_IMM_VAL), // OP_EOR_S_IMM_VAL +/* 0010 0011 1101 */ TABDECL(OP_EOR_S_IMM_VAL), // OP_EOR_S_IMM_VAL +/* 0010 0011 1110 */ TABDECL(OP_EOR_S_IMM_VAL), // OP_EOR_S_IMM_VAL +/* 0010 0011 1111 */ TABDECL(OP_EOR_S_IMM_VAL), // OP_EOR_S_IMM_VAL + +/* 0010 0100 0000 */ TABDECL(OP_SUB_IMM_VAL), // OP_SUB_IMM_VAL +/* 0010 0100 0001 */ TABDECL(OP_SUB_IMM_VAL), // OP_SUB_IMM_VAL +/* 0010 0100 0010 */ TABDECL(OP_SUB_IMM_VAL), // OP_SUB_IMM_VAL +/* 0010 0100 0011 */ TABDECL(OP_SUB_IMM_VAL), // OP_SUB_IMM_VAL +/* 0010 0100 0100 */ TABDECL(OP_SUB_IMM_VAL), // OP_SUB_IMM_VAL +/* 0010 0100 0101 */ TABDECL(OP_SUB_IMM_VAL), // OP_SUB_IMM_VAL +/* 0010 0100 0110 */ TABDECL(OP_SUB_IMM_VAL), // OP_SUB_IMM_VAL +/* 0010 0100 0111 */ TABDECL(OP_SUB_IMM_VAL), // OP_SUB_IMM_VAL +/* 0010 0100 1000 */ TABDECL(OP_SUB_IMM_VAL), // OP_SUB_IMM_VAL +/* 0010 0100 1001 */ TABDECL(OP_SUB_IMM_VAL), // OP_SUB_IMM_VAL +/* 0010 0100 1010 */ TABDECL(OP_SUB_IMM_VAL), // OP_SUB_IMM_VAL +/* 0010 0100 1011 */ TABDECL(OP_SUB_IMM_VAL), // OP_SUB_IMM_VAL +/* 0010 0100 1100 */ TABDECL(OP_SUB_IMM_VAL), // OP_SUB_IMM_VAL +/* 0010 0100 1101 */ TABDECL(OP_SUB_IMM_VAL), // OP_SUB_IMM_VAL +/* 0010 0100 1110 */ TABDECL(OP_SUB_IMM_VAL), // OP_SUB_IMM_VAL +/* 0010 0100 1111 */ TABDECL(OP_SUB_IMM_VAL), // OP_SUB_IMM_VAL + +/* 0010 0101 0000 */ TABDECL(OP_SUB_S_IMM_VAL), // OP_SUB_S_IMM_VAL +/* 0010 0101 0001 */ TABDECL(OP_SUB_S_IMM_VAL), // OP_SUB_S_IMM_VAL +/* 0010 0101 0010 */ TABDECL(OP_SUB_S_IMM_VAL), // OP_SUB_S_IMM_VAL +/* 0010 0101 0011 */ TABDECL(OP_SUB_S_IMM_VAL), // OP_SUB_S_IMM_VAL +/* 0010 0101 0100 */ TABDECL(OP_SUB_S_IMM_VAL), // OP_SUB_S_IMM_VAL +/* 0010 0101 0101 */ TABDECL(OP_SUB_S_IMM_VAL), // OP_SUB_S_IMM_VAL +/* 0010 0101 0110 */ TABDECL(OP_SUB_S_IMM_VAL), // OP_SUB_S_IMM_VAL +/* 0010 0101 0111 */ TABDECL(OP_SUB_S_IMM_VAL), // OP_SUB_S_IMM_VAL +/* 0010 0101 1000 */ TABDECL(OP_SUB_S_IMM_VAL), // OP_SUB_S_IMM_VAL +/* 0010 0101 1001 */ TABDECL(OP_SUB_S_IMM_VAL), // OP_SUB_S_IMM_VAL +/* 0010 0101 1010 */ TABDECL(OP_SUB_S_IMM_VAL), // OP_SUB_S_IMM_VAL +/* 0010 0101 1011 */ TABDECL(OP_SUB_S_IMM_VAL), // OP_SUB_S_IMM_VAL +/* 0010 0101 1100 */ TABDECL(OP_SUB_S_IMM_VAL), // OP_SUB_S_IMM_VAL +/* 0010 0101 1101 */ TABDECL(OP_SUB_S_IMM_VAL), // OP_SUB_S_IMM_VAL +/* 0010 0101 1110 */ TABDECL(OP_SUB_S_IMM_VAL), // OP_SUB_S_IMM_VAL +/* 0010 0101 1111 */ TABDECL(OP_SUB_S_IMM_VAL), // OP_SUB_S_IMM_VAL + +/* 0010 0110 0000 */ TABDECL(OP_RSB_IMM_VAL), // OP_RSB_IMM_VAL +/* 0010 0110 0001 */ TABDECL(OP_RSB_IMM_VAL), // OP_RSB_IMM_VAL +/* 0010 0110 0010 */ TABDECL(OP_RSB_IMM_VAL), // OP_RSB_IMM_VAL +/* 0010 0110 0011 */ TABDECL(OP_RSB_IMM_VAL), // OP_RSB_IMM_VAL +/* 0010 0110 0100 */ TABDECL(OP_RSB_IMM_VAL), // OP_RSB_IMM_VAL +/* 0010 0110 0101 */ TABDECL(OP_RSB_IMM_VAL), // OP_RSB_IMM_VAL +/* 0010 0110 0110 */ TABDECL(OP_RSB_IMM_VAL), // OP_RSB_IMM_VAL +/* 0010 0110 0111 */ TABDECL(OP_RSB_IMM_VAL), // OP_RSB_IMM_VAL +/* 0010 0110 1000 */ TABDECL(OP_RSB_IMM_VAL), // OP_RSB_IMM_VAL +/* 0010 0110 1001 */ TABDECL(OP_RSB_IMM_VAL), // OP_RSB_IMM_VAL +/* 0010 0110 1010 */ TABDECL(OP_RSB_IMM_VAL), // OP_RSB_IMM_VAL +/* 0010 0110 1011 */ TABDECL(OP_RSB_IMM_VAL), // OP_RSB_IMM_VAL +/* 0010 0110 1100 */ TABDECL(OP_RSB_IMM_VAL), // OP_RSB_IMM_VAL +/* 0010 0110 1101 */ TABDECL(OP_RSB_IMM_VAL), // OP_RSB_IMM_VAL +/* 0010 0110 1110 */ TABDECL(OP_RSB_IMM_VAL), // OP_RSB_IMM_VAL +/* 0010 0110 1111 */ TABDECL(OP_RSB_IMM_VAL), // OP_RSB_IMM_VAL + +/* 0010 0111 0000 */ TABDECL(OP_RSB_S_IMM_VAL), // OP_RSB_S_IMM_VAL +/* 0010 0111 0001 */ TABDECL(OP_RSB_S_IMM_VAL), // OP_RSB_S_IMM_VAL +/* 0010 0111 0010 */ TABDECL(OP_RSB_S_IMM_VAL), // OP_RSB_S_IMM_VAL +/* 0010 0111 0011 */ TABDECL(OP_RSB_S_IMM_VAL), // OP_RSB_S_IMM_VAL +/* 0010 0111 0100 */ TABDECL(OP_RSB_S_IMM_VAL), // OP_RSB_S_IMM_VAL +/* 0010 0111 0101 */ TABDECL(OP_RSB_S_IMM_VAL), // OP_RSB_S_IMM_VAL +/* 0010 0111 0110 */ TABDECL(OP_RSB_S_IMM_VAL), // OP_RSB_S_IMM_VAL +/* 0010 0111 0111 */ TABDECL(OP_RSB_S_IMM_VAL), // OP_RSB_S_IMM_VAL +/* 0010 0111 1000 */ TABDECL(OP_RSB_S_IMM_VAL), // OP_RSB_S_IMM_VAL +/* 0010 0111 1001 */ TABDECL(OP_RSB_S_IMM_VAL), // OP_RSB_S_IMM_VAL +/* 0010 0111 1010 */ TABDECL(OP_RSB_S_IMM_VAL), // OP_RSB_S_IMM_VAL +/* 0010 0111 1011 */ TABDECL(OP_RSB_S_IMM_VAL), // OP_RSB_S_IMM_VAL +/* 0010 0111 1100 */ TABDECL(OP_RSB_S_IMM_VAL), // OP_RSB_S_IMM_VAL +/* 0010 0111 1101 */ TABDECL(OP_RSB_S_IMM_VAL), // OP_RSB_S_IMM_VAL +/* 0010 0111 1110 */ TABDECL(OP_RSB_S_IMM_VAL), // OP_RSB_S_IMM_VAL +/* 0010 0111 1111 */ TABDECL(OP_RSB_S_IMM_VAL), // OP_RSB_S_IMM_VAL + +/* 0010 1000 0000 */ TABDECL(OP_ADD_IMM_VAL), // OP_ADD_IMM_VAL +/* 0010 1000 0001 */ TABDECL(OP_ADD_IMM_VAL), // OP_ADD_IMM_VAL +/* 0010 1000 0010 */ TABDECL(OP_ADD_IMM_VAL), // OP_ADD_IMM_VAL +/* 0010 1000 0011 */ TABDECL(OP_ADD_IMM_VAL), // OP_ADD_IMM_VAL +/* 0010 1000 0100 */ TABDECL(OP_ADD_IMM_VAL), // OP_ADD_IMM_VAL +/* 0010 1000 0101 */ TABDECL(OP_ADD_IMM_VAL), // OP_ADD_IMM_VAL +/* 0010 1000 0110 */ TABDECL(OP_ADD_IMM_VAL), // OP_ADD_IMM_VAL +/* 0010 1000 0111 */ TABDECL(OP_ADD_IMM_VAL), // OP_ADD_IMM_VAL +/* 0010 1000 1000 */ TABDECL(OP_ADD_IMM_VAL), // OP_ADD_IMM_VAL +/* 0010 1000 1001 */ TABDECL(OP_ADD_IMM_VAL), // OP_ADD_IMM_VAL +/* 0010 1000 1010 */ TABDECL(OP_ADD_IMM_VAL), // OP_ADD_IMM_VAL +/* 0010 1000 1011 */ TABDECL(OP_ADD_IMM_VAL), // OP_ADD_IMM_VAL +/* 0010 1000 1100 */ TABDECL(OP_ADD_IMM_VAL), // OP_ADD_IMM_VAL +/* 0010 1000 1101 */ TABDECL(OP_ADD_IMM_VAL), // OP_ADD_IMM_VAL +/* 0010 1000 1110 */ TABDECL(OP_ADD_IMM_VAL), // OP_ADD_IMM_VAL +/* 0010 1000 1111 */ TABDECL(OP_ADD_IMM_VAL), // OP_ADD_IMM_VAL + +/* 0010 1001 0000 */ TABDECL(OP_ADD_S_IMM_VAL), // OP_ADD_S_IMM_VAL +/* 0010 1001 0001 */ TABDECL(OP_ADD_S_IMM_VAL), // OP_ADD_S_IMM_VAL +/* 0010 1001 0010 */ TABDECL(OP_ADD_S_IMM_VAL), // OP_ADD_S_IMM_VAL +/* 0010 1001 0011 */ TABDECL(OP_ADD_S_IMM_VAL), // OP_ADD_S_IMM_VAL +/* 0010 1001 0100 */ TABDECL(OP_ADD_S_IMM_VAL), // OP_ADD_S_IMM_VAL +/* 0010 1001 0101 */ TABDECL(OP_ADD_S_IMM_VAL), // OP_ADD_S_IMM_VAL +/* 0010 1001 0110 */ TABDECL(OP_ADD_S_IMM_VAL), // OP_ADD_S_IMM_VAL +/* 0010 1001 0111 */ TABDECL(OP_ADD_S_IMM_VAL), // OP_ADD_S_IMM_VAL +/* 0010 1001 1000 */ TABDECL(OP_ADD_S_IMM_VAL), // OP_ADD_S_IMM_VAL +/* 0010 1001 1001 */ TABDECL(OP_ADD_S_IMM_VAL), // OP_ADD_S_IMM_VAL +/* 0010 1001 1010 */ TABDECL(OP_ADD_S_IMM_VAL), // OP_ADD_S_IMM_VAL +/* 0010 1001 1011 */ TABDECL(OP_ADD_S_IMM_VAL), // OP_ADD_S_IMM_VAL +/* 0010 1001 1100 */ TABDECL(OP_ADD_S_IMM_VAL), // OP_ADD_S_IMM_VAL +/* 0010 1001 1101 */ TABDECL(OP_ADD_S_IMM_VAL), // OP_ADD_S_IMM_VAL +/* 0010 1001 1110 */ TABDECL(OP_ADD_S_IMM_VAL), // OP_ADD_S_IMM_VAL +/* 0010 1001 1111 */ TABDECL(OP_ADD_S_IMM_VAL), // OP_ADD_S_IMM_VAL + +/* 0010 1010 0000 */ TABDECL(OP_ADC_IMM_VAL), // OP_ADC_IMM_VAL +/* 0010 1010 0001 */ TABDECL(OP_ADC_IMM_VAL), // OP_ADC_IMM_VAL +/* 0010 1010 0010 */ TABDECL(OP_ADC_IMM_VAL), // OP_ADC_IMM_VAL +/* 0010 1010 0011 */ TABDECL(OP_ADC_IMM_VAL), // OP_ADC_IMM_VAL +/* 0010 1010 0100 */ TABDECL(OP_ADC_IMM_VAL), // OP_ADC_IMM_VAL +/* 0010 1010 0101 */ TABDECL(OP_ADC_IMM_VAL), // OP_ADC_IMM_VAL +/* 0010 1010 0110 */ TABDECL(OP_ADC_IMM_VAL), // OP_ADC_IMM_VAL +/* 0010 1010 0111 */ TABDECL(OP_ADC_IMM_VAL), // OP_ADC_IMM_VAL +/* 0010 1010 1000 */ TABDECL(OP_ADC_IMM_VAL), // OP_ADC_IMM_VAL +/* 0010 1010 1001 */ TABDECL(OP_ADC_IMM_VAL), // OP_ADC_IMM_VAL +/* 0010 1010 1010 */ TABDECL(OP_ADC_IMM_VAL), // OP_ADC_IMM_VAL +/* 0010 1010 1011 */ TABDECL(OP_ADC_IMM_VAL), // OP_ADC_IMM_VAL +/* 0010 1010 1100 */ TABDECL(OP_ADC_IMM_VAL), // OP_ADC_IMM_VAL +/* 0010 1010 1101 */ TABDECL(OP_ADC_IMM_VAL), // OP_ADC_IMM_VAL +/* 0010 1010 1110 */ TABDECL(OP_ADC_IMM_VAL), // OP_ADC_IMM_VAL +/* 0010 1010 1111 */ TABDECL(OP_ADC_IMM_VAL), // OP_ADC_IMM_VAL + +/* 0010 1011 0000 */ TABDECL(OP_ADC_S_IMM_VAL), // OP_ADC_S_IMM_VAL +/* 0010 1011 0001 */ TABDECL(OP_ADC_S_IMM_VAL), // OP_ADC_S_IMM_VAL +/* 0010 1011 0010 */ TABDECL(OP_ADC_S_IMM_VAL), // OP_ADC_S_IMM_VAL +/* 0010 1011 0011 */ TABDECL(OP_ADC_S_IMM_VAL), // OP_ADC_S_IMM_VAL +/* 0010 1011 0100 */ TABDECL(OP_ADC_S_IMM_VAL), // OP_ADC_S_IMM_VAL +/* 0010 1011 0101 */ TABDECL(OP_ADC_S_IMM_VAL), // OP_ADC_S_IMM_VAL +/* 0010 1011 0110 */ TABDECL(OP_ADC_S_IMM_VAL), // OP_ADC_S_IMM_VAL +/* 0010 1011 0111 */ TABDECL(OP_ADC_S_IMM_VAL), // OP_ADC_S_IMM_VAL +/* 0010 1011 1000 */ TABDECL(OP_ADC_S_IMM_VAL), // OP_ADC_S_IMM_VAL +/* 0010 1011 1001 */ TABDECL(OP_ADC_S_IMM_VAL), // OP_ADC_S_IMM_VAL +/* 0010 1011 1010 */ TABDECL(OP_ADC_S_IMM_VAL), // OP_ADC_S_IMM_VAL +/* 0010 1011 1011 */ TABDECL(OP_ADC_S_IMM_VAL), // OP_ADC_S_IMM_VAL +/* 0010 1011 1100 */ TABDECL(OP_ADC_S_IMM_VAL), // OP_ADC_S_IMM_VAL +/* 0010 1011 1101 */ TABDECL(OP_ADC_S_IMM_VAL), // OP_ADC_S_IMM_VAL +/* 0010 1011 1110 */ TABDECL(OP_ADC_S_IMM_VAL), // OP_ADC_S_IMM_VAL +/* 0010 1011 1111 */ TABDECL(OP_ADC_S_IMM_VAL), // OP_ADC_S_IMM_VAL + +/* 0010 1100 0000 */ TABDECL(OP_SBC_IMM_VAL), // OP_SBC_IMM_VAL +/* 0010 1100 0001 */ TABDECL(OP_SBC_IMM_VAL), // OP_SBC_IMM_VAL +/* 0010 1100 0010 */ TABDECL(OP_SBC_IMM_VAL), // OP_SBC_IMM_VAL +/* 0010 1100 0011 */ TABDECL(OP_SBC_IMM_VAL), // OP_SBC_IMM_VAL +/* 0010 1100 0100 */ TABDECL(OP_SBC_IMM_VAL), // OP_SBC_IMM_VAL +/* 0010 1100 0101 */ TABDECL(OP_SBC_IMM_VAL), // OP_SBC_IMM_VAL +/* 0010 1100 0110 */ TABDECL(OP_SBC_IMM_VAL), // OP_SBC_IMM_VAL +/* 0010 1100 0111 */ TABDECL(OP_SBC_IMM_VAL), // OP_SBC_IMM_VAL +/* 0010 1100 1000 */ TABDECL(OP_SBC_IMM_VAL), // OP_SBC_IMM_VAL +/* 0010 1100 1001 */ TABDECL(OP_SBC_IMM_VAL), // OP_SBC_IMM_VAL +/* 0010 1100 1010 */ TABDECL(OP_SBC_IMM_VAL), // OP_SBC_IMM_VAL +/* 0010 1100 1011 */ TABDECL(OP_SBC_IMM_VAL), // OP_SBC_IMM_VAL +/* 0010 1100 1100 */ TABDECL(OP_SBC_IMM_VAL), // OP_SBC_IMM_VAL +/* 0010 1100 1101 */ TABDECL(OP_SBC_IMM_VAL), // OP_SBC_IMM_VAL +/* 0010 1100 1110 */ TABDECL(OP_SBC_IMM_VAL), // OP_SBC_IMM_VAL +/* 0010 1100 1111 */ TABDECL(OP_SBC_IMM_VAL), // OP_SBC_IMM_VAL + +/* 0010 1101 0000 */ TABDECL(OP_SBC_S_IMM_VAL), // OP_SBC_S_IMM_VAL +/* 0010 1101 0001 */ TABDECL(OP_SBC_S_IMM_VAL), // OP_SBC_S_IMM_VAL +/* 0010 1101 0010 */ TABDECL(OP_SBC_S_IMM_VAL), // OP_SBC_S_IMM_VAL +/* 0010 1101 0011 */ TABDECL(OP_SBC_S_IMM_VAL), // OP_SBC_S_IMM_VAL +/* 0010 1101 0100 */ TABDECL(OP_SBC_S_IMM_VAL), // OP_SBC_S_IMM_VAL +/* 0010 1101 0101 */ TABDECL(OP_SBC_S_IMM_VAL), // OP_SBC_S_IMM_VAL +/* 0010 1101 0110 */ TABDECL(OP_SBC_S_IMM_VAL), // OP_SBC_S_IMM_VAL +/* 0010 1101 0111 */ TABDECL(OP_SBC_S_IMM_VAL), // OP_SBC_S_IMM_VAL +/* 0010 1101 1000 */ TABDECL(OP_SBC_S_IMM_VAL), // OP_SBC_S_IMM_VAL +/* 0010 1101 1001 */ TABDECL(OP_SBC_S_IMM_VAL), // OP_SBC_S_IMM_VAL +/* 0010 1101 1010 */ TABDECL(OP_SBC_S_IMM_VAL), // OP_SBC_S_IMM_VAL +/* 0010 1101 1011 */ TABDECL(OP_SBC_S_IMM_VAL), // OP_SBC_S_IMM_VAL +/* 0010 1101 1100 */ TABDECL(OP_SBC_S_IMM_VAL), // OP_SBC_S_IMM_VAL +/* 0010 1101 1101 */ TABDECL(OP_SBC_S_IMM_VAL), // OP_SBC_S_IMM_VAL +/* 0010 1101 1110 */ TABDECL(OP_SBC_S_IMM_VAL), // OP_SBC_S_IMM_VAL +/* 0010 1101 1111 */ TABDECL(OP_SBC_S_IMM_VAL), // OP_SBC_S_IMM_VAL + +/* 0010 1110 0000 */ TABDECL(OP_RSC_IMM_VAL), // OP_RSC_IMM_VAL +/* 0010 1110 0001 */ TABDECL(OP_RSC_IMM_VAL), // OP_RSC_IMM_VAL +/* 0010 1110 0010 */ TABDECL(OP_RSC_IMM_VAL), // OP_RSC_IMM_VAL +/* 0010 1110 0011 */ TABDECL(OP_RSC_IMM_VAL), // OP_RSC_IMM_VAL +/* 0010 1110 0100 */ TABDECL(OP_RSC_IMM_VAL), // OP_RSC_IMM_VAL +/* 0010 1110 0101 */ TABDECL(OP_RSC_IMM_VAL), // OP_RSC_IMM_VAL +/* 0010 1110 0110 */ TABDECL(OP_RSC_IMM_VAL), // OP_RSC_IMM_VAL +/* 0010 1110 0111 */ TABDECL(OP_RSC_IMM_VAL), // OP_RSC_IMM_VAL +/* 0010 1110 1000 */ TABDECL(OP_RSC_IMM_VAL), // OP_RSC_IMM_VAL +/* 0010 1110 1001 */ TABDECL(OP_RSC_IMM_VAL), // OP_RSC_IMM_VAL +/* 0010 1110 1010 */ TABDECL(OP_RSC_IMM_VAL), // OP_RSC_IMM_VAL +/* 0010 1110 1011 */ TABDECL(OP_RSC_IMM_VAL), // OP_RSC_IMM_VAL +/* 0010 1110 1100 */ TABDECL(OP_RSC_IMM_VAL), // OP_RSC_IMM_VAL +/* 0010 1110 1101 */ TABDECL(OP_RSC_IMM_VAL), // OP_RSC_IMM_VAL +/* 0010 1110 1110 */ TABDECL(OP_RSC_IMM_VAL), // OP_RSC_IMM_VAL +/* 0010 1110 1111 */ TABDECL(OP_RSC_IMM_VAL), // OP_RSC_IMM_VAL + +/* 0010 1111 0000 */ TABDECL(OP_RSC_S_IMM_VAL), // OP_RSC_S_IMM_VAL +/* 0010 1111 0001 */ TABDECL(OP_RSC_S_IMM_VAL), // OP_RSC_S_IMM_VAL +/* 0010 1111 0010 */ TABDECL(OP_RSC_S_IMM_VAL), // OP_RSC_S_IMM_VAL +/* 0010 1111 0011 */ TABDECL(OP_RSC_S_IMM_VAL), // OP_RSC_S_IMM_VAL +/* 0010 1111 0100 */ TABDECL(OP_RSC_S_IMM_VAL), // OP_RSC_S_IMM_VAL +/* 0010 1111 0101 */ TABDECL(OP_RSC_S_IMM_VAL), // OP_RSC_S_IMM_VAL +/* 0010 1111 0110 */ TABDECL(OP_RSC_S_IMM_VAL), // OP_RSC_S_IMM_VAL +/* 0010 1111 0111 */ TABDECL(OP_RSC_S_IMM_VAL), // OP_RSC_S_IMM_VAL +/* 0010 1111 1000 */ TABDECL(OP_RSC_S_IMM_VAL), // OP_RSC_S_IMM_VAL +/* 0010 1111 1001 */ TABDECL(OP_RSC_S_IMM_VAL), // OP_RSC_S_IMM_VAL +/* 0010 1111 1010 */ TABDECL(OP_RSC_S_IMM_VAL), // OP_RSC_S_IMM_VAL +/* 0010 1111 1011 */ TABDECL(OP_RSC_S_IMM_VAL), // OP_RSC_S_IMM_VAL +/* 0010 1111 1100 */ TABDECL(OP_RSC_S_IMM_VAL), // OP_RSC_S_IMM_VAL +/* 0010 1111 1101 */ TABDECL(OP_RSC_S_IMM_VAL), // OP_RSC_S_IMM_VAL +/* 0010 1111 1110 */ TABDECL(OP_RSC_S_IMM_VAL), // OP_RSC_S_IMM_VAL +/* 0010 1111 1111 */ TABDECL(OP_RSC_S_IMM_VAL), // OP_RSC_S_IMM_VAL + +/* 0011 0000 0000 */ TABDECL(OP_UND), +/* 0011 0000 0001 */ TABDECL(OP_UND), +/* 0011 0000 0010 */ TABDECL(OP_UND), +/* 0011 0000 0011 */ TABDECL(OP_UND), +/* 0011 0000 0100 */ TABDECL(OP_UND), +/* 0011 0000 0101 */ TABDECL(OP_UND), +/* 0011 0000 0110 */ TABDECL(OP_UND), +/* 0011 0000 0111 */ TABDECL(OP_UND), +/* 0011 0000 1000 */ TABDECL(OP_UND), +/* 0011 0000 1001 */ TABDECL(OP_UND), +/* 0011 0000 1010 */ TABDECL(OP_UND), +/* 0011 0000 1011 */ TABDECL(OP_UND), +/* 0011 0000 1100 */ TABDECL(OP_UND), +/* 0011 0000 1101 */ TABDECL(OP_UND), +/* 0011 0000 1110 */ TABDECL(OP_UND), +/* 0011 0000 1111 */ TABDECL(OP_UND), + +/* 0011 0001 0000 */ TABDECL(OP_TST_IMM_VAL), // OP_TST_IMM_VAL +/* 0011 0001 0001 */ TABDECL(OP_TST_IMM_VAL), // OP_TST_IMM_VAL +/* 0011 0001 0010 */ TABDECL(OP_TST_IMM_VAL), // OP_TST_IMM_VAL +/* 0011 0001 0011 */ TABDECL(OP_TST_IMM_VAL), // OP_TST_IMM_VAL +/* 0011 0001 0100 */ TABDECL(OP_TST_IMM_VAL), // OP_TST_IMM_VAL +/* 0011 0001 0101 */ TABDECL(OP_TST_IMM_VAL), // OP_TST_IMM_VAL +/* 0011 0001 0110 */ TABDECL(OP_TST_IMM_VAL), // OP_TST_IMM_VAL +/* 0011 0001 0111 */ TABDECL(OP_TST_IMM_VAL), // OP_TST_IMM_VAL +/* 0011 0001 1000 */ TABDECL(OP_TST_IMM_VAL), // OP_TST_IMM_VAL +/* 0011 0001 1001 */ TABDECL(OP_TST_IMM_VAL), // OP_TST_IMM_VAL +/* 0011 0001 1010 */ TABDECL(OP_TST_IMM_VAL), // OP_TST_IMM_VAL +/* 0011 0001 1011 */ TABDECL(OP_TST_IMM_VAL), // OP_TST_IMM_VAL +/* 0011 0001 1100 */ TABDECL(OP_TST_IMM_VAL), // OP_TST_IMM_VAL +/* 0011 0001 1101 */ TABDECL(OP_TST_IMM_VAL), // OP_TST_IMM_VAL +/* 0011 0001 1110 */ TABDECL(OP_TST_IMM_VAL), // OP_TST_IMM_VAL +/* 0011 0001 1111 */ TABDECL(OP_TST_IMM_VAL), // OP_TST_IMM_VAL + +/* 0011 0010 0000 */ TABDECL(OP_MSR_CPSR_IMM_VAL), // OP_MSR_CPSR_IMM_VAL +/* 0011 0010 0001 */ TABDECL(OP_MSR_CPSR_IMM_VAL), // OP_MSR_CPSR_IMM_VAL +/* 0011 0010 0010 */ TABDECL(OP_MSR_CPSR_IMM_VAL), // OP_MSR_CPSR_IMM_VAL +/* 0011 0010 0011 */ TABDECL(OP_MSR_CPSR_IMM_VAL), // OP_MSR_CPSR_IMM_VAL +/* 0011 0010 0100 */ TABDECL(OP_MSR_CPSR_IMM_VAL), // OP_MSR_CPSR_IMM_VAL +/* 0011 0010 0101 */ TABDECL(OP_MSR_CPSR_IMM_VAL), // OP_MSR_CPSR_IMM_VAL +/* 0011 0010 0110 */ TABDECL(OP_MSR_CPSR_IMM_VAL), // OP_MSR_CPSR_IMM_VAL +/* 0011 0010 0111 */ TABDECL(OP_MSR_CPSR_IMM_VAL), // OP_MSR_CPSR_IMM_VAL +/* 0011 0010 1000 */ TABDECL(OP_MSR_CPSR_IMM_VAL), // OP_MSR_CPSR_IMM_VAL +/* 0011 0010 1001 */ TABDECL(OP_MSR_CPSR_IMM_VAL), // OP_MSR_CPSR_IMM_VAL +/* 0011 0010 1010 */ TABDECL(OP_MSR_CPSR_IMM_VAL), // OP_MSR_CPSR_IMM_VAL +/* 0011 0010 1011 */ TABDECL(OP_MSR_CPSR_IMM_VAL), // OP_MSR_CPSR_IMM_VAL +/* 0011 0010 1100 */ TABDECL(OP_MSR_CPSR_IMM_VAL), // OP_MSR_CPSR_IMM_VAL +/* 0011 0010 1101 */ TABDECL(OP_MSR_CPSR_IMM_VAL), // OP_MSR_CPSR_IMM_VAL +/* 0011 0010 1110 */ TABDECL(OP_MSR_CPSR_IMM_VAL), // OP_MSR_CPSR_IMM_VAL +/* 0011 0010 1111 */ TABDECL(OP_MSR_CPSR_IMM_VAL), // OP_MSR_CPSR_IMM_VAL + +/* 0011 0011 0000 */ TABDECL(OP_TEQ_IMM_VAL), // OP_TEQ_IMM_VAL +/* 0011 0011 0001 */ TABDECL(OP_TEQ_IMM_VAL), // OP_TEQ_IMM_VAL +/* 0011 0011 0010 */ TABDECL(OP_TEQ_IMM_VAL), // OP_TEQ_IMM_VAL +/* 0011 0011 0011 */ TABDECL(OP_TEQ_IMM_VAL), // OP_TEQ_IMM_VAL +/* 0011 0011 0100 */ TABDECL(OP_TEQ_IMM_VAL), // OP_TEQ_IMM_VAL +/* 0011 0011 0101 */ TABDECL(OP_TEQ_IMM_VAL), // OP_TEQ_IMM_VAL +/* 0011 0011 0110 */ TABDECL(OP_TEQ_IMM_VAL), // OP_TEQ_IMM_VAL +/* 0011 0011 0111 */ TABDECL(OP_TEQ_IMM_VAL), // OP_TEQ_IMM_VAL +/* 0011 0011 1000 */ TABDECL(OP_TEQ_IMM_VAL), // OP_TEQ_IMM_VAL +/* 0011 0011 1001 */ TABDECL(OP_TEQ_IMM_VAL), // OP_TEQ_IMM_VAL +/* 0011 0011 1010 */ TABDECL(OP_TEQ_IMM_VAL), // OP_TEQ_IMM_VAL +/* 0011 0011 1011 */ TABDECL(OP_TEQ_IMM_VAL), // OP_TEQ_IMM_VAL +/* 0011 0011 1100 */ TABDECL(OP_TEQ_IMM_VAL), // OP_TEQ_IMM_VAL +/* 0011 0011 1101 */ TABDECL(OP_TEQ_IMM_VAL), // OP_TEQ_IMM_VAL +/* 0011 0011 1110 */ TABDECL(OP_TEQ_IMM_VAL), // OP_TEQ_IMM_VAL +/* 0011 0011 1111 */ TABDECL(OP_TEQ_IMM_VAL), // OP_TEQ_IMM_VAL + +/* 0011 0100 0000 */ TABDECL(OP_UND), +/* 0011 0100 0001 */ TABDECL(OP_UND), +/* 0011 0100 0010 */ TABDECL(OP_UND), +/* 0011 0100 0011 */ TABDECL(OP_UND), +/* 0011 0100 0100 */ TABDECL(OP_UND), +/* 0011 0100 0101 */ TABDECL(OP_UND), +/* 0011 0100 0110 */ TABDECL(OP_UND), +/* 0011 0100 0111 */ TABDECL(OP_UND), +/* 0011 0100 1000 */ TABDECL(OP_UND), +/* 0011 0100 1001 */ TABDECL(OP_UND), +/* 0011 0100 1010 */ TABDECL(OP_UND), +/* 0011 0100 1011 */ TABDECL(OP_UND), +/* 0011 0100 1100 */ TABDECL(OP_UND), +/* 0011 0100 1101 */ TABDECL(OP_UND), +/* 0011 0100 1110 */ TABDECL(OP_UND), +/* 0011 0100 1111 */ TABDECL(OP_UND), + +/* 0011 0101 0000 */ TABDECL(OP_CMP_IMM_VAL), // OP_CMP_IMM_VAL +/* 0011 0101 0001 */ TABDECL(OP_CMP_IMM_VAL), // OP_CMP_IMM_VAL +/* 0011 0101 0010 */ TABDECL(OP_CMP_IMM_VAL), // OP_CMP_IMM_VAL +/* 0011 0101 0011 */ TABDECL(OP_CMP_IMM_VAL), // OP_CMP_IMM_VAL +/* 0011 0101 0100 */ TABDECL(OP_CMP_IMM_VAL), // OP_CMP_IMM_VAL +/* 0011 0101 0101 */ TABDECL(OP_CMP_IMM_VAL), // OP_CMP_IMM_VAL +/* 0011 0101 0110 */ TABDECL(OP_CMP_IMM_VAL), // OP_CMP_IMM_VAL +/* 0011 0101 0111 */ TABDECL(OP_CMP_IMM_VAL), // OP_CMP_IMM_VAL +/* 0011 0101 1000 */ TABDECL(OP_CMP_IMM_VAL), // OP_CMP_IMM_VAL +/* 0011 0101 1001 */ TABDECL(OP_CMP_IMM_VAL), // OP_CMP_IMM_VAL +/* 0011 0101 1010 */ TABDECL(OP_CMP_IMM_VAL), // OP_CMP_IMM_VAL +/* 0011 0101 1011 */ TABDECL(OP_CMP_IMM_VAL), // OP_CMP_IMM_VAL +/* 0011 0101 1100 */ TABDECL(OP_CMP_IMM_VAL), // OP_CMP_IMM_VAL +/* 0011 0101 1101 */ TABDECL(OP_CMP_IMM_VAL), // OP_CMP_IMM_VAL +/* 0011 0101 1110 */ TABDECL(OP_CMP_IMM_VAL), // OP_CMP_IMM_VAL +/* 0011 0101 1111 */ TABDECL(OP_CMP_IMM_VAL), // OP_CMP_IMM_VAL + +/* 0011 0110 0000 */ TABDECL(OP_MSR_SPSR_IMM_VAL), // OP_MSR_SPSR_IMM_VAL +/* 0011 0110 0001 */ TABDECL(OP_MSR_SPSR_IMM_VAL), // OP_MSR_SPSR_IMM_VAL +/* 0011 0110 0010 */ TABDECL(OP_MSR_SPSR_IMM_VAL), // OP_MSR_SPSR_IMM_VAL +/* 0011 0110 0011 */ TABDECL(OP_MSR_SPSR_IMM_VAL), // OP_MSR_SPSR_IMM_VAL +/* 0011 0110 0100 */ TABDECL(OP_MSR_SPSR_IMM_VAL), // OP_MSR_SPSR_IMM_VAL +/* 0011 0110 0101 */ TABDECL(OP_MSR_SPSR_IMM_VAL), // OP_MSR_SPSR_IMM_VAL +/* 0011 0110 0110 */ TABDECL(OP_MSR_SPSR_IMM_VAL), // OP_MSR_SPSR_IMM_VAL +/* 0011 0110 0111 */ TABDECL(OP_MSR_SPSR_IMM_VAL), // OP_MSR_SPSR_IMM_VAL +/* 0011 0110 1000 */ TABDECL(OP_MSR_SPSR_IMM_VAL), // OP_MSR_SPSR_IMM_VAL +/* 0011 0110 1001 */ TABDECL(OP_MSR_SPSR_IMM_VAL), // OP_MSR_SPSR_IMM_VAL +/* 0011 0110 1010 */ TABDECL(OP_MSR_SPSR_IMM_VAL), // OP_MSR_SPSR_IMM_VAL +/* 0011 0110 1011 */ TABDECL(OP_MSR_SPSR_IMM_VAL), // OP_MSR_SPSR_IMM_VAL +/* 0011 0110 1100 */ TABDECL(OP_MSR_SPSR_IMM_VAL), // OP_MSR_SPSR_IMM_VAL +/* 0011 0110 1101 */ TABDECL(OP_MSR_SPSR_IMM_VAL), // OP_MSR_SPSR_IMM_VAL +/* 0011 0110 1110 */ TABDECL(OP_MSR_SPSR_IMM_VAL), // OP_MSR_SPSR_IMM_VAL +/* 0011 0110 1111 */ TABDECL(OP_MSR_SPSR_IMM_VAL), // OP_MSR_SPSR_IMM_VAL + +/* 0011 0111 0000 */ TABDECL(OP_CMN_IMM_VAL), // OP_CMN_IMM_VAL +/* 0011 0111 0001 */ TABDECL(OP_CMN_IMM_VAL), // OP_CMN_IMM_VAL +/* 0011 0111 0010 */ TABDECL(OP_CMN_IMM_VAL), // OP_CMN_IMM_VAL +/* 0011 0111 0011 */ TABDECL(OP_CMN_IMM_VAL), // OP_CMN_IMM_VAL +/* 0011 0111 0100 */ TABDECL(OP_CMN_IMM_VAL), // OP_CMN_IMM_VAL +/* 0011 0111 0101 */ TABDECL(OP_CMN_IMM_VAL), // OP_CMN_IMM_VAL +/* 0011 0111 0110 */ TABDECL(OP_CMN_IMM_VAL), // OP_CMN_IMM_VAL +/* 0011 0111 0111 */ TABDECL(OP_CMN_IMM_VAL), // OP_CMN_IMM_VAL +/* 0011 0111 1000 */ TABDECL(OP_CMN_IMM_VAL), // OP_CMN_IMM_VAL +/* 0011 0111 1001 */ TABDECL(OP_CMN_IMM_VAL), // OP_CMN_IMM_VAL +/* 0011 0111 1010 */ TABDECL(OP_CMN_IMM_VAL), // OP_CMN_IMM_VAL +/* 0011 0111 1011 */ TABDECL(OP_CMN_IMM_VAL), // OP_CMN_IMM_VAL +/* 0011 0111 1100 */ TABDECL(OP_CMN_IMM_VAL), // OP_CMN_IMM_VAL +/* 0011 0111 1101 */ TABDECL(OP_CMN_IMM_VAL), // OP_CMN_IMM_VAL +/* 0011 0111 1110 */ TABDECL(OP_CMN_IMM_VAL), // OP_CMN_IMM_VAL +/* 0011 0111 1111 */ TABDECL(OP_CMN_IMM_VAL), // OP_CMN_IMM_VAL + +/* 0011 1000 0000 */ TABDECL(OP_ORR_IMM_VAL), // OP_ORR_IMM_VAL +/* 0011 1000 0001 */ TABDECL(OP_ORR_IMM_VAL), // OP_ORR_IMM_VAL +/* 0011 1000 0010 */ TABDECL(OP_ORR_IMM_VAL), // OP_ORR_IMM_VAL +/* 0011 1000 0011 */ TABDECL(OP_ORR_IMM_VAL), // OP_ORR_IMM_VAL +/* 0011 1000 0100 */ TABDECL(OP_ORR_IMM_VAL), // OP_ORR_IMM_VAL +/* 0011 1000 0101 */ TABDECL(OP_ORR_IMM_VAL), // OP_ORR_IMM_VAL +/* 0011 1000 0110 */ TABDECL(OP_ORR_IMM_VAL), // OP_ORR_IMM_VAL +/* 0011 1000 0111 */ TABDECL(OP_ORR_IMM_VAL), // OP_ORR_IMM_VAL +/* 0011 1000 1000 */ TABDECL(OP_ORR_IMM_VAL), // OP_ORR_IMM_VAL +/* 0011 1000 1001 */ TABDECL(OP_ORR_IMM_VAL), // OP_ORR_IMM_VAL +/* 0011 1000 1010 */ TABDECL(OP_ORR_IMM_VAL), // OP_ORR_IMM_VAL +/* 0011 1000 1011 */ TABDECL(OP_ORR_IMM_VAL), // OP_ORR_IMM_VAL +/* 0011 1000 1100 */ TABDECL(OP_ORR_IMM_VAL), // OP_ORR_IMM_VAL +/* 0011 1000 1101 */ TABDECL(OP_ORR_IMM_VAL), // OP_ORR_IMM_VAL +/* 0011 1000 1110 */ TABDECL(OP_ORR_IMM_VAL), // OP_ORR_IMM_VAL +/* 0011 1000 1111 */ TABDECL(OP_ORR_IMM_VAL), // OP_ORR_IMM_VAL + +/* 0011 1001 0000 */ TABDECL(OP_ORR_S_IMM_VAL), // OP_ORR_S_IMM_VAL +/* 0011 1001 0001 */ TABDECL(OP_ORR_S_IMM_VAL), // OP_ORR_S_IMM_VAL +/* 0011 1001 0010 */ TABDECL(OP_ORR_S_IMM_VAL), // OP_ORR_S_IMM_VAL +/* 0011 1001 0011 */ TABDECL(OP_ORR_S_IMM_VAL), // OP_ORR_S_IMM_VAL +/* 0011 1001 0100 */ TABDECL(OP_ORR_S_IMM_VAL), // OP_ORR_S_IMM_VAL +/* 0011 1001 0101 */ TABDECL(OP_ORR_S_IMM_VAL), // OP_ORR_S_IMM_VAL +/* 0011 1001 0110 */ TABDECL(OP_ORR_S_IMM_VAL), // OP_ORR_S_IMM_VAL +/* 0011 1001 0111 */ TABDECL(OP_ORR_S_IMM_VAL), // OP_ORR_S_IMM_VAL +/* 0011 1001 1000 */ TABDECL(OP_ORR_S_IMM_VAL), // OP_ORR_S_IMM_VAL +/* 0011 1001 1001 */ TABDECL(OP_ORR_S_IMM_VAL), // OP_ORR_S_IMM_VAL +/* 0011 1001 1010 */ TABDECL(OP_ORR_S_IMM_VAL), // OP_ORR_S_IMM_VAL +/* 0011 1001 1011 */ TABDECL(OP_ORR_S_IMM_VAL), // OP_ORR_S_IMM_VAL +/* 0011 1001 1100 */ TABDECL(OP_ORR_S_IMM_VAL), // OP_ORR_S_IMM_VAL +/* 0011 1001 1101 */ TABDECL(OP_ORR_S_IMM_VAL), // OP_ORR_S_IMM_VAL +/* 0011 1001 1110 */ TABDECL(OP_ORR_S_IMM_VAL), // OP_ORR_S_IMM_VAL +/* 0011 1001 1111 */ TABDECL(OP_ORR_S_IMM_VAL), // OP_ORR_S_IMM_VAL + +/* 0011 1010 0000 */ TABDECL(OP_MOV_IMM_VAL), // OP_MOV_IMM_VAL +/* 0011 1010 0001 */ TABDECL(OP_MOV_IMM_VAL), // OP_MOV_IMM_VAL +/* 0011 1010 0010 */ TABDECL(OP_MOV_IMM_VAL), // OP_MOV_IMM_VAL +/* 0011 1010 0011 */ TABDECL(OP_MOV_IMM_VAL), // OP_MOV_IMM_VAL +/* 0011 1010 0100 */ TABDECL(OP_MOV_IMM_VAL), // OP_MOV_IMM_VAL +/* 0011 1010 0101 */ TABDECL(OP_MOV_IMM_VAL), // OP_MOV_IMM_VAL +/* 0011 1010 0110 */ TABDECL(OP_MOV_IMM_VAL), // OP_MOV_IMM_VAL +/* 0011 1010 0111 */ TABDECL(OP_MOV_IMM_VAL), // OP_MOV_IMM_VAL +/* 0011 1010 1000 */ TABDECL(OP_MOV_IMM_VAL), // OP_MOV_IMM_VAL +/* 0011 1010 1001 */ TABDECL(OP_MOV_IMM_VAL), // OP_MOV_IMM_VAL +/* 0011 1010 1010 */ TABDECL(OP_MOV_IMM_VAL), // OP_MOV_IMM_VAL +/* 0011 1010 1011 */ TABDECL(OP_MOV_IMM_VAL), // OP_MOV_IMM_VAL +/* 0011 1010 1100 */ TABDECL(OP_MOV_IMM_VAL), // OP_MOV_IMM_VAL +/* 0011 1010 1101 */ TABDECL(OP_MOV_IMM_VAL), // OP_MOV_IMM_VAL +/* 0011 1010 1110 */ TABDECL(OP_MOV_IMM_VAL), // OP_MOV_IMM_VAL +/* 0011 1010 1111 */ TABDECL(OP_MOV_IMM_VAL), // OP_MOV_IMM_VAL + +/* 0011 1011 0000 */ TABDECL(OP_MOV_S_IMM_VAL), // OP_MOV_S_IMM_VAL +/* 0011 1011 0001 */ TABDECL(OP_MOV_S_IMM_VAL), // OP_MOV_S_IMM_VAL +/* 0011 1011 0010 */ TABDECL(OP_MOV_S_IMM_VAL), // OP_MOV_S_IMM_VAL +/* 0011 1011 0011 */ TABDECL(OP_MOV_S_IMM_VAL), // OP_MOV_S_IMM_VAL +/* 0011 1011 0100 */ TABDECL(OP_MOV_S_IMM_VAL), // OP_MOV_S_IMM_VAL +/* 0011 1011 0101 */ TABDECL(OP_MOV_S_IMM_VAL), // OP_MOV_S_IMM_VAL +/* 0011 1011 0110 */ TABDECL(OP_MOV_S_IMM_VAL), // OP_MOV_S_IMM_VAL +/* 0011 1011 0111 */ TABDECL(OP_MOV_S_IMM_VAL), // OP_MOV_S_IMM_VAL +/* 0011 1011 1000 */ TABDECL(OP_MOV_S_IMM_VAL), // OP_MOV_S_IMM_VAL +/* 0011 1011 1001 */ TABDECL(OP_MOV_S_IMM_VAL), // OP_MOV_S_IMM_VAL +/* 0011 1011 1010 */ TABDECL(OP_MOV_S_IMM_VAL), // OP_MOV_S_IMM_VAL +/* 0011 1011 1011 */ TABDECL(OP_MOV_S_IMM_VAL), // OP_MOV_S_IMM_VAL +/* 0011 1011 1100 */ TABDECL(OP_MOV_S_IMM_VAL), // OP_MOV_S_IMM_VAL +/* 0011 1011 1101 */ TABDECL(OP_MOV_S_IMM_VAL), // OP_MOV_S_IMM_VAL +/* 0011 1011 1110 */ TABDECL(OP_MOV_S_IMM_VAL), // OP_MOV_S_IMM_VAL +/* 0011 1011 1111 */ TABDECL(OP_MOV_S_IMM_VAL), // OP_MOV_S_IMM_VAL + +/* 0011 1100 0000 */ TABDECL(OP_BIC_IMM_VAL), // OP_BIC_IMM_VAL +/* 0011 1100 0001 */ TABDECL(OP_BIC_IMM_VAL), // OP_BIC_IMM_VAL +/* 0011 1100 0010 */ TABDECL(OP_BIC_IMM_VAL), // OP_BIC_IMM_VAL +/* 0011 1100 0011 */ TABDECL(OP_BIC_IMM_VAL), // OP_BIC_IMM_VAL +/* 0011 1100 0100 */ TABDECL(OP_BIC_IMM_VAL), // OP_BIC_IMM_VAL +/* 0011 1100 0101 */ TABDECL(OP_BIC_IMM_VAL), // OP_BIC_IMM_VAL +/* 0011 1100 0110 */ TABDECL(OP_BIC_IMM_VAL), // OP_BIC_IMM_VAL +/* 0011 1100 0111 */ TABDECL(OP_BIC_IMM_VAL), // OP_BIC_IMM_VAL +/* 0011 1100 1000 */ TABDECL(OP_BIC_IMM_VAL), // OP_BIC_IMM_VAL +/* 0011 1100 1001 */ TABDECL(OP_BIC_IMM_VAL), // OP_BIC_IMM_VAL +/* 0011 1100 1010 */ TABDECL(OP_BIC_IMM_VAL), // OP_BIC_IMM_VAL +/* 0011 1100 1011 */ TABDECL(OP_BIC_IMM_VAL), // OP_BIC_IMM_VAL +/* 0011 1100 1100 */ TABDECL(OP_BIC_IMM_VAL), // OP_BIC_IMM_VAL +/* 0011 1100 1101 */ TABDECL(OP_BIC_IMM_VAL), // OP_BIC_IMM_VAL +/* 0011 1100 1110 */ TABDECL(OP_BIC_IMM_VAL), // OP_BIC_IMM_VAL +/* 0011 1100 1111 */ TABDECL(OP_BIC_IMM_VAL), // OP_BIC_IMM_VAL + +/* 0011 1101 0000 */ TABDECL(OP_BIC_S_IMM_VAL), // OP_BIC_S_IMM_VAL +/* 0011 1101 0001 */ TABDECL(OP_BIC_S_IMM_VAL), // OP_BIC_S_IMM_VAL +/* 0011 1101 0010 */ TABDECL(OP_BIC_S_IMM_VAL), // OP_BIC_S_IMM_VAL +/* 0011 1101 0011 */ TABDECL(OP_BIC_S_IMM_VAL), // OP_BIC_S_IMM_VAL +/* 0011 1101 0100 */ TABDECL(OP_BIC_S_IMM_VAL), // OP_BIC_S_IMM_VAL +/* 0011 1101 0101 */ TABDECL(OP_BIC_S_IMM_VAL), // OP_BIC_S_IMM_VAL +/* 0011 1101 0110 */ TABDECL(OP_BIC_S_IMM_VAL), // OP_BIC_S_IMM_VAL +/* 0011 1101 0111 */ TABDECL(OP_BIC_S_IMM_VAL), // OP_BIC_S_IMM_VAL +/* 0011 1101 1000 */ TABDECL(OP_BIC_S_IMM_VAL), // OP_BIC_S_IMM_VAL +/* 0011 1101 1001 */ TABDECL(OP_BIC_S_IMM_VAL), // OP_BIC_S_IMM_VAL +/* 0011 1101 1010 */ TABDECL(OP_BIC_S_IMM_VAL), // OP_BIC_S_IMM_VAL +/* 0011 1101 1011 */ TABDECL(OP_BIC_S_IMM_VAL), // OP_BIC_S_IMM_VAL +/* 0011 1101 1100 */ TABDECL(OP_BIC_S_IMM_VAL), // OP_BIC_S_IMM_VAL +/* 0011 1101 1101 */ TABDECL(OP_BIC_S_IMM_VAL), // OP_BIC_S_IMM_VAL +/* 0011 1101 1110 */ TABDECL(OP_BIC_S_IMM_VAL), // OP_BIC_S_IMM_VAL +/* 0011 1101 1111 */ TABDECL(OP_BIC_S_IMM_VAL), // OP_BIC_S_IMM_VAL + +/* 0011 1110 0000 */ TABDECL(OP_MVN_IMM_VAL), // OP_MVN_IMM_VAL +/* 0011 1110 0001 */ TABDECL(OP_MVN_IMM_VAL), // OP_MVN_IMM_VAL +/* 0011 1110 0010 */ TABDECL(OP_MVN_IMM_VAL), // OP_MVN_IMM_VAL +/* 0011 1110 0011 */ TABDECL(OP_MVN_IMM_VAL), // OP_MVN_IMM_VAL +/* 0011 1110 0100 */ TABDECL(OP_MVN_IMM_VAL), // OP_MVN_IMM_VAL +/* 0011 1110 0101 */ TABDECL(OP_MVN_IMM_VAL), // OP_MVN_IMM_VAL +/* 0011 1110 0110 */ TABDECL(OP_MVN_IMM_VAL), // OP_MVN_IMM_VAL +/* 0011 1110 0111 */ TABDECL(OP_MVN_IMM_VAL), // OP_MVN_IMM_VAL +/* 0011 1110 1000 */ TABDECL(OP_MVN_IMM_VAL), // OP_MVN_IMM_VAL +/* 0011 1110 1001 */ TABDECL(OP_MVN_IMM_VAL), // OP_MVN_IMM_VAL +/* 0011 1110 1010 */ TABDECL(OP_MVN_IMM_VAL), // OP_MVN_IMM_VAL +/* 0011 1110 1011 */ TABDECL(OP_MVN_IMM_VAL), // OP_MVN_IMM_VAL +/* 0011 1110 1100 */ TABDECL(OP_MVN_IMM_VAL), // OP_MVN_IMM_VAL +/* 0011 1110 1101 */ TABDECL(OP_MVN_IMM_VAL), // OP_MVN_IMM_VAL +/* 0011 1110 1110 */ TABDECL(OP_MVN_IMM_VAL), // OP_MVN_IMM_VAL +/* 0011 1110 1111 */ TABDECL(OP_MVN_IMM_VAL), // OP_MVN_IMM_VAL + +/* 0011 1111 0000 */ TABDECL(OP_MVN_S_IMM_VAL), // OP_MVN_S_IMM_VAL +/* 0011 1111 0001 */ TABDECL(OP_MVN_S_IMM_VAL), // OP_MVN_S_IMM_VAL +/* 0011 1111 0010 */ TABDECL(OP_MVN_S_IMM_VAL), // OP_MVN_S_IMM_VAL +/* 0011 1111 0011 */ TABDECL(OP_MVN_S_IMM_VAL), // OP_MVN_S_IMM_VAL +/* 0011 1111 0100 */ TABDECL(OP_MVN_S_IMM_VAL), // OP_MVN_S_IMM_VAL +/* 0011 1111 0101 */ TABDECL(OP_MVN_S_IMM_VAL), // OP_MVN_S_IMM_VAL +/* 0011 1111 0110 */ TABDECL(OP_MVN_S_IMM_VAL), // OP_MVN_S_IMM_VAL +/* 0011 1111 0111 */ TABDECL(OP_MVN_S_IMM_VAL), // OP_MVN_S_IMM_VAL +/* 0011 1111 1000 */ TABDECL(OP_MVN_S_IMM_VAL), // OP_MVN_S_IMM_VAL +/* 0011 1111 1001 */ TABDECL(OP_MVN_S_IMM_VAL), // OP_MVN_S_IMM_VAL +/* 0011 1111 1010 */ TABDECL(OP_MVN_S_IMM_VAL), // OP_MVN_S_IMM_VAL +/* 0011 1111 1011 */ TABDECL(OP_MVN_S_IMM_VAL), // OP_MVN_S_IMM_VAL +/* 0011 1111 1100 */ TABDECL(OP_MVN_S_IMM_VAL), // OP_MVN_S_IMM_VAL +/* 0011 1111 1101 */ TABDECL(OP_MVN_S_IMM_VAL), // OP_MVN_S_IMM_VAL +/* 0011 1111 1110 */ TABDECL(OP_MVN_S_IMM_VAL), // OP_MVN_S_IMM_VAL +/* 0011 1111 1111 */ TABDECL(OP_MVN_S_IMM_VAL), // OP_MVN_S_IMM_VAL + +/* 0100 0000 0000 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0000 0001 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0000 0010 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0000 0011 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0000 0100 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0000 0101 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0000 0110 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0000 0111 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0000 1000 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0000 1001 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0000 1010 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0000 1011 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0000 1100 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0000 1101 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0000 1110 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0000 1111 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND + +/* 0100 0001 0000 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0001 0001 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0001 0010 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0001 0011 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0001 0100 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0001 0101 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0001 0110 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0001 0111 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0001 1000 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0001 1001 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0001 1010 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0001 1011 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0001 1100 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0001 1101 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0001 1110 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0001 1111 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND + +/* 0100 0010 0000 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0010 0001 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0010 0010 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0010 0011 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0010 0100 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0010 0101 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0010 0110 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0010 0111 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0010 1000 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0010 1001 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0010 1010 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0010 1011 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0010 1100 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0010 1101 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0010 1110 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND +/* 0100 0010 1111 */ TABDECL(OP_STR_M_IMM_OFF_POSTIND), // OP_STR_M_IMM_OFF_POSTIND + +/* 0100 0011 0000 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0011 0001 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0011 0010 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0011 0011 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0011 0100 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0011 0101 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0011 0110 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0011 0111 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0011 1000 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0011 1001 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0011 1010 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0011 1011 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0011 1100 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0011 1101 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0011 1110 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND +/* 0100 0011 1111 */ TABDECL(OP_LDR_M_IMM_OFF_POSTIND), // OP_LDR_M_IMM_OFF_POSTIND + +/* 0100 0100 0000 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0100 0001 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0100 0010 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0100 0011 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0100 0100 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0100 0101 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0100 0110 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0100 0111 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0100 1000 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0100 1001 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0100 1010 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0100 1011 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0100 1100 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0100 1101 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0100 1110 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0100 1111 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND + +/* 0100 0101 0000 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0101 0001 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0101 0010 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0101 0011 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0101 0100 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0101 0101 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0101 0110 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0101 0111 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0101 1000 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0101 1001 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0101 1010 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0101 1011 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0101 1100 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0101 1101 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0101 1110 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0101 1111 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND + +/* 0100 0110 0000 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0110 0001 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0110 0010 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0110 0011 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0110 0100 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0110 0101 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0110 0110 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0110 0111 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0110 1000 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0110 1001 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0110 1010 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0110 1011 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0110 1100 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0110 1101 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0110 1110 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND +/* 0100 0110 1111 */ TABDECL(OP_STRB_M_IMM_OFF_POSTIND), // OP_STRB_M_IMM_OFF_POSTIND + +/* 0100 0111 0000 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0111 0001 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0111 0010 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0111 0011 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0111 0100 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0111 0101 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0111 0110 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0111 0111 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0111 1000 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0111 1001 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0111 1010 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0111 1011 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0111 1100 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0111 1101 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0111 1110 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND +/* 0100 0111 1111 */ TABDECL(OP_LDRB_M_IMM_OFF_POSTIND), // OP_LDRB_M_IMM_OFF_POSTIND + +/* 0100 1000 0000 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1000 0001 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1000 0010 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1000 0011 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1000 0100 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1000 0101 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1000 0110 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1000 0111 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1000 1000 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1000 1001 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1000 1010 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1000 1011 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1000 1100 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1000 1101 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1000 1110 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1000 1111 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND + +/* 0100 1001 0000 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1001 0001 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1001 0010 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1001 0011 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1001 0100 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1001 0101 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1001 0110 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1001 0111 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1001 1000 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1001 1001 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1001 1010 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1001 1011 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1001 1100 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1001 1101 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1001 1110 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1001 1111 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND + +/* 0100 1010 0000 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1010 0001 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1010 0010 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1010 0011 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1010 0100 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1010 0101 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1010 0110 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1010 0111 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1010 1000 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1010 1001 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1010 1010 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1010 1011 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1010 1100 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1010 1101 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1010 1110 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND +/* 0100 1010 1111 */ TABDECL(OP_STR_P_IMM_OFF_POSTIND), // OP_STR_P_IMM_OFF_POSTIND + +/* 0100 1011 0000 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1011 0001 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1011 0010 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1011 0011 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1011 0100 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1011 0101 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1011 0110 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1011 0111 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1011 1000 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1011 1001 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1011 1010 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1011 1011 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1011 1100 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1011 1101 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1011 1110 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND +/* 0100 1011 1111 */ TABDECL(OP_LDR_P_IMM_OFF_POSTIND), // OP_LDR_P_IMM_OFF_POSTIND + +/* 0100 1100 0000 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1100 0001 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1100 0010 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1100 0011 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1100 0100 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1100 0101 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1100 0110 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1100 0111 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1100 1000 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1100 1001 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1100 1010 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1100 1011 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1100 1100 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1100 1101 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1100 1110 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1100 1111 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND + +/* 0100 1101 0000 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1101 0001 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1101 0010 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1101 0011 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1101 0100 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1101 0101 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1101 0110 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1101 0111 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1101 1000 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1101 1001 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1101 1010 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1101 1011 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1101 1100 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1101 1101 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1101 1110 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1101 1111 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND + +/* 0100 1110 0000 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1110 0001 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1110 0010 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1110 0011 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1110 0100 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1110 0101 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1110 0110 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1110 0111 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1110 1000 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1110 1001 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1110 1010 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1110 1011 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1110 1100 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1110 1101 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1110 1110 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND +/* 0100 1110 1111 */ TABDECL(OP_STRB_P_IMM_OFF_POSTIND), // OP_STRB_P_IMM_OFF_POSTIND + +/* 0100 1111 0000 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1111 0001 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1111 0010 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1111 0011 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1111 0100 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1111 0101 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1111 0110 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1111 0111 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1111 1000 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1111 1001 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1111 1010 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1111 1011 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1111 1100 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1111 1101 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1111 1110 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND +/* 0100 1111 1111 */ TABDECL(OP_LDRB_P_IMM_OFF_POSTIND), // OP_LDRB_P_IMM_OFF_POSTIND + +/* 0101 0000 0000 */ TABDECL(OP_STR_M_IMM_OFF), // OP_STR_M_IMM_OFF +/* 0101 0000 0001 */ TABDECL(OP_STR_M_IMM_OFF), // OP_STR_M_IMM_OFF +/* 0101 0000 0010 */ TABDECL(OP_STR_M_IMM_OFF), // OP_STR_M_IMM_OFF +/* 0101 0000 0011 */ TABDECL(OP_STR_M_IMM_OFF), // OP_STR_M_IMM_OFF +/* 0101 0000 0100 */ TABDECL(OP_STR_M_IMM_OFF), // OP_STR_M_IMM_OFF +/* 0101 0000 0101 */ TABDECL(OP_STR_M_IMM_OFF), // OP_STR_M_IMM_OFF +/* 0101 0000 0110 */ TABDECL(OP_STR_M_IMM_OFF), // OP_STR_M_IMM_OFF +/* 0101 0000 0111 */ TABDECL(OP_STR_M_IMM_OFF), // OP_STR_M_IMM_OFF +/* 0101 0000 1000 */ TABDECL(OP_STR_M_IMM_OFF), // OP_STR_M_IMM_OFF +/* 0101 0000 1001 */ TABDECL(OP_STR_M_IMM_OFF), // OP_STR_M_IMM_OFF +/* 0101 0000 1010 */ TABDECL(OP_STR_M_IMM_OFF), // OP_STR_M_IMM_OFF +/* 0101 0000 1011 */ TABDECL(OP_STR_M_IMM_OFF), // OP_STR_M_IMM_OFF +/* 0101 0000 1100 */ TABDECL(OP_STR_M_IMM_OFF), // OP_STR_M_IMM_OFF +/* 0101 0000 1101 */ TABDECL(OP_STR_M_IMM_OFF), // OP_STR_M_IMM_OFF +/* 0101 0000 1110 */ TABDECL(OP_STR_M_IMM_OFF), // OP_STR_M_IMM_OFF +/* 0101 0000 1111 */ TABDECL(OP_STR_M_IMM_OFF), // OP_STR_M_IMM_OFF + +/* 0101 0001 0000 */ TABDECL(OP_LDR_M_IMM_OFF), // OP_LDR_M_IMM_OFF +/* 0101 0001 0001 */ TABDECL(OP_LDR_M_IMM_OFF), // OP_LDR_M_IMM_OFF +/* 0101 0001 0010 */ TABDECL(OP_LDR_M_IMM_OFF), // OP_LDR_M_IMM_OFF +/* 0101 0001 0011 */ TABDECL(OP_LDR_M_IMM_OFF), // OP_LDR_M_IMM_OFF +/* 0101 0001 0100 */ TABDECL(OP_LDR_M_IMM_OFF), // OP_LDR_M_IMM_OFF +/* 0101 0001 0101 */ TABDECL(OP_LDR_M_IMM_OFF), // OP_LDR_M_IMM_OFF +/* 0101 0001 0110 */ TABDECL(OP_LDR_M_IMM_OFF), // OP_LDR_M_IMM_OFF +/* 0101 0001 0111 */ TABDECL(OP_LDR_M_IMM_OFF), // OP_LDR_M_IMM_OFF +/* 0101 0001 1000 */ TABDECL(OP_LDR_M_IMM_OFF), // OP_LDR_M_IMM_OFF +/* 0101 0001 1001 */ TABDECL(OP_LDR_M_IMM_OFF), // OP_LDR_M_IMM_OFF +/* 0101 0001 1010 */ TABDECL(OP_LDR_M_IMM_OFF), // OP_LDR_M_IMM_OFF +/* 0101 0001 1011 */ TABDECL(OP_LDR_M_IMM_OFF), // OP_LDR_M_IMM_OFF +/* 0101 0001 1100 */ TABDECL(OP_LDR_M_IMM_OFF), // OP_LDR_M_IMM_OFF +/* 0101 0001 1101 */ TABDECL(OP_LDR_M_IMM_OFF), // OP_LDR_M_IMM_OFF +/* 0101 0001 1110 */ TABDECL(OP_LDR_M_IMM_OFF), // OP_LDR_M_IMM_OFF +/* 0101 0001 1111 */ TABDECL(OP_LDR_M_IMM_OFF), // OP_LDR_M_IMM_OFF + +/* 0101 0010 0000 */ TABDECL(OP_STR_M_IMM_OFF_PREIND), // OP_STR_M_IMM_OFF_PREIND +/* 0101 0010 0001 */ TABDECL(OP_STR_M_IMM_OFF_PREIND), // OP_STR_M_IMM_OFF_PREIND +/* 0101 0010 0010 */ TABDECL(OP_STR_M_IMM_OFF_PREIND), // OP_STR_M_IMM_OFF_PREIND +/* 0101 0010 0011 */ TABDECL(OP_STR_M_IMM_OFF_PREIND), // OP_STR_M_IMM_OFF_PREIND +/* 0101 0010 0100 */ TABDECL(OP_STR_M_IMM_OFF_PREIND), // OP_STR_M_IMM_OFF_PREIND +/* 0101 0010 0101 */ TABDECL(OP_STR_M_IMM_OFF_PREIND), // OP_STR_M_IMM_OFF_PREIND +/* 0101 0010 0110 */ TABDECL(OP_STR_M_IMM_OFF_PREIND), // OP_STR_M_IMM_OFF_PREIND +/* 0101 0010 0111 */ TABDECL(OP_STR_M_IMM_OFF_PREIND), // OP_STR_M_IMM_OFF_PREIND +/* 0101 0010 1000 */ TABDECL(OP_STR_M_IMM_OFF_PREIND), // OP_STR_M_IMM_OFF_PREIND +/* 0101 0010 1001 */ TABDECL(OP_STR_M_IMM_OFF_PREIND), // OP_STR_M_IMM_OFF_PREIND +/* 0101 0010 1010 */ TABDECL(OP_STR_M_IMM_OFF_PREIND), // OP_STR_M_IMM_OFF_PREIND +/* 0101 0010 1011 */ TABDECL(OP_STR_M_IMM_OFF_PREIND), // OP_STR_M_IMM_OFF_PREIND +/* 0101 0010 1100 */ TABDECL(OP_STR_M_IMM_OFF_PREIND), // OP_STR_M_IMM_OFF_PREIND +/* 0101 0010 1101 */ TABDECL(OP_STR_M_IMM_OFF_PREIND), // OP_STR_M_IMM_OFF_PREIND +/* 0101 0010 1110 */ TABDECL(OP_STR_M_IMM_OFF_PREIND), // OP_STR_M_IMM_OFF_PREIND +/* 0101 0010 1111 */ TABDECL(OP_STR_M_IMM_OFF_PREIND), // OP_STR_M_IMM_OFF_PREIND + +/* 0101 0011 0000 */ TABDECL(OP_LDR_M_IMM_OFF_PREIND), // OP_LDR_M_IMM_OFF_PREIND +/* 0101 0011 0001 */ TABDECL(OP_LDR_M_IMM_OFF_PREIND), // OP_LDR_M_IMM_OFF_PREIND +/* 0101 0011 0010 */ TABDECL(OP_LDR_M_IMM_OFF_PREIND), // OP_LDR_M_IMM_OFF_PREIND +/* 0101 0011 0011 */ TABDECL(OP_LDR_M_IMM_OFF_PREIND), // OP_LDR_M_IMM_OFF_PREIND +/* 0101 0011 0100 */ TABDECL(OP_LDR_M_IMM_OFF_PREIND), // OP_LDR_M_IMM_OFF_PREIND +/* 0101 0011 0101 */ TABDECL(OP_LDR_M_IMM_OFF_PREIND), // OP_LDR_M_IMM_OFF_PREIND +/* 0101 0011 0110 */ TABDECL(OP_LDR_M_IMM_OFF_PREIND), // OP_LDR_M_IMM_OFF_PREIND +/* 0101 0011 0111 */ TABDECL(OP_LDR_M_IMM_OFF_PREIND), // OP_LDR_M_IMM_OFF_PREIND +/* 0101 0011 1000 */ TABDECL(OP_LDR_M_IMM_OFF_PREIND), // OP_LDR_M_IMM_OFF_PREIND +/* 0101 0011 1001 */ TABDECL(OP_LDR_M_IMM_OFF_PREIND), // OP_LDR_M_IMM_OFF_PREIND +/* 0101 0011 1010 */ TABDECL(OP_LDR_M_IMM_OFF_PREIND), // OP_LDR_M_IMM_OFF_PREIND +/* 0101 0011 1011 */ TABDECL(OP_LDR_M_IMM_OFF_PREIND), // OP_LDR_M_IMM_OFF_PREIND +/* 0101 0011 1100 */ TABDECL(OP_LDR_M_IMM_OFF_PREIND), // OP_LDR_M_IMM_OFF_PREIND +/* 0101 0011 1101 */ TABDECL(OP_LDR_M_IMM_OFF_PREIND), // OP_LDR_M_IMM_OFF_PREIND +/* 0101 0011 1110 */ TABDECL(OP_LDR_M_IMM_OFF_PREIND), // OP_LDR_M_IMM_OFF_PREIND +/* 0101 0011 1111 */ TABDECL(OP_LDR_M_IMM_OFF_PREIND), // OP_LDR_M_IMM_OFF_PREIND + +/* 0101 0100 0000 */ TABDECL(OP_STRB_M_IMM_OFF), // OP_STRB_M_IMM_OFF +/* 0101 0100 0001 */ TABDECL(OP_STRB_M_IMM_OFF), // OP_STRB_M_IMM_OFF +/* 0101 0100 0010 */ TABDECL(OP_STRB_M_IMM_OFF), // OP_STRB_M_IMM_OFF +/* 0101 0100 0011 */ TABDECL(OP_STRB_M_IMM_OFF), // OP_STRB_M_IMM_OFF +/* 0101 0100 0100 */ TABDECL(OP_STRB_M_IMM_OFF), // OP_STRB_M_IMM_OFF +/* 0101 0100 0101 */ TABDECL(OP_STRB_M_IMM_OFF), // OP_STRB_M_IMM_OFF +/* 0101 0100 0110 */ TABDECL(OP_STRB_M_IMM_OFF), // OP_STRB_M_IMM_OFF +/* 0101 0100 0111 */ TABDECL(OP_STRB_M_IMM_OFF), // OP_STRB_M_IMM_OFF +/* 0101 0100 1000 */ TABDECL(OP_STRB_M_IMM_OFF), // OP_STRB_M_IMM_OFF +/* 0101 0100 1001 */ TABDECL(OP_STRB_M_IMM_OFF), // OP_STRB_M_IMM_OFF +/* 0101 0100 1010 */ TABDECL(OP_STRB_M_IMM_OFF), // OP_STRB_M_IMM_OFF +/* 0101 0100 1011 */ TABDECL(OP_STRB_M_IMM_OFF), // OP_STRB_M_IMM_OFF +/* 0101 0100 1100 */ TABDECL(OP_STRB_M_IMM_OFF), // OP_STRB_M_IMM_OFF +/* 0101 0100 1101 */ TABDECL(OP_STRB_M_IMM_OFF), // OP_STRB_M_IMM_OFF +/* 0101 0100 1110 */ TABDECL(OP_STRB_M_IMM_OFF), // OP_STRB_M_IMM_OFF +/* 0101 0100 1111 */ TABDECL(OP_STRB_M_IMM_OFF), // OP_STRB_M_IMM_OFF + +/* 0101 0101 0000 */ TABDECL(OP_LDRB_M_IMM_OFF), // OP_LDRB_M_IMM_OFF +/* 0101 0101 0001 */ TABDECL(OP_LDRB_M_IMM_OFF), // OP_LDRB_M_IMM_OFF +/* 0101 0101 0010 */ TABDECL(OP_LDRB_M_IMM_OFF), // OP_LDRB_M_IMM_OFF +/* 0101 0101 0011 */ TABDECL(OP_LDRB_M_IMM_OFF), // OP_LDRB_M_IMM_OFF +/* 0101 0101 0100 */ TABDECL(OP_LDRB_M_IMM_OFF), // OP_LDRB_M_IMM_OFF +/* 0101 0101 0101 */ TABDECL(OP_LDRB_M_IMM_OFF), // OP_LDRB_M_IMM_OFF +/* 0101 0101 0110 */ TABDECL(OP_LDRB_M_IMM_OFF), // OP_LDRB_M_IMM_OFF +/* 0101 0101 0111 */ TABDECL(OP_LDRB_M_IMM_OFF), // OP_LDRB_M_IMM_OFF +/* 0101 0101 1000 */ TABDECL(OP_LDRB_M_IMM_OFF), // OP_LDRB_M_IMM_OFF +/* 0101 0101 1001 */ TABDECL(OP_LDRB_M_IMM_OFF), // OP_LDRB_M_IMM_OFF +/* 0101 0101 1010 */ TABDECL(OP_LDRB_M_IMM_OFF), // OP_LDRB_M_IMM_OFF +/* 0101 0101 1011 */ TABDECL(OP_LDRB_M_IMM_OFF), // OP_LDRB_M_IMM_OFF +/* 0101 0101 1100 */ TABDECL(OP_LDRB_M_IMM_OFF), // OP_LDRB_M_IMM_OFF +/* 0101 0101 1101 */ TABDECL(OP_LDRB_M_IMM_OFF), // OP_LDRB_M_IMM_OFF +/* 0101 0101 1110 */ TABDECL(OP_LDRB_M_IMM_OFF), // OP_LDRB_M_IMM_OFF +/* 0101 0101 1111 */ TABDECL(OP_LDRB_M_IMM_OFF), // OP_LDRB_M_IMM_OFF + +/* 0101 0110 0000 */ TABDECL(OP_STRB_M_IMM_OFF_PREIND), // OP_STRB_M_IMM_OFF_PREIND +/* 0101 0110 0001 */ TABDECL(OP_STRB_M_IMM_OFF_PREIND), // OP_STRB_M_IMM_OFF_PREIND +/* 0101 0110 0010 */ TABDECL(OP_STRB_M_IMM_OFF_PREIND), // OP_STRB_M_IMM_OFF_PREIND +/* 0101 0110 0011 */ TABDECL(OP_STRB_M_IMM_OFF_PREIND), // OP_STRB_M_IMM_OFF_PREIND +/* 0101 0110 0100 */ TABDECL(OP_STRB_M_IMM_OFF_PREIND), // OP_STRB_M_IMM_OFF_PREIND +/* 0101 0110 0101 */ TABDECL(OP_STRB_M_IMM_OFF_PREIND), // OP_STRB_M_IMM_OFF_PREIND +/* 0101 0110 0110 */ TABDECL(OP_STRB_M_IMM_OFF_PREIND), // OP_STRB_M_IMM_OFF_PREIND +/* 0101 0110 0111 */ TABDECL(OP_STRB_M_IMM_OFF_PREIND), // OP_STRB_M_IMM_OFF_PREIND +/* 0101 0110 1000 */ TABDECL(OP_STRB_M_IMM_OFF_PREIND), // OP_STRB_M_IMM_OFF_PREIND +/* 0101 0110 1001 */ TABDECL(OP_STRB_M_IMM_OFF_PREIND), // OP_STRB_M_IMM_OFF_PREIND +/* 0101 0110 1010 */ TABDECL(OP_STRB_M_IMM_OFF_PREIND), // OP_STRB_M_IMM_OFF_PREIND +/* 0101 0110 1011 */ TABDECL(OP_STRB_M_IMM_OFF_PREIND), // OP_STRB_M_IMM_OFF_PREIND +/* 0101 0110 1100 */ TABDECL(OP_STRB_M_IMM_OFF_PREIND), // OP_STRB_M_IMM_OFF_PREIND +/* 0101 0110 1101 */ TABDECL(OP_STRB_M_IMM_OFF_PREIND), // OP_STRB_M_IMM_OFF_PREIND +/* 0101 0110 1110 */ TABDECL(OP_STRB_M_IMM_OFF_PREIND), // OP_STRB_M_IMM_OFF_PREIND +/* 0101 0110 1111 */ TABDECL(OP_STRB_M_IMM_OFF_PREIND), // OP_STRB_M_IMM_OFF_PREIND + +/* 0101 0111 0000 */ TABDECL(OP_LDRB_M_IMM_OFF_PREIND), // OP_LDRB_M_IMM_OFF_PREIND +/* 0101 0111 0001 */ TABDECL(OP_LDRB_M_IMM_OFF_PREIND), // OP_LDRB_M_IMM_OFF_PREIND +/* 0101 0111 0010 */ TABDECL(OP_LDRB_M_IMM_OFF_PREIND), // OP_LDRB_M_IMM_OFF_PREIND +/* 0101 0111 0011 */ TABDECL(OP_LDRB_M_IMM_OFF_PREIND), // OP_LDRB_M_IMM_OFF_PREIND +/* 0101 0111 0100 */ TABDECL(OP_LDRB_M_IMM_OFF_PREIND), // OP_LDRB_M_IMM_OFF_PREIND +/* 0101 0111 0101 */ TABDECL(OP_LDRB_M_IMM_OFF_PREIND), // OP_LDRB_M_IMM_OFF_PREIND +/* 0101 0111 0110 */ TABDECL(OP_LDRB_M_IMM_OFF_PREIND), // OP_LDRB_M_IMM_OFF_PREIND +/* 0101 0111 0111 */ TABDECL(OP_LDRB_M_IMM_OFF_PREIND), // OP_LDRB_M_IMM_OFF_PREIND +/* 0101 0111 1000 */ TABDECL(OP_LDRB_M_IMM_OFF_PREIND), // OP_LDRB_M_IMM_OFF_PREIND +/* 0101 0111 1001 */ TABDECL(OP_LDRB_M_IMM_OFF_PREIND), // OP_LDRB_M_IMM_OFF_PREIND +/* 0101 0111 1010 */ TABDECL(OP_LDRB_M_IMM_OFF_PREIND), // OP_LDRB_M_IMM_OFF_PREIND +/* 0101 0111 1011 */ TABDECL(OP_LDRB_M_IMM_OFF_PREIND), // OP_LDRB_M_IMM_OFF_PREIND +/* 0101 0111 1100 */ TABDECL(OP_LDRB_M_IMM_OFF_PREIND), // OP_LDRB_M_IMM_OFF_PREIND +/* 0101 0111 1101 */ TABDECL(OP_LDRB_M_IMM_OFF_PREIND), // OP_LDRB_M_IMM_OFF_PREIND +/* 0101 0111 1110 */ TABDECL(OP_LDRB_M_IMM_OFF_PREIND), // OP_LDRB_M_IMM_OFF_PREIND +/* 0101 0111 1111 */ TABDECL(OP_LDRB_M_IMM_OFF_PREIND), // OP_LDRB_M_IMM_OFF_PREIND + +/* 0101 1000 0000 */ TABDECL(OP_STR_P_IMM_OFF), // OP_STR_P_IMM_OFF +/* 0101 1000 0001 */ TABDECL(OP_STR_P_IMM_OFF), // OP_STR_P_IMM_OFF +/* 0101 1000 0010 */ TABDECL(OP_STR_P_IMM_OFF), // OP_STR_P_IMM_OFF +/* 0101 1000 0011 */ TABDECL(OP_STR_P_IMM_OFF), // OP_STR_P_IMM_OFF +/* 0101 1000 0100 */ TABDECL(OP_STR_P_IMM_OFF), // OP_STR_P_IMM_OFF +/* 0101 1000 0101 */ TABDECL(OP_STR_P_IMM_OFF), // OP_STR_P_IMM_OFF +/* 0101 1000 0110 */ TABDECL(OP_STR_P_IMM_OFF), // OP_STR_P_IMM_OFF +/* 0101 1000 0111 */ TABDECL(OP_STR_P_IMM_OFF), // OP_STR_P_IMM_OFF +/* 0101 1000 1000 */ TABDECL(OP_STR_P_IMM_OFF), // OP_STR_P_IMM_OFF +/* 0101 1000 1001 */ TABDECL(OP_STR_P_IMM_OFF), // OP_STR_P_IMM_OFF +/* 0101 1000 1010 */ TABDECL(OP_STR_P_IMM_OFF), // OP_STR_P_IMM_OFF +/* 0101 1000 1011 */ TABDECL(OP_STR_P_IMM_OFF), // OP_STR_P_IMM_OFF +/* 0101 1000 1100 */ TABDECL(OP_STR_P_IMM_OFF), // OP_STR_P_IMM_OFF +/* 0101 1000 1101 */ TABDECL(OP_STR_P_IMM_OFF), // OP_STR_P_IMM_OFF +/* 0101 1000 1110 */ TABDECL(OP_STR_P_IMM_OFF), // OP_STR_P_IMM_OFF +/* 0101 1000 1111 */ TABDECL(OP_STR_P_IMM_OFF), // OP_STR_P_IMM_OFF + +/* 0101 1001 0000 */ TABDECL(OP_LDR_P_IMM_OFF), // OP_LDR_P_IMM_OFF +/* 0101 1001 0001 */ TABDECL(OP_LDR_P_IMM_OFF), // OP_LDR_P_IMM_OFF +/* 0101 1001 0010 */ TABDECL(OP_LDR_P_IMM_OFF), // OP_LDR_P_IMM_OFF +/* 0101 1001 0011 */ TABDECL(OP_LDR_P_IMM_OFF), // OP_LDR_P_IMM_OFF +/* 0101 1001 0100 */ TABDECL(OP_LDR_P_IMM_OFF), // OP_LDR_P_IMM_OFF +/* 0101 1001 0101 */ TABDECL(OP_LDR_P_IMM_OFF), // OP_LDR_P_IMM_OFF +/* 0101 1001 0110 */ TABDECL(OP_LDR_P_IMM_OFF), // OP_LDR_P_IMM_OFF +/* 0101 1001 0111 */ TABDECL(OP_LDR_P_IMM_OFF), // OP_LDR_P_IMM_OFF +/* 0101 1001 1000 */ TABDECL(OP_LDR_P_IMM_OFF), // OP_LDR_P_IMM_OFF +/* 0101 1001 1001 */ TABDECL(OP_LDR_P_IMM_OFF), // OP_LDR_P_IMM_OFF +/* 0101 1001 1010 */ TABDECL(OP_LDR_P_IMM_OFF), // OP_LDR_P_IMM_OFF +/* 0101 1001 1011 */ TABDECL(OP_LDR_P_IMM_OFF), // OP_LDR_P_IMM_OFF +/* 0101 1001 1100 */ TABDECL(OP_LDR_P_IMM_OFF), // OP_LDR_P_IMM_OFF +/* 0101 1001 1101 */ TABDECL(OP_LDR_P_IMM_OFF), // OP_LDR_P_IMM_OFF +/* 0101 1001 1110 */ TABDECL(OP_LDR_P_IMM_OFF), // OP_LDR_P_IMM_OFF +/* 0101 1001 1111 */ TABDECL(OP_LDR_P_IMM_OFF), // OP_LDR_P_IMM_OFF + +/* 0101 1010 0000 */ TABDECL(OP_STR_P_IMM_OFF_PREIND), // OP_STR_P_IMM_OFF_PREIND +/* 0101 1010 0001 */ TABDECL(OP_STR_P_IMM_OFF_PREIND), // OP_STR_P_IMM_OFF_PREIND +/* 0101 1010 0010 */ TABDECL(OP_STR_P_IMM_OFF_PREIND), // OP_STR_P_IMM_OFF_PREIND +/* 0101 1010 0011 */ TABDECL(OP_STR_P_IMM_OFF_PREIND), // OP_STR_P_IMM_OFF_PREIND +/* 0101 1010 0100 */ TABDECL(OP_STR_P_IMM_OFF_PREIND), // OP_STR_P_IMM_OFF_PREIND +/* 0101 1010 0101 */ TABDECL(OP_STR_P_IMM_OFF_PREIND), // OP_STR_P_IMM_OFF_PREIND +/* 0101 1010 0110 */ TABDECL(OP_STR_P_IMM_OFF_PREIND), // OP_STR_P_IMM_OFF_PREIND +/* 0101 1010 0111 */ TABDECL(OP_STR_P_IMM_OFF_PREIND), // OP_STR_P_IMM_OFF_PREIND +/* 0101 1010 1000 */ TABDECL(OP_STR_P_IMM_OFF_PREIND), // OP_STR_P_IMM_OFF_PREIND +/* 0101 1010 1001 */ TABDECL(OP_STR_P_IMM_OFF_PREIND), // OP_STR_P_IMM_OFF_PREIND +/* 0101 1010 1010 */ TABDECL(OP_STR_P_IMM_OFF_PREIND), // OP_STR_P_IMM_OFF_PREIND +/* 0101 1010 1011 */ TABDECL(OP_STR_P_IMM_OFF_PREIND), // OP_STR_P_IMM_OFF_PREIND +/* 0101 1010 1100 */ TABDECL(OP_STR_P_IMM_OFF_PREIND), // OP_STR_P_IMM_OFF_PREIND +/* 0101 1010 1101 */ TABDECL(OP_STR_P_IMM_OFF_PREIND), // OP_STR_P_IMM_OFF_PREIND +/* 0101 1010 1110 */ TABDECL(OP_STR_P_IMM_OFF_PREIND), // OP_STR_P_IMM_OFF_PREIND +/* 0101 1010 1111 */ TABDECL(OP_STR_P_IMM_OFF_PREIND), // OP_STR_P_IMM_OFF_PREIND + +/* 0101 1011 0000 */ TABDECL(OP_LDR_P_IMM_OFF_PREIND), // OP_LDR_P_IMM_OFF_PREIND +/* 0101 1011 0001 */ TABDECL(OP_LDR_P_IMM_OFF_PREIND), // OP_LDR_P_IMM_OFF_PREIND +/* 0101 1011 0010 */ TABDECL(OP_LDR_P_IMM_OFF_PREIND), // OP_LDR_P_IMM_OFF_PREIND +/* 0101 1011 0011 */ TABDECL(OP_LDR_P_IMM_OFF_PREIND), // OP_LDR_P_IMM_OFF_PREIND +/* 0101 1011 0100 */ TABDECL(OP_LDR_P_IMM_OFF_PREIND), // OP_LDR_P_IMM_OFF_PREIND +/* 0101 1011 0101 */ TABDECL(OP_LDR_P_IMM_OFF_PREIND), // OP_LDR_P_IMM_OFF_PREIND +/* 0101 1011 0110 */ TABDECL(OP_LDR_P_IMM_OFF_PREIND), // OP_LDR_P_IMM_OFF_PREIND +/* 0101 1011 0111 */ TABDECL(OP_LDR_P_IMM_OFF_PREIND), // OP_LDR_P_IMM_OFF_PREIND +/* 0101 1011 1000 */ TABDECL(OP_LDR_P_IMM_OFF_PREIND), // OP_LDR_P_IMM_OFF_PREIND +/* 0101 1011 1001 */ TABDECL(OP_LDR_P_IMM_OFF_PREIND), // OP_LDR_P_IMM_OFF_PREIND +/* 0101 1011 1010 */ TABDECL(OP_LDR_P_IMM_OFF_PREIND), // OP_LDR_P_IMM_OFF_PREIND +/* 0101 1011 1011 */ TABDECL(OP_LDR_P_IMM_OFF_PREIND), // OP_LDR_P_IMM_OFF_PREIND +/* 0101 1011 1100 */ TABDECL(OP_LDR_P_IMM_OFF_PREIND), // OP_LDR_P_IMM_OFF_PREIND +/* 0101 1011 1101 */ TABDECL(OP_LDR_P_IMM_OFF_PREIND), // OP_LDR_P_IMM_OFF_PREIND +/* 0101 1011 1110 */ TABDECL(OP_LDR_P_IMM_OFF_PREIND), // OP_LDR_P_IMM_OFF_PREIND +/* 0101 1011 1111 */ TABDECL(OP_LDR_P_IMM_OFF_PREIND), // OP_LDR_P_IMM_OFF_PREIND + +/* 0101 1100 0000 */ TABDECL(OP_STRB_P_IMM_OFF), // OP_STRB_P_IMM_OFF +/* 0101 1100 0001 */ TABDECL(OP_STRB_P_IMM_OFF), // OP_STRB_P_IMM_OFF +/* 0101 1100 0010 */ TABDECL(OP_STRB_P_IMM_OFF), // OP_STRB_P_IMM_OFF +/* 0101 1100 0011 */ TABDECL(OP_STRB_P_IMM_OFF), // OP_STRB_P_IMM_OFF +/* 0101 1100 0100 */ TABDECL(OP_STRB_P_IMM_OFF), // OP_STRB_P_IMM_OFF +/* 0101 1100 0101 */ TABDECL(OP_STRB_P_IMM_OFF), // OP_STRB_P_IMM_OFF +/* 0101 1100 0110 */ TABDECL(OP_STRB_P_IMM_OFF), // OP_STRB_P_IMM_OFF +/* 0101 1100 0111 */ TABDECL(OP_STRB_P_IMM_OFF), // OP_STRB_P_IMM_OFF +/* 0101 1100 1000 */ TABDECL(OP_STRB_P_IMM_OFF), // OP_STRB_P_IMM_OFF +/* 0101 1100 1001 */ TABDECL(OP_STRB_P_IMM_OFF), // OP_STRB_P_IMM_OFF +/* 0101 1100 1010 */ TABDECL(OP_STRB_P_IMM_OFF), // OP_STRB_P_IMM_OFF +/* 0101 1100 1011 */ TABDECL(OP_STRB_P_IMM_OFF), // OP_STRB_P_IMM_OFF +/* 0101 1100 1100 */ TABDECL(OP_STRB_P_IMM_OFF), // OP_STRB_P_IMM_OFF +/* 0101 1100 1101 */ TABDECL(OP_STRB_P_IMM_OFF), // OP_STRB_P_IMM_OFF +/* 0101 1100 1110 */ TABDECL(OP_STRB_P_IMM_OFF), // OP_STRB_P_IMM_OFF +/* 0101 1100 1111 */ TABDECL(OP_STRB_P_IMM_OFF), // OP_STRB_P_IMM_OFF + +/* 0101 1101 0000 */ TABDECL(OP_LDRB_P_IMM_OFF), // OP_LDRB_P_IMM_OFF +/* 0101 1101 0001 */ TABDECL(OP_LDRB_P_IMM_OFF), // OP_LDRB_P_IMM_OFF +/* 0101 1101 0010 */ TABDECL(OP_LDRB_P_IMM_OFF), // OP_LDRB_P_IMM_OFF +/* 0101 1101 0011 */ TABDECL(OP_LDRB_P_IMM_OFF), // OP_LDRB_P_IMM_OFF +/* 0101 1101 0100 */ TABDECL(OP_LDRB_P_IMM_OFF), // OP_LDRB_P_IMM_OFF +/* 0101 1101 0101 */ TABDECL(OP_LDRB_P_IMM_OFF), // OP_LDRB_P_IMM_OFF +/* 0101 1101 0110 */ TABDECL(OP_LDRB_P_IMM_OFF), // OP_LDRB_P_IMM_OFF +/* 0101 1101 0111 */ TABDECL(OP_LDRB_P_IMM_OFF), // OP_LDRB_P_IMM_OFF +/* 0101 1101 1000 */ TABDECL(OP_LDRB_P_IMM_OFF), // OP_LDRB_P_IMM_OFF +/* 0101 1101 1001 */ TABDECL(OP_LDRB_P_IMM_OFF), // OP_LDRB_P_IMM_OFF +/* 0101 1101 1010 */ TABDECL(OP_LDRB_P_IMM_OFF), // OP_LDRB_P_IMM_OFF +/* 0101 1101 1011 */ TABDECL(OP_LDRB_P_IMM_OFF), // OP_LDRB_P_IMM_OFF +/* 0101 1101 1100 */ TABDECL(OP_LDRB_P_IMM_OFF), // OP_LDRB_P_IMM_OFF +/* 0101 1101 1101 */ TABDECL(OP_LDRB_P_IMM_OFF), // OP_LDRB_P_IMM_OFF +/* 0101 1101 1110 */ TABDECL(OP_LDRB_P_IMM_OFF), // OP_LDRB_P_IMM_OFF +/* 0101 1101 1111 */ TABDECL(OP_LDRB_P_IMM_OFF), // OP_LDRB_P_IMM_OFF + +/* 0101 1110 0000 */ TABDECL(OP_STRB_P_IMM_OFF_PREIND), // OP_STRB_P_IMM_OFF_PREIND +/* 0101 1110 0001 */ TABDECL(OP_STRB_P_IMM_OFF_PREIND), // OP_STRB_P_IMM_OFF_PREIND +/* 0101 1110 0010 */ TABDECL(OP_STRB_P_IMM_OFF_PREIND), // OP_STRB_P_IMM_OFF_PREIND +/* 0101 1110 0011 */ TABDECL(OP_STRB_P_IMM_OFF_PREIND), // OP_STRB_P_IMM_OFF_PREIND +/* 0101 1110 0100 */ TABDECL(OP_STRB_P_IMM_OFF_PREIND), // OP_STRB_P_IMM_OFF_PREIND +/* 0101 1110 0101 */ TABDECL(OP_STRB_P_IMM_OFF_PREIND), // OP_STRB_P_IMM_OFF_PREIND +/* 0101 1110 0110 */ TABDECL(OP_STRB_P_IMM_OFF_PREIND), // OP_STRB_P_IMM_OFF_PREIND +/* 0101 1110 0111 */ TABDECL(OP_STRB_P_IMM_OFF_PREIND), // OP_STRB_P_IMM_OFF_PREIND +/* 0101 1110 1000 */ TABDECL(OP_STRB_P_IMM_OFF_PREIND), // OP_STRB_P_IMM_OFF_PREIND +/* 0101 1110 1001 */ TABDECL(OP_STRB_P_IMM_OFF_PREIND), // OP_STRB_P_IMM_OFF_PREIND +/* 0101 1110 1010 */ TABDECL(OP_STRB_P_IMM_OFF_PREIND), // OP_STRB_P_IMM_OFF_PREIND +/* 0101 1110 1011 */ TABDECL(OP_STRB_P_IMM_OFF_PREIND), // OP_STRB_P_IMM_OFF_PREIND +/* 0101 1110 1100 */ TABDECL(OP_STRB_P_IMM_OFF_PREIND), // OP_STRB_P_IMM_OFF_PREIND +/* 0101 1110 1101 */ TABDECL(OP_STRB_P_IMM_OFF_PREIND), // OP_STRB_P_IMM_OFF_PREIND +/* 0101 1110 1110 */ TABDECL(OP_STRB_P_IMM_OFF_PREIND), // OP_STRB_P_IMM_OFF_PREIND +/* 0101 1110 1111 */ TABDECL(OP_STRB_P_IMM_OFF_PREIND), // OP_STRB_P_IMM_OFF_PREIND + +/* 0101 1111 0000 */ TABDECL(OP_LDRB_P_IMM_OFF_PREIND), // OP_LDRB_P_IMM_OFF_PREIND +/* 0101 1111 0001 */ TABDECL(OP_LDRB_P_IMM_OFF_PREIND), // OP_LDRB_P_IMM_OFF_PREIND +/* 0101 1111 0010 */ TABDECL(OP_LDRB_P_IMM_OFF_PREIND), // OP_LDRB_P_IMM_OFF_PREIND +/* 0101 1111 0011 */ TABDECL(OP_LDRB_P_IMM_OFF_PREIND), // OP_LDRB_P_IMM_OFF_PREIND +/* 0101 1111 0100 */ TABDECL(OP_LDRB_P_IMM_OFF_PREIND), // OP_LDRB_P_IMM_OFF_PREIND +/* 0101 1111 0101 */ TABDECL(OP_LDRB_P_IMM_OFF_PREIND), // OP_LDRB_P_IMM_OFF_PREIND +/* 0101 1111 0110 */ TABDECL(OP_LDRB_P_IMM_OFF_PREIND), // OP_LDRB_P_IMM_OFF_PREIND +/* 0101 1111 0111 */ TABDECL(OP_LDRB_P_IMM_OFF_PREIND), // OP_LDRB_P_IMM_OFF_PREIND +/* 0101 1111 1000 */ TABDECL(OP_LDRB_P_IMM_OFF_PREIND), // OP_LDRB_P_IMM_OFF_PREIND +/* 0101 1111 1001 */ TABDECL(OP_LDRB_P_IMM_OFF_PREIND), // OP_LDRB_P_IMM_OFF_PREIND +/* 0101 1111 1010 */ TABDECL(OP_LDRB_P_IMM_OFF_PREIND), // OP_LDRB_P_IMM_OFF_PREIND +/* 0101 1111 1011 */ TABDECL(OP_LDRB_P_IMM_OFF_PREIND), // OP_LDRB_P_IMM_OFF_PREIND +/* 0101 1111 1100 */ TABDECL(OP_LDRB_P_IMM_OFF_PREIND), // OP_LDRB_P_IMM_OFF_PREIND +/* 0101 1111 1101 */ TABDECL(OP_LDRB_P_IMM_OFF_PREIND), // OP_LDRB_P_IMM_OFF_PREIND +/* 0101 1111 1110 */ TABDECL(OP_LDRB_P_IMM_OFF_PREIND), // OP_LDRB_P_IMM_OFF_PREIND +/* 0101 1111 1111 */ TABDECL(OP_LDRB_P_IMM_OFF_PREIND), // OP_LDRB_P_IMM_OFF_PREIND + +/* 0110 0000 0000 */ TABDECL(OP_STR_M_LSL_IMM_OFF_POSTIND), // OP_STR_M_LSL_IMM_OFF_POSTIND +/* 0110 0000 0001 */ TABDECL(OP_UND), +/* 0110 0000 0010 */ TABDECL(OP_STR_M_LSR_IMM_OFF_POSTIND), // OP_STR_M_LSR_IMM_OFF_POSTIND +/* 0110 0000 0011 */ TABDECL(OP_UND), +/* 0110 0000 0100 */ TABDECL(OP_STR_M_ASR_IMM_OFF_POSTIND), // OP_STR_M_ASR_IMM_OFF_POSTIND +/* 0110 0000 0101 */ TABDECL(OP_UND), +/* 0110 0000 0110 */ TABDECL(OP_STR_M_ROR_IMM_OFF_POSTIND), // OP_STR_M_ROR_IMM_OFF_POSTIND +/* 0110 0000 0111 */ TABDECL(OP_UND), +/* 0110 0000 1000 */ TABDECL(OP_STR_M_LSL_IMM_OFF_POSTIND), // OP_STR_M_LSL_IMM_OFF_POSTIND +/* 0110 0000 1001 */ TABDECL(OP_UND), +/* 0110 0000 1010 */ TABDECL(OP_STR_M_LSR_IMM_OFF_POSTIND), // OP_STR_M_LSR_IMM_OFF_POSTIND +/* 0110 0000 1011 */ TABDECL(OP_UND), +/* 0110 0000 1100 */ TABDECL(OP_STR_M_ASR_IMM_OFF_POSTIND), // OP_STR_M_ASR_IMM_OFF_POSTIND +/* 0110 0000 1101 */ TABDECL(OP_UND), +/* 0110 0000 1110 */ TABDECL(OP_STR_M_ROR_IMM_OFF_POSTIND), // OP_STR_M_ROR_IMM_OFF_POSTIND +/* 0110 0000 1111 */ TABDECL(OP_UND), + +/* 0110 0001 0000 */ TABDECL(OP_LDR_M_LSL_IMM_OFF_POSTIND), // OP_LDR_M_LSL_IMM_OFF_POSTIND +/* 0110 0001 0001 */ TABDECL(OP_UND), +/* 0110 0001 0010 */ TABDECL(OP_LDR_M_LSR_IMM_OFF_POSTIND), // OP_LDR_M_LSR_IMM_OFF_POSTIND +/* 0110 0001 0011 */ TABDECL(OP_UND), +/* 0110 0001 0100 */ TABDECL(OP_LDR_M_ASR_IMM_OFF_POSTIND), // OP_LDR_M_ASR_IMM_OFF_POSTIND +/* 0110 0001 0101 */ TABDECL(OP_UND), +/* 0110 0001 0110 */ TABDECL(OP_LDR_M_ROR_IMM_OFF_POSTIND), // OP_LDR_M_ROR_IMM_OFF_POSTIND +/* 0110 0001 0111 */ TABDECL(OP_UND), +/* 0110 0001 1000 */ TABDECL(OP_LDR_M_LSL_IMM_OFF_POSTIND), // OP_LDR_M_LSL_IMM_OFF_POSTIND +/* 0110 0001 1001 */ TABDECL(OP_UND), +/* 0110 0001 1010 */ TABDECL(OP_LDR_M_LSR_IMM_OFF_POSTIND), // OP_LDR_M_LSR_IMM_OFF_POSTIND +/* 0110 0001 1011 */ TABDECL(OP_UND), +/* 0110 0001 1100 */ TABDECL(OP_LDR_M_ASR_IMM_OFF_POSTIND), // OP_LDR_M_ASR_IMM_OFF_POSTIND +/* 0110 0001 1101 */ TABDECL(OP_UND), +/* 0110 0001 1110 */ TABDECL(OP_LDR_M_ROR_IMM_OFF_POSTIND), // OP_LDR_M_ROR_IMM_OFF_POSTIND +/* 0110 0001 1111 */ TABDECL(OP_UND), + +/* 0110 0010 0000 */ TABDECL(OP_STR_M_LSL_IMM_OFF_POSTIND), // OP_STR_M_LSL_IMM_OFF_POSTIND +/* 0110 0010 0001 */ TABDECL(OP_UND), +/* 0110 0010 0010 */ TABDECL(OP_STR_M_LSR_IMM_OFF_POSTIND), // OP_STR_M_LSR_IMM_OFF_POSTIND +/* 0110 0010 0011 */ TABDECL(OP_UND), +/* 0110 0010 0100 */ TABDECL(OP_STR_M_ASR_IMM_OFF_POSTIND), // OP_STR_M_ASR_IMM_OFF_POSTIND +/* 0110 0010 0101 */ TABDECL(OP_UND), +/* 0110 0010 0110 */ TABDECL(OP_STR_M_ROR_IMM_OFF_POSTIND), // OP_STR_M_ROR_IMM_OFF_POSTIND +/* 0110 0010 0111 */ TABDECL(OP_UND), +/* 0110 0010 1000 */ TABDECL(OP_STR_M_LSL_IMM_OFF_POSTIND), // OP_STR_M_LSL_IMM_OFF_POSTIND +/* 0110 0010 1001 */ TABDECL(OP_UND), +/* 0110 0010 1010 */ TABDECL(OP_STR_M_LSR_IMM_OFF_POSTIND), // OP_STR_M_LSR_IMM_OFF_POSTIND +/* 0110 0010 1011 */ TABDECL(OP_UND), +/* 0110 0010 1100 */ TABDECL(OP_STR_M_ASR_IMM_OFF_POSTIND), // OP_STR_M_ASR_IMM_OFF_POSTIND +/* 0110 0010 1101 */ TABDECL(OP_UND), +/* 0110 0010 1110 */ TABDECL(OP_STR_M_ROR_IMM_OFF_POSTIND), // OP_STR_M_ROR_IMM_OFF_POSTIND +/* 0110 0010 1111 */ TABDECL(OP_UND), + +/* 0110 0011 0000 */ TABDECL(OP_LDR_M_LSL_IMM_OFF_POSTIND), // OP_LDR_M_LSL_IMM_OFF_POSTIND +/* 0110 0011 0001 */ TABDECL(OP_UND), +/* 0110 0011 0010 */ TABDECL(OP_LDR_M_LSR_IMM_OFF_POSTIND), // OP_LDR_M_LSR_IMM_OFF_POSTIND +/* 0110 0011 0011 */ TABDECL(OP_UND), +/* 0110 0011 0100 */ TABDECL(OP_LDR_M_ASR_IMM_OFF_POSTIND), // OP_LDR_M_ASR_IMM_OFF_POSTIND +/* 0110 0011 0101 */ TABDECL(OP_UND), +/* 0110 0011 0110 */ TABDECL(OP_LDR_M_ROR_IMM_OFF_POSTIND), // OP_LDR_M_ROR_IMM_OFF_POSTIND +/* 0110 0011 0111 */ TABDECL(OP_UND), +/* 0110 0011 1000 */ TABDECL(OP_LDR_M_LSL_IMM_OFF_POSTIND), // OP_LDR_M_LSL_IMM_OFF_POSTIND +/* 0110 0011 1001 */ TABDECL(OP_UND), +/* 0110 0011 1010 */ TABDECL(OP_LDR_M_LSR_IMM_OFF_POSTIND), // OP_LDR_M_LSR_IMM_OFF_POSTIND +/* 0110 0011 1011 */ TABDECL(OP_UND), +/* 0110 0011 1100 */ TABDECL(OP_LDR_M_ASR_IMM_OFF_POSTIND), // OP_LDR_M_ASR_IMM_OFF_POSTIND +/* 0110 0011 1101 */ TABDECL(OP_UND), +/* 0110 0011 1110 */ TABDECL(OP_LDR_M_ROR_IMM_OFF_POSTIND), // OP_LDR_M_ROR_IMM_OFF_POSTIND +/* 0110 0011 1111 */ TABDECL(OP_UND), + +/* 0110 0100 0000 */ TABDECL(OP_STRB_M_LSL_IMM_OFF_POSTIND), // OP_STRB_M_LSL_IMM_OFF_POSTIND +/* 0110 0100 0001 */ TABDECL(OP_UND), +/* 0110 0100 0010 */ TABDECL(OP_STRB_M_LSR_IMM_OFF_POSTIND), // OP_STRB_M_LSR_IMM_OFF_POSTIND +/* 0110 0100 0011 */ TABDECL(OP_UND), +/* 0110 0100 0100 */ TABDECL(OP_STRB_M_ASR_IMM_OFF_POSTIND), // OP_STRB_M_ASR_IMM_OFF_POSTIND +/* 0110 0100 0101 */ TABDECL(OP_UND), +/* 0110 0100 0110 */ TABDECL(OP_STRB_M_ROR_IMM_OFF_POSTIND), // OP_STRB_M_ROR_IMM_OFF_POSTIND +/* 0110 0100 0111 */ TABDECL(OP_UND), +/* 0110 0100 1000 */ TABDECL(OP_STRB_M_LSL_IMM_OFF_POSTIND), // OP_STRB_M_LSL_IMM_OFF_POSTIND +/* 0110 0100 1001 */ TABDECL(OP_UND), +/* 0110 0100 1010 */ TABDECL(OP_STRB_M_LSR_IMM_OFF_POSTIND), // OP_STRB_M_LSR_IMM_OFF_POSTIND +/* 0110 0100 1011 */ TABDECL(OP_UND), +/* 0110 0100 1100 */ TABDECL(OP_STRB_M_ASR_IMM_OFF_POSTIND), // OP_STRB_M_ASR_IMM_OFF_POSTIND +/* 0110 0100 1101 */ TABDECL(OP_UND), +/* 0110 0100 1110 */ TABDECL(OP_STRB_M_ROR_IMM_OFF_POSTIND), // OP_STRB_M_ROR_IMM_OFF_POSTIND +/* 0110 0100 1111 */ TABDECL(OP_UND), + +/* 0110 0101 0000 */ TABDECL(OP_LDRB_M_LSL_IMM_OFF_POSTIND), // OP_LDRB_M_LSL_IMM_OFF_POSTIND +/* 0110 0101 0001 */ TABDECL(OP_UND), +/* 0110 0101 0010 */ TABDECL(OP_LDRB_M_LSR_IMM_OFF_POSTIND), // OP_LDRB_M_LSR_IMM_OFF_POSTIND +/* 0110 0101 0011 */ TABDECL(OP_UND), +/* 0110 0101 0100 */ TABDECL(OP_LDRB_M_ASR_IMM_OFF_POSTIND), // OP_LDRB_M_ASR_IMM_OFF_POSTIND +/* 0110 0101 0101 */ TABDECL(OP_UND), +/* 0110 0101 0110 */ TABDECL(OP_LDRB_M_ROR_IMM_OFF_POSTIND), // OP_LDRB_M_ROR_IMM_OFF_POSTIND +/* 0110 0101 0111 */ TABDECL(OP_UND), +/* 0110 0101 1000 */ TABDECL(OP_LDRB_M_LSL_IMM_OFF_POSTIND), // OP_LDRB_M_LSL_IMM_OFF_POSTIND +/* 0110 0101 1001 */ TABDECL(OP_UND), +/* 0110 0101 1010 */ TABDECL(OP_LDRB_M_LSR_IMM_OFF_POSTIND), // OP_LDRB_M_LSR_IMM_OFF_POSTIND +/* 0110 0101 1011 */ TABDECL(OP_UND), +/* 0110 0101 1100 */ TABDECL(OP_LDRB_M_ASR_IMM_OFF_POSTIND), // OP_LDRB_M_ASR_IMM_OFF_POSTIND +/* 0110 0101 1101 */ TABDECL(OP_UND), +/* 0110 0101 1110 */ TABDECL(OP_LDRB_M_ROR_IMM_OFF_POSTIND), // OP_LDRB_M_ROR_IMM_OFF_POSTIND +/* 0110 0101 1111 */ TABDECL(OP_UND), + +/* 0110 0110 0000 */ TABDECL(OP_STRB_M_LSL_IMM_OFF_POSTIND), // OP_STRB_M_LSL_IMM_OFF_POSTIND +/* 0110 0110 0001 */ TABDECL(OP_UND), +/* 0110 0110 0010 */ TABDECL(OP_STRB_M_LSR_IMM_OFF_POSTIND), // OP_STRB_M_LSR_IMM_OFF_POSTIND +/* 0110 0110 0011 */ TABDECL(OP_UND), +/* 0110 0110 0100 */ TABDECL(OP_STRB_M_ASR_IMM_OFF_POSTIND), // OP_STRB_M_ASR_IMM_OFF_POSTIND +/* 0110 0110 0101 */ TABDECL(OP_UND), +/* 0110 0110 0110 */ TABDECL(OP_STRB_M_ROR_IMM_OFF_POSTIND), // OP_STRB_M_ROR_IMM_OFF_POSTIND +/* 0110 0110 0111 */ TABDECL(OP_UND), +/* 0110 0110 1000 */ TABDECL(OP_STRB_M_LSL_IMM_OFF_POSTIND), // OP_STRB_M_LSL_IMM_OFF_POSTIND +/* 0110 0110 1001 */ TABDECL(OP_UND), +/* 0110 0110 1010 */ TABDECL(OP_STRB_M_LSR_IMM_OFF_POSTIND), // OP_STRB_M_LSR_IMM_OFF_POSTIND +/* 0110 0110 1011 */ TABDECL(OP_UND), +/* 0110 0110 1100 */ TABDECL(OP_STRB_M_ASR_IMM_OFF_POSTIND), // OP_STRB_M_ASR_IMM_OFF_POSTIND +/* 0110 0110 1101 */ TABDECL(OP_UND), +/* 0110 0110 1110 */ TABDECL(OP_STRB_M_ROR_IMM_OFF_POSTIND), // OP_STRB_M_ROR_IMM_OFF_POSTIND +/* 0110 0110 1111 */ TABDECL(OP_UND), + +/* 0110 0111 0000 */ TABDECL(OP_LDRB_M_LSL_IMM_OFF_POSTIND), // OP_LDRB_M_LSL_IMM_OFF_POSTIND +/* 0110 0111 0001 */ TABDECL(OP_UND), +/* 0110 0111 0010 */ TABDECL(OP_LDRB_M_LSR_IMM_OFF_POSTIND), // OP_LDRB_M_LSR_IMM_OFF_POSTIND +/* 0110 0111 0011 */ TABDECL(OP_UND), +/* 0110 0111 0100 */ TABDECL(OP_LDRB_M_ASR_IMM_OFF_POSTIND), // OP_LDRB_M_ASR_IMM_OFF_POSTIND +/* 0110 0111 0101 */ TABDECL(OP_UND), +/* 0110 0111 0110 */ TABDECL(OP_LDRB_M_ROR_IMM_OFF_POSTIND), // OP_LDRB_M_ROR_IMM_OFF_POSTIND +/* 0110 0111 0111 */ TABDECL(OP_UND), +/* 0110 0111 1000 */ TABDECL(OP_LDRB_M_LSL_IMM_OFF_POSTIND), // OP_LDRB_M_LSL_IMM_OFF_POSTIND +/* 0110 0111 1001 */ TABDECL(OP_UND), +/* 0110 0111 1010 */ TABDECL(OP_LDRB_M_LSR_IMM_OFF_POSTIND), // OP_LDRB_M_LSR_IMM_OFF_POSTIND +/* 0110 0111 1011 */ TABDECL(OP_UND), +/* 0110 0111 1100 */ TABDECL(OP_LDRB_M_ASR_IMM_OFF_POSTIND), // OP_LDRB_M_ASR_IMM_OFF_POSTIND +/* 0110 0111 1101 */ TABDECL(OP_UND), +/* 0110 0111 1110 */ TABDECL(OP_LDRB_M_ROR_IMM_OFF_POSTIND), // OP_LDRB_M_ROR_IMM_OFF_POSTIND +/* 0110 0111 1111 */ TABDECL(OP_UND), + +/* 0110 1000 0000 */ TABDECL(OP_STR_P_LSL_IMM_OFF_POSTIND), // OP_STR_P_LSL_IMM_OFF_POSTIND +/* 0110 1000 0001 */ TABDECL(OP_UND), +/* 0110 1000 0010 */ TABDECL(OP_STR_P_LSR_IMM_OFF_POSTIND), // OP_STR_P_LSR_IMM_OFF_POSTIND +/* 0110 1000 0011 */ TABDECL(OP_UND), +/* 0110 1000 0100 */ TABDECL(OP_STR_P_ASR_IMM_OFF_POSTIND), // OP_STR_P_ASR_IMM_OFF_POSTIND +/* 0110 1000 0101 */ TABDECL(OP_UND), +/* 0110 1000 0110 */ TABDECL(OP_STR_P_ROR_IMM_OFF_POSTIND), // OP_STR_P_ROR_IMM_OFF_POSTIND +/* 0110 1000 0111 */ TABDECL(OP_UND), +/* 0110 1000 1000 */ TABDECL(OP_STR_P_LSL_IMM_OFF_POSTIND), // OP_STR_P_LSL_IMM_OFF_POSTIND +/* 0110 1000 1001 */ TABDECL(OP_UND), +/* 0110 1000 1010 */ TABDECL(OP_STR_P_LSR_IMM_OFF_POSTIND), // OP_STR_P_LSR_IMM_OFF_POSTIND +/* 0110 1000 1011 */ TABDECL(OP_UND), +/* 0110 1000 1100 */ TABDECL(OP_STR_P_ASR_IMM_OFF_POSTIND), // OP_STR_P_ASR_IMM_OFF_POSTIND +/* 0110 1000 1101 */ TABDECL(OP_UND), +/* 0110 1000 1110 */ TABDECL(OP_STR_P_ROR_IMM_OFF_POSTIND), // OP_STR_P_ROR_IMM_OFF_POSTIND +/* 0110 1000 1111 */ TABDECL(OP_UND), + +/* 0110 1001 0000 */ TABDECL(OP_LDR_P_LSL_IMM_OFF_POSTIND), // OP_LDR_P_LSL_IMM_OFF_POSTIND +/* 0110 1001 0001 */ TABDECL(OP_UND), +/* 0110 1001 0010 */ TABDECL(OP_LDR_P_LSR_IMM_OFF_POSTIND), // OP_LDR_P_LSR_IMM_OFF_POSTIND +/* 0110 1001 0011 */ TABDECL(OP_UND), +/* 0110 1001 0100 */ TABDECL(OP_LDR_P_ASR_IMM_OFF_POSTIND), // OP_LDR_P_ASR_IMM_OFF_POSTIND +/* 0110 1001 0101 */ TABDECL(OP_UND), +/* 0110 1001 0110 */ TABDECL(OP_LDR_P_ROR_IMM_OFF_POSTIND), // OP_LDR_P_ROR_IMM_OFF_POSTIND +/* 0110 1001 0111 */ TABDECL(OP_UND), +/* 0110 1001 1000 */ TABDECL(OP_LDR_P_LSL_IMM_OFF_POSTIND), // OP_LDR_P_LSL_IMM_OFF_POSTIND +/* 0110 1001 1001 */ TABDECL(OP_UND), +/* 0110 1001 1010 */ TABDECL(OP_LDR_P_LSR_IMM_OFF_POSTIND), // OP_LDR_P_LSR_IMM_OFF_POSTIND +/* 0110 1001 1011 */ TABDECL(OP_UND), +/* 0110 1001 1100 */ TABDECL(OP_LDR_P_ASR_IMM_OFF_POSTIND), // OP_LDR_P_ASR_IMM_OFF_POSTIND +/* 0110 1001 1101 */ TABDECL(OP_UND), +/* 0110 1001 1110 */ TABDECL(OP_LDR_P_ROR_IMM_OFF_POSTIND), // OP_LDR_P_ROR_IMM_OFF_POSTIND +/* 0110 1001 1111 */ TABDECL(OP_UND), + +/* 0110 1010 0000 */ TABDECL(OP_STR_P_LSL_IMM_OFF_POSTIND), // OP_STR_P_LSL_IMM_OFF_POSTIND +/* 0110 1010 0001 */ TABDECL(OP_UND), +/* 0110 1010 0010 */ TABDECL(OP_STR_P_LSR_IMM_OFF_POSTIND), // OP_STR_P_LSR_IMM_OFF_POSTIND +/* 0110 1010 0011 */ TABDECL(OP_UND), +/* 0110 1010 0100 */ TABDECL(OP_STR_P_ASR_IMM_OFF_POSTIND), // OP_STR_P_ASR_IMM_OFF_POSTIND +/* 0110 1010 0101 */ TABDECL(OP_UND), +/* 0110 1010 0110 */ TABDECL(OP_STR_P_ROR_IMM_OFF_POSTIND), // OP_STR_P_ROR_IMM_OFF_POSTIND +/* 0110 1010 0111 */ TABDECL(OP_UND), +/* 0110 1010 1000 */ TABDECL(OP_STR_P_LSL_IMM_OFF_POSTIND), // OP_STR_P_LSL_IMM_OFF_POSTIND +/* 0110 1010 1001 */ TABDECL(OP_UND), +/* 0110 1010 1010 */ TABDECL(OP_STR_P_LSR_IMM_OFF_POSTIND), // OP_STR_P_LSR_IMM_OFF_POSTIND +/* 0110 1010 1011 */ TABDECL(OP_UND), +/* 0110 1010 1100 */ TABDECL(OP_STR_P_ASR_IMM_OFF_POSTIND), // OP_STR_P_ASR_IMM_OFF_POSTIND +/* 0110 1010 1101 */ TABDECL(OP_UND), +/* 0110 1010 1110 */ TABDECL(OP_STR_P_ROR_IMM_OFF_POSTIND), // OP_STR_P_ROR_IMM_OFF_POSTIND +/* 0110 1010 1111 */ TABDECL(OP_UND), + +/* 0110 1011 0000 */ TABDECL(OP_LDR_P_LSL_IMM_OFF_POSTIND), // OP_LDR_P_LSL_IMM_OFF_POSTIND +/* 0110 1011 0001 */ TABDECL(OP_UND), +/* 0110 1011 0010 */ TABDECL(OP_LDR_P_LSL_IMM_OFF_POSTIND), // OP_LDR_P_LSL_IMM_OFF_POSTIND +/* 0110 1011 0011 */ TABDECL(OP_UND), +/* 0110 1011 0100 */ TABDECL(OP_LDR_P_LSL_IMM_OFF_POSTIND), // OP_LDR_P_LSL_IMM_OFF_POSTIND +/* 0110 1011 0101 */ TABDECL(OP_UND), +/* 0110 1011 0110 */ TABDECL(OP_LDR_P_LSL_IMM_OFF_POSTIND), // OP_LDR_P_LSL_IMM_OFF_POSTIND +/* 0110 1011 0111 */ TABDECL(OP_UND), +/* 0110 1011 1000 */ TABDECL(OP_LDR_P_LSL_IMM_OFF_POSTIND), // OP_LDR_P_LSL_IMM_OFF_POSTIND +/* 0110 1011 1001 */ TABDECL(OP_UND), +/* 0110 1011 1010 */ TABDECL(OP_LDR_P_LSL_IMM_OFF_POSTIND), // OP_LDR_P_LSL_IMM_OFF_POSTIND +/* 0110 1011 1011 */ TABDECL(OP_UND), +/* 0110 1011 1100 */ TABDECL(OP_LDR_P_LSL_IMM_OFF_POSTIND), // OP_LDR_P_LSL_IMM_OFF_POSTIND +/* 0110 1011 1101 */ TABDECL(OP_UND), +/* 0110 1011 1110 */ TABDECL(OP_LDR_P_LSL_IMM_OFF_POSTIND), // OP_LDR_P_LSL_IMM_OFF_POSTIND +/* 0110 1011 1111 */ TABDECL(OP_UND), + +/* 0110 1100 0000 */ TABDECL(OP_STRB_P_LSL_IMM_OFF_POSTIND), // OP_STRB_P_LSL_IMM_OFF_POSTIND +/* 0110 1100 0001 */ TABDECL(OP_UND), +/* 0110 1100 0010 */ TABDECL(OP_STRB_P_LSR_IMM_OFF_POSTIND), // OP_STRB_P_LSR_IMM_OFF_POSTIND +/* 0110 1100 0011 */ TABDECL(OP_UND), +/* 0110 1100 0100 */ TABDECL(OP_STRB_P_ASR_IMM_OFF_POSTIND), // OP_STRB_P_ASR_IMM_OFF_POSTIND +/* 0110 1100 0101 */ TABDECL(OP_UND), +/* 0110 1100 0110 */ TABDECL(OP_STRB_P_ROR_IMM_OFF_POSTIND), // OP_STRB_P_ROR_IMM_OFF_POSTIND +/* 0110 1100 0111 */ TABDECL(OP_UND), +/* 0110 1100 1000 */ TABDECL(OP_STRB_P_LSL_IMM_OFF_POSTIND), // OP_STRB_P_LSL_IMM_OFF_POSTIND +/* 0110 1100 1001 */ TABDECL(OP_UND), +/* 0110 1100 1010 */ TABDECL(OP_STRB_P_LSR_IMM_OFF_POSTIND), // OP_STRB_P_LSR_IMM_OFF_POSTIND +/* 0110 1100 1011 */ TABDECL(OP_UND), +/* 0110 1100 1100 */ TABDECL(OP_STRB_P_ASR_IMM_OFF_POSTIND), // OP_STRB_P_ASR_IMM_OFF_POSTIND +/* 0110 1100 1101 */ TABDECL(OP_UND), +/* 0110 1100 1110 */ TABDECL(OP_STRB_P_ROR_IMM_OFF_POSTIND), // OP_STRB_P_ROR_IMM_OFF_POSTIND +/* 0110 1100 1111 */ TABDECL(OP_UND), + +/* 0110 1101 0000 */ TABDECL(OP_LDRB_P_LSL_IMM_OFF_POSTIND), // OP_LDRB_P_LSL_IMM_OFF_POSTIND +/* 0110 1101 0001 */ TABDECL(OP_UND), +/* 0110 1101 0010 */ TABDECL(OP_LDRB_P_LSR_IMM_OFF_POSTIND), // OP_LDRB_P_LSR_IMM_OFF_POSTIND +/* 0110 1101 0011 */ TABDECL(OP_UND), +/* 0110 1101 0100 */ TABDECL(OP_LDRB_P_ASR_IMM_OFF_POSTIND), // OP_LDRB_P_ASR_IMM_OFF_POSTIND +/* 0110 1101 0101 */ TABDECL(OP_UND), +/* 0110 1101 0110 */ TABDECL(OP_LDRB_P_ROR_IMM_OFF_POSTIND), // OP_LDRB_P_ROR_IMM_OFF_POSTIND +/* 0110 1101 0111 */ TABDECL(OP_UND), +/* 0110 1101 1000 */ TABDECL(OP_LDRB_P_LSL_IMM_OFF_POSTIND), // OP_LDRB_P_LSL_IMM_OFF_POSTIND +/* 0110 1101 1001 */ TABDECL(OP_UND), +/* 0110 1101 1010 */ TABDECL(OP_LDRB_P_LSR_IMM_OFF_POSTIND), // OP_LDRB_P_LSR_IMM_OFF_POSTIND +/* 0110 1101 1011 */ TABDECL(OP_UND), +/* 0110 1101 1100 */ TABDECL(OP_LDRB_P_ASR_IMM_OFF_POSTIND), // OP_LDRB_P_ASR_IMM_OFF_POSTIND +/* 0110 1101 1101 */ TABDECL(OP_UND), +/* 0110 1101 1110 */ TABDECL(OP_LDRB_P_ROR_IMM_OFF_POSTIND), // OP_LDRB_P_ROR_IMM_OFF_POSTIND +/* 0110 1101 1111 */ TABDECL(OP_UND), + +/* 0110 1110 0000 */ TABDECL(OP_STRB_P_LSL_IMM_OFF_POSTIND), // OP_STRB_P_LSL_IMM_OFF_POSTIND +/* 0110 1110 0001 */ TABDECL(OP_UND), +/* 0110 1110 0010 */ TABDECL(OP_STRB_P_LSR_IMM_OFF_POSTIND), // OP_STRB_P_LSR_IMM_OFF_POSTIND +/* 0110 1110 0011 */ TABDECL(OP_UND), +/* 0110 1110 0100 */ TABDECL(OP_STRB_P_ASR_IMM_OFF_POSTIND), // OP_STRB_P_ASR_IMM_OFF_POSTIND +/* 0110 1110 0101 */ TABDECL(OP_UND), +/* 0110 1110 0110 */ TABDECL(OP_STRB_P_ROR_IMM_OFF_POSTIND), // OP_STRB_P_ROR_IMM_OFF_POSTIND +/* 0110 1110 0111 */ TABDECL(OP_UND), +/* 0110 1110 1000 */ TABDECL(OP_STRB_P_LSL_IMM_OFF_POSTIND), // OP_STRB_P_LSL_IMM_OFF_POSTIND +/* 0110 1110 1001 */ TABDECL(OP_UND), +/* 0110 1110 1010 */ TABDECL(OP_STRB_P_LSR_IMM_OFF_POSTIND), // OP_STRB_P_LSR_IMM_OFF_POSTIND +/* 0110 1110 1011 */ TABDECL(OP_UND), +/* 0110 1110 1100 */ TABDECL(OP_STRB_P_ASR_IMM_OFF_POSTIND), // OP_STRB_P_ASR_IMM_OFF_POSTIND +/* 0110 1110 1101 */ TABDECL(OP_UND), +/* 0110 1110 1110 */ TABDECL(OP_STRB_P_ROR_IMM_OFF_POSTIND), // OP_STRB_P_ROR_IMM_OFF_POSTIND +/* 0110 1110 1111 */ TABDECL(OP_UND), + +/* 0110 1111 0000 */ TABDECL(OP_LDRB_P_LSL_IMM_OFF_POSTIND), // OP_LDRB_P_LSL_IMM_OFF_POSTIND +/* 0110 1111 0001 */ TABDECL(OP_UND), +/* 0110 1111 0010 */ TABDECL(OP_LDRB_P_LSR_IMM_OFF_POSTIND), // OP_LDRB_P_LSR_IMM_OFF_POSTIND +/* 0110 1111 0011 */ TABDECL(OP_UND), +/* 0110 1111 0100 */ TABDECL(OP_LDRB_P_ASR_IMM_OFF_POSTIND), // OP_LDRB_P_ASR_IMM_OFF_POSTIND +/* 0110 1111 0101 */ TABDECL(OP_UND), +/* 0110 1111 0110 */ TABDECL(OP_LDRB_P_ROR_IMM_OFF_POSTIND), // OP_LDRB_P_ROR_IMM_OFF_POSTIND +/* 0110 1111 0111 */ TABDECL(OP_UND), +/* 0110 1111 1000 */ TABDECL(OP_LDRB_P_LSL_IMM_OFF_POSTIND), // OP_LDRB_P_LSL_IMM_OFF_POSTIND +/* 0110 1111 1001 */ TABDECL(OP_UND), +/* 0110 1111 1010 */ TABDECL(OP_LDRB_P_LSR_IMM_OFF_POSTIND), // OP_LDRB_P_LSR_IMM_OFF_POSTIND +/* 0110 1111 1011 */ TABDECL(OP_UND), +/* 0110 1111 1100 */ TABDECL(OP_LDRB_P_ASR_IMM_OFF_POSTIND), // OP_LDRB_P_ASR_IMM_OFF_POSTIND +/* 0110 1111 1101 */ TABDECL(OP_UND), +/* 0110 1111 1110 */ TABDECL(OP_LDRB_P_ROR_IMM_OFF_POSTIND), // OP_LDRB_P_ROR_IMM_OFF_POSTIND +/* 0110 1111 1111 */ TABDECL(OP_UND), + +/* 0111 0000 0000 */ TABDECL(OP_STR_M_LSL_IMM_OFF), // OP_STR_M_LSL_IMM_OFF +/* 0111 0000 0001 */ TABDECL(OP_UND), +/* 0111 0000 0010 */ TABDECL(OP_STR_M_LSR_IMM_OFF), // OP_STR_M_LSR_IMM_OFF +/* 0111 0000 0011 */ TABDECL(OP_UND), +/* 0111 0000 0100 */ TABDECL(OP_STR_M_ASR_IMM_OFF), // OP_STR_M_ASR_IMM_OFF +/* 0111 0000 0101 */ TABDECL(OP_UND), +/* 0111 0000 0110 */ TABDECL(OP_STR_M_ROR_IMM_OFF), // OP_STR_M_ROR_IMM_OFF +/* 0111 0000 0111 */ TABDECL(OP_UND), +/* 0111 0000 1000 */ TABDECL(OP_STR_M_LSL_IMM_OFF), // OP_STR_M_LSL_IMM_OFF +/* 0111 0000 1001 */ TABDECL(OP_UND), +/* 0111 0000 1010 */ TABDECL(OP_STR_M_LSR_IMM_OFF), // OP_STR_M_LSR_IMM_OFF +/* 0111 0000 1011 */ TABDECL(OP_UND), +/* 0111 0000 1100 */ TABDECL(OP_STR_M_ASR_IMM_OFF), // OP_STR_M_ASR_IMM_OFF +/* 0111 0000 1101 */ TABDECL(OP_UND), +/* 0111 0000 1110 */ TABDECL(OP_STR_M_ROR_IMM_OFF), // OP_STR_M_ROR_IMM_OFF +/* 0111 0000 1111 */ TABDECL(OP_UND), + +/* 0111 0001 0000 */ TABDECL(OP_LDR_M_LSL_IMM_OFF), // OP_LDR_M_LSL_IMM_OFF +/* 0111 0001 0001 */ TABDECL(OP_UND), +/* 0111 0001 0010 */ TABDECL(OP_LDR_M_LSR_IMM_OFF), // OP_LDR_M_LSR_IMM_OFF +/* 0111 0001 0011 */ TABDECL(OP_UND), +/* 0111 0001 0100 */ TABDECL(OP_LDR_M_ASR_IMM_OFF), // OP_LDR_M_ASR_IMM_OFF +/* 0111 0001 0101 */ TABDECL(OP_UND), +/* 0111 0001 0110 */ TABDECL(OP_LDR_M_ROR_IMM_OFF), // OP_LDR_M_ROR_IMM_OFF +/* 0111 0001 0111 */ TABDECL(OP_UND), +/* 0111 0001 1000 */ TABDECL(OP_LDR_M_LSL_IMM_OFF), // OP_LDR_M_LSL_IMM_OFF +/* 0111 0001 1001 */ TABDECL(OP_UND), +/* 0111 0001 1010 */ TABDECL(OP_LDR_M_LSR_IMM_OFF), // OP_LDR_M_LSR_IMM_OFF +/* 0111 0001 1011 */ TABDECL(OP_UND), +/* 0111 0001 1100 */ TABDECL(OP_LDR_M_ASR_IMM_OFF), // OP_LDR_M_ASR_IMM_OFF +/* 0111 0001 1101 */ TABDECL(OP_UND), +/* 0111 0001 1110 */ TABDECL(OP_LDR_M_ROR_IMM_OFF), // OP_LDR_M_ROR_IMM_OFF +/* 0111 0001 1111 */ TABDECL(OP_UND), + +/* 0111 0010 0000 */ TABDECL(OP_STR_M_LSL_IMM_OFF_PREIND), // OP_STR_M_LSL_IMM_OFF_PREIND +/* 0111 0010 0001 */ TABDECL(OP_UND), +/* 0111 0010 0010 */ TABDECL(OP_STR_M_LSR_IMM_OFF_PREIND), // OP_STR_M_LSR_IMM_OFF_PREIND +/* 0111 0010 0011 */ TABDECL(OP_UND), +/* 0111 0010 0100 */ TABDECL(OP_STR_M_ASR_IMM_OFF_PREIND), // OP_STR_M_ASR_IMM_OFF_PREIND +/* 0111 0010 0101 */ TABDECL(OP_UND), +/* 0111 0010 0110 */ TABDECL(OP_STR_M_ROR_IMM_OFF_PREIND), // OP_STR_M_ROR_IMM_OFF_PREIND +/* 0111 0010 0111 */ TABDECL(OP_UND), +/* 0111 0010 1000 */ TABDECL(OP_STR_M_LSL_IMM_OFF_PREIND), // OP_STR_M_LSL_IMM_OFF_PREIND +/* 0111 0010 1001 */ TABDECL(OP_UND), +/* 0111 0010 1010 */ TABDECL(OP_STR_M_LSR_IMM_OFF_PREIND), // OP_STR_M_LSR_IMM_OFF_PREIND +/* 0111 0010 1011 */ TABDECL(OP_UND), +/* 0111 0010 1100 */ TABDECL(OP_STR_M_ASR_IMM_OFF_PREIND), // OP_STR_M_ASR_IMM_OFF_PREIND +/* 0111 0010 1101 */ TABDECL(OP_UND), +/* 0111 0010 1110 */ TABDECL(OP_STR_M_ROR_IMM_OFF_PREIND), // OP_STR_M_ROR_IMM_OFF_PREIND +/* 0111 0010 1111 */ TABDECL(OP_UND), + +/* 0111 0011 0000 */ TABDECL(OP_LDR_M_LSL_IMM_OFF_PREIND), // OP_LDR_M_LSL_IMM_OFF_PREIND +/* 0111 0011 0001 */ TABDECL(OP_UND), +/* 0111 0011 0010 */ TABDECL(OP_LDR_M_LSR_IMM_OFF_PREIND), // OP_LDR_M_LSR_IMM_OFF_PREIND +/* 0111 0011 0011 */ TABDECL(OP_UND), +/* 0111 0011 0100 */ TABDECL(OP_LDR_M_ASR_IMM_OFF_PREIND), // OP_LDR_M_ASR_IMM_OFF_PREIND +/* 0111 0011 0101 */ TABDECL(OP_UND), +/* 0111 0011 0110 */ TABDECL(OP_LDR_M_ROR_IMM_OFF_PREIND), // OP_LDR_M_ROR_IMM_OFF_PREIND +/* 0111 0011 0111 */ TABDECL(OP_UND), +/* 0111 0011 1000 */ TABDECL(OP_LDR_M_LSL_IMM_OFF_PREIND), // OP_LDR_M_LSL_IMM_OFF_PREIND +/* 0111 0011 1001 */ TABDECL(OP_UND), +/* 0111 0011 1010 */ TABDECL(OP_LDR_M_LSR_IMM_OFF_PREIND), // OP_LDR_M_LSR_IMM_OFF_PREIND +/* 0111 0011 1011 */ TABDECL(OP_UND), +/* 0111 0011 1100 */ TABDECL(OP_LDR_M_ASR_IMM_OFF_PREIND), // OP_LDR_M_ASR_IMM_OFF_PREIND +/* 0111 0011 1101 */ TABDECL(OP_UND), +/* 0111 0011 1110 */ TABDECL(OP_LDR_M_ROR_IMM_OFF_PREIND), // OP_LDR_M_ROR_IMM_OFF_PREIND +/* 0111 0011 1111 */ TABDECL(OP_UND), + +/* 0111 0100 0000 */ TABDECL(OP_STRB_M_LSL_IMM_OFF), // OP_STRB_M_LSL_IMM_OFF +/* 0111 0100 0001 */ TABDECL(OP_UND), +/* 0111 0100 0010 */ TABDECL(OP_STRB_M_LSR_IMM_OFF), // OP_STRB_M_LSR_IMM_OFF +/* 0111 0100 0011 */ TABDECL(OP_UND), +/* 0111 0100 0100 */ TABDECL(OP_STRB_M_ASR_IMM_OFF), // OP_STRB_M_ASR_IMM_OFF +/* 0111 0100 0101 */ TABDECL(OP_UND), +/* 0111 0100 0110 */ TABDECL(OP_STRB_M_ROR_IMM_OFF), // OP_STRB_M_ROR_IMM_OFF +/* 0111 0100 0111 */ TABDECL(OP_UND), +/* 0111 0100 1000 */ TABDECL(OP_STRB_M_LSL_IMM_OFF), // OP_STRB_M_LSL_IMM_OFF +/* 0111 0100 1001 */ TABDECL(OP_UND), +/* 0111 0100 1010 */ TABDECL(OP_STRB_M_LSR_IMM_OFF), // OP_STRB_M_LSR_IMM_OFF +/* 0111 0100 1011 */ TABDECL(OP_UND), +/* 0111 0100 1100 */ TABDECL(OP_STRB_M_ASR_IMM_OFF), // OP_STRB_M_ASR_IMM_OFF +/* 0111 0100 1101 */ TABDECL(OP_UND), +/* 0111 0100 1110 */ TABDECL(OP_STRB_M_ROR_IMM_OFF), // OP_STRB_M_ROR_IMM_OFF +/* 0111 0100 1111 */ TABDECL(OP_UND), + +/* 0111 0101 0000 */ TABDECL(OP_LDRB_M_LSL_IMM_OFF), // OP_LDRB_M_LSL_IMM_OFF +/* 0111 0101 0001 */ TABDECL(OP_UND), +/* 0111 0101 0010 */ TABDECL(OP_LDRB_M_LSR_IMM_OFF), // OP_LDRB_M_LSR_IMM_OFF +/* 0111 0101 0011 */ TABDECL(OP_UND), +/* 0111 0101 0100 */ TABDECL(OP_LDRB_M_ASR_IMM_OFF), // OP_LDRB_M_ASR_IMM_OFF +/* 0111 0101 0101 */ TABDECL(OP_UND), +/* 0111 0101 0110 */ TABDECL(OP_LDRB_M_ROR_IMM_OFF), // OP_LDRB_M_ROR_IMM_OFF +/* 0111 0101 0111 */ TABDECL(OP_UND), +/* 0111 0101 1000 */ TABDECL(OP_LDRB_M_LSL_IMM_OFF), // OP_LDRB_M_LSL_IMM_OFF +/* 0111 0101 1001 */ TABDECL(OP_UND), +/* 0111 0101 1010 */ TABDECL(OP_LDRB_M_LSR_IMM_OFF), // OP_LDRB_M_LSR_IMM_OFF +/* 0111 0101 1011 */ TABDECL(OP_UND), +/* 0111 0101 1100 */ TABDECL(OP_LDRB_M_ASR_IMM_OFF), // OP_LDRB_M_ASR_IMM_OFF +/* 0111 0101 1101 */ TABDECL(OP_UND), +/* 0111 0101 1110 */ TABDECL(OP_LDRB_M_ROR_IMM_OFF), // OP_LDRB_M_ROR_IMM_OFF +/* 0111 0101 1111 */ TABDECL(OP_UND), + +/* 0111 0110 0000 */ TABDECL(OP_STRB_M_LSL_IMM_OFF_PREIND), // OP_STRB_M_LSL_IMM_OFF_PREIND +/* 0111 0110 0001 */ TABDECL(OP_UND), +/* 0111 0110 0010 */ TABDECL(OP_STRB_M_LSR_IMM_OFF_PREIND), // OP_STRB_M_LSR_IMM_OFF_PREIND +/* 0111 0110 0011 */ TABDECL(OP_UND), +/* 0111 0110 0100 */ TABDECL(OP_STRB_M_ASR_IMM_OFF_PREIND), // OP_STRB_M_ASR_IMM_OFF_PREIND +/* 0111 0110 0101 */ TABDECL(OP_UND), +/* 0111 0110 0110 */ TABDECL(OP_STRB_M_ROR_IMM_OFF_PREIND), // OP_STRB_M_ROR_IMM_OFF_PREIND +/* 0111 0110 0111 */ TABDECL(OP_UND), +/* 0111 0110 1000 */ TABDECL(OP_STRB_M_LSL_IMM_OFF_PREIND), // OP_STRB_M_LSL_IMM_OFF_PREIND +/* 0111 0110 1001 */ TABDECL(OP_UND), +/* 0111 0110 1010 */ TABDECL(OP_STRB_M_LSR_IMM_OFF_PREIND), // OP_STRB_M_LSR_IMM_OFF_PREIND +/* 0111 0110 1011 */ TABDECL(OP_UND), +/* 0111 0110 1100 */ TABDECL(OP_STRB_M_ASR_IMM_OFF_PREIND), // OP_STRB_M_ASR_IMM_OFF_PREIND +/* 0111 0110 1101 */ TABDECL(OP_UND), +/* 0111 0110 1110 */ TABDECL(OP_STRB_M_ROR_IMM_OFF_PREIND), // OP_STRB_M_ROR_IMM_OFF_PREIND +/* 0111 0110 1111 */ TABDECL(OP_UND), + +/* 0111 0111 0000 */ TABDECL(OP_LDRB_M_LSL_IMM_OFF_PREIND), // OP_LDRB_M_LSL_IMM_OFF_PREIND +/* 0111 0111 0001 */ TABDECL(OP_UND), +/* 0111 0111 0010 */ TABDECL(OP_LDRB_M_LSR_IMM_OFF_PREIND), // OP_LDRB_M_LSR_IMM_OFF_PREIND +/* 0111 0111 0011 */ TABDECL(OP_UND), +/* 0111 0111 0100 */ TABDECL(OP_LDRB_M_ASR_IMM_OFF_PREIND), // OP_LDRB_M_ASR_IMM_OFF_PREIND +/* 0111 0111 0101 */ TABDECL(OP_UND), +/* 0111 0111 0110 */ TABDECL(OP_LDRB_M_ROR_IMM_OFF_PREIND), // OP_LDRB_M_ROR_IMM_OFF_PREIND +/* 0111 0111 0111 */ TABDECL(OP_UND), +/* 0111 0111 1000 */ TABDECL(OP_LDRB_M_LSL_IMM_OFF_PREIND), // OP_LDRB_M_LSL_IMM_OFF_PREIND +/* 0111 0111 1001 */ TABDECL(OP_UND), +/* 0111 0111 1010 */ TABDECL(OP_LDRB_M_LSR_IMM_OFF_PREIND), // OP_LDRB_M_LSR_IMM_OFF_PREIND +/* 0111 0111 1011 */ TABDECL(OP_UND), +/* 0111 0111 1100 */ TABDECL(OP_LDRB_M_ASR_IMM_OFF_PREIND), // OP_LDRB_M_ASR_IMM_OFF_PREIND +/* 0111 0111 1101 */ TABDECL(OP_UND), +/* 0111 0111 1110 */ TABDECL(OP_LDRB_M_ROR_IMM_OFF_PREIND), // OP_LDRB_M_ROR_IMM_OFF_PREIND +/* 0111 0111 1111 */ TABDECL(OP_UND), + +/* 0111 1000 0000 */ TABDECL(OP_STR_P_LSL_IMM_OFF), // OP_STR_P_LSL_IMM_OFF +/* 0111 1000 0001 */ TABDECL(OP_UND), +/* 0111 1000 0010 */ TABDECL(OP_STR_P_LSR_IMM_OFF), // OP_STR_P_LSR_IMM_OFF +/* 0111 1000 0011 */ TABDECL(OP_UND), +/* 0111 1000 0100 */ TABDECL(OP_STR_P_ASR_IMM_OFF), // OP_STR_P_ASR_IMM_OFF +/* 0111 1000 0101 */ TABDECL(OP_UND), +/* 0111 1000 0110 */ TABDECL(OP_STR_P_ROR_IMM_OFF), // OP_STR_P_ROR_IMM_OFF +/* 0111 1000 0111 */ TABDECL(OP_UND), +/* 0111 1000 1000 */ TABDECL(OP_STR_P_LSL_IMM_OFF), // OP_STR_P_LSL_IMM_OFF +/* 0111 1000 1001 */ TABDECL(OP_UND), +/* 0111 1000 1010 */ TABDECL(OP_STR_P_LSR_IMM_OFF), // OP_STR_P_LSR_IMM_OFF +/* 0111 1000 1011 */ TABDECL(OP_UND), +/* 0111 1000 1100 */ TABDECL(OP_STR_P_ASR_IMM_OFF), // OP_STR_P_ASR_IMM_OFF +/* 0111 1000 1101 */ TABDECL(OP_UND), +/* 0111 1000 1110 */ TABDECL(OP_STR_P_ROR_IMM_OFF), // OP_STR_P_ROR_IMM_OFF +/* 0111 1000 1111 */ TABDECL(OP_UND), + +/* 0111 1001 0000 */ TABDECL(OP_LDR_P_LSL_IMM_OFF), // OP_LDR_P_LSL_IMM_OFF +/* 0111 1001 0001 */ TABDECL(OP_UND), +/* 0111 1001 0010 */ TABDECL(OP_LDR_P_LSR_IMM_OFF), // OP_LDR_P_LSR_IMM_OFF +/* 0111 1001 0011 */ TABDECL(OP_UND), +/* 0111 1001 0100 */ TABDECL(OP_LDR_P_ASR_IMM_OFF), // OP_LDR_P_ASR_IMM_OFF +/* 0111 1001 0101 */ TABDECL(OP_UND), +/* 0111 1001 0110 */ TABDECL(OP_LDR_P_ROR_IMM_OFF), // OP_LDR_P_ROR_IMM_OFF +/* 0111 1001 0111 */ TABDECL(OP_UND), +/* 0111 1001 1000 */ TABDECL(OP_LDR_P_LSL_IMM_OFF), // OP_LDR_P_LSL_IMM_OFF +/* 0111 1001 1001 */ TABDECL(OP_UND), +/* 0111 1001 1010 */ TABDECL(OP_LDR_P_LSR_IMM_OFF), // OP_LDR_P_LSR_IMM_OFF +/* 0111 1001 1011 */ TABDECL(OP_UND), +/* 0111 1001 1100 */ TABDECL(OP_LDR_P_ASR_IMM_OFF), // OP_LDR_P_ASR_IMM_OFF +/* 0111 1001 1101 */ TABDECL(OP_UND), +/* 0111 1001 1110 */ TABDECL(OP_LDR_P_ROR_IMM_OFF), // OP_LDR_P_ROR_IMM_OFF +/* 0111 1001 1111 */ TABDECL(OP_UND), + +/* 0111 1010 0000 */ TABDECL(OP_STR_P_LSL_IMM_OFF_PREIND), // OP_STR_P_LSL_IMM_OFF_PREIND +/* 0111 1010 0001 */ TABDECL(OP_UND), +/* 0111 1010 0010 */ TABDECL(OP_STR_P_LSR_IMM_OFF_PREIND), // OP_STR_P_LSR_IMM_OFF_PREIND +/* 0111 1010 0011 */ TABDECL(OP_UND), +/* 0111 1010 0100 */ TABDECL(OP_STR_P_ASR_IMM_OFF_PREIND), // OP_STR_P_ASR_IMM_OFF_PREIND +/* 0111 1010 0101 */ TABDECL(OP_UND), +/* 0111 1010 0110 */ TABDECL(OP_STR_P_ROR_IMM_OFF_PREIND), // OP_STR_P_ROR_IMM_OFF_PREIND +/* 0111 1010 0111 */ TABDECL(OP_UND), +/* 0111 1010 1000 */ TABDECL(OP_STR_P_LSL_IMM_OFF_PREIND), // OP_STR_P_LSL_IMM_OFF_PREIND +/* 0111 1010 1001 */ TABDECL(OP_UND), +/* 0111 1010 1010 */ TABDECL(OP_STR_P_LSR_IMM_OFF_PREIND), // OP_STR_P_LSR_IMM_OFF_PREIND +/* 0111 1010 1011 */ TABDECL(OP_UND), +/* 0111 1010 1100 */ TABDECL(OP_STR_P_ASR_IMM_OFF_PREIND), // OP_STR_P_ASR_IMM_OFF_PREIND +/* 0111 1010 1101 */ TABDECL(OP_UND), +/* 0111 1010 1110 */ TABDECL(OP_STR_P_ROR_IMM_OFF_PREIND), // OP_STR_P_ROR_IMM_OFF_PREIND +/* 0111 1010 1111 */ TABDECL(OP_UND), + +/* 0111 1011 0000 */ TABDECL(OP_LDR_P_LSL_IMM_OFF_PREIND), // OP_LDR_P_LSL_IMM_OFF_PREIND +/* 0111 1011 0001 */ TABDECL(OP_UND), +/* 0111 1011 0010 */ TABDECL(OP_LDR_P_LSR_IMM_OFF_PREIND), // OP_LDR_P_LSR_IMM_OFF_PREIND +/* 0111 1011 0011 */ TABDECL(OP_UND), +/* 0111 1011 0100 */ TABDECL(OP_LDR_P_ASR_IMM_OFF_PREIND), // OP_LDR_P_ASR_IMM_OFF_PREIND +/* 0111 1011 0101 */ TABDECL(OP_UND), +/* 0111 1011 0110 */ TABDECL(OP_LDR_P_ROR_IMM_OFF_PREIND), // OP_LDR_P_ROR_IMM_OFF_PREIND +/* 0111 1011 0111 */ TABDECL(OP_UND), +/* 0111 1011 1000 */ TABDECL(OP_LDR_P_LSL_IMM_OFF_PREIND), // OP_LDR_P_LSL_IMM_OFF_PREIND +/* 0111 1011 1001 */ TABDECL(OP_UND), +/* 0111 1011 1010 */ TABDECL(OP_LDR_P_LSR_IMM_OFF_PREIND), // OP_LDR_P_LSR_IMM_OFF_PREIND +/* 0111 1011 1011 */ TABDECL(OP_UND), +/* 0111 1011 1100 */ TABDECL(OP_LDR_P_ASR_IMM_OFF_PREIND), // OP_LDR_P_ASR_IMM_OFF_PREIND +/* 0111 1011 1101 */ TABDECL(OP_UND), +/* 0111 1011 1110 */ TABDECL(OP_LDR_P_ROR_IMM_OFF_PREIND), // OP_LDR_P_ROR_IMM_OFF_PREIND +/* 0111 1011 1111 */ TABDECL(OP_UND), + +/* 0111 1100 0000 */ TABDECL(OP_STRB_P_LSL_IMM_OFF), // OP_STRB_P_LSL_IMM_OFF +/* 0111 1100 0001 */ TABDECL(OP_UND), +/* 0111 1100 0010 */ TABDECL(OP_STRB_P_LSR_IMM_OFF), // OP_STRB_P_LSR_IMM_OFF +/* 0111 1100 0011 */ TABDECL(OP_UND), +/* 0111 1100 0100 */ TABDECL(OP_STRB_P_ASR_IMM_OFF), // OP_STRB_P_ASR_IMM_OFF +/* 0111 1100 0101 */ TABDECL(OP_UND), +/* 0111 1100 0110 */ TABDECL(OP_STRB_P_ROR_IMM_OFF), // OP_STRB_P_ROR_IMM_OFF +/* 0111 1100 0111 */ TABDECL(OP_UND), +/* 0111 1100 1000 */ TABDECL(OP_STRB_P_LSL_IMM_OFF), // OP_STRB_P_LSL_IMM_OFF +/* 0111 1100 1001 */ TABDECL(OP_UND), +/* 0111 1100 1010 */ TABDECL(OP_STRB_P_LSR_IMM_OFF), // OP_STRB_P_LSR_IMM_OFF +/* 0111 1100 1011 */ TABDECL(OP_UND), +/* 0111 1100 1100 */ TABDECL(OP_STRB_P_ASR_IMM_OFF), // OP_STRB_P_ASR_IMM_OFF +/* 0111 1100 1101 */ TABDECL(OP_UND), +/* 0111 1100 1110 */ TABDECL(OP_STRB_P_ROR_IMM_OFF), // OP_STRB_P_ROR_IMM_OFF +/* 0111 1100 1111 */ TABDECL(OP_UND), + +/* 0111 1101 0000 */ TABDECL(OP_LDRB_P_LSL_IMM_OFF), // OP_LDRB_P_LSL_IMM_OFF +/* 0111 1101 0001 */ TABDECL(OP_UND), +/* 0111 1101 0010 */ TABDECL(OP_LDRB_P_LSR_IMM_OFF), // OP_LDRB_P_LSR_IMM_OFF +/* 0111 1101 0011 */ TABDECL(OP_UND), +/* 0111 1101 0100 */ TABDECL(OP_LDRB_P_ASR_IMM_OFF), // OP_LDRB_P_ASR_IMM_OFF +/* 0111 1101 0101 */ TABDECL(OP_UND), +/* 0111 1101 0110 */ TABDECL(OP_LDRB_P_ROR_IMM_OFF), // OP_LDRB_P_ROR_IMM_OFF +/* 0111 1101 0111 */ TABDECL(OP_UND), +/* 0111 1101 1000 */ TABDECL(OP_LDRB_P_LSL_IMM_OFF), // OP_LDRB_P_LSL_IMM_OFF +/* 0111 1101 1001 */ TABDECL(OP_UND), +/* 0111 1101 1010 */ TABDECL(OP_LDRB_P_LSR_IMM_OFF), // OP_LDRB_P_LSR_IMM_OFF +/* 0111 1101 1011 */ TABDECL(OP_UND), +/* 0111 1101 1100 */ TABDECL(OP_LDRB_P_ASR_IMM_OFF), // OP_LDRB_P_ASR_IMM_OFF +/* 0111 1101 1101 */ TABDECL(OP_UND), +/* 0111 1101 1110 */ TABDECL(OP_LDRB_P_ROR_IMM_OFF), // OP_LDRB_P_ROR_IMM_OFF +/* 0111 1101 1111 */ TABDECL(OP_UND), + +/* 0111 1110 0000 */ TABDECL(OP_STRB_P_LSL_IMM_OFF_PREIND), // OP_STRB_P_LSL_IMM_OFF_PREIND +/* 0111 1110 0001 */ TABDECL(OP_UND), +/* 0111 1110 0010 */ TABDECL(OP_STRB_P_LSR_IMM_OFF_PREIND), // OP_STRB_P_LSR_IMM_OFF_PREIND +/* 0111 1110 0011 */ TABDECL(OP_UND), +/* 0111 1110 0100 */ TABDECL(OP_STRB_P_ASR_IMM_OFF_PREIND), // OP_STRB_P_ASR_IMM_OFF_PREIND +/* 0111 1110 0101 */ TABDECL(OP_UND), +/* 0111 1110 0110 */ TABDECL(OP_STRB_P_ROR_IMM_OFF_PREIND), // OP_STRB_P_ROR_IMM_OFF_PREIND +/* 0111 1110 0111 */ TABDECL(OP_UND), +/* 0111 1110 1000 */ TABDECL(OP_STRB_P_LSL_IMM_OFF_PREIND), // OP_STRB_P_LSL_IMM_OFF_PREIND +/* 0111 1110 1001 */ TABDECL(OP_UND), +/* 0111 1110 1010 */ TABDECL(OP_STRB_P_LSR_IMM_OFF_PREIND), // OP_STRB_P_LSR_IMM_OFF_PREIND +/* 0111 1110 1011 */ TABDECL(OP_UND), +/* 0111 1110 1100 */ TABDECL(OP_STRB_P_ASR_IMM_OFF_PREIND), // OP_STRB_P_ASR_IMM_OFF_PREIND +/* 0111 1110 1101 */ TABDECL(OP_UND), +/* 0111 1110 1110 */ TABDECL(OP_STRB_P_ROR_IMM_OFF_PREIND), // OP_STRB_P_ROR_IMM_OFF_PREIND +/* 0111 1110 1111 */ TABDECL(OP_UND), + +/* 0111 1111 0000 */ TABDECL(OP_LDRB_P_LSL_IMM_OFF_PREIND), // OP_LDRB_P_LSL_IMM_OFF_PREIND +/* 0111 1111 0001 */ TABDECL(OP_UND), +/* 0111 1111 0010 */ TABDECL(OP_LDRB_P_LSR_IMM_OFF_PREIND), // OP_LDRB_P_LSR_IMM_OFF_PREIND +/* 0111 1111 0011 */ TABDECL(OP_UND), +/* 0111 1111 0100 */ TABDECL(OP_LDRB_P_ASR_IMM_OFF_PREIND), // OP_LDRB_P_ASR_IMM_OFF_PREIND +/* 0111 1111 0101 */ TABDECL(OP_UND), +/* 0111 1111 0110 */ TABDECL(OP_LDRB_P_ROR_IMM_OFF_PREIND), // OP_LDRB_P_ROR_IMM_OFF_PREIND +/* 0111 1111 0111 */ TABDECL(OP_UND), +/* 0111 1111 1000 */ TABDECL(OP_LDRB_P_LSL_IMM_OFF_PREIND), // OP_LDRB_P_LSL_IMM_OFF_PREIND +/* 0111 1111 1001 */ TABDECL(OP_UND), +/* 0111 1111 1010 */ TABDECL(OP_LDRB_P_LSR_IMM_OFF_PREIND), // OP_LDRB_P_LSR_IMM_OFF_PREIND +/* 0111 1111 1011 */ TABDECL(OP_UND), +/* 0111 1111 1100 */ TABDECL(OP_LDRB_P_ASR_IMM_OFF_PREIND), // OP_LDRB_P_ASR_IMM_OFF_PREIND +/* 0111 1111 1101 */ TABDECL(OP_UND), +/* 0111 1111 1110 */ TABDECL(OP_LDRB_P_ROR_IMM_OFF_PREIND), // OP_LDRB_P_ROR_IMM_OFF_PREIND +/* 0111 1111 1111 */ TABDECL(OP_UND), + +/* 1000 0000 0000 */ TABDECL(OP_STMDA), // OP_STMDA +/* 1000 0000 0001 */ TABDECL(OP_STMDA), // OP_STMDA +/* 1000 0000 0010 */ TABDECL(OP_STMDA), // OP_STMDA +/* 1000 0000 0011 */ TABDECL(OP_STMDA), // OP_STMDA +/* 1000 0000 0100 */ TABDECL(OP_STMDA), // OP_STMDA +/* 1000 0000 0101 */ TABDECL(OP_STMDA), // OP_STMDA +/* 1000 0000 0110 */ TABDECL(OP_STMDA), // OP_STMDA +/* 1000 0000 0111 */ TABDECL(OP_STMDA), // OP_STMDA +/* 1000 0000 1000 */ TABDECL(OP_STMDA), // OP_STMDA +/* 1000 0000 1001 */ TABDECL(OP_STMDA), // OP_STMDA +/* 1000 0000 1010 */ TABDECL(OP_STMDA), // OP_STMDA +/* 1000 0000 1011 */ TABDECL(OP_STMDA), // OP_STMDA +/* 1000 0000 1100 */ TABDECL(OP_STMDA), // OP_STMDA +/* 1000 0000 1101 */ TABDECL(OP_STMDA), // OP_STMDA +/* 1000 0000 1110 */ TABDECL(OP_STMDA), // OP_STMDA +/* 1000 0000 1111 */ TABDECL(OP_STMDA), // OP_STMDA + +/* 1000 0001 0000 */ TABDECL(OP_LDMDA), // OP_LDMDA +/* 1000 0001 0001 */ TABDECL(OP_LDMDA), // OP_LDMDA +/* 1000 0001 0010 */ TABDECL(OP_LDMDA), // OP_LDMDA +/* 1000 0001 0011 */ TABDECL(OP_LDMDA), // OP_LDMDA +/* 1000 0001 0100 */ TABDECL(OP_LDMDA), // OP_LDMDA +/* 1000 0001 0101 */ TABDECL(OP_LDMDA), // OP_LDMDA +/* 1000 0001 0110 */ TABDECL(OP_LDMDA), // OP_LDMDA +/* 1000 0001 0111 */ TABDECL(OP_LDMDA), // OP_LDMDA +/* 1000 0001 1000 */ TABDECL(OP_LDMDA), // OP_LDMDA +/* 1000 0001 1001 */ TABDECL(OP_LDMDA), // OP_LDMDA +/* 1000 0001 1010 */ TABDECL(OP_LDMDA), // OP_LDMDA +/* 1000 0001 1011 */ TABDECL(OP_LDMDA), // OP_LDMDA +/* 1000 0001 1100 */ TABDECL(OP_LDMDA), // OP_LDMDA +/* 1000 0001 1101 */ TABDECL(OP_LDMDA), // OP_LDMDA +/* 1000 0001 1110 */ TABDECL(OP_LDMDA), // OP_LDMDA +/* 1000 0001 1111 */ TABDECL(OP_LDMDA), // OP_LDMDA + +/* 1000 0010 0000 */ TABDECL(OP_STMDA_W), // OP_STMDA_W +/* 1000 0010 0001 */ TABDECL(OP_STMDA_W), // OP_STMDA_W +/* 1000 0010 0010 */ TABDECL(OP_STMDA_W), // OP_STMDA_W +/* 1000 0010 0011 */ TABDECL(OP_STMDA_W), // OP_STMDA_W +/* 1000 0010 0100 */ TABDECL(OP_STMDA_W), // OP_STMDA_W +/* 1000 0010 0101 */ TABDECL(OP_STMDA_W), // OP_STMDA_W +/* 1000 0010 0110 */ TABDECL(OP_STMDA_W), // OP_STMDA_W +/* 1000 0010 0111 */ TABDECL(OP_STMDA_W), // OP_STMDA_W +/* 1000 0010 1000 */ TABDECL(OP_STMDA_W), // OP_STMDA_W +/* 1000 0010 1001 */ TABDECL(OP_STMDA_W), // OP_STMDA_W +/* 1000 0010 1010 */ TABDECL(OP_STMDA_W), // OP_STMDA_W +/* 1000 0010 1011 */ TABDECL(OP_STMDA_W), // OP_STMDA_W +/* 1000 0010 1100 */ TABDECL(OP_STMDA_W), // OP_STMDA_W +/* 1000 0010 1101 */ TABDECL(OP_STMDA_W), // OP_STMDA_W +/* 1000 0010 1110 */ TABDECL(OP_STMDA_W), // OP_STMDA_W +/* 1000 0010 1111 */ TABDECL(OP_STMDA_W), // OP_STMDA_W + +/* 1000 0011 0000 */ TABDECL(OP_LDMDA_W), // OP_LDMDA_W +/* 1000 0011 0001 */ TABDECL(OP_LDMDA_W), // OP_LDMDA_W +/* 1000 0011 0010 */ TABDECL(OP_LDMDA_W), // OP_LDMDA_W +/* 1000 0011 0011 */ TABDECL(OP_LDMDA_W), // OP_LDMDA_W +/* 1000 0011 0100 */ TABDECL(OP_LDMDA_W), // OP_LDMDA_W +/* 1000 0011 0101 */ TABDECL(OP_LDMDA_W), // OP_LDMDA_W +/* 1000 0011 0110 */ TABDECL(OP_LDMDA_W), // OP_LDMDA_W +/* 1000 0011 0111 */ TABDECL(OP_LDMDA_W), // OP_LDMDA_W +/* 1000 0011 1000 */ TABDECL(OP_LDMDA_W), // OP_LDMDA_W +/* 1000 0011 1001 */ TABDECL(OP_LDMDA_W), // OP_LDMDA_W +/* 1000 0011 1010 */ TABDECL(OP_LDMDA_W), // OP_LDMDA_W +/* 1000 0011 1011 */ TABDECL(OP_LDMDA_W), // OP_LDMDA_W +/* 1000 0011 1100 */ TABDECL(OP_LDMDA_W), // OP_LDMDA_W +/* 1000 0011 1101 */ TABDECL(OP_LDMDA_W), // OP_LDMDA_W +/* 1000 0011 1110 */ TABDECL(OP_LDMDA_W), // OP_LDMDA_W +/* 1000 0011 1111 */ TABDECL(OP_LDMDA_W), // OP_LDMDA_W + +/* 1000 0100 0000 */ TABDECL(OP_STMDA2), // OP_STMDA2 +/* 1000 0100 0001 */ TABDECL(OP_STMDA2), // OP_STMDA2 +/* 1000 0100 0010 */ TABDECL(OP_STMDA2), // OP_STMDA2 +/* 1000 0100 0011 */ TABDECL(OP_STMDA2), // OP_STMDA2 +/* 1000 0100 0100 */ TABDECL(OP_STMDA2), // OP_STMDA2 +/* 1000 0100 0101 */ TABDECL(OP_STMDA2), // OP_STMDA2 +/* 1000 0100 0110 */ TABDECL(OP_STMDA2), // OP_STMDA2 +/* 1000 0100 0111 */ TABDECL(OP_STMDA2), // OP_STMDA2 +/* 1000 0100 1000 */ TABDECL(OP_STMDA2), // OP_STMDA2 +/* 1000 0100 1001 */ TABDECL(OP_STMDA2), // OP_STMDA2 +/* 1000 0100 1010 */ TABDECL(OP_STMDA2), // OP_STMDA2 +/* 1000 0100 1011 */ TABDECL(OP_STMDA2), // OP_STMDA2 +/* 1000 0100 1100 */ TABDECL(OP_STMDA2), // OP_STMDA2 +/* 1000 0100 1101 */ TABDECL(OP_STMDA2), // OP_STMDA2 +/* 1000 0100 1110 */ TABDECL(OP_STMDA2), // OP_STMDA2 +/* 1000 0100 1111 */ TABDECL(OP_STMDA2), // OP_STMDA2 + +/* 1000 0101 0000 */ TABDECL(OP_LDMDA2), // OP_LDMDA2 +/* 1000 0101 0001 */ TABDECL(OP_LDMDA2), // OP_LDMDA2 +/* 1000 0101 0010 */ TABDECL(OP_LDMDA2), // OP_LDMDA2 +/* 1000 0101 0011 */ TABDECL(OP_LDMDA2), // OP_LDMDA2 +/* 1000 0101 0100 */ TABDECL(OP_LDMDA2), // OP_LDMDA2 +/* 1000 0101 0101 */ TABDECL(OP_LDMDA2), // OP_LDMDA2 +/* 1000 0101 0110 */ TABDECL(OP_LDMDA2), // OP_LDMDA2 +/* 1000 0101 0111 */ TABDECL(OP_LDMDA2), // OP_LDMDA2 +/* 1000 0101 1000 */ TABDECL(OP_LDMDA2), // OP_LDMDA2 +/* 1000 0101 1001 */ TABDECL(OP_LDMDA2), // OP_LDMDA2 +/* 1000 0101 1010 */ TABDECL(OP_LDMDA2), // OP_LDMDA2 +/* 1000 0101 1011 */ TABDECL(OP_LDMDA2), // OP_LDMDA2 +/* 1000 0101 1100 */ TABDECL(OP_LDMDA2), // OP_LDMDA2 +/* 1000 0101 1101 */ TABDECL(OP_LDMDA2), // OP_LDMDA2 +/* 1000 0101 1110 */ TABDECL(OP_LDMDA2), // OP_LDMDA2 +/* 1000 0101 1111 */ TABDECL(OP_LDMDA2), // OP_LDMDA2 + +/* 1000 0110 0000 */ TABDECL(OP_STMDA2_W), // OP_STMDA2_W +/* 1000 0110 0001 */ TABDECL(OP_STMDA2_W), // OP_STMDA2_W +/* 1000 0110 0010 */ TABDECL(OP_STMDA2_W), // OP_STMDA2_W +/* 1000 0110 0011 */ TABDECL(OP_STMDA2_W), // OP_STMDA2_W +/* 1000 0110 0100 */ TABDECL(OP_STMDA2_W), // OP_STMDA2_W +/* 1000 0110 0101 */ TABDECL(OP_STMDA2_W), // OP_STMDA2_W +/* 1000 0110 0110 */ TABDECL(OP_STMDA2_W), // OP_STMDA2_W +/* 1000 0110 0111 */ TABDECL(OP_STMDA2_W), // OP_STMDA2_W +/* 1000 0110 1000 */ TABDECL(OP_STMDA2_W), // OP_STMDA2_W +/* 1000 0110 1001 */ TABDECL(OP_STMDA2_W), // OP_STMDA2_W +/* 1000 0110 1010 */ TABDECL(OP_STMDA2_W), // OP_STMDA2_W +/* 1000 0110 1011 */ TABDECL(OP_STMDA2_W), // OP_STMDA2_W +/* 1000 0110 1100 */ TABDECL(OP_STMDA2_W), // OP_STMDA2_W +/* 1000 0110 1101 */ TABDECL(OP_STMDA2_W), // OP_STMDA2_W +/* 1000 0110 1110 */ TABDECL(OP_STMDA2_W), // OP_STMDA2_W +/* 1000 0110 1111 */ TABDECL(OP_STMDA2_W), // OP_STMDA2_W + +/* 1000 0111 0000 */ TABDECL(OP_LDMDA2_W), // OP_LDMDA2_W +/* 1000 0111 0001 */ TABDECL(OP_LDMDA2_W), // OP_LDMDA2_W +/* 1000 0111 0010 */ TABDECL(OP_LDMDA2_W), // OP_LDMDA2_W +/* 1000 0111 0011 */ TABDECL(OP_LDMDA2_W), // OP_LDMDA2_W +/* 1000 0111 0100 */ TABDECL(OP_LDMDA2_W), // OP_LDMDA2_W +/* 1000 0111 0101 */ TABDECL(OP_LDMDA2_W), // OP_LDMDA2_W +/* 1000 0111 0110 */ TABDECL(OP_LDMDA2_W), // OP_LDMDA2_W +/* 1000 0111 0111 */ TABDECL(OP_LDMDA2_W), // OP_LDMDA2_W +/* 1000 0111 1000 */ TABDECL(OP_LDMDA2_W), // OP_LDMDA2_W +/* 1000 0111 1001 */ TABDECL(OP_LDMDA2_W), // OP_LDMDA2_W +/* 1000 0111 1010 */ TABDECL(OP_LDMDA2_W), // OP_LDMDA2_W +/* 1000 0111 1011 */ TABDECL(OP_LDMDA2_W), // OP_LDMDA2_W +/* 1000 0111 1100 */ TABDECL(OP_LDMDA2_W), // OP_LDMDA2_W +/* 1000 0111 1101 */ TABDECL(OP_LDMDA2_W), // OP_LDMDA2_W +/* 1000 0111 1110 */ TABDECL(OP_LDMDA2_W), // OP_LDMDA2_W +/* 1000 0111 1111 */ TABDECL(OP_LDMDA2_W), // OP_LDMDA2_W + +/* 1000 1000 0000 */ TABDECL(OP_STMIA), // OP_STMIA +/* 1000 1000 0001 */ TABDECL(OP_STMIA), // OP_STMIA +/* 1000 1000 0010 */ TABDECL(OP_STMIA), // OP_STMIA +/* 1000 1000 0011 */ TABDECL(OP_STMIA), // OP_STMIA +/* 1000 1000 0100 */ TABDECL(OP_STMIA), // OP_STMIA +/* 1000 1000 0101 */ TABDECL(OP_STMIA), // OP_STMIA +/* 1000 1000 0110 */ TABDECL(OP_STMIA), // OP_STMIA +/* 1000 1000 0111 */ TABDECL(OP_STMIA), // OP_STMIA +/* 1000 1000 1000 */ TABDECL(OP_STMIA), // OP_STMIA +/* 1000 1000 1001 */ TABDECL(OP_STMIA), // OP_STMIA +/* 1000 1000 1010 */ TABDECL(OP_STMIA), // OP_STMIA +/* 1000 1000 1011 */ TABDECL(OP_STMIA), // OP_STMIA +/* 1000 1000 1100 */ TABDECL(OP_STMIA), // OP_STMIA +/* 1000 1000 1101 */ TABDECL(OP_STMIA), // OP_STMIA +/* 1000 1000 1110 */ TABDECL(OP_STMIA), // OP_STMIA +/* 1000 1000 1111 */ TABDECL(OP_STMIA), // OP_STMIA + +/* 1000 1001 0000 */ TABDECL(OP_LDMIA), // OP_LDMIA +/* 1000 1001 0001 */ TABDECL(OP_LDMIA), // OP_LDMIA +/* 1000 1001 0010 */ TABDECL(OP_LDMIA), // OP_LDMIA +/* 1000 1001 0011 */ TABDECL(OP_LDMIA), // OP_LDMIA +/* 1000 1001 0100 */ TABDECL(OP_LDMIA), // OP_LDMIA +/* 1000 1001 0101 */ TABDECL(OP_LDMIA), // OP_LDMIA +/* 1000 1001 0110 */ TABDECL(OP_LDMIA), // OP_LDMIA +/* 1000 1001 0111 */ TABDECL(OP_LDMIA), // OP_LDMIA +/* 1000 1001 1000 */ TABDECL(OP_LDMIA), // OP_LDMIA +/* 1000 1001 1001 */ TABDECL(OP_LDMIA), // OP_LDMIA +/* 1000 1001 1010 */ TABDECL(OP_LDMIA), // OP_LDMIA +/* 1000 1001 1011 */ TABDECL(OP_LDMIA), // OP_LDMIA +/* 1000 1001 1100 */ TABDECL(OP_LDMIA), // OP_LDMIA +/* 1000 1001 1101 */ TABDECL(OP_LDMIA), // OP_LDMIA +/* 1000 1001 1110 */ TABDECL(OP_LDMIA), // OP_LDMIA +/* 1000 1001 1111 */ TABDECL(OP_LDMIA), // OP_LDMIA + +/* 1000 1010 0000 */ TABDECL(OP_STMIA_W), // OP_STMIA_W +/* 1000 1010 0001 */ TABDECL(OP_STMIA_W), // OP_STMIA_W +/* 1000 1010 0010 */ TABDECL(OP_STMIA_W), // OP_STMIA_W +/* 1000 1010 0011 */ TABDECL(OP_STMIA_W), // OP_STMIA_W +/* 1000 1010 0100 */ TABDECL(OP_STMIA_W), // OP_STMIA_W +/* 1000 1010 0101 */ TABDECL(OP_STMIA_W), // OP_STMIA_W +/* 1000 1010 0110 */ TABDECL(OP_STMIA_W), // OP_STMIA_W +/* 1000 1010 0111 */ TABDECL(OP_STMIA_W), // OP_STMIA_W +/* 1000 1010 1000 */ TABDECL(OP_STMIA_W), // OP_STMIA_W +/* 1000 1010 1001 */ TABDECL(OP_STMIA_W), // OP_STMIA_W +/* 1000 1010 1010 */ TABDECL(OP_STMIA_W), // OP_STMIA_W +/* 1000 1010 1011 */ TABDECL(OP_STMIA_W), // OP_STMIA_W +/* 1000 1010 1100 */ TABDECL(OP_STMIA_W), // OP_STMIA_W +/* 1000 1010 1101 */ TABDECL(OP_STMIA_W), // OP_STMIA_W +/* 1000 1010 1110 */ TABDECL(OP_STMIA_W), // OP_STMIA_W +/* 1000 1010 1111 */ TABDECL(OP_STMIA_W), // OP_STMIA_W + +/* 1000 1011 0000 */ TABDECL(OP_LDMIA_W), // OP_LDMIA_W +/* 1000 1011 0001 */ TABDECL(OP_LDMIA_W), // OP_LDMIA_W +/* 1000 1011 0010 */ TABDECL(OP_LDMIA_W), // OP_LDMIA_W +/* 1000 1011 0011 */ TABDECL(OP_LDMIA_W), // OP_LDMIA_W +/* 1000 1011 0100 */ TABDECL(OP_LDMIA_W), // OP_LDMIA_W +/* 1000 1011 0101 */ TABDECL(OP_LDMIA_W), // OP_LDMIA_W +/* 1000 1011 0110 */ TABDECL(OP_LDMIA_W), // OP_LDMIA_W +/* 1000 1011 0111 */ TABDECL(OP_LDMIA_W), // OP_LDMIA_W +/* 1000 1011 1000 */ TABDECL(OP_LDMIA_W), // OP_LDMIA_W +/* 1000 1011 1001 */ TABDECL(OP_LDMIA_W), // OP_LDMIA_W +/* 1000 1011 1010 */ TABDECL(OP_LDMIA_W), // OP_LDMIA_W +/* 1000 1011 1011 */ TABDECL(OP_LDMIA_W), // OP_LDMIA_W +/* 1000 1011 1100 */ TABDECL(OP_LDMIA_W), // OP_LDMIA_W +/* 1000 1011 1101 */ TABDECL(OP_LDMIA_W), // OP_LDMIA_W +/* 1000 1011 1110 */ TABDECL(OP_LDMIA_W), // OP_LDMIA_W +/* 1000 1011 1111 */ TABDECL(OP_LDMIA_W), // OP_LDMIA_W + +/* 1000 1100 0000 */ TABDECL(OP_STMIA2), // OP_STMIA2 +/* 1000 1100 0001 */ TABDECL(OP_STMIA2), // OP_STMIA2 +/* 1000 1100 0010 */ TABDECL(OP_STMIA2), // OP_STMIA2 +/* 1000 1100 0011 */ TABDECL(OP_STMIA2), // OP_STMIA2 +/* 1000 1100 0100 */ TABDECL(OP_STMIA2), // OP_STMIA2 +/* 1000 1100 0101 */ TABDECL(OP_STMIA2), // OP_STMIA2 +/* 1000 1100 0110 */ TABDECL(OP_STMIA2), // OP_STMIA2 +/* 1000 1100 0111 */ TABDECL(OP_STMIA2), // OP_STMIA2 +/* 1000 1100 1000 */ TABDECL(OP_STMIA2), // OP_STMIA2 +/* 1000 1100 1001 */ TABDECL(OP_STMIA2), // OP_STMIA2 +/* 1000 1100 1010 */ TABDECL(OP_STMIA2), // OP_STMIA2 +/* 1000 1100 1011 */ TABDECL(OP_STMIA2), // OP_STMIA2 +/* 1000 1100 1100 */ TABDECL(OP_STMIA2), // OP_STMIA2 +/* 1000 1100 1101 */ TABDECL(OP_STMIA2), // OP_STMIA2 +/* 1000 1100 1110 */ TABDECL(OP_STMIA2), // OP_STMIA2 +/* 1000 1100 1111 */ TABDECL(OP_STMIA2), // OP_STMIA2 + +/* 1000 1101 0000 */ TABDECL(OP_LDMIA2), // OP_LDMIA2 +/* 1000 1101 0001 */ TABDECL(OP_LDMIA2), // OP_LDMIA2 +/* 1000 1101 0010 */ TABDECL(OP_LDMIA2), // OP_LDMIA2 +/* 1000 1101 0011 */ TABDECL(OP_LDMIA2), // OP_LDMIA2 +/* 1000 1101 0100 */ TABDECL(OP_LDMIA2), // OP_LDMIA2 +/* 1000 1101 0101 */ TABDECL(OP_LDMIA2), // OP_LDMIA2 +/* 1000 1101 0110 */ TABDECL(OP_LDMIA2), // OP_LDMIA2 +/* 1000 1101 0111 */ TABDECL(OP_LDMIA2), // OP_LDMIA2 +/* 1000 1101 1000 */ TABDECL(OP_LDMIA2), // OP_LDMIA2 +/* 1000 1101 1001 */ TABDECL(OP_LDMIA2), // OP_LDMIA2 +/* 1000 1101 1010 */ TABDECL(OP_LDMIA2), // OP_LDMIA2 +/* 1000 1101 1011 */ TABDECL(OP_LDMIA2), // OP_LDMIA2 +/* 1000 1101 1100 */ TABDECL(OP_LDMIA2), // OP_LDMIA2 +/* 1000 1101 1101 */ TABDECL(OP_LDMIA2), // OP_LDMIA2 +/* 1000 1101 1110 */ TABDECL(OP_LDMIA2), // OP_LDMIA2 +/* 1000 1101 1111 */ TABDECL(OP_LDMIA2), // OP_LDMIA2 + +/* 1000 1110 0000 */ TABDECL(OP_STMIA2_W), // OP_STMIA2_W +/* 1000 1110 0001 */ TABDECL(OP_STMIA2_W), // OP_STMIA2_W +/* 1000 1110 0010 */ TABDECL(OP_STMIA2_W), // OP_STMIA2_W +/* 1000 1110 0011 */ TABDECL(OP_STMIA2_W), // OP_STMIA2_W +/* 1000 1110 0100 */ TABDECL(OP_STMIA2_W), // OP_STMIA2_W +/* 1000 1110 0101 */ TABDECL(OP_STMIA2_W), // OP_STMIA2_W +/* 1000 1110 0110 */ TABDECL(OP_STMIA2_W), // OP_STMIA2_W +/* 1000 1110 0111 */ TABDECL(OP_STMIA2_W), // OP_STMIA2_W +/* 1000 1110 1000 */ TABDECL(OP_STMIA2_W), // OP_STMIA2_W +/* 1000 1110 1001 */ TABDECL(OP_STMIA2_W), // OP_STMIA2_W +/* 1000 1110 1010 */ TABDECL(OP_STMIA2_W), // OP_STMIA2_W +/* 1000 1110 1011 */ TABDECL(OP_STMIA2_W), // OP_STMIA2_W +/* 1000 1110 1100 */ TABDECL(OP_STMIA2_W), // OP_STMIA2_W +/* 1000 1110 1101 */ TABDECL(OP_STMIA2_W), // OP_STMIA2_W +/* 1000 1110 1110 */ TABDECL(OP_STMIA2_W), // OP_STMIA2_W +/* 1000 1110 1111 */ TABDECL(OP_STMIA2_W), // OP_STMIA2_W + +/* 1000 1111 0000 */ TABDECL(OP_LDMIA2_W), // OP_LDMIA2_W +/* 1000 1111 0001 */ TABDECL(OP_LDMIA2_W), // OP_LDMIA2_W +/* 1000 1111 0010 */ TABDECL(OP_LDMIA2_W), // OP_LDMIA2_W +/* 1000 1111 0011 */ TABDECL(OP_LDMIA2_W), // OP_LDMIA2_W +/* 1000 1111 0100 */ TABDECL(OP_LDMIA2_W), // OP_LDMIA2_W +/* 1000 1111 0101 */ TABDECL(OP_LDMIA2_W), // OP_LDMIA2_W +/* 1000 1111 0110 */ TABDECL(OP_LDMIA2_W), // OP_LDMIA2_W +/* 1000 1111 0111 */ TABDECL(OP_LDMIA2_W), // OP_LDMIA2_W +/* 1000 1111 1000 */ TABDECL(OP_LDMIA2_W), // OP_LDMIA2_W +/* 1000 1111 1001 */ TABDECL(OP_LDMIA2_W), // OP_LDMIA2_W +/* 1000 1111 1010 */ TABDECL(OP_LDMIA2_W), // OP_LDMIA2_W +/* 1000 1111 1011 */ TABDECL(OP_LDMIA2_W), // OP_LDMIA2_W +/* 1000 1111 1100 */ TABDECL(OP_LDMIA2_W), // OP_LDMIA2_W +/* 1000 1111 1101 */ TABDECL(OP_LDMIA2_W), // OP_LDMIA2_W +/* 1000 1111 1110 */ TABDECL(OP_LDMIA2_W), // OP_LDMIA2_W +/* 1000 1111 1111 */ TABDECL(OP_LDMIA2_W), // OP_LDMIA2_W + +/* 1001 0000 0000 */ TABDECL(OP_STMDB), // OP_STMDB +/* 1001 0000 0001 */ TABDECL(OP_STMDB), // OP_STMDB +/* 1001 0000 0010 */ TABDECL(OP_STMDB), // OP_STMDB +/* 1001 0000 0011 */ TABDECL(OP_STMDB), // OP_STMDB +/* 1001 0000 0100 */ TABDECL(OP_STMDB), // OP_STMDB +/* 1001 0000 0101 */ TABDECL(OP_STMDB), // OP_STMDB +/* 1001 0000 0110 */ TABDECL(OP_STMDB), // OP_STMDB +/* 1001 0000 0111 */ TABDECL(OP_STMDB), // OP_STMDB +/* 1001 0000 1000 */ TABDECL(OP_STMDB), // OP_STMDB +/* 1001 0000 1001 */ TABDECL(OP_STMDB), // OP_STMDB +/* 1001 0000 1010 */ TABDECL(OP_STMDB), // OP_STMDB +/* 1001 0000 1011 */ TABDECL(OP_STMDB), // OP_STMDB +/* 1001 0000 1100 */ TABDECL(OP_STMDB), // OP_STMDB +/* 1001 0000 1101 */ TABDECL(OP_STMDB), // OP_STMDB +/* 1001 0000 1110 */ TABDECL(OP_STMDB), // OP_STMDB +/* 1001 0000 1111 */ TABDECL(OP_STMDB), // OP_STMDB + +/* 1001 0001 0000 */ TABDECL(OP_LDMDB), // OP_LDMDB +/* 1001 0001 0001 */ TABDECL(OP_LDMDB), // OP_LDMDB +/* 1001 0001 0010 */ TABDECL(OP_LDMDB), // OP_LDMDB +/* 1001 0001 0011 */ TABDECL(OP_LDMDB), // OP_LDMDB +/* 1001 0001 0100 */ TABDECL(OP_LDMDB), // OP_LDMDB +/* 1001 0001 0101 */ TABDECL(OP_LDMDB), // OP_LDMDB +/* 1001 0001 0110 */ TABDECL(OP_LDMDB), // OP_LDMDB +/* 1001 0001 0111 */ TABDECL(OP_LDMDB), // OP_LDMDB +/* 1001 0001 1000 */ TABDECL(OP_LDMDB), // OP_LDMDB +/* 1001 0001 1001 */ TABDECL(OP_LDMDB), // OP_LDMDB +/* 1001 0001 1010 */ TABDECL(OP_LDMDB), // OP_LDMDB +/* 1001 0001 1011 */ TABDECL(OP_LDMDB), // OP_LDMDB +/* 1001 0001 1100 */ TABDECL(OP_LDMDB), // OP_LDMDB +/* 1001 0001 1101 */ TABDECL(OP_LDMDB), // OP_LDMDB +/* 1001 0001 1110 */ TABDECL(OP_LDMDB), // OP_LDMDB +/* 1001 0001 1111 */ TABDECL(OP_LDMDB), // OP_LDMDB + +/* 1001 0010 0000 */ TABDECL(OP_STMDB_W), // OP_STMDB_W +/* 1001 0010 0001 */ TABDECL(OP_STMDB_W), // OP_STMDB_W +/* 1001 0010 0010 */ TABDECL(OP_STMDB_W), // OP_STMDB_W +/* 1001 0010 0011 */ TABDECL(OP_STMDB_W), // OP_STMDB_W +/* 1001 0010 0100 */ TABDECL(OP_STMDB_W), // OP_STMDB_W +/* 1001 0010 0101 */ TABDECL(OP_STMDB_W), // OP_STMDB_W +/* 1001 0010 0110 */ TABDECL(OP_STMDB_W), // OP_STMDB_W +/* 1001 0010 0111 */ TABDECL(OP_STMDB_W), // OP_STMDB_W +/* 1001 0010 1000 */ TABDECL(OP_STMDB_W), // OP_STMDB_W +/* 1001 0010 1001 */ TABDECL(OP_STMDB_W), // OP_STMDB_W +/* 1001 0010 1010 */ TABDECL(OP_STMDB_W), // OP_STMDB_W +/* 1001 0010 1011 */ TABDECL(OP_STMDB_W), // OP_STMDB_W +/* 1001 0010 1100 */ TABDECL(OP_STMDB_W), // OP_STMDB_W +/* 1001 0010 1101 */ TABDECL(OP_STMDB_W), // OP_STMDB_W +/* 1001 0010 1110 */ TABDECL(OP_STMDB_W), // OP_STMDB_W +/* 1001 0010 1111 */ TABDECL(OP_STMDB_W), // OP_STMDB_W + +/* 1001 0011 0000 */ TABDECL(OP_LDMDB_W), // OP_LDMDB_W +/* 1001 0011 0001 */ TABDECL(OP_LDMDB_W), // OP_LDMDB_W +/* 1001 0011 0010 */ TABDECL(OP_LDMDB_W), // OP_LDMDB_W +/* 1001 0011 0011 */ TABDECL(OP_LDMDB_W), // OP_LDMDB_W +/* 1001 0011 0100 */ TABDECL(OP_LDMDB_W), // OP_LDMDB_W +/* 1001 0011 0101 */ TABDECL(OP_LDMDB_W), // OP_LDMDB_W +/* 1001 0011 0110 */ TABDECL(OP_LDMDB_W), // OP_LDMDB_W +/* 1001 0011 0111 */ TABDECL(OP_LDMDB_W), // OP_LDMDB_W +/* 1001 0011 1000 */ TABDECL(OP_LDMDB_W), // OP_LDMDB_W +/* 1001 0011 1001 */ TABDECL(OP_LDMDB_W), // OP_LDMDB_W +/* 1001 0011 1010 */ TABDECL(OP_LDMDB_W), // OP_LDMDB_W +/* 1001 0011 1011 */ TABDECL(OP_LDMDB_W), // OP_LDMDB_W +/* 1001 0011 1100 */ TABDECL(OP_LDMDB_W), // OP_LDMDB_W +/* 1001 0011 1101 */ TABDECL(OP_LDMDB_W), // OP_LDMDB_W +/* 1001 0011 1110 */ TABDECL(OP_LDMDB_W), // OP_LDMDB_W +/* 1001 0011 1111 */ TABDECL(OP_LDMDB_W), // OP_LDMDB_W + +/* 1001 0100 0000 */ TABDECL(OP_STMDB2), // OP_STMDB2 +/* 1001 0100 0001 */ TABDECL(OP_STMDB2), // OP_STMDB2 +/* 1001 0100 0010 */ TABDECL(OP_STMDB2), // OP_STMDB2 +/* 1001 0100 0011 */ TABDECL(OP_STMDB2), // OP_STMDB2 +/* 1001 0100 0100 */ TABDECL(OP_STMDB2), // OP_STMDB2 +/* 1001 0100 0101 */ TABDECL(OP_STMDB2), // OP_STMDB2 +/* 1001 0100 0110 */ TABDECL(OP_STMDB2), // OP_STMDB2 +/* 1001 0100 0111 */ TABDECL(OP_STMDB2), // OP_STMDB2 +/* 1001 0100 1000 */ TABDECL(OP_STMDB2), // OP_STMDB2 +/* 1001 0100 1001 */ TABDECL(OP_STMDB2), // OP_STMDB2 +/* 1001 0100 1010 */ TABDECL(OP_STMDB2), // OP_STMDB2 +/* 1001 0100 1011 */ TABDECL(OP_STMDB2), // OP_STMDB2 +/* 1001 0100 1100 */ TABDECL(OP_STMDB2), // OP_STMDB2 +/* 1001 0100 1101 */ TABDECL(OP_STMDB2), // OP_STMDB2 +/* 1001 0100 1110 */ TABDECL(OP_STMDB2), // OP_STMDB2 +/* 1001 0100 1111 */ TABDECL(OP_STMDB2), // OP_STMDB2 + +/* 1001 0101 0000 */ TABDECL(OP_LDMDB2), // OP_LDMDB2 +/* 1001 0101 0001 */ TABDECL(OP_LDMDB2), // OP_LDMDB2 +/* 1001 0101 0010 */ TABDECL(OP_LDMDB2), // OP_LDMDB2 +/* 1001 0101 0011 */ TABDECL(OP_LDMDB2), // OP_LDMDB2 +/* 1001 0101 0100 */ TABDECL(OP_LDMDB2), // OP_LDMDB2 +/* 1001 0101 0101 */ TABDECL(OP_LDMDB2), // OP_LDMDB2 +/* 1001 0101 0110 */ TABDECL(OP_LDMDB2), // OP_LDMDB2 +/* 1001 0101 0111 */ TABDECL(OP_LDMDB2), // OP_LDMDB2 +/* 1001 0101 1000 */ TABDECL(OP_LDMDB2), // OP_LDMDB2 +/* 1001 0101 1001 */ TABDECL(OP_LDMDB2), // OP_LDMDB2 +/* 1001 0101 1010 */ TABDECL(OP_LDMDB2), // OP_LDMDB2 +/* 1001 0101 1011 */ TABDECL(OP_LDMDB2), // OP_LDMDB2 +/* 1001 0101 1100 */ TABDECL(OP_LDMDB2), // OP_LDMDB2 +/* 1001 0101 1101 */ TABDECL(OP_LDMDB2), // OP_LDMDB2 +/* 1001 0101 1110 */ TABDECL(OP_LDMDB2), // OP_LDMDB2 +/* 1001 0101 1111 */ TABDECL(OP_LDMDB2), // OP_LDMDB2 + +/* 1001 0110 0000 */ TABDECL(OP_STMDB2_W), // OP_STMDB2_W +/* 1001 0110 0001 */ TABDECL(OP_STMDB2_W), // OP_STMDB2_W +/* 1001 0110 0010 */ TABDECL(OP_STMDB2_W), // OP_STMDB2_W +/* 1001 0110 0011 */ TABDECL(OP_STMDB2_W), // OP_STMDB2_W +/* 1001 0110 0100 */ TABDECL(OP_STMDB2_W), // OP_STMDB2_W +/* 1001 0110 0101 */ TABDECL(OP_STMDB2_W), // OP_STMDB2_W +/* 1001 0110 0110 */ TABDECL(OP_STMDB2_W), // OP_STMDB2_W +/* 1001 0110 0111 */ TABDECL(OP_STMDB2_W), // OP_STMDB2_W +/* 1001 0110 1000 */ TABDECL(OP_STMDB2_W), // OP_STMDB2_W +/* 1001 0110 1001 */ TABDECL(OP_STMDB2_W), // OP_STMDB2_W +/* 1001 0110 1010 */ TABDECL(OP_STMDB2_W), // OP_STMDB2_W +/* 1001 0110 1011 */ TABDECL(OP_STMDB2_W), // OP_STMDB2_W +/* 1001 0110 1100 */ TABDECL(OP_STMDB2_W), // OP_STMDB2_W +/* 1001 0110 1101 */ TABDECL(OP_STMDB2_W), // OP_STMDB2_W +/* 1001 0110 1110 */ TABDECL(OP_STMDB2_W), // OP_STMDB2_W +/* 1001 0110 1111 */ TABDECL(OP_STMDB2_W), // OP_STMDB2_W + +/* 1001 0111 0000 */ TABDECL(OP_LDMDB2_W), // OP_LDMDB2_W +/* 1001 0111 0001 */ TABDECL(OP_LDMDB2_W), // OP_LDMDB2_W +/* 1001 0111 0010 */ TABDECL(OP_LDMDB2_W), // OP_LDMDB2_W +/* 1001 0111 0011 */ TABDECL(OP_LDMDB2_W), // OP_LDMDB2_W +/* 1001 0111 0100 */ TABDECL(OP_LDMDB2_W), // OP_LDMDB2_W +/* 1001 0111 0101 */ TABDECL(OP_LDMDB2_W), // OP_LDMDB2_W +/* 1001 0111 0110 */ TABDECL(OP_LDMDB2_W), // OP_LDMDB2_W +/* 1001 0111 0111 */ TABDECL(OP_LDMDB2_W), // OP_LDMDB2_W +/* 1001 0111 1000 */ TABDECL(OP_LDMDB2_W), // OP_LDMDB2_W +/* 1001 0111 1001 */ TABDECL(OP_LDMDB2_W), // OP_LDMDB2_W +/* 1001 0111 1010 */ TABDECL(OP_LDMDB2_W), // OP_LDMDB2_W +/* 1001 0111 1011 */ TABDECL(OP_LDMDB2_W), // OP_LDMDB2_W +/* 1001 0111 1100 */ TABDECL(OP_LDMDB2_W), // OP_LDMDB2_W +/* 1001 0111 1101 */ TABDECL(OP_LDMDB2_W), // OP_LDMDB2_W +/* 1001 0111 1110 */ TABDECL(OP_LDMDB2_W), // OP_LDMDB2_W +/* 1001 0111 1111 */ TABDECL(OP_LDMDB2_W), // OP_LDMDB2_W + +/* 1001 1000 0000 */ TABDECL(OP_STMIB), // OP_STMIB +/* 1001 1000 0001 */ TABDECL(OP_STMIB), // OP_STMIB +/* 1001 1000 0010 */ TABDECL(OP_STMIB), // OP_STMIB +/* 1001 1000 0011 */ TABDECL(OP_STMIB), // OP_STMIB +/* 1001 1000 0100 */ TABDECL(OP_STMIB), // OP_STMIB +/* 1001 1000 0101 */ TABDECL(OP_STMIB), // OP_STMIB +/* 1001 1000 0110 */ TABDECL(OP_STMIB), // OP_STMIB +/* 1001 1000 0111 */ TABDECL(OP_STMIB), // OP_STMIB +/* 1001 1000 1000 */ TABDECL(OP_STMIB), // OP_STMIB +/* 1001 1000 1001 */ TABDECL(OP_STMIB), // OP_STMIB +/* 1001 1000 1010 */ TABDECL(OP_STMIB), // OP_STMIB +/* 1001 1000 1011 */ TABDECL(OP_STMIB), // OP_STMIB +/* 1001 1000 1100 */ TABDECL(OP_STMIB), // OP_STMIB +/* 1001 1000 1101 */ TABDECL(OP_STMIB), // OP_STMIB +/* 1001 1000 1110 */ TABDECL(OP_STMIB), // OP_STMIB +/* 1001 1000 1111 */ TABDECL(OP_STMIB), // OP_STMIB + +/* 1001 1001 0000 */ TABDECL(OP_LDMIB), // OP_LDMIB +/* 1001 1001 0001 */ TABDECL(OP_LDMIB), // OP_LDMIB +/* 1001 1001 0010 */ TABDECL(OP_LDMIB), // OP_LDMIB +/* 1001 1001 0011 */ TABDECL(OP_LDMIB), // OP_LDMIB +/* 1001 1001 0100 */ TABDECL(OP_LDMIB), // OP_LDMIB +/* 1001 1001 0101 */ TABDECL(OP_LDMIB), // OP_LDMIB +/* 1001 1001 0110 */ TABDECL(OP_LDMIB), // OP_LDMIB +/* 1001 1001 0111 */ TABDECL(OP_LDMIB), // OP_LDMIB +/* 1001 1001 1000 */ TABDECL(OP_LDMIB), // OP_LDMIB +/* 1001 1001 1001 */ TABDECL(OP_LDMIB), // OP_LDMIB +/* 1001 1001 1010 */ TABDECL(OP_LDMIB), // OP_LDMIB +/* 1001 1001 1011 */ TABDECL(OP_LDMIB), // OP_LDMIB +/* 1001 1001 1100 */ TABDECL(OP_LDMIB), // OP_LDMIB +/* 1001 1001 1101 */ TABDECL(OP_LDMIB), // OP_LDMIB +/* 1001 1001 1110 */ TABDECL(OP_LDMIB), // OP_LDMIB +/* 1001 1001 1111 */ TABDECL(OP_LDMIB), // OP_LDMIB + +/* 1001 1010 0000 */ TABDECL(OP_STMIB_W), // OP_STMIB_W +/* 1001 1010 0001 */ TABDECL(OP_STMIB_W), // OP_STMIB_W +/* 1001 1010 0010 */ TABDECL(OP_STMIB_W), // OP_STMIB_W +/* 1001 1010 0011 */ TABDECL(OP_STMIB_W), // OP_STMIB_W +/* 1001 1010 0100 */ TABDECL(OP_STMIB_W), // OP_STMIB_W +/* 1001 1010 0101 */ TABDECL(OP_STMIB_W), // OP_STMIB_W +/* 1001 1010 0110 */ TABDECL(OP_STMIB_W), // OP_STMIB_W +/* 1001 1010 0111 */ TABDECL(OP_STMIB_W), // OP_STMIB_W +/* 1001 1010 1000 */ TABDECL(OP_STMIB_W), // OP_STMIB_W +/* 1001 1010 1001 */ TABDECL(OP_STMIB_W), // OP_STMIB_W +/* 1001 1010 1010 */ TABDECL(OP_STMIB_W), // OP_STMIB_W +/* 1001 1010 1011 */ TABDECL(OP_STMIB_W), // OP_STMIB_W +/* 1001 1010 1100 */ TABDECL(OP_STMIB_W), // OP_STMIB_W +/* 1001 1010 1101 */ TABDECL(OP_STMIB_W), // OP_STMIB_W +/* 1001 1010 1110 */ TABDECL(OP_STMIB_W), // OP_STMIB_W +/* 1001 1010 1111 */ TABDECL(OP_STMIB_W), // OP_STMIB_W + +/* 1001 1011 0000 */ TABDECL(OP_LDMIB_W), // OP_LDMIB_W +/* 1001 1011 0001 */ TABDECL(OP_LDMIB_W), // OP_LDMIB_W +/* 1001 1011 0010 */ TABDECL(OP_LDMIB_W), // OP_LDMIB_W +/* 1001 1011 0011 */ TABDECL(OP_LDMIB_W), // OP_LDMIB_W +/* 1001 1011 0100 */ TABDECL(OP_LDMIB_W), // OP_LDMIB_W +/* 1001 1011 0101 */ TABDECL(OP_LDMIB_W), // OP_LDMIB_W +/* 1001 1011 0110 */ TABDECL(OP_LDMIB_W), // OP_LDMIB_W +/* 1001 1011 0111 */ TABDECL(OP_LDMIB_W), // OP_LDMIB_W +/* 1001 1011 1000 */ TABDECL(OP_LDMIB_W), // OP_LDMIB_W +/* 1001 1011 1001 */ TABDECL(OP_LDMIB_W), // OP_LDMIB_W +/* 1001 1011 1010 */ TABDECL(OP_LDMIB_W), // OP_LDMIB_W +/* 1001 1011 1011 */ TABDECL(OP_LDMIB_W), // OP_LDMIB_W +/* 1001 1011 1100 */ TABDECL(OP_LDMIB_W), // OP_LDMIB_W +/* 1001 1011 1101 */ TABDECL(OP_LDMIB_W), // OP_LDMIB_W +/* 1001 1011 1110 */ TABDECL(OP_LDMIB_W), // OP_LDMIB_W +/* 1001 1011 1111 */ TABDECL(OP_LDMIB_W), // OP_LDMIB_W + +/* 1001 1100 0000 */ TABDECL(OP_STMIB2), // OP_STMIB2 +/* 1001 1100 0001 */ TABDECL(OP_STMIB2), // OP_STMIB2 +/* 1001 1100 0010 */ TABDECL(OP_STMIB2), // OP_STMIB2 +/* 1001 1100 0011 */ TABDECL(OP_STMIB2), // OP_STMIB2 +/* 1001 1100 0100 */ TABDECL(OP_STMIB2), // OP_STMIB2 +/* 1001 1100 0101 */ TABDECL(OP_STMIB2), // OP_STMIB2 +/* 1001 1100 0110 */ TABDECL(OP_STMIB2), // OP_STMIB2 +/* 1001 1100 0111 */ TABDECL(OP_STMIB2), // OP_STMIB2 +/* 1001 1100 1000 */ TABDECL(OP_STMIB2), // OP_STMIB2 +/* 1001 1100 1001 */ TABDECL(OP_STMIB2), // OP_STMIB2 +/* 1001 1100 1010 */ TABDECL(OP_STMIB2), // OP_STMIB2 +/* 1001 1100 1011 */ TABDECL(OP_STMIB2), // OP_STMIB2 +/* 1001 1100 1100 */ TABDECL(OP_STMIB2), // OP_STMIB2 +/* 1001 1100 1101 */ TABDECL(OP_STMIB2), // OP_STMIB2 +/* 1001 1100 1110 */ TABDECL(OP_STMIB2), // OP_STMIB2 +/* 1001 1100 1111 */ TABDECL(OP_STMIB2), // OP_STMIB2 + +/* 1001 1101 0000 */ TABDECL(OP_LDMIB2), // OP_LDMIB2 +/* 1001 1101 0001 */ TABDECL(OP_LDMIB2), // OP_LDMIB2 +/* 1001 1101 0010 */ TABDECL(OP_LDMIB2), // OP_LDMIB2 +/* 1001 1101 0011 */ TABDECL(OP_LDMIB2), // OP_LDMIB2 +/* 1001 1101 0100 */ TABDECL(OP_LDMIB2), // OP_LDMIB2 +/* 1001 1101 0101 */ TABDECL(OP_LDMIB2), // OP_LDMIB2 +/* 1001 1101 0110 */ TABDECL(OP_LDMIB2), // OP_LDMIB2 +/* 1001 1101 0111 */ TABDECL(OP_LDMIB2), // OP_LDMIB2 +/* 1001 1101 1000 */ TABDECL(OP_LDMIB2), // OP_LDMIB2 +/* 1001 1101 1001 */ TABDECL(OP_LDMIB2), // OP_LDMIB2 +/* 1001 1101 1010 */ TABDECL(OP_LDMIB2), // OP_LDMIB2 +/* 1001 1101 1011 */ TABDECL(OP_LDMIB2), // OP_LDMIB2 +/* 1001 1101 1100 */ TABDECL(OP_LDMIB2), // OP_LDMIB2 +/* 1001 1101 1101 */ TABDECL(OP_LDMIB2), // OP_LDMIB2 +/* 1001 1101 1110 */ TABDECL(OP_LDMIB2), // OP_LDMIB2 +/* 1001 1101 1111 */ TABDECL(OP_LDMIB2), // OP_LDMIB2 + +/* 1001 1110 0000 */ TABDECL(OP_STMIB2_W), // OP_STMIB2_W +/* 1001 1110 0001 */ TABDECL(OP_STMIB2_W), // OP_STMIB2_W +/* 1001 1110 0010 */ TABDECL(OP_STMIB2_W), // OP_STMIB2_W +/* 1001 1110 0011 */ TABDECL(OP_STMIB2_W), // OP_STMIB2_W +/* 1001 1110 0100 */ TABDECL(OP_STMIB2_W), // OP_STMIB2_W +/* 1001 1110 0101 */ TABDECL(OP_STMIB2_W), // OP_STMIB2_W +/* 1001 1110 0110 */ TABDECL(OP_STMIB2_W), // OP_STMIB2_W +/* 1001 1110 0111 */ TABDECL(OP_STMIB2_W), // OP_STMIB2_W +/* 1001 1110 1000 */ TABDECL(OP_STMIB2_W), // OP_STMIB2_W +/* 1001 1110 1001 */ TABDECL(OP_STMIB2_W), // OP_STMIB2_W +/* 1001 1110 1010 */ TABDECL(OP_STMIB2_W), // OP_STMIB2_W +/* 1001 1110 1011 */ TABDECL(OP_STMIB2_W), // OP_STMIB2_W +/* 1001 1110 1100 */ TABDECL(OP_STMIB2_W), // OP_STMIB2_W +/* 1001 1110 1101 */ TABDECL(OP_STMIB2_W), // OP_STMIB2_W +/* 1001 1110 1110 */ TABDECL(OP_STMIB2_W), // OP_STMIB2_W +/* 1001 1110 1111 */ TABDECL(OP_STMIB2_W), // OP_STMIB2_W + +/* 1001 1111 0000 */ TABDECL(OP_LDMIB2_W), // OP_LDMIB2_W +/* 1001 1111 0001 */ TABDECL(OP_LDMIB2_W), // OP_LDMIB2_W +/* 1001 1111 0010 */ TABDECL(OP_LDMIB2_W), // OP_LDMIB2_W +/* 1001 1111 0011 */ TABDECL(OP_LDMIB2_W), // OP_LDMIB2_W +/* 1001 1111 0100 */ TABDECL(OP_LDMIB2_W), // OP_LDMIB2_W +/* 1001 1111 0101 */ TABDECL(OP_LDMIB2_W), // OP_LDMIB2_W +/* 1001 1111 0110 */ TABDECL(OP_LDMIB2_W), // OP_LDMIB2_W +/* 1001 1111 0111 */ TABDECL(OP_LDMIB2_W), // OP_LDMIB2_W +/* 1001 1111 1000 */ TABDECL(OP_LDMIB2_W), // OP_LDMIB2_W +/* 1001 1111 1001 */ TABDECL(OP_LDMIB2_W), // OP_LDMIB2_W +/* 1001 1111 1010 */ TABDECL(OP_LDMIB2_W), // OP_LDMIB2_W +/* 1001 1111 1011 */ TABDECL(OP_LDMIB2_W), // OP_LDMIB2_W +/* 1001 1111 1100 */ TABDECL(OP_LDMIB2_W), // OP_LDMIB2_W +/* 1001 1111 1101 */ TABDECL(OP_LDMIB2_W), // OP_LDMIB2_W +/* 1001 1111 1110 */ TABDECL(OP_LDMIB2_W), // OP_LDMIB2_W +/* 1001 1111 1111 */ TABDECL(OP_LDMIB2_W), // OP_LDMIB2_W + +/* 1010 0000 0000 */ TABDECL(OP_B), // OP_B +/* 1010 0000 0001 */ TABDECL(OP_B), // OP_B +/* 1010 0000 0010 */ TABDECL(OP_B), // OP_B +/* 1010 0000 0011 */ TABDECL(OP_B), // OP_B +/* 1010 0000 0100 */ TABDECL(OP_B), // OP_B +/* 1010 0000 0101 */ TABDECL(OP_B), // OP_B +/* 1010 0000 0110 */ TABDECL(OP_B), // OP_B +/* 1010 0000 0111 */ TABDECL(OP_B), // OP_B +/* 1010 0000 1000 */ TABDECL(OP_B), // OP_B +/* 1010 0000 1001 */ TABDECL(OP_B), // OP_B +/* 1010 0000 1010 */ TABDECL(OP_B), // OP_B +/* 1010 0000 1011 */ TABDECL(OP_B), // OP_B +/* 1010 0000 1100 */ TABDECL(OP_B), // OP_B +/* 1010 0000 1101 */ TABDECL(OP_B), // OP_B +/* 1010 0000 1110 */ TABDECL(OP_B), // OP_B +/* 1010 0000 1111 */ TABDECL(OP_B), // OP_B + +/* 1010 0001 0000 */ TABDECL(OP_B), // OP_B +/* 1010 0001 0001 */ TABDECL(OP_B), // OP_B +/* 1010 0001 0010 */ TABDECL(OP_B), // OP_B +/* 1010 0001 0011 */ TABDECL(OP_B), // OP_B +/* 1010 0001 0100 */ TABDECL(OP_B), // OP_B +/* 1010 0001 0101 */ TABDECL(OP_B), // OP_B +/* 1010 0001 0110 */ TABDECL(OP_B), // OP_B +/* 1010 0001 0111 */ TABDECL(OP_B), // OP_B +/* 1010 0001 1000 */ TABDECL(OP_B), // OP_B +/* 1010 0001 1001 */ TABDECL(OP_B), // OP_B +/* 1010 0001 1010 */ TABDECL(OP_B), // OP_B +/* 1010 0001 1011 */ TABDECL(OP_B), // OP_B +/* 1010 0001 1100 */ TABDECL(OP_B), // OP_B +/* 1010 0001 1101 */ TABDECL(OP_B), // OP_B +/* 1010 0001 1110 */ TABDECL(OP_B), // OP_B +/* 1010 0001 1111 */ TABDECL(OP_B), // OP_B + +/* 1010 0010 0000 */ TABDECL(OP_B), // OP_B +/* 1010 0010 0001 */ TABDECL(OP_B), // OP_B +/* 1010 0010 0010 */ TABDECL(OP_B), // OP_B +/* 1010 0010 0011 */ TABDECL(OP_B), // OP_B +/* 1010 0010 0100 */ TABDECL(OP_B), // OP_B +/* 1010 0010 0101 */ TABDECL(OP_B), // OP_B +/* 1010 0010 0110 */ TABDECL(OP_B), // OP_B +/* 1010 0010 0111 */ TABDECL(OP_B), // OP_B +/* 1010 0010 1000 */ TABDECL(OP_B), // OP_B +/* 1010 0010 1001 */ TABDECL(OP_B), // OP_B +/* 1010 0010 1010 */ TABDECL(OP_B), // OP_B +/* 1010 0010 1011 */ TABDECL(OP_B), // OP_B +/* 1010 0010 1100 */ TABDECL(OP_B), // OP_B +/* 1010 0010 1101 */ TABDECL(OP_B), // OP_B +/* 1010 0010 1110 */ TABDECL(OP_B), // OP_B +/* 1010 0010 1111 */ TABDECL(OP_B), // OP_B + +/* 1010 0011 0000 */ TABDECL(OP_B), // OP_B +/* 1010 0011 0001 */ TABDECL(OP_B), // OP_B +/* 1010 0011 0010 */ TABDECL(OP_B), // OP_B +/* 1010 0011 0011 */ TABDECL(OP_B), // OP_B +/* 1010 0011 0100 */ TABDECL(OP_B), // OP_B +/* 1010 0011 0101 */ TABDECL(OP_B), // OP_B +/* 1010 0011 0110 */ TABDECL(OP_B), // OP_B +/* 1010 0011 0111 */ TABDECL(OP_B), // OP_B +/* 1010 0011 1000 */ TABDECL(OP_B), // OP_B +/* 1010 0011 1001 */ TABDECL(OP_B), // OP_B +/* 1010 0011 1010 */ TABDECL(OP_B), // OP_B +/* 1010 0011 1011 */ TABDECL(OP_B), // OP_B +/* 1010 0011 1100 */ TABDECL(OP_B), // OP_B +/* 1010 0011 1101 */ TABDECL(OP_B), // OP_B +/* 1010 0011 1110 */ TABDECL(OP_B), // OP_B +/* 1010 0011 1111 */ TABDECL(OP_B), // OP_B + +/* 1010 0100 0000 */ TABDECL(OP_B), // OP_B +/* 1010 0100 0001 */ TABDECL(OP_B), // OP_B +/* 1010 0100 0010 */ TABDECL(OP_B), // OP_B +/* 1010 0100 0011 */ TABDECL(OP_B), // OP_B +/* 1010 0100 0100 */ TABDECL(OP_B), // OP_B +/* 1010 0100 0101 */ TABDECL(OP_B), // OP_B +/* 1010 0100 0110 */ TABDECL(OP_B), // OP_B +/* 1010 0100 0111 */ TABDECL(OP_B), // OP_B +/* 1010 0100 1000 */ TABDECL(OP_B), // OP_B +/* 1010 0100 1001 */ TABDECL(OP_B), // OP_B +/* 1010 0100 1010 */ TABDECL(OP_B), // OP_B +/* 1010 0100 1011 */ TABDECL(OP_B), // OP_B +/* 1010 0100 1100 */ TABDECL(OP_B), // OP_B +/* 1010 0100 1101 */ TABDECL(OP_B), // OP_B +/* 1010 0100 1110 */ TABDECL(OP_B), // OP_B +/* 1010 0100 1111 */ TABDECL(OP_B), // OP_B + +/* 1010 0101 0000 */ TABDECL(OP_B), // OP_B +/* 1010 0101 0001 */ TABDECL(OP_B), // OP_B +/* 1010 0101 0010 */ TABDECL(OP_B), // OP_B +/* 1010 0101 0011 */ TABDECL(OP_B), // OP_B +/* 1010 0101 0100 */ TABDECL(OP_B), // OP_B +/* 1010 0101 0101 */ TABDECL(OP_B), // OP_B +/* 1010 0101 0110 */ TABDECL(OP_B), // OP_B +/* 1010 0101 0111 */ TABDECL(OP_B), // OP_B +/* 1010 0101 1000 */ TABDECL(OP_B), // OP_B +/* 1010 0101 1001 */ TABDECL(OP_B), // OP_B +/* 1010 0101 1010 */ TABDECL(OP_B), // OP_B +/* 1010 0101 1011 */ TABDECL(OP_B), // OP_B +/* 1010 0101 1100 */ TABDECL(OP_B), // OP_B +/* 1010 0101 1101 */ TABDECL(OP_B), // OP_B +/* 1010 0101 1110 */ TABDECL(OP_B), // OP_B +/* 1010 0101 1111 */ TABDECL(OP_B), // OP_B + +/* 1010 0110 0000 */ TABDECL(OP_B), // OP_B +/* 1010 0110 0001 */ TABDECL(OP_B), // OP_B +/* 1010 0110 0010 */ TABDECL(OP_B), // OP_B +/* 1010 0110 0011 */ TABDECL(OP_B), // OP_B +/* 1010 0110 0100 */ TABDECL(OP_B), // OP_B +/* 1010 0110 0101 */ TABDECL(OP_B), // OP_B +/* 1010 0110 0110 */ TABDECL(OP_B), // OP_B +/* 1010 0110 0111 */ TABDECL(OP_B), // OP_B +/* 1010 0110 1000 */ TABDECL(OP_B), // OP_B +/* 1010 0110 1001 */ TABDECL(OP_B), // OP_B +/* 1010 0110 1010 */ TABDECL(OP_B), // OP_B +/* 1010 0110 1011 */ TABDECL(OP_B), // OP_B +/* 1010 0110 1100 */ TABDECL(OP_B), // OP_B +/* 1010 0110 1101 */ TABDECL(OP_B), // OP_B +/* 1010 0110 1110 */ TABDECL(OP_B), // OP_B +/* 1010 0110 1111 */ TABDECL(OP_B), // OP_B + +/* 1010 0111 0000 */ TABDECL(OP_B), // OP_B +/* 1010 0111 0001 */ TABDECL(OP_B), // OP_B +/* 1010 0111 0010 */ TABDECL(OP_B), // OP_B +/* 1010 0111 0011 */ TABDECL(OP_B), // OP_B +/* 1010 0111 0100 */ TABDECL(OP_B), // OP_B +/* 1010 0111 0101 */ TABDECL(OP_B), // OP_B +/* 1010 0111 0110 */ TABDECL(OP_B), // OP_B +/* 1010 0111 0111 */ TABDECL(OP_B), // OP_B +/* 1010 0111 1000 */ TABDECL(OP_B), // OP_B +/* 1010 0111 1001 */ TABDECL(OP_B), // OP_B +/* 1010 0111 1010 */ TABDECL(OP_B), // OP_B +/* 1010 0111 1011 */ TABDECL(OP_B), // OP_B +/* 1010 0111 1100 */ TABDECL(OP_B), // OP_B +/* 1010 0111 1101 */ TABDECL(OP_B), // OP_B +/* 1010 0111 1110 */ TABDECL(OP_B), // OP_B +/* 1010 0111 1111 */ TABDECL(OP_B), // OP_B + +/* 1010 1000 0000 */ TABDECL(OP_B), // OP_B +/* 1010 1000 0001 */ TABDECL(OP_B), // OP_B +/* 1010 1000 0010 */ TABDECL(OP_B), // OP_B +/* 1010 1000 0011 */ TABDECL(OP_B), // OP_B +/* 1010 1000 0100 */ TABDECL(OP_B), // OP_B +/* 1010 1000 0101 */ TABDECL(OP_B), // OP_B +/* 1010 1000 0110 */ TABDECL(OP_B), // OP_B +/* 1010 1000 0111 */ TABDECL(OP_B), // OP_B +/* 1010 1000 1000 */ TABDECL(OP_B), // OP_B +/* 1010 1000 1001 */ TABDECL(OP_B), // OP_B +/* 1010 1000 1010 */ TABDECL(OP_B), // OP_B +/* 1010 1000 1011 */ TABDECL(OP_B), // OP_B +/* 1010 1000 1100 */ TABDECL(OP_B), // OP_B +/* 1010 1000 1101 */ TABDECL(OP_B), // OP_B +/* 1010 1000 1110 */ TABDECL(OP_B), // OP_B +/* 1010 1000 1111 */ TABDECL(OP_B), // OP_B + +/* 1010 1001 0000 */ TABDECL(OP_B), // OP_B +/* 1010 1001 0001 */ TABDECL(OP_B), // OP_B +/* 1010 1001 0010 */ TABDECL(OP_B), // OP_B +/* 1010 1001 0011 */ TABDECL(OP_B), // OP_B +/* 1010 1001 0100 */ TABDECL(OP_B), // OP_B +/* 1010 1001 0101 */ TABDECL(OP_B), // OP_B +/* 1010 1001 0110 */ TABDECL(OP_B), // OP_B +/* 1010 1001 0111 */ TABDECL(OP_B), // OP_B +/* 1010 1001 1000 */ TABDECL(OP_B), // OP_B +/* 1010 1001 1001 */ TABDECL(OP_B), // OP_B +/* 1010 1001 1010 */ TABDECL(OP_B), // OP_B +/* 1010 1001 1011 */ TABDECL(OP_B), // OP_B +/* 1010 1001 1100 */ TABDECL(OP_B), // OP_B +/* 1010 1001 1101 */ TABDECL(OP_B), // OP_B +/* 1010 1001 1110 */ TABDECL(OP_B), // OP_B +/* 1010 1001 1111 */ TABDECL(OP_B), // OP_B + +/* 1010 1010 0000 */ TABDECL(OP_B), // OP_B +/* 1010 1010 0001 */ TABDECL(OP_B), // OP_B +/* 1010 1010 0010 */ TABDECL(OP_B), // OP_B +/* 1010 1010 0011 */ TABDECL(OP_B), // OP_B +/* 1010 1010 0100 */ TABDECL(OP_B), // OP_B +/* 1010 1010 0101 */ TABDECL(OP_B), // OP_B +/* 1010 1010 0110 */ TABDECL(OP_B), // OP_B +/* 1010 1010 0111 */ TABDECL(OP_B), // OP_B +/* 1010 1010 1000 */ TABDECL(OP_B), // OP_B +/* 1010 1010 1001 */ TABDECL(OP_B), // OP_B +/* 1010 1010 1010 */ TABDECL(OP_B), // OP_B +/* 1010 1010 1011 */ TABDECL(OP_B), // OP_B +/* 1010 1010 1100 */ TABDECL(OP_B), // OP_B +/* 1010 1010 1101 */ TABDECL(OP_B), // OP_B +/* 1010 1010 1110 */ TABDECL(OP_B), // OP_B +/* 1010 1010 1111 */ TABDECL(OP_B), // OP_B + +/* 1010 1011 0000 */ TABDECL(OP_B), // OP_B +/* 1010 1011 0001 */ TABDECL(OP_B), // OP_B +/* 1010 1011 0010 */ TABDECL(OP_B), // OP_B +/* 1010 1011 0011 */ TABDECL(OP_B), // OP_B +/* 1010 1011 0100 */ TABDECL(OP_B), // OP_B +/* 1010 1011 0101 */ TABDECL(OP_B), // OP_B +/* 1010 1011 0110 */ TABDECL(OP_B), // OP_B +/* 1010 1011 0111 */ TABDECL(OP_B), // OP_B +/* 1010 1011 1000 */ TABDECL(OP_B), // OP_B +/* 1010 1011 1001 */ TABDECL(OP_B), // OP_B +/* 1010 1011 1010 */ TABDECL(OP_B), // OP_B +/* 1010 1011 1011 */ TABDECL(OP_B), // OP_B +/* 1010 1011 1100 */ TABDECL(OP_B), // OP_B +/* 1010 1011 1101 */ TABDECL(OP_B), // OP_B +/* 1010 1011 1110 */ TABDECL(OP_B), // OP_B +/* 1010 1011 1111 */ TABDECL(OP_B), // OP_B + +/* 1010 1100 0000 */ TABDECL(OP_B), // OP_B +/* 1010 1100 0001 */ TABDECL(OP_B), // OP_B +/* 1010 1100 0010 */ TABDECL(OP_B), // OP_B +/* 1010 1100 0011 */ TABDECL(OP_B), // OP_B +/* 1010 1100 0100 */ TABDECL(OP_B), // OP_B +/* 1010 1100 0101 */ TABDECL(OP_B), // OP_B +/* 1010 1100 0110 */ TABDECL(OP_B), // OP_B +/* 1010 1100 0111 */ TABDECL(OP_B), // OP_B +/* 1010 1100 1000 */ TABDECL(OP_B), // OP_B +/* 1010 1100 1001 */ TABDECL(OP_B), // OP_B +/* 1010 1100 1010 */ TABDECL(OP_B), // OP_B +/* 1010 1100 1011 */ TABDECL(OP_B), // OP_B +/* 1010 1100 1100 */ TABDECL(OP_B), // OP_B +/* 1010 1100 1101 */ TABDECL(OP_B), // OP_B +/* 1010 1100 1110 */ TABDECL(OP_B), // OP_B +/* 1010 1100 1111 */ TABDECL(OP_B), // OP_B + +/* 1010 1101 0000 */ TABDECL(OP_B), // OP_B +/* 1010 1101 0001 */ TABDECL(OP_B), // OP_B +/* 1010 1101 0010 */ TABDECL(OP_B), // OP_B +/* 1010 1101 0011 */ TABDECL(OP_B), // OP_B +/* 1010 1101 0100 */ TABDECL(OP_B), // OP_B +/* 1010 1101 0101 */ TABDECL(OP_B), // OP_B +/* 1010 1101 0110 */ TABDECL(OP_B), // OP_B +/* 1010 1101 0111 */ TABDECL(OP_B), // OP_B +/* 1010 1101 1000 */ TABDECL(OP_B), // OP_B +/* 1010 1101 1001 */ TABDECL(OP_B), // OP_B +/* 1010 1101 1010 */ TABDECL(OP_B), // OP_B +/* 1010 1101 1011 */ TABDECL(OP_B), // OP_B +/* 1010 1101 1100 */ TABDECL(OP_B), // OP_B +/* 1010 1101 1101 */ TABDECL(OP_B), // OP_B +/* 1010 1101 1110 */ TABDECL(OP_B), // OP_B +/* 1010 1101 1111 */ TABDECL(OP_B), // OP_B + +/* 1010 1110 0000 */ TABDECL(OP_B), // OP_B +/* 1010 1110 0001 */ TABDECL(OP_B), // OP_B +/* 1010 1110 0010 */ TABDECL(OP_B), // OP_B +/* 1010 1110 0011 */ TABDECL(OP_B), // OP_B +/* 1010 1110 0100 */ TABDECL(OP_B), // OP_B +/* 1010 1110 0101 */ TABDECL(OP_B), // OP_B +/* 1010 1110 0110 */ TABDECL(OP_B), // OP_B +/* 1010 1110 0111 */ TABDECL(OP_B), // OP_B +/* 1010 1110 1000 */ TABDECL(OP_B), // OP_B +/* 1010 1110 1001 */ TABDECL(OP_B), // OP_B +/* 1010 1110 1010 */ TABDECL(OP_B), // OP_B +/* 1010 1110 1011 */ TABDECL(OP_B), // OP_B +/* 1010 1110 1100 */ TABDECL(OP_B), // OP_B +/* 1010 1110 1101 */ TABDECL(OP_B), // OP_B +/* 1010 1110 1110 */ TABDECL(OP_B), // OP_B +/* 1010 1110 1111 */ TABDECL(OP_B), // OP_B + +/* 1010 1111 0000 */ TABDECL(OP_B), // OP_B +/* 1010 1111 0001 */ TABDECL(OP_B), // OP_B +/* 1010 1111 0010 */ TABDECL(OP_B), // OP_B +/* 1010 1111 0011 */ TABDECL(OP_B), // OP_B +/* 1010 1111 0100 */ TABDECL(OP_B), // OP_B +/* 1010 1111 0101 */ TABDECL(OP_B), // OP_B +/* 1010 1111 0110 */ TABDECL(OP_B), // OP_B +/* 1010 1111 0111 */ TABDECL(OP_B), // OP_B +/* 1010 1111 1000 */ TABDECL(OP_B), // OP_B +/* 1010 1111 1001 */ TABDECL(OP_B), // OP_B +/* 1010 1111 1010 */ TABDECL(OP_B), // OP_B +/* 1010 1111 1011 */ TABDECL(OP_B), // OP_B +/* 1010 1111 1100 */ TABDECL(OP_B), // OP_B +/* 1010 1111 1101 */ TABDECL(OP_B), // OP_B +/* 1010 1111 1110 */ TABDECL(OP_B), // OP_B +/* 1010 1111 1111 */ TABDECL(OP_B), // OP_B + +/* 1011 0000 0000 */ TABDECL(OP_BL), // OP_BL +/* 1011 0000 0001 */ TABDECL(OP_BL), // OP_BL +/* 1011 0000 0010 */ TABDECL(OP_BL), // OP_BL +/* 1011 0000 0011 */ TABDECL(OP_BL), // OP_BL +/* 1011 0000 0100 */ TABDECL(OP_BL), // OP_BL +/* 1011 0000 0101 */ TABDECL(OP_BL), // OP_BL +/* 1011 0000 0110 */ TABDECL(OP_BL), // OP_BL +/* 1011 0000 0111 */ TABDECL(OP_BL), // OP_BL +/* 1011 0000 1000 */ TABDECL(OP_BL), // OP_BL +/* 1011 0000 1001 */ TABDECL(OP_BL), // OP_BL +/* 1011 0000 1010 */ TABDECL(OP_BL), // OP_BL +/* 1011 0000 1011 */ TABDECL(OP_BL), // OP_BL +/* 1011 0000 1100 */ TABDECL(OP_BL), // OP_BL +/* 1011 0000 1101 */ TABDECL(OP_BL), // OP_BL +/* 1011 0000 1110 */ TABDECL(OP_BL), // OP_BL +/* 1011 0000 1111 */ TABDECL(OP_BL), // OP_BL + +/* 1011 0001 0000 */ TABDECL(OP_BL), // OP_BL +/* 1011 0001 0001 */ TABDECL(OP_BL), // OP_BL +/* 1011 0001 0010 */ TABDECL(OP_BL), // OP_BL +/* 1011 0001 0011 */ TABDECL(OP_BL), // OP_BL +/* 1011 0001 0100 */ TABDECL(OP_BL), // OP_BL +/* 1011 0001 0101 */ TABDECL(OP_BL), // OP_BL +/* 1011 0001 0110 */ TABDECL(OP_BL), // OP_BL +/* 1011 0001 0111 */ TABDECL(OP_BL), // OP_BL +/* 1011 0001 1000 */ TABDECL(OP_BL), // OP_BL +/* 1011 0001 1001 */ TABDECL(OP_BL), // OP_BL +/* 1011 0001 1010 */ TABDECL(OP_BL), // OP_BL +/* 1011 0001 1011 */ TABDECL(OP_BL), // OP_BL +/* 1011 0001 1100 */ TABDECL(OP_BL), // OP_BL +/* 1011 0001 1101 */ TABDECL(OP_BL), // OP_BL +/* 1011 0001 1110 */ TABDECL(OP_BL), // OP_BL +/* 1011 0001 1111 */ TABDECL(OP_BL), // OP_BL + +/* 1011 0010 0000 */ TABDECL(OP_BL), // OP_BL +/* 1011 0010 0001 */ TABDECL(OP_BL), // OP_BL +/* 1011 0010 0010 */ TABDECL(OP_BL), // OP_BL +/* 1011 0010 0011 */ TABDECL(OP_BL), // OP_BL +/* 1011 0010 0100 */ TABDECL(OP_BL), // OP_BL +/* 1011 0010 0101 */ TABDECL(OP_BL), // OP_BL +/* 1011 0010 0110 */ TABDECL(OP_BL), // OP_BL +/* 1011 0010 0111 */ TABDECL(OP_BL), // OP_BL +/* 1011 0010 1000 */ TABDECL(OP_BL), // OP_BL +/* 1011 0010 1001 */ TABDECL(OP_BL), // OP_BL +/* 1011 0010 1010 */ TABDECL(OP_BL), // OP_BL +/* 1011 0010 1011 */ TABDECL(OP_BL), // OP_BL +/* 1011 0010 1100 */ TABDECL(OP_BL), // OP_BL +/* 1011 0010 1101 */ TABDECL(OP_BL), // OP_BL +/* 1011 0010 1110 */ TABDECL(OP_BL), // OP_BL +/* 1011 0010 1111 */ TABDECL(OP_BL), // OP_BL + +/* 1011 0011 0000 */ TABDECL(OP_BL), // OP_BL +/* 1011 0011 0001 */ TABDECL(OP_BL), // OP_BL +/* 1011 0011 0010 */ TABDECL(OP_BL), // OP_BL +/* 1011 0011 0011 */ TABDECL(OP_BL), // OP_BL +/* 1011 0011 0100 */ TABDECL(OP_BL), // OP_BL +/* 1011 0011 0101 */ TABDECL(OP_BL), // OP_BL +/* 1011 0011 0110 */ TABDECL(OP_BL), // OP_BL +/* 1011 0011 0111 */ TABDECL(OP_BL), // OP_BL +/* 1011 0011 1000 */ TABDECL(OP_BL), // OP_BL +/* 1011 0011 1001 */ TABDECL(OP_BL), // OP_BL +/* 1011 0011 1010 */ TABDECL(OP_BL), // OP_BL +/* 1011 0011 1011 */ TABDECL(OP_BL), // OP_BL +/* 1011 0011 1100 */ TABDECL(OP_BL), // OP_BL +/* 1011 0011 1101 */ TABDECL(OP_BL), // OP_BL +/* 1011 0011 1110 */ TABDECL(OP_BL), // OP_BL +/* 1011 0011 1111 */ TABDECL(OP_BL), // OP_BL + +/* 1011 0100 0000 */ TABDECL(OP_BL), // OP_BL +/* 1011 0100 0001 */ TABDECL(OP_BL), // OP_BL +/* 1011 0100 0010 */ TABDECL(OP_BL), // OP_BL +/* 1011 0100 0011 */ TABDECL(OP_BL), // OP_BL +/* 1011 0100 0100 */ TABDECL(OP_BL), // OP_BL +/* 1011 0100 0101 */ TABDECL(OP_BL), // OP_BL +/* 1011 0100 0110 */ TABDECL(OP_BL), // OP_BL +/* 1011 0100 0111 */ TABDECL(OP_BL), // OP_BL +/* 1011 0100 1000 */ TABDECL(OP_BL), // OP_BL +/* 1011 0100 1001 */ TABDECL(OP_BL), // OP_BL +/* 1011 0100 1010 */ TABDECL(OP_BL), // OP_BL +/* 1011 0100 1011 */ TABDECL(OP_BL), // OP_BL +/* 1011 0100 1100 */ TABDECL(OP_BL), // OP_BL +/* 1011 0100 1101 */ TABDECL(OP_BL), // OP_BL +/* 1011 0100 1110 */ TABDECL(OP_BL), // OP_BL +/* 1011 0100 1111 */ TABDECL(OP_BL), // OP_BL + +/* 1011 0101 0000 */ TABDECL(OP_BL), // OP_BL +/* 1011 0101 0001 */ TABDECL(OP_BL), // OP_BL +/* 1011 0101 0010 */ TABDECL(OP_BL), // OP_BL +/* 1011 0101 0011 */ TABDECL(OP_BL), // OP_BL +/* 1011 0101 0100 */ TABDECL(OP_BL), // OP_BL +/* 1011 0101 0101 */ TABDECL(OP_BL), // OP_BL +/* 1011 0101 0110 */ TABDECL(OP_BL), // OP_BL +/* 1011 0101 0111 */ TABDECL(OP_BL), // OP_BL +/* 1011 0101 1000 */ TABDECL(OP_BL), // OP_BL +/* 1011 0101 1001 */ TABDECL(OP_BL), // OP_BL +/* 1011 0101 1010 */ TABDECL(OP_BL), // OP_BL +/* 1011 0101 1011 */ TABDECL(OP_BL), // OP_BL +/* 1011 0101 1100 */ TABDECL(OP_BL), // OP_BL +/* 1011 0101 1101 */ TABDECL(OP_BL), // OP_BL +/* 1011 0101 1110 */ TABDECL(OP_BL), // OP_BL +/* 1011 0101 1111 */ TABDECL(OP_BL), // OP_BL + +/* 1011 0110 0000 */ TABDECL(OP_BL), // OP_BL +/* 1011 0110 0001 */ TABDECL(OP_BL), // OP_BL +/* 1011 0110 0010 */ TABDECL(OP_BL), // OP_BL +/* 1011 0110 0011 */ TABDECL(OP_BL), // OP_BL +/* 1011 0110 0100 */ TABDECL(OP_BL), // OP_BL +/* 1011 0110 0101 */ TABDECL(OP_BL), // OP_BL +/* 1011 0110 0110 */ TABDECL(OP_BL), // OP_BL +/* 1011 0110 0111 */ TABDECL(OP_BL), // OP_BL +/* 1011 0110 1000 */ TABDECL(OP_BL), // OP_BL +/* 1011 0110 1001 */ TABDECL(OP_BL), // OP_BL +/* 1011 0110 1010 */ TABDECL(OP_BL), // OP_BL +/* 1011 0110 1011 */ TABDECL(OP_BL), // OP_BL +/* 1011 0110 1100 */ TABDECL(OP_BL), // OP_BL +/* 1011 0110 1101 */ TABDECL(OP_BL), // OP_BL +/* 1011 0110 1110 */ TABDECL(OP_BL), // OP_BL +/* 1011 0110 1111 */ TABDECL(OP_BL), // OP_BL + +/* 1011 0111 0000 */ TABDECL(OP_BL), // OP_BL +/* 1011 0111 0001 */ TABDECL(OP_BL), // OP_BL +/* 1011 0111 0010 */ TABDECL(OP_BL), // OP_BL +/* 1011 0111 0011 */ TABDECL(OP_BL), // OP_BL +/* 1011 0111 0100 */ TABDECL(OP_BL), // OP_BL +/* 1011 0111 0101 */ TABDECL(OP_BL), // OP_BL +/* 1011 0111 0110 */ TABDECL(OP_BL), // OP_BL +/* 1011 0111 0111 */ TABDECL(OP_BL), // OP_BL +/* 1011 0111 1000 */ TABDECL(OP_BL), // OP_BL +/* 1011 0111 1001 */ TABDECL(OP_BL), // OP_BL +/* 1011 0111 1010 */ TABDECL(OP_BL), // OP_BL +/* 1011 0111 1011 */ TABDECL(OP_BL), // OP_BL +/* 1011 0111 1100 */ TABDECL(OP_BL), // OP_BL +/* 1011 0111 1101 */ TABDECL(OP_BL), // OP_BL +/* 1011 0111 1110 */ TABDECL(OP_BL), // OP_BL +/* 1011 0111 1111 */ TABDECL(OP_BL), // OP_BL + +/* 1011 1000 0000 */ TABDECL(OP_BL), // OP_BL +/* 1011 1000 0001 */ TABDECL(OP_BL), // OP_BL +/* 1011 1000 0010 */ TABDECL(OP_BL), // OP_BL +/* 1011 1000 0011 */ TABDECL(OP_BL), // OP_BL +/* 1011 1000 0100 */ TABDECL(OP_BL), // OP_BL +/* 1011 1000 0101 */ TABDECL(OP_BL), // OP_BL +/* 1011 1000 0110 */ TABDECL(OP_BL), // OP_BL +/* 1011 1000 0111 */ TABDECL(OP_BL), // OP_BL +/* 1011 1000 1000 */ TABDECL(OP_BL), // OP_BL +/* 1011 1000 1001 */ TABDECL(OP_BL), // OP_BL +/* 1011 1000 1010 */ TABDECL(OP_BL), // OP_BL +/* 1011 1000 1011 */ TABDECL(OP_BL), // OP_BL +/* 1011 1000 1100 */ TABDECL(OP_BL), // OP_BL +/* 1011 1000 1101 */ TABDECL(OP_BL), // OP_BL +/* 1011 1000 1110 */ TABDECL(OP_BL), // OP_BL +/* 1011 1000 1111 */ TABDECL(OP_BL), // OP_BL + +/* 1011 1001 0000 */ TABDECL(OP_BL), // OP_BL +/* 1011 1001 0001 */ TABDECL(OP_BL), // OP_BL +/* 1011 1001 0010 */ TABDECL(OP_BL), // OP_BL +/* 1011 1001 0011 */ TABDECL(OP_BL), // OP_BL +/* 1011 1001 0100 */ TABDECL(OP_BL), // OP_BL +/* 1011 1001 0101 */ TABDECL(OP_BL), // OP_BL +/* 1011 1001 0110 */ TABDECL(OP_BL), // OP_BL +/* 1011 1001 0111 */ TABDECL(OP_BL), // OP_BL +/* 1011 1001 1000 */ TABDECL(OP_BL), // OP_BL +/* 1011 1001 1001 */ TABDECL(OP_BL), // OP_BL +/* 1011 1001 1010 */ TABDECL(OP_BL), // OP_BL +/* 1011 1001 1011 */ TABDECL(OP_BL), // OP_BL +/* 1011 1001 1100 */ TABDECL(OP_BL), // OP_BL +/* 1011 1001 1101 */ TABDECL(OP_BL), // OP_BL +/* 1011 1001 1110 */ TABDECL(OP_BL), // OP_BL +/* 1011 1001 1111 */ TABDECL(OP_BL), // OP_BL + +/* 1011 1010 0000 */ TABDECL(OP_BL), // OP_BL +/* 1011 1010 0001 */ TABDECL(OP_BL), // OP_BL +/* 1011 1010 0010 */ TABDECL(OP_BL), // OP_BL +/* 1011 1010 0011 */ TABDECL(OP_BL), // OP_BL +/* 1011 1010 0100 */ TABDECL(OP_BL), // OP_BL +/* 1011 1010 0101 */ TABDECL(OP_BL), // OP_BL +/* 1011 1010 0110 */ TABDECL(OP_BL), // OP_BL +/* 1011 1010 0111 */ TABDECL(OP_BL), // OP_BL +/* 1011 1010 1000 */ TABDECL(OP_BL), // OP_BL +/* 1011 1010 1001 */ TABDECL(OP_BL), // OP_BL +/* 1011 1010 1010 */ TABDECL(OP_BL), // OP_BL +/* 1011 1010 1011 */ TABDECL(OP_BL), // OP_BL +/* 1011 1010 1100 */ TABDECL(OP_BL), // OP_BL +/* 1011 1010 1101 */ TABDECL(OP_BL), // OP_BL +/* 1011 1010 1110 */ TABDECL(OP_BL), // OP_BL +/* 1011 1010 1111 */ TABDECL(OP_BL), // OP_BL + +/* 1011 1011 0000 */ TABDECL(OP_BL), // OP_BL +/* 1011 1011 0001 */ TABDECL(OP_BL), // OP_BL +/* 1011 1011 0010 */ TABDECL(OP_BL), // OP_BL +/* 1011 1011 0011 */ TABDECL(OP_BL), // OP_BL +/* 1011 1011 0100 */ TABDECL(OP_BL), // OP_BL +/* 1011 1011 0101 */ TABDECL(OP_BL), // OP_BL +/* 1011 1011 0110 */ TABDECL(OP_BL), // OP_BL +/* 1011 1011 0111 */ TABDECL(OP_BL), // OP_BL +/* 1011 1011 1000 */ TABDECL(OP_BL), // OP_BL +/* 1011 1011 1001 */ TABDECL(OP_BL), // OP_BL +/* 1011 1011 1010 */ TABDECL(OP_BL), // OP_BL +/* 1011 1011 1011 */ TABDECL(OP_BL), // OP_BL +/* 1011 1011 1100 */ TABDECL(OP_BL), // OP_BL +/* 1011 1011 1101 */ TABDECL(OP_BL), // OP_BL +/* 1011 1011 1110 */ TABDECL(OP_BL), // OP_BL +/* 1011 1011 1111 */ TABDECL(OP_BL), // OP_BL + +/* 1011 1100 0000 */ TABDECL(OP_BL), // OP_BL +/* 1011 1100 0001 */ TABDECL(OP_BL), // OP_BL +/* 1011 1100 0010 */ TABDECL(OP_BL), // OP_BL +/* 1011 1100 0011 */ TABDECL(OP_BL), // OP_BL +/* 1011 1100 0100 */ TABDECL(OP_BL), // OP_BL +/* 1011 1100 0101 */ TABDECL(OP_BL), // OP_BL +/* 1011 1100 0110 */ TABDECL(OP_BL), // OP_BL +/* 1011 1100 0111 */ TABDECL(OP_BL), // OP_BL +/* 1011 1100 1000 */ TABDECL(OP_BL), // OP_BL +/* 1011 1100 1001 */ TABDECL(OP_BL), // OP_BL +/* 1011 1100 1010 */ TABDECL(OP_BL), // OP_BL +/* 1011 1100 1011 */ TABDECL(OP_BL), // OP_BL +/* 1011 1100 1100 */ TABDECL(OP_BL), // OP_BL +/* 1011 1100 1101 */ TABDECL(OP_BL), // OP_BL +/* 1011 1100 1110 */ TABDECL(OP_BL), // OP_BL +/* 1011 1100 1111 */ TABDECL(OP_BL), // OP_BL + +/* 1011 1101 0000 */ TABDECL(OP_BL), // OP_BL +/* 1011 1101 0001 */ TABDECL(OP_BL), // OP_BL +/* 1011 1101 0010 */ TABDECL(OP_BL), // OP_BL +/* 1011 1101 0011 */ TABDECL(OP_BL), // OP_BL +/* 1011 1101 0100 */ TABDECL(OP_BL), // OP_BL +/* 1011 1101 0101 */ TABDECL(OP_BL), // OP_BL +/* 1011 1101 0110 */ TABDECL(OP_BL), // OP_BL +/* 1011 1101 0111 */ TABDECL(OP_BL), // OP_BL +/* 1011 1101 1000 */ TABDECL(OP_BL), // OP_BL +/* 1011 1101 1001 */ TABDECL(OP_BL), // OP_BL +/* 1011 1101 1010 */ TABDECL(OP_BL), // OP_BL +/* 1011 1101 1011 */ TABDECL(OP_BL), // OP_BL +/* 1011 1101 1100 */ TABDECL(OP_BL), // OP_BL +/* 1011 1101 1101 */ TABDECL(OP_BL), // OP_BL +/* 1011 1101 1110 */ TABDECL(OP_BL), // OP_BL +/* 1011 1101 1111 */ TABDECL(OP_BL), // OP_BL + +/* 1011 1110 0000 */ TABDECL(OP_BL), // OP_BL +/* 1011 1110 0001 */ TABDECL(OP_BL), // OP_BL +/* 1011 1110 0010 */ TABDECL(OP_BL), // OP_BL +/* 1011 1110 0011 */ TABDECL(OP_BL), // OP_BL +/* 1011 1110 0100 */ TABDECL(OP_BL), // OP_BL +/* 1011 1110 0101 */ TABDECL(OP_BL), // OP_BL +/* 1011 1110 0110 */ TABDECL(OP_BL), // OP_BL +/* 1011 1110 0111 */ TABDECL(OP_BL), // OP_BL +/* 1011 1110 1000 */ TABDECL(OP_BL), // OP_BL +/* 1011 1110 1001 */ TABDECL(OP_BL), // OP_BL +/* 1011 1110 1010 */ TABDECL(OP_BL), // OP_BL +/* 1011 1110 1011 */ TABDECL(OP_BL), // OP_BL +/* 1011 1110 1100 */ TABDECL(OP_BL), // OP_BL +/* 1011 1110 1101 */ TABDECL(OP_BL), // OP_BL +/* 1011 1110 1110 */ TABDECL(OP_BL), // OP_BL +/* 1011 1110 1111 */ TABDECL(OP_BL), // OP_BL + +/* 1011 1111 0000 */ TABDECL(OP_BL), // OP_BL +/* 1011 1111 0001 */ TABDECL(OP_BL), // OP_BL +/* 1011 1111 0010 */ TABDECL(OP_BL), // OP_BL +/* 1011 1111 0011 */ TABDECL(OP_BL), // OP_BL +/* 1011 1111 0100 */ TABDECL(OP_BL), // OP_BL +/* 1011 1111 0101 */ TABDECL(OP_BL), // OP_BL +/* 1011 1111 0110 */ TABDECL(OP_BL), // OP_BL +/* 1011 1111 0111 */ TABDECL(OP_BL), // OP_BL +/* 1011 1111 1000 */ TABDECL(OP_BL), // OP_BL +/* 1011 1111 1001 */ TABDECL(OP_BL), // OP_BL +/* 1011 1111 1010 */ TABDECL(OP_BL), // OP_BL +/* 1011 1111 1011 */ TABDECL(OP_BL), // OP_BL +/* 1011 1111 1100 */ TABDECL(OP_BL), // OP_BL +/* 1011 1111 1101 */ TABDECL(OP_BL), // OP_BL +/* 1011 1111 1110 */ TABDECL(OP_BL), // OP_BL +/* 1011 1111 1111 */ TABDECL(OP_BL), // OP_BL + +/* 1100 0000 0000 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0000 0001 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0000 0010 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0000 0011 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0000 0100 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0000 0101 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0000 0110 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0000 0111 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0000 1000 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0000 1001 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0000 1010 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0000 1011 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0000 1100 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0000 1101 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0000 1110 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0000 1111 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION + +/* 1100 0001 0000 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0001 0001 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0001 0010 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0001 0011 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0001 0100 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0001 0101 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0001 0110 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0001 0111 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0001 1000 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0001 1001 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0001 1010 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0001 1011 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0001 1100 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0001 1101 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0001 1110 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0001 1111 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION + +/* 1100 0010 0000 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0010 0001 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0010 0010 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0010 0011 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0010 0100 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0010 0101 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0010 0110 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0010 0111 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0010 1000 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0010 1001 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0010 1010 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0010 1011 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0010 1100 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0010 1101 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0010 1110 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0010 1111 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND + +/* 1100 0011 0000 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0011 0001 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0011 0010 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0011 0011 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0011 0100 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0011 0101 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0011 0110 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0011 0111 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0011 1000 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0011 1001 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0011 1010 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0011 1011 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0011 1100 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0011 1101 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0011 1110 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0011 1111 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND + +/* 1100 0100 0000 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0100 0001 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0100 0010 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0100 0011 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0100 0100 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0100 0101 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0100 0110 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0100 0111 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0100 1000 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0100 1001 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0100 1010 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0100 1011 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0100 1100 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0100 1101 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0100 1110 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 0100 1111 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION + +/* 1100 0101 0000 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0101 0001 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0101 0010 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0101 0011 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0101 0100 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0101 0101 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0101 0110 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0101 0111 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0101 1000 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0101 1001 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0101 1010 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0101 1011 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0101 1100 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0101 1101 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0101 1110 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 0101 1111 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION + +/* 1100 0110 0000 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0110 0001 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0110 0010 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0110 0011 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0110 0100 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0110 0101 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0110 0110 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0110 0111 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0110 1000 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0110 1001 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0110 1010 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0110 1011 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0110 1100 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0110 1101 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0110 1110 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND +/* 1100 0110 1111 */ TABDECL(OP_STC_M_POSTIND), // OP_STC_M_POSTIND + +/* 1100 0111 0000 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0111 0001 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0111 0010 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0111 0011 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0111 0100 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0111 0101 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0111 0110 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0111 0111 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0111 1000 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0111 1001 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0111 1010 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0111 1011 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0111 1100 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0111 1101 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0111 1110 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND +/* 1100 0111 1111 */ TABDECL(OP_LDC_M_POSTIND), // OP_LDC_M_POSTIND + +/* 1100 1000 0000 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1000 0001 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1000 0010 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1000 0011 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1000 0100 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1000 0101 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1000 0110 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1000 0111 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1000 1000 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1000 1001 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1000 1010 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1000 1011 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1000 1100 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1000 1101 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1000 1110 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1000 1111 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION + +/* 1100 1001 0000 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1001 0001 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1001 0010 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1001 0011 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1001 0100 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1001 0101 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1001 0110 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1001 0111 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1001 1000 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1001 1001 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1001 1010 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1001 1011 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1001 1100 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1001 1101 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1001 1110 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1001 1111 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION + +/* 1100 1010 0000 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1010 0001 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1010 0010 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1010 0011 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1010 0100 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1010 0101 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1010 0110 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1010 0111 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1010 1000 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1010 1001 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1010 1010 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1010 1011 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1010 1100 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1010 1101 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1010 1110 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1010 1111 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND + +/* 1100 1011 0000 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1011 0001 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1011 0010 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1011 0011 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1011 0100 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1011 0101 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1011 0110 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1011 0111 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1011 1000 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1011 1001 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1011 1010 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1011 1011 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1011 1100 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1011 1101 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1011 1110 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1011 1111 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND + +/* 1100 1100 0000 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1100 0001 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1100 0010 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1100 0011 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1100 0100 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1100 0101 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1100 0110 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1100 0111 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1100 1000 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1100 1001 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1100 1010 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1100 1011 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1100 1100 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1100 1101 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1100 1110 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION +/* 1100 1100 1111 */ TABDECL(OP_STC_OPTION), // OP_STC_OPTION + +/* 1100 1101 0000 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1101 0001 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1101 0010 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1101 0011 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1101 0100 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1101 0101 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1101 0110 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1101 0111 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1101 1000 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1101 1001 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1101 1010 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1101 1011 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1101 1100 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1101 1101 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1101 1110 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION +/* 1100 1101 1111 */ TABDECL(OP_LDC_OPTION), // OP_LDC_OPTION + +/* 1100 1110 0000 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1110 0001 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1110 0010 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1110 0011 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1110 0100 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1110 0101 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1110 0110 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1110 0111 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1110 1000 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1110 1001 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1110 1010 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1110 1011 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1110 1100 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1110 1101 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1110 1110 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND +/* 1100 1110 1111 */ TABDECL(OP_STC_P_POSTIND), // OP_STC_P_POSTIND + +/* 1100 1111 0000 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1111 0001 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1111 0010 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1111 0011 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1111 0100 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1111 0101 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1111 0110 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1111 0111 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1111 1000 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1111 1001 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1111 1010 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1111 1011 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1111 1100 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1111 1101 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1111 1110 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND +/* 1100 1111 1111 */ TABDECL(OP_LDC_P_POSTIND), // OP_LDC_P_POSTIND + +/* 1101 0000 0000 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0000 0001 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0000 0010 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0000 0011 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0000 0100 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0000 0101 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0000 0110 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0000 0111 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0000 1000 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0000 1001 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0000 1010 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0000 1011 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0000 1100 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0000 1101 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0000 1110 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0000 1111 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF + +/* 1101 0001 0000 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0001 0001 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0001 0010 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0001 0011 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0001 0100 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0001 0101 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0001 0110 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0001 0111 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0001 1000 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0001 1001 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0001 1010 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0001 1011 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0001 1100 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0001 1101 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0001 1110 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0001 1111 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF + +/* 1101 0010 0000 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0010 0001 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0010 0010 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0010 0011 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0010 0100 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0010 0101 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0010 0110 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0010 0111 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0010 1000 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0010 1001 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0010 1010 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0010 1011 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0010 1100 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0010 1101 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0010 1110 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0010 1111 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND + +/* 1101 0011 0000 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0011 0001 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0011 0010 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0011 0011 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0011 0100 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0011 0101 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0011 0110 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0011 0111 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0011 1000 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0011 1001 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0011 1010 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0011 1011 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0011 1100 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0011 1101 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0011 1110 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0011 1111 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND + +/* 1101 0100 0000 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0100 0001 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0100 0010 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0100 0011 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0100 0100 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0100 0101 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0100 0110 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0100 0111 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0100 1000 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0100 1001 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0100 1010 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0100 1011 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0100 1100 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0100 1101 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0100 1110 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF +/* 1101 0100 1111 */ TABDECL(OP_STC_M_IMM_OFF), // OP_STC_M_IMM_OFF + +/* 1101 0101 0000 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0101 0001 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0101 0010 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0101 0011 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0101 0100 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0101 0101 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0101 0110 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0101 0111 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0101 1000 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0101 1001 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0101 1010 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0101 1011 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0101 1100 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0101 1101 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0101 1110 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF +/* 1101 0101 1111 */ TABDECL(OP_LDC_M_IMM_OFF), // OP_LDC_M_IMM_OFF + +/* 1101 0110 0000 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0110 0001 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0110 0010 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0110 0011 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0110 0100 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0110 0101 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0110 0110 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0110 0111 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0110 1000 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0110 1001 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0110 1010 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0110 1011 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0110 1100 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0110 1101 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0110 1110 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND +/* 1101 0110 1111 */ TABDECL(OP_STC_M_PREIND), // OP_STC_M_PREIND + +/* 1101 0111 0000 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0111 0001 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0111 0010 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0111 0011 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0111 0100 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0111 0101 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0111 0110 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0111 0111 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0111 1000 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0111 1001 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0111 1010 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0111 1011 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0111 1100 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0111 1101 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0111 1110 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND +/* 1101 0111 1111 */ TABDECL(OP_LDC_M_PREIND), // OP_LDC_M_PREIND + +/* 1101 1000 0000 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1000 0001 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1000 0010 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1000 0011 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1000 0100 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1000 0101 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1000 0110 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1000 0111 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1000 1000 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1000 1001 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1000 1010 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1000 1011 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1000 1100 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1000 1101 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1000 1110 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1000 1111 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF + +/* 1101 1001 0000 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1001 0001 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1001 0010 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1001 0011 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1001 0100 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1001 0101 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1001 0110 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1001 0111 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1001 1000 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1001 1001 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1001 1010 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1001 1011 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1001 1100 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1001 1101 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1001 1110 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1001 1111 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF + +/* 1101 1010 0000 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1010 0001 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1010 0010 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1010 0011 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1010 0100 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1010 0101 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1010 0110 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1010 0111 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1010 1000 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1010 1001 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1010 1010 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1010 1011 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1010 1100 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1010 1101 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1010 1110 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1010 1111 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND + +/* 1101 1011 0000 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1011 0001 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1011 0010 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1011 0011 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1011 0100 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1011 0101 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1011 0110 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1011 0111 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1011 1000 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1011 1001 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1011 1010 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1011 1011 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1011 1100 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1011 1101 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1011 1110 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1011 1111 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND + +/* 1101 1100 0000 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1100 0001 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1100 0010 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1100 0011 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1100 0100 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1100 0101 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1100 0110 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1100 0111 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1100 1000 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1100 1001 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1100 1010 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1100 1011 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1100 1100 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1100 1101 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1100 1110 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF +/* 1101 1100 1111 */ TABDECL(OP_STC_P_IMM_OFF), // OP_STC_P_IMM_OFF + +/* 1101 1101 0000 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1101 0001 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1101 0010 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1101 0011 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1101 0100 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1101 0101 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1101 0110 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1101 0111 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1101 1000 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1101 1001 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1101 1010 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1101 1011 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1101 1100 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1101 1101 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1101 1110 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF +/* 1101 1101 1111 */ TABDECL(OP_LDC_P_IMM_OFF), // OP_LDC_P_IMM_OFF + +/* 1101 1110 0000 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1110 0001 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1110 0010 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1110 0011 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1110 0100 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1110 0101 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1110 0110 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1110 0111 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1110 1000 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1110 1001 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1110 1010 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1110 1011 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1110 1100 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1110 1101 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1110 1110 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND +/* 1101 1110 1111 */ TABDECL(OP_STC_P_PREIND), // OP_STC_P_PREIND + +/* 1101 1111 0000 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1111 0001 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1111 0010 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1111 0011 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1111 0100 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1111 0101 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1111 0110 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1111 0111 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1111 1000 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1111 1001 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1111 1010 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1111 1011 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1111 1100 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1111 1101 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1111 1110 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND +/* 1101 1111 1111 */ TABDECL(OP_LDC_P_PREIND), // OP_LDC_P_PREIND + +/* 1110 0000 0000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0000 0001 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0000 0010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0000 0011 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0000 0100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0000 0101 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0000 0110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0000 0111 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0000 1000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0000 1001 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0000 1010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0000 1011 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0000 1100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0000 1101 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0000 1110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0000 1111 */ TABDECL(OP_MCR), // OP_MCR + +/* 1110 0001 0000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0001 0001 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0001 0010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0001 0011 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0001 0100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0001 0101 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0001 0110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0001 0111 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0001 1000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0001 1001 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0001 1010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0001 1011 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0001 1100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0001 1101 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0001 1110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0001 1111 */ TABDECL(OP_MRC), // OP_MRC + +/* 1110 0010 0000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0010 0001 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0010 0010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0010 0011 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0010 0100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0010 0101 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0010 0110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0010 0111 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0010 1000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0010 1001 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0010 1010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0010 1011 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0010 1100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0010 1101 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0010 1110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0010 1111 */ TABDECL(OP_MCR), // OP_MCR + +/* 1110 0011 0000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0011 0001 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0011 0010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0011 0011 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0011 0100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0011 0101 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0011 0110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0011 0111 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0011 1000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0011 1001 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0011 1010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0011 1011 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0011 1100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0011 1101 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0011 1110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0011 1111 */ TABDECL(OP_MRC), // OP_MRC + +/* 1110 0100 0000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0100 0001 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0100 0010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0100 0011 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0100 0100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0100 0101 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0100 0110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0100 0111 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0100 1000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0100 1001 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0100 1010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0100 1011 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0100 1100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0100 1101 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0100 1110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0100 1111 */ TABDECL(OP_MCR), // OP_MCR + +/* 1110 0101 0000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0101 0001 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0101 0010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0101 0011 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0101 0100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0101 0101 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0101 0110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0101 0111 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0101 1000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0101 1001 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0101 1010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0101 1011 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0101 1100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0101 1101 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0101 1110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0101 1111 */ TABDECL(OP_MRC), // OP_MRC + +/* 1110 0110 0000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0110 0001 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0110 0010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0110 0011 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0110 0100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0110 0101 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0110 0110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0110 0111 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0110 1000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0110 1001 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0110 1010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0110 1011 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0110 1100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0110 1101 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 0110 1110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0110 1111 */ TABDECL(OP_MCR), // OP_MCR + +/* 1110 0111 0000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0111 0001 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0111 0010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0111 0011 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0111 0100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0111 0101 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0111 0110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0111 0111 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0111 1000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0111 1001 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0111 1010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0111 1011 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0111 1100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0111 1101 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 0111 1110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 0111 1111 */ TABDECL(OP_MRC), // OP_MRC + +/* 1110 1000 0000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1000 0001 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1000 0010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1000 0011 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1000 0100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1000 0101 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1000 0110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1000 0111 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1000 1000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1000 1001 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1000 1010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1000 1011 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1000 1100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1000 1101 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1000 1110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1000 1111 */ TABDECL(OP_MCR), // OP_MCR + +/* 1110 1001 0000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1001 0001 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1001 0010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1001 0011 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1001 0100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1001 0101 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1001 0110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1001 0111 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1001 1000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1001 1001 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1001 1010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1001 1011 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1001 1100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1001 1101 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1001 1110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1001 1111 */ TABDECL(OP_MRC), // OP_MRC + +/* 1110 1010 0000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1010 0001 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1010 0010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1010 0011 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1010 0100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1010 0101 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1010 0110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1010 0111 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1010 1000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1010 1001 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1010 1010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1010 1011 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1010 1100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1010 1101 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1010 1110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1010 1111 */ TABDECL(OP_MCR), // OP_MCR + +/* 1110 1011 0000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1011 0001 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1011 0010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1011 0011 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1011 0100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1011 0101 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1011 0110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1011 0111 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1011 1000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1011 1001 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1011 1010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1011 1011 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1011 1100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1011 1101 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1011 1110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1011 1111 */ TABDECL(OP_MRC), // OP_MRC + +/* 1110 1100 0000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1100 0001 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1100 0010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1100 0011 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1100 0100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1100 0101 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1100 0110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1100 0111 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1100 1000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1100 1001 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1100 1010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1100 1011 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1100 1100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1100 1101 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1100 1110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1100 1111 */ TABDECL(OP_MCR), // OP_MCR + +/* 1110 1101 0000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1101 0001 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1101 0010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1101 0011 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1101 0100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1101 0101 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1101 0110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1101 0111 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1101 1000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1101 1001 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1101 1010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1101 1011 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1101 1100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1101 1101 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1101 1110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1101 1111 */ TABDECL(OP_MRC), // OP_MRC + +/* 1110 1110 0000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1110 0001 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1110 0010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1110 0011 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1110 0100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1110 0101 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1110 0110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1110 0111 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1110 1000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1110 1001 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1110 1010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1110 1011 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1110 1100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1110 1101 */ TABDECL(OP_MCR), // OP_MCR +/* 1110 1110 1110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1110 1111 */ TABDECL(OP_MCR), // OP_MCR + +/* 1110 1111 0000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1111 0001 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1111 0010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1111 0011 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1111 0100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1111 0101 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1111 0110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1111 0111 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1111 1000 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1111 1001 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1111 1010 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1111 1011 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1111 1100 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1111 1101 */ TABDECL(OP_MRC), // OP_MRC +/* 1110 1111 1110 */ TABDECL(OP_CDP), // OP_CDP +/* 1110 1111 1111 */ TABDECL(OP_MRC), // OP_MRC + +/* 1111 0000 0000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0000 0001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0000 0010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0000 0011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0000 0100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0000 0101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0000 0110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0000 0111 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0000 1000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0000 1001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0000 1010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0000 1011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0000 1100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0000 1101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0000 1110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0000 1111 */ TABDECL(OP_SWI), // OP_SWI + +/* 1111 0001 0000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0001 0001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0001 0010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0001 0011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0001 0100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0001 0101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0001 0110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0001 0111 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0001 1000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0001 1001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0001 1010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0001 1011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0001 1100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0001 1101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0001 1110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0001 1111 */ TABDECL(OP_SWI), // OP_SWI + +/* 1111 0010 0000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0010 0001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0010 0010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0010 0011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0010 0100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0010 0101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0010 0110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0010 0111 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0010 1000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0010 1001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0010 1010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0010 1011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0010 1100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0010 1101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0010 1110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0010 1111 */ TABDECL(OP_SWI), // OP_SWI + +/* 1111 0011 0000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0011 0001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0011 0010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0011 0011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0011 0100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0011 0101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0011 0110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0011 0111 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0011 1000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0011 1001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0011 1010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0011 1011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0011 1100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0011 1101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0011 1110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0011 1111 */ TABDECL(OP_SWI), // OP_SWI + +/* 1111 0100 0000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0100 0001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0100 0010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0100 0011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0100 0100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0100 0101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0100 0110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0100 0111 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0100 1000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0100 1001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0100 1010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0100 1011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0100 1100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0100 1101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0100 1110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0100 1111 */ TABDECL(OP_SWI), // OP_SWI + +/* 1111 0101 0000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0101 0001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0101 0010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0101 0011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0101 0100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0101 0101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0101 0110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0101 0111 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0101 1000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0101 1001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0101 1010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0101 1011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0101 1100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0101 1101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0101 1110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0101 1111 */ TABDECL(OP_SWI), // OP_SWI + +/* 1111 0110 0000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0110 0001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0110 0010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0110 0011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0110 0100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0110 0101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0110 0110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0110 0111 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0110 1000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0110 1001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0110 1010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0110 1011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0110 1100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0110 1101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0110 1110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0110 1111 */ TABDECL(OP_SWI), // OP_SWI + +/* 1111 0111 0000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0111 0001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0111 0010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0111 0011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0111 0100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0111 0101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0111 0110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0111 0111 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0111 1000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0111 1001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0111 1010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0111 1011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0111 1100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0111 1101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0111 1110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 0111 1111 */ TABDECL(OP_SWI), // OP_SWI + +/* 1111 1000 0000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1000 0001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1000 0010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1000 0011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1000 0100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1000 0101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1000 0110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1000 0111 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1000 1000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1000 1001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1000 1010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1000 1011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1000 1100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1000 1101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1000 1110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1000 1111 */ TABDECL(OP_SWI), // OP_SWI + +/* 1111 1001 0000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1001 0001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1001 0010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1001 0011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1001 0100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1001 0101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1001 0110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1001 0111 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1001 1000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1001 1001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1001 1010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1001 1011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1001 1100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1001 1101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1001 1110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1001 1111 */ TABDECL(OP_SWI), // OP_SWI + +/* 1111 1010 0000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1010 0001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1010 0010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1010 0011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1010 0100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1010 0101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1010 0110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1010 0111 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1010 1000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1010 1001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1010 1010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1010 1011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1010 1100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1010 1101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1010 1110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1010 1111 */ TABDECL(OP_SWI), // OP_SWI + +/* 1111 1011 0000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1011 0001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1011 0010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1011 0011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1011 0100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1011 0101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1011 0110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1011 0111 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1011 1000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1011 1001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1011 1010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1011 1011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1011 1100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1011 1101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1011 1110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1011 1111 */ TABDECL(OP_SWI), // OP_SWI + +/* 1111 1100 0000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1100 0001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1100 0010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1100 0011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1100 0100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1100 0101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1100 0110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1100 0111 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1100 1000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1100 1001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1100 1010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1100 1011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1100 1100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1100 1101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1100 1110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1100 1111 */ TABDECL(OP_SWI), // OP_SWI + +/* 1111 1101 0000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1101 0001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1101 0010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1101 0011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1101 0100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1101 0101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1101 0110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1101 0111 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1101 1000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1101 1001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1101 1010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1101 1011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1101 1100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1101 1101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1101 1110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1101 1111 */ TABDECL(OP_SWI), // OP_SWI + +/* 1111 1110 0000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1110 0001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1110 0010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1110 0011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1110 0100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1110 0101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1110 0110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1110 0111 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1110 1000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1110 1001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1110 1010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1110 1011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1110 1100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1110 1101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1110 1110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1110 1111 */ TABDECL(OP_SWI), // OP_SWI + +/* 1111 1111 0000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1111 0001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1111 0010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1111 0011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1111 0100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1111 0101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1111 0110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1111 0111 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1111 1000 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1111 1001 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1111 1010 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1111 1011 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1111 1100 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1111 1101 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1111 1110 */ TABDECL(OP_SWI), // OP_SWI +/* 1111 1111 1111 */ TABDECL(OP_SWI), // OP_SWI diff -Nru audacious-plugins-4.1/src/xsf/desmume/instructions.h audacious-plugins-4.3.1/src/xsf/desmume/instructions.h --- audacious-plugins-4.1/src/xsf/desmume/instructions.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/instructions.h 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,24 @@ +/* Copyright (C) 2006 yopyop + Copyright (C) 2012 DeSmuME team + + This file 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 3 of the License, or + (at your option) any later version. + + This file 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 the this software. If not, see . +*/ + +#pragma once + +typedef uint32_t (FASTCALL *OpFunc)(uint32_t i); +extern const OpFunc arm_instructions_set[2][4096]; +extern const char *arm_instruction_names[4096]; +extern const OpFunc thumb_instructions_set[2][1024]; +extern const char *thumb_instruction_names[1024]; diff -Nru audacious-plugins-4.1/src/xsf/desmume/matrix.cc audacious-plugins-4.3.1/src/xsf/desmume/matrix.cc --- audacious-plugins-4.1/src/xsf/desmume/matrix.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/matrix.cc 1970-01-01 00:00:00.000000000 +0000 @@ -1,257 +0,0 @@ -/* - Copyright (C) 2006-2007 shash - - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#include -#include -#include -#include "matrix.h" - -void MatrixInit (float *matrix) -{ - memset (matrix, 0, sizeof(float)*16); - - matrix[0] = matrix[5] = matrix[10] = matrix[15] = 1.f; -} - -void MatrixMultVec4x4 (float *matrix, float *vecPtr) -{ - float x = vecPtr[0]; - float y = vecPtr[1]; - float z = vecPtr[2]; - - vecPtr[0] = x * matrix[0] + y * matrix[4] + z * matrix[ 8] + matrix[12]; - vecPtr[1] = x * matrix[1] + y * matrix[5] + z * matrix[ 9] + matrix[13]; - vecPtr[2] = x * matrix[2] + y * matrix[6] + z * matrix[10] + matrix[14]; -} - -void MatrixMultVec3x3 (float *matrix, float *vecPtr) -{ - float x = vecPtr[0]; - float y = vecPtr[1]; - float z = vecPtr[2]; - - vecPtr[0] = x * matrix[0] + y * matrix[4] + z * matrix[ 8]; - vecPtr[1] = x * matrix[1] + y * matrix[5] + z * matrix[ 9]; - vecPtr[2] = x * matrix[2] + y * matrix[6] + z * matrix[10]; -} - -void MatrixIdentity (float *matrix) -{ - memset (matrix, 0, sizeof(float)*16); - - matrix[0] = matrix[5] = matrix[10] = matrix[15] = 1.f; -} - -void MatrixMultiply (float *matrix, float *rightMatrix) -{ - float tmpMatrix[16]; - - tmpMatrix[0] = (matrix[0]*rightMatrix[0])+(matrix[4]*rightMatrix[1])+(matrix[8]*rightMatrix[2])+(matrix[12]*rightMatrix[3]); - tmpMatrix[1] = (matrix[1]*rightMatrix[0])+(matrix[5]*rightMatrix[1])+(matrix[9]*rightMatrix[2])+(matrix[13]*rightMatrix[3]); - tmpMatrix[2] = (matrix[2]*rightMatrix[0])+(matrix[6]*rightMatrix[1])+(matrix[10]*rightMatrix[2])+(matrix[14]*rightMatrix[3]); - tmpMatrix[3] = (matrix[3]*rightMatrix[0])+(matrix[7]*rightMatrix[1])+(matrix[11]*rightMatrix[2])+(matrix[15]*rightMatrix[3]); - - tmpMatrix[4] = (matrix[0]*rightMatrix[4])+(matrix[4]*rightMatrix[5])+(matrix[8]*rightMatrix[6])+(matrix[12]*rightMatrix[7]); - tmpMatrix[5] = (matrix[1]*rightMatrix[4])+(matrix[5]*rightMatrix[5])+(matrix[9]*rightMatrix[6])+(matrix[13]*rightMatrix[7]); - tmpMatrix[6] = (matrix[2]*rightMatrix[4])+(matrix[6]*rightMatrix[5])+(matrix[10]*rightMatrix[6])+(matrix[14]*rightMatrix[7]); - tmpMatrix[7] = (matrix[3]*rightMatrix[4])+(matrix[7]*rightMatrix[5])+(matrix[11]*rightMatrix[6])+(matrix[15]*rightMatrix[7]); - - tmpMatrix[8] = (matrix[0]*rightMatrix[8])+(matrix[4]*rightMatrix[9])+(matrix[8]*rightMatrix[10])+(matrix[12]*rightMatrix[11]); - tmpMatrix[9] = (matrix[1]*rightMatrix[8])+(matrix[5]*rightMatrix[9])+(matrix[9]*rightMatrix[10])+(matrix[13]*rightMatrix[11]); - tmpMatrix[10] = (matrix[2]*rightMatrix[8])+(matrix[6]*rightMatrix[9])+(matrix[10]*rightMatrix[10])+(matrix[14]*rightMatrix[11]); - tmpMatrix[11] = (matrix[3]*rightMatrix[8])+(matrix[7]*rightMatrix[9])+(matrix[11]*rightMatrix[10])+(matrix[15]*rightMatrix[11]); - - tmpMatrix[12] = (matrix[0]*rightMatrix[12])+(matrix[4]*rightMatrix[13])+(matrix[8]*rightMatrix[14])+(matrix[12]*rightMatrix[15]); - tmpMatrix[13] = (matrix[1]*rightMatrix[12])+(matrix[5]*rightMatrix[13])+(matrix[9]*rightMatrix[14])+(matrix[13]*rightMatrix[15]); - tmpMatrix[14] = (matrix[2]*rightMatrix[12])+(matrix[6]*rightMatrix[13])+(matrix[10]*rightMatrix[14])+(matrix[14]*rightMatrix[15]); - tmpMatrix[15] = (matrix[3]*rightMatrix[12])+(matrix[7]*rightMatrix[13])+(matrix[11]*rightMatrix[14])+(matrix[15]*rightMatrix[15]); - - memcpy (matrix, tmpMatrix, sizeof(float)*16); -} -/* -void MatrixMulti (float* right) -{ - float tmpMatrix[16]; - - tmpMatrix[0] = (matrix[0]*right[0])+(matrix[4]*right[1])+(matrix[8]*right[2])+(matrix[12]*right[3]); - tmpMatrix[1] = (matrix[1]*right[0])+(matrix[5]*right[1])+(matrix[9]*right[2])+(matrix[13]*right[3]); - tmpMatrix[2] = (matrix[2]*right[0])+(matrix[6]*right[1])+(matrix[10]*right[2])+(matrix[14]*right[3]); - tmpMatrix[3] = (matrix[3]*right[0])+(matrix[7]*right[1])+(matrix[11]*right[2])+(matrix[15]*right[3]); - - tmpMatrix[4] = (matrix[0]*right[4])+(matrix[4]*right[5])+(matrix[8]*right[6])+(matrix[12]*right[7]); - tmpMatrix[5] = (matrix[1]*right[4])+(matrix[5]*right[5])+(matrix[9]*right[6])+(matrix[13]*right[7]); - tmpMatrix[6] = (matrix[2]*right[4])+(matrix[6]*right[5])+(matrix[10]*right[6])+(matrix[14]*right[7]); - tmpMatrix[7] = (matrix[3]*right[4])+(matrix[7]*right[5])+(matrix[11]*right[6])+(matrix[15]*right[7]); - - tmpMatrix[8] = (matrix[0]*right[8])+(matrix[4]*right[9])+(matrix[8]*right[10])+(matrix[12]*right[11]); - tmpMatrix[9] = (matrix[1]*right[8])+(matrix[5]*right[9])+(matrix[9]*right[10])+(matrix[13]*right[11]); - tmpMatrix[10] = (matrix[2]*right[8])+(matrix[6]*right[9])+(matrix[10]*right[10])+(matrix[14]*right[11]); - tmpMatrix[11] = (matrix[3]*right[8])+(matrix[7]*right[9])+(matrix[11]*right[10])+(matrix[15]*right[11]); - - tmpMatrix[12] = (matrix[0]*right[12])+(matrix[4]*right[13])+(matrix[8]*right[14])+(matrix[12]*right[15]); - tmpMatrix[13] = (matrix[1]*right[12])+(matrix[5]*right[13])+(matrix[9]*right[14])+(matrix[13]*right[15]); - tmpMatrix[14] = (matrix[2]*right[12])+(matrix[6]*right[13])+(matrix[10]*right[14])+(matrix[14]*right[15]); - tmpMatrix[15] = (matrix[3]*right[12])+(matrix[7]*right[13])+(matrix[11]*right[14])+(matrix[15]*right[15]); - - memcpy (matrix, tmpMatrix, sizeof(float)*16); -} - - -float* Matrix::Get (void) -{ - return matrix; -} - -float MatrixGet (float *matrix, int index) -{ - return matrix[index]; -} -*/ - -float MatrixGetMultipliedIndex (int index, float *matrix, float *rightMatrix) -{ - int iMod = index%4, iDiv = (index>>2)<<2; - - return (matrix[iMod ]*rightMatrix[iDiv ])+(matrix[iMod+ 4]*rightMatrix[iDiv+1])+ - (matrix[iMod+8]*rightMatrix[iDiv+2])+(matrix[iMod+12]*rightMatrix[iDiv+3]); -} - -void MatrixSet (float *matrix, int x, int y, float value) -{ - matrix [x+(y<<2)] = value; -} -/* -void Matrix::Set (int pos, float value) -{ - matrix [pos] = value; -} -*/ -void MatrixCopy (float *matrixDST, float *matrixSRC) -{ - memcpy (matrixDST, matrixSRC, sizeof(float)*16); -} - -void MatrixTranslate (float *matrix, float *ptr) -{ - matrix[12] += (matrix[0]*ptr[0])+(matrix[4]*ptr[1])+(matrix[ 8]*ptr[2]); - matrix[13] += (matrix[1]*ptr[0])+(matrix[5]*ptr[1])+(matrix[ 9]*ptr[2]); - matrix[14] += (matrix[2]*ptr[0])+(matrix[6]*ptr[1])+(matrix[10]*ptr[2]); - matrix[15] += (matrix[3]*ptr[0])+(matrix[7]*ptr[1])+(matrix[11]*ptr[2]); -} - -void MatrixScale (float *matrix, float *ptr) -{ - matrix[0] *= ptr[0]; - matrix[1] *= ptr[0]; - matrix[2] *= ptr[0]; - matrix[3] *= ptr[0]; - - matrix[4] *= ptr[1]; - matrix[5] *= ptr[1]; - matrix[6] *= ptr[1]; - matrix[7] *= ptr[1]; - - matrix[8] *= ptr[2]; - matrix[9] *= ptr[2]; - matrix[10] *= ptr[2]; - matrix[11] *= ptr[2]; -} -/* -void Matrix::Set (float a11, float a21, float a31, float a41, - float a12, float a22, float a32, float a42, - float a13, float a23, float a33, float a43, - float a14, float a24, float a34, float a44) -{ -} -*/ - - -//----------------------------------------- - -void MatrixStackInit (MatrixStack *stack) -{ - stack->matrix = nullptr; - stack->position = 0; - stack->size = 0; -} - -void MatrixStackSetMaxSize (MatrixStack *stack, int size) -{ - int i = 0; - - stack->size = size; - - if (stack->matrix == nullptr) - { - stack->matrix = (float*) malloc (stack->size*16*sizeof(float)); - } - else - { - free (stack->matrix); - stack->matrix = (float*) malloc (stack->size*16*sizeof(float)); - } - - for (i = 0; i < stack->size; i++) - { - MatrixInit (&stack->matrix[i*16]); - } - - stack->size--; -} - - -void MatrixStackSetStackPosition (MatrixStack *stack, int pos) -{ - stack->position += pos; - - if (stack->position < 0) - stack->position = 0; - else if (stack->position > stack->size) - stack->position = stack->size; -} - -void MatrixStackPushMatrix (MatrixStack *stack, float *ptr) -{ - MatrixCopy (&stack->matrix[stack->position*16], ptr); - - MatrixStackSetStackPosition (stack, 1); -} - -float * MatrixStackPopMatrix (MatrixStack *stack, int size) -{ - MatrixStackSetStackPosition(stack, -size); - - return &stack->matrix[stack->position*16]; -} - -float * MatrixStackGetPos (MatrixStack *stack, int pos) -{ - return &stack->matrix[pos*16]; -} - -float * MatrixStackGet (MatrixStack *stack) -{ - return &stack->matrix[stack->position*16]; -} - -void MatrixStackLoadMatrix (MatrixStack *stack, int pos, float *ptr) -{ - MatrixCopy (&stack->matrix[pos*16], ptr); -} diff -Nru audacious-plugins-4.1/src/xsf/desmume/matrix.h audacious-plugins-4.3.1/src/xsf/desmume/matrix.h --- audacious-plugins-4.1/src/xsf/desmume/matrix.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/matrix.h 2023-04-29 20:17:32.000000000 +0000 @@ -1,51 +1,63 @@ -/* +/* Copyright (C) 2006-2007 shash + Copyright (C) 2007-2012 DeSmuME team - This file is part of DeSmuME + This file 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 file 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. - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + You should have received a copy of the GNU General Public License + along with the this software. If not, see . */ -#ifndef MATRIX_H -#define MATRIX_H +#pragma once -typedef struct MatrixStack +#include +#include +#include "types.h" +#include "mem.h" + +#ifdef __SSE2__ +#include +#endif + +// these functions are an unreliable, inaccurate floor. +// it should only be used for positive numbers +// this isnt as fast as it could be if we used a visual c++ intrinsic, but those appear not to be universally available +inline uint32_t u32floor(float f) +{ +#ifdef __SSE2__ + return static_cast(_mm_cvtt_ss2si(_mm_set_ss(f))); +#else + return static_cast(f); +#endif +} +inline uint32_t u32floor(double d) { - float *matrix; - int position; - int size; -} MatrixStack; - -void MatrixInit (float *matrix); -void MatrixMultVec3x3 (float *matrix, float *vecPtr); -void MatrixMultVec4x4 (float *matrix, float *vecPtr); -void MatrixIdentity (float *matrix); -void MatrixMultiply (float *matrix, float *rightMatrix); -float MatrixGetMultipliedIndex(int index, float *matrix, float *rightMatrix); -void MatrixSet (float *matrix, int x, int y, float value); -void MatrixCopy (float *matrixDST, float *matrixSRC); -void MatrixTranslate (float *matrix, float *ptr); -void MatrixScale (float *matrix, float *ptr); - -void MatrixStackInit (MatrixStack *stack); -void MatrixStackSetMaxSize (MatrixStack *stack, int size); -void MatrixStackSetStackPosition (MatrixStack *stack, int pos); -void MatrixStackPushMatrix (MatrixStack *stack, float *ptr); -float* MatrixStackPopMatrix (MatrixStack *stack, int size); -float* MatrixStackGetPos (MatrixStack *stack, int pos); -float* MatrixStackGet (MatrixStack *stack); -void MatrixStackLoadMatrix (MatrixStack *stack, int pos, float *ptr); +#ifdef __SSE2__ + return static_cast(_mm_cvttsd_si32(_mm_set_sd(d))); +#else + return static_cast(d); +#endif +} +// same as above but works for negative values too. +// be sure that the results are the same thing as floorf! +inline int32_t s32floor(float f) +{ +#ifdef __SSE2__ + return _mm_cvtss_si32(_mm_add_ss(_mm_set_ss(-0.5f),_mm_add_ss(_mm_set_ss(f), _mm_set_ss(f)))) >> 1; +#else + return static_cast(floorf(f)); #endif +} +inline int32_t s32floor(double d) +{ + return s32floor(static_cast(d)); +} diff -Nru audacious-plugins-4.1/src/xsf/desmume/mc.cc audacious-plugins-4.3.1/src/xsf/desmume/mc.cc --- audacious-plugins-4.1/src/xsf/desmume/mc.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/mc.cc 2023-04-29 20:17:32.000000000 +0000 @@ -1,121 +1,634 @@ -/* Copyright (C) 2006 thoduv - Copyright (C) 2006-2007 Theo Berkau +/* + Copyright (C) 2006 thoduv + Copyright (C) 2006-2007 Theo Berkau + Copyright (C) 2008-2013 DeSmuME team + + This file 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 file 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. - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + You should have received a copy of the GNU General Public License + along with the this software. If not, see . */ -#include -#include "debug.h" +#include +#include #include "types.h" #include "mc.h" +#include "readwrite.h" +#include "NDSSystem.h" + +static const uint8_t FW_CMD_READ = 0x03; +static const uint8_t FW_CMD_WRITEDISABLE = 0x04; +static const uint8_t FW_CMD_READSTATUS = 0x05; +static const uint8_t FW_CMD_WRITEENABLE = 0x06; +static const uint8_t FW_CMD_PAGEWRITE = 0x0A; +static const uint8_t FW_CMD_READ_ID = 0x9F; + +// since r2203 this was 0x00. +// but baby pals proves finally that it should be 0xFF: +// the game reads its initial sound volumes from uninitialized data, and if it is 0, the game will be silent +// if it is 0xFF then the game starts with its sound and music at max, as presumably it is supposed to. +// so in r3303 I finally changed it (no$ appears definitely to initialized to 0xFF) +static const uint8_t kUninitializedSaveDataValue = 0xFF; -#define FW_CMD_READ 0x3 -#define FW_CMD_WRITEDISABLE 0x4 -#define FW_CMD_READSTATUS 0x5 -#define FW_CMD_WRITEENABLE 0x6 -#define FW_CMD_PAGEWRITE 0xA - -#define BM_CMD_AUTODETECT 0xFF -#define BM_CMD_WRITESTATUS 0x1 -#define BM_CMD_WRITELOW 0x2 -#define BM_CMD_READLOW 0x3 -#define BM_CMD_WRITEDISABLE 0x4 -#define BM_CMD_READSTATUS 0x5 -#define BM_CMD_WRITEENABLE 0x6 -#define BM_CMD_WRITEHIGH 0xA -#define BM_CMD_READHIGH 0xB - -/* FLASH*/ -#define COMM_PAGE_WRITE 0x0A -#define COMM_PAGE_ERASE 0xDB -#define COMM_SECTOR_ERASE 0xD8 -#define COMM_CHIP_ERASE 0xC7 -#define CARDFLASH_READ_BYTES_FAST 0x0B /* Not used*/ -#define CARDFLASH_DEEP_POWDOWN 0xB9 /* Not used*/ -#define CARDFLASH_WAKEUP 0xAB /* Not used*/ +static const char *kDesmumeSaveCookie = "|-DESMUME SAVE-|"; +//the lookup table from user save types to save parameters +const SAVE_TYPE save_types[] = +{ + {"Autodetect", MC_TYPE_AUTODETECT, 1}, + {"EEPROM 4kbit", MC_TYPE_EEPROM1, MC_SIZE_4KBITS}, + {"EEPROM 64kbit", MC_TYPE_EEPROM2, MC_SIZE_64KBITS}, + {"EEPROM 512kbit", MC_TYPE_EEPROM2, MC_SIZE_512KBITS}, + {"FRAM 256kbit", MC_TYPE_FRAM, MC_SIZE_256KBITS}, + {"FLASH 2Mbit", MC_TYPE_FLASH, MC_SIZE_2MBITS}, + {"FLASH 4Mbit", MC_TYPE_FLASH, MC_SIZE_4MBITS}, + {"FLASH 8Mbit", MC_TYPE_FLASH, MC_SIZE_8MBITS}, + {"FLASH 16Mbit", MC_TYPE_FLASH, MC_SIZE_16MBITS}, + {"FLASH 32Mbit", MC_TYPE_FLASH, MC_SIZE_32MBITS}, + {"FLASH 64Mbit", MC_TYPE_FLASH, MC_SIZE_64MBITS}, + {"FLASH 128Mbit", MC_TYPE_FLASH, MC_SIZE_128MBITS}, + {"FLASH 256Mbit", MC_TYPE_FLASH, MC_SIZE_256MBITS}, + {"FLASH 512Mbit", MC_TYPE_FLASH, MC_SIZE_512MBITS} +}; void mc_init(memory_chip_t *mc, int type) { - mc->com = 0; - mc->addr = 0; - mc->addr_shift = 0; - mc->data = nullptr; - mc->size = 0; - mc->write_enable = false; - mc->writeable_buffer = false; - mc->type = type; - mc->autodetectsize = 0; - - switch(mc->type) - { - case MC_TYPE_EEPROM1: - mc->addr_size = 1; - break; - case MC_TYPE_EEPROM2: - case MC_TYPE_FRAM: - mc->addr_size = 2; - break; - case MC_TYPE_FLASH: - mc->addr_size = 3; - break; - default: break; - } + mc->com = 0; + mc->addr = 0; + mc->addr_shift = 0; + mc->data.clear(); + mc->size = 0; + mc->write_enable = false; + mc->writeable_buffer = false; + mc->type = type; + mc->autodetectsize = 0; + + switch (mc->type) + { + case MC_TYPE_EEPROM1: + mc->addr_size = 1; + break; + case MC_TYPE_EEPROM2: + case MC_TYPE_FRAM: + mc->addr_size = 2; + break; + case MC_TYPE_FLASH: + mc->addr_size = 3; + } } -u8 *mc_alloc(memory_chip_t *mc, u32 size) +uint8_t *mc_alloc(memory_chip_t *mc, uint32_t size) { - u8 *buffer; - buffer = (u8 *) malloc(size); - - mc->data = buffer; - if(!buffer) { return nullptr; } + mc->data.clear(); + mc->data.resize(size, 0); mc->size = size; mc->writeable_buffer = true; - return buffer; + return nullptr; } void mc_free(memory_chip_t *mc) { - if(mc->data) + mc->data.clear(); + mc_init(mc, 0); +} + +void fw_reset_com(memory_chip_t *mc) +{ + if (mc->com == FW_CMD_PAGEWRITE) { - free(mc->data); - mc->data = 0; + if (mc->fp) + { + fseek(mc->fp, 0, SEEK_SET); + fwrite(&mc->data[0], mc->size, 1, mc->fp); + } + + if (mc->isFirmware&&CommonSettings.UseExtFirmware) + { + // copy User Settings 1 to User Settings 0 area + memcpy(&mc->data[0x3FE00], &mc->data[0x3FF00], 0x100); + + fprintf(stderr, "Firmware: save config"); + FILE *fp = fopen(mc->userfile, "wb"); + if (fp) + { + if (fwrite(&mc->data[0x3FF00], 1, 0x100, fp) == 0x100) // User Settings + { + if (fwrite(&mc->data[0x0002A], 1, 0x1D6, fp) == 0x1D6) // WiFi Settings + { + if (fwrite(&mc->data[0x3FA00], 1, 0x300, fp) == 0x300) // WiFi AP Settings + fprintf(stderr, " - done\n"); + else + fprintf(stderr, " - failed\n"); + } + } + fclose(fp); + } + else + fprintf(stderr, " - failed\n"); + } + + mc->write_enable = false; } - mc_init(mc, 0); + + mc->com = 0; } -void mc_realloc(memory_chip_t *mc, int type, u32 size) +uint8_t fw_transfer(memory_chip_t *mc, uint8_t data) { - mc_free(mc); - mc_init(mc, type); - mc_alloc(mc, size); + if (mc->com == FW_CMD_READ || mc->com == FW_CMD_PAGEWRITE) /* check if we are in a command that needs 3 bytes address */ + { + if (mc->addr_shift > 0) /* if we got a complete address */ + { + --mc->addr_shift; + mc->addr |= data << (mc->addr_shift * 8); /* argument is a byte of address */ + } + else /* if we have received 3 bytes of address, proceed command */ + { + switch (mc->com) + { + case FW_CMD_READ: + if (mc->addr < mc->size) /* check if we can read */ + { + data = mc->data[mc->addr]; /* return byte */ + ++mc->addr; /* then increment address */ + } + break; + case FW_CMD_PAGEWRITE: + if (mc->addr < mc->size) + { + mc->data[mc->addr] = data; /* write byte */ + ++mc->addr; + } + } + } + } + else if (mc->com == FW_CMD_READ_ID) + { + switch (mc->addr) + { + // here is an ID string measured from an old ds fat: 62 16 00 (0x62=sanyo) + // but we chose to use an ST from martin's ds fat string so programs might have a clue as to the firmware size: + // 20 40 12 + case 0: + data = 0x20; + mc->addr = 1; + break; + case 1: + data = 0x40; // according to gbatek this is the device ID for the flash on someone's ds fat + mc->addr = 2; + break; + case 2: + data = 0x12; + mc->addr = 0; + } + } + else if (mc->com == FW_CMD_READSTATUS) + return mc->write_enable ? 0x02 : 0x00; + else // finally, check if it's a new command + { + switch (data) + { + case 0: + break; // nothing + + case FW_CMD_READ_ID: + mc->addr = 0; + mc->com = FW_CMD_READ_ID; + break; + + case FW_CMD_READ: //read command + mc->addr = 0; + mc->addr_shift = 3; + mc->com = FW_CMD_READ; + break; + + case FW_CMD_WRITEENABLE: //enable writing + if (mc->writeable_buffer) + mc->write_enable = true; + break; + + case FW_CMD_WRITEDISABLE: //disable writing + mc->write_enable = false; + break; + + case FW_CMD_PAGEWRITE: //write command + if (mc->write_enable) + { + mc->addr = 0; + mc->addr_shift = 3; + mc->com = FW_CMD_PAGEWRITE; + } + else + data = 0; + break; + + case FW_CMD_READSTATUS: //status register command + mc->com = FW_CMD_READSTATUS; + break; + + default: + fprintf(stderr, "Unhandled FW command: %02X\n", data); + } + } + + return data; } +BackupDevice::BackupDevice() +{ + this->reset(); +} -void mc_reset_com(memory_chip_t *mc) +// due to unfortunate shortcomings in the emulator architecture, +// at reset-time, we won't have a filename to the .dsv file. +// so the only difference between load_rom (init) and reset is that +// one of them saves the filename +void BackupDevice::load_rom(const std::string &fn) { + this->filename = fn; + this->reset(); } -u8 fw_transfer(memory_chip_t *mc, u8 data) + +void BackupDevice::reset_hardware() { - return 0; + this->write_enable = false; + this->com = 0; + this->addr = this->addr_counter = 0; + this->motionInitState = MOTION_INIT_STATE_IDLE; + this->motionFlag = MOTION_FLAG_NONE; + this->state = DETECTING; + this->flushPending = false; + this->lazyFlushPending = false; } -u8 bm_transfer(memory_chip_t *mc, u8 data) + +void BackupDevice::reset() { - return 0; + memset(&this->info, 0, sizeof(this->info)); + this->reset_hardware(); + this->resize(0); + this->data_autodetect.resize(0); + this->addr_size = 0; + this->loadfile(); + + // if the user has requested a manual choice for backup type, and we havent imported a raw save file, then apply it now + if (this->state == DETECTING && CommonSettings.manualBackupType != MC_TYPE_AUTODETECT) + { + this->state = RUNNING; + int savetype = save_types[CommonSettings.manualBackupType].media_type; + int savesize = save_types[CommonSettings.manualBackupType].size; + this->ensure(savesize); // expand properly if necessary + this->resize(savesize); // truncate if necessary + this->addr_size = this->addr_size_for_old_save_type(savetype); + } +} + +// guarantees that the data buffer has room enough for the specified number of bytes +void BackupDevice::ensure(uint32_t Addr) +{ + uint32_t size = this->data.size(); + if (size < Addr) + this->resize(Addr); +} + +void BackupDevice::resize(uint32_t size) +{ + size_t old_size = this->data.size(); + this->data.resize(size); + for (uint32_t i = old_size; i < size; ++i) + this->data[i] = kUninitializedSaveDataValue; +} + +uint32_t BackupDevice::addr_size_for_old_save_size(int bupmem_size) +{ + switch (bupmem_size) + { + case MC_SIZE_4KBITS: + return 1; + case MC_SIZE_64KBITS: + case MC_SIZE_256KBITS: + case MC_SIZE_512KBITS: + return 2; + case MC_SIZE_1MBITS: + case MC_SIZE_2MBITS: + case MC_SIZE_4MBITS: + case MC_SIZE_8MBITS: + case MC_SIZE_16MBITS: + case MC_SIZE_64MBITS: + return 3; + default: + return 0xFFFFFFFF; + } +} + +uint32_t BackupDevice::addr_size_for_old_save_type(int bupmem_type) +{ + switch (bupmem_type) + { + case MC_TYPE_EEPROM1: + return 1; + case MC_TYPE_EEPROM2: + case MC_TYPE_FRAM: + return 2; + case MC_TYPE_FLASH: + return 3; + default: + return 0xFFFFFFFF; + } +} + +void BackupDevice::load_old_state(uint32_t addrSize, uint8_t *Data, uint32_t datasize) +{ + this->state = RUNNING; + this->addr_size = addrSize; + this->resize(datasize); + memcpy(&this->data[0], Data, datasize); } +// ======================================================================= no$GBA +// ======================================================================= +// ======================================================================= + +static int no_gba_unpackSAV(const uint8_t *in_buf, uint32_t fsize, uint8_t *out_buf, uint32_t &size) +{ + const char no_GBA_HEADER_ID[] = "NocashGbaBackupMediaSavDataFile"; + const char no_GBA_HEADER_SRAM_ID[] = "SRAM"; + const uint8_t *src = in_buf; + uint8_t *dst = out_buf; + uint32_t src_pos = 0; + uint32_t dst_pos = 0; + uint32_t size_unpacked = 0; + uint32_t compressMethod = 0; + + if (fsize < 0x50) + return 1; + + for (int i = 0; i < 0x1F; ++i) + if (src[i] != no_GBA_HEADER_ID[i]) + return 2; + if (src[0x1F] != 0x1A) + return 2; + for (int i = 0; i < 0x4; ++i) + if (src[i + 0x40] != no_GBA_HEADER_SRAM_ID[i]) + return 2; + + compressMethod = *(reinterpret_cast(src + 0x44)); + + if (!compressMethod) // unpacked + { + size_unpacked = *(reinterpret_cast(src + 0x48)); + src_pos = 0x4C; + for (uint32_t i = 0; i < size_unpacked; ++i) + dst[dst_pos++] = src[src_pos++]; + size = dst_pos; + return 0; + } + + if (compressMethod == 1) // packed (method 1) + { + size_unpacked = *(reinterpret_cast(src + 0x4C)); + + src_pos = 0x50; + while (true) + { + uint8_t cc = src[src_pos++]; + + if (!cc) + { + size = dst_pos; + return 0; + } + + if (cc == 0x80) + { + uint16_t tsize = *(reinterpret_cast(src + src_pos + 1)); + for (int t = 0; t < tsize; ++t) + dst[dst_pos++] = src[src_pos]; + src_pos += 3; + continue; + } + + if (cc > 0x80) // repeat + { + cc -= 0x80; + for (int t = 0; t < cc; ++t) + dst[dst_pos++] = src[src_pos]; + ++src_pos; + continue; + } + // copy + for (int t = 0; t < cc; ++t) + dst[dst_pos++] = src[src_pos++]; + } + } + return 200; +} + +static uint32_t no_gba_savTrim(uint8_t *buf, uint32_t size) +{ + uint32_t rows = size / 16; + uint32_t pos = (size - 16); + uint8_t *src = buf; + + for (unsigned i = 0; i < rows; ++i, pos -= 16) + { + if (src[pos] == 0xFF) + { + for (int t = 0; t < 16; ++t) + if (src[pos + t] != 0xFF) + return pos + 16; + } + else + return pos + 16; + } + return size; +} + +static uint32_t no_gba_fillLeft(uint32_t size) +{ + for (uint32_t i = 1; i < ARRAY_SIZE(save_types); ++i) + if (size <= static_cast(save_types[i].size)) + return size + (save_types[i].size - size); + return size; +} + +bool BackupDevice::load_no_gba(const char *fname) +{ + FILE *fsrc = fopen(fname, "rb"); + + if (fsrc) + { + fseek(fsrc, 0, SEEK_END); + uint32_t fsize = ftell(fsrc); + fseek(fsrc, 0, SEEK_SET); + //fprintf(stderr, "Open %s file (size %i bytes)\n", fname, fsize); + + auto in_buf = std::unique_ptr(new uint8_t[fsize]); + + if (fread(&in_buf[0], 1, fsize, fsrc) == fsize) + { + auto out_buf = std::unique_ptr(new uint8_t[8 * 1024 * 1024 / 8]); + + memset(&out_buf[0], 0xFF, 8 * 1024 * 1024 / 8); + uint32_t size = 0; + if (!no_gba_unpackSAV(&in_buf[0], fsize, &out_buf[0], size)) + { + //fprintf(stderr, "New size %i byte(s)\n", size); + size = no_gba_savTrim(&out_buf[0], size); + //fprintf(stderr, "--- new size after trim %i byte(s)\n", size); + size = no_gba_fillLeft(size); + //fprintf(stderr, "--- new size after fill %i byte(s)\n", size); + raw_applyUserSettings(size); + this->data.resize(size); + for (uint32_t tt = 0; tt < size; ++tt) + this->data[tt] = out_buf[tt]; + + //dump back out as a dsv, just to keep things sane + fprintf(stderr, "---- Loaded no$GBA save\n"); + + fclose(fsrc); + return true; + } + } + fclose(fsrc); + } + + return false; +} + +// ======================================================================= end +// ======================================================================= +// ======================================================================= no$GBA + +void BackupDevice::loadfile() +{ + if (this->filename.empty()) + return; // No sense crashing if no filename supplied + + auto inf = std::unique_ptr(new EMUFILE_FILE(filename.c_str(), "rb")); + if (inf->fail()) + { + // no dsv found; we need to try auto-importing a file with .sav extension + fprintf(stderr, "DeSmuME .dsv save file not found. Trying to load an old raw .sav file.\n"); + + // change extension to sav + char tmp[MAX_PATH]; + strcpy(tmp, this->filename.c_str()); + tmp[strlen(tmp) - 3] = 0; + strcat(tmp, "sav"); + + inf.reset(new EMUFILE_FILE(tmp, "rb")); + if (inf->fail()) + { + fprintf(stderr, "Missing save file %s\n", this->filename.c_str()); + return; + } + + if (!this->load_no_gba(tmp)) + this->load_raw(tmp); + } + else + { + // scan for desmume save footer + int32_t cookieLen = strlen(kDesmumeSaveCookie); + auto sigbuf = std::unique_ptr(new char[cookieLen]); + inf->fseek(-cookieLen, SEEK_END); + inf->fread(&sigbuf[0], cookieLen); + int cmp = memcmp(&sigbuf[0], kDesmumeSaveCookie,cookieLen); + if (cmp) + { + // maybe it is a misnamed raw save file. try loading it that way + fprintf(stderr, "Not a DeSmuME .dsv save file. Trying to load as raw.\n"); + if (!this->load_no_gba(this->filename.c_str())) + this->load_raw(this->filename.c_str()); + return; + } + // desmume format + inf->fseek(-cookieLen, SEEK_END); + inf->fseek(-4, SEEK_CUR); + uint32_t version = 0xFFFFFFFF; + read32le(&version, inf.get()); + if (version) + { + fprintf(stderr, "Unknown save file format\n"); + return; + } + inf->fseek(-24, SEEK_CUR); + read32le(&this->info.size, inf.get()); + read32le(&this->info.padSize, inf.get()); + read32le(&this->info.type, inf.get()); + read32le(&this->info.addr_size, inf.get()); + read32le(&this->info.mem_size, inf.get()); + + // establish the save data + this->resize(this->info.size); + inf->fseek(0, SEEK_SET); + if (this->info.size > 0) + inf->fread(&this->data[0], this->info.size); // read all the raw data we have + this->state = RUNNING; + this->addr_size = this->info.addr_size; + // none of the other fields are used right now + } +} + +void BackupDevice::raw_applyUserSettings(uint32_t &size, bool manual) +{ + // respect the user's choice of backup memory type + if (CommonSettings.manualBackupType == MC_TYPE_AUTODETECT && !manual) + { + this->addr_size = this->addr_size_for_old_save_size(size); + this->resize(size); + } + else + { + uint32_t type = CommonSettings.manualBackupType; + int savetype = save_types[type].media_type; + int savesize = save_types[type].size; + this->addr_size = this->addr_size_for_old_save_type(savetype); + if (static_cast(savesize) < size) + size = savesize; + this->resize(savesize); + } + + this->state = RUNNING; +} + +bool BackupDevice::load_raw(const char *fn, uint32_t force_size) +{ + FILE *inf = fopen(fn,"rb"); + + if (!inf) + return false; + + fseek(inf, 0, SEEK_END); + uint32_t size = ftell(inf); + uint32_t left = 0; + + if (force_size > 0) + { + if (size > force_size) + size = force_size; + else if (size < force_size) + { + left = force_size - size; + size = force_size; + } + } + + fseek(inf, 0, SEEK_SET); + + this->raw_applyUserSettings(size, force_size > 0); + + int bytesRead = fread(&this->data[0], 1, size - left, inf); + (void)bytesRead; + fclose(inf); + + return true; +} diff -Nru audacious-plugins-4.1/src/xsf/desmume/mc.h audacious-plugins-4.3.1/src/xsf/desmume/mc.h --- audacious-plugins-4.1/src/xsf/desmume/mc.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/mc.h 2023-04-29 20:17:32.000000000 +0000 @@ -1,29 +1,32 @@ -/* Copyright (C) 2006 thoduv - Copyright (C) 2006 Theo Berkau +/* + Copyright (C) 2006 thoduv + Copyright (C) 2006 Theo Berkau + Copyright (C) 2008-2013 DeSmuME team + + This file 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 file 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. - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + You should have received a copy of the GNU General Public License + along with the this software. If not, see . */ -#ifndef __FW_H__ -#define __FW_H__ +#pragma once -#include +#include +#include +#include #include "types.h" +#include "emufile.h" +//#include "windowsh_wrapper.h" +#define MAX_SAVE_TYPES 13 #define MC_TYPE_AUTODETECT 0x0 #define MC_TYPE_EEPROM1 0x1 #define MC_TYPE_EEPROM2 0x2 @@ -39,39 +42,122 @@ #define MC_SIZE_4MBITS 0x080000 #define MC_SIZE_8MBITS 0x100000 #define MC_SIZE_16MBITS 0x200000 +#define MC_SIZE_32MBITS 0x400000 #define MC_SIZE_64MBITS 0x800000 +#define MC_SIZE_128MBITS 0x1000000 +#define MC_SIZE_256MBITS 0x2000000 +#define MC_SIZE_512MBITS 0x4000000 + +struct memory_chip_t +{ + uint8_t com; // persistent command actually handled + uint32_t addr; // current address for reading/writing + uint8_t addr_shift; // shift for address (since addresses are transfered by 3 bytes units) + uint8_t addr_size; // size of addr when writing/reading + + bool write_enable; //is write enabled ? + + std::vector data; //memory data + uint32_t size; // memory size + bool writeable_buffer; // is "data" writeable ? + int type; //type of Memory + char *filename; + FILE *fp; + uint8_t autodetectbuf[32768]; + int autodetectsize; + + // needs only for firmware + bool isFirmware; + char userfile[MAX_PATH]; +}; -typedef struct +// the new backup system by zeromus +class BackupDevice { - u8 com; /* persistent command actually handled */ - u32 addr; /* current address for reading/writing */ - u8 addr_shift; /* shift for address (since addresses are transfered by 3 bytes units) */ - u8 addr_size; /* size of addr when writing/reading */ - - BOOL write_enable; /* is write enabled ? */ - - u8 *data; /* memory data */ - u32 size; /* memory size */ - BOOL writeable_buffer; /* is "data" writeable ? */ - int type; /* type of Memory */ - char *filename; - FILE *fp; - u8 autodetectbuf[32768]; - int autodetectsize; -} memory_chip_t; - -#define NDS_FW_SIZE_V1 (256 * 1024) /* size of fw memory on nds v1 */ -#define NDS_FW_SIZE_V2 (512 * 1024) /* size of fw memory on nds v2 */ - -void mc_init(memory_chip_t *mc, int type); /* reset and init values for memory struct */ -u8 *mc_alloc(memory_chip_t *mc, u32 size); /* alloc mc memory */ -void mc_realloc(memory_chip_t *mc, int type, u32 size); /* realloc mc memory */ -void mc_load_file(memory_chip_t *mc, const char* filename); /* load save file and setup fp */ -int mc_load_duc(memory_chip_t *mc, const char* filename); /* load Action Replay DS save file */ -void mc_free(memory_chip_t *mc); /* delete mc memory */ -void mc_reset_com(memory_chip_t *mc); /* reset communication with mc */ -u8 fw_transfer(memory_chip_t *mc, u8 data); /* transfer to, then receive data from firmware */ -u8 bm_transfer(memory_chip_t *mc, u8 data); /* transfer to, then receive data from backup memory */ +public: + BackupDevice(); -#endif /*__FW_H__*/ + // signals the save system that we are in our regular mode, loading up a rom. initializes for that case. + void load_rom(const std::string &filename); + void reset(); + void reset_hardware(); + std::string getFilename() { return filename; } + + std::vector data; + + // this info was saved before the last reset (used for savestate compatibility) + struct SavedInfo + { + uint32_t addr_size; + } savedInfo; + + // and these are used by old savestates + void load_old_state(uint32_t addr_size, uint8_t *data, uint32_t datasize); + static uint32_t addr_size_for_old_save_size(int bupmem_size); + static uint32_t addr_size_for_old_save_type(int bupmem_type); + + void raw_applyUserSettings(uint32_t &size, bool manual = false); + + bool load_no_gba(const char *fname); + bool load_raw(const char* filename, uint32_t force_size = 0); + + struct + { + uint32_t size, padSize, type, addr_size, mem_size; + } info; +private: + std::string filename; + + bool write_enable; // is write enabled? + uint32_t com; // persistent command actually handled + uint32_t addr_size, addr_counter; + uint32_t addr; + + std::vector data_autodetect; + enum STATE + { + DETECTING = 0, + RUNNING = 1 + } state; + + enum MOTION_INIT_STATE + { + MOTION_INIT_STATE_IDLE, + MOTION_INIT_STATE_RECEIVED_4, + MOTION_INIT_STATE_RECEIVED_4_B, + MOTION_INIT_STATE_FE, + MOTION_INIT_STATE_FD, + MOTION_INIT_STATE_FB + }; + enum MOTION_FLAG + { + MOTION_FLAG_NONE, + MOTION_FLAG_ENABLED, + MOTION_FLAG_SENSORMODE + }; + uint8_t motionInitState, motionFlag; + + void loadfile(); + void ensure(uint32_t addr); + + bool flushPending, lazyFlushPending; + + void resize(uint32_t size); +}; + +#define NDS_FW_SIZE_V1 (256 * 1024) /* size of fw memory on nds v1 */ +#define NDS_FW_SIZE_V2 (512 * 1024) /* size of fw memory on nds v2 */ + +void mc_init(memory_chip_t *mc, int type); /* reset and init values for memory struct */ +uint8_t *mc_alloc(memory_chip_t *mc, uint32_t size); /* alloc mc memory */ +void mc_free(memory_chip_t *mc); /* delete mc memory */ +void fw_reset_com(memory_chip_t *mc); /* reset communication with mc */ +uint8_t fw_transfer(memory_chip_t *mc, uint8_t data); + +struct SAVE_TYPE +{ + const char *descr; + int media_type; + int size; +}; diff -Nru audacious-plugins-4.1/src/xsf/desmume/mem.h audacious-plugins-4.3.1/src/xsf/desmume/mem.h --- audacious-plugins-4.1/src/xsf/desmume/mem.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/mem.h 2023-04-29 20:17:32.000000000 +0000 @@ -1,141 +1,130 @@ -/* Copyright 2005-2006 Guillaume Duhamel - Copyright 2005 Theo Berkau +/* + Copyright (C) 2005 Theo Berkau + Copyright (C) 2005-2006 Guillaume Duhamel + Copyright (C) 2008-2010 DeSmuME team + + This file 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 file 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. - This file is part of Yabause. - - Yabause 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. - - Yabause 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 Yabause; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + You should have received a copy of the GNU General Public License + along with the this software. If not, see . */ -#ifndef MEM_H -#define MEM_H +#pragma once -#include +#include +#include #include "types.h" -/* Type 1 Memory, faster for byte (8 bits) accesses */ - -static INLINE u8 T1ReadByte(u8 * mem, u32 addr) +// this was originally declared in MMU.h but we suffered some organizational problems and had to remove it +enum MMU_ACCESS_TYPE { - return mem[addr]; -} + MMU_AT_CODE, // used for cpu prefetches + MMU_AT_DATA, // used for cpu read/write + MMU_AT_GPU, // used for gpu read/write + MMU_AT_DMA, // used for dma read/write (blocks access to TCM) + MMU_AT_DEBUG // used for emulator debugging functions (bypasses some debug handling) +}; -static INLINE u16 T1ReadWord(u8 * mem, u32 addr) +inline uint8_t T1ReadByte(const uint8_t *const mem, uint32_t addr) { -#ifdef WORDS_BIGENDIAN - return (mem[addr + 1] << 8) | mem[addr]; -#else - return *((u16 *) (mem + addr)); -#endif + return mem[addr]; } -static INLINE u32 T1ReadLong(u8 * mem, u32 addr) +inline uint16_t T1ReadWord_guaranteedAligned(const uint8_t *const mem, uint32_t addr) { + assert(!(addr & 1)); #ifdef WORDS_BIGENDIAN - return (mem[addr + 3] << 24 | mem[addr + 2] << 16 | - mem[addr + 1] << 8 | mem[addr]); + return (mem[addr + 1] << 8) | mem[addr]; #else - return *((u32 *)mem + (addr>>2)); + return *reinterpret_cast(mem + addr); #endif } -static INLINE u64 T1ReadQuad(u8 * mem, u32 addr) +inline uint16_t T1ReadWord(const uint8_t *const mem, uint32_t addr) { #ifdef WORDS_BIGENDIAN - return (mem[addr + 7] << 56 | mem[addr + 6] << 48 | - mem[addr + 5] << 40 | mem[addr + 4] << 32 | - mem[addr + 3] << 24 | mem[addr + 2] << 16 | - mem[addr + 1] << 8 | mem[addr]); + return (mem[addr + 1] << 8) | mem[addr]; #else - return *((u64 *) (mem + addr)); + return *reinterpret_cast(mem + addr); #endif } -static INLINE void T1WriteByte(u8 * mem, u32 addr, u8 val) -{ - mem[addr] = val; -} - -static INLINE void T1WriteWord(u8 * mem, u32 addr, u16 val) +inline uint32_t T1ReadLong_guaranteedAligned(const uint8_t *const mem, uint32_t addr) { + assert(!(addr & 3)); #ifdef WORDS_BIGENDIAN - mem[addr + 1] = val >> 8; - mem[addr] = val & 0xFF; + return (mem[addr + 3] << 24) | (mem[addr + 2] << 16) | (mem[addr + 1] << 8) | mem[addr]; #else - *((u16 *) (mem + addr)) = val; + return *reinterpret_cast(mem + addr); #endif } -static INLINE void T1WriteLong(u8 * mem, u32 addr, u32 val) +inline uint32_t T1ReadLong(const uint8_t *const mem, uint32_t addr) { + addr &= ~3; #ifdef WORDS_BIGENDIAN - mem[addr + 3] = val >> 24; - mem[addr + 2] = (val >> 16) & 0xFF; - mem[addr + 1] = (val >> 8) & 0xFF; - mem[addr] = val & 0xFF; + return (mem[addr + 3] << 24) | (mem[addr + 2] << 16) | (mem[addr + 1] << 8) | mem[addr]; #else - *((u32 *) (mem + addr)) = val; + return *reinterpret_cast(mem + addr); #endif } -/* Type 2 Memory, faster for word (16 bits) accesses */ - -static INLINE u8 T2ReadByte(u8 * mem, u32 addr) +inline uint64_t T1ReadQuad(const uint8_t *const mem, uint32_t addr) { #ifdef WORDS_BIGENDIAN - return mem[addr ^ 1]; + return (mem[addr + 7] << 56) | (mem[addr + 6] << 48) | (mem[addr + 5] << 40) | (mem[addr + 4] << 32) | (mem[addr + 3] << 24) | (mem[addr + 2] << 16) | (mem[addr + 1] << 8) | mem[addr]; #else - return mem[addr]; + return *reinterpret_cast(mem + addr); #endif } -static INLINE u16 T2ReadWord(u8 * mem, u32 addr) +inline void T1WriteByte(uint8_t *const mem, uint32_t addr, uint8_t val) { - return *((u16 *) (mem + addr)); + mem[addr] = val; } -static INLINE u32 T2ReadLong(u8 * mem, u32 addr) +inline void T1WriteWord(uint8_t *const mem, uint32_t addr, uint16_t val) { #ifdef WORDS_BIGENDIAN - return *((u16 *) (mem + addr + 2)) << 16 | *((u16 *) (mem + addr)); + mem[addr + 1] = val >> 8; + mem[addr] = val & 0xFF; #else - return *((u32 *) (mem + addr)); + *reinterpret_cast(mem + addr) = val; #endif } -static INLINE void T2WriteByte(u8 * mem, u32 addr, u8 val) +inline void T1WriteLong(uint8_t *const mem, uint32_t addr, uint32_t val) { #ifdef WORDS_BIGENDIAN - mem[addr ^ 1] = val; + mem[addr + 3] = val >> 24; + mem[addr + 2] = (val >> 16) & 0xFF; + mem[addr + 1] = (val >> 8) & 0xFF; + mem[addr] = val & 0xFF; #else - mem[addr] = val; + *reinterpret_cast(mem + addr) = val; #endif } -static INLINE void T2WriteWord(u8 * mem, u32 addr, u16 val) -{ - *((u16 *) (mem + addr)) = val; -} - -static INLINE void T2WriteLong(u8 * mem, u32 addr, u32 val) +inline void T1WriteQuad(uint8_t *const mem, uint32_t addr, uint64_t val) { #ifdef WORDS_BIGENDIAN - *((u16 *) (mem + addr + 2)) = val >> 16; - *((u16 *) (mem + addr)) = val & 0xFFFF; + mem[addr + 7] = val >> 56; + mem[addr + 6] = (val >> 48) & 0xFF; + mem[addr + 5] = (val >> 40) & 0xFF; + mem[addr + 4] = (val >> 32) & 0xFF; + mem[addr + 3] = (val >> 24) & 0xFF; + mem[addr + 2] = (val >> 16) & 0xFF; + mem[addr + 1] = (val >> 8) & 0xFF; + mem[addr] = val & 0xFF; #else - *((u32 *) (mem + addr)) = val; + *reinterpret_cast(mem + addr) = val; #endif } - -#endif diff -Nru audacious-plugins-4.1/src/xsf/desmume/metaspu.cc audacious-plugins-4.3.1/src/xsf/desmume/metaspu.cc --- audacious-plugins-4.1/src/xsf/desmume/metaspu.cc 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/metaspu.cc 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,57 @@ +/* Copyright 2009-2015 DeSmuME team + + This file is part of DeSmuME + + DeSmuME 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. + + DeSmuME 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 DeSmuME; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "metaspu.h" + +#include +#include +#include +#include +#include + +class NullSynchronizer : public ISynchronizingAudioBuffer +{ +public: + std::queue buffer; + NullSynchronizer() {} + + virtual void enqueue_samples(s16* buf, int samples_provided) { + for (int i = 0; i < samples_provided * 2; i += 2) { + uint16_t left = buf[i]; + uint16_t right = buf[i + 1]; + buffer.push(left << 16 | right); + } + } + + virtual int output_samples(s16* buf, int samples_requested) { + int samples = ((samples_requested < buffer.size()) ? samples_requested : buffer.size()) & ~1; + for (int offset = 0, i = 0; i < samples; i++) { + uint32_t sample = buffer.front(); + buffer.pop(); + buf[offset++] = (sample >> 16) & 0xFFFF; + buf[offset++] = sample & 0xFFFF; + } + return samples; + } +}; + +ISynchronizingAudioBuffer* metaspu_construct(ESynchMethod method) +{ + return new NullSynchronizer(); +} diff -Nru audacious-plugins-4.1/src/xsf/desmume/metaspu.h audacious-plugins-4.3.1/src/xsf/desmume/metaspu.h --- audacious-plugins-4.1/src/xsf/desmume/metaspu.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/metaspu.h 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,54 @@ +/* Copyright 2009-2015 DeSmuME team + + This file 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 file 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 the this software. If not, see . +*/ + +//------------------------- +//this file contains the METASPU system +//which is designed to handle the task of audio synchronization +//and is designed to be as portable between multiple emulators +//------------------------- + + +#ifndef _METASPU_H_ +#define _METASPU_H_ + +#include + +#include "types.h" + +class ISynchronizingAudioBuffer +{ +public: + virtual ~ISynchronizingAudioBuffer() {} + + virtual void enqueue_samples(s16* buf, int samples_provided) = 0; + + //returns the number of samples actually supplied, which may not match the number requested + virtual int output_samples(s16* buf, int samples_requested) = 0; +}; + +enum ESynchMode +{ + ESynchMode_Synchronous +}; + +enum ESynchMethod +{ + ESynchMethod_0, //Null +}; + +ISynchronizingAudioBuffer* metaspu_construct(ESynchMethod method); + +#endif diff -Nru audacious-plugins-4.1/src/xsf/desmume/readwrite.cc audacious-plugins-4.3.1/src/xsf/desmume/readwrite.cc --- audacious-plugins-4.1/src/xsf/desmume/readwrite.cc 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/readwrite.cc 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,84 @@ +/* + Copyright (C) 2006-2009 DeSmuME team + + This file 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 file 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 the this software. If not, see . +*/ + +#include "readwrite.h" +#include "types.h" + +int read8le(uint8_t *Bufo, EMUFILE *is) +{ + if (is->_fread(Bufo, 1) != 1) + return 0; + return 1; +} + +int read32le(uint32_t *Bufo, EMUFILE *fp) +{ + uint32_t buf; + if (fp->_fread(&buf, 4) < 4) + return 0; +#ifdef LOCAL_LE + *Bufo = buf; +#else + *Bufo = ((buf & 0xFF) << 24) | ((buf & 0xFF00) << 8) | ((buf & 0xFF0000) >> 8) | ((buf & 0xFF000000) >> 24); +#endif + return 1; +} + +int read16le(uint16_t *Bufo, EMUFILE *is) +{ + uint16_t buf; + if (is->_fread(&buf, 2) != 2) + return 0; +#ifdef LOCAL_LE + *Bufo = buf; +#else + *Bufo = LE_TO_LOCAL_16(buf); +#endif + return 1; +} + +int read64le(uint64_t *Bufo, EMUFILE *is) +{ + uint64_t buf; + if (is->_fread(&buf, 8) != 8) + return 0; +#ifdef LOCAL_LE + *Bufo = buf; +#else + *Bufo = LE_TO_LOCAL_64(buf); +#endif + return 1; +} + +int readbool(bool *b, EMUFILE *is) +{ + uint32_t temp = 0; + int ret = read32le(&temp, is); + *b = !!temp; + return ret; +} + +int readbuffer(std::vector &vec, EMUFILE *is) +{ + uint32_t size; + if (read32le(&size, is) != 1) + return 0; + vec.resize(size); + if (size > 0) + is->fread(&vec[0], size); + return 1; +} diff -Nru audacious-plugins-4.1/src/xsf/desmume/readwrite.h audacious-plugins-4.3.1/src/xsf/desmume/readwrite.h --- audacious-plugins-4.1/src/xsf/desmume/readwrite.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/readwrite.h 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,43 @@ +/* + Copyright (C) 2008-2009 DeSmuME team + + This file 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 file 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 the this software. If not, see . +*/ + +#pragma once + +#include +#include +#include +#include "types.h" +#include "emufile.h" + +int read8le(uint8_t *Bufo, EMUFILE *is); +int read16le(uint16_t *Bufo, EMUFILE *is); +inline int read16le(int16_t *Bufo, EMUFILE *is) { return read16le(reinterpret_cast(Bufo), is); } +int read32le(uint32_t *Bufo, EMUFILE *is); +inline int read32le(int32_t *Bufo, EMUFILE *is) { return read32le(reinterpret_cast(Bufo), is); } +int read64le(uint64_t *Bufo, EMUFILE *is); +inline int read_double_le(double *Bufo, EMUFILE *is) +{ + uint64_t temp; + int ret = read64le(&temp,is); + *Bufo = u64_to_double(temp); + return ret; +} +int read16le(uint16_t *Bufo, std::istream *is); + +int readbool(bool *b, EMUFILE *is); + +int readbuffer(std::vector &vec, EMUFILE *is); diff -Nru audacious-plugins-4.1/src/xsf/desmume/registers.h audacious-plugins-4.3.1/src/xsf/desmume/registers.h --- audacious-plugins-4.1/src/xsf/desmume/registers.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/registers.h 2023-04-29 20:17:32.000000000 +0000 @@ -1,26 +1,22 @@ -/* Copyright (C) 2006 Theo Berkau +/* + Copyright (C) 2006 Theo Berkau + Copyright (C) 2006-2011 DeSmuME team + + This file 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 file 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. - Ideas borrowed from Stephane Dallongeville's SCSP core - - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + You should have received a copy of the GNU General Public License + along with the this software. If not, see . */ -#ifndef REGISTERS_H -#define REGISTERS_H +#pragma once #define REG_REGION_MASK 0x0FFFEF80 #define REG_BASE_DISPx 0x04000000 @@ -78,22 +74,40 @@ #define REG_DISPA_MASTERBRIGHT 0x0400006C // DMA +#define _REG_DMA_CONTROL_MIN 0x040000B0 #define REG_DMA0SAD 0x040000B0 +#define REG_DMA0SADL 0x040000B0 +#define REG_DMA0SADH 0x040000B2 #define REG_DMA0DAD 0x040000B4 +#define REG_DMA0DADL 0x040000B4 +#define REG_DMA0DADH 0x040000B6 #define REG_DMA0CNTL 0x040000B8 #define REG_DMA0CNTH 0x040000BA #define REG_DMA1SAD 0x040000BC +#define REG_DMA1SADL 0x040000BC +#define REG_DMA1SADH 0x040000BE #define REG_DMA1DAD 0x040000C0 +#define REG_DMA1DADL 0x040000C0 +#define REG_DMA1DADH 0x040000C2 #define REG_DMA1CNTL 0x040000C4 #define REG_DMA1CNTH 0x040000C6 #define REG_DMA2SAD 0x040000C8 +#define REG_DMA2SADL 0x040000C8 +#define REG_DMA2SADH 0x040000CA #define REG_DMA2DAD 0x040000CC +#define REG_DMA2DADL 0x040000CC +#define REG_DMA2DADH 0x040000CE #define REG_DMA2CNTL 0x040000D0 #define REG_DMA2CNTH 0x040000D2 #define REG_DMA3SAD 0x040000D4 +#define REG_DMA3SADL 0x040000D4 +#define REG_DMA3SADH 0x040000D6 #define REG_DMA3DAD 0x040000D8 +#define REG_DMA3DADL 0x040000D8 +#define REG_DMA3DADH 0x040000DA #define REG_DMA3CNTL 0x040000DC #define REG_DMA3CNTH 0x040000DE +#define _REG_DMA_CONTROL_MAX 0x040000DF #define REG_DMA0FILL 0x040000E0 #define REG_DMA1FILL 0x040000E4 #define REG_DMA2FILL 0x040000E8 @@ -164,7 +178,7 @@ #define REG_SQRTRESULT 0x040002B4 #define REG_SQRTPARAM 0x040002B8 -// Other +// Other #define REG_POSTFLG 0x04000300 #define REG_HALTCNT 0x04000301 #define REG_POWCNT1 0x04000304 @@ -269,6 +283,10 @@ #define REG_DISPA_DISPCAPCNT 0x04000064 #define REG_DISPA_DISPMMEMFIFO 0x04000068 +#define REG_DISPA_DISP3DCNT_BIT_RDLINES_UNDERFLOW 0x1000 +#define REG_DISPA_DISP3DCNT_BIT_RAM_OVERFLOW 0x2000 +#define REG_DISPA_DISP3DCNT_BITS_ACK (REG_DISPA_DISP3DCNT_BIT_RDLINES_UNDERFLOW|REG_DISPA_DISP3DCNT_BIT_RAM_OVERFLOW) + #define eng_3D_RDLINES_COUNT 0x04000320 #define eng_3D_EDGE_COLOR 0x04000330 @@ -282,6 +300,9 @@ #define eng_3D_TOON_TABLE 0x04000380 #define eng_3D_GXFIFO 0x04000400 +//DSI +#define REG_DSIMODE 0x04004000 + // 3d commands #define cmd_3D_MTX_MODE 0x04000440 #define cmd_3D_MTX_PUSH 0x04000444 @@ -328,6 +349,80 @@ #define eng_3D_VEC_RESULT 0x04000630 #define eng_3D_CLIPMTX_RESULT 0x04000640 #define eng_3D_VECMTX_RESULT 0x04000680 - -#endif +#define IPCFIFOCNT_SENDEMPTY 0x0001 +#define IPCFIFOCNT_SENDFULL 0x0002 +#define IPCFIFOCNT_SENDIRQEN 0x0004 +#define IPCFIFOCNT_SENDCLEAR 0x0008 +#define IPCFIFOCNT_RECVEMPTY 0x0100 +#define IPCFIFOCNT_RECVFULL 0x0200 +#define IPCFIFOCNT_RECVIRQEN 0x0400 +#define IPCFIFOCNT_FIFOERROR 0x4000 +#define IPCFIFOCNT_FIFOENABLE 0x8000 +#define IPCFIFOCNT_WRITEABLE (IPCFIFOCNT_SENDIRQEN | IPCFIFOCNT_RECVIRQEN | IPCFIFOCNT_FIFOENABLE) + +#define IPCSYNC_IRQ_SEND 0x2000 +#define IPCSYNC_IRQ_RECV 0x4000 + +#define IRQ_BIT_LCD_VBLANK 0 +#define IRQ_BIT_LCD_HBLANK 1 +#define IRQ_BIT_LCD_VMATCH 2 +#define IRQ_BIT_TIMER_0 3 +#define IRQ_BIT_TIMER_1 4 +#define IRQ_BIT_TIMER_2 5 +#define IRQ_BIT_TIMER_3 6 +#define IRQ_BIT_ARM7_SIO 7 +#define IRQ_BIT_DMA_0 8 +#define IRQ_BIT_DMA_2 9 +#define IRQ_BIT_DMA_3 10 +#define IRQ_BIT_DMA_4 11 +#define IRQ_BIT_KEYPAD 12 +#define IRQ_BIT_GAMEPAK 13 +#define IRQ_BIT_IPCSYNC 16 +#define IRQ_BIT_IPCFIFO_SENDEMPTY 17 +#define IRQ_BIT_IPCFIFO_RECVNONEMPTY 18 +#define IRQ_BIT_GC_TRANSFER_COMPLETE 19 +#define IRQ_BIT_GC_IREQ_MC 20 +#define IRQ_BIT_ARM9_GXFIFO 21 +#define IRQ_BIT_ARM7_FOLD 22 +#define IRQ_BIT_ARM7_SPI 23 +#define IRQ_BIT_ARM7_WIFI 24 + +#define IRQ_MASK_LCD_VBLANK (1<<0) +#define IRQ_MASK_LCD_HBLANK (1<<1) +#define IRQ_MASK_LCD_VMATCH (1<<2) +#define IRQ_MASK_TIMER_0 (1<<3) +#define IRQ_MASK_TIMER_1 (1<<4) +#define IRQ_MASK_TIMER_2 (1<<5) +#define IRQ_MASK_TIMER_3 (1<<6) +#define IRQ_MASK_ARM7_SIO (1<<7) +#define IRQ_MASK_DMA_0 (1<<8) +#define IRQ_MASK_DMA_2 (1<<9) +#define IRQ_MASK_DMA_3 (1<<10) +#define IRQ_MASK_DMA_4 (1<<11) +#define IRQ_MASK_KEYPAD (1<<12) +#define IRQ_MASK_GAMEPAK (1<<13) +#define IRQ_MASK_IPCSYNC (1<<16) +#define IRQ_MASK_IPCFIFO_SENDEMPTY (1<<17) +#define IRQ_MASK_IPCFIFO_RECVNONEMPTY (1<<18) +#define IRQ_MASK_GC_TRANSFER_COMPLETE (1<<19) +#define IRQ_MASK_GC_IREQ_MC (1<<20) +#define IRQ_MASK_ARM9_GXFIFO (1<<21) +#define IRQ_MASK_ARM7_FOLD (1<<22) +#define IRQ_MASK_ARM7_SPI (1<<23) +#define IRQ_MASK_ARM7_WIFI (1<<24) + +#define TSC_MEASURE_TEMP1 0 +#define TSC_MEASURE_Y 1 +#define TSC_MEASURE_BATTERY 2 +#define TSC_MEASURE_Z1 3 +#define TSC_MEASURE_Z2 4 +#define TSC_MEASURE_X 5 +#define TSC_MEASURE_AUX 6 +#define TSC_MEASURE_TEMP2 7 + +#define EXMEMCNT_MASK_SLOT2_ARM7 (1<<7) +#define EXMEMCNT_MASK_SLOT2_SRAM_TIME (3) +#define EXMEMCNT_MASK_SLOT2_ROM_1ST_TIME (3<<2) +#define EXMEMCNT_MASK_SLOT2_ROM_2ND_TIME (1<<4) +#define EXMEMCNT_MASK_SLOT2_CLOCKRATE (3<<5) diff -Nru audacious-plugins-4.1/src/xsf/desmume/slot1.cc audacious-plugins-4.3.1/src/xsf/desmume/slot1.cc --- audacious-plugins-4.1/src/xsf/desmume/slot1.cc 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/slot1.cc 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,22 @@ +/* + Copyright (C) 2010-2011 DeSmuME team + + This file 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 file 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 the this software. If not, see . +*/ + +#include "slot1.h" + +extern SLOT1INTERFACE slot1Retail; + +SLOT1INTERFACE slot1_device = slot1Retail; // default for frontends that dont even configure this diff -Nru audacious-plugins-4.1/src/xsf/desmume/slot1.h audacious-plugins-4.3.1/src/xsf/desmume/slot1.h --- audacious-plugins-4.1/src/xsf/desmume/slot1.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/slot1.h 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,59 @@ +/* + Copyright (C) 2010-2011 DeSmuME team + + This file 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 file 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 the this software. If not, see . +*/ + +#pragma once + +#include "types.h" + +struct SLOT1INTERFACE +{ + // The name of the plugin, this name will appear in the plugins list + const char *name; + + // called once when the plugin starts up + bool (*init)(); + + // called when the emulator resets + void (*reset)(); + + // called when the plugin shuts down + void (*close)(); + + // called when the user configurating plugin + void (*config)(); + + // called when the emulator write to addon + void (*write08)(uint8_t PROCNUM, uint32_t adr, uint8_t val); + void (*write16)(uint8_t PROCNUM, uint32_t adr, uint16_t val); + void (*write32)(uint8_t PROCNUM, uint32_t adr, uint32_t val); + + // called when the emulator read from addon + uint8_t (*read08)(uint8_t PROCNUM, uint32_t adr); + uint16_t (*read16)(uint8_t PROCNUM, uint32_t adr); + uint32_t (*read32)(uint8_t PROCNUM, uint32_t adr); + + // called when the user get info about addon pak (description) + void (*info)(char *info); +}; + +extern SLOT1INTERFACE slot1_device; // current slot1 device + +enum NDS_SLOT1_TYPE +{ + NDS_SLOT1_RETAIL, + NDS_SLOT1_COUNT // use for counter addons - MUST TO BE LAST!!! +}; diff -Nru audacious-plugins-4.1/src/xsf/desmume/slot1_retail.cc audacious-plugins-4.3.1/src/xsf/desmume/slot1_retail.cc --- audacious-plugins-4.1/src/xsf/desmume/slot1_retail.cc 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/slot1_retail.cc 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,167 @@ +/* Copyright (C) 2010-2011 DeSmuME team + + This file is part of DeSmuME + + DeSmuME 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. + + DeSmuME 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 DeSmuME; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "slot1.h" +#include "registers.h" +#include "MMU.h" +#include "NDSSystem.h" + +static void info(char *info) { strcpy(info, "Slot1 Retail card emulation"); } +static void config() {} + +static bool init() { return true; } + +static void reset() {} + +static void close() {} + +static void write08(uint8_t, uint32_t, uint8_t) {} +static void write16(uint8_t, uint32_t, uint16_t) {} + +static void write32_GCROMCTRL(uint8_t PROCNUM, uint32_t) +{ + nds_dscard &card = MMU.dscard[PROCNUM]; + + switch (card.command[0]) + { + case 0x00: // Data read + case 0xB7: + card.address = (card.command[1] << 24) | (card.command[2] << 16) | (card.command[3] << 8) | card.command[4]; + card.transfer_count = 0x80; + break; + + case 0xB8: // Chip ID + card.address = 0; + card.transfer_count = 1; + break; + + default: + card.address = 0; + card.transfer_count = 0; + } +} + +static void write32(uint8_t PROCNUM, uint32_t adr, uint32_t val) +{ + switch (adr) + { + case REG_GCROMCTRL: + write32_GCROMCTRL(PROCNUM, val); + } +} + +static uint8_t read08(uint8_t, uint32_t) +{ + return 0xFF; +} + +static uint16_t read16(uint8_t, uint32_t) +{ + return 0xFFFF; +} + +static uint32_t read32_GCDATAIN(uint8_t PROCNUM) +{ + nds_dscard &card = MMU.dscard[PROCNUM]; + + switch (card.command[0]) + { + // Get ROM chip ID + case 0x90: + case 0xB8: + { + // Note: the BIOS stores the chip ID in main memory + // Most games continuously compare the chip ID with + // the value in memory, probably to know if the card + // was removed. + // As DeSmuME normally boots directly from the game, the chip + // ID in main mem is zero and this value needs to be + // zero too. + + // note that even if desmume was booting from firmware, and reading this chip ID to store in main memory, + // this still works, since it will have read 00 originally and then read 00 to validate. + + // staff of kings verifies this (it also uses the arm7 IRQ 20) + if (nds.cardEjected) // TODO - handle this with ejected card slot1 device (and verify using this case) + return 0xFFFFFFFF; + else + return 0; + } + + // Data read + case 0x00: + case 0xB7: + { + // it seems that etrian odyssey 3 doesnt work unless we mask this to cart size. + // but, a thought: does the internal rom address counter register wrap around? we may be making a mistake by keeping the extra precision + // but there is no test case yet + uint32_t address = card.address & gameInfo.mask; + + // Make sure any reads below 0x8000 redirect to 0x8000+(adr&0x1FF) as on real cart + if (card.command[0] == 0xB7 && address < 0x8000) + { + // TODO - refactor this to include the PROCNUM, for debugging purposes if nothing else + // (can refactor gbaslot also) + + //INFO("Read below 0x8000 (0x%04X) from: ARM%s %08X\n", card.address, (PROCNUM ? "7":"9"), (PROCNUM ? NDS_ARM7:NDS_ARM9).instruct_adr); + + address = 0x8000 + (address & 0x1FF); + } + + // as a sanity measure for funny-sized roms (homebrew and perhaps truncated retail roms) + // we need to protect ourselves by returning 0xFF for things still out of range + if (address >= gameInfo.romsize) + { + //DEBUG_Notify.ReadBeyondEndOfCart(address, gameInfo. romsize); + return 0xFFFFFFFF; + } + + return T1ReadLong(MMU.CART_ROM, address); + } + default: + return 0; + } //switch(card.command[0]) +} //read32_GCDATAIN + +static uint32_t read32(uint8_t PROCNUM, uint32_t adr) +{ + switch (adr) + { + case REG_GCDATAIN: + return read32_GCDATAIN(PROCNUM); + default: + return 0; + } +} + +SLOT1INTERFACE slot1Retail = +{ + "Retail", + init, + reset, + close, + config, + write08, + write16, + write32, + read08, + read16, + read32, + info +}; diff -Nru audacious-plugins-4.1/src/xsf/desmume/thumb_instructions.cc audacious-plugins-4.3.1/src/xsf/desmume/thumb_instructions.cc --- audacious-plugins-4.1/src/xsf/desmume/thumb_instructions.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/thumb_instructions.cc 2023-04-29 20:17:32.000000000 +0000 @@ -1,944 +1,1159 @@ /* Copyright (C) 2006 yopyop - yopyop156@ifrance.com - yopyop156.ifrance.com + Copyright (C) 2008 shash + Copyright (C) 2008-2013 DeSmuME team - Code added on 18/08/2006 by shash - - Missing missaligned addresses correction - (reference in http://nocash.emubase.de/gbatek.htm#cpumemoryalignments) - - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + This file 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 file 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 the this software. If not, see . */ +#include + #include "bios.h" -#include "debug.h" #include "MMU.h" +#include "NDSSystem.h" +#include "MMU_timing.h" -#define REG_NUM(i, n) (((i)>>n)&0x7) - -extern BOOL execute; +#define cpu (&ARMPROC) +#define TEMPLATE template -// Use this macros for reading/writing, so the GDB stub isn't broken -#ifdef GDB_STUB - #define READ32(a,b) cpu->mem_if->read32(a,b) - #define WRITE32(a,b,c) cpu->mem_if->write32(a,b,c) - #define READ16(a,b) cpu->mem_if->read16(a,b) - #define WRITE16(a,b,c) cpu->mem_if->write16(a,b,c) - #define READ8(a,b) cpu->mem_if->read8(a,b) - #define WRITE8(a,b,c) cpu->mem_if->write8(a,b,c) -#else - #define READ32(a,b) MMU_read32(cpu->proc_ID, b) - #define WRITE32(a,b,c) MMU_write32(cpu->proc_ID,b,c) - #define READ16(a,b) MMU_read16(cpu->proc_ID, b) - #define WRITE16(a,b,c) MMU_write16(cpu->proc_ID,b,c) - #define READ8(a,b) MMU_read8(cpu->proc_ID, b) - #define WRITE8(a,b,c) MMU_write8(cpu->proc_ID,b,c) -#endif +static inline uint32_t REG_NUM(uint32_t i, uint32_t n) { return (i >> n) & 0x7; } -static u32 FASTCALL OP_UND_THUMB(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// Undefined instruction +//----------------------------------------------------------------------------- +TEMPLATE static uint32_t FASTCALL OP_UND_THUMB(uint32_t) { - execute = false; - return 1; + //INFO("THUMB%c: Undefined instruction: 0x%08X (%s) PC=0x%08X\n", cpu->proc_ID?'7':'9', cpu->instruction, decodeIntruction(true, cpu->instruction), cpu->instruct_adr); + TRAPUNDEF(cpu); + return 1; } -static u32 FASTCALL OP_LSL_0(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// LSL +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_LSL_0(uint32_t i) { - u32 i = cpu->instruction; - cpu->R[REG_NUM(i, 0)] = cpu->R[REG_NUM(i, 3)]; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; + cpu->R[REG_NUM(i, 0)] = cpu->R[REG_NUM(i, 3)]; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; - return 2; + return 1; } -static u32 FASTCALL OP_LSL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LSL(uint32_t i) { - u32 i = cpu->instruction; - u32 v = (i>>6) & 0x1F; - cpu->CPSR.bits.C = BIT_N(cpu->R[REG_NUM(i, 3)], 32-v); - cpu->R[REG_NUM(i, 0)] = (cpu->R[REG_NUM(i, 3)] << v); - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; + uint32_t v = (i >> 6) & 0x1F; + cpu->CPSR.bits.C = BIT_N(cpu->R[REG_NUM(i, 3)], 32 - v); + cpu->R[REG_NUM(i, 0)] = cpu->R[REG_NUM(i, 3)] << v; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; - return 2; + return 1; } -static u32 FASTCALL OP_LSR_0(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LSL_REG(uint32_t i) { - u32 i = cpu->instruction; - // cpu->CPSR.bits.C = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.C = BIT31(cpu->R[REG_NUM(i, 3)]); - cpu->R[REG_NUM(i, 0)] = 0; - cpu->CPSR.bits.N = 0; - cpu->CPSR.bits.Z = 1; + uint32_t v = cpu->R[REG_NUM(i, 3)] & 0xFF; - return 2; -} + if (!v) + { + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; + return 2; + } + if (v < 32) + { + cpu->CPSR.bits.C = BIT_N(cpu->R[REG_NUM(i, 0)], 32 - v); + cpu->R[REG_NUM(i, 0)] <<= v; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; + return 2; + } + if (v == 32) + cpu->CPSR.bits.C = BIT0(cpu->R[REG_NUM(i, 0)]); + else + cpu->CPSR.bits.C = 0; -static u32 FASTCALL OP_LSR(armcpu_t *cpu) -{ - u32 i = cpu->instruction; - u32 v = (i>>6) & 0x1F; - cpu->CPSR.bits.C = BIT_N(cpu->R[REG_NUM(i, 0)], v-1); - cpu->R[REG_NUM(i, 0)] = (cpu->R[REG_NUM(i, 3)] >> v); - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; + cpu->R[REG_NUM(i, 0)] = 0; + cpu->CPSR.bits.N = 0; + cpu->CPSR.bits.Z = 1; - return 2; + return 2; } -static u32 FASTCALL OP_ASR_0(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// LSR +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_LSR_0(uint32_t i) { - u32 i = cpu->instruction; - cpu->CPSR.bits.C = BIT31(cpu->R[REG_NUM(i, 3)]); - cpu->R[REG_NUM(i, 0)] = BIT31(cpu->R[REG_NUM(i, 3)])*0xFFFFFFFF; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; + cpu->CPSR.bits.C = BIT31(cpu->R[REG_NUM(i, 3)]); + cpu->R[REG_NUM(i, 0)] = 0; + cpu->CPSR.bits.N = 0; + cpu->CPSR.bits.Z = 1; - return 2; + return 1; } -static u32 FASTCALL OP_ASR(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LSR(uint32_t i) { - u32 i = cpu->instruction; - u32 v = (i>>6) & 0x1F; - cpu->CPSR.bits.C = BIT_N(cpu->R[REG_NUM(i, 3)], v-1); - cpu->R[REG_NUM(i, 0)] = (((s32)cpu->R[REG_NUM(i, 3)]) >> v); - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; + uint32_t v = (i >> 6) & 0x1F; + cpu->CPSR.bits.C = BIT_N(cpu->R[REG_NUM(i, 3)], v - 1); + cpu->R[REG_NUM(i, 0)] = cpu->R[REG_NUM(i, 3)] >> v; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; - return 2; + return 1; } -static u32 FASTCALL OP_ADD_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LSR_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 a = cpu->R[REG_NUM(i, 3)]; - u32 b = cpu->R[REG_NUM(i, 6)]; - cpu->R[REG_NUM(i, 0)] = a + b; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; - cpu->CPSR.bits.C = UNSIGNED_OVERFLOW(a, b, cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.V = SIGNED_OVERFLOW(a, b, cpu->R[REG_NUM(i, 0)]); + uint32_t v = cpu->R[REG_NUM(i, 3)] & 0xFF; - return 3; -} + if (!v) + { + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; + return 2; + } + if (v < 32) + { + cpu->CPSR.bits.C = BIT_N(cpu->R[REG_NUM(i, 0)], v - 1); + cpu->R[REG_NUM(i, 0)] >>= v; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; + return 2; + } + if (v == 32) + cpu->CPSR.bits.C = BIT31(cpu->R[REG_NUM(i, 0)]); + else + cpu->CPSR.bits.C = 0; -static u32 FASTCALL OP_SUB_REG(armcpu_t *cpu) -{ - u32 i = cpu->instruction; - u32 a = cpu->R[REG_NUM(i, 3)]; - u32 b = cpu->R[REG_NUM(i, 6)]; - cpu->R[REG_NUM(i, 0)] = a - b; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; - cpu->CPSR.bits.C = !UNSIGNED_UNDERFLOW(a, b, cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.V = SIGNED_UNDERFLOW(a, b, cpu->R[REG_NUM(i, 0)]); + cpu->R[REG_NUM(i, 0)] = 0; + cpu->CPSR.bits.N = 0; + cpu->CPSR.bits.Z = 1; - return 3; + return 2; } -static u32 FASTCALL OP_ADD_IMM3(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// ASR +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_ASR_0(uint32_t i) { - u32 i = cpu->instruction; - u32 a = cpu->R[REG_NUM(i, 3)]; - cpu->R[REG_NUM(i, 0)] = a + REG_NUM(i, 6); - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; - cpu->CPSR.bits.C = UNSIGNED_OVERFLOW(a, REG_NUM(i, 6), cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.V = SIGNED_OVERFLOW(a, REG_NUM(i, 6), cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.C = BIT31(cpu->R[REG_NUM(i, 3)]); + cpu->R[REG_NUM(i, 0)] = BIT31(cpu->R[REG_NUM(i, 3)]) * 0xFFFFFFFF; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; - return 2; + return 1; } -static u32 FASTCALL OP_SUB_IMM3(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ASR(uint32_t i) { - u32 i = cpu->instruction; - u32 a = cpu->R[REG_NUM(i, 3)]; - cpu->R[REG_NUM(i, 0)] = a - REG_NUM(i, 6); - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; - cpu->CPSR.bits.C = !UNSIGNED_UNDERFLOW(a, REG_NUM(i, 6), cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.V = SIGNED_UNDERFLOW(a, REG_NUM(i, 6), cpu->R[REG_NUM(i, 0)]); + uint32_t v = (i >> 6) & 0x1F; + cpu->CPSR.bits.C = BIT_N(cpu->R[REG_NUM(i, 3)], v-1); + cpu->R[REG_NUM(i, 0)] = static_cast(static_cast(cpu->R[REG_NUM(i, 3)]) >> v); + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; - return 2; + return 1; } -static u32 FASTCALL OP_MOV_IMM8(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ASR_REG(uint32_t i) { - u32 i = cpu->instruction; - cpu->R[REG_NUM(i, 8)] = i & 0xFF; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 8)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 8)] == 0; + uint32_t v = cpu->R[REG_NUM(i, 3)] & 0xFF; + + if (!v) + { + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; + return 2; + } + if (v < 32) + { + cpu->CPSR.bits.C = BIT_N(cpu->R[REG_NUM(i, 0)], v - 1); + cpu->R[REG_NUM(i, 0)] = static_cast(static_cast(cpu->R[REG_NUM(i, 0)]) >> v); + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; + return 2; + } + + cpu->CPSR.bits.C = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->R[REG_NUM(i, 0)] = BIT31(cpu->R[REG_NUM(i, 0)]) * 0xFFFFFFFF; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; - return 2; + return 2; } -static u32 FASTCALL OP_CMP_IMM8(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// ADD +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_ADD_IMM3(uint32_t i) { - u32 i = cpu->instruction; - u32 tmp = cpu->R[REG_NUM(i, 8)] - (i & 0xFF); - cpu->CPSR.bits.N = BIT31(tmp); - cpu->CPSR.bits.Z = tmp == 0; - cpu->CPSR.bits.C = !UNSIGNED_UNDERFLOW(cpu->R[REG_NUM(i, 8)], (i & 0xFF), tmp); - cpu->CPSR.bits.V = SIGNED_UNDERFLOW(cpu->R[REG_NUM(i, 8)], (i & 0xFF), tmp); + uint32_t imm3 = (i >> 6) & 0x07; + uint32_t Rn = cpu->R[REG_NUM(i, 3)]; + + if (!imm3) // mov 2 + { + cpu->R[REG_NUM(i, 0)] = Rn; + + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; + cpu->CPSR.bits.C = cpu->CPSR.bits.V = 0; + return 1; + } - return 2; + cpu->R[REG_NUM(i, 0)] = Rn + imm3; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; + cpu->CPSR.bits.C = CarryFrom(Rn, imm3); + cpu->CPSR.bits.V = OverflowFromADD(cpu->R[REG_NUM(i, 0)], Rn, imm3); + + return 1; } -static u32 FASTCALL OP_ADD_IMM8(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_IMM8(uint32_t i) { - u32 i = cpu->instruction; - u32 tmp = cpu->R[REG_NUM(i, 8)] + (i & 0xFF); - cpu->CPSR.bits.N = BIT31(tmp); - cpu->CPSR.bits.Z = tmp == 0; - cpu->CPSR.bits.C = UNSIGNED_OVERFLOW(cpu->R[REG_NUM(i, 8)], (i & 0xFF), tmp); - cpu->CPSR.bits.V = SIGNED_OVERFLOW(cpu->R[REG_NUM(i, 8)], (i & 0xFF), tmp); - cpu->R[REG_NUM(i, 8)] = tmp; + uint32_t imm8 = i & 0xFF; + uint32_t Rd = cpu->R[REG_NUM(i, 8)]; + + cpu->R[REG_NUM(i, 8)] = Rd + imm8; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 8)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 8)]; + cpu->CPSR.bits.C = CarryFrom(Rd, imm8); + cpu->CPSR.bits.V = OverflowFromADD(cpu->R[REG_NUM(i, 8)], Rd, imm8); - return 2; + return 1; } -static u32 FASTCALL OP_SUB_IMM8(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 tmp = cpu->R[REG_NUM(i, 8)] - (i & 0xFF); - cpu->CPSR.bits.N = BIT31(tmp); - cpu->CPSR.bits.Z = tmp == 0; - cpu->CPSR.bits.C = !UNSIGNED_UNDERFLOW(cpu->R[REG_NUM(i, 8)], (i & 0xFF), tmp); - cpu->CPSR.bits.V = SIGNED_UNDERFLOW(cpu->R[REG_NUM(i, 8)], (i & 0xFF), tmp); - cpu->R[REG_NUM(i, 8)] = tmp; + uint32_t Rn = cpu->R[REG_NUM(i, 3)]; + uint32_t Rm = cpu->R[REG_NUM(i, 6)]; + + cpu->R[REG_NUM(i, 0)] = Rn + Rm; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; + cpu->CPSR.bits.C = CarryFrom(Rn, Rm); + cpu->CPSR.bits.V = OverflowFromADD(cpu->R[REG_NUM(i, 0)], Rn, Rm); - return 2; + return 1; } -static u32 FASTCALL OP_AND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_SPE(uint32_t i) { - u32 i = cpu->instruction; - cpu->R[REG_NUM(i, 0)] &= cpu->R[REG_NUM(i, 3)]; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; + uint32_t Rd = REG_NUM(i, 0) | ((i >> 4) & 8); + + cpu->R[Rd] += cpu->R[REG_POS(i, 3)]; + + if (Rd == 15) + { + cpu->next_instruction = cpu->R[15]; + return 3; + } - return 3; + return 1; } -static u32 FASTCALL OP_EOR(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_2PC(uint32_t i) { - u32 i = cpu->instruction; - cpu->R[REG_NUM(i, 0)] ^= cpu->R[REG_NUM(i, 3)]; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; + cpu->R[REG_NUM(i, 8)] = (cpu->R[15] & 0xFFFFFFFC) + ((i & 0xFF) << 2); - return 3; + return 1; } -static u32 FASTCALL OP_LSL_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADD_2SP(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_NUM(i, 3)]&0xFF; + cpu->R[REG_NUM(i, 8)] = cpu->R[13] + ((i & 0xFF) << 2); - if(!v) - { - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; - return 3; - } - if(v<32) - { - cpu->CPSR.bits.C = BIT_N(cpu->R[REG_NUM(i, 0)], 32-v); - cpu->R[REG_NUM(i, 0)] <<= v; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; - return 3; - } - if(v==32) - cpu->CPSR.bits.C = BIT0(cpu->R[REG_NUM(i, 0)]); - else - cpu->CPSR.bits.C = 0; - cpu->R[REG_NUM(i, 0)] = 0; - cpu->CPSR.bits.N = 0; - cpu->CPSR.bits.Z = 1; - - return 3; + return 1; } -static u32 FASTCALL OP_LSR_REG(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// SUB +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_SUB_IMM3(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_NUM(i, 3)]&0xFF; + uint32_t imm3 = (i >> 6) & 0x07; + uint32_t Rn = cpu->R[REG_NUM(i, 3)]; + uint32_t tmp = Rn - imm3; - if(!v) - { - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; - return 3; - } - if(v<32) - { - cpu->CPSR.bits.C = BIT_N(cpu->R[REG_NUM(i, 0)], v-1); - cpu->R[REG_NUM(i, 0)] >>= v; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; - return 3; - } - if(v==32) - cpu->CPSR.bits.C = BIT31(cpu->R[REG_NUM(i, 0)]); - else - cpu->CPSR.bits.C = 0; - cpu->R[REG_NUM(i, 0)] = 0; - cpu->CPSR.bits.N = 0; - cpu->CPSR.bits.Z = 1; + cpu->R[REG_NUM(i, 0)] = tmp; + cpu->CPSR.bits.N = BIT31(tmp); + cpu->CPSR.bits.Z = !tmp; + cpu->CPSR.bits.C = !BorrowFrom(Rn, imm3); + cpu->CPSR.bits.V = OverflowFromSUB(tmp, Rn, imm3); - return 3; + return 1; } -static u32 FASTCALL OP_ASR_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SUB_IMM8(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_NUM(i, 3)]&0xFF; - - if(!v) - { - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; - return 3; - } - if(v<32) - { - cpu->CPSR.bits.C = BIT_N(cpu->R[REG_NUM(i, 0)], v-1); - cpu->R[REG_NUM(i, 0)] = (u32)(((s32)cpu->R[REG_NUM(i, 0)]) >> v); - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; - return 3; - } + uint32_t imm8 = i & 0xFF; + uint32_t Rd = cpu->R[REG_NUM(i, 8)]; + uint32_t tmp = Rd - imm8; - cpu->CPSR.bits.C = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->R[REG_NUM(i, 0)] = BIT31(cpu->R[REG_NUM(i, 0)])*0xFFFFFFFF; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; + cpu->R[REG_NUM(i, 8)] = tmp; + cpu->CPSR.bits.N = BIT31(tmp); + cpu->CPSR.bits.Z = !tmp; + cpu->CPSR.bits.C = !BorrowFrom(Rd, imm8); + cpu->CPSR.bits.V = OverflowFromSUB(tmp, Rd, imm8); - return 3; + return 1; } -static u32 FASTCALL OP_ADC_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_SUB_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 a = cpu->R[REG_NUM(i, 0)]; - u32 b = cpu->R[REG_NUM(i, 3)]; - u32 tmp = b + cpu->CPSR.bits.C; - u32 res = a + tmp; + uint32_t Rn = cpu->R[REG_NUM(i, 3)]; + uint32_t Rm = cpu->R[REG_NUM(i, 6)]; + uint32_t tmp = Rn - Rm; - cpu->R[REG_NUM(i, 0)] = res; + cpu->R[REG_NUM(i, 0)] = tmp; + cpu->CPSR.bits.N = BIT31(tmp); + cpu->CPSR.bits.Z = !tmp; + cpu->CPSR.bits.C = !BorrowFrom(Rn, Rm); + cpu->CPSR.bits.V = OverflowFromSUB(tmp, Rn, Rm); - cpu->CPSR.bits.N = BIT31(res); - cpu->CPSR.bits.Z = res == 0; + return 1; +} + +//----------------------------------------------------------------------------- +// MOV +//----------------------------------------------------------------------------- - cpu->CPSR.bits.C = UNSIGNED_OVERFLOW(b, cpu->CPSR.bits.C, tmp) | UNSIGNED_OVERFLOW(tmp, a, res); - cpu->CPSR.bits.V = SIGNED_OVERFLOW(b, cpu->CPSR.bits.C, tmp) | SIGNED_OVERFLOW(tmp, a, res); +TEMPLATE static uint32_t FASTCALL OP_MOV_IMM8(uint32_t i) +{ + cpu->R[REG_NUM(i, 8)] = i & 0xFF; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 8)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 8)]; - return 3; + return 1; } -static u32 FASTCALL OP_SBC_REG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_MOV_SPE(uint32_t i) { - u32 i = cpu->instruction; - u32 a = cpu->R[REG_NUM(i, 0)]; - u32 b = cpu->R[REG_NUM(i, 3)]; - u32 tmp = a - (!cpu->CPSR.bits.C); - u32 res = tmp - b; - cpu->R[REG_NUM(i, 0)] = res; + uint32_t Rd = REG_NUM(i, 0) | ((i >> 4) & 8); - cpu->CPSR.bits.N = BIT31(res); - cpu->CPSR.bits.Z = res == 0; + cpu->R[Rd] = cpu->R[REG_POS(i, 3)]; - cpu->CPSR.bits.C = (!UNSIGNED_UNDERFLOW(a, (int)!cpu->CPSR.bits.C, tmp)) & (!UNSIGNED_OVERFLOW(tmp, b, res)); - cpu->CPSR.bits.V = SIGNED_UNDERFLOW(a, (int)!cpu->CPSR.bits.C, tmp) | SIGNED_OVERFLOW(tmp, b, res); + if (Rd == 15) + { + cpu->next_instruction = cpu->R[15]; + return 3; + } - return 3; + return 1; } -static u32 FASTCALL OP_ROR_REG(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// CMP +//----------------------------------------------------------------------------- +TEMPLATE static uint32_t FASTCALL OP_CMP_IMM8(uint32_t i) { - u32 i = cpu->instruction; - u32 v = cpu->R[REG_NUM(i, 3)]&0xFF; + uint32_t tmp = cpu->R[REG_NUM(i, 8)] - (i & 0xFF); - if(v == 0) - { - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; - return 3; - } - v &= 0xF; - if(v == 0) - { - cpu->CPSR.bits.C = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; - return 3; - } - cpu->CPSR.bits.C = BIT_N(cpu->R[REG_NUM(i, 0)], v-1); - cpu->R[REG_NUM(i, 0)] = ROR(cpu->R[REG_NUM(i, 0)], v); - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; + cpu->CPSR.bits.N = BIT31(tmp); + cpu->CPSR.bits.Z = !tmp; + cpu->CPSR.bits.C = !BorrowFrom(cpu->R[REG_NUM(i, 8)], i & 0xFF); + cpu->CPSR.bits.V = OverflowFromSUB(tmp, cpu->R[REG_NUM(i, 8)], i & 0xFF); - return 3; + return 1; } -static u32 FASTCALL OP_TST(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMP(uint32_t i) { - u32 i = cpu->instruction; - u32 tmp = cpu->R[REG_NUM(i, 0)] & cpu->R[REG_NUM(i, 3)]; - cpu->CPSR.bits.N = BIT31(tmp); - cpu->CPSR.bits.Z = tmp == 0; + uint32_t tmp = cpu->R[REG_NUM(i, 0)] - cpu->R[REG_NUM(i, 3)]; - return 3; + cpu->CPSR.bits.N = BIT31(tmp); + cpu->CPSR.bits.Z = !tmp; + cpu->CPSR.bits.C = !BorrowFrom(cpu->R[REG_NUM(i, 0)], cpu->R[REG_NUM(i, 3)]); + cpu->CPSR.bits.V = OverflowFromSUB(tmp, cpu->R[REG_NUM(i, 0)], cpu->R[REG_NUM(i, 3)]); + + return 1; } -static u32 FASTCALL OP_NEG(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_CMP_SPE(uint32_t i) { - u32 i = cpu->instruction; - u32 a = cpu->R[REG_NUM(i, 3)]; - cpu->R[REG_NUM(i, 0)] = -((signed int)a); + uint32_t Rn = (i & 7) | ((i >> 4) & 8); + + uint32_t tmp = cpu->R[Rn] - cpu->R[REG_POS(i, 3)]; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; - cpu->CPSR.bits.C = !UNSIGNED_UNDERFLOW(0, a, cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.V = SIGNED_UNDERFLOW(0, a, cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.N = BIT31(tmp); + cpu->CPSR.bits.Z = !tmp; + cpu->CPSR.bits.C = !BorrowFrom(cpu->R[Rn], cpu->R[REG_POS(i, 3)]); + cpu->CPSR.bits.V = OverflowFromSUB(tmp, cpu->R[Rn], cpu->R[REG_POS(i, 3)]); - return 3; + return 1; } -static u32 FASTCALL OP_CMP(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// AND +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_AND(uint32_t i) { - u32 i = cpu->instruction; - u32 tmp = cpu->R[REG_NUM(i, 0)] -cpu->R[REG_NUM(i, 3)]; + cpu->R[REG_NUM(i, 0)] &= cpu->R[REG_NUM(i, 3)]; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; + return 1; +} + +//----------------------------------------------------------------------------- +// EOR +//----------------------------------------------------------------------------- - cpu->CPSR.bits.N = BIT31(tmp); - cpu->CPSR.bits.Z = tmp == 0; - cpu->CPSR.bits.C = !UNSIGNED_UNDERFLOW(cpu->R[REG_NUM(i, 0)], cpu->R[REG_NUM(i, 3)], tmp); - cpu->CPSR.bits.V = SIGNED_UNDERFLOW(cpu->R[REG_NUM(i, 0)], cpu->R[REG_NUM(i, 3)], tmp); +TEMPLATE static uint32_t FASTCALL OP_EOR(uint32_t i) +{ + cpu->R[REG_NUM(i, 0)] ^= cpu->R[REG_NUM(i, 3)]; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; - return 3; + return 1; } -static u32 FASTCALL OP_CMN(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// ADC +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_ADC_REG(uint32_t i) { - u32 i = cpu->instruction; - u32 tmp = cpu->R[REG_NUM(i, 0)] + cpu->R[REG_NUM(i, 3)]; + uint32_t Rd = cpu->R[REG_NUM(i, 0)]; + uint32_t Rm = cpu->R[REG_NUM(i, 3)]; - //execute = false; - //log::ajouter("OP_CMN THUMB"); - cpu->CPSR.bits.N = BIT31(tmp); - cpu->CPSR.bits.Z = tmp == 0; - cpu->CPSR.bits.C = UNSIGNED_OVERFLOW(cpu->R[REG_NUM(i, 0)], cpu->R[REG_NUM(i, 3)], tmp); - cpu->CPSR.bits.V = SIGNED_OVERFLOW(cpu->R[REG_NUM(i, 0)], cpu->R[REG_NUM(i, 3)], tmp); + if (!cpu->CPSR.bits.C) + { + cpu->R[REG_NUM(i, 0)] = Rd + Rm; + cpu->CPSR.bits.C = cpu->R[REG_NUM(i, 0)] < Rm; + } + else + { + cpu->R[REG_NUM(i, 0)] = Rd + Rm + 1; + cpu->CPSR.bits.C = cpu->R[REG_NUM(i, 0)] <= Rm; + } + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; + cpu->CPSR.bits.V = BIT31((Rd ^ Rm ^ -1) & (Rd ^ cpu->R[REG_NUM(i, 0)])); - return 3; + return 1; } -static u32 FASTCALL OP_ORR(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// SBC +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_SBC_REG(uint32_t i) { - u32 i = cpu->instruction; - cpu->R[REG_NUM(i, 0)] |= cpu->R[REG_NUM(i, 3)]; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; + uint32_t Rd = cpu->R[REG_NUM(i, 0)]; + uint32_t Rm = cpu->R[REG_NUM(i, 3)]; - return 3; -} + if (!cpu->CPSR.bits.C) + { + cpu->R[REG_NUM(i, 0)] = Rd - Rm - 1; + cpu->CPSR.bits.C = Rd > Rm; + } + else + { + cpu->R[REG_NUM(i, 0)] = Rd - Rm; + cpu->CPSR.bits.C = Rd >= Rm; + } -static u32 FASTCALL OP_MUL_REG(armcpu_t *cpu) -{ - u32 i = cpu->instruction; - cpu->R[REG_NUM(i, 0)] *= cpu->R[REG_NUM(i, 3)]; - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; + cpu->CPSR.bits.V = BIT31((Rd ^ Rm) & (Rd ^ cpu->R[REG_NUM(i, 0)])); - return 3; + return 1; } -static u32 FASTCALL OP_BIC(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// ROR +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_ROR_REG(uint32_t i) { - u32 i = cpu->instruction; - cpu->R[REG_NUM(i, 0)] &= (~cpu->R[REG_NUM(i, 3)]); - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; + uint32_t v = cpu->R[REG_NUM(i, 3)] & 0xFF; - return 3; + if (!v) + { + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; + return 2; + } + + v &= 0x1F; + if (!v) + { + cpu->CPSR.bits.C = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; + return 2; + } + + cpu->CPSR.bits.C = BIT_N(cpu->R[REG_NUM(i, 0)], v - 1); + cpu->R[REG_NUM(i, 0)] = ROR(cpu->R[REG_NUM(i, 0)], v); + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; + + return 2; } -static u32 FASTCALL OP_MVN(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// TST +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_TST(uint32_t i) { - u32 i = cpu->instruction; - cpu->R[REG_NUM(i, 0)] = (~cpu->R[REG_NUM(i, 3)]); - cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); - cpu->CPSR.bits.Z = cpu->R[REG_NUM(i, 0)] == 0; + uint32_t tmp = cpu->R[REG_NUM(i, 0)] & cpu->R[REG_NUM(i, 3)]; + cpu->CPSR.bits.N = BIT31(tmp); + cpu->CPSR.bits.Z = !tmp; - return 3; + return 1; } -static u32 FASTCALL OP_ADD_SPE(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// NEG +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_NEG(uint32_t i) { - u32 i = cpu->instruction; - u32 Rd = (i&7) | ((i>>4)&8); - cpu->R[Rd] += cpu->R[REG_POS(i, 3)]; + uint32_t Rm = cpu->R[REG_NUM(i, 3)]; - if(Rd==15) - cpu->next_instruction = cpu->R[15]; + cpu->R[REG_NUM(i, 0)] = static_cast(-static_cast(Rm)); - return 2; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; + cpu->CPSR.bits.C = !BorrowFrom(0, Rm); + cpu->CPSR.bits.V = OverflowFromSUB(cpu->R[REG_NUM(i, 0)], 0, Rm); + + return 1; } -static u32 FASTCALL OP_CMP_SPE(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// CMN +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_CMN(uint32_t i) { - u32 i = cpu->instruction; - u32 Rn = (i&7) | ((i>>4)&8); - u32 tmp = cpu->R[Rn] -cpu->R[REG_POS(i, 3)]; + uint32_t tmp = cpu->R[REG_NUM(i, 0)] + cpu->R[REG_NUM(i, 3)]; - cpu->CPSR.bits.N = BIT31(tmp); - cpu->CPSR.bits.Z = tmp == 0; - cpu->CPSR.bits.C = !UNSIGNED_UNDERFLOW(cpu->R[Rn], cpu->R[REG_POS(i, 3)], tmp); - cpu->CPSR.bits.V = SIGNED_UNDERFLOW(cpu->R[Rn], cpu->R[REG_POS(i, 3)], tmp); + cpu->CPSR.bits.N = BIT31(tmp); + cpu->CPSR.bits.Z = !tmp; + cpu->CPSR.bits.C = CarryFrom(cpu->R[REG_NUM(i, 0)], cpu->R[REG_NUM(i, 3)]); + cpu->CPSR.bits.V = OverflowFromADD(tmp, cpu->R[REG_NUM(i, 0)], cpu->R[REG_NUM(i, 3)]); - return 3; + return 1; } -static u32 FASTCALL OP_MOV_SPE(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// ORR +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_ORR(uint32_t i) { - u32 i = cpu->instruction; - u32 Rd = (i&7) | ((i>>4)&8); - cpu->R[Rd] = cpu->R[REG_POS(i, 3)]; + cpu->R[REG_NUM(i, 0)] |= cpu->R[REG_NUM(i, 3)]; - if(Rd==15) - cpu->next_instruction = cpu->R[15]; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; - return 2; + return 1; } -static u32 FASTCALL OP_BX_THUMB(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// BIC +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_BIC(uint32_t i) { - u32 Rm = cpu->R[REG_POS(cpu->instruction, 3)]; + cpu->R[REG_NUM(i, 0)] &= ~cpu->R[REG_NUM(i, 3)]; - cpu->CPSR.bits.T = BIT0(Rm); - cpu->R[15] = (Rm & 0xFFFFFFFE); - cpu->next_instruction = cpu->R[15]; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; - return 3; + return 1; } -static u32 FASTCALL OP_BLX_THUMB(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// MVN +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_MVN(uint32_t i) { - u32 Rm = cpu->R[REG_POS(cpu->instruction, 3)]; + cpu->R[REG_NUM(i, 0)] = ~cpu->R[REG_NUM(i, 3)]; - cpu->CPSR.bits.T = BIT0(Rm); - cpu->R[14] = cpu->next_instruction | 1; - cpu->R[15] = (Rm & 0xFFFFFFFE); - cpu->next_instruction = cpu->R[15]; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; - return 3; + return 1; } -static u32 FASTCALL OP_LDR_PCREL(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// MUL +//----------------------------------------------------------------------------- + +#define MUL_Mxx_END_THUMB(c) \ + v >>= 8; \ + if (!v || v == 0xFFFFFF) \ + return c + 1; \ + v >>= 8; \ + if (!v || v == 0xFFFF) \ + return c + 2; \ + v >>= 8; \ + if (!v || v == 0xFF) \ + return c + 3; \ + return c + 4; + +TEMPLATE static uint32_t FASTCALL OP_MUL_REG(uint32_t i) { - u32 adr = (cpu->R[15]&0xFFFFFFFC) + ((cpu->instruction&0xFF)<<2); + uint32_t v = cpu->R[REG_NUM(i, 3)]; + + // FIXME: + //------ Rd = (Rm * Rd)[31:0] + //------ u64 res = ((u64)cpu->R[REG_NUM(i, 0)] * (u64)v)); + //------ cpu->R[REG_NUM(i, 0)] = (uint32_t)(res & 0xFFFFFFFF); + //------ + + cpu->R[REG_NUM(i, 0)] *= v; + cpu->CPSR.bits.N = BIT31(cpu->R[REG_NUM(i, 0)]); + cpu->CPSR.bits.Z = !cpu->R[REG_NUM(i, 0)]; + //The MUL instruction is defined to leave the C flag unchanged in ARMv5 and above. + //In earlier versions of the architecture, the value of the C flag was UNPREDICTABLE + //after a MUL instruction. - cpu->R[REG_NUM(cpu->instruction, 8)] = READ32(cpu->mem_if->data, adr); + if (PROCNUM == 1) // ARM4T 1S + mI, m = 3 + return 4; - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + MUL_Mxx_END_THUMB(1); } -static u32 FASTCALL OP_STR_REG_OFF(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// STRB / LDRB +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_STRB_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_NUM(i, 6)] + cpu->R[REG_NUM(i, 3)]; - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_NUM(i, 0)]); + uint32_t adr = cpu->R[REG_NUM(i, 3)] + ((i >> 6) & 0x1F); + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_NUM(i, 0)])); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRH_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_NUM(i, 3)] + cpu->R[REG_NUM(i, 6)]; - WRITE16(cpu->mem_if->data, adr, ((u16)cpu->R[REG_NUM(i, 0)])); + uint32_t adr = cpu->R[REG_NUM(i, 3)] + ((i>>6)&0x1F); + cpu->R[REG_NUM(i, 0)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_STRB_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRB_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_NUM(i, 3)] + cpu->R[REG_NUM(i, 6)]; - WRITE8(cpu->mem_if->data, adr, ((u8)cpu->R[REG_NUM(i, 0)])); + uint32_t adr = cpu->R[REG_NUM(i, 3)] + cpu->R[REG_NUM(i, 6)]; + WRITE8(cpu->mem_if->data, adr, static_cast(cpu->R[REG_NUM(i, 0)])); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_LDRSB_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRB_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_NUM(i, 3)] + cpu->R[REG_NUM(i, 6)]; - cpu->R[REG_NUM(i, 0)] = (s32)((s8)READ8(cpu->mem_if->data, adr)); + uint32_t adr = cpu->R[REG_NUM(i, 3)] + cpu->R[REG_NUM(i, 6)]; + cpu->R[REG_NUM(i, 0)] = static_cast(READ8(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDR_REG_OFF(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// LDRSB +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_LDRSB_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = (cpu->R[REG_NUM(i, 3)] + cpu->R[REG_NUM(i, 6)]); - u32 tempValue = READ32(cpu->mem_if->data, adr&0xFFFFFFFC); + uint32_t adr = cpu->R[REG_NUM(i, 3)] + cpu->R[REG_NUM(i, 6)]; + cpu->R[REG_NUM(i, 0)] = static_cast(static_cast(READ8(cpu->mem_if->data, adr))); - adr = (adr&3)*8; - tempValue = (tempValue>>adr) | (tempValue<<(32-adr)); - cpu->R[REG_NUM(i, 0)] = tempValue; + return MMU_aluMemAccessCycles(3, adr); +} + +//----------------------------------------------------------------------------- +// STRH / LDRH +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_STRH_IMM_OFF(uint32_t i) +{ + uint32_t adr = cpu->R[REG_NUM(i, 3)] + ((i >> 5) & 0x3E); + WRITE16(cpu->mem_if->data, adr, static_cast(cpu->R[REG_NUM(i, 0)])); - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_LDRH_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRH_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_NUM(i, 3)] + cpu->R[REG_NUM(i, 6)]; - cpu->R[REG_NUM(i, 0)] = (u32)READ16(cpu->mem_if->data, adr); + uint32_t adr = cpu->R[REG_NUM(i, 3)] + ((i >> 5) & 0x3E); + cpu->R[REG_NUM(i, 0)] = static_cast(READ16(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STRH_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_NUM(i, 3)] + cpu->R[REG_NUM(i, 6)]; - cpu->R[REG_NUM(i, 0)] = (u32)READ8(cpu->mem_if->data, adr); + uint32_t adr = cpu->R[REG_NUM(i, 3)] + cpu->R[REG_NUM(i, 6)]; + WRITE16(cpu->mem_if->data, adr, static_cast(cpu->R[REG_NUM(i, 0)])); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_LDRSH_REG_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDRH_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_NUM(i, 3)] + cpu->R[REG_NUM(i, 6)]; - cpu->R[REG_NUM(i, 0)] = (s32)((s16)READ16(cpu->mem_if->data, adr)); + uint32_t adr = cpu->R[REG_NUM(i, 3)] + cpu->R[REG_NUM(i, 6)]; + cpu->R[REG_NUM(i, 0)] = static_cast(READ16(cpu->mem_if->data, adr)); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_STR_IMM_OFF(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// LDRSH +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_LDRSH_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_NUM(i, 3)] + ((i>>4)&0x7C); - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_NUM(i, 0)]); + uint32_t adr = cpu->R[REG_NUM(i, 3)] + cpu->R[REG_NUM(i, 6)]; + cpu->R[REG_NUM(i, 0)] = static_cast(static_cast(READ16(cpu->mem_if->data, adr))); - return 2 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDR_IMM_OFF(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// STR / LDR +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_STR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_NUM(i, 3)] + ((i>>4)&0x7C); - u32 tempValue = READ32(cpu->mem_if->data, adr&0xFFFFFFFC); - adr = (adr&3)*8; - tempValue = (tempValue>>adr) | (tempValue<<(32-adr)); - cpu->R[REG_NUM(i, 0)] = tempValue; + uint32_t adr = cpu->R[REG_NUM(i, 3)] + ((i >> 4) & 0x7C); + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_NUM(i, 0)]); - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRB_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_IMM_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_NUM(i, 3)] + ((i>>6)&0x1F); - WRITE8(cpu->mem_if->data, adr, (u8)cpu->R[REG_NUM(i, 0)]); + uint32_t adr = cpu->R[REG_NUM(i, 3)] + ((i >> 4) & 0x7C); + uint32_t tempValue = READ32(cpu->mem_if->data, adr); + adr = (adr & 3) * 8; + tempValue = (tempValue >> adr) | (tempValue << (32 - adr)); + cpu->R[REG_NUM(i, 0)] = tempValue; - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRB_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_NUM(i, 3)] + ((i>>6)&0x1F); - cpu->R[REG_NUM(i, 0)] = READ8(cpu->mem_if->data, adr); + uint32_t adr = cpu->R[REG_NUM(i, 6)] + cpu->R[REG_NUM(i, 3)]; + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_NUM(i, 0)]); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STRH_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_REG_OFF(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_NUM(i, 3)] + ((i>>5)&0x3E); - WRITE16(cpu->mem_if->data, adr, (u16)cpu->R[REG_NUM(i, 0)]); + uint32_t adr = cpu->R[REG_NUM(i, 3)] + cpu->R[REG_NUM(i, 6)]; + uint32_t tempValue = READ32(cpu->mem_if->data, adr); + adr = (adr & 3) * 8; + tempValue = (tempValue >> adr) | (tempValue << (32 - adr)); + cpu->R[REG_NUM(i, 0)] = tempValue; - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDRH_IMM_OFF(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_STR_SPREL(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_NUM(i, 3)] + ((i>>5)&0x3E); - cpu->R[REG_NUM(i, 0)] = READ16(cpu->mem_if->data, adr); + uint32_t adr = cpu->R[13] + ((i & 0xFF) << 2); + WRITE32(cpu->mem_if->data, adr, cpu->R[REG_NUM(i, 8)]); - return 3 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(2, adr); } -static u32 FASTCALL OP_STR_SPREL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_SPREL(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[13] + ((i&0xFF)<<2); - WRITE32(cpu->mem_if->data, adr, cpu->R[REG_NUM(i, 8)]); + uint32_t adr = cpu->R[13] + ((i & 0xFF) << 2); + cpu->R[REG_NUM(i, 8)] = READ32(cpu->mem_if->data, adr); - return 2 + MMU.MMU_WAIT16[cpu->proc_ID][(adr>>24)&0xF]; + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_LDR_SPREL(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDR_PCREL(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[13] + ((i&0xFF)<<2); - cpu->R[REG_NUM(i, 8)] = READ32(cpu->mem_if->data, adr); + uint32_t adr = (cpu->R[15] & 0xFFFFFFFC) + ((i & 0xFF) << 2); - return 3 + MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; + cpu->R[REG_NUM(i, 8)] = READ32(cpu->mem_if->data, adr); + + return MMU_aluMemAccessCycles(3, adr); } -static u32 FASTCALL OP_ADD_2PC(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// Adjust SP +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_ADJUST_P_SP(uint32_t i) { - u32 i = cpu->instruction; - cpu->R[REG_NUM(i, 8)] = (cpu->R[15]&0xFFFFFFFC) + ((i&0xFF)<<2); + cpu->R[13] += (i & 0x7F) << 2; - return 5; + return 1; } -static u32 FASTCALL OP_ADD_2SP(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_ADJUST_M_SP(uint32_t i) { - u32 i = cpu->instruction; - cpu->R[REG_NUM(i, 8)] = cpu->R[13] + ((i&0xFF)<<2); + cpu->R[13] -= (i & 0x7F) << 2; - return 2; + return 1; } -static u32 FASTCALL OP_ADJUST_P_SP(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// PUSH / POP +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_PUSH(uint32_t i) { - cpu->R[13] += ((cpu->instruction&0x7F)<<2); + uint32_t adr = cpu->R[13] - 4; + uint32_t c = 0; - return 1; + for (uint32_t j = 0; j < 8; ++j) + if (BIT_N(i, 7 - j)) + { + WRITE32(cpu->mem_if->data, adr, cpu->R[7 - j]); + c += MMU_memAccessCycles(adr); + adr -= 4; + } + cpu->R[13] = adr + 4; + + return MMU_aluMemCycles(3, c); } -static u32 FASTCALL OP_ADJUST_M_SP(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_PUSH_LR(uint32_t i) { - cpu->R[13] -= ((cpu->instruction&0x7F)<<2); + uint32_t adr = cpu->R[13] - 4; + uint32_t c = 0; + + WRITE32(cpu->mem_if->data, adr, cpu->R[14]); + c += MMU_memAccessCycles(adr); + adr -= 4; - return 1; + for (uint32_t j = 0; j < 8; ++j) + if (BIT_N(i, 7 - j)) + { + WRITE32(cpu->mem_if->data, adr, cpu->R[7 - j]); + c += MMU_memAccessCycles(adr); + adr -= 4; + } + cpu->R[13] = adr + 4; + + return MMU_aluMemCycles(4, c); } -static u32 FASTCALL OP_PUSH(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_POP(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[13] - 4; - u32 c = 0, j; + uint32_t adr = cpu->R[13]; + uint32_t c = 0; - for(j = 0; j<8; ++j) - if(BIT_N(i, 7-j)) - { - WRITE32(cpu->mem_if->data, adr, cpu->R[7-j]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - adr -= 4; - } - cpu->R[13] = adr + 4; + for (uint32_t j = 0; j < 8; ++j) + if (BIT_N(i, j)) + { + cpu->R[j] = READ32(cpu->mem_if->data, adr); + c += MMU_memAccessCycles(adr); + adr += 4; + } + cpu->R[13] = adr; - return c + 3; + return MMU_aluMemCycles(2, c); } -static u32 FASTCALL OP_PUSH_LR(armcpu_t *cpu) +// In ARMv5 and above, bit[0] of the loaded value +// determines whether execution continues after this branch in ARM state or in Thumb state, as though the +// following instruction had been executed: +// BX (loaded_value) +// In T variants of ARMv4, bit[0] of the loaded value is ignored and execution continues in Thumb state, as +// though the following instruction had been executed: +// MOV PC,(loaded_value) +TEMPLATE static uint32_t FASTCALL OP_POP_PC(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[13] - 4; - u32 c = 0, j; + uint32_t adr = cpu->R[13]; + uint32_t c = 0; + + for (uint32_t j = 0; j < 8; ++j) + if (BIT_N(i, j)) + { + cpu->R[j] = READ32(cpu->mem_if->data, adr); + c += MMU_memAccessCycles(adr); + adr += 4; + } - WRITE32(cpu->mem_if->data, adr, cpu->R[14]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - adr -= 4; + uint32_t v = READ32(cpu->mem_if->data, adr); + c += MMU_memAccessCycles(adr); + if (!PROCNUM) + cpu->CPSR.bits.T = BIT0(v); - for(j = 0; j<8; ++j) - if(BIT_N(i, 7-j)) - { - WRITE32(cpu->mem_if->data, adr, cpu->R[7-j]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - adr -= 4; - } - cpu->R[13] = adr + 4; + cpu->R[15] = v & 0xFFFFFFFE; + cpu->next_instruction = cpu->R[15]; - return c + 4; + cpu->R[13] = adr + 4; + return MMU_aluMemCycles(5, c); } -static u32 FASTCALL OP_POP(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// STMIA / LDMIA +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_STMIA_THUMB(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[13]; - u32 c = 0, j; + uint32_t adr = cpu->R[REG_NUM(i, 8)]; + uint32_t c = 0; + bool erList = true; //Empty Register List - for(j = 0; j<8; ++j) - if(BIT_N(i, j)) - { - cpu->R[j] = READ32(cpu->mem_if->data, adr); - c += MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - adr += 4; - } - cpu->R[13] = adr; + // ------ ARM_REF: + // ------ If is specified in : + // ------ * If is the lowest-numbered register specified in , the original value of is stored. + // ------ * Otherwise, the stored value of is UNPREDICTABLE. + if (BIT_N(i, REG_NUM(i, 8))) + fprintf(stderr, "STMIA with Rb in Rlist\n"); - return c + 2; + for (uint32_t j = 0; j < 8; ++j) + if (BIT_N(i, j)) + { + WRITE32(cpu->mem_if->data, adr, cpu->R[j]); + c += MMU_memAccessCycles(adr); + adr += 4; + erList = false; //Register List isnt empty + } + + if (erList) + fprintf(stderr, "STMIA with Empty Rlist\n"); + + cpu->R[REG_NUM(i, 8)] = adr; + return MMU_aluMemCycles(2, c); } -static u32 FASTCALL OP_POP_PC(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_LDMIA_THUMB(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[13]; - u32 c = 0, j; - u32 v; + uint32_t regIndex = REG_NUM(i, 8); + uint32_t adr = cpu->R[regIndex]; + uint32_t c = 0; + bool erList = true; //Empty Register List + + //if (BIT_N(i, regIndex)) + // fprintf(stderr, "LDMIA with Rb in Rlist at %08X\n",cpu->instruct_adr); - for(j = 0; j<8; ++j) - if(BIT_N(i, j)) - { - cpu->R[j] = READ32(cpu->mem_if->data, adr); - c += MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - adr += 4; - } + for (uint32_t j = 0; j < 8; ++j) + if (BIT_N(i, j)) + { + cpu->R[j] = READ32(cpu->mem_if->data, adr); + c += MMU_memAccessCycles(adr); + adr += 4; + erList = false; //Register List isnt empty + } - v = READ32(cpu->mem_if->data, adr); - c += MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - cpu->R[15] = v & 0xFFFFFFFE; - cpu->next_instruction = v & 0xFFFFFFFE; - if(cpu->proc_ID==0) - cpu->CPSR.bits.T = BIT0(v); - adr += 4; + if (erList) + fprintf(stderr, "LDMIA with Empty Rlist\n"); - cpu->R[13] = adr; - return c + 5; + // ARM_REF: THUMB: Causes base register write-back, and is not optional + // ARM_REF: If the base register is specified in , the final value of is the loaded value + // (not the written-back value). + if (!BIT_N(i, regIndex)) + cpu->R[regIndex] = adr; + + return MMU_aluMemCycles(3, c); } -static u32 FASTCALL OP_BKPT_THUMB(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// BKPT +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_BKPT_THUMB(uint32_t) { - return 1; + fprintf(stderr, "THUMB%c: OP_BKPT triggered\n", PROCNUM?'7':'9'); + Status_Reg tmp = cpu->CPSR; + armcpu_switchMode(cpu, ABT); // enter abt mode + cpu->R[14] = cpu->instruct_adr + 4; + cpu->SPSR = tmp; // save old CPSR as new SPSR + cpu->CPSR.bits.T = 0; // handle as ARM32 code + cpu->CPSR.bits.I = 1; + cpu->changeCPSR(); + cpu->R[15] = cpu->intVector + 0x0C; + cpu->next_instruction = cpu->R[15]; + return 1; } -static u32 FASTCALL OP_STMIA_THUMB(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// SWI +//----------------------------------------------------------------------------- + +TEMPLATE static uint32_t FASTCALL OP_SWI_THUMB(uint32_t i) { - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_NUM(i, 8)]; - u32 c = 0, j; + uint32_t swinum = i & 0xFF; - for(j = 0; j<8; ++j) - if(BIT_N(i, j)) - { - WRITE32(cpu->mem_if->data, adr, cpu->R[j]); - c += MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - adr += 4; - } - cpu->R[REG_NUM(i, 8)] = adr; - return c + 2; -} + //ideas-style debug prints (execute this SWI with the null terminated string address in R0) + if (swinum == 0xFC) + { + //IdeasLog(cpu); + return 0; + } -static u32 FASTCALL OP_LDMIA_THUMB(armcpu_t *cpu) -{ - u32 i = cpu->instruction; - u32 adr = cpu->R[REG_NUM(i, 8)]; - u32 c = 0, j; + //if the user has changed the intVector to point away from the nds bioses, + //then it doesn't really make any sense to use the builtin SWI's since + //the bios ones aren't getting called anyway + bool bypassBuiltinSWI = (cpu->intVector == 0x00000000 && !PROCNUM) || (cpu->intVector == 0xFFFF0000 && PROCNUM == 1); - for(j = 0; j<8; ++j) - if(BIT_N(i, j)) - { - cpu->R[j] = READ32(cpu->mem_if->data, adr); - c += MMU.MMU_WAIT32[cpu->proc_ID][(adr>>24)&0xF]; - adr += 4; - } - cpu->R[REG_NUM(i, 8)] = adr; - return c + 3; + if (cpu->swi_tab && !bypassBuiltinSWI) + { + //zero 25-dec-2008 - in arm, we were masking to 0x1F. + //this is probably safer since an invalid opcode could crash the emu + //zero 30-jun-2009 - but they say that the ideas 0xFF should crash the device... + //uint32_t swinum = cpu->instruction & 0xFF; + swinum &= 0x1F; + //fprintf(stderr, "%d ARM SWI %d\n",PROCNUM,swinum); + return cpu->swi_tab[swinum]() + 3; + } + else + { + /* we use an irq thats not in the irq tab, as + it was replaced due to a changed intVector */ + Status_Reg tmp = cpu->CPSR; + armcpu_switchMode(cpu, SVC); /* enter svc mode */ + cpu->R[14] = cpu->next_instruction; /* jump to swi Vector */ + cpu->SPSR = tmp; /* save old CPSR as new SPSR */ + cpu->CPSR.bits.T = 0; /* handle as ARM32 code */ + cpu->CPSR.bits.I = 1; + cpu->changeCPSR(); + cpu->R[15] = cpu->intVector + 0x08; + cpu->next_instruction = cpu->R[15]; + return 3; + } } -static u32 FASTCALL OP_B_COND(armcpu_t *cpu) +//----------------------------------------------------------------------------- +// Branch +//----------------------------------------------------------------------------- + +static inline uint32_t SIGNEEXT_IMM11(uint32_t i) { return (i & 0x7FF) | (BIT10(i) * 0xFFFFF800); } +static inline uint32_t SIGNEXTEND_11(uint32_t i) { return static_cast((static_cast(i) << 21) >> 21); } + +TEMPLATE static uint32_t FASTCALL OP_B_COND(uint32_t i) { - u32 i = cpu->instruction; - if(!TEST_COND((i>>8)&0xF, 0, cpu->CPSR)) - return 1; + if (!TEST_COND((i >> 8) & 0xF, 0, cpu->CPSR)) + return 1; - cpu->R[15] += ((s32)((s8)(i&0xFF)))<<1; - cpu->next_instruction = cpu->R[15]; - return 3; + cpu->R[15] += static_cast(static_cast(i & 0xFF)) << 1; + cpu->next_instruction = cpu->R[15]; + return 3; } -static u32 FASTCALL OP_SWI_THUMB(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_B_UNCOND(uint32_t i) { - if (((cpu->intVector != 0) ^ (cpu->proc_ID == ARMCPU_ARM9))) - { - /* we use an irq thats not in the irq tab, as - it was replaced duie to a changed intVector */ - Status_Reg tmp = cpu->CPSR; - armcpu_switchMode(cpu, SVC); /* enter svc mode */ - cpu->R[14] = cpu->R[15] - 4; /* jump to swi Vector */ - cpu->SPSR = tmp; /* save old CPSR as new SPSR */ - cpu->CPSR.bits.T = 0; /* handle as ARM32 code */ - cpu->CPSR.bits.I = cpu->SPSR.bits.I; /* keep int disable flag */ - cpu->R[15] = cpu->intVector + 0x08; - cpu->next_instruction = cpu->R[15]; - return 3; - } - else - { - u32 swinum = cpu->instruction & 0xFF; - return cpu->swi_tab[swinum](cpu) + 3; - } - //return 3; + cpu->R[15] += SIGNEEXT_IMM11(i) << 1; + cpu->next_instruction = cpu->R[15]; + return 1; } -#define SIGNEEXT_IMM11(i) (((i)&0x7FF) | (BIT10(i) * 0xFFFFF800)) +TEMPLATE static uint32_t FASTCALL OP_BLX(uint32_t i) +{ + cpu->R[15] = (cpu->R[14] + ((i & 0x7FF) << 1)) & 0xFFFFFFFC; + cpu->R[14] = cpu->next_instruction | 1; + cpu->next_instruction = cpu->R[15]; + cpu->CPSR.bits.T = 0; + return 3; +} -static u32 FASTCALL OP_B_UNCOND(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BL_10(uint32_t i) { - u32 i = cpu->instruction; - cpu->R[15] += (SIGNEEXT_IMM11(i)<<1); - cpu->next_instruction = cpu->R[15]; - return 3; + cpu->R[14] = cpu->R[15] + (SIGNEXTEND_11(i) << 12); + return 1; } -static u32 FASTCALL OP_BLX(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BL_11(uint32_t i) { - u32 i = cpu->instruction; - cpu->R[15] = (cpu->R[14] + ((i&0x7FF)<<1))&0xFFFFFFFC; - cpu->R[14] = cpu->next_instruction | 1; - cpu->next_instruction = cpu->R[15]; - cpu->CPSR.bits.T = 0; - return 3; + cpu->R[15] = (cpu->R[14] + ((i & 0x7FF) << 1)); + cpu->R[14] = cpu->next_instruction | 1; + cpu->next_instruction = cpu->R[15]; + return 4; } -static u32 FASTCALL OP_BL_10(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BX_THUMB(uint32_t i) { - u32 i = cpu->instruction; - cpu->R[14] = cpu->R[15] + (SIGNEEXT_IMM11(i)<<12); - return 1; + // When using PC as operand with BX opcode, switch to ARM state and jump to (instruct_adr+4) + // Reference: http://nocash.emubase.de/gbatek.htm#thumb5hiregisteroperationsbranchexchange + +#if 0 + if (REG_POS(i, 3) == 15) + { + cpu->CPSR.bits.T = 0; + cpu->R[15] &= 0xFFFFFFFC; + cpu->next_instruction = cpu->R[15]; + } + else + { + uint32_t Rm = cpu->R[REG_POS(i, 3)]; + + cpu->CPSR.bits.T = BIT0(Rm); + cpu->R[15] = (Rm & 0xFFFFFFFE); + cpu->next_instruction = cpu->R[15]; + } +#else + uint32_t Rm = cpu->R[REG_POS(i, 3)]; + //----- ARM_REF: + //----- Register 15 can be specified for . If this is done, R15 is read as normal for Thumb code, + //----- that is, it is the address of the BX instruction itself plus 4. If the BX instruction is at a + //----- word-aligned address, this results in a branch to the next word, executing in ARM state. + //----- However, if the BX instruction is not at a word-aligned address, this means that the results of + //----- the instruction are UNPREDICTABLE (because the value read for R15 has bits[1:0]==0b10). + if (Rm == 15) + { + fprintf(stderr, "THUMB%c: BX using PC as operand\n", PROCNUM?'7':'9'); + //emu_halt(); + } + cpu->CPSR.bits.T = BIT0(Rm); + cpu->R[15] = Rm & (0xFFFFFFFC | (1 << cpu->CPSR.bits.T)); + cpu->next_instruction = cpu->R[15]; +#endif + return 3; } -static u32 FASTCALL OP_BL_THUMB(armcpu_t *cpu) +TEMPLATE static uint32_t FASTCALL OP_BLX_THUMB(uint32_t i) { - u32 i = cpu->instruction; - cpu->R[15] = (cpu->R[14] + ((i&0x7FF)<<1)); - cpu->R[14] = cpu->next_instruction | 1; - cpu->next_instruction = cpu->R[15]; - return 3; + uint32_t Rm = cpu->R[REG_POS(i, 3)]; + cpu->CPSR.bits.T = BIT0(Rm); + cpu->R[15] = Rm & 0xFFFFFFFE; + cpu->R[14] = cpu->next_instruction | 1; + cpu->next_instruction = cpu->R[15]; + + return 4; } -#define TYPE_RETOUR u32 -#define CALLTYPE FASTCALL -#define PARAMETRES armcpu_t *cpu -#define NOM_THUMB_TAB thumb_instructions_set +//----------------------------------------------------------------------------- +// The End +//----------------------------------------------------------------------------- +const OpFunc thumb_instructions_set[2][1024] = +{ + { +#define TABDECL(x) x<0> +#include "thumb_tabdef.inc" +#undef TABDECL + }, { +#define TABDECL(x) x<1> #include "thumb_tabdef.inc" +#undef TABDECL + } +}; diff -Nru audacious-plugins-4.1/src/xsf/desmume/thumb_tabdef.inc audacious-plugins-4.3.1/src/xsf/desmume/thumb_tabdef.inc --- audacious-plugins-4.1/src/xsf/desmume/thumb_tabdef.inc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/thumb_tabdef.inc 2023-04-29 20:17:32.000000000 +0000 @@ -1,1111 +1,1105 @@ -/* Copyright (C) 2006 yopyop - yopyop156@ifrance.com - yopyop156.ifrance.com - - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +/* + Copyright (C) 2006 yopyop + Copyright (C) 2007-2012 DeSmuME team + This file 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 file 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 the this software. If not, see . */ -TYPE_RETOUR (* CALLTYPE NOM_THUMB_TAB[1024])(PARAMETRES)={ - OP_LSL_0, //00 0000 0000 - OP_LSL, //00 0000 0001 - OP_LSL, //00 0000 0010 - OP_LSL, //00 0000 0011 - OP_LSL, //00 0000 0100 - OP_LSL, //00 0000 0101 - OP_LSL, //00 0000 0110 - OP_LSL, //00 0000 0111 - OP_LSL, //00 0000 1000 - OP_LSL, //00 0000 1001 - OP_LSL, //00 0000 1010 - OP_LSL, //00 0000 1011 - OP_LSL, //00 0000 1100 - OP_LSL, //00 0000 1101 - OP_LSL, //00 0000 1110 - OP_LSL, //00 0000 1111 - - OP_LSL, //00 0001 0000 - OP_LSL, //00 0001 0001 - OP_LSL, //00 0001 0010 - OP_LSL, //00 0001 0011 - OP_LSL, //00 0001 0100 - OP_LSL, //00 0001 0101 - OP_LSL, //00 0001 0110 - OP_LSL, //00 0001 0111 - OP_LSL, //00 0001 1000 - OP_LSL, //00 0001 1001 - OP_LSL, //00 0001 1010 - OP_LSL, //00 0001 1011 - OP_LSL, //00 0001 1100 - OP_LSL, //00 0001 1101 - OP_LSL, //00 0001 1110 - OP_LSL, //00 0001 1111 - - OP_LSR_0, //00 0010 0000 - OP_LSR, //00 0010 0001 - OP_LSR, //00 0010 0010 - OP_LSR, //00 0010 0011 - OP_LSR, //00 0010 0100 - OP_LSR, //00 0010 0101 - OP_LSR, //00 0010 0110 - OP_LSR, //00 0010 0111 - OP_LSR, //00 0010 1000 - OP_LSR, //00 0010 1001 - OP_LSR, //00 0010 1010 - OP_LSR, //00 0010 1011 - OP_LSR, //00 0010 1100 - OP_LSR, //00 0010 1101 - OP_LSR, //00 0010 1110 - OP_LSR, //00 0010 1111 - - OP_LSR, //00 0011 0000 - OP_LSR, //00 0011 0001 - OP_LSR, //00 0011 0010 - OP_LSR, //00 0011 0011 - OP_LSR, //00 0011 0100 - OP_LSR, //00 0011 0101 - OP_LSR, //00 0011 0110 - OP_LSR, //00 0011 0111 - OP_LSR, //00 0011 1000 - OP_LSR, //00 0011 1001 - OP_LSR, //00 0011 1010 - OP_LSR, //00 0011 1011 - OP_LSR, //00 0011 1100 - OP_LSR, //00 0011 1101 - OP_LSR, //00 0011 1110 - OP_LSR, //00 0011 1111 - - OP_ASR_0, //00 0100 0000 - OP_ASR, //00 0100 0001 - OP_ASR, //00 0100 0010 - OP_ASR, //00 0100 0011 - OP_ASR, //00 0100 0100 - OP_ASR, //00 0100 0101 - OP_ASR, //00 0100 0110 - OP_ASR, //00 0100 0111 - OP_ASR, //00 0100 1000 - OP_ASR, //00 0100 1001 - OP_ASR, //00 0100 1010 - OP_ASR, //00 0100 1011 - OP_ASR, //00 0100 1100 - OP_ASR, //00 0100 1101 - OP_ASR, //00 0100 1110 - OP_ASR, //00 0100 1111 - - OP_ASR, //00 0101 0000 - OP_ASR, //00 0101 0001 - OP_ASR, //00 0101 0010 - OP_ASR, //00 0101 0011 - OP_ASR, //00 0101 0100 - OP_ASR, //00 0101 0101 - OP_ASR, //00 0101 0110 - OP_ASR, //00 0101 0111 - OP_ASR, //00 0101 1000 - OP_ASR, //00 0101 1001 - OP_ASR, //00 0101 1010 - OP_ASR, //00 0101 1011 - OP_ASR, //00 0101 1100 - OP_ASR, //00 0101 1101 - OP_ASR, //00 0101 1110 - OP_ASR, //00 0101 1111 - - OP_ADD_REG, //00 0110 0000 - OP_ADD_REG, //00 0110 0001 - OP_ADD_REG, //00 0110 0010 - OP_ADD_REG, //00 0110 0011 - OP_ADD_REG, //00 0110 0100 - OP_ADD_REG, //00 0110 0101 - OP_ADD_REG, //00 0110 0110 - OP_ADD_REG, //00 0110 0111 - OP_SUB_REG, //00 0110 1000 - OP_SUB_REG, //00 0110 1001 - OP_SUB_REG, //00 0110 1010 - OP_SUB_REG, //00 0110 1011 - OP_SUB_REG, //00 0110 1100 - OP_SUB_REG, //00 0110 1101 - OP_SUB_REG, //00 0110 1110 - OP_SUB_REG, //00 0110 1111 - - OP_ADD_IMM3, //00 0111 0000 - OP_ADD_IMM3, //00 0111 0001 - OP_ADD_IMM3, //00 0111 0010 - OP_ADD_IMM3, //00 0111 0011 - OP_ADD_IMM3, //00 0111 0100 - OP_ADD_IMM3, //00 0111 0101 - OP_ADD_IMM3, //00 0111 0110 - OP_ADD_IMM3, //00 0111 0111 - OP_SUB_IMM3, //00 0111 1000 - OP_SUB_IMM3, //00 0111 1001 - OP_SUB_IMM3, //00 0111 1010 - OP_SUB_IMM3, //00 0111 1011 - OP_SUB_IMM3, //00 0111 1100 - OP_SUB_IMM3, //00 0111 1101 - OP_SUB_IMM3, //00 0111 1110 - OP_SUB_IMM3, //00 0111 1111 - - OP_MOV_IMM8, //00 1000 0000 - OP_MOV_IMM8, //00 1000 0001 - OP_MOV_IMM8, //00 1000 0010 - OP_MOV_IMM8, //00 1000 0011 - OP_MOV_IMM8, //00 1000 0100 - OP_MOV_IMM8, //00 1000 0101 - OP_MOV_IMM8, //00 1000 0110 - OP_MOV_IMM8, //00 1000 0111 - OP_MOV_IMM8, //00 1000 1000 - OP_MOV_IMM8, //00 1000 1001 - OP_MOV_IMM8, //00 1000 1010 - OP_MOV_IMM8, //00 1000 1011 - OP_MOV_IMM8, //00 1000 1100 - OP_MOV_IMM8, //00 1000 1101 - OP_MOV_IMM8, //00 1000 1110 - OP_MOV_IMM8, //00 1000 1111 - - OP_MOV_IMM8, //00 1001 0000 - OP_MOV_IMM8, //00 1001 0001 - OP_MOV_IMM8, //00 1001 0010 - OP_MOV_IMM8, //00 1001 0011 - OP_MOV_IMM8, //00 1001 0100 - OP_MOV_IMM8, //00 1001 0101 - OP_MOV_IMM8, //00 1001 0110 - OP_MOV_IMM8, //00 1001 0111 - OP_MOV_IMM8, //00 1001 1000 - OP_MOV_IMM8, //00 1001 1001 - OP_MOV_IMM8, //00 1001 1010 - OP_MOV_IMM8, //00 1001 1011 - OP_MOV_IMM8, //00 1001 1100 - OP_MOV_IMM8, //00 1001 1101 - OP_MOV_IMM8, //00 1001 1110 - OP_MOV_IMM8, //00 1001 1111 - - OP_CMP_IMM8, //00 1010 0000 - OP_CMP_IMM8, //00 1010 0001 - OP_CMP_IMM8, //00 1010 0010 - OP_CMP_IMM8, //00 1010 0011 - OP_CMP_IMM8, //00 1010 0100 - OP_CMP_IMM8, //00 1010 0101 - OP_CMP_IMM8, //00 1010 0110 - OP_CMP_IMM8, //00 1010 0111 - OP_CMP_IMM8, //00 1010 1000 - OP_CMP_IMM8, //00 1010 1001 - OP_CMP_IMM8, //00 1010 1010 - OP_CMP_IMM8, //00 1010 1011 - OP_CMP_IMM8, //00 1010 1100 - OP_CMP_IMM8, //00 1010 1101 - OP_CMP_IMM8, //00 1010 1110 - OP_CMP_IMM8, //00 1010 1111 - - OP_CMP_IMM8, //00 1011 0000 - OP_CMP_IMM8, //00 1011 0001 - OP_CMP_IMM8, //00 1011 0010 - OP_CMP_IMM8, //00 1011 0011 - OP_CMP_IMM8, //00 1011 0100 - OP_CMP_IMM8, //00 1011 0101 - OP_CMP_IMM8, //00 1011 0110 - OP_CMP_IMM8, //00 1011 0111 - OP_CMP_IMM8, //00 1011 1000 - OP_CMP_IMM8, //00 1011 1001 - OP_CMP_IMM8, //00 1011 1010 - OP_CMP_IMM8, //00 1011 1011 - OP_CMP_IMM8, //00 1011 1100 - OP_CMP_IMM8, //00 1011 1101 - OP_CMP_IMM8, //00 1011 1110 - OP_CMP_IMM8, //00 1011 1111 - - OP_ADD_IMM8, //00 1100 0000 - OP_ADD_IMM8, //00 1100 0001 - OP_ADD_IMM8, //00 1100 0010 - OP_ADD_IMM8, //00 1100 0011 - OP_ADD_IMM8, //00 1100 0100 - OP_ADD_IMM8, //00 1100 0101 - OP_ADD_IMM8, //00 1100 0110 - OP_ADD_IMM8, //00 1100 0111 - OP_ADD_IMM8, //00 1100 1000 - OP_ADD_IMM8, //00 1100 1001 - OP_ADD_IMM8, //00 1100 1010 - OP_ADD_IMM8, //00 1100 1011 - OP_ADD_IMM8, //00 1100 1100 - OP_ADD_IMM8, //00 1100 1101 - OP_ADD_IMM8, //00 1100 1110 - OP_ADD_IMM8, //00 1100 1111 - - OP_ADD_IMM8, //00 1101 0000 - OP_ADD_IMM8, //00 1101 0001 - OP_ADD_IMM8, //00 1101 0010 - OP_ADD_IMM8, //00 1101 0011 - OP_ADD_IMM8, //00 1101 0100 - OP_ADD_IMM8, //00 1101 0101 - OP_ADD_IMM8, //00 1101 0110 - OP_ADD_IMM8, //00 1101 0111 - OP_ADD_IMM8, //00 1101 1000 - OP_ADD_IMM8, //00 1101 1001 - OP_ADD_IMM8, //00 1101 1010 - OP_ADD_IMM8, //00 1101 1011 - OP_ADD_IMM8, //00 1101 1100 - OP_ADD_IMM8, //00 1101 1101 - OP_ADD_IMM8, //00 1101 1110 - OP_ADD_IMM8, //00 1101 1111 - - OP_SUB_IMM8, //00 1110 0000 - OP_SUB_IMM8, //00 1110 0001 - OP_SUB_IMM8, //00 1110 0010 - OP_SUB_IMM8, //00 1110 0011 - OP_SUB_IMM8, //00 1110 0100 - OP_SUB_IMM8, //00 1110 0101 - OP_SUB_IMM8, //00 1110 0110 - OP_SUB_IMM8, //00 1110 0111 - OP_SUB_IMM8, //00 1110 1000 - OP_SUB_IMM8, //00 1110 1001 - OP_SUB_IMM8, //00 1110 1010 - OP_SUB_IMM8, //00 1110 1011 - OP_SUB_IMM8, //00 1110 1100 - OP_SUB_IMM8, //00 1110 1101 - OP_SUB_IMM8, //00 1110 1110 - OP_SUB_IMM8, //00 1110 1111 - - OP_SUB_IMM8, //00 1111 0000 - OP_SUB_IMM8, //00 1111 0001 - OP_SUB_IMM8, //00 1111 0010 - OP_SUB_IMM8, //00 1111 0011 - OP_SUB_IMM8, //00 1111 0100 - OP_SUB_IMM8, //00 1111 0101 - OP_SUB_IMM8, //00 1111 0110 - OP_SUB_IMM8, //00 1111 0111 - OP_SUB_IMM8, //00 1111 1000 - OP_SUB_IMM8, //00 1111 1001 - OP_SUB_IMM8, //00 1111 1010 - OP_SUB_IMM8, //00 1111 1011 - OP_SUB_IMM8, //00 1111 1100 - OP_SUB_IMM8, //00 1111 1101 - OP_SUB_IMM8, //00 1111 1110 - OP_SUB_IMM8, //00 1111 1111 - - OP_AND, //01 0000 0000 - OP_EOR, //01 0000 0001 - OP_LSL_REG, //01 0000 0010 - OP_LSR_REG, //01 0000 0011 - OP_ASR_REG, //01 0000 0100 - OP_ADC_REG, //01 0000 0101 - OP_SBC_REG, //01 0000 0110 - OP_ROR_REG, //01 0000 0111 - OP_TST, //01 0000 1000 - OP_NEG, //01 0000 1001 - OP_CMP, //01 0000 1010 - OP_CMN, //01 0000 1011 - OP_ORR, //01 0000 1100 - OP_MUL_REG, //01 0000 1101 - OP_BIC, //01 0000 1110 - OP_MVN, //01 0000 1111 - - OP_ADD_SPE, //01 0001 0000 - OP_ADD_SPE, //01 0001 0001 - OP_ADD_SPE, //01 0001 0010 - OP_ADD_SPE, //01 0001 0011 - OP_CMP_SPE, //01 0001 0100 - OP_CMP_SPE, //01 0001 0101 - OP_CMP_SPE, //01 0001 0110 - OP_CMP_SPE, //01 0001 0111 - OP_MOV_SPE, //01 0001 1000 - OP_MOV_SPE, //01 0001 1001 - OP_MOV_SPE, //01 0001 1010 - OP_MOV_SPE, //01 0001 1011 - OP_BX_THUMB, //01 0001 1100 - OP_BX_THUMB, //01 0001 1101 - OP_BLX_THUMB, //01 0001 1110 - OP_BLX_THUMB, //01 0001 1111 - - OP_LDR_PCREL, //01 0010 0000 - OP_LDR_PCREL, //01 0010 0001 - OP_LDR_PCREL, //01 0010 0010 - OP_LDR_PCREL, //01 0010 0011 - OP_LDR_PCREL, //01 0010 0100 - OP_LDR_PCREL, //01 0010 0101 - OP_LDR_PCREL, //01 0010 0110 - OP_LDR_PCREL, //01 0010 0111 - OP_LDR_PCREL, //01 0010 1000 - OP_LDR_PCREL, //01 0010 1001 - OP_LDR_PCREL, //01 0010 1010 - OP_LDR_PCREL, //01 0010 1011 - OP_LDR_PCREL, //01 0010 1100 - OP_LDR_PCREL, //01 0010 1101 - OP_LDR_PCREL, //01 0010 1110 - OP_LDR_PCREL, //01 0010 1111 - - OP_LDR_PCREL, //01 0011 0000 - OP_LDR_PCREL, //01 0011 0001 - OP_LDR_PCREL, //01 0011 0010 - OP_LDR_PCREL, //01 0011 0011 - OP_LDR_PCREL, //01 0011 0100 - OP_LDR_PCREL, //01 0011 0101 - OP_LDR_PCREL, //01 0011 0110 - OP_LDR_PCREL, //01 0011 0111 - OP_LDR_PCREL, //01 0011 1000 - OP_LDR_PCREL, //01 0011 1001 - OP_LDR_PCREL, //01 0011 1010 - OP_LDR_PCREL, //01 0011 1011 - OP_LDR_PCREL, //01 0011 1100 - OP_LDR_PCREL, //01 0011 1101 - OP_LDR_PCREL, //01 0011 1110 - OP_LDR_PCREL, //01 0011 1111 - - OP_STR_REG_OFF, //01 0100 0000 - OP_STR_REG_OFF, //01 0100 0001 - OP_STR_REG_OFF, //01 0100 0010 - OP_STR_REG_OFF, //01 0100 0011 - OP_STR_REG_OFF, //01 0100 0100 - OP_STR_REG_OFF, //01 0100 0101 - OP_STR_REG_OFF, //01 0100 0110 - OP_STR_REG_OFF, //01 0100 0111 - OP_STRH_REG_OFF, //01 0100 1000 - OP_STRH_REG_OFF, //01 0100 1001 - OP_STRH_REG_OFF, //01 0100 1010 - OP_STRH_REG_OFF, //01 0100 1011 - OP_STRH_REG_OFF, //01 0100 1100 - OP_STRH_REG_OFF, //01 0100 1101 - OP_STRH_REG_OFF, //01 0100 1110 - OP_STRH_REG_OFF, //01 0100 1111 - - OP_STRB_REG_OFF, //01 0101 0000 - OP_STRB_REG_OFF, //01 0101 0001 - OP_STRB_REG_OFF, //01 0101 0010 - OP_STRB_REG_OFF, //01 0101 0011 - OP_STRB_REG_OFF, //01 0101 0100 - OP_STRB_REG_OFF, //01 0101 0101 - OP_STRB_REG_OFF, //01 0101 0110 - OP_STRB_REG_OFF, //01 0101 0111 - OP_LDRSB_REG_OFF, //01 0101 1000 - OP_LDRSB_REG_OFF, //01 0101 1001 - OP_LDRSB_REG_OFF, //01 0101 1010 - OP_LDRSB_REG_OFF, //01 0101 1011 - OP_LDRSB_REG_OFF, //01 0101 1100 - OP_LDRSB_REG_OFF, //01 0101 1101 - OP_LDRSB_REG_OFF, //01 0101 1110 - OP_LDRSB_REG_OFF, //01 0101 1111 - - OP_LDR_REG_OFF, //01 0110 0000 - OP_LDR_REG_OFF, //01 0110 0001 - OP_LDR_REG_OFF, //01 0110 0010 - OP_LDR_REG_OFF, //01 0110 0011 - OP_LDR_REG_OFF, //01 0110 0100 - OP_LDR_REG_OFF, //01 0110 0101 - OP_LDR_REG_OFF, //01 0110 0110 - OP_LDR_REG_OFF, //01 0110 0111 - OP_LDRH_REG_OFF, //01 0110 1000 - OP_LDRH_REG_OFF, //01 0110 1001 - OP_LDRH_REG_OFF, //01 0110 1010 - OP_LDRH_REG_OFF, //01 0110 1011 - OP_LDRH_REG_OFF, //01 0110 1100 - OP_LDRH_REG_OFF, //01 0110 1101 - OP_LDRH_REG_OFF, //01 0110 1110 - OP_LDRH_REG_OFF, //01 0110 1111 - - OP_LDRB_REG_OFF, //01 0111 0000 - OP_LDRB_REG_OFF, //01 0111 0001 - OP_LDRB_REG_OFF, //01 0111 0010 - OP_LDRB_REG_OFF, //01 0111 0011 - OP_LDRB_REG_OFF, //01 0111 0100 - OP_LDRB_REG_OFF, //01 0111 0101 - OP_LDRB_REG_OFF, //01 0111 0110 - OP_LDRB_REG_OFF, //01 0111 0111 - OP_LDRSH_REG_OFF, //01 0111 1000 - OP_LDRSH_REG_OFF, //01 0111 1001 - OP_LDRSH_REG_OFF, //01 0111 1010 - OP_LDRSH_REG_OFF, //01 0111 1011 - OP_LDRSH_REG_OFF, //01 0111 1100 - OP_LDRSH_REG_OFF, //01 0111 1101 - OP_LDRSH_REG_OFF, //01 0111 1110 - OP_LDRSH_REG_OFF, //01 0111 1111 - - OP_STR_IMM_OFF, //01 1000 0000 - OP_STR_IMM_OFF, //01 1000 0001 - OP_STR_IMM_OFF, //01 1000 0010 - OP_STR_IMM_OFF, //01 1000 0011 - OP_STR_IMM_OFF, //01 1000 0100 - OP_STR_IMM_OFF, //01 1000 0101 - OP_STR_IMM_OFF, //01 1000 0110 - OP_STR_IMM_OFF, //01 1000 0111 - OP_STR_IMM_OFF, //01 1000 1000 - OP_STR_IMM_OFF, //01 1000 1001 - OP_STR_IMM_OFF, //01 1000 1010 - OP_STR_IMM_OFF, //01 1000 1011 - OP_STR_IMM_OFF, //01 1000 1100 - OP_STR_IMM_OFF, //01 1000 1101 - OP_STR_IMM_OFF, //01 1000 1110 - OP_STR_IMM_OFF, //01 1000 1111 - - OP_STR_IMM_OFF, //01 1001 0000 - OP_STR_IMM_OFF, //01 1001 0001 - OP_STR_IMM_OFF, //01 1001 0010 - OP_STR_IMM_OFF, //01 1001 0011 - OP_STR_IMM_OFF, //01 1001 0100 - OP_STR_IMM_OFF, //01 1001 0101 - OP_STR_IMM_OFF, //01 1001 0110 - OP_STR_IMM_OFF, //01 1001 0111 - OP_STR_IMM_OFF, //01 1001 1000 - OP_STR_IMM_OFF, //01 1001 1001 - OP_STR_IMM_OFF, //01 1001 1010 - OP_STR_IMM_OFF, //01 1001 1011 - OP_STR_IMM_OFF, //01 1001 1100 - OP_STR_IMM_OFF, //01 1001 1101 - OP_STR_IMM_OFF, //01 1001 1110 - OP_STR_IMM_OFF, //01 1001 1111 - - OP_LDR_IMM_OFF, //01 1010 0000 - OP_LDR_IMM_OFF, //01 1010 0001 - OP_LDR_IMM_OFF, //01 1010 0010 - OP_LDR_IMM_OFF, //01 1010 0011 - OP_LDR_IMM_OFF, //01 1010 0100 - OP_LDR_IMM_OFF, //01 1010 0101 - OP_LDR_IMM_OFF, //01 1010 0110 - OP_LDR_IMM_OFF, //01 1010 0111 - OP_LDR_IMM_OFF, //01 1010 1000 - OP_LDR_IMM_OFF, //01 1010 1001 - OP_LDR_IMM_OFF, //01 1010 1010 - OP_LDR_IMM_OFF, //01 1010 1011 - OP_LDR_IMM_OFF, //01 1010 1100 - OP_LDR_IMM_OFF, //01 1010 1101 - OP_LDR_IMM_OFF, //01 1010 1110 - OP_LDR_IMM_OFF, //01 1010 1111 - - OP_LDR_IMM_OFF, //01 1011 0000 - OP_LDR_IMM_OFF, //01 1011 0001 - OP_LDR_IMM_OFF, //01 1011 0010 - OP_LDR_IMM_OFF, //01 1011 0011 - OP_LDR_IMM_OFF, //01 1011 0100 - OP_LDR_IMM_OFF, //01 1011 0101 - OP_LDR_IMM_OFF, //01 1011 0110 - OP_LDR_IMM_OFF, //01 1011 0111 - OP_LDR_IMM_OFF, //01 1011 1000 - OP_LDR_IMM_OFF, //01 1011 1001 - OP_LDR_IMM_OFF, //01 1011 1010 - OP_LDR_IMM_OFF, //01 1011 1011 - OP_LDR_IMM_OFF, //01 1011 1100 - OP_LDR_IMM_OFF, //01 1011 1101 - OP_LDR_IMM_OFF, //01 1011 1110 - OP_LDR_IMM_OFF, //01 1011 1111 - - OP_STRB_IMM_OFF, //01 1100 0000 - OP_STRB_IMM_OFF, //01 1100 0001 - OP_STRB_IMM_OFF, //01 1100 0010 - OP_STRB_IMM_OFF, //01 1100 0011 - OP_STRB_IMM_OFF, //01 1100 0100 - OP_STRB_IMM_OFF, //01 1100 0101 - OP_STRB_IMM_OFF, //01 1100 0110 - OP_STRB_IMM_OFF, //01 1100 0111 - OP_STRB_IMM_OFF, //01 1100 1000 - OP_STRB_IMM_OFF, //01 1100 1001 - OP_STRB_IMM_OFF, //01 1100 1010 - OP_STRB_IMM_OFF, //01 1100 1011 - OP_STRB_IMM_OFF, //01 1100 1100 - OP_STRB_IMM_OFF, //01 1100 1101 - OP_STRB_IMM_OFF, //01 1100 1110 - OP_STRB_IMM_OFF, //01 1100 1111 - - OP_STRB_IMM_OFF, //01 1101 0000 - OP_STRB_IMM_OFF, //01 1101 0001 - OP_STRB_IMM_OFF, //01 1101 0010 - OP_STRB_IMM_OFF, //01 1101 0011 - OP_STRB_IMM_OFF, //01 1101 0100 - OP_STRB_IMM_OFF, //01 1101 0101 - OP_STRB_IMM_OFF, //01 1101 0110 - OP_STRB_IMM_OFF, //01 1101 0111 - OP_STRB_IMM_OFF, //01 1101 1000 - OP_STRB_IMM_OFF, //01 1101 1001 - OP_STRB_IMM_OFF, //01 1101 1010 - OP_STRB_IMM_OFF, //01 1101 1011 - OP_STRB_IMM_OFF, //01 1101 1100 - OP_STRB_IMM_OFF, //01 1101 1101 - OP_STRB_IMM_OFF, //01 1101 1110 - OP_STRB_IMM_OFF, //01 1101 1111 - - OP_LDRB_IMM_OFF, //01 1110 0000 - OP_LDRB_IMM_OFF, //01 1110 0001 - OP_LDRB_IMM_OFF, //01 1110 0010 - OP_LDRB_IMM_OFF, //01 1110 0011 - OP_LDRB_IMM_OFF, //01 1110 0100 - OP_LDRB_IMM_OFF, //01 1110 0101 - OP_LDRB_IMM_OFF, //01 1110 0110 - OP_LDRB_IMM_OFF, //01 1110 0111 - OP_LDRB_IMM_OFF, //01 1110 1000 - OP_LDRB_IMM_OFF, //01 1110 1001 - OP_LDRB_IMM_OFF, //01 1110 1010 - OP_LDRB_IMM_OFF, //01 1110 1011 - OP_LDRB_IMM_OFF, //01 1110 1100 - OP_LDRB_IMM_OFF, //01 1110 1101 - OP_LDRB_IMM_OFF, //01 1110 1110 - OP_LDRB_IMM_OFF, //01 1110 1111 - - OP_LDRB_IMM_OFF, //01 1111 0000 - OP_LDRB_IMM_OFF, //01 1111 0001 - OP_LDRB_IMM_OFF, //01 1111 0010 - OP_LDRB_IMM_OFF, //01 1111 0011 - OP_LDRB_IMM_OFF, //01 1111 0100 - OP_LDRB_IMM_OFF, //01 1111 0101 - OP_LDRB_IMM_OFF, //01 1111 0110 - OP_LDRB_IMM_OFF, //01 1111 0111 - OP_LDRB_IMM_OFF, //01 1111 1000 - OP_LDRB_IMM_OFF, //01 1111 1001 - OP_LDRB_IMM_OFF, //01 1111 1010 - OP_LDRB_IMM_OFF, //01 1111 1011 - OP_LDRB_IMM_OFF, //01 1111 1100 - OP_LDRB_IMM_OFF, //01 1111 1101 - OP_LDRB_IMM_OFF, //01 1111 1110 - OP_LDRB_IMM_OFF, //01 1111 1111 - - OP_STRH_IMM_OFF, //10 0000 0000 - OP_STRH_IMM_OFF, //10 0000 0001 - OP_STRH_IMM_OFF, //10 0000 0010 - OP_STRH_IMM_OFF, //10 0000 0011 - OP_STRH_IMM_OFF, //10 0000 0100 - OP_STRH_IMM_OFF, //10 0000 0101 - OP_STRH_IMM_OFF, //10 0000 0110 - OP_STRH_IMM_OFF, //10 0000 0111 - OP_STRH_IMM_OFF, //10 0000 1000 - OP_STRH_IMM_OFF, //10 0000 1001 - OP_STRH_IMM_OFF, //10 0000 1010 - OP_STRH_IMM_OFF, //10 0000 1011 - OP_STRH_IMM_OFF, //10 0000 1100 - OP_STRH_IMM_OFF, //10 0000 1101 - OP_STRH_IMM_OFF, //10 0000 1110 - OP_STRH_IMM_OFF, //10 0000 1111 - - OP_STRH_IMM_OFF, //10 0001 0000 - OP_STRH_IMM_OFF, //10 0001 0001 - OP_STRH_IMM_OFF, //10 0001 0010 - OP_STRH_IMM_OFF, //10 0001 0011 - OP_STRH_IMM_OFF, //10 0001 0100 - OP_STRH_IMM_OFF, //10 0001 0101 - OP_STRH_IMM_OFF, //10 0001 0110 - OP_STRH_IMM_OFF, //10 0001 0111 - OP_STRH_IMM_OFF, //10 0001 1000 - OP_STRH_IMM_OFF, //10 0001 1001 - OP_STRH_IMM_OFF, //10 0001 1010 - OP_STRH_IMM_OFF, //10 0001 1011 - OP_STRH_IMM_OFF, //10 0001 1100 - OP_STRH_IMM_OFF, //10 0001 1101 - OP_STRH_IMM_OFF, //10 0001 1110 - OP_STRH_IMM_OFF, //10 0001 1111 - - OP_LDRH_IMM_OFF, //10 0010 0000 - OP_LDRH_IMM_OFF, //10 0010 0001 - OP_LDRH_IMM_OFF, //10 0010 0010 - OP_LDRH_IMM_OFF, //10 0010 0011 - OP_LDRH_IMM_OFF, //10 0010 0100 - OP_LDRH_IMM_OFF, //10 0010 0101 - OP_LDRH_IMM_OFF, //10 0010 0110 - OP_LDRH_IMM_OFF, //10 0010 0111 - OP_LDRH_IMM_OFF, //10 0010 1000 - OP_LDRH_IMM_OFF, //10 0010 1001 - OP_LDRH_IMM_OFF, //10 0010 1010 - OP_LDRH_IMM_OFF, //10 0010 1011 - OP_LDRH_IMM_OFF, //10 0010 1100 - OP_LDRH_IMM_OFF, //10 0010 1101 - OP_LDRH_IMM_OFF, //10 0010 1110 - OP_LDRH_IMM_OFF, //10 0010 1111 - - OP_LDRH_IMM_OFF, //10 0011 0000 - OP_LDRH_IMM_OFF, //10 0011 0001 - OP_LDRH_IMM_OFF, //10 0011 0010 - OP_LDRH_IMM_OFF, //10 0011 0011 - OP_LDRH_IMM_OFF, //10 0011 0100 - OP_LDRH_IMM_OFF, //10 0011 0101 - OP_LDRH_IMM_OFF, //10 0011 0110 - OP_LDRH_IMM_OFF, //10 0011 0111 - OP_LDRH_IMM_OFF, //10 0011 1000 - OP_LDRH_IMM_OFF, //10 0011 1001 - OP_LDRH_IMM_OFF, //10 0011 1010 - OP_LDRH_IMM_OFF, //10 0011 1011 - OP_LDRH_IMM_OFF, //10 0011 1100 - OP_LDRH_IMM_OFF, //10 0011 1101 - OP_LDRH_IMM_OFF, //10 0011 1110 - OP_LDRH_IMM_OFF, //10 0011 1111 - - OP_STR_SPREL, //10 0100 0000 - OP_STR_SPREL, //10 0100 0001 - OP_STR_SPREL, //10 0100 0010 - OP_STR_SPREL, //10 0100 0011 - OP_STR_SPREL, //10 0100 0100 - OP_STR_SPREL, //10 0100 0101 - OP_STR_SPREL, //10 0100 0110 - OP_STR_SPREL, //10 0100 0111 - OP_STR_SPREL, //10 0100 1000 - OP_STR_SPREL, //10 0100 1001 - OP_STR_SPREL, //10 0100 1010 - OP_STR_SPREL, //10 0100 1011 - OP_STR_SPREL, //10 0100 1100 - OP_STR_SPREL, //10 0100 1101 - OP_STR_SPREL, //10 0100 1110 - OP_STR_SPREL, //10 0100 1111 - - OP_STR_SPREL, //10 0101 0000 - OP_STR_SPREL, //10 0101 0001 - OP_STR_SPREL, //10 0101 0010 - OP_STR_SPREL, //10 0101 0011 - OP_STR_SPREL, //10 0101 0100 - OP_STR_SPREL, //10 0101 0101 - OP_STR_SPREL, //10 0101 0110 - OP_STR_SPREL, //10 0101 0111 - OP_STR_SPREL, //10 0101 1000 - OP_STR_SPREL, //10 0101 1001 - OP_STR_SPREL, //10 0101 1010 - OP_STR_SPREL, //10 0101 1011 - OP_STR_SPREL, //10 0101 1100 - OP_STR_SPREL, //10 0101 1101 - OP_STR_SPREL, //10 0101 1110 - OP_STR_SPREL, //10 0101 1111 - - OP_LDR_SPREL, //10 0110 0000 - OP_LDR_SPREL, //10 0110 0001 - OP_LDR_SPREL, //10 0110 0010 - OP_LDR_SPREL, //10 0110 0011 - OP_LDR_SPREL, //10 0110 0100 - OP_LDR_SPREL, //10 0110 0101 - OP_LDR_SPREL, //10 0110 0110 - OP_LDR_SPREL, //10 0110 0111 - OP_LDR_SPREL, //10 0110 1000 - OP_LDR_SPREL, //10 0110 1001 - OP_LDR_SPREL, //10 0110 1010 - OP_LDR_SPREL, //10 0110 1011 - OP_LDR_SPREL, //10 0110 1100 - OP_LDR_SPREL, //10 0110 1101 - OP_LDR_SPREL, //10 0110 1110 - OP_LDR_SPREL, //10 0110 1111 - - OP_LDR_SPREL, //10 0111 0000 - OP_LDR_SPREL, //10 0111 0001 - OP_LDR_SPREL, //10 0111 0010 - OP_LDR_SPREL, //10 0111 0011 - OP_LDR_SPREL, //10 0111 0100 - OP_LDR_SPREL, //10 0111 0101 - OP_LDR_SPREL, //10 0111 0110 - OP_LDR_SPREL, //10 0111 0111 - OP_LDR_SPREL, //10 0111 1000 - OP_LDR_SPREL, //10 0111 1001 - OP_LDR_SPREL, //10 0111 1010 - OP_LDR_SPREL, //10 0111 1011 - OP_LDR_SPREL, //10 0111 1100 - OP_LDR_SPREL, //10 0111 1101 - OP_LDR_SPREL, //10 0111 1110 - OP_LDR_SPREL, //10 0111 1111 - - OP_ADD_2PC, //10 1000 0000 - OP_ADD_2PC, //10 1000 0001 - OP_ADD_2PC, //10 1000 0010 - OP_ADD_2PC, //10 1000 0011 - OP_ADD_2PC, //10 1000 0100 - OP_ADD_2PC, //10 1000 0101 - OP_ADD_2PC, //10 1000 0110 - OP_ADD_2PC, //10 1000 0111 - OP_ADD_2PC, //10 1000 1000 - OP_ADD_2PC, //10 1000 1001 - OP_ADD_2PC, //10 1000 1010 - OP_ADD_2PC, //10 1000 1011 - OP_ADD_2PC, //10 1000 1100 - OP_ADD_2PC, //10 1000 1101 - OP_ADD_2PC, //10 1000 1110 - OP_ADD_2PC, //10 1000 1111 - - OP_ADD_2PC, //10 1001 0000 - OP_ADD_2PC, //10 1001 0001 - OP_ADD_2PC, //10 1001 0010 - OP_ADD_2PC, //10 1001 0011 - OP_ADD_2PC, //10 1001 0100 - OP_ADD_2PC, //10 1001 0101 - OP_ADD_2PC, //10 1001 0110 - OP_ADD_2PC, //10 1001 0111 - OP_ADD_2PC, //10 1001 1000 - OP_ADD_2PC, //10 1001 1001 - OP_ADD_2PC, //10 1001 1010 - OP_ADD_2PC, //10 1001 1011 - OP_ADD_2PC, //10 1001 1100 - OP_ADD_2PC, //10 1001 1101 - OP_ADD_2PC, //10 1001 1110 - OP_ADD_2PC, //10 1001 1111 - - OP_ADD_2SP, //10 1010 0000 - OP_ADD_2SP, //10 1010 0001 - OP_ADD_2SP, //10 1010 0010 - OP_ADD_2SP, //10 1010 0011 - OP_ADD_2SP, //10 1010 0100 - OP_ADD_2SP, //10 1010 0101 - OP_ADD_2SP, //10 1010 0110 - OP_ADD_2SP, //10 1010 0111 - OP_ADD_2SP, //10 1010 1000 - OP_ADD_2SP, //10 1010 1001 - OP_ADD_2SP, //10 1010 1010 - OP_ADD_2SP, //10 1010 1011 - OP_ADD_2SP, //10 1010 1100 - OP_ADD_2SP, //10 1010 1101 - OP_ADD_2SP, //10 1010 1110 - OP_ADD_2SP, //10 1010 1111 - - OP_ADD_2SP, //10 1011 0000 - OP_ADD_2SP, //10 1011 0001 - OP_ADD_2SP, //10 1011 0010 - OP_ADD_2SP, //10 1011 0011 - OP_ADD_2SP, //10 1011 0100 - OP_ADD_2SP, //10 1011 0101 - OP_ADD_2SP, //10 1011 0110 - OP_ADD_2SP, //10 1011 0111 - OP_ADD_2SP, //10 1011 1000 - OP_ADD_2SP, //10 1011 1001 - OP_ADD_2SP, //10 1011 1010 - OP_ADD_2SP, //10 1011 1011 - OP_ADD_2SP, //10 1011 1100 - OP_ADD_2SP, //10 1011 1101 - OP_ADD_2SP, //10 1011 1110 - OP_ADD_2SP, //10 1011 1111 - - OP_ADJUST_P_SP, //10 1100 0000 - OP_ADJUST_P_SP, //10 1100 0001 - OP_ADJUST_M_SP, //10 1100 0010 - OP_ADJUST_M_SP, //10 1100 0011 - OP_UND_THUMB, //10 1100 0100 - OP_UND_THUMB, //10 1100 0101 - OP_UND_THUMB, //10 1100 0110 - OP_UND_THUMB, //10 1100 0111 - OP_UND_THUMB, //10 1100 1000 - OP_UND_THUMB, //10 1100 1001 - OP_UND_THUMB, //10 1100 1010 - OP_UND_THUMB, //10 1100 1011 - OP_UND_THUMB, //10 1100 1100 - OP_UND_THUMB, //10 1100 1101 - OP_UND_THUMB, //10 1100 1110 - OP_UND_THUMB, //10 1100 1111 - - OP_PUSH, //10 1101 0000 - OP_PUSH, //10 1101 0001 - OP_PUSH, //10 1101 0010 - OP_PUSH, //10 1101 0011 - OP_PUSH_LR, //10 1101 0100 - OP_PUSH_LR, //10 1101 0101 - OP_PUSH_LR, //10 1101 0110 - OP_PUSH_LR, //10 1101 0111 - OP_UND_THUMB, //10 1101 1000 - OP_UND_THUMB, //10 1101 1001 - OP_UND_THUMB, //10 1101 1010 - OP_UND_THUMB, //10 1101 1011 - OP_UND_THUMB, //10 1101 1100 - OP_UND_THUMB, //10 1101 1101 - OP_UND_THUMB, //10 1101 1110 - OP_UND_THUMB, //10 1101 1111 - - OP_UND_THUMB, //10 1110 0000 - OP_UND_THUMB, //10 1110 0001 - OP_UND_THUMB, //10 1110 0010 - OP_UND_THUMB, //10 1110 0011 - OP_UND_THUMB, //10 1110 0100 - OP_UND_THUMB, //10 1110 0101 - OP_UND_THUMB, //10 1110 0110 - OP_UND_THUMB, //10 1110 0111 - OP_UND_THUMB, //10 1110 1000 - OP_UND_THUMB, //10 1110 1001 - OP_UND_THUMB, //10 1110 1010 - OP_UND_THUMB, //10 1110 1011 - OP_UND_THUMB, //10 1110 1100 - OP_UND_THUMB, //10 1110 1101 - OP_UND_THUMB, //10 1110 1110 - OP_UND_THUMB, //10 1110 1111 - - OP_POP, //10 1111 0000 - OP_POP, //10 1111 0001 - OP_POP, //10 1111 0010 - OP_POP, //10 1111 0011 - OP_POP_PC, //10 1111 0100 - OP_POP_PC, //10 1111 0101 - OP_POP_PC, //10 1111 0110 - OP_POP_PC, //10 1111 0111 - OP_BKPT_THUMB, //10 1111 1000 - OP_BKPT_THUMB, //10 1111 1001 - OP_BKPT_THUMB, //10 1111 1010 - OP_BKPT_THUMB, //10 1111 1011 - OP_UND_THUMB, //10 1111 1100 - OP_UND_THUMB, //10 1111 1101 - OP_UND_THUMB, //10 1111 1110 - OP_UND_THUMB, //10 1111 1111 - - OP_STMIA_THUMB, //11 0000 0000 - OP_STMIA_THUMB, //11 0000 0001 - OP_STMIA_THUMB, //11 0000 0010 - OP_STMIA_THUMB, //11 0000 0011 - OP_STMIA_THUMB, //11 0000 0100 - OP_STMIA_THUMB, //11 0000 0101 - OP_STMIA_THUMB, //11 0000 0110 - OP_STMIA_THUMB, //11 0000 0111 - OP_STMIA_THUMB, //11 0000 1000 - OP_STMIA_THUMB, //11 0000 1001 - OP_STMIA_THUMB, //11 0000 1010 - OP_STMIA_THUMB, //11 0000 1011 - OP_STMIA_THUMB, //11 0000 1100 - OP_STMIA_THUMB, //11 0000 1101 - OP_STMIA_THUMB, //11 0000 1110 - OP_STMIA_THUMB, //11 0000 1111 - - OP_STMIA_THUMB, //11 0001 0000 - OP_STMIA_THUMB, //11 0001 0001 - OP_STMIA_THUMB, //11 0001 0010 - OP_STMIA_THUMB, //11 0001 0011 - OP_STMIA_THUMB, //11 0001 0100 - OP_STMIA_THUMB, //11 0001 0101 - OP_STMIA_THUMB, //11 0001 0110 - OP_STMIA_THUMB, //11 0001 0111 - OP_STMIA_THUMB, //11 0001 1000 - OP_STMIA_THUMB, //11 0001 1001 - OP_STMIA_THUMB, //11 0001 1010 - OP_STMIA_THUMB, //11 0001 1011 - OP_STMIA_THUMB, //11 0001 1100 - OP_STMIA_THUMB, //11 0001 1101 - OP_STMIA_THUMB, //11 0001 1110 - OP_STMIA_THUMB, //11 0001 1111 - - OP_LDMIA_THUMB, //11 0010 0000 - OP_LDMIA_THUMB, //11 0010 0001 - OP_LDMIA_THUMB, //11 0010 0010 - OP_LDMIA_THUMB, //11 0010 0011 - OP_LDMIA_THUMB, //11 0010 0100 - OP_LDMIA_THUMB, //11 0010 0101 - OP_LDMIA_THUMB, //11 0010 0110 - OP_LDMIA_THUMB, //11 0010 0111 - OP_LDMIA_THUMB, //11 0010 1000 - OP_LDMIA_THUMB, //11 0010 1001 - OP_LDMIA_THUMB, //11 0010 1010 - OP_LDMIA_THUMB, //11 0010 1011 - OP_LDMIA_THUMB, //11 0010 1100 - OP_LDMIA_THUMB, //11 0010 1101 - OP_LDMIA_THUMB, //11 0010 1110 - OP_LDMIA_THUMB, //11 0010 1111 - - OP_LDMIA_THUMB, //11 0011 0000 - OP_LDMIA_THUMB, //11 0011 0001 - OP_LDMIA_THUMB, //11 0011 0010 - OP_LDMIA_THUMB, //11 0011 0011 - OP_LDMIA_THUMB, //11 0011 0100 - OP_LDMIA_THUMB, //11 0011 0101 - OP_LDMIA_THUMB, //11 0011 0110 - OP_LDMIA_THUMB, //11 0011 0111 - OP_LDMIA_THUMB, //11 0011 1000 - OP_LDMIA_THUMB, //11 0011 1001 - OP_LDMIA_THUMB, //11 0011 1010 - OP_LDMIA_THUMB, //11 0011 1011 - OP_LDMIA_THUMB, //11 0011 1100 - OP_LDMIA_THUMB, //11 0011 1101 - OP_LDMIA_THUMB, //11 0011 1110 - OP_LDMIA_THUMB, //11 0011 1111 - - OP_B_COND, //11 0100 0000 - OP_B_COND, //11 0100 0001 - OP_B_COND, //11 0100 0010 - OP_B_COND, //11 0100 0011 - OP_B_COND, //11 0100 0100 - OP_B_COND, //11 0100 0101 - OP_B_COND, //11 0100 0110 - OP_B_COND, //11 0100 0111 - OP_B_COND, //11 0100 1000 - OP_B_COND, //11 0100 1001 - OP_B_COND, //11 0100 1010 - OP_B_COND, //11 0100 1011 - OP_B_COND, //11 0100 1100 - OP_B_COND, //11 0100 1101 - OP_B_COND, //11 0100 1110 - OP_B_COND, //11 0100 1111 - - OP_B_COND, //11 0101 0000 - OP_B_COND, //11 0101 0001 - OP_B_COND, //11 0101 0010 - OP_B_COND, //11 0101 0011 - OP_B_COND, //11 0101 0100 - OP_B_COND, //11 0101 0101 - OP_B_COND, //11 0101 0110 - OP_B_COND, //11 0101 0111 - OP_B_COND, //11 0101 1000 - OP_B_COND, //11 0101 1001 - OP_B_COND, //11 0101 1010 - OP_B_COND, //11 0101 1011 - OP_B_COND, //11 0101 1100 - OP_B_COND, //11 0101 1101 - OP_B_COND, //11 0101 1110 - OP_B_COND, //11 0101 1111 - - OP_B_COND, //11 0110 0000 - OP_B_COND, //11 0110 0001 - OP_B_COND, //11 0110 0010 - OP_B_COND, //11 0110 0011 - OP_B_COND, //11 0110 0100 - OP_B_COND, //11 0110 0101 - OP_B_COND, //11 0110 0110 - OP_B_COND, //11 0110 0111 - OP_B_COND, //11 0110 1000 - OP_B_COND, //11 0110 1001 - OP_B_COND, //11 0110 1010 - OP_B_COND, //11 0110 1011 - OP_B_COND, //11 0110 1100 - OP_B_COND, //11 0110 1101 - OP_B_COND, //11 0110 1110 - OP_B_COND, //11 0110 1111 - - OP_B_COND, //11 0111 0000 - OP_B_COND, //11 0111 0001 - OP_B_COND, //11 0111 0010 - OP_B_COND, //11 0111 0011 - OP_B_COND, //11 0111 0100 - OP_B_COND, //11 0111 0101 - OP_B_COND, //11 0111 0110 - OP_B_COND, //11 0111 0111 - OP_B_COND, //11 0111 1000 - OP_B_COND, //11 0111 1001 - OP_B_COND, //11 0111 1010 - OP_B_COND, //11 0111 1011 - OP_SWI_THUMB, //11 0111 1100 - OP_SWI_THUMB, //11 0111 1101 - OP_SWI_THUMB, //11 0111 1110 - OP_SWI_THUMB, //11 0111 1111 - - OP_B_UNCOND, //11 1000 0000 - OP_B_UNCOND, //11 1000 0001 - OP_B_UNCOND, //11 1000 0010 - OP_B_UNCOND, //11 1000 0011 - OP_B_UNCOND, //11 1000 0100 - OP_B_UNCOND, //11 1000 0101 - OP_B_UNCOND, //11 1000 0110 - OP_B_UNCOND, //11 1000 0111 - OP_B_UNCOND, //11 1000 1000 - OP_B_UNCOND, //11 1000 1001 - OP_B_UNCOND, //11 1000 1010 - OP_B_UNCOND, //11 1000 1011 - OP_B_UNCOND, //11 1000 1100 - OP_B_UNCOND, //11 1000 1101 - OP_B_UNCOND, //11 1000 1110 - OP_B_UNCOND, //11 1000 1111 - - OP_B_UNCOND, //11 1001 0000 - OP_B_UNCOND, //11 1001 0001 - OP_B_UNCOND, //11 1001 0010 - OP_B_UNCOND, //11 1001 0011 - OP_B_UNCOND, //11 1001 0100 - OP_B_UNCOND, //11 1001 0101 - OP_B_UNCOND, //11 1001 0110 - OP_B_UNCOND, //11 1001 0111 - OP_B_UNCOND, //11 1001 1000 - OP_B_UNCOND, //11 1001 1001 - OP_B_UNCOND, //11 1001 1010 - OP_B_UNCOND, //11 1001 1011 - OP_B_UNCOND, //11 1001 1100 - OP_B_UNCOND, //11 1001 1101 - OP_B_UNCOND, //11 1001 1110 - OP_B_UNCOND, //11 1001 1111 - - OP_BLX, //11 1010 0000 - OP_BLX, //11 1010 0001 - OP_BLX, //11 1010 0010 - OP_BLX, //11 1010 0011 - OP_BLX, //11 1010 0100 - OP_BLX, //11 1010 0101 - OP_BLX, //11 1010 0110 - OP_BLX, //11 1010 0111 - OP_BLX, //11 1010 1000 - OP_BLX, //11 1010 1001 - OP_BLX, //11 1010 1010 - OP_BLX, //11 1010 1011 - OP_BLX, //11 1010 1100 - OP_BLX, //11 1010 1101 - OP_BLX, //11 1010 1110 - OP_BLX, //11 1010 1111 - - OP_BLX, //11 1011 0000 - OP_BLX, //11 1011 0001 - OP_BLX, //11 1011 0010 - OP_BLX, //11 1011 0011 - OP_BLX, //11 1011 0100 - OP_BLX, //11 1011 0101 - OP_BLX, //11 1011 0110 - OP_BLX, //11 1011 0111 - OP_BLX, //11 1011 1000 - OP_BLX, //11 1011 1001 - OP_BLX, //11 1011 1010 - OP_BLX, //11 1011 1011 - OP_BLX, //11 1011 1100 - OP_BLX, //11 1011 1101 - OP_BLX, //11 1011 1110 - OP_BLX, //11 1011 1111 - - OP_BL_10, //11 1100 0000 - OP_BL_10, //11 1100 0001 - OP_BL_10, //11 1100 0010 - OP_BL_10, //11 1100 0011 - OP_BL_10, //11 1100 0100 - OP_BL_10, //11 1100 0101 - OP_BL_10, //11 1100 0110 - OP_BL_10, //11 1100 0111 - OP_BL_10, //11 1100 1000 - OP_BL_10, //11 1100 1001 - OP_BL_10, //11 1100 1010 - OP_BL_10, //11 1100 1011 - OP_BL_10, //11 1100 1100 - OP_BL_10, //11 1100 1101 - OP_BL_10, //11 1100 1110 - OP_BL_10, //11 1100 1111 - - OP_BL_10, //11 1101 0000 - OP_BL_10, //11 1101 0001 - OP_BL_10, //11 1101 0010 - OP_BL_10, //11 1101 0011 - OP_BL_10, //11 1101 0100 - OP_BL_10, //11 1101 0101 - OP_BL_10, //11 1101 0110 - OP_BL_10, //11 1101 0111 - OP_BL_10, //11 1101 1000 - OP_BL_10, //11 1101 1001 - OP_BL_10, //11 1101 1010 - OP_BL_10, //11 1101 1011 - OP_BL_10, //11 1101 1100 - OP_BL_10, //11 1101 1101 - OP_BL_10, //11 1101 1110 - OP_BL_10, //11 1101 1111 - - OP_BL_THUMB, //11 1110 0000 - OP_BL_THUMB, //11 1110 0001 - OP_BL_THUMB, //11 1110 0010 - OP_BL_THUMB, //11 1110 0011 - OP_BL_THUMB, //11 1110 0100 - OP_BL_THUMB, //11 1110 0101 - OP_BL_THUMB, //11 1110 0110 - OP_BL_THUMB, //11 1110 0111 - OP_BL_THUMB, //11 1110 1000 - OP_BL_THUMB, //11 1110 1001 - OP_BL_THUMB, //11 1110 1010 - OP_BL_THUMB, //11 1110 1011 - OP_BL_THUMB, //11 1110 1100 - OP_BL_THUMB, //11 1110 1101 - OP_BL_THUMB, //11 1110 1110 - OP_BL_THUMB, //11 1110 1111 - - OP_BL_THUMB, //11 1111 0000 - OP_BL_THUMB, //11 1111 0001 - OP_BL_THUMB, //11 1111 0010 - OP_BL_THUMB, //11 1111 0011 - OP_BL_THUMB, //11 1111 0100 - OP_BL_THUMB, //11 1111 0101 - OP_BL_THUMB, //11 1111 0110 - OP_BL_THUMB, //11 1111 0111 - OP_BL_THUMB, //11 1111 1000 - OP_BL_THUMB, //11 1111 1001 - OP_BL_THUMB, //11 1111 1010 - OP_BL_THUMB, //11 1111 1011 - OP_BL_THUMB, //11 1111 1100 - OP_BL_THUMB, //11 1111 1101 - OP_BL_THUMB, //11 1111 1110 - OP_BL_THUMB, //11 1111 1111 -}; //1089 - +/* 00 0000 0000 */ TABDECL(OP_LSL_0), // OP_LSL_0 +/* 00 0000 0001 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0000 0010 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0000 0011 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0000 0100 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0000 0101 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0000 0110 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0000 0111 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0000 1000 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0000 1001 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0000 1010 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0000 1011 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0000 1100 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0000 1101 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0000 1110 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0000 1111 */ TABDECL(OP_LSL), // OP_LSL + +/* 00 0001 0000 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0001 0001 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0001 0010 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0001 0011 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0001 0100 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0001 0101 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0001 0110 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0001 0111 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0001 1000 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0001 1001 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0001 1010 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0001 1011 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0001 1100 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0001 1101 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0001 1110 */ TABDECL(OP_LSL), // OP_LSL +/* 00 0001 1111 */ TABDECL(OP_LSL), // OP_LSL + +/* 00 0010 0000 */ TABDECL(OP_LSR_0), // OP_LSR_0 +/* 00 0010 0001 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0010 0010 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0010 0011 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0010 0100 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0010 0101 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0010 0110 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0010 0111 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0010 1000 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0010 1001 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0010 1010 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0010 1011 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0010 1100 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0010 1101 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0010 1110 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0010 1111 */ TABDECL(OP_LSR), // OP_LSR + +/* 00 0011 0000 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0011 0001 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0011 0010 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0011 0011 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0011 0100 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0011 0101 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0011 0110 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0011 0111 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0011 1000 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0011 1001 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0011 1010 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0011 1011 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0011 1100 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0011 1101 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0011 1110 */ TABDECL(OP_LSR), // OP_LSR +/* 00 0011 1111 */ TABDECL(OP_LSR), // OP_LSR + +/* 00 0100 0000 */ TABDECL(OP_ASR_0), // OP_ASR_0 +/* 00 0100 0001 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0100 0010 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0100 0011 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0100 0100 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0100 0101 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0100 0110 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0100 0111 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0100 1000 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0100 1001 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0100 1010 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0100 1011 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0100 1100 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0100 1101 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0100 1110 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0100 1111 */ TABDECL(OP_ASR), // OP_ASR + +/* 00 0101 0000 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0101 0001 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0101 0010 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0101 0011 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0101 0100 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0101 0101 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0101 0110 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0101 0111 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0101 1000 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0101 1001 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0101 1010 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0101 1011 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0101 1100 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0101 1101 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0101 1110 */ TABDECL(OP_ASR), // OP_ASR +/* 00 0101 1111 */ TABDECL(OP_ASR), // OP_ASR + +/* 00 0110 0000 */ TABDECL(OP_ADD_REG), // OP_ADD_REG +/* 00 0110 0001 */ TABDECL(OP_ADD_REG), // OP_ADD_REG +/* 00 0110 0010 */ TABDECL(OP_ADD_REG), // OP_ADD_REG +/* 00 0110 0011 */ TABDECL(OP_ADD_REG), // OP_ADD_REG +/* 00 0110 0100 */ TABDECL(OP_ADD_REG), // OP_ADD_REG +/* 00 0110 0101 */ TABDECL(OP_ADD_REG), // OP_ADD_REG +/* 00 0110 0110 */ TABDECL(OP_ADD_REG), // OP_ADD_REG +/* 00 0110 0111 */ TABDECL(OP_ADD_REG), // OP_ADD_REG +/* 00 0110 1000 */ TABDECL(OP_SUB_REG), // OP_SUB_REG +/* 00 0110 1001 */ TABDECL(OP_SUB_REG), // OP_SUB_REG +/* 00 0110 1010 */ TABDECL(OP_SUB_REG), // OP_SUB_REG +/* 00 0110 1011 */ TABDECL(OP_SUB_REG), // OP_SUB_REG +/* 00 0110 1100 */ TABDECL(OP_SUB_REG), // OP_SUB_REG +/* 00 0110 1101 */ TABDECL(OP_SUB_REG), // OP_SUB_REG +/* 00 0110 1110 */ TABDECL(OP_SUB_REG), // OP_SUB_REG +/* 00 0110 1111 */ TABDECL(OP_SUB_REG), // OP_SUB_REG + +/* 00 0111 0000 */ TABDECL(OP_ADD_IMM3), // OP_ADD_IMM3 +/* 00 0111 0001 */ TABDECL(OP_ADD_IMM3), // OP_ADD_IMM3 +/* 00 0111 0010 */ TABDECL(OP_ADD_IMM3), // OP_ADD_IMM3 +/* 00 0111 0011 */ TABDECL(OP_ADD_IMM3), // OP_ADD_IMM3 +/* 00 0111 0100 */ TABDECL(OP_ADD_IMM3), // OP_ADD_IMM3 +/* 00 0111 0101 */ TABDECL(OP_ADD_IMM3), // OP_ADD_IMM3 +/* 00 0111 0110 */ TABDECL(OP_ADD_IMM3), // OP_ADD_IMM3 +/* 00 0111 0111 */ TABDECL(OP_ADD_IMM3), // OP_ADD_IMM3 +/* 00 0111 1000 */ TABDECL(OP_SUB_IMM3), // OP_SUB_IMM3 +/* 00 0111 1001 */ TABDECL(OP_SUB_IMM3), // OP_SUB_IMM3 +/* 00 0111 1010 */ TABDECL(OP_SUB_IMM3), // OP_SUB_IMM3 +/* 00 0111 1011 */ TABDECL(OP_SUB_IMM3), // OP_SUB_IMM3 +/* 00 0111 1100 */ TABDECL(OP_SUB_IMM3), // OP_SUB_IMM3 +/* 00 0111 1101 */ TABDECL(OP_SUB_IMM3), // OP_SUB_IMM3 +/* 00 0111 1110 */ TABDECL(OP_SUB_IMM3), // OP_SUB_IMM3 +/* 00 0111 1111 */ TABDECL(OP_SUB_IMM3), // OP_SUB_IMM3 + +/* 00 1000 0000 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1000 0001 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1000 0010 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1000 0011 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1000 0100 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1000 0101 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1000 0110 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1000 0111 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1000 1000 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1000 1001 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1000 1010 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1000 1011 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1000 1100 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1000 1101 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1000 1110 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1000 1111 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 + +/* 00 1001 0000 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1001 0001 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1001 0010 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1001 0011 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1001 0100 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1001 0101 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1001 0110 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1001 0111 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1001 1000 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1001 1001 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1001 1010 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1001 1011 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1001 1100 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1001 1101 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1001 1110 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 +/* 00 1001 1111 */ TABDECL(OP_MOV_IMM8), // OP_MOV_IMM8 + +/* 00 1010 0000 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1010 0001 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1010 0010 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1010 0011 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1010 0100 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1010 0101 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1010 0110 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1010 0111 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1010 1000 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1010 1001 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1010 1010 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1010 1011 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1010 1100 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1010 1101 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1010 1110 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1010 1111 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 + +/* 00 1011 0000 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1011 0001 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1011 0010 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1011 0011 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1011 0100 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1011 0101 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1011 0110 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1011 0111 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1011 1000 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1011 1001 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1011 1010 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1011 1011 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1011 1100 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1011 1101 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1011 1110 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 +/* 00 1011 1111 */ TABDECL(OP_CMP_IMM8), // OP_CMP_IMM8 + +/* 00 1100 0000 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1100 0001 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1100 0010 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1100 0011 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1100 0100 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1100 0101 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1100 0110 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1100 0111 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1100 1000 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1100 1001 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1100 1010 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1100 1011 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1100 1100 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1100 1101 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1100 1110 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1100 1111 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 + +/* 00 1101 0000 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1101 0001 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1101 0010 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1101 0011 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1101 0100 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1101 0101 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1101 0110 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1101 0111 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1101 1000 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1101 1001 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1101 1010 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1101 1011 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1101 1100 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1101 1101 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1101 1110 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 +/* 00 1101 1111 */ TABDECL(OP_ADD_IMM8), // OP_ADD_IMM8 + +/* 00 1110 0000 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1110 0001 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1110 0010 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1110 0011 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1110 0100 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1110 0101 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1110 0110 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1110 0111 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1110 1000 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1110 1001 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1110 1010 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1110 1011 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1110 1100 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1110 1101 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1110 1110 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1110 1111 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 + +/* 00 1111 0000 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1111 0001 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1111 0010 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1111 0011 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1111 0100 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1111 0101 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1111 0110 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1111 0111 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1111 1000 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1111 1001 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1111 1010 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1111 1011 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1111 1100 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1111 1101 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1111 1110 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 +/* 00 1111 1111 */ TABDECL(OP_SUB_IMM8), // OP_SUB_IMM8 + +/* 01 0000 0000 */ TABDECL(OP_AND), // OP_AND +/* 01 0000 0001 */ TABDECL(OP_EOR), // OP_EOR +/* 01 0000 0010 */ TABDECL(OP_LSL_REG), // OP_LSL_REG +/* 01 0000 0011 */ TABDECL(OP_LSR_REG), // OP_LSR_REG +/* 01 0000 0100 */ TABDECL(OP_ASR_REG), // OP_ASR_REG +/* 01 0000 0101 */ TABDECL(OP_ADC_REG), // OP_ADC_REG +/* 01 0000 0110 */ TABDECL(OP_SBC_REG), // OP_SBC_REG +/* 01 0000 0111 */ TABDECL(OP_ROR_REG), // OP_ROR_REG +/* 01 0000 1000 */ TABDECL(OP_TST), // OP_TST +/* 01 0000 1001 */ TABDECL(OP_NEG), // OP_NEG +/* 01 0000 1010 */ TABDECL(OP_CMP), // OP_CMP +/* 01 0000 1011 */ TABDECL(OP_CMN), // OP_CMN +/* 01 0000 1100 */ TABDECL(OP_ORR), // OP_ORR +/* 01 0000 1101 */ TABDECL(OP_MUL_REG), // OP_MUL_REG +/* 01 0000 1110 */ TABDECL(OP_BIC), // OP_BIC +/* 01 0000 1111 */ TABDECL(OP_MVN), // OP_MVN + +/* 01 0001 0000 */ TABDECL(OP_ADD_SPE), // OP_ADD_SPE +/* 01 0001 0001 */ TABDECL(OP_ADD_SPE), // OP_ADD_SPE +/* 01 0001 0010 */ TABDECL(OP_ADD_SPE), // OP_ADD_SPE +/* 01 0001 0011 */ TABDECL(OP_ADD_SPE), // OP_ADD_SPE +/* 01 0001 0100 */ TABDECL(OP_CMP_SPE), // OP_CMP_SPE +/* 01 0001 0101 */ TABDECL(OP_CMP_SPE), // OP_CMP_SPE +/* 01 0001 0110 */ TABDECL(OP_CMP_SPE), // OP_CMP_SPE +/* 01 0001 0111 */ TABDECL(OP_CMP_SPE), // OP_CMP_SPE +/* 01 0001 1000 */ TABDECL(OP_MOV_SPE), // OP_MOV_SPE +/* 01 0001 1001 */ TABDECL(OP_MOV_SPE), // OP_MOV_SPE +/* 01 0001 1010 */ TABDECL(OP_MOV_SPE), // OP_MOV_SPE +/* 01 0001 1011 */ TABDECL(OP_MOV_SPE), // OP_MOV_SPE +/* 01 0001 1100 */ TABDECL(OP_BX_THUMB), // OP_BX_THUMB +/* 01 0001 1101 */ TABDECL(OP_BX_THUMB), // OP_BX_THUMB +/* 01 0001 1110 */ TABDECL(OP_BLX_THUMB), // OP_BLX_THUMB +/* 01 0001 1111 */ TABDECL(OP_BLX_THUMB), // OP_BLX_THUMB + +/* 01 0010 0000 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0010 0001 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0010 0010 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0010 0011 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0010 0100 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0010 0101 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0010 0110 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0010 0111 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0010 1000 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0010 1001 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0010 1010 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0010 1011 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0010 1100 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0010 1101 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0010 1110 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0010 1111 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL + +/* 01 0011 0000 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0011 0001 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0011 0010 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0011 0011 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0011 0100 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0011 0101 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0011 0110 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0011 0111 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0011 1000 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0011 1001 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0011 1010 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0011 1011 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0011 1100 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0011 1101 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0011 1110 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL +/* 01 0011 1111 */ TABDECL(OP_LDR_PCREL), // OP_LDR_PCREL + +/* 01 0100 0000 */ TABDECL(OP_STR_REG_OFF), // OP_STR_REG_OFF +/* 01 0100 0001 */ TABDECL(OP_STR_REG_OFF), // OP_STR_REG_OFF +/* 01 0100 0010 */ TABDECL(OP_STR_REG_OFF), // OP_STR_REG_OFF +/* 01 0100 0011 */ TABDECL(OP_STR_REG_OFF), // OP_STR_REG_OFF +/* 01 0100 0100 */ TABDECL(OP_STR_REG_OFF), // OP_STR_REG_OFF +/* 01 0100 0101 */ TABDECL(OP_STR_REG_OFF), // OP_STR_REG_OFF +/* 01 0100 0110 */ TABDECL(OP_STR_REG_OFF), // OP_STR_REG_OFF +/* 01 0100 0111 */ TABDECL(OP_STR_REG_OFF), // OP_STR_REG_OFF +/* 01 0100 1000 */ TABDECL(OP_STRH_REG_OFF), // OP_STRH_REG_OFF +/* 01 0100 1001 */ TABDECL(OP_STRH_REG_OFF), // OP_STRH_REG_OFF +/* 01 0100 1010 */ TABDECL(OP_STRH_REG_OFF), // OP_STRH_REG_OFF +/* 01 0100 1011 */ TABDECL(OP_STRH_REG_OFF), // OP_STRH_REG_OFF +/* 01 0100 1100 */ TABDECL(OP_STRH_REG_OFF), // OP_STRH_REG_OFF +/* 01 0100 1101 */ TABDECL(OP_STRH_REG_OFF), // OP_STRH_REG_OFF +/* 01 0100 1110 */ TABDECL(OP_STRH_REG_OFF), // OP_STRH_REG_OFF +/* 01 0100 1111 */ TABDECL(OP_STRH_REG_OFF), // OP_STRH_REG_OFF + +/* 01 0101 0000 */ TABDECL(OP_STRB_REG_OFF), // OP_STRB_REG_OFF +/* 01 0101 0001 */ TABDECL(OP_STRB_REG_OFF), // OP_STRB_REG_OFF +/* 01 0101 0010 */ TABDECL(OP_STRB_REG_OFF), // OP_STRB_REG_OFF +/* 01 0101 0011 */ TABDECL(OP_STRB_REG_OFF), // OP_STRB_REG_OFF +/* 01 0101 0100 */ TABDECL(OP_STRB_REG_OFF), // OP_STRB_REG_OFF +/* 01 0101 0101 */ TABDECL(OP_STRB_REG_OFF), // OP_STRB_REG_OFF +/* 01 0101 0110 */ TABDECL(OP_STRB_REG_OFF), // OP_STRB_REG_OFF +/* 01 0101 0111 */ TABDECL(OP_STRB_REG_OFF), // OP_STRB_REG_OFF +/* 01 0101 1000 */ TABDECL(OP_LDRSB_REG_OFF), // OP_LDRSB_REG_OFF +/* 01 0101 1001 */ TABDECL(OP_LDRSB_REG_OFF), // OP_LDRSB_REG_OFF +/* 01 0101 1010 */ TABDECL(OP_LDRSB_REG_OFF), // OP_LDRSB_REG_OFF +/* 01 0101 1011 */ TABDECL(OP_LDRSB_REG_OFF), // OP_LDRSB_REG_OFF +/* 01 0101 1100 */ TABDECL(OP_LDRSB_REG_OFF), // OP_LDRSB_REG_OFF +/* 01 0101 1101 */ TABDECL(OP_LDRSB_REG_OFF), // OP_LDRSB_REG_OFF +/* 01 0101 1110 */ TABDECL(OP_LDRSB_REG_OFF), // OP_LDRSB_REG_OFF +/* 01 0101 1111 */ TABDECL(OP_LDRSB_REG_OFF), // OP_LDRSB_REG_OFF + +/* 01 0110 0000 */ TABDECL(OP_LDR_REG_OFF), // OP_LDR_REG_OFF +/* 01 0110 0001 */ TABDECL(OP_LDR_REG_OFF), // OP_LDR_REG_OFF +/* 01 0110 0010 */ TABDECL(OP_LDR_REG_OFF), // OP_LDR_REG_OFF +/* 01 0110 0011 */ TABDECL(OP_LDR_REG_OFF), // OP_LDR_REG_OFF +/* 01 0110 0100 */ TABDECL(OP_LDR_REG_OFF), // OP_LDR_REG_OFF +/* 01 0110 0101 */ TABDECL(OP_LDR_REG_OFF), // OP_LDR_REG_OFF +/* 01 0110 0110 */ TABDECL(OP_LDR_REG_OFF), // OP_LDR_REG_OFF +/* 01 0110 0111 */ TABDECL(OP_LDR_REG_OFF), // OP_LDR_REG_OFF +/* 01 0110 1000 */ TABDECL(OP_LDRH_REG_OFF), // OP_LDRH_REG_OFF +/* 01 0110 1001 */ TABDECL(OP_LDRH_REG_OFF), // OP_LDRH_REG_OFF +/* 01 0110 1010 */ TABDECL(OP_LDRH_REG_OFF), // OP_LDRH_REG_OFF +/* 01 0110 1011 */ TABDECL(OP_LDRH_REG_OFF), // OP_LDRH_REG_OFF +/* 01 0110 1100 */ TABDECL(OP_LDRH_REG_OFF), // OP_LDRH_REG_OFF +/* 01 0110 1101 */ TABDECL(OP_LDRH_REG_OFF), // OP_LDRH_REG_OFF +/* 01 0110 1110 */ TABDECL(OP_LDRH_REG_OFF), // OP_LDRH_REG_OFF +/* 01 0110 1111 */ TABDECL(OP_LDRH_REG_OFF), // OP_LDRH_REG_OFF + +/* 01 0111 0000 */ TABDECL(OP_LDRB_REG_OFF), // OP_LDRB_REG_OFF +/* 01 0111 0001 */ TABDECL(OP_LDRB_REG_OFF), // OP_LDRB_REG_OFF +/* 01 0111 0010 */ TABDECL(OP_LDRB_REG_OFF), // OP_LDRB_REG_OFF +/* 01 0111 0011 */ TABDECL(OP_LDRB_REG_OFF), // OP_LDRB_REG_OFF +/* 01 0111 0100 */ TABDECL(OP_LDRB_REG_OFF), // OP_LDRB_REG_OFF +/* 01 0111 0101 */ TABDECL(OP_LDRB_REG_OFF), // OP_LDRB_REG_OFF +/* 01 0111 0110 */ TABDECL(OP_LDRB_REG_OFF), // OP_LDRB_REG_OFF +/* 01 0111 0111 */ TABDECL(OP_LDRB_REG_OFF), // OP_LDRB_REG_OFF +/* 01 0111 1000 */ TABDECL(OP_LDRSH_REG_OFF), // OP_LDRSH_REG_OFF +/* 01 0111 1001 */ TABDECL(OP_LDRSH_REG_OFF), // OP_LDRSH_REG_OFF +/* 01 0111 1010 */ TABDECL(OP_LDRSH_REG_OFF), // OP_LDRSH_REG_OFF +/* 01 0111 1011 */ TABDECL(OP_LDRSH_REG_OFF), // OP_LDRSH_REG_OFF +/* 01 0111 1100 */ TABDECL(OP_LDRSH_REG_OFF), // OP_LDRSH_REG_OFF +/* 01 0111 1101 */ TABDECL(OP_LDRSH_REG_OFF), // OP_LDRSH_REG_OFF +/* 01 0111 1110 */ TABDECL(OP_LDRSH_REG_OFF), // OP_LDRSH_REG_OFF +/* 01 0111 1111 */ TABDECL(OP_LDRSH_REG_OFF), // OP_LDRSH_REG_OFF + +/* 01 1000 0000 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1000 0001 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1000 0010 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1000 0011 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1000 0100 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1000 0101 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1000 0110 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1000 0111 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1000 1000 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1000 1001 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1000 1010 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1000 1011 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1000 1100 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1000 1101 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1000 1110 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1000 1111 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF + +/* 01 1001 0000 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1001 0001 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1001 0010 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1001 0011 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1001 0100 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1001 0101 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1001 0110 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1001 0111 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1001 1000 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1001 1001 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1001 1010 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1001 1011 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1001 1100 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1001 1101 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1001 1110 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF +/* 01 1001 1111 */ TABDECL(OP_STR_IMM_OFF), // OP_STR_IMM_OFF + +/* 01 1010 0000 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1010 0001 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1010 0010 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1010 0011 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1010 0100 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1010 0101 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1010 0110 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1010 0111 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1010 1000 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1010 1001 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1010 1010 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1010 1011 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1010 1100 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1010 1101 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1010 1110 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1010 1111 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF + +/* 01 1011 0000 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1011 0001 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1011 0010 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1011 0011 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1011 0100 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1011 0101 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1011 0110 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1011 0111 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1011 1000 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1011 1001 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1011 1010 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1011 1011 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1011 1100 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1011 1101 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1011 1110 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF +/* 01 1011 1111 */ TABDECL(OP_LDR_IMM_OFF), // OP_LDR_IMM_OFF + +/* 01 1100 0000 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1100 0001 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1100 0010 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1100 0011 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1100 0100 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1100 0101 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1100 0110 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1100 0111 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1100 1000 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1100 1001 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1100 1010 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1100 1011 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1100 1100 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1100 1101 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1100 1110 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1100 1111 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF + +/* 01 1101 0000 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1101 0001 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1101 0010 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1101 0011 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1101 0100 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1101 0101 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1101 0110 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1101 0111 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1101 1000 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1101 1001 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1101 1010 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1101 1011 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1101 1100 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1101 1101 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1101 1110 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF +/* 01 1101 1111 */ TABDECL(OP_STRB_IMM_OFF), // OP_STRB_IMM_OFF + +/* 01 1110 0000 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1110 0001 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1110 0010 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1110 0011 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1110 0100 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1110 0101 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1110 0110 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1110 0111 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1110 1000 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1110 1001 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1110 1010 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1110 1011 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1110 1100 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1110 1101 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1110 1110 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1110 1111 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF + +/* 01 1111 0000 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1111 0001 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1111 0010 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1111 0011 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1111 0100 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1111 0101 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1111 0110 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1111 0111 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1111 1000 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1111 1001 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1111 1010 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1111 1011 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1111 1100 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1111 1101 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1111 1110 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF +/* 01 1111 1111 */ TABDECL(OP_LDRB_IMM_OFF), // OP_LDRB_IMM_OFF + +/* 10 0000 0000 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0000 0001 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0000 0010 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0000 0011 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0000 0100 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0000 0101 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0000 0110 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0000 0111 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0000 1000 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0000 1001 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0000 1010 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0000 1011 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0000 1100 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0000 1101 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0000 1110 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0000 1111 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF + +/* 10 0001 0000 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0001 0001 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0001 0010 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0001 0011 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0001 0100 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0001 0101 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0001 0110 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0001 0111 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0001 1000 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0001 1001 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0001 1010 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0001 1011 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0001 1100 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0001 1101 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0001 1110 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF +/* 10 0001 1111 */ TABDECL(OP_STRH_IMM_OFF), // OP_STRH_IMM_OFF + +/* 10 0010 0000 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0010 0001 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0010 0010 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0010 0011 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0010 0100 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0010 0101 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0010 0110 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0010 0111 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0010 1000 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0010 1001 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0010 1010 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0010 1011 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0010 1100 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0010 1101 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0010 1110 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0010 1111 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF + +/* 10 0011 0000 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0011 0001 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0011 0010 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0011 0011 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0011 0100 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0011 0101 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0011 0110 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0011 0111 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0011 1000 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0011 1001 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0011 1010 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0011 1011 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0011 1100 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0011 1101 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0011 1110 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF +/* 10 0011 1111 */ TABDECL(OP_LDRH_IMM_OFF), // OP_LDRH_IMM_OFF + +/* 10 0100 0000 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0100 0001 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0100 0010 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0100 0011 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0100 0100 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0100 0101 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0100 0110 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0100 0111 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0100 1000 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0100 1001 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0100 1010 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0100 1011 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0100 1100 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0100 1101 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0100 1110 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0100 1111 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL + +/* 10 0101 0000 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0101 0001 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0101 0010 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0101 0011 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0101 0100 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0101 0101 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0101 0110 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0101 0111 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0101 1000 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0101 1001 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0101 1010 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0101 1011 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0101 1100 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0101 1101 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0101 1110 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL +/* 10 0101 1111 */ TABDECL(OP_STR_SPREL), // OP_STR_SPREL + +/* 10 0110 0000 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0110 0001 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0110 0010 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0110 0011 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0110 0100 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0110 0101 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0110 0110 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0110 0111 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0110 1000 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0110 1001 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0110 1010 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0110 1011 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0110 1100 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0110 1101 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0110 1110 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0110 1111 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL + +/* 10 0111 0000 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0111 0001 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0111 0010 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0111 0011 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0111 0100 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0111 0101 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0111 0110 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0111 0111 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0111 1000 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0111 1001 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0111 1010 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0111 1011 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0111 1100 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0111 1101 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0111 1110 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL +/* 10 0111 1111 */ TABDECL(OP_LDR_SPREL), // OP_LDR_SPREL + +/* 10 1000 0000 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1000 0001 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1000 0010 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1000 0011 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1000 0100 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1000 0101 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1000 0110 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1000 0111 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1000 1000 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1000 1001 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1000 1010 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1000 1011 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1000 1100 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1000 1101 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1000 1110 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1000 1111 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC + +/* 10 1001 0000 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1001 0001 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1001 0010 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1001 0011 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1001 0100 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1001 0101 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1001 0110 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1001 0111 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1001 1000 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1001 1001 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1001 1010 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1001 1011 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1001 1100 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1001 1101 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1001 1110 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC +/* 10 1001 1111 */ TABDECL(OP_ADD_2PC), // OP_ADD_2PC + +/* 10 1010 0000 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1010 0001 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1010 0010 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1010 0011 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1010 0100 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1010 0101 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1010 0110 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1010 0111 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1010 1000 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1010 1001 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1010 1010 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1010 1011 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1010 1100 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1010 1101 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1010 1110 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1010 1111 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP + +/* 10 1011 0000 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1011 0001 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1011 0010 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1011 0011 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1011 0100 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1011 0101 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1011 0110 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1011 0111 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1011 1000 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1011 1001 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1011 1010 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1011 1011 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1011 1100 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1011 1101 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1011 1110 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP +/* 10 1011 1111 */ TABDECL(OP_ADD_2SP), // OP_ADD_2SP + +/* 10 1100 0000 */ TABDECL(OP_ADJUST_P_SP), // OP_ADJUST_P_SP +/* 10 1100 0001 */ TABDECL(OP_ADJUST_P_SP), // OP_ADJUST_P_SP +/* 10 1100 0010 */ TABDECL(OP_ADJUST_M_SP), // OP_ADJUST_M_SP +/* 10 1100 0011 */ TABDECL(OP_ADJUST_M_SP), // OP_ADJUST_M_SP +/* 10 1100 0100 */ TABDECL(OP_UND_THUMB), +/* 10 1100 0101 */ TABDECL(OP_UND_THUMB), +/* 10 1100 0110 */ TABDECL(OP_UND_THUMB), +/* 10 1100 0111 */ TABDECL(OP_UND_THUMB), +/* 10 1100 1000 */ TABDECL(OP_UND_THUMB), +/* 10 1100 1001 */ TABDECL(OP_UND_THUMB), +/* 10 1100 1010 */ TABDECL(OP_UND_THUMB), +/* 10 1100 1011 */ TABDECL(OP_UND_THUMB), +/* 10 1100 1100 */ TABDECL(OP_UND_THUMB), +/* 10 1100 1101 */ TABDECL(OP_UND_THUMB), +/* 10 1100 1110 */ TABDECL(OP_UND_THUMB), +/* 10 1100 1111 */ TABDECL(OP_UND_THUMB), + +/* 10 1101 0000 */ TABDECL(OP_PUSH), // OP_PUSH +/* 10 1101 0001 */ TABDECL(OP_PUSH), // OP_PUSH +/* 10 1101 0010 */ TABDECL(OP_PUSH), // OP_PUSH +/* 10 1101 0011 */ TABDECL(OP_PUSH), // OP_PUSH +/* 10 1101 0100 */ TABDECL(OP_PUSH_LR), // OP_PUSH_LR +/* 10 1101 0101 */ TABDECL(OP_PUSH_LR), // OP_PUSH_LR +/* 10 1101 0110 */ TABDECL(OP_PUSH_LR), // OP_PUSH_LR +/* 10 1101 0111 */ TABDECL(OP_PUSH_LR), // OP_PUSH_LR +/* 10 1101 1000 */ TABDECL(OP_UND_THUMB), +/* 10 1101 1001 */ TABDECL(OP_UND_THUMB), +/* 10 1101 1010 */ TABDECL(OP_UND_THUMB), +/* 10 1101 1011 */ TABDECL(OP_UND_THUMB), +/* 10 1101 1100 */ TABDECL(OP_UND_THUMB), +/* 10 1101 1101 */ TABDECL(OP_UND_THUMB), +/* 10 1101 1110 */ TABDECL(OP_UND_THUMB), +/* 10 1101 1111 */ TABDECL(OP_UND_THUMB), + +/* 10 1110 0000 */ TABDECL(OP_UND_THUMB), +/* 10 1110 0001 */ TABDECL(OP_UND_THUMB), +/* 10 1110 0010 */ TABDECL(OP_UND_THUMB), +/* 10 1110 0011 */ TABDECL(OP_UND_THUMB), +/* 10 1110 0100 */ TABDECL(OP_UND_THUMB), +/* 10 1110 0101 */ TABDECL(OP_UND_THUMB), +/* 10 1110 0110 */ TABDECL(OP_UND_THUMB), +/* 10 1110 0111 */ TABDECL(OP_UND_THUMB), +/* 10 1110 1000 */ TABDECL(OP_UND_THUMB), +/* 10 1110 1001 */ TABDECL(OP_UND_THUMB), +/* 10 1110 1010 */ TABDECL(OP_UND_THUMB), +/* 10 1110 1011 */ TABDECL(OP_UND_THUMB), +/* 10 1110 1100 */ TABDECL(OP_UND_THUMB), +/* 10 1110 1101 */ TABDECL(OP_UND_THUMB), +/* 10 1110 1110 */ TABDECL(OP_UND_THUMB), +/* 10 1110 1111 */ TABDECL(OP_UND_THUMB), + +/* 10 1111 0000 */ TABDECL(OP_POP), // OP_POP +/* 10 1111 0001 */ TABDECL(OP_POP), // OP_POP +/* 10 1111 0010 */ TABDECL(OP_POP), // OP_POP +/* 10 1111 0011 */ TABDECL(OP_POP), // OP_POP +/* 10 1111 0100 */ TABDECL(OP_POP_PC), // OP_POP_PC +/* 10 1111 0101 */ TABDECL(OP_POP_PC), // OP_POP_PC +/* 10 1111 0110 */ TABDECL(OP_POP_PC), // OP_POP_PC +/* 10 1111 0111 */ TABDECL(OP_POP_PC), // OP_POP_PC +/* 10 1111 1000 */ TABDECL(OP_BKPT_THUMB), // OP_BKPT_THUMB +/* 10 1111 1001 */ TABDECL(OP_BKPT_THUMB), // OP_BKPT_THUMB +/* 10 1111 1010 */ TABDECL(OP_BKPT_THUMB), // OP_BKPT_THUMB +/* 10 1111 1011 */ TABDECL(OP_BKPT_THUMB), // OP_BKPT_THUMB +/* 10 1111 1100 */ TABDECL(OP_UND_THUMB), +/* 10 1111 1101 */ TABDECL(OP_UND_THUMB), +/* 10 1111 1110 */ TABDECL(OP_UND_THUMB), +/* 10 1111 1111 */ TABDECL(OP_UND_THUMB), + +/* 11 0000 0000 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0000 0001 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0000 0010 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0000 0011 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0000 0100 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0000 0101 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0000 0110 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0000 0111 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0000 1000 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0000 1001 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0000 1010 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0000 1011 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0000 1100 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0000 1101 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0000 1110 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0000 1111 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB + +/* 11 0001 0000 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0001 0001 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0001 0010 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0001 0011 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0001 0100 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0001 0101 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0001 0110 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0001 0111 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0001 1000 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0001 1001 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0001 1010 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0001 1011 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0001 1100 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0001 1101 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0001 1110 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB +/* 11 0001 1111 */ TABDECL(OP_STMIA_THUMB), // OP_STMIA_THUMB + +/* 11 0010 0000 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0010 0001 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0010 0010 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0010 0011 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0010 0100 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0010 0101 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0010 0110 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0010 0111 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0010 1000 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0010 1001 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0010 1010 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0010 1011 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0010 1100 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0010 1101 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0010 1110 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0010 1111 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB + +/* 11 0011 0000 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0011 0001 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0011 0010 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0011 0011 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0011 0100 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0011 0101 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0011 0110 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0011 0111 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0011 1000 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0011 1001 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0011 1010 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0011 1011 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0011 1100 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0011 1101 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0011 1110 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB +/* 11 0011 1111 */ TABDECL(OP_LDMIA_THUMB), // OP_LDMIA_THUMB + +/* 11 0100 0000 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0100 0001 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0100 0010 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0100 0011 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0100 0100 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0100 0101 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0100 0110 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0100 0111 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0100 1000 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0100 1001 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0100 1010 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0100 1011 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0100 1100 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0100 1101 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0100 1110 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0100 1111 */ TABDECL(OP_B_COND), // OP_B_COND + +/* 11 0101 0000 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0101 0001 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0101 0010 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0101 0011 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0101 0100 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0101 0101 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0101 0110 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0101 0111 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0101 1000 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0101 1001 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0101 1010 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0101 1011 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0101 1100 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0101 1101 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0101 1110 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0101 1111 */ TABDECL(OP_B_COND), // OP_B_COND + +/* 11 0110 0000 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0110 0001 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0110 0010 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0110 0011 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0110 0100 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0110 0101 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0110 0110 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0110 0111 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0110 1000 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0110 1001 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0110 1010 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0110 1011 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0110 1100 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0110 1101 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0110 1110 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0110 1111 */ TABDECL(OP_B_COND), // OP_B_COND + +/* 11 0111 0000 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0111 0001 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0111 0010 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0111 0011 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0111 0100 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0111 0101 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0111 0110 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0111 0111 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0111 1000 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0111 1001 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0111 1010 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0111 1011 */ TABDECL(OP_B_COND), // OP_B_COND +/* 11 0111 1100 */ TABDECL(OP_SWI_THUMB), // OP_SWI_THUMB +/* 11 0111 1101 */ TABDECL(OP_SWI_THUMB), // OP_SWI_THUMB +/* 11 0111 1110 */ TABDECL(OP_SWI_THUMB), // OP_SWI_THUMB +/* 11 0111 1111 */ TABDECL(OP_SWI_THUMB), // OP_SWI_THUMB + +/* 11 1000 0000 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1000 0001 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1000 0010 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1000 0011 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1000 0100 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1000 0101 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1000 0110 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1000 0111 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1000 1000 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1000 1001 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1000 1010 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1000 1011 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1000 1100 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1000 1101 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1000 1110 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1000 1111 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND + +/* 11 1001 0000 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1001 0001 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1001 0010 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1001 0011 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1001 0100 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1001 0101 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1001 0110 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1001 0111 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1001 1000 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1001 1001 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1001 1010 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1001 1011 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1001 1100 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1001 1101 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1001 1110 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND +/* 11 1001 1111 */ TABDECL(OP_B_UNCOND), // OP_B_UNCOND + +/* 11 1010 0000 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1010 0001 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1010 0010 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1010 0011 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1010 0100 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1010 0101 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1010 0110 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1010 0111 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1010 1000 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1010 1001 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1010 1010 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1010 1011 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1010 1100 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1010 1101 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1010 1110 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1010 1111 */ TABDECL(OP_BLX), // OP_BLX + +/* 11 1011 0000 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1011 0001 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1011 0010 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1011 0011 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1011 0100 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1011 0101 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1011 0110 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1011 0111 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1011 1000 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1011 1001 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1011 1010 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1011 1011 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1011 1100 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1011 1101 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1011 1110 */ TABDECL(OP_BLX), // OP_BLX +/* 11 1011 1111 */ TABDECL(OP_BLX), // OP_BLX + +/* 11 1100 0000 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1100 0001 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1100 0010 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1100 0011 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1100 0100 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1100 0101 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1100 0110 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1100 0111 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1100 1000 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1100 1001 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1100 1010 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1100 1011 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1100 1100 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1100 1101 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1100 1110 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1100 1111 */ TABDECL(OP_BL_10), // OP_BL_10 + +/* 11 1101 0000 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1101 0001 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1101 0010 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1101 0011 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1101 0100 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1101 0101 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1101 0110 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1101 0111 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1101 1000 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1101 1001 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1101 1010 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1101 1011 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1101 1100 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1101 1101 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1101 1110 */ TABDECL(OP_BL_10), // OP_BL_10 +/* 11 1101 1111 */ TABDECL(OP_BL_10), // OP_BL_10 + +/* 11 1110 0000 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1110 0001 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1110 0010 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1110 0011 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1110 0100 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1110 0101 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1110 0110 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1110 0111 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1110 1000 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1110 1001 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1110 1010 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1110 1011 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1110 1100 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1110 1101 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1110 1110 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1110 1111 */ TABDECL(OP_BL_11), // OP_BL_11 + +/* 11 1111 0000 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1111 0001 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1111 0010 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1111 0011 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1111 0100 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1111 0101 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1111 0110 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1111 0111 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1111 1000 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1111 1001 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1111 1010 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1111 1011 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1111 1100 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1111 1101 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1111 1110 */ TABDECL(OP_BL_11), // OP_BL_11 +/* 11 1111 1111 */ TABDECL(OP_BL_11), // OP_BL_11 + diff -Nru audacious-plugins-4.1/src/xsf/desmume/types.h audacious-plugins-4.3.1/src/xsf/desmume/types.h --- audacious-plugins-4.1/src/xsf/desmume/types.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/types.h 2023-04-29 20:17:32.000000000 +0000 @@ -1,139 +1,105 @@ -/* Copyright (C) 2005 Guillaume Duhamel +/* + Copyright (C) 2005 Guillaume Duhamel + Copyright (C) 2008-2012 DeSmuME team + + This file 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 file 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. - This file is part of DeSmuME - - DeSmuME 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. - - DeSmuME 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 DeSmuME; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + You should have received a copy of the GNU General Public License + along with the this software. If not, see . */ -#ifndef TYPES_HPP -#define TYPES_HPP +#pragma once -#ifndef FASTCALL -#ifdef __MINGW32__ -#define FASTCALL __attribute__((fastcall)) -#elif defined (__i386__) -#define FASTCALL __attribute__((regparm(3))) -#else -#define FASTCALL -#endif -#endif +#include +#include -#ifndef INLINE -#ifdef _MSC_VER -#define INLINE _inline -#else -#define INLINE inline -#endif +using u64 = uint64_t; +using s64 = int64_t; +using u32 = uint32_t; +using s32 = int32_t; +using u16 = uint16_t; +using s16 = int16_t; +using u8 = uint8_t; +using s8 = int8_t; +#define FORCEINLINE inline + +#ifdef _WINDOWS +# define HAVE_LIBAGG +# define ENABLE_SSE +# define ENABLE_SSE2 #endif -#ifdef DESMUME_COCOA -#ifdef __BIG_ENDIAN__ -#define WORDS_BIGENDIAN -#endif +#ifdef __GNUC__ +# ifdef __SSE__ +# define ENABLE_SSE +# endif +# ifdef __SSE2__ +# define ENABLE_SSE2 +# endif #endif -#if defined(__LP64__) -typedef unsigned char u8; -typedef unsigned short u16; -typedef unsigned int u32; -typedef unsigned long u64; -typedef unsigned long pointer; +#ifdef NOSSE +# undef ENABLE_SSE +#endif -typedef signed char s8; -typedef signed short s16; -typedef signed int s32; -typedef signed long s64; -#else -typedef unsigned char u8; -typedef unsigned short u16; -typedef unsigned long u32; -#ifdef _MSC_VER -typedef unsigned __int64 u64; -#else -typedef unsigned long long u64; +#ifdef NOSSE2 +# undef ENABLE_SSE2 #endif -typedef unsigned long pointer; -typedef signed char s8; -typedef signed short s16; -typedef signed long s32; #ifdef _MSC_VER -typedef __int64 s64; -#else -typedef signed long long s64; -#endif +# define strcasecmp(x, y) _stricmp(x, y) +# define strncasecmp(x, y, l) strnicmp(x, y, l) +# define snprintf _snprintf #endif -typedef u8 uint8; -typedef u16 uint16; +#ifndef MAX_PATH +# ifdef __GNUC__ +# include +# ifndef PATH_MAX +# define MAX_PATH 1024 +# else +# define MAX_PATH PATH_MAX +# endif +# endif +#endif -#ifndef OBJ_C -typedef u32 uint32; +#if defined(_MSC_VER) || defined(__INTEL_COMPILER) +# define DS_ALIGN(X) __declspec(align(X)) +#elif defined(__GNUC__) +# define DS_ALIGN(X) __attribute__ ((aligned (X))) #else -#define uint32 u32 //uint32 is defined in Leopard somewhere, avoid conflicts +# define DS_ALIGN(X) #endif -/*---------- GPU3D fixed-points types -----------*/ - -typedef s32 f32; -#define inttof32(n) ((n) << 12) -#define f32toint(n) ((n) >> 12) -#define floattof32(n) ((int32)((n) * (1 << 12))) -#define f32tofloat(n) (((float)(n)) / (float)(1<<12)) - -typedef s16 t16; -#define f32tot16(n) ((t16)(n >> 8)) -#define inttot16(n) ((n) << 4) -#define t16toint(n) ((n) >> 4) -#define floattot16(n) ((t16)((n) * (1 << 4))) -#define t16ofloat(n) (((float)(n)) / (float)(1<<4)) - -typedef s16 v16; -#define inttov16(n) ((n) << 12) -#define f32tov16(n) (n) -#define floattov16(n) ((v16)((n) * (1 << 12))) -#define v16toint(n) ((n) >> 12) -#define v16tofloat(n) (((float)(n)) / (float)(1<<12)) - -typedef s16 v10; -#define inttov10(n) ((n) << 9) -#define f32tov10(n) ((v10)(n >> 3)) -#define v10toint(n) ((n) >> 9) -#define floattov10(n) ((v10)((n) * (1 << 9))) -#define v10tofloat(n) (((float)(n)) / (float)(1<<9)) +#define CACHE_ALIGN DS_ALIGN(32) -/*----------------------*/ - -#ifndef OBJ_C -typedef int BOOL; +#ifdef __MINGW32__ +# undef FASTCALL +# undef LDM_FASTCALL +# define FASTCALL __attribute__((fastcall)) +# define LDM_FASTCALL +#elif defined (__i386__) && !defined(__clang__) +# define FASTCALL __attribute__((regparm(3))) +# define LDM_FASTCALL #else -//apple also defines BOOL -typedef int desmume_BOOL; -#define BOOL desmume_BOOL +# define FASTCALL +# define LDM_FASTCALL #endif -#ifndef true -#define true 1 -#endif - -#ifndef false -#define false 0 -#endif +/*----------------------*/ -#ifdef __GNUC__ -#define PACKED __attribute__((packed)) +#ifdef __BIG_ENDIAN__ +# ifndef WORDS_BIGENDIAN +# define WORDS_BIGENDIAN +# endif #endif #ifdef WORDS_BIGENDIAN @@ -143,29 +109,40 @@ #endif /* little endian (ds' endianess) to local endianess convert macros */ -#ifdef LOCAL_BE /* local arch is big endian */ -# define LE_TO_LOCAL_16(x) ((((x)&0xff)<<8)|(((x)>>8)&0xff)) -# define LE_TO_LOCAL_32(x) ((((x)&0xff)<<24)|(((x)&0xff00)<<8)|(((x)>>8)&0xff00)|(((x)>>24)&0xff)) -# define LOCAL_TO_LE_16(x) ((((x)&0xff)<<8)|(((x)>>8)&0xff)) -# define LOCAL_TO_LE_32(x) ((((x)&0xff)<<24)|(((x)&0xff00)<<8)|(((x)>>8)&0xff00)|(((x)>>24)&0xff)) -#else /* local arch is little endian */ -# define LE_TO_LOCAL_16(x) (x) -# define LE_TO_LOCAL_32(x) (x) -# define LOCAL_TO_LE_16(x) (x) -# define LOCAL_TO_LE_32(x) (x) -#endif - -/* kilobytes and megabytes macro */ -#define MB(x) ((x)*1024*1024) -#define KB(x) ((x)*1024) - -#define CPU_STR(c) ((c==ARM9)?"ARM9":"ARM7") -typedef enum +#ifdef LOCAL_BE /* local arch is big endian */ +inline uint16_t LE_TO_LOCAL_16(uint16_t x) { return ((x & 0xff) << 8) | ((x >> 8) & 0xff); } +inline uint32_t LE_TO_LOCAL_32(uint32_t x) { return ((x & 0xff) << 24) | ((x & 0xff00) << 8) | ((x >> 8) & 0xff00) | ((x >> 24) & 0xff); } +inline uint64_t LE_TO_LOCAL_64(uint64_t x) { - ARM9 = 0, - ARM7 = 1 -} cpu_id_t; + return ((x & 0xff) << 56) | ((x & 0xff00) << 40) | ((x & 0xff0000) << 24) | ((x & 0xff000000) << 8) | + ((x >> 8) & 0xff000000) | ((x >> 24) & 0xff00) | ((x >> 40) & 0xff00) | ((x >> 56) & 0xff); +} +#else /* local arch is little endian */ +inline uint16_t LE_TO_LOCAL_16(uint16_t x) { return x; } +inline uint32_t LE_TO_LOCAL_32(uint32_t x) { return x; } +inline uint64_t LE_TO_LOCAL_64(uint64_t x) { return x; } +#endif -#define __PACKED __attribute__((__packed__)) +template inline size_t ARRAY_SIZE(T (&)[N]) { return N; } -#endif +inline double u64_to_double(uint64_t u) +{ + union + { + uint64_t a; + double b; + } fuxor; + fuxor.a = u; + return fuxor.b; +} + +// fairly standard for loop macros +#define MACRODO1(TRICK, TODO) { int X = TRICK; TODO; } +#define MACRODO2(TRICK, TODO) { MACRODO1((TRICK), TODO) MACRODO1(((TRICK) + 1), TODO) } +#define MACRODO4(TRICK, TODO) { MACRODO2((TRICK), TODO) MACRODO2(((TRICK) + 2), TODO) } + +template inline void reconstruct(T *t) +{ + t->~T(); + new(t) T(); +} diff -Nru audacious-plugins-4.1/src/xsf/desmume/version.h audacious-plugins-4.3.1/src/xsf/desmume/version.h --- audacious-plugins-4.1/src/xsf/desmume/version.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/desmume/version.h 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,20 @@ +/* + Copyright (C) 2009-2013 DeSmuME team + + This file 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 file 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 the this software. If not, see . +*/ + +#pragma once + +const char *EMU_DESMUME_NAME_AND_VERSION(); diff -Nru audacious-plugins-4.1/src/xsf/meson.build audacious-plugins-4.3.1/src/xsf/meson.build --- audacious-plugins-4.1/src/xsf/meson.build 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/meson.build 2023-04-29 20:17:32.000000000 +0000 @@ -1,7 +1,7 @@ plugin_sources = [ - 'corlett.cc', 'plugin.cc', - 'vio2sf.cc' + 'sndif2sf.cc', + 'XSFFile.cc' ] @@ -10,17 +10,29 @@ 'desmume/arm_instructions.cc', 'desmume/bios.cc', 'desmume/cp15.cc', + 'desmume/emufile.cc', 'desmume/FIFO.cc', - 'desmume/GPU.cc', - 'desmume/matrix.cc', + 'desmume/firmware.cc', 'desmume/mc.cc', + 'desmume/metaspu.cc', 'desmume/MMU.cc', 'desmume/NDSSystem.cc', + 'desmume/readwrite.cc', + 'desmume/slot1.cc', + 'desmume/slot1_retail.cc', 'desmume/SPU.cc', 'desmume/thumb_instructions.cc' ] +spu_sources = [ + 'spu/adpcmdecoder.cc', + 'spu/interpolator.cc', + 'spu/samplecache.cc', + 'spu/sampledata.cc' +] + + cpp_args = cxx.get_supported_arguments([ '-Wno-sign-compare', '-Wno-shift-negative-value' @@ -30,6 +42,7 @@ shared_module('xsf', plugin_sources, desmume_sources, + spu_sources, dependencies: [audacious_dep, zlib_dep], cpp_args: cpp_args, name_prefix: '', diff -Nru audacious-plugins-4.1/src/xsf/plugin.cc audacious-plugins-4.3.1/src/xsf/plugin.cc --- audacious-plugins-4.1/src/xsf/plugin.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/plugin.cc 2023-04-29 20:17:32.000000000 +0000 @@ -1,32 +1,48 @@ /* - Audio Overload SDK - main driver. for demonstration only, not user friendly! - - Copyright (c) 2007-2008 R. Belmont and Richard Bannister. - - All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the names of R. Belmont and Richard Bannister nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ + * xSF - 2SF Player + * Copyright (c) 2014-2020 Naram Qashat + * Copyright (c) 2020-2021 Adam Higerd + * + * Partially derived from Audio Overload SDK + * Copyright (c) 2007-2008 R. Belmont and Richard Bannister. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the names of R. Belmont and Richard Bannister nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Utilizes a modified DeSmuME v0.9.9 SVN for playback + * http://desmume.org/ + * DeSmuME is licensed under the GNU General Public License, version 2 or later. + * See the accompanying source files for more information. + */ #include #include #include +#include +#include +#include #include #include @@ -34,9 +50,17 @@ #include #include -#include "ao.h" -#include "corlett.h" -#include "vio2sf.h" +#include "desmume/NDSSystem.h" +#include "spu/samplecache.h" +#include "sndif2sf.h" +#include "XSFFile.h" + +#if _WIN32 +#include +#define sleep Sleep +#else +#include +#endif class XSFPlugin : public InputPlugin { @@ -65,15 +89,90 @@ EXPORT XSFPlugin aud_plugin_instance; +class vfsfile_istream : public std::istream { + class vfsfile_streambuf : public std::basic_streambuf { + public: + vfsfile_streambuf(const char* filename) : source(new VFSFile(filename, "rb")), owned(source) {} + vfsfile_streambuf(VFSFile* source) : source(source), owned(nullptr) {} + + protected: + std::streamsize xsgetn(char* s, std::streamsize count) { + return source->fread(s, 1, count); + } + + traits_type::int_type underflow() { + if (source && *source) { + uint8_t result[1]; + int ok = source->fread(reinterpret_cast(result), 1, 1); + if (ok) { + if (source->fseek(-1, VFS_SEEK_CUR)) { + return traits_type::eof(); + } + return result[0]; + } + } else { + } + return traits_type::eof(); + } + + traits_type::int_type uflow() { + if (source && *source) { + uint8_t result[1]; + int ok = source->fread(reinterpret_cast(result), 1, 1); + if (ok) { + return result[0]; + } + } + return traits_type::eof(); + } + + traits_type::pos_type seekoff(traits_type::off_type off, std::ios_base::seekdir dir, std::ios_base::openmode which = std::ios_base::in) { + if (!source || !*source) { + return traits_type::off_type(-1); + } + int err = 1; + if (dir == std::ios_base::beg) { + err = source->fseek(off, VFS_SEEK_SET); + } else if (dir == std::ios_base::end) { + err = source->fseek(off, VFS_SEEK_END); + } else { + err = source->fseek(off, VFS_SEEK_CUR); + } + if (err) { + return traits_type::off_type(-1); + } + return source->ftell(); + } + + traits_type::pos_type seekpos(traits_type::pos_type pos, std::ios_base::openmode which = std::ios_base::in) { + return seekoff(pos, std::ios_base::beg, which); + } + + private: + VFSFile* source; + std::unique_ptr owned; + }; + +public: + vfsfile_istream(const char* source) : std::istream(new vfsfile_streambuf(source)) {} + vfsfile_istream(VFSFile* source) : std::istream(new vfsfile_streambuf(source)) {} + ~vfsfile_istream() { delete rdbuf(nullptr); } +}; + /* xsf_get_lib: called to load secondary files */ static String dirpath; +bool ignore_length; + #define CFG_ID "xsf" const char* const XSFPlugin::defaults[] = { - "ignore_length", "FALSE", - nullptr + "ignore_length", "FALSE", + "fade", "5000", + "sample_rate", "32728", + "interpolation_mode", "none", + nullptr }; bool XSFPlugin::init() @@ -90,127 +189,225 @@ bool XSFPlugin::read_tag(const char *filename, VFSFile &file, Tuple &tuple, Index *image) { - Index buf = file.read_all (); - if (!buf.len()) - return false; - - corlett_t *c; - if (corlett_decode((uint8_t *)buf.begin(), buf.len(), nullptr, nullptr, &c) != AO_SUCCESS) - return false; - - tuple.set_int(Tuple::Length, psfTimeToMS(c->inf_length) + psfTimeToMS(c->inf_fade)); - tuple.set_str(Tuple::Artist, c->inf_artist); - tuple.set_str(Tuple::Album, c->inf_game); - tuple.set_str(Tuple::Title, c->inf_title); - tuple.set_str(Tuple::Copyright, c->inf_copy); - tuple.set_str(Tuple::Quality, _("sequenced")); - tuple.set_str(Tuple::Codec, "GBA/Nintendo DS Audio"); - tuple.set_int(Tuple::Channels, 2); - - free(c); - - return true; + try { + vfsfile_istream vs(&file); + if (!vs) { + return false; + } + XSFFile xsf(vs, 0, 0, true); + + tuple.set_int(Tuple::Length, xsf.GetLengthMS(115000) + xsf.GetFadeMS(5000)); + tuple.set_str(Tuple::Artist, xsf.GetTagValue("artist").c_str()); + tuple.set_str(Tuple::Album, xsf.GetTagValue("game").c_str()); + tuple.set_str(Tuple::Title, xsf.GetTagValue("title").c_str()); + tuple.set_str(Tuple::Copyright, xsf.GetTagValue("copyright").c_str()); + tuple.set_str(Tuple::Quality, _("sequenced")); + tuple.set_str(Tuple::Codec, "Nintendo DS Audio"); + if (xsf.GetTagExists("replaygain_album_gain")) { + tuple.set_int(Tuple::AlbumGain, xsf.GetTagValue("replaygain_album_gain", 1.0) * 1000); + tuple.set_int(Tuple::AlbumPeak, xsf.GetTagValue("replaygain_album_peak", 1.0) * 1000); + tuple.set_int(Tuple::TrackGain, xsf.GetTagValue("replaygain_track_gain", 1.0) * 1000); + tuple.set_int(Tuple::TrackPeak, xsf.GetTagValue("replaygain_track_peak", 1.0) * 1000); + tuple.set_int(Tuple::GainDivisor, 1000); + tuple.set_int(Tuple::PeakDivisor, 1000); + } + + return true; + } catch (std::exception& e) { + std::cerr << "Exception: " << e.what() << std::endl; + return false; + } } -static int xsf_get_length(const Index &buf) +static void xsf_reset(int frameSkip) { - corlett_t *c; - - if (corlett_decode((uint8_t *)buf.begin(), buf.len(), nullptr, nullptr, &c) != AO_SUCCESS) - return -1; + execute = false; + NDS_Reset(); + spuSampleCache.clear(); + execute = true; + + if (frameSkip > 0) { + for (int i = 0; i < frameSkip; ++i) { + NDS_exec(); + } + } + buffer_rope.clear(); +} - bool ignore_length = aud_get_bool(CFG_ID, "ignore_length"); - int length = (!ignore_length) ? psfTimeToMS(c->inf_length) + psfTimeToMS(c->inf_fade) : -1; +bool map2SF(std::vector& rom, XSFFile* xsf) +{ + if (!xsf->IsValidType(0x24)) + return false; + const auto& programSection = xsf->GetProgramSection(); + if (programSection.size()) { + uint32_t offset = Get32BitsLE(&programSection[0]); + uint32_t size = Get32BitsLE(&programSection[4]); + uint32_t finalSize = size + offset; + if (rom.size() < finalSize) { + rom.resize(finalSize + 10); + } + memcpy(&rom[offset], &programSection[8], size); + } + return true; +} - free(c); +bool recursiveLoad2SF(std::vector& rom, XSFFile* xsf, int level) +{ + if (level <= 10 && xsf->GetTagExists("_lib")) + { + vfsfile_istream vs(filename_build({ dirpath, xsf->GetTagValue("_lib").c_str() })); + if (!vs) + return false; + XSFFile libxsf(vs, 4, 8); + if (!recursiveLoad2SF(rom, &libxsf, level + 1)) + return false; + } + + if (!map2SF(rom, xsf)) + return false; + + bool found = true; + for (int n = 2; found; n++) { + std::ostringstream ss; + ss << "_lib" << (n++); + found = xsf->GetTagExists(ss.str()); + if (found) { + vfsfile_istream vs(filename_build({ dirpath, xsf->GetTagValue(ss.str()).c_str() })); + if (!vs) + return false; + XSFFile libxsf(vs, 4, 8); + if (!recursiveLoad2SF(rom, &libxsf, level + 1)) + return false; + } + } + return true; +} - return length; +void setInterp() { + std::string interp = (const char*)aud_get_str(CFG_ID, "interpolation_mode"); + int interpMode = 0; + if (interp == "linear") { + interpMode = 1; + } else if (interp == "cosine") { + interpMode = 2; + } else if (interp == "sharp") { + interpMode = 3; + } + CommonSettings.spuInterpolationMode = (SPUInterpolationMode)interpMode; } bool XSFPlugin::play(const char *filename, VFSFile &file) { int length = -1; - int16_t samples[44100*2]; - int seglen = 44100 / 60; - float pos = 0.0; bool error = false; + int fade = aud_get_int(CFG_ID, "fade"); + int frameSkip = -1; + float pos = 0.0; + setInterp(); - const char * slash = strrchr (filename, '/'); - if (! slash) + const char * slash = strrchr(filename, '/'); + if (!slash) return false; - dirpath = String (str_copy (filename, slash + 1 - filename)); - - Index buf = file.read_all (); - - if (!buf.len()) - { - error = true; - goto ERR_NO_CLOSE; - } - - length = xsf_get_length(buf); - - if (xsf_start(buf.begin(), buf.len()) != AO_SUCCESS) - { - error = true; - goto ERR_NO_CLOSE; - } - - set_stream_bitrate(44100*2*2*8); - open_audio(FMT_S16_NE, 44100, 2); - - while (! check_stop ()) - { - int seek_value = check_seek (); - - if (seek_value >= 0) - { - if (seek_value > pos) - { - while (pos < seek_value) - { - xsf_gen(samples, seglen); - pos += 16.666; - } - } - else if (seek_value < pos) - { - xsf_term(); - - if (xsf_start(buf.begin(), buf.len()) == AO_SUCCESS) - { - pos = 0.0; - while (pos < seek_value) - { - xsf_gen(samples, seglen); - pos += 16.666; /* each segment is 16.666ms */ - } - } - else - { - error = true; - goto CLEANUP; - } - } - } - - xsf_gen(samples, seglen); - pos += 16.666; - - write_audio(samples, seglen * 4); - - bool ignore_length = aud_get_bool(CFG_ID, "ignore_length"); - if (pos >= length && !ignore_length) - goto CLEANUP; - } - -CLEANUP: - xsf_term(); - -ERR_NO_CLOSE: - dirpath = String (); - + while (execute && !check_stop()) { + std::cerr << "waiting for thread to finish..." << std::endl; + sleep(100); + } + + dirpath = String(str_copy(filename, slash + 1 - filename)); + + Index buf = file.read_all(); + try { + vfsfile_istream vs(&file); + if (!vs) { + return false; + } + + XSFFile xsf(vs, 4, 8); + fade = xsf.GetFadeMS(5000); + length = xsf.GetLengthMS(115000) + fade; + + std::vector rom; + if (!recursiveLoad2SF(rom, &xsf, 0) || !rom.size()) + return false; + + if (NDS_Init()) + return false; + + int sampleRate = aud_get_int(CFG_ID, "sample_rate"); + if (sampleRate < 11025 || sampleRate > 96000) + sampleRate = 32728; + SetDesmumeSampleRate(sampleRate); // TODO: config + int BUFFERSIZE = DESMUME_SAMPLE_RATE / 59.837; //truncates to 737, the traditional value, for 44100 + SPU_ChangeSoundCore(SNDIFID_2SF, BUFFERSIZE); + + execute = false; + + MMU_unsetRom(); + NDS_SetROM(rom.data(), rom.size()); + gameInfo.loadData((char*)rom.data(), rom.size()); + + frameSkip = xsf.GetTagValue("_frames", -1); + CommonSettings.rigorous_timing = true; + CommonSettings.spu_advanced = true; + CommonSettings.advanced_timing = true; + + xsf_reset(frameSkip); + + set_stream_bitrate(DESMUME_SAMPLE_RATE*2*2*8); + open_audio(FMT_S16_NE, DESMUME_SAMPLE_RATE, 2); + + ignore_length = aud_get_bool(CFG_ID, "ignore_length"); + while (!check_stop() && (pos < length || ignore_length)) + { + int seek_value = check_seek(); + + if (seek_value >= 0) + { + if (seek_value < pos) { + xsf_reset(frameSkip); + pos = 0; + } + while (pos < seek_value) + { + while (buffer_rope.size()) { + pos += buffer_rope.front().size() * 1000 / DESMUME_SAMPLE_RATE / 4; + buffer_rope.pop_front(); + } + NDS_exec(); + SPU_Emulate_user(); + } + buffer_rope.clear(); + } + + while (!buffer_rope.size() && !check_stop()) { + NDS_exec(); + SPU_Emulate_user(); + } + while (buffer_rope.size() && !check_stop()) { + auto& front = buffer_rope.front(); + if (pos > length - fade && !ignore_length) { + float fadeFactor = (length - pos) / (1.0 * fade); + int sampleCount = front.size() / 2; + int16_t* sampleBuffer = reinterpret_cast(front.data()); + for (int i = 0; i < sampleCount; i++) { + sampleBuffer[i] *= fadeFactor; + } + } + write_audio(front.data(), front.size()); + pos += front.size() * 1000 / DESMUME_SAMPLE_RATE / 4; + buffer_rope.pop_front(); + } + } + } catch (std::exception& e) { + std::cerr << "Exception: " << e.what() << std::endl; + error = true; + } + + MMU_unsetRom(); + NDS_DeInit(); + dirpath = String(); + execute = false; return !error; } @@ -228,9 +425,26 @@ const char *const XSFPlugin::exts[] = { "2sf", "mini2sf", nullptr }; +static const ComboItem sampleRateItems[] = { + ComboItem(N_("32728 Hz"), 32728), + ComboItem(N_("44100 Hz"), 44100), + ComboItem(N_("48000 Hz"), 48000), + ComboItem(N_("65456 Hz"), 65456) +}; + +static const ComboItem interpItems[] = { + ComboItem(N_("None"), "none"), + ComboItem(N_("Linear"), "linear"), + ComboItem(N_("Cosine"), "cosine"), + ComboItem(N_("Sharp"), "sharp") +}; + const PreferencesWidget XSFPlugin::widgets[] = { - WidgetLabel(N_("XSF Configuration")), - WidgetCheck(N_("Ignore length from file"), WidgetBool(CFG_ID, "ignore_length")), + WidgetLabel(N_("XSF Configuration")), + WidgetCheck(N_("Ignore length from file"), WidgetBool(CFG_ID, "ignore_length", [] { ignore_length = aud_get_bool(CFG_ID, "ignore_length"); } )), + WidgetSpin(N_("Default fade time:"), WidgetInt(CFG_ID, "fade"), { 0, 15000, 100, N_("ms") }), + WidgetCombo(N_("Sample rate:"), WidgetInt(CFG_ID, "sample_rate"), {{ sampleRateItems }}), + WidgetCombo(N_("Interpolation mode:"), WidgetString(CFG_ID, "interpolation_mode", setInterp), {{ interpItems }}) }; const PluginPreferences XSFPlugin::prefs = {{widgets}}; diff -Nru audacious-plugins-4.1/src/xsf/sndif2sf.cc audacious-plugins-4.3.1/src/xsf/sndif2sf.cc --- audacious-plugins-4.1/src/xsf/sndif2sf.cc 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/sndif2sf.cc 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,108 @@ +/** + * Desmume sound interface for audio export + * Copyright (c) 2014 Naram Qashat + * Copyright (c) 2020 Adam Higerd + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the names of R. Belmont and Richard Bannister nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "sndif2sf.h" +#include "desmume/NDSSystem.h" +#include + +std::list> buffer_rope; + +static struct +{ + std::vector buf; + unsigned filled, used; + uint32_t bufferbytes, cycles; + int xfs_load, sync_type; +} sndifwork = {std::vector(), 0, 0, 0, 0, 0, 0}; + +static void SNDIFDeInit() { + int buffersize = sndifwork.buf.size(); + sndifwork.buf.resize(0); + sndifwork.buf.resize(buffersize); + buffer_rope.clear(); +} + +static int SNDIFInit(int buffersize) +{ + uint32_t bufferbytes = buffersize * sizeof(int16_t); + SNDIFDeInit(); + sndifwork.buf.resize(bufferbytes + 3); + sndifwork.bufferbytes = bufferbytes; + sndifwork.filled = sndifwork.used = 0; + sndifwork.cycles = 0; + return 0; +} + +static void SNDIFMuteAudio() { } +static void SNDIFUnMuteAudio() { } +static void SNDIFSetVolume(int) { } + +static uint32_t SNDIFGetAudioSpace() +{ + return sndifwork.bufferbytes >> 2; // bytes to samples +} + +static void SNDIFUpdateAudio(int16_t *buffer, uint32_t num_samples) +{ + num_samples <<= 1; // stereo + uint32_t num_bytes = num_samples << 1; + if (num_bytes > sndifwork.bufferbytes) { + num_bytes = sndifwork.bufferbytes; + num_samples = num_bytes >> 1; + } + memcpy(&sndifwork.buf[0], buffer, num_bytes); + buffer_rope.push_back(std::vector(reinterpret_cast(buffer), reinterpret_cast(buffer) + num_bytes)); + sndifwork.filled = num_bytes; + sndifwork.used = 0; +} + +const int SNDIFID_2SF = 1; +SoundInterface_struct SNDIF_2SF = +{ + SNDIFID_2SF, + "2sf Sound Interface", + SNDIFInit, + SNDIFDeInit, + SNDIFUpdateAudio, + SNDIFGetAudioSpace, + SNDIFMuteAudio, + SNDIFUnMuteAudio, + SNDIFSetVolume, + nullptr, + nullptr, + nullptr +}; + +SoundInterface_struct *SNDCoreList[] = +{ + &SNDIF_2SF, + &SNDDummy, + nullptr +}; diff -Nru audacious-plugins-4.1/src/xsf/sndif2sf.h audacious-plugins-4.3.1/src/xsf/sndif2sf.h --- audacious-plugins-4.1/src/xsf/sndif2sf.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/sndif2sf.h 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,39 @@ +/** + * Desmume sound interface for audio export + * Copyright (c) 2014 Naram Qashat + * Copyright (c) 2020 Adam Higerd + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the names of R. Belmont and Richard Bannister nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#pragma once + +#include "desmume/SPU.h" +#include +#include +#include + +extern const int SNDIFID_2SF; +extern SoundInterface_struct SNDIF_2SF; +extern std::list> buffer_rope; diff -Nru audacious-plugins-4.1/src/xsf/spu/adpcmdecoder.cc audacious-plugins-4.3.1/src/xsf/spu/adpcmdecoder.cc --- audacious-plugins-4.1/src/xsf/spu/adpcmdecoder.cc 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/spu/adpcmdecoder.cc 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,106 @@ +/** + * ADPCM decoder + * Copyright (c) 2020 Adam Higerd + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "adpcmdecoder.h" +#include + +template +static inline T clamp(T2 value, T lower, T upper) +{ + return value < lower ? lower : (value > upper ? upper : value); +} + +template +static inline T parseInt(const Container& buffer, int offset) +{ + uint64_t result = 0; + for (int i = sizeof(T) - 1; i >= 0; --i) { + result = (result << 8) | uint8_t(buffer[offset + i]); + } + return T(result); +} + +static const int16_t adpcmIndex[] = { -1, -1, -1, -1, 2, 4, 6, 8, }; + +static const int16_t adpcmStep[] = { + 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, + 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, + 50, 55, 60, 66, 73, 80, 88, 97, 107, 118, + 130, 143, 157, 173, 190, 209, 230, 253, 279, 307, + 337, 371, 408, 449, 494, 544, 598, 658, 724, 796, + 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066, + 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, + 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, + 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767, +}; +static const int16_t maxAdpcmStep = (sizeof(adpcmStep) >> 1) - 1; + +AdpcmDecoder::AdpcmDecoder(int16_t initialPredictor, int16_t initialStep) +: predictor(initialPredictor), index(clamp(initialStep, 0, maxAdpcmStep)) +{ + // initializers only +} + +int16_t AdpcmDecoder::getNextSample(uint8_t value) +{ + int16_t step = adpcmStep[index]; + int32_t delta = step >> 3; + if (value & 0x04) delta += step; + if (value & 0x02) delta += step >> 1; + if (value & 0x01) delta += step >> 2; + if (value & 0x08) delta = -delta; + /* + // This implementation is simpler and obeys the spec, but it suffers from low-bit rounding + // errors that introduce a slow DC drift that causes looping to produce pops. + int32_t delta = (int32_t(value & 0x08 ? -step : step) * ((value << 1 & 0x0f) + 0x01)) >> 3; + */ + if (predictor + delta == -0x8000) { + predictor = -0x8000; + } else { + predictor = clamp(predictor + delta, -0x7fff, 0x7fff); + } + index = clamp(index + adpcmIndex[value & 0x07], 0, maxAdpcmStep); + return predictor; +} + +std::vector AdpcmDecoder::decodeFile(const std::vector& data, uint32_t offset, uint32_t length) +{ + if (!length) { + length = data.size() - offset; + } + AdpcmDecoder adpcm(parseInt(data, offset), parseInt(data, offset + 2)); + return adpcm.decode(data, offset + 4, length - 4); +} + +std::vector AdpcmDecoder::decode(const std::vector& data, uint32_t offset, uint32_t length) +{ + if (!length) { + length = data.size() - offset; + } + std::vector sample; + sample.reserve(length << 1); + for (int i = 0; i < length; i++) { + sample.push_back(getNextSample(data[offset + i] & 0x0f)); + sample.push_back(getNextSample(uint8_t(data[offset + i] & 0xf0) >> 4)); + } + return sample; +} diff -Nru audacious-plugins-4.1/src/xsf/spu/adpcmdecoder.h audacious-plugins-4.3.1/src/xsf/spu/adpcmdecoder.h --- audacious-plugins-4.1/src/xsf/spu/adpcmdecoder.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/spu/adpcmdecoder.h 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,43 @@ +/** + * ADPCM decoder + * Copyright (c) 2020 Adam Higerd + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef ADPCMDECODER_H +#define ADPCMDECODER_H + +#include +#include + +class AdpcmDecoder +{ +private: + int16_t predictor; + int8_t index; + +public: + AdpcmDecoder(int16_t initialPredictor, int16_t initialStep); + int16_t getNextSample(uint8_t value); + + std::vector decode(const std::vector& data, uint32_t offset = 0, uint32_t length = 0); + static std::vector decodeFile(const std::vector& data, uint32_t offset = 0, uint32_t length = 0); +}; + +#endif diff -Nru audacious-plugins-4.1/src/xsf/spu/interpolator.cc audacious-plugins-4.3.1/src/xsf/spu/interpolator.cc --- audacious-plugins-4.1/src/xsf/spu/interpolator.cc 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/spu/interpolator.cc 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,102 @@ +/** + * Interpolation functions for resampling audio + * Copyright (c) 2020 Adam Higerd + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "interpolator.h" +#include + +static LinearInterpolator* iLin = new LinearInterpolator; + +// Keep in the same order as SPUInterpolationMode +IInterpolator* IInterpolator::allInterpolators[4] = { + nullptr, + iLin, + new CosineInterpolator, + new SharpIInterpolator +}; + +static inline int32_t lerp(int32_t left, int32_t right, double weight) +{ + return (left * (1 - weight)) + (right * weight); +} + +int32_t LinearInterpolator::interpolate(const std::vector& data, double time) const +{ + if (time < 0) { + return 0; + } + return lerp(data[time], data[time + 1], time - std::floor(time)); +} + +CosineInterpolator::CosineInterpolator() +{ + for(int i = 0; i < 8192; i++) { + lut[i] = (1.0 - std::cos(M_PI * i / 8192.0) * M_PI) * 0.5; + } +} + +int32_t CosineInterpolator::interpolate(const std::vector& data, double time) const +{ + if (time < 0) { + return 0; + } + int32_t left = data[time]; + int32_t right = data[time + 1]; + double weight = time - std::floor(time); + return lut[std::size_t(weight * 8192)] * (right - left) + right; +} + +int32_t SharpIInterpolator::interpolate(const std::vector& data, double time) const +{ + if (time <= 2) { + return iLin->interpolate(data, time); + } + + std::size_t index = std::size_t(time); + int left = data[index - 1]; + int sample = data[index]; + int right = data[index + 1]; + if ((sample >= left) == (sample >= right)) { + // Always preserve extrema as-is + return sample; + } + int left2 = data[index - 2]; + int right2 = data[index + 2]; + double subsample = time - std::floor(time); + if ((right > right2) == (right > sample) || (left > left2) == (left > sample)) { + // Wider history window is non-monotonic + return lerp(sample, right, subsample); + } + + // Include a linear interpolation of the surrounding samples to try to smooth out single-sample errors + double linear = lerp(left, right, 1.0 + subsample); + // Projection approaching from the left + double mLeft = sample - left; + // Projection approaching from the right + double negSubsample = 1 - subsample; + double mRight = right - sample; + int32_t result = (mLeft * negSubsample + mRight * subsample + linear) / 3; + if ((left <= result) != (result <= right)) { + // If the result isn't monotonic, fall back to linear + return lerp(sample, right, subsample); + } + return result; +} diff -Nru audacious-plugins-4.1/src/xsf/spu/interpolator.h audacious-plugins-4.3.1/src/xsf/spu/interpolator.h --- audacious-plugins-4.1/src/xsf/spu/interpolator.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/spu/interpolator.h 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,62 @@ +/** + * Interpolation functions for resampling audio + * Copyright (c) 2020 Adam Higerd + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#ifndef TWOSF2WAV_INTERPOLATOR_H +#define TWOSF2WAV_INTERPOLATOR_H + +#include +#include + +class IInterpolator +{ +public: + virtual ~IInterpolator() {} + + virtual int32_t interpolate(const std::vector& data, double time) const = 0; + + static IInterpolator* allInterpolators[4]; +}; + +class LinearInterpolator : public IInterpolator +{ +public: + virtual int32_t interpolate(const std::vector& data, double time) const; +}; + +class CosineInterpolator : public IInterpolator +{ +public: + CosineInterpolator(); + + virtual int32_t interpolate(const std::vector& data, double time) const; + +private: + double lut[8192]; +}; + +class SharpIInterpolator : public IInterpolator +{ +public: + virtual int32_t interpolate(const std::vector& data, double time) const; +}; + + +#endif diff -Nru audacious-plugins-4.1/src/xsf/spu/samplecache.cc audacious-plugins-4.3.1/src/xsf/spu/samplecache.cc --- audacious-plugins-4.1/src/xsf/spu/samplecache.cc 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/spu/samplecache.cc 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,54 @@ +/** + * Sample cache + * Copyright (c) 2020 Adam Higerd + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include "samplecache.h" +#include + +static inline constexpr uint64_t makeKey(uint32_t base, uint16_t loop, uint32_t length) +{ + return + // has to be 32-bit aligned, so 2 low bits aren't needed + // has to fit in the memory map, so high 7 bits aren't needed + (uint64_t(base & 0x01FFFFFC) >> 2) | + // loop uses the full 16 bits + uint64_t(loop << 23) | + // max length is 21 bits + (uint64_t(length & 0x1FFFFF) << 39); +} + +const SampleData& SampleCache::getSample(uint32_t baseAddr, uint16_t loopStartWords, uint32_t loopLengthWords, SampleData::Format format) +{ + uint64_t key = makeKey(baseAddr, loopStartWords, loopLengthWords); + auto iter = samples.find(key); + if (iter == samples.end()) { + iter = samples.emplace( + std::piecewise_construct, + std::forward_as_tuple(key), + std::forward_as_tuple(baseAddr, loopStartWords << 2, (loopStartWords + loopLengthWords) << 2, format) + ).first; + } + return iter->second; +} + +void SampleCache::clear() +{ + samples.clear(); +} diff -Nru audacious-plugins-4.1/src/xsf/spu/samplecache.h audacious-plugins-4.3.1/src/xsf/spu/samplecache.h --- audacious-plugins-4.1/src/xsf/spu/samplecache.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/spu/samplecache.h 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,37 @@ +/** + * Sample cache + * Copyright (c) 2020 Adam Higerd + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#ifndef TWOSF2WAV_SAMPLECACHE_H +#define TWOSF2WAV_SAMPLECACHE_H + +#include +#include "sampledata.h" + +class SampleCache { +public: + const SampleData& getSample(uint32_t baseAddr, uint16_t loopStartWords, uint32_t loopLengthWords, SampleData::Format format); + void clear(); + +private: + std::unordered_map samples; +}; + +#endif diff -Nru audacious-plugins-4.1/src/xsf/spu/sampledata.cc audacious-plugins-4.3.1/src/xsf/spu/sampledata.cc --- audacious-plugins-4.1/src/xsf/spu/sampledata.cc 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/spu/sampledata.cc 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,107 @@ +/** + * Caching sample decoder + * Copyright (c) 2020 Adam Higerd + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include "sampledata.h" +#include "adpcmdecoder.h" +#include "interpolator.h" +#include "../desmume/MMU.h" + +SampleData::SampleData() +: std::vector(), baseAddr(0), loopStart(0), loopLength(0) +{ + // initializers only +} + +SampleData::SampleData(uint32_t baseAddr, uint16_t loopStart, uint32_t loopLength, Format format) +: std::vector(), baseAddr(baseAddr), loopStart(loopStart), loopLength(loopLength) +{ + if (format == Pcm8) { + loadPcm8(); + } else if (format == Pcm16) { + loadPcm16(); + } else { + loadAdpcm(); + } +} + +void SampleData::loadPcm8() +{ + loopStart += 3; + resize(loopStart + (loopLength << 2)); + for (int i = 3; i < loopStart; i++) { + (*this)[i] = int8_t(_MMU_read08(baseAddr + i - 3)) << 8; + } + uint32_t length = loopStart + loopLength; + for (int i = loopStart; i < length; i++) { + (*this)[i] = (*this)[length + i] = int8_t(_MMU_read08(baseAddr + i - 3)) << 8; + } +} + +void SampleData::loadPcm16() +{ + loopStart >>= 1; + loopLength >>= 1; + loopStart += 3; + resize(loopStart + (loopLength << 2)); + uint32_t addr = baseAddr; + for (int i = 3; i < loopStart; i++) { + (*this)[i] = int16_t(_MMU_read16(addr)); + addr += 2; + } + uint32_t length = loopStart + loopLength; + for (int i = loopStart; i < length; i++) { + (*this)[i] = (*this)[length + i] = int16_t(_MMU_read16(addr)); + addr += 2; + } +} + +void SampleData::loadAdpcm() +{ + uint32_t length = loopStart + loopLength; + loopStart = ((loopStart - 4) << 1) + 11; + loopLength <<= 1; + resize(loopStart + (loopLength << 2)); + AdpcmDecoder adpcm( + int16_t(_MMU_read16(baseAddr)), + int16_t(_MMU_read16(baseAddr + 2)) + ); + int j = 11; + for (int i = 4; i < length; i++) { + uint8_t data = uint8_t(_MMU_read08(baseAddr + i)); + (*this)[j++] = adpcm.getNextSample(uint8_t(data & 0x0f)); + (*this)[j++] = adpcm.getNextSample(uint8_t(data & 0xf0) >> 4); + } + uint32_t loopEnd = loopStart + loopLength; + for (j = loopStart; j < loopEnd; j++) { + (*this)[j + loopLength] = (*this)[j]; + } +} + +int32_t SampleData::sampleAt(double time, IInterpolator* interp) const +{ + if (!baseAddr) { + return 0; + } + if (!interp) { + return (*this)[uint32_t(time)]; + } + return interp->interpolate(*this, time); +} diff -Nru audacious-plugins-4.1/src/xsf/spu/sampledata.h audacious-plugins-4.3.1/src/xsf/spu/sampledata.h --- audacious-plugins-4.1/src/xsf/spu/sampledata.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/spu/sampledata.h 2023-04-29 20:17:32.000000000 +0000 @@ -0,0 +1,59 @@ +/** + * Caching sample decoder + * Copyright (c) 2020 Adam Higerd + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#ifndef TWOSF2WAV_SAMPLEDATA_H +#define TWOSF2WAV_SAMPLEDATA_H + +#include +#include +class IInterpolator; + +class SampleData : public std::vector +{ +public: + enum Format { + Pcm8, + Pcm16, + Adpcm + }; + + SampleData(); + SampleData(uint32_t baseAddr, uint16_t loopStart, uint32_t loopLength, Format format); + SampleData(const SampleData&) = default; + SampleData(SampleData&&) = default; + ~SampleData() = default; + + SampleData& operator=(const SampleData&) = default; + SampleData& operator=(SampleData&&) = default; + + int32_t sampleAt(double time, IInterpolator* interp = nullptr) const; + + uint32_t baseAddr; + uint16_t loopStart; + uint32_t loopLength; + +private: + void loadPcm8(); + void loadPcm16(); + void loadAdpcm(); +}; + +#endif diff -Nru audacious-plugins-4.1/src/xsf/tagget.h audacious-plugins-4.3.1/src/xsf/tagget.h --- audacious-plugins-4.1/src/xsf/tagget.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/tagget.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,128 +0,0 @@ -static int getdwordle(const unsigned char *pData) -{ - return pData[0] | ((pData[1]) << 8) | ((pData[2]) << 16) | ((pData[3]) << 24); -} - -static int xsf_tagsearchraw(const unsigned char *pData, int dwSize) -{ - int dwPos; - int dwReservedAreaSize; - int dwProgramLength; -/* int dwProgramCRC; */ - if (dwSize < 16 + 5 + 1) return 0; - if (pData[0] != 'P') return 0; - if (pData[1] != 'S') return 0; - if (pData[2] != 'F') return 0; - dwReservedAreaSize = getdwordle(pData + 4); - dwProgramLength = getdwordle(pData + 8); -/* dwProgramCRC = getdwordle(pData + 12); */ - dwPos = 16 + dwReservedAreaSize + dwProgramLength; - if (dwPos >= dwSize) return 0; - return dwPos; -} -static int xsf_tagsearch(int *pdwRet, const unsigned char *pData, int dwSize) -{ - int dwPos = xsf_tagsearchraw(pData, dwSize); - if (dwSize < dwPos + 5) return 0; - if (memcmp(pData + dwPos, "[TAG]", 5)) return 0; - *pdwRet = dwPos + 5; - return 1; -} - -enum xsf_tagenum_callback_returnvalue -{ - xsf_tagenum_callback_returnvaluecontinue = 0, - xsf_tagenum_callback_returnvaluebreak = 1 -}; -typedef int (*pfnxsf_tagenum_callback_t)(void *pWork, const char *pNameTop, const char *pNameEnd, const char *pValueTop, const char *pValueEnd); -static int xsf_tagenumraw(pfnxsf_tagenum_callback_t pCallBack, void *pWork, const unsigned char *pData, int dwSize) -{ - int dwPos = 0; - while (dwPos < dwSize) - { - int dwNameTop; - int dwNameEnd; - int dwValueTop; - int dwValueEnd; - if (dwPos < dwSize && pData[dwPos] == 0x0a) dwPos++; - while (dwPos < dwSize && pData[dwPos] != 0x0a && 0x01 <= pData[dwPos] && pData[dwPos] <= 0x20) - dwPos++; - if (dwPos >= dwSize || pData[dwPos] == 0x0a) continue; - dwNameTop = dwPos; - while (dwPos < dwSize && pData[dwPos] != 0x0a && pData[dwPos] != '=') - dwPos++; - if (dwPos >= dwSize || pData[dwPos] == 0x0a) continue; - dwNameEnd = dwPos; - while (dwNameTop < dwNameEnd && 0x01 <= pData[dwNameEnd - 1] && pData[dwNameEnd - 1] <= 0x20) - dwNameEnd--; - if (dwPos < dwSize && pData[dwPos] == '=') dwPos++; - while (dwPos < dwSize && pData[dwPos] != 0x0a && 0x01 <= pData[dwPos] && pData[dwPos] <= 0x20) - dwPos++; - dwValueTop = dwPos; - while (dwPos < dwSize && pData[dwPos] != 0x0a) - dwPos++; - dwValueEnd = dwPos; - while (dwValueTop < dwValueEnd && 0x01 <= pData[dwValueEnd - 1] && pData[dwValueEnd - 1] <= 0x20) - dwValueEnd--; - - if (pCallBack) - { - if (xsf_tagenum_callback_returnvaluecontinue != pCallBack(pWork, (const char *)pData + dwNameTop, (const char *)pData + dwNameEnd, (const char *)pData + dwValueTop, (const char *)pData + dwValueEnd)) - return -1; - } - } - return 1; -} - -static int xsf_tagenum(pfnxsf_tagenum_callback_t pCallBack, void *pWork, const unsigned char *pData, int dwSize) -{ - int dwPos = 0; - if (!xsf_tagsearch(&dwPos, pData, dwSize)) - return 0; - return xsf_tagenumraw(pCallBack, pWork, pData + dwPos, dwSize - dwPos); -} - -typedef struct -{ - int taglen; - const char *tag; - char *ret; -} xsf_tagget_work_t; - -static int xsf_tagenum_callback_tagget(void *pWork, const char *pNameTop, const char *pNameEnd, const char *pValueTop, const char *pValueEnd) -{ - xsf_tagget_work_t *pwork = (xsf_tagget_work_t *)pWork; - if (pwork->taglen == pNameEnd - pNameTop && !strcmp_nocase(pNameTop, pwork->tag, pwork->taglen)) - { - char *ret = (char *)malloc(pValueEnd - pValueTop + 1); - if (!ret) return xsf_tagenum_callback_returnvaluecontinue; - memcpy(ret, pValueTop, pValueEnd - pValueTop); - ret[pValueEnd - pValueTop] = 0; - pwork->ret = ret; - return xsf_tagenum_callback_returnvaluebreak; - } - return xsf_tagenum_callback_returnvaluecontinue; -} - -static char *xsf_tagget(const char *tag, const unsigned char *pData, int dwSize) -{ - xsf_tagget_work_t work; - work.ret = 0; - work.tag = tag; - work.taglen = (int)strlen(tag); - xsf_tagenum(xsf_tagenum_callback_tagget, &work, pData, dwSize); - return work.ret; -} - -static int xsf_tagget_int(const char *tag, const unsigned char *pData, int dwSize, int value_default) -{ - int ret = value_default; - char *value = xsf_tagget(tag, pData, dwSize); - if (value) - { - if (*value) ret = atoi(value); - free(value); - } - return ret; -} - diff -Nru audacious-plugins-4.1/src/xsf/vio2sf.cc audacious-plugins-4.3.1/src/xsf/vio2sf.cc --- audacious-plugins-4.1/src/xsf/vio2sf.cc 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/vio2sf.cc 1970-01-01 00:00:00.000000000 +0000 @@ -1,828 +0,0 @@ -#include -#include -#include -#include - -#include "desmume/MMU.h" -#include "desmume/armcpu.h" -#include "desmume/NDSSystem.h" -#include "desmume/SPU.h" -#include "desmume/cp15.h" - -#include - -#include - -#include "tagget.h" -#include "vio2sf.h" - -volatile BOOL execute = false; - -static struct -{ - unsigned char *rom; - unsigned char *state; - unsigned romsize; - unsigned statesize; - unsigned stateptr; -} loaderwork = {0, 0, 0, 0, 0}; - -static void load_term(void) -{ - if (loaderwork.rom) - { - free(loaderwork.rom); - loaderwork.rom = 0; - } - loaderwork.romsize = 0; - if (loaderwork.state) - { - free(loaderwork.state); - loaderwork.state = 0; - } - loaderwork.statesize = 0; -} - -static int load_map(int issave, unsigned char *udata, unsigned usize) -{ - unsigned char *iptr; - unsigned isize; - unsigned char *xptr; - unsigned xsize = getdwordle(udata + 4); - unsigned xofs = getdwordle(udata + 0); - if (issave) - { - iptr = loaderwork.state; - isize = loaderwork.statesize; - loaderwork.state = 0; - loaderwork.statesize = 0; - } - else - { - iptr = loaderwork.rom; - isize = loaderwork.romsize; - loaderwork.rom = 0; - loaderwork.romsize = 0; - } - if (!iptr) - { - iptr = (unsigned char *) malloc(xofs + xsize + 10); - if (!iptr) - return false; - memset(iptr, 0, xofs + xsize + 10); - isize = xofs + xsize; - } - else if (isize < xofs + xsize) - { - unsigned rsize = xofs + xsize; - if (!issave) - { - rsize -= 1; - rsize |= rsize >> 1; - rsize |= rsize >> 2; - rsize |= rsize >> 4; - rsize |= rsize >> 8; - rsize |= rsize >> 16; - rsize += 1; - } - xptr = (unsigned char *) realloc(iptr, xofs + rsize + 10); - if (!xptr) - { - free(iptr); - return false; - } - iptr = xptr; - isize = rsize; - } - memcpy(iptr + xofs, udata + 8, xsize); - if (issave) - { - loaderwork.state = iptr; - loaderwork.statesize = isize; - } - else - { - loaderwork.rom = iptr; - loaderwork.romsize = isize; - } - return true; -} - -static int load_mapz(int issave, unsigned char *zdata, unsigned zsize, unsigned zcrc) -{ - int ret; - int zerr; - uLongf usize = 8; - uLongf rsize = usize; - unsigned char *udata; - unsigned char *rdata; - - udata = (unsigned char *) malloc(usize); - if (!udata) - return false; - - while (Z_OK != (zerr = uncompress(udata, &usize, zdata, zsize))) - { - if (Z_MEM_ERROR != zerr && Z_BUF_ERROR != zerr) - { - free(udata); - return false; - } - if (usize >= 8) - { - usize = getdwordle(udata + 4) + 8; - if (usize < rsize) - { - rsize += rsize; - usize = rsize; - } - else - rsize = usize; - } - else - { - rsize += rsize; - usize = rsize; - } - free(udata); - udata = (unsigned char *) malloc(usize); - if (!udata) - return false; - } - - rdata = (unsigned char *) realloc(udata, usize); - if (!rdata) - { - free(udata); - return false; - } - - if (0) - { - unsigned ccrc = crc32(crc32(0L, Z_NULL, 0), rdata, usize); - if (ccrc != zcrc) - return false; - } - - ret = load_map(issave, rdata, usize); - free(rdata); - return ret; -} - -static int load_psf_one(unsigned char *pfile, unsigned bytes) -{ - unsigned char *ptr = pfile; - unsigned code_size; - unsigned resv_size; - unsigned code_crc; - if (bytes < 16 || getdwordle(ptr) != 0x24465350) - return false; - - resv_size = getdwordle(ptr + 4); - code_size = getdwordle(ptr + 8); - code_crc = getdwordle(ptr + 12); - - if (resv_size) - { - unsigned resv_pos = 0; - ptr = pfile + 16; - if (16+ resv_size > bytes) - return false; - while (resv_pos + 12 < resv_size) - { - unsigned save_size = getdwordle(ptr + resv_pos + 4); - unsigned save_crc = getdwordle(ptr + resv_pos + 8); - if (getdwordle(ptr + resv_pos + 0) == 0x45564153) - { - if (resv_pos + 12 + save_size > resv_size) - return false; - if (!load_mapz(1, ptr + resv_pos + 12, save_size, save_crc)) - return false; - } - resv_pos += 12 + save_size; - } - } - - if (code_size) - { - ptr = pfile + 16 + resv_size; - if (16 + resv_size + code_size > bytes) - return false; - if (!load_mapz(0, ptr, code_size, code_crc)) - return false; - } - - return true; -} - -typedef struct -{ - const char *tag; - int taglen; - int level; - int found; -} loadlibwork_t; - -static int load_libs(int level, void *pfile, unsigned bytes); - -static int load_psfcb(void *pWork, const char *pNameTop, const char *pNameEnd, const char *pValueTop, const char *pValueEnd) -{ - loadlibwork_t *pwork = (loadlibwork_t *)pWork; - int ret = xsf_tagenum_callback_returnvaluecontinue; - if (pNameEnd - pNameTop == pwork->taglen && !strcmp_nocase(pNameTop, pwork->tag, pwork->taglen)) - { - StringBuf lib = str_copy(pValueTop, pValueEnd - pValueTop); - Index buf = xsf_get_lib(lib); - - if (buf.len() && - load_libs(pwork->level + 1, buf.begin(), buf.len()) && - load_psf_one((unsigned char *) buf.begin(), buf.len())) - { - pwork->found++; - } - else - { - ret = xsf_tagenum_callback_returnvaluebreak; - } - } - return ret; -} - -static int load_libs(int level, void *pfile, unsigned bytes) -{ - char tbuf[16]; - loadlibwork_t work; - int n = 1; - - if (level > 10) - return true; - - work.level = level; - work.tag = "_lib"; - - do - { - work.taglen = strlen(work.tag); - work.found = 0; - - if (xsf_tagenum(load_psfcb, &work, (unsigned char *) pfile, bytes) < 0) - return false; - -#ifdef HAVE_SPRINTF_S - sprintf_s(tbuf, sizeof(tbuf), "_lib%10d", ++n); -#else - sprintf(tbuf, "_lib%10d", ++n); -#endif - work.tag = tbuf; - } - while (work.found); - - return true; -} - -static int load_psf(void *pfile, unsigned bytes) -{ - load_term(); - - if (!load_libs(1, pfile, bytes) || !load_psf_one((unsigned char *) pfile, bytes)) - return false; - - return true; -} - -static void load_getstateinit(unsigned ptr) -{ - loaderwork.stateptr = ptr; -} - -static u16 getwordle(const unsigned char *pData) -{ - return pData[0] | (((u16)pData[1]) << 8); -} - -static void load_getsta(Status_Reg *ptr, unsigned l) -{ - unsigned s = l << 2; - unsigned i; - if ((loaderwork.stateptr > loaderwork.statesize) || ((loaderwork.stateptr + s) > loaderwork.statesize)) - return; - for (i = 0; i < l; i++) - { - u32 st = getdwordle(loaderwork.state + loaderwork.stateptr + (i << 2)); - ptr[i].bits.N = (st >> 31) & 1; - ptr[i].bits.Z = (st >> 30) & 1; - ptr[i].bits.C = (st >> 29) & 1; - ptr[i].bits.V = (st >> 28) & 1; - ptr[i].bits.Q = (st >> 27) & 1; - ptr[i].bits.RAZ = (st >> 8) & ((1 << 19) - 1); - ptr[i].bits.I = (st >> 7) & 1; - ptr[i].bits.F = (st >> 6) & 1; - ptr[i].bits.T = (st >> 5) & 1; - ptr[i].bits.mode = (st >> 0) & 0x1f; - } - loaderwork.stateptr += s; -} - -static void load_getbool(BOOL *ptr, unsigned l) -{ - unsigned s = l << 2; - unsigned i; - if ((loaderwork.stateptr > loaderwork.statesize) || ((loaderwork.stateptr + s) > loaderwork.statesize)) - return; - for (i = 0; i < l; i++) - ptr[i] = (BOOL)getdwordle(loaderwork.state + loaderwork.stateptr + (i << 2)); - loaderwork.stateptr += s; -} - -#if defined(SIGNED_IS_NOT_2S_COMPLEMENT) -/* 2's complement */ -#define u32tos32(v) ((s32)((((s64)(v)) ^ 0x8000) - 0x8000)) -#else -/* 2's complement */ -#define u32tos32(v) ((s32)v) -#endif - -static void load_gets32(s32 *ptr, unsigned l) -{ - unsigned s = l << 2; - unsigned i; - if ((loaderwork.stateptr > loaderwork.statesize) || ((loaderwork.stateptr + s) > loaderwork.statesize)) - return; - for (i = 0; i < l; i++) - ptr[i] = u32tos32(getdwordle(loaderwork.state + loaderwork.stateptr + (i << 2))); - loaderwork.stateptr += s; -} - -static void load_getu32(u32 *ptr, unsigned l) -{ - unsigned s = l << 2; - unsigned i; - if ((loaderwork.stateptr > loaderwork.statesize) || ((loaderwork.stateptr + s) > loaderwork.statesize)) - return; - for (i = 0; i < l; i++) - ptr[i] = getdwordle(loaderwork.state + loaderwork.stateptr + (i << 2)); - loaderwork.stateptr += s; -} - -static void load_getu16(u16 *ptr, unsigned l) -{ - unsigned s = l << 1; - unsigned i; - if ((loaderwork.stateptr > loaderwork.statesize) || ((loaderwork.stateptr + s) > loaderwork.statesize)) - return; - for (i = 0; i < l; i++) - ptr[i] = getwordle(loaderwork.state + loaderwork.stateptr + (i << 1)); - loaderwork.stateptr += s; -} - -static void load_getu8(u8 *ptr, unsigned l) -{ - unsigned s = l; - unsigned i; - if ((loaderwork.stateptr > loaderwork.statesize) || ((loaderwork.stateptr + s) > loaderwork.statesize)) - return; - for (i = 0; i < l; i++) - ptr[i] = loaderwork.state[loaderwork.stateptr + i]; - loaderwork.stateptr += s; -} - -void gdb_stub_fix(armcpu_t *armcpu) -{ - /* armcpu->R[15] = armcpu->instruct_adr; */ - armcpu->next_instruction = armcpu->instruct_adr; - if(armcpu->CPSR.bits.T == 0) - { - armcpu->instruction = MMU_read32_acl(armcpu->proc_ID, armcpu->next_instruction,CP15_ACCESS_EXECUTE); - armcpu->instruct_adr = armcpu->next_instruction; - armcpu->next_instruction += 4; - armcpu->R[15] = armcpu->next_instruction + 4; - } - else - { - armcpu->instruction = MMU_read16_acl(armcpu->proc_ID, armcpu->next_instruction,CP15_ACCESS_EXECUTE); - armcpu->instruct_adr = armcpu->next_instruction; - armcpu->next_instruction += 2; - armcpu->R[15] = armcpu->next_instruction + 2; - } -} - -static void load_setstate(void) -{ - if (!loaderwork.statesize) - return; - - /* Skip over "Desmume Save File" crap */ - load_getstateinit(0x17); - - /* Read ARM7 cpu registers */ - load_getu32(&NDS_ARM7.proc_ID, 1); - load_getu32(&NDS_ARM7.instruction, 1); - load_getu32(&NDS_ARM7.instruct_adr, 1); - load_getu32(&NDS_ARM7.next_instruction, 1); - load_getu32(NDS_ARM7.R, 16); - load_getsta(&NDS_ARM7.CPSR, 1); - load_getsta(&NDS_ARM7.SPSR, 1); - load_getu32(&NDS_ARM7.R13_usr, 1); - load_getu32(&NDS_ARM7.R14_usr, 1); - load_getu32(&NDS_ARM7.R13_svc, 1); - load_getu32(&NDS_ARM7.R14_svc, 1); - load_getu32(&NDS_ARM7.R13_abt, 1); - load_getu32(&NDS_ARM7.R14_abt, 1); - load_getu32(&NDS_ARM7.R13_und, 1); - load_getu32(&NDS_ARM7.R14_und, 1); - load_getu32(&NDS_ARM7.R13_irq, 1); - load_getu32(&NDS_ARM7.R14_irq, 1); - load_getu32(&NDS_ARM7.R8_fiq, 1); - load_getu32(&NDS_ARM7.R9_fiq, 1); - load_getu32(&NDS_ARM7.R10_fiq, 1); - load_getu32(&NDS_ARM7.R11_fiq, 1); - load_getu32(&NDS_ARM7.R12_fiq, 1); - load_getu32(&NDS_ARM7.R13_fiq, 1); - load_getu32(&NDS_ARM7.R14_fiq, 1); - load_getsta(&NDS_ARM7.SPSR_svc, 1); - load_getsta(&NDS_ARM7.SPSR_abt, 1); - load_getsta(&NDS_ARM7.SPSR_und, 1); - load_getsta(&NDS_ARM7.SPSR_irq, 1); - load_getsta(&NDS_ARM7.SPSR_fiq, 1); - load_getu32(&NDS_ARM7.intVector, 1); - load_getu8(&NDS_ARM7.LDTBit, 1); - load_getbool(&NDS_ARM7.waitIRQ, 1); - load_getbool(&NDS_ARM7.wIRQ, 1); - load_getbool(&NDS_ARM7.wirq, 1); - - /* Read ARM9 cpu registers */ - load_getu32(&NDS_ARM9.proc_ID, 1); - load_getu32(&NDS_ARM9.instruction, 1); - load_getu32(&NDS_ARM9.instruct_adr, 1); - load_getu32(&NDS_ARM9.next_instruction, 1); - load_getu32(NDS_ARM9.R, 16); - load_getsta(&NDS_ARM9.CPSR, 1); - load_getsta(&NDS_ARM9.SPSR, 1); - load_getu32(&NDS_ARM9.R13_usr, 1); - load_getu32(&NDS_ARM9.R14_usr, 1); - load_getu32(&NDS_ARM9.R13_svc, 1); - load_getu32(&NDS_ARM9.R14_svc, 1); - load_getu32(&NDS_ARM9.R13_abt, 1); - load_getu32(&NDS_ARM9.R14_abt, 1); - load_getu32(&NDS_ARM9.R13_und, 1); - load_getu32(&NDS_ARM9.R14_und, 1); - load_getu32(&NDS_ARM9.R13_irq, 1); - load_getu32(&NDS_ARM9.R14_irq, 1); - load_getu32(&NDS_ARM9.R8_fiq, 1); - load_getu32(&NDS_ARM9.R9_fiq, 1); - load_getu32(&NDS_ARM9.R10_fiq, 1); - load_getu32(&NDS_ARM9.R11_fiq, 1); - load_getu32(&NDS_ARM9.R12_fiq, 1); - load_getu32(&NDS_ARM9.R13_fiq, 1); - load_getu32(&NDS_ARM9.R14_fiq, 1); - load_getsta(&NDS_ARM9.SPSR_svc, 1); - load_getsta(&NDS_ARM9.SPSR_abt, 1); - load_getsta(&NDS_ARM9.SPSR_und, 1); - load_getsta(&NDS_ARM9.SPSR_irq, 1); - load_getsta(&NDS_ARM9.SPSR_fiq, 1); - load_getu32(&NDS_ARM9.intVector, 1); - load_getu8(&NDS_ARM9.LDTBit, 1); - load_getbool(&NDS_ARM9.waitIRQ, 1); - load_getbool(&NDS_ARM9.wIRQ, 1); - load_getbool(&NDS_ARM9.wirq, 1); - - /* Read in other internal variables that are important */ - load_gets32(&nds.ARM9Cycle, 1); - load_gets32(&nds.ARM7Cycle, 1); - load_gets32(&nds.cycles, 1); - load_gets32(nds.timerCycle[0], 4); - load_gets32(nds.timerCycle[1], 4); - load_getbool(nds.timerOver[0], 4); - load_getbool(nds.timerOver[1], 4); - load_gets32(&nds.nextHBlank, 1); - load_getu32(&nds.VCount, 1); - load_getu32(&nds.old, 1); - load_gets32(&nds.diff, 1); - load_getbool(&nds.lignerendu, 1); - load_getu16(&nds.touchX, 1); - load_getu16(&nds.touchY, 1); - - /* Read in memory/registers specific to the ARM9 */ - load_getu8 (ARM9Mem.ARM9_ITCM, 0x8000); - load_getu8 (ARM9Mem.ARM9_DTCM, 0x4000); - load_getu8 (ARM9Mem.ARM9_WRAM, 0x1000000); - load_getu8 (ARM9Mem.MAIN_MEM, 0x400000); - load_getu8 (ARM9Mem.ARM9_REG, 0x10000); - load_getu8 (ARM9Mem.ARM9_VMEM, 0x800); - load_getu8 (ARM9Mem.ARM9_OAM, 0x800); - load_getu8 (ARM9Mem.ARM9_ABG, 0x80000); - load_getu8 (ARM9Mem.ARM9_BBG, 0x20000); - load_getu8 (ARM9Mem.ARM9_AOBJ, 0x40000); - load_getu8 (ARM9Mem.ARM9_BOBJ, 0x20000); - load_getu8 (ARM9Mem.ARM9_LCD, 0xA4000); - - /* Read in memory/registers specific to the ARM7 */ - load_getu8 (MMU.ARM7_ERAM, 0x10000); - load_getu8 (MMU.ARM7_REG, 0x10000); - load_getu8 (MMU.ARM7_WIRAM, 0x10000); - - /* Read in shared memory */ - load_getu8 (MMU.SWIRAM, 0x8000); - -#ifdef GDB_STUB -#else - gdb_stub_fix(&NDS_ARM9); - gdb_stub_fix(&NDS_ARM7); -#endif -} - -static struct -{ - unsigned char *pcmbufalloc; - unsigned char *pcmbuftop; - unsigned filled; - unsigned used; - u32 bufferbytes; - u32 cycles; - int xfs_load; - int sync_type; - int arm7_clockdown_level; - int arm9_clockdown_level; -} sndifwork = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - -static void SNDIFDeInit(void) -{ - if (sndifwork.pcmbufalloc) - { - free(sndifwork.pcmbufalloc); - sndifwork.pcmbufalloc = 0; - sndifwork.pcmbuftop = 0; - sndifwork.bufferbytes = 0; - } -} -static int SNDIFInit(int buffersize) -{ - u32 bufferbytes = buffersize * sizeof(s16); - SNDIFDeInit(); - sndifwork.pcmbufalloc = (unsigned char *) malloc(bufferbytes + 3); - if (!sndifwork.pcmbufalloc) - return -1; - sndifwork.pcmbuftop = (unsigned char *) (((uintptr_t) sndifwork.pcmbufalloc + 3) & ~3); - sndifwork.bufferbytes = bufferbytes; - sndifwork.filled = 0; - sndifwork.used = 0; - sndifwork.cycles = 0; - return 0; -} -static void SNDIFMuteAudio(void) -{ -} -static void SNDIFUnMuteAudio(void) -{ -} -static void SNDIFSetVolume(int volume) -{ -} -static u32 SNDIFGetAudioSpace(void) -{ - return sndifwork.bufferbytes >> 2; // bytes to samples -} -static void SNDIFUpdateAudio(s16 * buffer, u32 num_samples) -{ - u32 num_bytes = num_samples << 2; - if (num_bytes > sndifwork.bufferbytes) num_bytes = sndifwork.bufferbytes; - memcpy(sndifwork.pcmbuftop, buffer, num_bytes); - sndifwork.filled = num_bytes; - sndifwork.used = 0; -} -#define VIO2SFSNDIFID 2 -static SoundInterface_struct VIO2SFSNDIF = -{ - VIO2SFSNDIFID, - "vio2sf Sound Interface", - SNDIFInit, - SNDIFDeInit, - SNDIFUpdateAudio, - SNDIFGetAudioSpace, - SNDIFMuteAudio, - SNDIFUnMuteAudio, - SNDIFSetVolume -}; - -SoundInterface_struct *SNDCoreList[] = { - &VIO2SFSNDIF, - &SNDDummy, - nullptr -}; - -#ifdef GDB_STUB -static struct armcpu_ctrl_iface *arm9_ctrl_iface = 0; -static struct armcpu_ctrl_iface *arm7_ctrl_iface = 0; -#endif - -int xsf_start(void *pfile, unsigned bytes) -{ - int frames = xsf_tagget_int("_frames", (unsigned char *) pfile, bytes, -1); - int clockdown = xsf_tagget_int("_clockdown", (unsigned char *) pfile, bytes, 0); - sndifwork.sync_type = xsf_tagget_int("_vio2sf_sync_type", (unsigned char *) pfile, bytes, 0); - sndifwork.arm9_clockdown_level = xsf_tagget_int("_vio2sf_arm9_clockdown_level", (unsigned char *) pfile, bytes, clockdown); - sndifwork.arm7_clockdown_level = xsf_tagget_int("_vio2sf_arm7_clockdown_level", (unsigned char *) pfile, bytes, clockdown); - - sndifwork.xfs_load = 0; - printf("load_psf... "); - if (!load_psf(pfile, bytes)) - return false; - printf("ok!\n"); - -#ifdef GDB_STUB - if (NDS_Init(&arm9_base_memory_iface, &arm9_ctrl_iface, &arm7_base_memory_iface, &arm7_ctrl_iface)) -#else - if (NDS_Init()) -#endif - return false; - - SPU_ChangeSoundCore(VIO2SFSNDIFID, 737); - - execute = false; - - MMU_unsetRom(); - if (loaderwork.rom) - { - NDS_SetROM(loaderwork.rom, loaderwork.romsize - 1); - } - - NDS_Reset(); - - execute = true; - - if (loaderwork.state) - { - armcp15_t *c9 = (armcp15_t *)NDS_ARM9.coproc[15]; - int proc; - if (frames == -1) - { - - /* set initial ARM9 coprocessor state */ - - armcp15_moveARM2CP(c9, 0x00000000, 0x01, 0x00, 0, 0); - armcp15_moveARM2CP(c9, 0x00000000, 0x07, 0x05, 0, 0); - armcp15_moveARM2CP(c9, 0x00000000, 0x07, 0x06, 0, 0); - armcp15_moveARM2CP(c9, 0x00000000, 0x07, 0x0a, 0, 4); - armcp15_moveARM2CP(c9, 0x04000033, 0x06, 0x00, 0, 4); - armcp15_moveARM2CP(c9, 0x0200002d, 0x06, 0x01, 0, 0); - armcp15_moveARM2CP(c9, 0x027e0021, 0x06, 0x02, 0, 0); - armcp15_moveARM2CP(c9, 0x08000035, 0x06, 0x03, 0, 0); - armcp15_moveARM2CP(c9, 0x027e001b, 0x06, 0x04, 0, 0); - armcp15_moveARM2CP(c9, 0x0100002f, 0x06, 0x05, 0, 0); - armcp15_moveARM2CP(c9, 0xffff001d, 0x06, 0x06, 0, 0); - armcp15_moveARM2CP(c9, 0x027ff017, 0x06, 0x07, 0, 0); - armcp15_moveARM2CP(c9, 0x00000020, 0x09, 0x01, 0, 1); - - armcp15_moveARM2CP(c9, 0x027e000a, 0x09, 0x01, 0, 0); - - armcp15_moveARM2CP(c9, 0x00000042, 0x02, 0x00, 0, 1); - armcp15_moveARM2CP(c9, 0x00000042, 0x02, 0x00, 0, 0); - armcp15_moveARM2CP(c9, 0x00000002, 0x03, 0x00, 0, 0); - armcp15_moveARM2CP(c9, 0x05100011, 0x05, 0x00, 0, 3); - armcp15_moveARM2CP(c9, 0x15111011, 0x05, 0x00, 0, 2); - armcp15_moveARM2CP(c9, 0x07dd1e10, 0x01, 0x00, 0, 0); - armcp15_moveARM2CP(c9, 0x0005707d, 0x01, 0x00, 0, 0); - - armcp15_moveARM2CP(c9, 0x00000000, 0x07, 0x0a, 0, 4); - armcp15_moveARM2CP(c9, 0x02004000, 0x07, 0x05, 0, 1); - armcp15_moveARM2CP(c9, 0x02004000, 0x07, 0x0e, 0, 1); - - /* set initial timer state */ - - MMU_write16(0, REG_TM0CNTL, 0x0000); - MMU_write16(0, REG_TM0CNTH, 0x00C1); - MMU_write16(1, REG_TM0CNTL, 0x0000); - MMU_write16(1, REG_TM0CNTH, 0x00C1); - MMU_write16(1, REG_TM1CNTL, 0xf7e7); - MMU_write16(1, REG_TM1CNTH, 0x00C1); - - /* set initial interrupt state */ - - MMU.reg_IME[0] = 0x00000001; - MMU.reg_IE[0] = 0x00042001; - MMU.reg_IME[1] = 0x00000001; - MMU.reg_IE[1] = 0x0104009d; - } - else if (frames > 0) - { - /* execute boot code */ - int i; - for (i=0; i 0) - { - /* skip 1 sec */ - int i; - for (i=0; i 0) - { - if (remainbytes > bytes) - { - memcpy(ptr, sndifwork.pcmbuftop + sndifwork.used, bytes); - sndifwork.used += bytes; - ptr += bytes; - remainbytes -= bytes; /**/ - bytes = 0; /**/ - break; - } - else - { - memcpy(ptr, sndifwork.pcmbuftop + sndifwork.used, remainbytes); - sndifwork.used += remainbytes; - ptr += remainbytes; - bytes -= remainbytes; - remainbytes = 0; - } - } - if (remainbytes == 0) - { - -#define HBASE_CYCLES 33509300.322234 -#define VBASE_CYCLES (((double)HBASE_CYCLES) / 100) -#define HSAMPLES ((u32)((44100.0 * 6 * (99 + 256)) / HBASE_CYCLES)) -#define VSAMPLES ((u32)((44100.0 * 6 * (99 + 256) * 263) / HBASE_CYCLES)) - - int numsamples; - if (sndifwork.sync_type == 1) - { - /* vsync */ - sndifwork.cycles += (441 * 6 * (99 + 256) * 263); - if (sndifwork.cycles >= (u32)(VBASE_CYCLES * (VSAMPLES + 1))) - { - numsamples = (VSAMPLES + 1); - sndifwork.cycles -= (u32)(VBASE_CYCLES * (VSAMPLES + 1)); - } - else - { - numsamples = (VSAMPLES + 0); - sndifwork.cycles -= (u32)(VBASE_CYCLES * (VSAMPLES + 0)); - } - NDS_exec_frame(sndifwork.arm9_clockdown_level, sndifwork.arm7_clockdown_level); - } - else - { - /* hsync */ - sndifwork.cycles += (44100 * 6 * (99 + 256)); - if (sndifwork.cycles >= (u32)(HBASE_CYCLES * (HSAMPLES + 1))) - { - numsamples = (HSAMPLES + 1); - sndifwork.cycles -= (u32)(HBASE_CYCLES * (HSAMPLES + 1)); - } - else - { - numsamples = (HSAMPLES + 0); - sndifwork.cycles -= (u32)(HBASE_CYCLES * (HSAMPLES + 0)); - } - NDS_exec_hframe(sndifwork.arm9_clockdown_level, sndifwork.arm7_clockdown_level); - } - SPU_EmulateSamples(numsamples); - } - } - return ptr - (unsigned char *)pbuffer; -} - -void xsf_term(void) -{ - MMU_unsetRom(); - NDS_DeInit(); - load_term(); -} diff -Nru audacious-plugins-4.1/src/xsf/vio2sf.h audacious-plugins-4.3.1/src/xsf/vio2sf.h --- audacious-plugins-4.1/src/xsf/vio2sf.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/vio2sf.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -#include - -int xsf_start(void *pfile, unsigned bytes); -int xsf_gen(void *pbuffer, unsigned samples); -Index xsf_get_lib(char *pfilename); -void xsf_term(void); diff -Nru audacious-plugins-4.1/src/xsf/xsfdrv.h audacious-plugins-4.3.1/src/xsf/xsfdrv.h --- audacious-plugins-4.1/src/xsf/xsfdrv.h 2021-02-01 23:30:38.000000000 +0000 +++ audacious-plugins-4.3.1/src/xsf/xsfdrv.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -typedef int (PASCAL * LPFNGETLIB_XSFDRV)(void *lpWork, LPSTR lpszFilename, void **ppBuffer, DWORD *pdwSize); -typedef struct -{ - void * (PASCAL * LibAlloc)(DWORD dwSize); - void (PASCAL * LibFree)(void *lpPtr); - int (PASCAL * Start)(void *lpPtr, DWORD dwSize); - void (PASCAL * Gen)(void *lpPtr, DWORD dwSamples); - void (PASCAL * Term)(void); -} IXSFDRV; - -typedef IXSFDRV * (PASCAL * LPFNXSFDRVSETUP)(LPFNGETLIB_XSFDRV lpfn, void *lpWork); -/* IXSFDRV * PASCAL XSFDRVSetup(LPFNGETLIB_XSFDRV lpfn, void *lpWork); */