# HG changeset patch # User Chris Cannam # Date 1461150388 -3600 # Node ID 5e6e1e0740803d1f9593d3bcaa75687a60ddb673 # Parent 3ba5bee2ace08237a0c9301e39f596087f0ce16d# Parent ba6f95b1ff7c460d47888d8c8a48b2511caa3a77 Merge branches 3.0-integration and imaf_enc to 3.0-plus-imaf diff -r ba6f95b1ff7c -r 5e6e1e074080 .hgignore --- a/.hgignore Wed Jul 15 12:27:40 2015 +0100 +++ b/.hgignore Wed Apr 20 12:06:28 2016 +0100 @@ -1,5 +1,5 @@ syntax: glob -Makefile +Makefile* */Makefile o/* */o/* @@ -21,3 +21,8 @@ re:^config\.log$ re:^config\.pri$ re:^config\.status$ +*.app +Sonic Visualiser* +.DS_Store +*.stash +cov-int/* diff -r ba6f95b1ff7c -r 5e6e1e074080 .hgsub --- a/.hgsub Wed Jul 15 12:27:40 2015 +0100 +++ b/.hgsub Wed Apr 20 12:06:28 2016 +0100 @@ -1,5 +1,11 @@ +vamp-plugin-sdk = https://code.soundsoftware.ac.uk/hg/vamp-plugin-sdk svcore = https://code.soundsoftware.ac.uk/hg/svcore svgui = https://code.soundsoftware.ac.uk/hg/svgui svapp = https://code.soundsoftware.ac.uk/hg/svapp dataquay = https://bitbucket.org/breakfastquay/dataquay +bqvec = https://bitbucket.org/breakfastquay/bqvec +bqresample = https://bitbucket.org/breakfastquay/bqresample +bqaudioio = https://bitbucket.org/breakfastquay/bqaudioio sv-dependency-builds = https://code.soundsoftware.ac.uk/hg/sv-dependency-builds +icons/scalable = https://code.soundsoftware.ac.uk/hg/sv-iconset +checker = https://code.soundsoftware.ac.uk/hg/vamp-plugin-load-checker diff -r ba6f95b1ff7c -r 5e6e1e074080 .hgsubstate --- a/.hgsubstate Wed Jul 15 12:27:40 2015 +0100 +++ b/.hgsubstate Wed Apr 20 12:06:28 2016 +0100 @@ -1,5 +1,11 @@ +442bdbbb17f3910898b892cc798794e32562a3f1 bqaudioio +28f51eb8bf2dd985b0c1a6d704fb65e14c2f0f25 bqresample +a518ddd9dd68917393887d28dfee6221bc37fb66 bqvec +af46a17798be1c38cb6e7dcb88ad34508a77fd54 checker d16f0fd6db6104d87882bc43788a3bb1b0f8c528 dataquay -3c5adc4a864fa75e5b1e67c260b77541aaa4f1f6 sv-dependency-builds -428ce32a8dd9978e3dd6a471c82438e278cb1d40 svapp -c475940aba799e3c2c380d1b06a8eedef13e3713 svcore -282f4be8f0589a7b0744ba4ef7a838defc53ba4a svgui +68ae618c6b0e442d08a71d39217784a08f2a8de3 icons/scalable +1e4f338ae482429a7ab9bdd0825242042354152f sv-dependency-builds +a2a8fa0eed083fe105f1542c8c91fc504d785c2c svapp +aa61e73cf5804c90b3be3a6b68665bc87c42e1c1 svcore +c02c51ae52388ddf7b51ab4d294094d4be601e15 svgui +9a2998401bbe0a7b9e3233eeca5004542bc0014d vamp-plugin-sdk diff -r ba6f95b1ff7c -r 5e6e1e074080 .hgtags --- a/.hgtags Wed Jul 15 12:27:40 2015 +0100 +++ b/.hgtags Wed Apr 20 12:06:28 2016 +0100 @@ -37,4 +37,15 @@ 29a97099b6473aa14251ec6392eb696cad4a6431 sv_v2.2 29a97099b6473aa14251ec6392eb696cad4a6431 sv_v2.2 a91416395daf6d8ac2b5f7330cc2e44ab699dc50 sv_v2.2 +242ebf1db0f16582b883d65ae80df99c613b99a7 sv_v2.3 +242ebf1db0f16582b883d65ae80df99c613b99a7 sv_v2.3 +7f7fba33b7de2890ca96dbd15969219bb9fe04b9 sv_v2.3 +59c68b5ae5be5997719ff959d40fe9ad36ab86ab sv_v2.3-f +7f7fba33b7de2890ca96dbd15969219bb9fe04b9 sv_v2.3 +bf06f4311ec0af43f93a15489a757955e07597cd sv_v2.3 +cfbea29fae640aed5c8b7265d6806df823f34fef sv_v2.4 +8215909b74d2c58be28ce128d40fbc1645bc0d6e sv_v2.4_linux_deploy +2868d5abf1a3baa37099c1b5d7e984bf8bb8177a sv_v2.4.1 +94253fa113183075c8400fa64d0ccb0e81682f90 sv_v2.5 +e206741df37ddfa3db28bfbbe4b79f2248b92695 sv_v2.5_osx_deploy 60d3575f8016db7080154978c6457d37ca43dbbb sv-v2.3-imaf diff -r ba6f95b1ff7c -r 5e6e1e074080 CHANGELOG --- a/CHANGELOG Wed Jul 15 12:27:40 2015 +0100 +++ b/CHANGELOG Wed Apr 20 12:06:28 2016 +0100 @@ -1,3 +1,74 @@ +Changes in Sonic Visualiser 2.5 since the previous release 2.4.1: + + - Add unit-converter dialog, for converting between various pitch and + timing units + + - Fix failure to reload note layers from session file + + - Use a more sensible scale for the play-speed dial + + - Fix crash when importing very wide CSV files + + - Fix generation of wrong layer type from some CSV files + + - Fix failure to export last instant in a time-instant layer + +Changes in Sonic Visualiser 2.4.1 since the previous release 2.4: + + - Fix a crash when rendering certain colour 3d plot layers + +Changes in Sonic Visualiser 2.4 since the previous release 2.3: + + - Add support for left/right scrolling using a two-finger touchpad + gesture (where available) + + - Make the octave numbering into a configurable option, and change + the default. Previously Sonic Visualiser labelled middle-C as "C3"; + now it labels middle-C as "C4", a more common standard in the world + outside MIDI sequencer software. The previous system is available + as an option in the Preferences. This affects only the visible + labels: there is no change to analysis or to the file format + + - Sonify time-value layers. Any time-value curve whose scale unit is + set to Hz will now acquire a playback toggle control; this control + is off by default, but if it is switched on, the curve will be + played back using a variable-frequency sound generator + + - Add support for playback of note layers with non-MIDI frequencies + (formerly the note playback was limited to exact MIDI pitch) + + - Change the default playback sample for note layers from piano to an + electric piano with sustain. The piano sample is still available, + and any sessions saved using it should continue to use it + + - Add a cancel button for Vamp plugin processing: currently, + cancelling a transform results in a part-complete layer rather than + removing the results + + - Add keyboard shortcuts to cycle the current layer (in addition to + the existing ones to cycle the current pane) + + - Fix various bugs related to layer ordering: layer tabs re-ordering + themselves randomly when new layer added, layers being ordered + randomly when saving and reloading a session + + - Fix incorrect interaction with non-Unicode usernames when creating + temporary and template directories on Windows + + - Shade the start and end of the main audio file, to make them easier + to see for files that start or end in silence + + - Speed up rendering and scrolling in time-value layers + + - Make it possible to import CSV files directly into Note layers by + adding Pitch as a data type in the CSV file import dialog + + - Fix play pointer jump to wrong frame when clicking on row in the + layer edit dialog + + - Fix problems with keyboard shortcuts when using Qt5 on OS/X. This + is the first release in which the official builds use Qt5 for all + platforms. Changes in Sonic Visualiser 2.3 since the previous release 2.2: @@ -24,7 +95,7 @@ - Permit installation to non-default location with Windows installer build - + Changes in Sonic Visualiser 2.2 since the previous release 2.1: diff -r ba6f95b1ff7c -r 5e6e1e074080 INSTALL.txt --- a/INSTALL.txt Wed Jul 15 12:27:40 2015 +0100 +++ b/INSTALL.txt Wed Apr 20 12:06:28 2016 +0100 @@ -9,25 +9,21 @@ The following additional libraries are required or optional when building the SV core libraries: -REQUIRED Qt v4.4 or newer http://qt.nokia.com/ +REQUIRED Qt v5 http://qt-project.org/ REQUIRED Vamp Plugin SDK v2.x http://www.vamp-plugins.org/ REQUIRED Rubber Band Library http://www.breakfastquay.com/rubberband/ REQUIRED libsndfile http://www.mega-nerd.com/libsndfile/ REQUIRED libsamplerate http://www.mega-nerd.com/SRC/ REQUIRED FFTW3 http://www.fftw.org/ REQUIRED bzip2 library http://www.bzip.org/ -REQUIRED Redland RDF libraries http://librdf.org/ +REQUIRED Sord and Serd libraries http://drobilla.net/software/ Optional MAD mp3 decoder http://www.underbit.com/products/mad/ Optional Oggz and fishsound http://xiph.org/oggz/ Optional liblo OSC library http://www.plugin.org.uk/liblo/ -The Redland RDF libraries include the Raptor RDF parser library, -Rasqal RDF query library, and librdf, the Redland RDF datastore (which -depends on both of those). The SV libraries require all of these. - -If you are going to build the rest of the SV libraries, you will also -need one or more of: +If you are going to build the rest of the SV libraries and the Sonic +Visualiser application, you will also need one or more of: Optional JACK http://www.jackaudio.org/ Optional PortAudio v19 http://www.portaudio.com/ @@ -41,8 +37,9 @@ On Linux, you will need the ALSA libraries (used for MIDI). If you happen to be using a Debian-based Linux, you probably want to -apt-get install the following packages: libqt4-dev libsndfile1-dev -libsamplerate0-dev fftw3-dev libbz2-dev libjack-dev libmad0-dev -liboggz1-dev libfishsound1-dev libasound2-dev liblo0-dev liblrdf0-dev -librdf0-dev . +apt-get install something like the following packages: qtbase5-dev +qt5-default libsndfile1-dev libsamplerate0-dev libfftw3-dev libbz2-dev +libjack-dev libjack0 libpulse-dev libmad0-dev libid3tag0-dev +liboggz2-dev libfishsound1-dev libasound2-dev liblo-dev liblrdf0-dev +libsord-dev libserd-dev vamp-plugin-sdk librubberband-dev. diff -r ba6f95b1ff7c -r 5e6e1e074080 README --- a/README Wed Jul 15 12:27:40 2015 +0100 +++ b/README Wed Apr 20 12:06:28 2016 +0100 @@ -18,7 +18,7 @@ * Run feature-extraction plugins to calculate annotations automatically, using algorithms such as beat trackers, pitch -detectors and so on +detectors and so on (see http://vamp-plugins.org/) * Import annotation data from various text formats and MIDI files @@ -40,13 +40,13 @@ Sonic Visualiser was developed at the Centre for Digital Music, Queen Mary, University of London. - http://www.elec.qmul.ac.uk/digitalmusic/ + http://c4dm.eecs.qmul.ac.uk/ -The main program is by Chris Cannam, with additional DSP and program -design work by Christian Landone. Thanks also to Craig Sapp for his -suggestions and useful feedback. +Sonic Visualiser was written by Chris Cannam with contributions from +Christian Landone, Mathieu Barthet, Dan Stowell, Jesus Corral Garcia, +Matthias Mauch, and Craig Sapp. -Code copyright 2005-2007 Chris Cannam and copyright 2006-2013 Queen +Code copyright 2005-2007 Chris Cannam and copyright 2006-2014 Queen Mary, University of London, except where indicated in the individual source files. @@ -58,11 +58,9 @@ Recorded Music (CHARM). This work was partially funded by the Engineering and Physical -Sciences Research Council through the OMRAS2 project EP/E017614/1. - -This work was partially funded by the Engineering and Physical -Sciences Research Council through the Musicology for the Masses -project EP/I001832/1. +Sciences Research Council through the OMRAS2 project EP/E017614/1, the +Musicology for the Masses project EP/I001832/1, and the Sound Software +project EP/H043101/1. Sonic Visualiser is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -r ba6f95b1ff7c -r 5e6e1e074080 acinclude.m4 --- a/acinclude.m4 Wed Jul 15 12:27:40 2015 +0100 +++ b/acinclude.m4 Wed Apr 20 12:06:28 2016 +0100 @@ -69,6 +69,9 @@ AC_CHECK_PROG(QMAKE, qmake-qt5, $QTDIR/bin/qmake-qt5,,$QTDIR/bin/) fi if test x$QMAKE = x ; then + AC_CHECK_PROG(QMAKE, qt5-qmake, $QTDIR/bin/qt5-qmake,,$QTDIR/bin/) +fi +if test x$QMAKE = x ; then AC_CHECK_PROG(QMAKE, qmake, $QTDIR/bin/qmake,,$QTDIR/bin/) fi if test x$QMAKE = x ; then @@ -78,6 +81,9 @@ AC_CHECK_PROG(QMAKE, qmake-qt5, qmake-qt5,,$PATH) fi if test x$QMAKE = x ; then + AC_CHECK_PROG(QMAKE, qt5-qmake, qt5-qmake,,$PATH) +fi +if test x$QMAKE = x ; then AC_CHECK_PROG(QMAKE, qmake, qmake,,$PATH) fi if test x$QMAKE = x ; then @@ -112,3 +118,146 @@ ]) +# From autoconf archive: + +# ============================================================================ +# http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html +# ============================================================================ +# +# SYNOPSIS +# +# AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional]) +# +# DESCRIPTION +# +# Check for baseline language coverage in the compiler for the C++11 +# standard; if necessary, add switches to CXXFLAGS to enable support. +# +# The first argument, if specified, indicates whether you insist on an +# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. +# -std=c++11). If neither is specified, you get whatever works, with +# preference for an extended mode. +# +# The second argument, if specified 'mandatory' or if left unspecified, +# indicates that baseline C++11 support is required and that the macro +# should error out if no mode with that support is found. If specified +# 'optional', then configuration proceeds regardless, after defining +# HAVE_CXX11 if and only if a supporting mode is found. +# +# LICENSE +# +# Copyright (c) 2008 Benjamin Kosnik +# Copyright (c) 2012 Zack Weinberg +# Copyright (c) 2013 Roy Stogner +# Copyright (c) 2014 Alexey Sokolov +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +m4_define([_AX_CXX_COMPILE_STDCXX_11_testbody], [[ + template + struct check + { + static_assert(sizeof(int) <= sizeof(T), "not big enough"); + }; + + struct Base { + virtual void f() {} + }; + struct Child : public Base { + virtual void f() override {} + }; + + typedef check> right_angle_brackets; + + int a; + decltype(a) b; + + typedef check check_type; + check_type c; + check_type&& cr = static_cast(c); + + auto d = a; + auto l = [](){}; +]]) + +AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl + m4_if([$1], [], [], + [$1], [ext], [], + [$1], [noext], [], + [m4_fatal([invalid argument `$1' to AX_CXX_COMPILE_STDCXX_11])])dnl + m4_if([$2], [], [ax_cxx_compile_cxx11_required=true], + [$2], [mandatory], [ax_cxx_compile_cxx11_required=true], + [$2], [optional], [ax_cxx_compile_cxx11_required=false], + [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX_11])]) + AC_LANG_PUSH([C++])dnl + ac_success=no + AC_CACHE_CHECK(whether $CXX supports C++11 features by default, + ax_cv_cxx_compile_cxx11, + [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], + [ax_cv_cxx_compile_cxx11=yes], + [ax_cv_cxx_compile_cxx11=no])]) + if test x$ax_cv_cxx_compile_cxx11 = xyes; then + ac_success=yes + fi + + m4_if([$1], [noext], [], [dnl + if test x$ac_success = xno; then + for switch in -std=gnu++11 -std=gnu++0x; do + cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch]) + AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch, + $cachevar, + [ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS $switch" + AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], + [eval $cachevar=yes], + [eval $cachevar=no]) + CXXFLAGS="$ac_save_CXXFLAGS"]) + if eval test x\$$cachevar = xyes; then + CXXFLAGS="$CXXFLAGS $switch" + ac_success=yes + break + fi + done + fi]) + + m4_if([$1], [ext], [], [dnl + if test x$ac_success = xno; then + for switch in -std=c++11 -std=c++0x; do + cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch]) + AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch, + $cachevar, + [ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS $switch" + AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], + [eval $cachevar=yes], + [eval $cachevar=no]) + CXXFLAGS="$ac_save_CXXFLAGS"]) + if eval test x\$$cachevar = xyes; then + CXXFLAGS="$CXXFLAGS $switch" + ac_success=yes + break + fi + done + fi]) + AC_LANG_POP([C++]) + if test x$ax_cxx_compile_cxx11_required = xtrue; then + if test x$ac_success = xno; then + AC_MSG_ERROR([*** A compiler with support for C++11 language features is required.]) + fi + else + if test x$ac_success = xno; then + HAVE_CXX11=0 + AC_MSG_NOTICE([No compiler with C++11 support was found]) + else + HAVE_CXX11=1 + AC_DEFINE(HAVE_CXX11,1, + [define if the compiler supports basic C++11 syntax]) + fi + + AC_SUBST(HAVE_CXX11) + fi +]) + diff -r ba6f95b1ff7c -r 5e6e1e074080 bq.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bq.pro Wed Apr 20 12:06:28 2016 +0100 @@ -0,0 +1,94 @@ + +TEMPLATE = lib + +win32-g++ { + INCLUDEPATH += sv-dependency-builds/win32-mingw/include + LIBS += -Lsv-dependency-builds/win32-mingw/lib +} +win32-msvc* { + INCLUDEPATH += sv-dependency-builds/win32-msvc/include + LIBS += -Lsv-dependency-builds/win32-msvc/lib +} +mac* { + INCLUDEPATH += sv-dependency-builds/osx/include + LIBS += -Lsv-dependency-builds/osx/lib +} + +exists(config.pri) { + include(config.pri) +} + +!exists(config.pri) { + + CONFIG += release + DEFINES += NDEBUG BUILD_RELEASE NO_TIMING + + DEFINES += HAVE_BZ2 HAVE_FFTW3 HAVE_FFTW3F HAVE_SNDFILE HAVE_LIBSAMPLERATE HAVE_VAMP HAVE_VAMPHOSTSDK HAVE_RUBBERBAND HAVE_DATAQUAY HAVE_LIBLO HAVE_MAD HAVE_ID3TAG HAVE_PORTAUDIO + + LIBS += -lbz2 -lrubberband -lvamp-hostsdk -lfftw3 -lfftw3f -lsndfile -lFLAC -logg -lvorbis -lvorbisenc -lvorbisfile -logg -lmad -lid3tag -lportaudio -lsamplerate -lz -lsord-0 -lserd-0 -llo + + win* { + DEFINES += USE_OWN_ALIGNED_MALLOC _USE_MATH_DEFINES + LIBS += -lwinmm -lws2_32 + } + macx* { + DEFINES += HAVE_COREAUDIO MALLOC_IS_ALIGNED + LIBS += -framework CoreAudio -framework CoreMidi -framework AudioUnit -framework AudioToolbox -framework CoreFoundation -framework CoreServices -framework Accelerate + } +} + +CONFIG += staticlib warn_on stl exceptions c++11 +CONFIG -= qt + +TARGET = bq + +DEPENDPATH += bqvec bqresample bqaudioio bqvec/bqvec bqresample/bqresample bqaudioio/bqaudioio +INCLUDEPATH += bqvec bqresample bqaudioio bqvec/bqvec bqresample/bqresample bqaudioio/bqaudioio + +OBJECTS_DIR = o + +HEADERS += \ + bqvec/bqvec/Allocators.h \ + bqvec/bqvec/Barrier.h \ + bqvec/bqvec/ComplexTypes.h \ + bqvec/bqvec/Restrict.h \ + bqvec/bqvec/RingBuffer.h \ + bqvec/bqvec/VectorOpsComplex.h \ + bqvec/bqvec/VectorOps.h \ + bqvec/pommier/neon_mathfun.h \ + bqvec/pommier/sse_mathfun.h \ + bqresample/bqresample/Resampler.h \ + bqresample/speex/speex_resampler.h \ + bqaudioio/bqaudioio/ApplicationPlaybackSource.h \ + bqaudioio/bqaudioio/ApplicationRecordTarget.h \ + bqaudioio/bqaudioio/AudioFactory.h \ + bqaudioio/bqaudioio/SystemAudioIO.h \ + bqaudioio/bqaudioio/SystemPlaybackTarget.h \ + bqaudioio/bqaudioio/SystemRecordSource.h \ + bqaudioio/src/DynamicJACK.h \ + bqaudioio/src/JACKAudioIO.h \ + bqaudioio/src/JACKPlaybackTarget.h \ + bqaudioio/src/JACKRecordSource.h \ + bqaudioio/src/PortAudioIO.h \ + bqaudioio/src/PortAudioPlaybackTarget.h \ + bqaudioio/src/PortAudioRecordSource.h \ + bqaudioio/src/PulseAudioIO.h \ + bqaudioio/src/PulseAudioPlaybackTarget.h + +SOURCES += \ + bqvec/src/Allocators.cpp \ + bqvec/src/Barrier.cpp \ + bqvec/src/VectorOpsComplex.cpp \ + bqresample/src/Resampler.cpp \ + bqaudioio/src/AudioFactory.cpp \ + bqaudioio/src/JACKAudioIO.cpp \ + bqaudioio/src/JACKPlaybackTarget.cpp \ + bqaudioio/src/JACKRecordSource.cpp \ + bqaudioio/src/PortAudioIO.cpp \ + bqaudioio/src/PortAudioPlaybackTarget.cpp \ + bqaudioio/src/PortAudioRecordSource.cpp \ + bqaudioio/src/PulseAudioIO.cpp \ + bqaudioio/src/PulseAudioPlaybackTarget.cpp \ + bqaudioio/src/SystemPlaybackTarget.cpp \ + bqaudioio/src/SystemRecordSource.cpp + diff -r ba6f95b1ff7c -r 5e6e1e074080 configure --- a/configure Wed Jul 15 12:27:40 2015 +0100 +++ b/configure Wed Apr 20 12:06:28 2016 +0100 @@ -1,8 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Sonic Visualiser 2.3-imaf. -# -# Report bugs to . +# Generated by GNU Autoconf 2.69. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -266,8 +264,7 @@ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else - $as_echo "$0: Please tell bug-autoconf@gnu.org and -$0: cannam@all-day-breakfast.com about your system, + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." @@ -578,13 +575,14 @@ MAKEFLAGS= # Identity of this package. -PACKAGE_NAME='Sonic Visualiser' -PACKAGE_TARNAME='sonic-visualiser' -PACKAGE_VERSION='2.3-imaf' -PACKAGE_STRING='Sonic Visualiser 2.3-imaf' -PACKAGE_BUGREPORT='cannam@all-day-breakfast.com' -PACKAGE_URL='' - +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= +PACKAGE_URL= + +ac_unique_file="Sonic Visualiser" ac_unique_file="main/main.cpp" # Factoring default headers for most tests. ac_includes_default="\ @@ -650,8 +648,8 @@ libpulse_CFLAGS JACK_LIBS JACK_CFLAGS -portaudio_2_0_LIBS -portaudio_2_0_CFLAGS +portaudio_LIBS +portaudio_CFLAGS liblo_LIBS liblo_CFLAGS serd_LIBS @@ -660,12 +658,8 @@ sord_CFLAGS rubberband_LIBS rubberband_CFLAGS -vamphostsdk_LIBS -vamphostsdk_CFLAGS -vamp_LIBS -vamp_CFLAGS -samplerate_LIBS -samplerate_CFLAGS +libsamplerate_LIBS +libsamplerate_CFLAGS sndfile_LIBS sndfile_CFLAGS fftw3f_LIBS @@ -681,6 +675,7 @@ EGREP GREP CXXCPP +HAVE_CXX11 MKDIR_P INSTALL_DATA INSTALL_SCRIPT @@ -761,12 +756,8 @@ fftw3f_LIBS sndfile_CFLAGS sndfile_LIBS -samplerate_CFLAGS -samplerate_LIBS -vamp_CFLAGS -vamp_LIBS -vamphostsdk_CFLAGS -vamphostsdk_LIBS +libsamplerate_CFLAGS +libsamplerate_LIBS rubberband_CFLAGS rubberband_LIBS sord_CFLAGS @@ -775,8 +766,8 @@ serd_LIBS liblo_CFLAGS liblo_LIBS -portaudio_2_0_CFLAGS -portaudio_2_0_LIBS +portaudio_CFLAGS +portaudio_LIBS JACK_CFLAGS JACK_LIBS libpulse_CFLAGS @@ -833,7 +824,7 @@ localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +docdir='${datarootdir}/doc/${PACKAGE}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' @@ -1333,7 +1324,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 Sonic Visualiser 2.3-imaf to adapt to many kinds of systems. +\`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1381,8 +1372,7 @@ --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root - [DATAROOTDIR/doc/sonic-visualiser] + --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] @@ -1394,9 +1384,7 @@ fi if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of Sonic Visualiser 2.3-imaf:";; - esac + cat <<\_ACEOF Optional Features: @@ -1433,16 +1421,10 @@ C compiler flags for sndfile, overriding pkg-config sndfile_LIBS linker flags for sndfile, overriding pkg-config - samplerate_CFLAGS - C compiler flags for samplerate, overriding pkg-config - samplerate_LIBS - linker flags for samplerate, overriding pkg-config - vamp_CFLAGS C compiler flags for vamp, overriding pkg-config - vamp_LIBS linker flags for vamp, overriding pkg-config - vamphostsdk_CFLAGS - C compiler flags for vamphostsdk, overriding pkg-config - vamphostsdk_LIBS - linker flags for vamphostsdk, overriding pkg-config + libsamplerate_CFLAGS + C compiler flags for libsamplerate, overriding pkg-config + libsamplerate_LIBS + linker flags for libsamplerate, overriding pkg-config rubberband_CFLAGS C compiler flags for rubberband, overriding pkg-config rubberband_LIBS @@ -1454,10 +1436,10 @@ liblo_CFLAGS C compiler flags for liblo, overriding pkg-config liblo_LIBS linker flags for liblo, overriding pkg-config - portaudio_2_0_CFLAGS - C compiler flags for portaudio_2_0, overriding pkg-config - portaudio_2_0_LIBS - linker flags for portaudio_2_0, overriding pkg-config + portaudio_CFLAGS + C compiler flags for portaudio, overriding pkg-config + portaudio_LIBS + linker flags for portaudio, overriding pkg-config JACK_CFLAGS C compiler flags for JACK, overriding pkg-config JACK_LIBS linker flags for JACK, overriding pkg-config libpulse_CFLAGS @@ -1483,7 +1465,7 @@ Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. -Report bugs to . +Report bugs to the package provider. _ACEOF ac_status=$? fi @@ -1546,7 +1528,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Sonic Visualiser configure 2.3-imaf +configure generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1785,10 +1767,6 @@ $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ------------------------------------------- ## -## Report this to cannam@all-day-breakfast.com ## -## ------------------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 @@ -1886,7 +1864,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Sonic Visualiser $as_me 2.3-imaf, which was +It was created by $as_me, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3470,6 +3448,146 @@ $as_echo "$MKDIR_P" >&6; } +# We are daringly making use of C++11 now + + ax_cxx_compile_cxx11_required=true + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + ac_success=no + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5 +$as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; } +if ${ax_cv_cxx_compile_cxx11+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + template + struct check + { + static_assert(sizeof(int) <= sizeof(T), "not big enough"); + }; + + struct Base { + virtual void f() {} + }; + struct Child : public Base { + virtual void f() override {} + }; + + typedef check> right_angle_brackets; + + int a; + decltype(a) b; + + typedef check check_type; + check_type c; + check_type&& cr = static_cast(c); + + auto d = a; + auto l = [](){}; + +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ax_cv_cxx_compile_cxx11=yes +else + ax_cv_cxx_compile_cxx11=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5 +$as_echo "$ax_cv_cxx_compile_cxx11" >&6; } + if test x$ax_cv_cxx_compile_cxx11 = xyes; then + ac_success=yes + fi + + + + if test x$ac_success = xno; then + for switch in -std=c++11 -std=c++0x; do + cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5 +$as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; } +if eval \${$cachevar+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS $switch" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + template + struct check + { + static_assert(sizeof(int) <= sizeof(T), "not big enough"); + }; + + struct Base { + virtual void f() {} + }; + struct Child : public Base { + virtual void f() override {} + }; + + typedef check> right_angle_brackets; + + int a; + decltype(a) b; + + typedef check check_type; + check_type c; + check_type&& cr = static_cast(c); + + auto d = a; + auto l = [](){}; + +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval $cachevar=yes +else + eval $cachevar=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CXXFLAGS="$ac_save_CXXFLAGS" +fi +eval ac_res=\$$cachevar + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + if eval test x\$$cachevar = xyes; then + CXXFLAGS="$CXXFLAGS $switch" + ac_success=yes + break + fi + done + fi + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + if test x$ax_cxx_compile_cxx11_required = xtrue; then + if test x$ac_success = xno; then + as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5 + fi + else + if test x$ac_success = xno; then + HAVE_CXX11=0 + { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5 +$as_echo "$as_me: No compiler with C++11 support was found" >&6;} + else + HAVE_CXX11=1 + +$as_echo "#define HAVE_CXX11 1" >>confdefs.h + + fi + + + fi + ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' @@ -4017,6 +4135,45 @@ fi if test x$QMAKE = x ; then + # Extract the first word of "qt5-qmake", so it can be a program name with args. +set dummy qt5-qmake; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_QMAKE+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$QMAKE"; then + ac_cv_prog_QMAKE="$QMAKE" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $QTDIR/bin/ +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + 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_QMAKE="$QTDIR/bin/qt5-qmake" + $as_echo "$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 +QMAKE=$ac_cv_prog_QMAKE +if test -n "$QMAKE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $QMAKE" >&5 +$as_echo "$QMAKE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test x$QMAKE = x ; then # Extract the first word of "qmake", so it can be a program name with args. set dummy qmake; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -4134,6 +4291,45 @@ fi if test x$QMAKE = x ; then + # Extract the first word of "qt5-qmake", so it can be a program name with args. +set dummy qt5-qmake; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_QMAKE+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$QMAKE"; then + ac_cv_prog_QMAKE="$QMAKE" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + 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_QMAKE="qt5-qmake" + $as_echo "$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 +QMAKE=$ac_cv_prog_QMAKE +if test -n "$QMAKE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $QMAKE" >&5 +$as_echo "$QMAKE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test x$QMAKE = x ; then # Extract the first word of "qmake", so it can be a program name with args. set dummy qmake; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -4223,9 +4419,10 @@ CXXFLAGS_MINIMAL="$AUTOCONF_CXXFLAGS" if test "x$GCC" = "xyes"; then - CXXFLAGS_DEBUG="-Wall -Woverloaded-virtual -Wextra -Wformat-nonliteral -Wformat-security -Winit-self -Wswitch-enum -g -pipe" - CXXFLAGS_RELEASE="-g0 -O2 -Wall -pipe" - CXXFLAGS_MINIMAL="-g0 -O0" + CXXFLAGS_ANY="-Wall -Wextra -Woverloaded-virtual -Wformat-nonliteral -Wformat-security -Winit-self -Wswitch-enum -Wconversion -pipe" + CXXFLAGS_DEBUG="$CXXFLAGS_ANY -g -Werror" + CXXFLAGS_RELEASE="$CXXFLAGS_ANY -g0 -O2" + CXXFLAGS_MINIMAL="$CXXFLAGS_ANY -g0 -O0" fi CXXFLAGS_BUILD="$CXXFLAGS_RELEASE" @@ -4876,18 +5073,18 @@ fi -SV_MODULE_MODULE=samplerate +SV_MODULE_MODULE=libsamplerate SV_MODULE_VERSION_TEST="samplerate >= 0.1.2" SV_MODULE_HEADER=samplerate.h SV_MODULE_LIB=samplerate SV_MODULE_FUNC=src_new -SV_MODULE_HAVE=HAVE_$(echo samplerate | tr 'a-z' 'A-Z') +SV_MODULE_HAVE=HAVE_$(echo libsamplerate | tr 'a-z' 'A-Z') SV_MODULE_FAILED=1 -if test -n "$samplerate_LIBS" ; then +if test -n "$libsamplerate_LIBS" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&5 $as_echo "$as_me: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&6;} - CXXFLAGS="$CXXFLAGS $samplerate_CFLAGS" - LIBS="$LIBS $samplerate_LIBS" + CXXFLAGS="$CXXFLAGS $libsamplerate_CFLAGS" + LIBS="$LIBS $libsamplerate_LIBS" SV_MODULE_FAILED="" fi if test -z "$SV_MODULE_VERSION_TEST" ; then @@ -4896,11 +5093,11 @@ if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for samplerate" >&5 -$as_echo_n "checking for samplerate... " >&6; } - -if test -n "$samplerate_CFLAGS"; then - pkg_cv_samplerate_CFLAGS="$samplerate_CFLAGS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsamplerate" >&5 +$as_echo_n "checking for libsamplerate... " >&6; } + +if test -n "$libsamplerate_CFLAGS"; then + pkg_cv_libsamplerate_CFLAGS="$libsamplerate_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -4908,7 +5105,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_samplerate_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_libsamplerate_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -4916,8 +5113,8 @@ else pkg_failed=untried fi -if test -n "$samplerate_LIBS"; then - pkg_cv_samplerate_LIBS="$samplerate_LIBS" +if test -n "$libsamplerate_LIBS"; then + pkg_cv_libsamplerate_LIBS="$libsamplerate_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -4925,7 +5122,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_samplerate_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_libsamplerate_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -4946,12 +5143,12 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - samplerate_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + libsamplerate_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` else - samplerate_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + libsamplerate_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` fi # Put the nasty error message in config.log where it belongs - echo "$samplerate_PKG_ERRORS" >&5 + echo "$libsamplerate_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} @@ -4961,11 +5158,11 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} else - samplerate_CFLAGS=$pkg_cv_samplerate_CFLAGS - samplerate_LIBS=$pkg_cv_samplerate_LIBS + libsamplerate_CFLAGS=$pkg_cv_libsamplerate_CFLAGS + libsamplerate_LIBS=$pkg_cv_libsamplerate_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $samplerate_CFLAGS";LIBS="$LIBS $samplerate_LIBS";SV_MODULE_FAILED="" + HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $libsamplerate_CFLAGS";LIBS="$LIBS $libsamplerate_LIBS";SV_MODULE_FAILED="" fi fi if test -n "$SV_MODULE_FAILED"; then @@ -5027,18 +5224,18 @@ fi -SV_MODULE_MODULE=vamp -SV_MODULE_VERSION_TEST="vamp >= 2.1" -SV_MODULE_HEADER=vamp/vamp.h -SV_MODULE_LIB= -SV_MODULE_FUNC= -SV_MODULE_HAVE=HAVE_$(echo vamp | tr 'a-z' 'A-Z') +SV_MODULE_MODULE=rubberband +SV_MODULE_VERSION_TEST="rubberband" +SV_MODULE_HEADER=rubberband/RubberBandStretcher.h +SV_MODULE_LIB=rubberband +SV_MODULE_FUNC=rubberband_new +SV_MODULE_HAVE=HAVE_$(echo rubberband | tr 'a-z' 'A-Z') SV_MODULE_FAILED=1 -if test -n "$vamp_LIBS" ; then +if test -n "$rubberband_LIBS" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&5 $as_echo "$as_me: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&6;} - CXXFLAGS="$CXXFLAGS $vamp_CFLAGS" - LIBS="$LIBS $vamp_LIBS" + CXXFLAGS="$CXXFLAGS $rubberband_CFLAGS" + LIBS="$LIBS $rubberband_LIBS" SV_MODULE_FAILED="" fi if test -z "$SV_MODULE_VERSION_TEST" ; then @@ -5047,11 +5244,11 @@ if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for vamp" >&5 -$as_echo_n "checking for vamp... " >&6; } - -if test -n "$vamp_CFLAGS"; then - pkg_cv_vamp_CFLAGS="$vamp_CFLAGS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for rubberband" >&5 +$as_echo_n "checking for rubberband... " >&6; } + +if test -n "$rubberband_CFLAGS"; then + pkg_cv_rubberband_CFLAGS="$rubberband_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -5059,7 +5256,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_vamp_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_rubberband_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -5067,8 +5264,8 @@ else pkg_failed=untried fi -if test -n "$vamp_LIBS"; then - pkg_cv_vamp_LIBS="$vamp_LIBS" +if test -n "$rubberband_LIBS"; then + pkg_cv_rubberband_LIBS="$rubberband_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -5076,7 +5273,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_vamp_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_rubberband_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -5097,12 +5294,12 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - vamp_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + rubberband_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` else - vamp_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + rubberband_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` fi # Put the nasty error message in config.log where it belongs - echo "$vamp_PKG_ERRORS" >&5 + echo "$rubberband_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} @@ -5112,11 +5309,11 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} else - vamp_CFLAGS=$pkg_cv_vamp_CFLAGS - vamp_LIBS=$pkg_cv_vamp_LIBS + rubberband_CFLAGS=$pkg_cv_rubberband_CFLAGS + rubberband_LIBS=$pkg_cv_rubberband_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $vamp_CFLAGS";LIBS="$LIBS $vamp_LIBS";SV_MODULE_FAILED="" + HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $rubberband_CFLAGS";LIBS="$LIBS $rubberband_LIBS";SV_MODULE_FAILED="" fi fi if test -n "$SV_MODULE_FAILED"; then @@ -5178,18 +5375,18 @@ fi -SV_MODULE_MODULE=vamphostsdk -SV_MODULE_VERSION_TEST="vamp-hostsdk >= 2.5" -SV_MODULE_HEADER=vamp-hostsdk/PluginLoader.h -SV_MODULE_LIB=vamp-hostsdk -SV_MODULE_FUNC=libvamphostsdk_v_2_5_present -SV_MODULE_HAVE=HAVE_$(echo vamphostsdk | tr 'a-z' 'A-Z') +SV_MODULE_MODULE=sord +SV_MODULE_VERSION_TEST="sord-0 >= 0.5" +SV_MODULE_HEADER=sord/sord.h +SV_MODULE_LIB=sord-0 +SV_MODULE_FUNC=sord_world_new +SV_MODULE_HAVE=HAVE_$(echo sord | tr 'a-z' 'A-Z') SV_MODULE_FAILED=1 -if test -n "$vamphostsdk_LIBS" ; then +if test -n "$sord_LIBS" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&5 $as_echo "$as_me: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&6;} - CXXFLAGS="$CXXFLAGS $vamphostsdk_CFLAGS" - LIBS="$LIBS $vamphostsdk_LIBS" + CXXFLAGS="$CXXFLAGS $sord_CFLAGS" + LIBS="$LIBS $sord_LIBS" SV_MODULE_FAILED="" fi if test -z "$SV_MODULE_VERSION_TEST" ; then @@ -5198,11 +5395,11 @@ if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for vamphostsdk" >&5 -$as_echo_n "checking for vamphostsdk... " >&6; } - -if test -n "$vamphostsdk_CFLAGS"; then - pkg_cv_vamphostsdk_CFLAGS="$vamphostsdk_CFLAGS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sord" >&5 +$as_echo_n "checking for sord... " >&6; } + +if test -n "$sord_CFLAGS"; then + pkg_cv_sord_CFLAGS="$sord_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -5210,7 +5407,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_vamphostsdk_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_sord_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -5218,8 +5415,8 @@ else pkg_failed=untried fi -if test -n "$vamphostsdk_LIBS"; then - pkg_cv_vamphostsdk_LIBS="$vamphostsdk_LIBS" +if test -n "$sord_LIBS"; then + pkg_cv_sord_LIBS="$sord_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -5227,7 +5424,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_vamphostsdk_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_sord_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -5248,12 +5445,12 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - vamphostsdk_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + sord_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` else - vamphostsdk_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + sord_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` fi # Put the nasty error message in config.log where it belongs - echo "$vamphostsdk_PKG_ERRORS" >&5 + echo "$sord_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} @@ -5263,11 +5460,11 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} else - vamphostsdk_CFLAGS=$pkg_cv_vamphostsdk_CFLAGS - vamphostsdk_LIBS=$pkg_cv_vamphostsdk_LIBS + sord_CFLAGS=$pkg_cv_sord_CFLAGS + sord_LIBS=$pkg_cv_sord_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $vamphostsdk_CFLAGS";LIBS="$LIBS $vamphostsdk_LIBS";SV_MODULE_FAILED="" + HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $sord_CFLAGS";LIBS="$LIBS $sord_LIBS";SV_MODULE_FAILED="" fi fi if test -n "$SV_MODULE_FAILED"; then @@ -5329,18 +5526,18 @@ fi -SV_MODULE_MODULE=rubberband -SV_MODULE_VERSION_TEST="rubberband" -SV_MODULE_HEADER=rubberband/RubberBandStretcher.h -SV_MODULE_LIB=rubberband -SV_MODULE_FUNC=rubberband_new -SV_MODULE_HAVE=HAVE_$(echo rubberband | tr 'a-z' 'A-Z') +SV_MODULE_MODULE=serd +SV_MODULE_VERSION_TEST="serd-0 >= 0.5" +SV_MODULE_HEADER=serd/serd.h +SV_MODULE_LIB=serd-0 +SV_MODULE_FUNC=serd_reader_read_file +SV_MODULE_HAVE=HAVE_$(echo serd | tr 'a-z' 'A-Z') SV_MODULE_FAILED=1 -if test -n "$rubberband_LIBS" ; then +if test -n "$serd_LIBS" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&5 $as_echo "$as_me: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&6;} - CXXFLAGS="$CXXFLAGS $rubberband_CFLAGS" - LIBS="$LIBS $rubberband_LIBS" + CXXFLAGS="$CXXFLAGS $serd_CFLAGS" + LIBS="$LIBS $serd_LIBS" SV_MODULE_FAILED="" fi if test -z "$SV_MODULE_VERSION_TEST" ; then @@ -5349,11 +5546,11 @@ if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for rubberband" >&5 -$as_echo_n "checking for rubberband... " >&6; } - -if test -n "$rubberband_CFLAGS"; then - pkg_cv_rubberband_CFLAGS="$rubberband_CFLAGS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for serd" >&5 +$as_echo_n "checking for serd... " >&6; } + +if test -n "$serd_CFLAGS"; then + pkg_cv_serd_CFLAGS="$serd_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -5361,7 +5558,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_rubberband_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_serd_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -5369,8 +5566,8 @@ else pkg_failed=untried fi -if test -n "$rubberband_LIBS"; then - pkg_cv_rubberband_LIBS="$rubberband_LIBS" +if test -n "$serd_LIBS"; then + pkg_cv_serd_LIBS="$serd_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -5378,7 +5575,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_rubberband_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_serd_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -5399,12 +5596,12 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - rubberband_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + serd_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` else - rubberband_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + serd_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` fi # Put the nasty error message in config.log where it belongs - echo "$rubberband_PKG_ERRORS" >&5 + echo "$serd_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} @@ -5414,11 +5611,11 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} else - rubberband_CFLAGS=$pkg_cv_rubberband_CFLAGS - rubberband_LIBS=$pkg_cv_rubberband_LIBS + serd_CFLAGS=$pkg_cv_serd_CFLAGS + serd_LIBS=$pkg_cv_serd_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $rubberband_CFLAGS";LIBS="$LIBS $rubberband_LIBS";SV_MODULE_FAILED="" + HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $serd_CFLAGS";LIBS="$LIBS $serd_LIBS";SV_MODULE_FAILED="" fi fi if test -n "$SV_MODULE_FAILED"; then @@ -5480,18 +5677,19 @@ fi -SV_MODULE_MODULE=sord -SV_MODULE_VERSION_TEST="sord-0 >= 0.5" -SV_MODULE_HEADER=sord/sord.h -SV_MODULE_LIB=sord-0 -SV_MODULE_FUNC=sord_world_new -SV_MODULE_HAVE=HAVE_$(echo sord | tr 'a-z' 'A-Z') + +SV_MODULE_MODULE=liblo +SV_MODULE_VERSION_TEST="" +SV_MODULE_HEADER=lo/lo.h +SV_MODULE_LIB=lo +SV_MODULE_FUNC=lo_address_new +SV_MODULE_HAVE=HAVE_$(echo liblo | tr 'a-z' 'A-Z') SV_MODULE_FAILED=1 -if test -n "$sord_LIBS" ; then +if test -n "$liblo_LIBS" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&5 $as_echo "$as_me: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&6;} - CXXFLAGS="$CXXFLAGS $sord_CFLAGS" - LIBS="$LIBS $sord_LIBS" + CXXFLAGS="$CXXFLAGS $liblo_CFLAGS" + LIBS="$LIBS $liblo_LIBS" SV_MODULE_FAILED="" fi if test -z "$SV_MODULE_VERSION_TEST" ; then @@ -5500,11 +5698,11 @@ if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sord" >&5 -$as_echo_n "checking for sord... " >&6; } - -if test -n "$sord_CFLAGS"; then - pkg_cv_sord_CFLAGS="$sord_CFLAGS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for liblo" >&5 +$as_echo_n "checking for liblo... " >&6; } + +if test -n "$liblo_CFLAGS"; then + pkg_cv_liblo_CFLAGS="$liblo_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -5512,7 +5710,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_sord_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_liblo_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -5520,8 +5718,8 @@ else pkg_failed=untried fi -if test -n "$sord_LIBS"; then - pkg_cv_sord_LIBS="$sord_LIBS" +if test -n "$liblo_LIBS"; then + pkg_cv_liblo_LIBS="$liblo_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -5529,7 +5727,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_sord_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_liblo_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -5550,40 +5748,42 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - sord_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + liblo_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` else - sord_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + liblo_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` fi # Put the nasty error message in config.log where it belongs - echo "$sord_PKG_ERRORS" >&5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 -$as_echo "$as_me: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} + echo "$liblo_PKG_ERRORS" >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 +$as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 -$as_echo "$as_me: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} -else - sord_CFLAGS=$pkg_cv_sord_CFLAGS - sord_LIBS=$pkg_cv_sord_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 +$as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} +else + liblo_CFLAGS=$pkg_cv_liblo_CFLAGS + liblo_LIBS=$pkg_cv_liblo_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $sord_CFLAGS";LIBS="$LIBS $sord_LIBS";SV_MODULE_FAILED="" + HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $liblo_CFLAGS";LIBS="$LIBS $liblo_LIBS";SV_MODULE_FAILED="" fi fi if test -n "$SV_MODULE_FAILED"; then as_ac_Header=`$as_echo "ac_cv_header_$SV_MODULE_HEADER" | $as_tr_sh` ac_fn_cxx_check_header_mongrel "$LINENO" "$SV_MODULE_HEADER" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - HAVES="$HAVES $SV_MODULE_HAVE" -else - as_fn_error $? "Failed to find header $SV_MODULE_HEADER for required module $SV_MODULE_MODULE" "$LINENO" 5 -fi - - - if test -n "$SV_MODULE_LIB"; then - as_ac_Lib=`$as_echo "ac_cv_lib_$SV_MODULE_LIB''_$SV_MODULE_FUNC" | $as_tr_sh` + HAVES="$HAVES $SV_MODULE_HAVE";SV_MODULE_FAILED="" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find header $SV_MODULE_HEADER for optional module $SV_MODULE_MODULE" >&5 +$as_echo "$as_me: Failed to find header $SV_MODULE_HEADER for optional module $SV_MODULE_MODULE" >&6;} +fi + + + if test -z "$SV_MODULE_FAILED"; then + if test -n "$SV_MODULE_LIB"; then + as_ac_Lib=`$as_echo "ac_cv_lib_$SV_MODULE_LIB''_$SV_MODULE_FUNC" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $SV_MODULE_FUNC in -l$SV_MODULE_LIB" >&5 $as_echo_n "checking for $SV_MODULE_FUNC in -l$SV_MODULE_LIB... " >&6; } if eval \${$as_ac_Lib+:} false; then : @@ -5624,25 +5824,27 @@ if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : LIBS="$LIBS -l$SV_MODULE_LIB" else - as_fn_error $? "Failed to find library $SV_MODULE_LIB for required module $SV_MODULE_MODULE" "$LINENO" 5 -fi - + { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find library $SV_MODULE_LIB for optional module $SV_MODULE_MODULE" >&5 +$as_echo "$as_me: Failed to find library $SV_MODULE_LIB for optional module $SV_MODULE_MODULE" >&6;} +fi + + fi fi fi -SV_MODULE_MODULE=serd -SV_MODULE_VERSION_TEST="serd-0 >= 0.5" -SV_MODULE_HEADER=serd/serd.h -SV_MODULE_LIB=serd-0 -SV_MODULE_FUNC=serd_reader_read_file -SV_MODULE_HAVE=HAVE_$(echo serd | tr 'a-z' 'A-Z') +SV_MODULE_MODULE=portaudio +SV_MODULE_VERSION_TEST="portaudio-2.0 >= 19" +SV_MODULE_HEADER=portaudio.h +SV_MODULE_LIB=portaudio +SV_MODULE_FUNC=Pa_IsFormatSupported +SV_MODULE_HAVE=HAVE_$(echo portaudio | tr 'a-z' 'A-Z') SV_MODULE_FAILED=1 -if test -n "$serd_LIBS" ; then +if test -n "$portaudio_LIBS" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&5 $as_echo "$as_me: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&6;} - CXXFLAGS="$CXXFLAGS $serd_CFLAGS" - LIBS="$LIBS $serd_LIBS" + CXXFLAGS="$CXXFLAGS $portaudio_CFLAGS" + LIBS="$LIBS $portaudio_LIBS" SV_MODULE_FAILED="" fi if test -z "$SV_MODULE_VERSION_TEST" ; then @@ -5651,11 +5853,11 @@ if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for serd" >&5 -$as_echo_n "checking for serd... " >&6; } - -if test -n "$serd_CFLAGS"; then - pkg_cv_serd_CFLAGS="$serd_CFLAGS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for portaudio" >&5 +$as_echo_n "checking for portaudio... " >&6; } + +if test -n "$portaudio_CFLAGS"; then + pkg_cv_portaudio_CFLAGS="$portaudio_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -5663,7 +5865,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_serd_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_portaudio_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -5671,8 +5873,8 @@ else pkg_failed=untried fi -if test -n "$serd_LIBS"; then - pkg_cv_serd_LIBS="$serd_LIBS" +if test -n "$portaudio_LIBS"; then + pkg_cv_portaudio_LIBS="$portaudio_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -5680,7 +5882,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_serd_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_portaudio_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -5701,40 +5903,42 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - serd_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + portaudio_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` else - serd_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + portaudio_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` fi # Put the nasty error message in config.log where it belongs - echo "$serd_PKG_ERRORS" >&5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 -$as_echo "$as_me: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} + echo "$portaudio_PKG_ERRORS" >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 +$as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 -$as_echo "$as_me: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} -else - serd_CFLAGS=$pkg_cv_serd_CFLAGS - serd_LIBS=$pkg_cv_serd_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 +$as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} +else + portaudio_CFLAGS=$pkg_cv_portaudio_CFLAGS + portaudio_LIBS=$pkg_cv_portaudio_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $serd_CFLAGS";LIBS="$LIBS $serd_LIBS";SV_MODULE_FAILED="" + HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $portaudio_CFLAGS";LIBS="$LIBS $portaudio_LIBS";SV_MODULE_FAILED="" fi fi if test -n "$SV_MODULE_FAILED"; then as_ac_Header=`$as_echo "ac_cv_header_$SV_MODULE_HEADER" | $as_tr_sh` ac_fn_cxx_check_header_mongrel "$LINENO" "$SV_MODULE_HEADER" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - HAVES="$HAVES $SV_MODULE_HAVE" -else - as_fn_error $? "Failed to find header $SV_MODULE_HEADER for required module $SV_MODULE_MODULE" "$LINENO" 5 -fi - - - if test -n "$SV_MODULE_LIB"; then - as_ac_Lib=`$as_echo "ac_cv_lib_$SV_MODULE_LIB''_$SV_MODULE_FUNC" | $as_tr_sh` + HAVES="$HAVES $SV_MODULE_HAVE";SV_MODULE_FAILED="" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find header $SV_MODULE_HEADER for optional module $SV_MODULE_MODULE" >&5 +$as_echo "$as_me: Failed to find header $SV_MODULE_HEADER for optional module $SV_MODULE_MODULE" >&6;} +fi + + + if test -z "$SV_MODULE_FAILED"; then + if test -n "$SV_MODULE_LIB"; then + as_ac_Lib=`$as_echo "ac_cv_lib_$SV_MODULE_LIB''_$SV_MODULE_FUNC" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $SV_MODULE_FUNC in -l$SV_MODULE_LIB" >&5 $as_echo_n "checking for $SV_MODULE_FUNC in -l$SV_MODULE_LIB... " >&6; } if eval \${$as_ac_Lib+:} false; then : @@ -5775,26 +5979,27 @@ if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : LIBS="$LIBS -l$SV_MODULE_LIB" else - as_fn_error $? "Failed to find library $SV_MODULE_LIB for required module $SV_MODULE_MODULE" "$LINENO" 5 -fi - + { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find library $SV_MODULE_LIB for optional module $SV_MODULE_MODULE" >&5 +$as_echo "$as_me: Failed to find library $SV_MODULE_LIB for optional module $SV_MODULE_MODULE" >&6;} +fi + + fi fi fi - -SV_MODULE_MODULE=liblo -SV_MODULE_VERSION_TEST="" -SV_MODULE_HEADER=lo/lo.h -SV_MODULE_LIB=lo -SV_MODULE_FUNC=lo_address_new -SV_MODULE_HAVE=HAVE_$(echo liblo | tr 'a-z' 'A-Z') +SV_MODULE_MODULE=JACK +SV_MODULE_VERSION_TEST="jack >= 0.100" +SV_MODULE_HEADER=jack/jack.h +SV_MODULE_LIB=jack +SV_MODULE_FUNC=jack_client_open +SV_MODULE_HAVE=HAVE_$(echo JACK | tr 'a-z' 'A-Z') SV_MODULE_FAILED=1 -if test -n "$liblo_LIBS" ; then +if test -n "$JACK_LIBS" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&5 $as_echo "$as_me: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&6;} - CXXFLAGS="$CXXFLAGS $liblo_CFLAGS" - LIBS="$LIBS $liblo_LIBS" + CXXFLAGS="$CXXFLAGS $JACK_CFLAGS" + LIBS="$LIBS $JACK_LIBS" SV_MODULE_FAILED="" fi if test -z "$SV_MODULE_VERSION_TEST" ; then @@ -5803,11 +6008,11 @@ if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for liblo" >&5 -$as_echo_n "checking for liblo... " >&6; } - -if test -n "$liblo_CFLAGS"; then - pkg_cv_liblo_CFLAGS="$liblo_CFLAGS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for JACK" >&5 +$as_echo_n "checking for JACK... " >&6; } + +if test -n "$JACK_CFLAGS"; then + pkg_cv_JACK_CFLAGS="$JACK_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -5815,7 +6020,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_liblo_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_JACK_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -5823,8 +6028,8 @@ else pkg_failed=untried fi -if test -n "$liblo_LIBS"; then - pkg_cv_liblo_LIBS="$liblo_LIBS" +if test -n "$JACK_LIBS"; then + pkg_cv_JACK_LIBS="$JACK_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -5832,7 +6037,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_liblo_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_JACK_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -5853,12 +6058,12 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - liblo_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + JACK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` else - liblo_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + JACK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` fi # Put the nasty error message in config.log where it belongs - echo "$liblo_PKG_ERRORS" >&5 + echo "$JACK_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} @@ -5868,11 +6073,11 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} else - liblo_CFLAGS=$pkg_cv_liblo_CFLAGS - liblo_LIBS=$pkg_cv_liblo_LIBS + JACK_CFLAGS=$pkg_cv_JACK_CFLAGS + JACK_LIBS=$pkg_cv_JACK_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $liblo_CFLAGS";LIBS="$LIBS $liblo_LIBS";SV_MODULE_FAILED="" + HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $JACK_CFLAGS";LIBS="$LIBS $JACK_LIBS";SV_MODULE_FAILED="" fi fi if test -n "$SV_MODULE_FAILED"; then @@ -5938,18 +6143,18 @@ fi -SV_MODULE_MODULE=portaudio_2_0 -SV_MODULE_VERSION_TEST="portaudio-2.0 >= 19" -SV_MODULE_HEADER=portaudio.h -SV_MODULE_LIB=portaudio -SV_MODULE_FUNC=Pa_IsFormatSupported -SV_MODULE_HAVE=HAVE_$(echo portaudio_2_0 | tr 'a-z' 'A-Z') +SV_MODULE_MODULE=libpulse +SV_MODULE_VERSION_TEST="libpulse >= 0.9" +SV_MODULE_HEADER=pulse/pulseaudio.h +SV_MODULE_LIB=pulse +SV_MODULE_FUNC=pa_stream_new +SV_MODULE_HAVE=HAVE_$(echo libpulse | tr 'a-z' 'A-Z') SV_MODULE_FAILED=1 -if test -n "$portaudio_2_0_LIBS" ; then +if test -n "$libpulse_LIBS" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&5 $as_echo "$as_me: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&6;} - CXXFLAGS="$CXXFLAGS $portaudio_2_0_CFLAGS" - LIBS="$LIBS $portaudio_2_0_LIBS" + CXXFLAGS="$CXXFLAGS $libpulse_CFLAGS" + LIBS="$LIBS $libpulse_LIBS" SV_MODULE_FAILED="" fi if test -z "$SV_MODULE_VERSION_TEST" ; then @@ -5958,11 +6163,11 @@ if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for portaudio_2_0" >&5 -$as_echo_n "checking for portaudio_2_0... " >&6; } - -if test -n "$portaudio_2_0_CFLAGS"; then - pkg_cv_portaudio_2_0_CFLAGS="$portaudio_2_0_CFLAGS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libpulse" >&5 +$as_echo_n "checking for libpulse... " >&6; } + +if test -n "$libpulse_CFLAGS"; then + pkg_cv_libpulse_CFLAGS="$libpulse_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -5970,7 +6175,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_portaudio_2_0_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_libpulse_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -5978,8 +6183,8 @@ else pkg_failed=untried fi -if test -n "$portaudio_2_0_LIBS"; then - pkg_cv_portaudio_2_0_LIBS="$portaudio_2_0_LIBS" +if test -n "$libpulse_LIBS"; then + pkg_cv_libpulse_LIBS="$libpulse_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -5987,7 +6192,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_portaudio_2_0_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_libpulse_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -6008,12 +6213,12 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - portaudio_2_0_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + libpulse_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` else - portaudio_2_0_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + libpulse_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` fi # Put the nasty error message in config.log where it belongs - echo "$portaudio_2_0_PKG_ERRORS" >&5 + echo "$libpulse_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} @@ -6023,11 +6228,11 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} else - portaudio_2_0_CFLAGS=$pkg_cv_portaudio_2_0_CFLAGS - portaudio_2_0_LIBS=$pkg_cv_portaudio_2_0_LIBS + libpulse_CFLAGS=$pkg_cv_libpulse_CFLAGS + libpulse_LIBS=$pkg_cv_libpulse_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $portaudio_2_0_CFLAGS";LIBS="$LIBS $portaudio_2_0_LIBS";SV_MODULE_FAILED="" + HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $libpulse_CFLAGS";LIBS="$LIBS $libpulse_LIBS";SV_MODULE_FAILED="" fi fi if test -n "$SV_MODULE_FAILED"; then @@ -6093,18 +6298,18 @@ fi -SV_MODULE_MODULE=JACK -SV_MODULE_VERSION_TEST="jack >= 0.100" -SV_MODULE_HEADER=jack/jack.h -SV_MODULE_LIB=jack -SV_MODULE_FUNC=jack_client_open -SV_MODULE_HAVE=HAVE_$(echo JACK | tr 'a-z' 'A-Z') +SV_MODULE_MODULE=lrdf +SV_MODULE_VERSION_TEST="lrdf >= 0.2" +SV_MODULE_HEADER=lrdf.h +SV_MODULE_LIB=lrdf +SV_MODULE_FUNC=lrdf_init +SV_MODULE_HAVE=HAVE_$(echo lrdf | tr 'a-z' 'A-Z') SV_MODULE_FAILED=1 -if test -n "$JACK_LIBS" ; then +if test -n "$lrdf_LIBS" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&5 $as_echo "$as_me: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&6;} - CXXFLAGS="$CXXFLAGS $JACK_CFLAGS" - LIBS="$LIBS $JACK_LIBS" + CXXFLAGS="$CXXFLAGS $lrdf_CFLAGS" + LIBS="$LIBS $lrdf_LIBS" SV_MODULE_FAILED="" fi if test -z "$SV_MODULE_VERSION_TEST" ; then @@ -6113,11 +6318,11 @@ if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for JACK" >&5 -$as_echo_n "checking for JACK... " >&6; } - -if test -n "$JACK_CFLAGS"; then - pkg_cv_JACK_CFLAGS="$JACK_CFLAGS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for lrdf" >&5 +$as_echo_n "checking for lrdf... " >&6; } + +if test -n "$lrdf_CFLAGS"; then + pkg_cv_lrdf_CFLAGS="$lrdf_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -6125,7 +6330,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_JACK_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_lrdf_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -6133,8 +6338,8 @@ else pkg_failed=untried fi -if test -n "$JACK_LIBS"; then - pkg_cv_JACK_LIBS="$JACK_LIBS" +if test -n "$lrdf_LIBS"; then + pkg_cv_lrdf_LIBS="$lrdf_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -6142,7 +6347,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_JACK_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_lrdf_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -6163,12 +6368,12 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - JACK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + lrdf_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` else - JACK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + lrdf_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` fi # Put the nasty error message in config.log where it belongs - echo "$JACK_PKG_ERRORS" >&5 + echo "$lrdf_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} @@ -6178,11 +6383,11 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} else - JACK_CFLAGS=$pkg_cv_JACK_CFLAGS - JACK_LIBS=$pkg_cv_JACK_LIBS + lrdf_CFLAGS=$pkg_cv_lrdf_CFLAGS + lrdf_LIBS=$pkg_cv_lrdf_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $JACK_CFLAGS";LIBS="$LIBS $JACK_LIBS";SV_MODULE_FAILED="" + HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $lrdf_CFLAGS";LIBS="$LIBS $lrdf_LIBS";SV_MODULE_FAILED="" fi fi if test -n "$SV_MODULE_FAILED"; then @@ -6248,18 +6453,18 @@ fi -SV_MODULE_MODULE=libpulse -SV_MODULE_VERSION_TEST="libpulse >= 0.9" -SV_MODULE_HEADER=pulse/pulseaudio.h -SV_MODULE_LIB=pulse -SV_MODULE_FUNC=pa_stream_new -SV_MODULE_HAVE=HAVE_$(echo libpulse | tr 'a-z' 'A-Z') +SV_MODULE_MODULE=oggz +SV_MODULE_VERSION_TEST="oggz >= 1.0.0" +SV_MODULE_HEADER=oggz/oggz.h +SV_MODULE_LIB=oggz +SV_MODULE_FUNC=oggz_run +SV_MODULE_HAVE=HAVE_$(echo oggz | tr 'a-z' 'A-Z') SV_MODULE_FAILED=1 -if test -n "$libpulse_LIBS" ; then +if test -n "$oggz_LIBS" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&5 $as_echo "$as_me: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&6;} - CXXFLAGS="$CXXFLAGS $libpulse_CFLAGS" - LIBS="$LIBS $libpulse_LIBS" + CXXFLAGS="$CXXFLAGS $oggz_CFLAGS" + LIBS="$LIBS $oggz_LIBS" SV_MODULE_FAILED="" fi if test -z "$SV_MODULE_VERSION_TEST" ; then @@ -6268,11 +6473,11 @@ if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libpulse" >&5 -$as_echo_n "checking for libpulse... " >&6; } - -if test -n "$libpulse_CFLAGS"; then - pkg_cv_libpulse_CFLAGS="$libpulse_CFLAGS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for oggz" >&5 +$as_echo_n "checking for oggz... " >&6; } + +if test -n "$oggz_CFLAGS"; then + pkg_cv_oggz_CFLAGS="$oggz_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -6280,7 +6485,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_libpulse_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_oggz_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -6288,8 +6493,8 @@ else pkg_failed=untried fi -if test -n "$libpulse_LIBS"; then - pkg_cv_libpulse_LIBS="$libpulse_LIBS" +if test -n "$oggz_LIBS"; then + pkg_cv_oggz_LIBS="$oggz_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -6297,7 +6502,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_libpulse_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_oggz_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -6318,12 +6523,12 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - libpulse_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + oggz_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` else - libpulse_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + oggz_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` fi # Put the nasty error message in config.log where it belongs - echo "$libpulse_PKG_ERRORS" >&5 + echo "$oggz_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} @@ -6333,11 +6538,11 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} else - libpulse_CFLAGS=$pkg_cv_libpulse_CFLAGS - libpulse_LIBS=$pkg_cv_libpulse_LIBS + oggz_CFLAGS=$pkg_cv_oggz_CFLAGS + oggz_LIBS=$pkg_cv_oggz_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $libpulse_CFLAGS";LIBS="$LIBS $libpulse_LIBS";SV_MODULE_FAILED="" + HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $oggz_CFLAGS";LIBS="$LIBS $oggz_LIBS";SV_MODULE_FAILED="" fi fi if test -n "$SV_MODULE_FAILED"; then @@ -6403,18 +6608,18 @@ fi -SV_MODULE_MODULE=lrdf -SV_MODULE_VERSION_TEST="lrdf >= 0.2" -SV_MODULE_HEADER=lrdf.h -SV_MODULE_LIB=lrdf -SV_MODULE_FUNC=lrdf_init -SV_MODULE_HAVE=HAVE_$(echo lrdf | tr 'a-z' 'A-Z') +SV_MODULE_MODULE=fishsound +SV_MODULE_VERSION_TEST="fishsound >= 1.0.0" +SV_MODULE_HEADER=fishsound/fishsound.h +SV_MODULE_LIB=fishsound +SV_MODULE_FUNC=fish_sound_new +SV_MODULE_HAVE=HAVE_$(echo fishsound | tr 'a-z' 'A-Z') SV_MODULE_FAILED=1 -if test -n "$lrdf_LIBS" ; then +if test -n "$fishsound_LIBS" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&5 $as_echo "$as_me: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&6;} - CXXFLAGS="$CXXFLAGS $lrdf_CFLAGS" - LIBS="$LIBS $lrdf_LIBS" + CXXFLAGS="$CXXFLAGS $fishsound_CFLAGS" + LIBS="$LIBS $fishsound_LIBS" SV_MODULE_FAILED="" fi if test -z "$SV_MODULE_VERSION_TEST" ; then @@ -6423,11 +6628,11 @@ if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for lrdf" >&5 -$as_echo_n "checking for lrdf... " >&6; } - -if test -n "$lrdf_CFLAGS"; then - pkg_cv_lrdf_CFLAGS="$lrdf_CFLAGS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fishsound" >&5 +$as_echo_n "checking for fishsound... " >&6; } + +if test -n "$fishsound_CFLAGS"; then + pkg_cv_fishsound_CFLAGS="$fishsound_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -6435,7 +6640,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_lrdf_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_fishsound_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -6443,8 +6648,8 @@ else pkg_failed=untried fi -if test -n "$lrdf_LIBS"; then - pkg_cv_lrdf_LIBS="$lrdf_LIBS" +if test -n "$fishsound_LIBS"; then + pkg_cv_fishsound_LIBS="$fishsound_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -6452,7 +6657,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_lrdf_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_fishsound_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -6473,12 +6678,12 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - lrdf_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + fishsound_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` else - lrdf_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + fishsound_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` fi # Put the nasty error message in config.log where it belongs - echo "$lrdf_PKG_ERRORS" >&5 + echo "$fishsound_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} @@ -6488,11 +6693,11 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} else - lrdf_CFLAGS=$pkg_cv_lrdf_CFLAGS - lrdf_LIBS=$pkg_cv_lrdf_LIBS + fishsound_CFLAGS=$pkg_cv_fishsound_CFLAGS + fishsound_LIBS=$pkg_cv_fishsound_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $lrdf_CFLAGS";LIBS="$LIBS $lrdf_LIBS";SV_MODULE_FAILED="" + HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $fishsound_CFLAGS";LIBS="$LIBS $fishsound_LIBS";SV_MODULE_FAILED="" fi fi if test -n "$SV_MODULE_FAILED"; then @@ -6558,18 +6763,18 @@ fi -SV_MODULE_MODULE=oggz -SV_MODULE_VERSION_TEST="oggz >= 1.0.0" -SV_MODULE_HEADER=oggz/oggz.h -SV_MODULE_LIB=oggz -SV_MODULE_FUNC=oggz_run -SV_MODULE_HAVE=HAVE_$(echo oggz | tr 'a-z' 'A-Z') +SV_MODULE_MODULE=mad +SV_MODULE_VERSION_TEST="mad >= 0.15.0" +SV_MODULE_HEADER=mad.h +SV_MODULE_LIB=mad +SV_MODULE_FUNC=mad_decoder_init +SV_MODULE_HAVE=HAVE_$(echo mad | tr 'a-z' 'A-Z') SV_MODULE_FAILED=1 -if test -n "$oggz_LIBS" ; then +if test -n "$mad_LIBS" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&5 $as_echo "$as_me: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&6;} - CXXFLAGS="$CXXFLAGS $oggz_CFLAGS" - LIBS="$LIBS $oggz_LIBS" + CXXFLAGS="$CXXFLAGS $mad_CFLAGS" + LIBS="$LIBS $mad_LIBS" SV_MODULE_FAILED="" fi if test -z "$SV_MODULE_VERSION_TEST" ; then @@ -6578,11 +6783,11 @@ if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for oggz" >&5 -$as_echo_n "checking for oggz... " >&6; } - -if test -n "$oggz_CFLAGS"; then - pkg_cv_oggz_CFLAGS="$oggz_CFLAGS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for mad" >&5 +$as_echo_n "checking for mad... " >&6; } + +if test -n "$mad_CFLAGS"; then + pkg_cv_mad_CFLAGS="$mad_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -6590,7 +6795,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_oggz_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_mad_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -6598,8 +6803,8 @@ else pkg_failed=untried fi -if test -n "$oggz_LIBS"; then - pkg_cv_oggz_LIBS="$oggz_LIBS" +if test -n "$mad_LIBS"; then + pkg_cv_mad_LIBS="$mad_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -6607,7 +6812,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_oggz_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_mad_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -6628,12 +6833,12 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - oggz_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + mad_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` else - oggz_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + mad_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` fi # Put the nasty error message in config.log where it belongs - echo "$oggz_PKG_ERRORS" >&5 + echo "$mad_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} @@ -6643,11 +6848,11 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} else - oggz_CFLAGS=$pkg_cv_oggz_CFLAGS - oggz_LIBS=$pkg_cv_oggz_LIBS + mad_CFLAGS=$pkg_cv_mad_CFLAGS + mad_LIBS=$pkg_cv_mad_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $oggz_CFLAGS";LIBS="$LIBS $oggz_LIBS";SV_MODULE_FAILED="" + HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $mad_CFLAGS";LIBS="$LIBS $mad_LIBS";SV_MODULE_FAILED="" fi fi if test -n "$SV_MODULE_FAILED"; then @@ -6713,18 +6918,18 @@ fi -SV_MODULE_MODULE=fishsound -SV_MODULE_VERSION_TEST="fishsound >= 1.0.0" -SV_MODULE_HEADER=fishsound/fishsound.h -SV_MODULE_LIB=fishsound -SV_MODULE_FUNC=fish_sound_new -SV_MODULE_HAVE=HAVE_$(echo fishsound | tr 'a-z' 'A-Z') +SV_MODULE_MODULE=id3tag +SV_MODULE_VERSION_TEST="id3tag >= 0.15.0" +SV_MODULE_HEADER=id3tag.h +SV_MODULE_LIB=id3tag +SV_MODULE_FUNC=id3_tag_new +SV_MODULE_HAVE=HAVE_$(echo id3tag | tr 'a-z' 'A-Z') SV_MODULE_FAILED=1 -if test -n "$fishsound_LIBS" ; then +if test -n "$id3tag_LIBS" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&5 $as_echo "$as_me: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&6;} - CXXFLAGS="$CXXFLAGS $fishsound_CFLAGS" - LIBS="$LIBS $fishsound_LIBS" + CXXFLAGS="$CXXFLAGS $id3tag_CFLAGS" + LIBS="$LIBS $id3tag_LIBS" SV_MODULE_FAILED="" fi if test -z "$SV_MODULE_VERSION_TEST" ; then @@ -6733,11 +6938,11 @@ if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fishsound" >&5 -$as_echo_n "checking for fishsound... " >&6; } - -if test -n "$fishsound_CFLAGS"; then - pkg_cv_fishsound_CFLAGS="$fishsound_CFLAGS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for id3tag" >&5 +$as_echo_n "checking for id3tag... " >&6; } + +if test -n "$id3tag_CFLAGS"; then + pkg_cv_id3tag_CFLAGS="$id3tag_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -6745,7 +6950,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_fishsound_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_id3tag_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -6753,8 +6958,8 @@ else pkg_failed=untried fi -if test -n "$fishsound_LIBS"; then - pkg_cv_fishsound_LIBS="$fishsound_LIBS" +if test -n "$id3tag_LIBS"; then + pkg_cv_id3tag_LIBS="$id3tag_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -6762,7 +6967,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_fishsound_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_id3tag_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -6783,12 +6988,12 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - fishsound_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + id3tag_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` else - fishsound_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + id3tag_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` fi # Put the nasty error message in config.log where it belongs - echo "$fishsound_PKG_ERRORS" >&5 + echo "$id3tag_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} @@ -6798,11 +7003,11 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} else - fishsound_CFLAGS=$pkg_cv_fishsound_CFLAGS - fishsound_LIBS=$pkg_cv_fishsound_LIBS + id3tag_CFLAGS=$pkg_cv_id3tag_CFLAGS + id3tag_LIBS=$pkg_cv_id3tag_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $fishsound_CFLAGS";LIBS="$LIBS $fishsound_LIBS";SV_MODULE_FAILED="" + HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $id3tag_CFLAGS";LIBS="$LIBS $id3tag_LIBS";SV_MODULE_FAILED="" fi fi if test -n "$SV_MODULE_FAILED"; then @@ -6868,18 +7073,20 @@ fi -SV_MODULE_MODULE=mad -SV_MODULE_VERSION_TEST="mad >= 0.15.0" -SV_MODULE_HEADER=mad.h -SV_MODULE_LIB=mad -SV_MODULE_FUNC=mad_decoder_init -SV_MODULE_HAVE=HAVE_$(echo mad | tr 'a-z' 'A-Z') +# Link in -lX11 if it exists -- this is for the X error handler + +SV_MODULE_MODULE=X11 +SV_MODULE_VERSION_TEST="x11 >= 1.0.0" +SV_MODULE_HEADER=X11/X.h +SV_MODULE_LIB=x11 +SV_MODULE_FUNC=XGetErrorText +SV_MODULE_HAVE=HAVE_$(echo X11 | tr 'a-z' 'A-Z') SV_MODULE_FAILED=1 -if test -n "$mad_LIBS" ; then +if test -n "$X11_LIBS" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&5 $as_echo "$as_me: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&6;} - CXXFLAGS="$CXXFLAGS $mad_CFLAGS" - LIBS="$LIBS $mad_LIBS" + CXXFLAGS="$CXXFLAGS $X11_CFLAGS" + LIBS="$LIBS $X11_LIBS" SV_MODULE_FAILED="" fi if test -z "$SV_MODULE_VERSION_TEST" ; then @@ -6888,11 +7095,11 @@ if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for mad" >&5 -$as_echo_n "checking for mad... " >&6; } - -if test -n "$mad_CFLAGS"; then - pkg_cv_mad_CFLAGS="$mad_CFLAGS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X11" >&5 +$as_echo_n "checking for X11... " >&6; } + +if test -n "$X11_CFLAGS"; then + pkg_cv_X11_CFLAGS="$X11_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -6900,7 +7107,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_mad_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_X11_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -6908,8 +7115,8 @@ else pkg_failed=untried fi -if test -n "$mad_LIBS"; then - pkg_cv_mad_LIBS="$mad_LIBS" +if test -n "$X11_LIBS"; then + pkg_cv_X11_LIBS="$X11_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -6917,7 +7124,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_mad_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_X11_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -6938,12 +7145,12 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - mad_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + X11_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` else - mad_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + X11_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` fi # Put the nasty error message in config.log where it belongs - echo "$mad_PKG_ERRORS" >&5 + echo "$X11_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} @@ -6953,11 +7160,11 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} else - mad_CFLAGS=$pkg_cv_mad_CFLAGS - mad_LIBS=$pkg_cv_mad_LIBS + X11_CFLAGS=$pkg_cv_X11_CFLAGS + X11_LIBS=$pkg_cv_X11_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $mad_CFLAGS";LIBS="$LIBS $mad_LIBS";SV_MODULE_FAILED="" + HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $X11_CFLAGS";LIBS="$LIBS $X11_LIBS";SV_MODULE_FAILED="" fi fi if test -n "$SV_MODULE_FAILED"; then @@ -7023,318 +7230,6 @@ fi -SV_MODULE_MODULE=id3tag -SV_MODULE_VERSION_TEST="id3tag >= 0.15.0" -SV_MODULE_HEADER=id3tag.h -SV_MODULE_LIB=id3tag -SV_MODULE_FUNC=id3_tag_new -SV_MODULE_HAVE=HAVE_$(echo id3tag | tr 'a-z' 'A-Z') -SV_MODULE_FAILED=1 -if test -n "$id3tag_LIBS" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&5 -$as_echo "$as_me: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&6;} - CXXFLAGS="$CXXFLAGS $id3tag_CFLAGS" - LIBS="$LIBS $id3tag_LIBS" - SV_MODULE_FAILED="" -fi -if test -z "$SV_MODULE_VERSION_TEST" ; then - SV_MODULE_VERSION_TEST=$SV_MODULE_MODULE -fi -if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for id3tag" >&5 -$as_echo_n "checking for id3tag... " >&6; } - -if test -n "$id3tag_CFLAGS"; then - pkg_cv_id3tag_CFLAGS="$id3tag_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$SV_MODULE_VERSION_TEST") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_id3tag_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$id3tag_LIBS"; then - pkg_cv_id3tag_LIBS="$id3tag_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$SV_MODULE_VERSION_TEST") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_id3tag_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 - id3tag_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` - else - id3tag_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$id3tag_PKG_ERRORS" >&5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 -$as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 -$as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} -else - id3tag_CFLAGS=$pkg_cv_id3tag_CFLAGS - id3tag_LIBS=$pkg_cv_id3tag_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $id3tag_CFLAGS";LIBS="$LIBS $id3tag_LIBS";SV_MODULE_FAILED="" -fi -fi -if test -n "$SV_MODULE_FAILED"; then - as_ac_Header=`$as_echo "ac_cv_header_$SV_MODULE_HEADER" | $as_tr_sh` -ac_fn_cxx_check_header_mongrel "$LINENO" "$SV_MODULE_HEADER" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - HAVES="$HAVES $SV_MODULE_HAVE";SV_MODULE_FAILED="" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find header $SV_MODULE_HEADER for optional module $SV_MODULE_MODULE" >&5 -$as_echo "$as_me: Failed to find header $SV_MODULE_HEADER for optional module $SV_MODULE_MODULE" >&6;} -fi - - - if test -z "$SV_MODULE_FAILED"; then - if test -n "$SV_MODULE_LIB"; then - as_ac_Lib=`$as_echo "ac_cv_lib_$SV_MODULE_LIB''_$SV_MODULE_FUNC" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $SV_MODULE_FUNC in -l$SV_MODULE_LIB" >&5 -$as_echo_n "checking for $SV_MODULE_FUNC in -l$SV_MODULE_LIB... " >&6; } -if eval \${$as_ac_Lib+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-l$SV_MODULE_LIB $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. */ -#ifdef __cplusplus -extern "C" -#endif -char $SV_MODULE_FUNC (); -int -main () -{ -return $SV_MODULE_FUNC (); - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - eval "$as_ac_Lib=yes" -else - eval "$as_ac_Lib=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -eval ac_res=\$$as_ac_Lib - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : - LIBS="$LIBS -l$SV_MODULE_LIB" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find library $SV_MODULE_LIB for optional module $SV_MODULE_MODULE" >&5 -$as_echo "$as_me: Failed to find library $SV_MODULE_LIB for optional module $SV_MODULE_MODULE" >&6;} -fi - - fi - fi -fi - - -# Link in -lX11 if it exists -- this is for the X error handler - -SV_MODULE_MODULE=X11 -SV_MODULE_VERSION_TEST="x11 >= 1.0.0" -SV_MODULE_HEADER=X11/X.h -SV_MODULE_LIB=x11 -SV_MODULE_FUNC=XGetErrorText -SV_MODULE_HAVE=HAVE_$(echo X11 | tr 'a-z' 'A-Z') -SV_MODULE_FAILED=1 -if test -n "$X11_LIBS" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&5 -$as_echo "$as_me: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&6;} - CXXFLAGS="$CXXFLAGS $X11_CFLAGS" - LIBS="$LIBS $X11_LIBS" - SV_MODULE_FAILED="" -fi -if test -z "$SV_MODULE_VERSION_TEST" ; then - SV_MODULE_VERSION_TEST=$SV_MODULE_MODULE -fi -if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X11" >&5 -$as_echo_n "checking for X11... " >&6; } - -if test -n "$X11_CFLAGS"; then - pkg_cv_X11_CFLAGS="$X11_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$SV_MODULE_VERSION_TEST") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_X11_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$X11_LIBS"; then - pkg_cv_X11_LIBS="$X11_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$SV_MODULE_VERSION_TEST") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_X11_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 - X11_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` - else - X11_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$X11_PKG_ERRORS" >&5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 -$as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 -$as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} -else - X11_CFLAGS=$pkg_cv_X11_CFLAGS - X11_LIBS=$pkg_cv_X11_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $X11_CFLAGS";LIBS="$LIBS $X11_LIBS";SV_MODULE_FAILED="" -fi -fi -if test -n "$SV_MODULE_FAILED"; then - as_ac_Header=`$as_echo "ac_cv_header_$SV_MODULE_HEADER" | $as_tr_sh` -ac_fn_cxx_check_header_mongrel "$LINENO" "$SV_MODULE_HEADER" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - HAVES="$HAVES $SV_MODULE_HAVE";SV_MODULE_FAILED="" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find header $SV_MODULE_HEADER for optional module $SV_MODULE_MODULE" >&5 -$as_echo "$as_me: Failed to find header $SV_MODULE_HEADER for optional module $SV_MODULE_MODULE" >&6;} -fi - - - if test -z "$SV_MODULE_FAILED"; then - if test -n "$SV_MODULE_LIB"; then - as_ac_Lib=`$as_echo "ac_cv_lib_$SV_MODULE_LIB''_$SV_MODULE_FUNC" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $SV_MODULE_FUNC in -l$SV_MODULE_LIB" >&5 -$as_echo_n "checking for $SV_MODULE_FUNC in -l$SV_MODULE_LIB... " >&6; } -if eval \${$as_ac_Lib+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-l$SV_MODULE_LIB $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. */ -#ifdef __cplusplus -extern "C" -#endif -char $SV_MODULE_FUNC (); -int -main () -{ -return $SV_MODULE_FUNC (); - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - eval "$as_ac_Lib=yes" -else - eval "$as_ac_Lib=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -eval ac_res=\$$as_ac_Lib - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : - LIBS="$LIBS -l$SV_MODULE_LIB" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find library $SV_MODULE_LIB for optional module $SV_MODULE_MODULE" >&5 -$as_echo "$as_me: Failed to find library $SV_MODULE_LIB for optional module $SV_MODULE_MODULE" >&6;} -fi - - fi - fi -fi - - @@ -7357,7 +7252,7 @@ subdirs="$subdirs svcore svgui svapp" -ac_config_files="$ac_config_files config.pri version.h" +ac_config_files="$ac_config_files config.pri" cat >confcache <<\_ACEOF @@ -7902,7 +7797,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Sonic Visualiser $as_me 2.3-imaf, which was +This file was extended by $as_me, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -7949,13 +7844,13 @@ Configuration files: $config_files -Report bugs to ." +Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Sonic Visualiser config.status 2.3-imaf +config.status configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -8068,7 +7963,6 @@ do case $ac_config_target in "config.pri") CONFIG_FILES="$CONFIG_FILES config.pri" ;; - "version.h") CONFIG_FILES="$CONFIG_FILES version.h" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac diff -r ba6f95b1ff7c -r 5e6e1e074080 configure.ac --- a/configure.ac Wed Jul 15 12:27:40 2015 +0100 +++ b/configure.ac Wed Apr 20 12:06:28 2016 +0100 @@ -1,5 +1,5 @@ -AC_INIT([Sonic Visualiser], [2.3-imaf], cannam@all-day-breakfast.com) +AC_INIT([Sonic Visualiser], [], cannam@all-day-breakfast.com) AC_CONFIG_SRCDIR(main/main.cpp) @@ -25,6 +25,9 @@ AC_PROG_INSTALL AC_PROG_MKDIR_P +# We are daringly making use of C++11 now +AX_CXX_COMPILE_STDCXX_11(noext) + AC_HEADER_STDC # These are the flags Autoconf guesses for us; we use them later if @@ -50,9 +53,10 @@ CXXFLAGS_MINIMAL="$AUTOCONF_CXXFLAGS" if test "x$GCC" = "xyes"; then - CXXFLAGS_DEBUG="-Wall -Woverloaded-virtual -Wextra -Wformat-nonliteral -Wformat-security -Winit-self -Wswitch-enum -g -pipe" - CXXFLAGS_RELEASE="-g0 -O2 -Wall -pipe" - CXXFLAGS_MINIMAL="-g0 -O0" + CXXFLAGS_ANY="-Wall -Wextra -Woverloaded-virtual -Wformat-nonliteral -Wformat-security -Winit-self -Wswitch-enum -Wconversion -pipe" + CXXFLAGS_DEBUG="$CXXFLAGS_ANY -g -Werror" + CXXFLAGS_RELEASE="$CXXFLAGS_ANY -g0 -O2" + CXXFLAGS_MINIMAL="$CXXFLAGS_ANY -g0 -O0" fi CXXFLAGS_BUILD="$CXXFLAGS_RELEASE" @@ -78,15 +82,13 @@ SV_MODULE_REQUIRED([fftw3],[fftw3 >= 3.0.0],[fftw3.h],[fftw3],[fftw_execute]) SV_MODULE_REQUIRED([fftw3f],[fftw3f >= 3.0.0],[fftw3.h],[fftw3f],[fftwf_execute]) SV_MODULE_REQUIRED([sndfile],[sndfile >= 1.0.16],[sndfile.h],[sndfile],[sf_open]) -SV_MODULE_REQUIRED([samplerate],[samplerate >= 0.1.2],[samplerate.h],[samplerate],[src_new]) -SV_MODULE_REQUIRED([vamp],[vamp >= 2.1],[vamp/vamp.h],[],[]) -SV_MODULE_REQUIRED([vamphostsdk],[vamp-hostsdk >= 2.5],[vamp-hostsdk/PluginLoader.h],[vamp-hostsdk],[libvamphostsdk_v_2_5_present]) +SV_MODULE_REQUIRED([libsamplerate],[samplerate >= 0.1.2],[samplerate.h],[samplerate],[src_new]) SV_MODULE_REQUIRED([rubberband],[rubberband],[rubberband/RubberBandStretcher.h],[rubberband],[rubberband_new]) SV_MODULE_REQUIRED([sord],[sord-0 >= 0.5],[sord/sord.h],[sord-0],[sord_world_new]) SV_MODULE_REQUIRED([serd],[serd-0 >= 0.5],[serd/serd.h],[serd-0],[serd_reader_read_file]) SV_MODULE_OPTIONAL([liblo],[],[lo/lo.h],[lo],[lo_address_new]) -SV_MODULE_OPTIONAL([portaudio_2_0],[portaudio-2.0 >= 19],[portaudio.h],[portaudio],[Pa_IsFormatSupported]) +SV_MODULE_OPTIONAL([portaudio],[portaudio-2.0 >= 19],[portaudio.h],[portaudio],[Pa_IsFormatSupported]) SV_MODULE_OPTIONAL([JACK],[jack >= 0.100],[jack/jack.h],[jack],[jack_client_open]) SV_MODULE_OPTIONAL([libpulse],[libpulse >= 0.9],[pulse/pulseaudio.h],[pulse],[pa_stream_new]) SV_MODULE_OPTIONAL([lrdf],[lrdf >= 0.2],[lrdf.h],[lrdf],[lrdf_init]) @@ -117,7 +119,7 @@ AC_SUBST(QMAKE_CONFIG) AC_CONFIG_SUBDIRS([svcore svgui svapp]) -AC_CONFIG_FILES([config.pri version.h]) +AC_CONFIG_FILES([config.pri]) AC_OUTPUT diff -r ba6f95b1ff7c -r 5e6e1e074080 deploy/linux/control.example --- a/deploy/linux/control.example Wed Jul 15 12:27:40 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -Package: sonic-visualiser -Priority: optional -Maintainer: Chris Cannam -Architecture: PLACE ARCHITECTURE HERE i386 or amd64 -Version: PLACE VERSION HERE e.g. 2.2cc-1 -Depends: libqtgui4 (>= 4.5.0), libexpat1, libfontconfig1, libfreetype6, libice6, - libpcre3, libstdc++6, libx11-6, libxau6, libxcursor1, libxdmcp6, libxext6, libx -fixes3, libxrender1, zlib1g, libasound2, libc6 -Description: View and analyse the contents of music audio files - Sonic Visualiser is an application for viewing and analysing the contents of mu -sic audio files. It was developed at the Centre for Digital Music at Queen Mary, - University of London. Our aim is for it to be the first program you reach for w -hen want to study a musical recording rather than simply listen to it. - We hope Sonic Visualiser will be of particular interest to musicologists, archi -vists, signal-processing researchers and anyone else looking for a friendly way -to take a look at what lies inside the audio file. diff -r ba6f95b1ff7c -r 5e6e1e074080 deploy/linux/deb-skeleton/DEBIAN/control --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/linux/deb-skeleton/DEBIAN/control Wed Apr 20 12:06:28 2016 +0100 @@ -0,0 +1,17 @@ +Package: sonic-visualiser +Priority: optional +Maintainer: Chris Cannam +Architecture: amd64 +Version: 2.4cc-1 +Installed-Size: 6056 +Section: contrib/sound +Depends: libqt5core5a, libsndfile1, libsamplerate0, libfftw3-3, libbz2-1.0, libpulse0, libmad0, libid3tag0, liboggz2, libfishsound1, libasound2, liblo7, liblrdf0, libsord-0-0, libserd-0-0, vamp-plugin-sdk, librubberband2, libc6 +Description: View and analyse the contents of music audio files + Sonic Visualiser is an application for viewing and analysing the contents + of music audio files. It was developed at the Centre for Digital Music at + Queen Mary, University of London. Our aim is for it to be the first program + you reach for when want to study a musical recording rather than simply + listen to it. + We hope Sonic Visualiser will be of particular interest to musicologists, + archivists, signal-processing researchers and anyone else looking for a + friendly way to take a look at what lies inside the audio file. diff -r ba6f95b1ff7c -r 5e6e1e074080 deploy/linux/deb-skeleton/usr/share/applications/sonic-visualiser.desktop --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/linux/deb-skeleton/usr/share/applications/sonic-visualiser.desktop Wed Apr 20 12:06:28 2016 +0100 @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=Sonic Visualiser +Exec=sonic-visualiser %U +Keywords=audio; sound; visualiser; sonic; +Terminal=false +Type=Application +Icon=sv-icon +Categories=Audio;AudioVideo; +MimeType=application/x-sonicvisualiser;application/x-sonicvisualiser-layer;application/x-ogg;audio/mp3;audio/mpeg;audio/mpegurl;audio/x-flac;audio/x-mp3;audio/x-mpeg;audio/x-mpegurl;audio/x-wav;audio/wav;application/ogg;audio/x-vorbis+ogg; diff -r ba6f95b1ff7c -r 5e6e1e074080 deploy/linux/deb-skeleton/usr/share/doc/sonic-visualiser/README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/linux/deb-skeleton/usr/share/doc/sonic-visualiser/README Wed Apr 20 12:06:28 2016 +0100 @@ -0,0 +1,107 @@ + +Sonic Visualiser +================ + +Sonic Visualiser is a program for viewing and analysing the contents +of music audio files. + +With Sonic Visualiser you can: + + * Load audio files in various formats (WAV/AIFF, plus Ogg and mp3 +if compiled in) and view their waveforms + + * Look at audio visualisations such as spectrogram views, with +interactive adjustment of display parameters + + * Annotate audio data by adding labelled time points and defining +segments, point values and curves + + * Run feature-extraction plugins to calculate annotations +automatically, using algorithms such as beat trackers, pitch +detectors and so on (see http://vamp-plugins.org/) + + * Import annotation data from various text formats and MIDI files + + * Play back the original audio with synthesised annotations, taking +care to synchronise playback with the display position + + * Slow down and speed up playback and loop segments of interest, +including seamless looping of complex non-contiguous areas + + * Export annotations and audio selections to external files. + +Sonic Visualiser can also be controlled remotely using the Open Sound +Control (OSC) protocol (if support is compiled in). + + +Credits +------- + +Sonic Visualiser was developed at the Centre for Digital Music, +Queen Mary, University of London. + + http://c4dm.eecs.qmul.ac.uk/ + +Sonic Visualiser was written by Chris Cannam with contributions from +Christian Landone, Mathieu Barthet, Dan Stowell, Jesus Corral Garcia, +Matthias Mauch, and Craig Sapp. + +Code copyright 2005-2007 Chris Cannam and copyright 2006-2014 Queen +Mary, University of London, except where indicated in the individual +source files. + +This work was partially funded by the European Commission through the +SIMAC project IST-FP6-507142 and the EASAIER project IST-FP6-033902. + +This work was partially funded by the Arts and Humanities Research +Council through its Research Centre for the History and Analysis of +Recorded Music (CHARM). + +This work was partially funded by the Engineering and Physical +Sciences Research Council through the OMRAS2 project EP/E017614/1, the +Musicology for the Masses project EP/I001832/1, and the Sound Software +project EP/H043101/1. + +Sonic Visualiser 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. See the file COPYING included with +this distribution for more information. + +Sonic Visualiser may also make use of the following libraries: + + * Qt5 -- Copyright Digia Oyj, distributed under the LGPL + * JACK -- Copyright Paul Davis, Jack O'Quin et al, under the LGPL + * PortAudio -- Copyright Ross Bencina, Phil Burk et al, BSD license + * Ogg decoder -- Copyright CSIRO Australia, BSD license + * MAD mp3 decoder -- Copyright Underbit Technologies Inc, GPL + * libsamplerate -- Copyright Erik de Castro Lopo, GPL + * libsndfile -- Copyright Erik de Castro Lopo, LGPL + * FFTW3 -- Copyright Matteo Frigo and MIT, GPL + * Rubber Band -- Copyright Chris Cannam, GPL + * Vamp plugin SDK -- Copyright Chris Cannam and QMUL, BSD license + * LADSPA plugin SDK -- Copyright Richard Furse et al, LGPL + * RtMIDI -- Copyright Gary P. Scavone, BSD license + * Dataquay -- Copyright Breakfast Quay, BSD license + * Sord and Serd -- Copyright David Robillard, BSD license + * Redland -- Copyright Dave Beckett and the University of Bristol, LGPL/Apache license + * liblo OSC library -- Copyright Steve Harris, GPL + +(Some distributions of Sonic Visualiser may have one or more of these +libraries statically linked.) Many thanks to their authors. + + +Compiling Sonic Visualiser +-------------------------- + +If you are planning to compile Sonic Visualiser from source code, +please read the file INSTALL.txt. + + +More information +---------------- + +For more information about Sonic Visualiser, please go to + + http://www.sonicvisualiser.org/ + diff -r ba6f95b1ff7c -r 5e6e1e074080 deploy/linux/deb-skeleton/usr/share/doc/sonic-visualiser/changelog.Debian.gz Binary file deploy/linux/deb-skeleton/usr/share/doc/sonic-visualiser/changelog.Debian.gz has changed diff -r ba6f95b1ff7c -r 5e6e1e074080 deploy/linux/deb-skeleton/usr/share/doc/sonic-visualiser/copyright --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/linux/deb-skeleton/usr/share/doc/sonic-visualiser/copyright Wed Apr 20 12:06:28 2016 +0100 @@ -0,0 +1,32 @@ +Sonic Visualiser was developed at the Centre for Digital Music, +Queen Mary, University of London. + + http://www.elec.qmul.ac.uk/digitalmusic/ + +The main program is by Chris Cannam, with additional DSP and program +design work by Christian Landone. Thanks also to Craig Sapp for his +suggestions and useful feedback. + +Code copyright 2005-2007 Chris Cannam and copyright 2006-2014 Queen +Mary, University of London, except where indicated in the individual +source files. + +This work was partially funded by the European Commission through the +SIMAC project IST-FP6-507142 and the EASAIER project IST-FP6-033902. + +This work was partially funded by the Arts and Humanities Research +Council through its Research Centre for the History and Analysis of +Recorded Music (CHARM). + +This work was partially funded by the Engineering and Physical +Sciences Research Council through the OMRAS2 project EP/E017614/1. + +This work was partially funded by the Engineering and Physical +Sciences Research Council through the Musicology for the Masses +project EP/I001832/1. + +Sonic Visualiser 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. See the file /usr/share/common-licenses/GPL-2 +for more information. diff -r ba6f95b1ff7c -r 5e6e1e074080 deploy/linux/debian-dependencies.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/linux/debian-dependencies.sh Wed Apr 20 12:06:28 2016 +0100 @@ -0,0 +1,42 @@ +#!/bin/bash + +target=$1 + +if [ ! -f "$target" ]; then + echo "Usage: $0 target-executable" + exit 1 +fi + +pfile=/tmp/packages_$$ +rfile=/tmp/redundant_$$ + +trap "rm -f $pfile $rfile" 0 +echo 1>&2 + +ldd "$target" | awk '{ print $3; }' | grep '^/' | while read lib; do + if test -n "$lib" ; then + dpkg-query -S "$lib" + fi + done | grep ': ' | awk -F: '{ print $1 }' | sort | uniq > $pfile + +echo "Packages providing required libraries:" 1>&2 +cat $pfile 1>&2 +echo 1>&2 + +for p in `cat $pfile`; do + echo Looking at $p 1>&2 + apt-cache showpkg "$p" | grep '^ ' | grep ',' | awk -F, '{ print $1; }' | \ + while read d; do + if grep -q '^'$d'$' $pfile; then + echo $p + fi + done +done | sort | uniq > $rfile + +echo "Packages that can be eliminated because other packages depend on them:" 1>&2 +cat $rfile 1>&2 +echo 1>&2 + +cat $pfile $rfile | sort | uniq -u | sed 's/$/,/' | fmt -1000 | sed 's/^/Depends: /' | sed 's/,$/, libc6/' | sed 's/libjack0,/jackd,/' + + diff -r ba6f95b1ff7c -r 5e6e1e074080 deploy/linux/deploy-deb.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/linux/deploy-deb.sh Wed Apr 20 12:06:28 2016 +0100 @@ -0,0 +1,60 @@ +#!/bin/bash +# +# Run this from the build root + +usage() { + echo + echo "Usage:" + echo + echo "$0 " + echo + echo "For example: $0 2.4cc1-1 amd64" + echo + exit 2 +} + +version="$1" +arch="$2" + +if [ -z "$version" ] || [ -z "$arch" ]; then + usage +fi + +program=sonic-visualiser +depdir=deploy/linux + +targetdir="${program}_${version}_${arch}" + +echo "Target dir is $targetdir" + +if [ -d "$targetdir" ]; then + echo "Target directory exists, not overwriting" + exit +fi + +mkdir "$targetdir" + +cp -r "$depdir"/deb-skeleton/* "$targetdir"/ + +mkdir -p "$targetdir"/usr/bin "$targetdir"/usr/share/pixmaps + +cp "$program" "$targetdir"/usr/bin/ + +cp icons/sv-icon*.svg "$targetdir"/usr/share/pixmaps/ +cp "$program".desktop "$targetdir"/usr/share/applications/ +cp README "$targetdir"/usr/share/doc/"$program"/ + +perl -i -p -e "s/Architecture: .*/Architecture: $arch/" "$targetdir"/DEBIAN/control + +deps=`bash "$depdir"/debian-dependencies.sh "$program"` + +perl -i -p -e "s/Depends: .*/$deps/" "$targetdir"/DEBIAN/control + +control_ver=${version%-?} + +perl -i -p -e "s/Version: .*/Version: $control_ver/" "$targetdir"/DEBIAN/control + +bash "$depdir"/fix-lintian-bits.sh "$targetdir" + +sudo dpkg-deb --build "$targetdir" && lintian "$targetdir".deb + diff -r ba6f95b1ff7c -r 5e6e1e074080 deploy/linux/doc/sonic-visualiser/copyright --- a/deploy/linux/doc/sonic-visualiser/copyright Wed Jul 15 12:27:40 2015 +0100 +++ b/deploy/linux/doc/sonic-visualiser/copyright Wed Apr 20 12:06:28 2016 +0100 @@ -7,7 +7,7 @@ design work by Christian Landone. Thanks also to Craig Sapp for his suggestions and useful feedback. -Code copyright 2005-2007 Chris Cannam and copyright 2006-2013 Queen +Code copyright 2005-2007 Chris Cannam and copyright 2006-2014 Queen Mary, University of London, except where indicated in the individual source files. diff -r ba6f95b1ff7c -r 5e6e1e074080 deploy/linux/fix-lintian-bits.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/linux/fix-lintian-bits.sh Wed Apr 20 12:06:28 2016 +0100 @@ -0,0 +1,16 @@ +#!/bin/bash + +dir=$1 + +[ -d "$dir" ] || exit 1 + +strip "$dir"/usr/bin/* + +sz=`du -sx --exclude DEBIAN "$dir" | awk '{ print $1; }'` +perl -i -p -e "s/Installed-Size: .*/Installed-Size: $sz/" "$dir"/DEBIAN/control + +find "$dir" -name \*~ -exec rm \{\} \; + +sudo chown -R root.root "$dir"/* + +sudo chmod -R g-w "$dir"/* diff -r ba6f95b1ff7c -r 5e6e1e074080 deploy/osx/copy-qt.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/osx/copy-qt.sh Wed Apr 20 12:06:28 2016 +0100 @@ -0,0 +1,53 @@ +#!/bin/bash + +set -eu + +app="$1" +if [ -z "$app" ]; then + echo "Usage: $0 " + echo "Provide appname without the .app extension, please" + exit 2 +fi + +frameworks="QtCore QtNetwork QtGui QtXml QtSvg QtWidgets QtPrintSupport QtDBus" + +plugins="dds gif icns ico jp2 jpeg mng tga tiff wbmp webp cocoa minimal offscreen" + +qtdir=$(grep "Command:" Makefile | head -1 | awk '{ print $3; }' | sed s,/bin/.*,,) + +if [ ! -d "$qtdir" ]; then + echo "Failed to discover Qt installation directory from Makefile, exiting" + exit 2 +fi + +fdir="$app.app/Contents/Frameworks" +pdir="$app.app/Contents/plugins" + +mkdir -p "$fdir" +mkdir -p "$pdir" + +echo +echo "Copying frameworks..." +for fwk in $frameworks; do + cp -v "$qtdir/lib/$fwk.framework/$fwk" "$fdir" || exit 2 +done + +echo "Done" + +echo +echo "Copying plugins..." +for plug in $plugins; do + pfile=$(ls "$qtdir"/plugins/*/libq"$plug".dylib) + if [ ! -f "$pfile" ]; then + echo "Failed to find plugin $plug, exiting" + exit 2 + fi + target="$pdir"/${pfile##?*plugins/} + tdir=`dirname "$target"` + mkdir -p "$tdir" + cp -v "$pfile" "$target" || exit 2 +done + +echo "Done" + + diff -r ba6f95b1ff7c -r 5e6e1e074080 deploy/osx/deploy.sh --- a/deploy/osx/deploy.sh Wed Jul 15 12:27:40 2015 +0100 +++ b/deploy/osx/deploy.sh Wed Apr 20 12:06:28 2016 +0100 @@ -1,5 +1,7 @@ #!/bin/bash +set -e + # Execute this from the top-level directory of the project (the one # that contains the .app bundle). Supply the name of the .app bundle # as argument (the target will use $app.app regardless, but we need @@ -16,19 +18,42 @@ fi app=`basename "$source" .app` +set -u + version=`perl -p -e 's/^[^"]*"([^"]*)".*$/$1/' version.h` -case "$version" in +stem=${version%%-*} +case "$stem" in [0-9].[0-9]) bundleVersion="$version".0 ;; [0-9].[0-9].[0-9]) bundleVersion="$version" ;; - *) echo "Error: Version $version is neither two- nor three-part number" ;; + *) echo "Error: Version stem $stem (of version $version) is neither two- nor three-part number" ;; esac echo +echo "Copying in frameworks and plugins from Qt installation directory." + +deploy/osx/copy-qt.sh "$app" || exit 2 + +echo echo "Fixing up paths." deploy/osx/paths.sh "$app" echo +echo "Copying in qt.conf to set local-only plugin paths." +echo "Make sure all necessary Qt plugins are in $source/Contents/plugins/*" +echo "You probably want platforms/, accessible/ and imageformats/ subdirectories." +cp deploy/osx/qt.conf "$source"/Contents/Resources/qt.conf + +echo +echo "Writing version $bundleVersion in to bundle." +echo "(This should be a three-part number: major.minor.point)" + +perl -p -e "s/SV_VERSION/$bundleVersion/" deploy/osx/Info.plist \ + > "$source"/Contents/Info.plist + +echo "Done: check $source/Contents/Info.plist for sanity please" + +echo echo "Making target tree." volume="$app"-"$version" @@ -43,14 +68,6 @@ echo "Done" -echo "Writing version $bundleVersion in to bundle." -echo "(This should be a three-part number: major.minor.point)" - -perl -p -e "s/SV_VERSION/$bundleVersion/" deploy/osx/Info.plist \ - > "$target"/Contents/Info.plist - -echo "Done: check $target/Contents/Info.plist for sanity please" - deploy/osx/sign.sh "$volume" || exit 1 echo diff -r ba6f95b1ff7c -r 5e6e1e074080 deploy/osx/paths.sh --- a/deploy/osx/paths.sh Wed Jul 15 12:27:40 2015 +0100 +++ b/deploy/osx/paths.sh Wed Apr 20 12:06:28 2016 +0100 @@ -1,5 +1,7 @@ #!/bin/bash +set -e + app="$1" if [ -z "$app" ]; then echo "Usage: $0 " @@ -7,26 +9,29 @@ exit 2 fi +set -u + +frameworks="QtCore QtNetwork QtGui QtXml QtSvg QtWidgets QtPrintSupport QtDBus" + echo -echo "I expect you to have already copied QtCore, QtNetwork, QtGui, QtXml and QtWidgets to " -echo "$app.app/Contents/Frameworks -- expect errors to follow if they're missing" +echo "I expect you to have already copied these frameworks from the Qt installation to" +echo "$app.app/Contents/Frameworks -- expect errors to follow if they're missing:" +echo "$frameworks" echo echo "Fixing up loader paths in binaries..." -install_name_tool -id QtCore "$app.app/Contents/Frameworks/QtCore" -install_name_tool -id QtGui "$app.app/Contents/Frameworks/QtGui" -install_name_tool -id QtNetwork "$app.app/Contents/Frameworks/QtNetwork" -install_name_tool -id QtXml "$app.app/Contents/Frameworks/QtXml" -install_name_tool -id QtWidgets "$app.app/Contents/Frameworks/QtWidgets" +for fwk in $frameworks; do + install_name_tool -id $fwk "$app.app/Contents/Frameworks/$fwk" +done find "$app.app" -name \*.dylib -print | while read x; do install_name_tool -id "`basename \"$x\"`" "$x" done -for fwk in QtCore QtGui QtNetwork QtXml QtWidgets; do +for fwk in $frameworks; do find "$app.app" -type f -print | while read x; do - current=$(otool -L "$x" | grep "$fwk" | grep amework | awk '{ print $1; }') + current=$(otool -L "$x" | grep "$fwk" | grep amework | grep -v ':$' | awk '{ print $1; }') [ -z "$current" ] && continue echo "$x has $current" relative=$(echo "$x" | sed -e "s,$app.app/Contents/,," \ @@ -36,6 +41,16 @@ done done +find "$app.app" -type f -print | while read x; do + qtdep=$(otool -L "$x" | grep Qt | grep amework | grep -v ':$' | grep -v '@loader_path' | awk '{ print $1; }') + if [ -n "$qtdep" ]; then + echo + echo "ERROR: File $x depends on Qt framework(s) not apparently present in the bundle:" + echo $qtdep + exit 1 + fi +done + echo "Done: be sure to run the app and see that it works!" diff -r ba6f95b1ff7c -r 5e6e1e074080 deploy/osx/qt.conf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/osx/qt.conf Wed Apr 20 12:06:28 2016 +0100 @@ -0,0 +1,2 @@ +[Paths] +Plugins = plugins diff -r ba6f95b1ff7c -r 5e6e1e074080 deploy/src/archive-tip.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/src/archive-tip.sh Wed Apr 20 12:06:28 2016 +0100 @@ -0,0 +1,8 @@ +#!/bin/bash + +tag=`hg id | awk '{ print $1; }'` + +echo "Packaging from tag $tag..." + +hg archive -r"$tag" --subrepos --exclude sv-dependency-builds /tmp/sonic-visualiser-"$tag".tar.gz + diff -r ba6f95b1ff7c -r 5e6e1e074080 deploy/win32/build.cmd --- a/deploy/win32/build.cmd Wed Jul 15 12:27:40 2015 +0100 +++ b/deploy/win32/build.cmd Wed Apr 20 12:06:28 2016 +0100 @@ -1,7 +1,7 @@ @ECHO OFF -SET WIXPATH="C:\Program Files (x86)\WiX Toolset v3.7\bin" +SET WIXPATH="C:\Program Files (x86)\WiX Toolset v3.9\bin" IF NOT EXIST %WIXPATH% ( - SET WIXPATH="C:\Program Files\WiX Toolset v3.7\bin" + SET WIXPATH="C:\Program Files\WiX Toolset v3.9\bin" ) DEL sonic-visualiser.msi %WIXPATH%\candle.exe -v sonic-visualiser.wxs diff -r ba6f95b1ff7c -r 5e6e1e074080 deploy/win32/sonic-visualiser.wxs --- a/deploy/win32/sonic-visualiser.wxs Wed Jul 15 12:27:40 2015 +0100 +++ b/deploy/win32/sonic-visualiser.wxs Wed Apr 20 12:06:28 2016 +0100 @@ -5,7 +5,7 @@ Id="*" Language="1033" Codepage="1252" - Version="2.3.0" + Version="2.5.0" UpgradeCode="D476941E-65F3-4962-9E72-B40FAAE5DBD0" Manufacturer="Queen Mary, University of London"> @@ -13,7 +13,7 @@ Id="*" Keywords="Installer" Description="Sonic Visualiser Installer" - Comments="Copyright (c) 2013 Queen Mary, University of London and others." + Comments="Copyright (c) 2014 Queen Mary, University of London and others." Manufacturer="Queen Mary, University of London" InstallerVersion="100" Languages="1033" @@ -144,40 +144,25 @@ DiskId="1" Source="release\Qt5Xml.dll"/> + Source="release\icudt53.dll"/> + Source="release\icuin53.dll"/> - - + Source="release\icuuc53.dll"/> - + Source="release\libgcc_s_dw2-1.dll"/> - + + diff -r ba6f95b1ff7c -r 5e6e1e074080 i18n/sonic-visualiser_cs_CZ.qm Binary file i18n/sonic-visualiser_cs_CZ.qm has changed diff -r ba6f95b1ff7c -r 5e6e1e074080 i18n/sonic-visualiser_cs_CZ.ts --- a/i18n/sonic-visualiser_cs_CZ.ts Wed Jul 15 12:27:40 2015 +0100 +++ b/i18n/sonic-visualiser_cs_CZ.ts Wed Apr 20 12:06:28 2016 +0100 @@ -1,6 +1,6 @@ - + ActivityLog @@ -87,23 +87,23 @@ AudioTargetFactory Core Audio Device - Jaderné zvukové zařízení + Jaderné zvukové zařízení (auto) - (auto) + (auto) Default Soundcard Device - Výchozí zařízení zvukové karty + Výchozí zařízení zvukové karty PulseAudio Server - Server PulseAudio + Server PulseAudio JACK Audio Connection Kit - Spojovací sada pro zvuk JACK + Spojovací sada pro zvuk JACK @@ -253,6 +253,14 @@ <ignore> <nevšímat si> + + Pitch + Výška tónu + + + Explicitly, in milliseconds + + Colour3DPlotLayer @@ -337,7 +345,7 @@ Yellow on Black - Žlutá na černé + Žlutá na černé Banded @@ -357,7 +365,7 @@ Red on Blue - Červená na modré + Červená na modré Printer @@ -365,11 +373,11 @@ Blue on Black - Modrá na černé + Modrá na černé Default - Výchozí + Výchozí High Gain @@ -383,6 +391,22 @@ White on Black Bílá na černé + + Green + Zelená + + + Cherry + + + + Wasp + + + + Ice + + CommandHistory @@ -443,6 +467,13 @@ + DecodingWavFileReader + + Decoding %1... + Dekóduje se %1... + + + Dense3DModelPeakCache Dense 3-D Peak Cache @@ -557,6 +588,10 @@ Transform was configured for version %1 of plugin "%2", but the plugin being used is version %3 Proměna byla nastavena pro verzi %1 přídavného modulu "%2", ale používaný přídavný modul je ve verzi %3 + + Transforms supplied to a single FeatureExtractionModelTransformer instance must be similar in every respect except plugin output + + FileSource @@ -566,7 +601,7 @@ Login failed - Přihlášení se nezdařilo + Přihlášení se nezdařilo Download cancelled @@ -582,7 +617,7 @@ FTP download aborted - FTP stahování zrušeno + FTP stahování zrušeno Downloading %1... @@ -590,11 +625,189 @@ Failed to connect to FTP server - Připojení k FTP serveru se nezdařilo + Připojení k FTP serveru se nezdařilo Failed to change to correct directory - Změna na správný adresář se nepodařila + Změna na správný adresář se nepodařila + + + + FlexiNoteLayer + + New Point + Nový bod + + + Vertical Scale + Svislá stupnice + + + Scale Units + Jednotky stupnice + + + Scale + Stupnice + + + Auto-Align + Automatické zarovnání + + + Linear + + + + Log + Zápis + + + MIDI Notes + Noty MIDI + + + In progress + Probíhá + + + No local points + Žádné místní body + + + %1 (%2, %3 Hz) + %1 (%2, %3 Hz) + + + %1 Hz (%2, %3) + %1 Hz (%2, %3) + + + %1 %2 + %1 %2 + + + Time: %1 +Pitch: %2 +Duration: %3 +No label + Čas: %1 +Výška: %2 +Doba trvání: %3 +Žádný štítek + + + Time: %1 +Pitch: %2 +Duration: %3 +Label: %4 + Čas: %1 +Výška: %2 +Doba trvání: %3 +Štítek: %4 + + + Draw Point + Nakreslit bod + + + Erase Point + Vymazat bod + + + Drag Point + + + + Edit Point + Upravit bod + + + Relocate Point + Přemístit bod + + + Change Point Value + Změnit hodnotu bodu + + + Add Point + Přidat bod + + + Snap Notes + + + + Merge Notes + + + + Drag Selection + Táhnout výběr + + + Resize Selection + Změnit velikost výběru + + + Delete Selected Points + Smazat vybrané body + + + Re-align pasted items? + Zarovnat vložené položky znovu? + + + The items you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? + Položky, které vkládáte, přišly z vrstvy s odlišným zdrojovým materiálem, než má tento. Chcete je zarovnat znovu v čase, aby se hodily ke zdrojovému materiálu pro tuto vrstvu? + + + Paste + Vložit + + + Record FlexiNote + + + + + FlexiNoteModel + + FlexiNote + + + + Time + Čas + + + Frame + + + + Pitch + Výška tónu + + + Duration + Doba trvání + + + Level + Úroveň + + + Label + Štítek + + + Unknown + Neznámý + + + Edit Data + Upravit data @@ -799,7 +1012,7 @@ Sonic Visualiser session files (*.sv) RDF files (%1) All files (*.*) - Soubory se sezením programu Sonic Visualiser (*.sv) + Soubory se sezením programu Sonic Visualiser (*.sv) Soubory RDF (%1) Všechny soubory (*.*) @@ -834,7 +1047,7 @@ Layer files (%2) RDF files (%3) All files (*.*) - Všechny podporované soubory (*.sv %1 %2 %3) + Všechny podporované soubory (*.sv %1 %2 %3) Soubory XML Sonic Visualiser Layer (*.svl) Zvukové soubory (%1) Soubory Layer (%2) @@ -913,7 +1126,7 @@ Audio files (%2) RDF files (%1) All files (*.*) - Všechny podporované soubory (%1 %2) + Všechny podporované soubory (%1 %2) Soubory XML Sonic Visualiser Layer (*.svl) Zvukové soubory (%2) Soubory RDF (%1) @@ -948,7 +1161,7 @@ Sonic Visualiser session files (*.sv) All files (*.*) - Soubory se sezením programu Sonic Visualiser (*.sv) + Soubory se sezením programu Sonic Visualiser (*.sv) Všechny soubory (*.*) @@ -961,6 +1174,85 @@ Zvukové soubory WAV (*.wav) Všechny soubory (*.*) + + %1 session files (*.%1) +RDF files (%3) +All files (*.*) + + + + All supported files (%1 %2) +Comma-separated data files (*.csv) +Sonic Visualiser Layer XML files (*.svl) +Space-separated .lab files (*.lab) +RDF files (%2) +MIDI files (*.mid) +Text files (*.txt) +All files (*.*) + + + + All supported files (%1 %2) +Comma-separated data files (*.csv) +Sonic Visualiser Layer XML files (*.svl) +Space-separated .lab files (*.lab) +RDF files (%2) +Text files (*.txt) +All files (*.*) + + + + All supported files (*.sv %1 %2) +%3 session files (*.%4) +Audio files (%2) +RDF files (%1) +All files (*.*) + + + + Comma-separated data files (*.csv) +Space-separated .lab files (*.lab) +Text files (*.txt) +All files (*.*) + + + + All supported files (*.sv %1 %2 %3) +%4 session files (*.%5) +Audio files (%1) +Layer files (%2) +RDF files (%3) +All files (*.*) + + + + %1 session files (*.%2) +All files (*.*) + + + + Comma-separated data files (*.csv) +Sonic Visualiser Layer XML files (*.svl) +RDF/Turtle files (%1) +MIDI files (*.mid) +Text files (*.txt) +All files (*.*) + + + + Comma-separated data files (*.csv) +Sonic Visualiser Layer XML files (*.svl) +RDF/Turtle files (%1) +Text files (*.txt) +All files (*.*) + + + + Comma-separated data files (*.csv) +Text files (*.txt) +All files (*.*) + + ItemEditDialog @@ -1029,7 +1321,11 @@ Sonic Visualiser: Key and Mouse Reference - Sonic Visualiser: Odkaz na klávesy a myš + Sonic Visualiser: Odkaz na klávesy a myš + + + %1: Key and Mouse Reference + @@ -1118,7 +1414,7 @@ Layer - Vrstva + Vrstva Notes @@ -1172,6 +1468,14 @@ Delete Measurement Smazat měření + + Flexible Notes + + + + Unknown Layer + + LayerTreeDialog @@ -1907,7 +2211,7 @@ Playback speed: %1%2% - Rychlost přehrávání: %1%2% + Rychlost přehrávání: %1%2% Restore &Default Zoom @@ -2115,7 +2419,7 @@ <b>Layer generation failed</b><p>Failed to generate derived layer.<p>The layer transform "%1" failed:<p>%2 - <b>Vytvoření vrstvy se nezdařilo</b><p>Nepodařilo se vytvořit odvozenou vrstvu.<p>Proměna vrstvy "%1" se nezdařila:<p>%2 + <b>Vytvoření vrstvy se nezdařilo</b><p>Nepodařilo se vytvořit odvozenou vrstvu.<p>Proměna vrstvy "%1" se nezdařila:<p>%2 <br>With MAD mp3 decoder &copy; Underbit Technologies Inc @@ -2171,7 +2475,7 @@ <b>File open failed</b><p>Session file "%1" could not be opened - <b>Soubor se nepodařilo otevřít</b><p>Soubor se sezením "%1" se nepodařilo otevřít + <b>Soubor se nepodařilo otevřít</b><p>Soubor se sezením "%1" se nepodařilo otevřít <br>With Rubber Band v%1 &copy; Chris Cannam @@ -2199,7 +2503,7 @@ Playback Speedup - Zvýšení rychlosti přehrávání + Zvýšení rychlosti přehrávání Zoom &Out @@ -2615,7 +2919,7 @@ Ctrl+Shift+Enter - Ctrl+Shift+Enter + Ctrl+Shift+Enter Audio processing overload @@ -2703,7 +3007,7 @@ Export Annotation Layer... - Vyvést poznámkovou vrstvu... + Vyvést poznámkovou vrstvu... &Export Audio File... @@ -2755,7 +3059,7 @@ <b>Layer generation failed</b><p>Failed to generate a derived layer.<p>The layer transform "%1" failed.<p>No error information is available. - <b>Vytvoření vrstvy se nezdařilo</b><p>Nepodařilo se vytvořit odvozenou vrstvu.<p>Proměna vrstvy "%1" se nezdařila.<p>Nejsou dostupné žádné informace o chybě. + <b>Vytvoření vrstvy se nezdařilo</b><p>Nepodařilo se vytvořit odvozenou vrstvu.<p>Proměna vrstvy "%1" se nezdařila.<p>Nejsou dostupné žádné informace o chybě. Editing @@ -3151,7 +3455,7 @@ <h3>Newer version available</h3><p>You are using version %1 of Sonic Visualiser, but version %3 is now available.</p><p>Please see the <a href="http://sonicvisualiser.org/">Sonic Visualiser website</a> for more information.</p> - <h3>Je dostupná novější verze</h3><p>Používáte verzi %1 programu Sonic Visualiser, ale nyní je dostupná verze %3.</p><p>Podívejte se, prosím, na stránky <a href="http://sonicvisualiser.org/">projektu Sonic Visualiser</a>, abyste získal více informací.</p> + <h3>Je dostupná novější verze</h3><p>Používáte verzi %1 programu Sonic Visualiser, ale nyní je dostupná verze %3.</p><p>Podívejte se, prosím, na stránky <a href="http://sonicvisualiser.org/">projektu Sonic Visualiser</a>, abyste získal více informací.</p> Edit Toolbar @@ -3263,7 +3567,7 @@ %1: %1 - %1: %1 + %1: %1 <br>With Serd and Sord RDF parser and store &copy; David Robillard @@ -3274,21 +3578,233 @@ <br>Knihovna Dataquay Qt/RDF &copy; Chris Cannam - &Export Audio Data... + Export audio from selection into a data file + Vyvést zvuk z výběru do datového souboru + + + Export the selected regions into a single file + Vyvést vybrané oblasti do jednoho souboru + + + Export the whole file + Vyvést celý soubor + + + Playback Speed - Export audio from selection into a data file + Export Audio Data... + &Vyvést zvuková data... + + + Export Annotation La&yer... - Export the selected regions into a single file + Ctrl+Y - Export the whole file + Browse Recorded Audio Folder + + Open the Recorded Audio folder in the system file browser + + + + Ctrl+Shift+Return + + + + Show &Unit Converter + + + + Open a window of pitch and timing conversion utilities + + + + Switch to Previous Layer + + + + { + + + + Make the previous layer in the pane current + + + + Switch to Next Layer + + + + } + + + + Make the next layer in the pane current + + + + Record + + + + Ctrl+Space + + + + Record a new audio file + + + + Navigate Tool Mouse Actions + Činnosti nástroje pro navádění prováděné myší + + + Click left button and drag to move around + Klepněte levým tlačítkem a táhněte pro přesouvání se + + + Zoom to Area + Přiblížit oblast + + + Shift-click left button and drag to zoom to a rectangular area + Shift-klepněte levým tlačítkem a táhněte pro přiblížení obdélníkové oblasti + + + Relocate + Přemístit + + + Double-Click Left + Dvakrát klepněte levým + + + Double-click left button to jump to clicked location + Dvakrát klepněte levým tlačítkem pro skok na klepnuté místo + + + Double-click left button on an item to edit it + Dvakrát klepněte levým tlačítkem na položce pro její upravení + + + Select Tool Mouse Actions + Činnosti nástroje výběru prováděné myší + + + Click left button and drag to select region; drag region edge to resize + Klepněte levým tlačítkem a táhněte pro výběr oblasti; táhněte za okraj oblasti pro změnu její velikosti + + + Multi Select + Vícenásobný výběr + + + Cmd-click left button and drag to select an additional region + Ctrl-klepněte levým tlačítkem a táhněte pro výběr další oblasti + + + Ctrl-click left button and drag to select an additional region + Ctrl-klepněte levým tlačítkem a táhněte pro výběr další oblasti + + + Fine Select + Citlivý výběr + + + Shift-click left button and drag to select without snapping to items or grid + Shift-klepněte levým tlačítkem a táhněte pro výběr bez zapadávání k položkám nebo mřížce + + + Edit Tool Mouse Actions + Činnosti nástroje úprav prováděné myší + + + Move + Posunout + + + Click left button on an item or selected region and drag to move + Klepněte levým tlačítkem na položku nebo vybranou oblast a táhněte pro její přesun + + + Draw Tool Mouse Actions + Činnosti nástroje kreslení prováděné myší + + + Click left button and drag to create new item + Klepněte levým tlačítkem a táhněte pro vytvoření nové položky + + + Erase Tool Mouse Actions + + + + Click left button on an item to remove it from the layer + + + + Measure Tool Mouse Actions + Činnosti nástroje měření prováděné myší + + + Measure Area + Oblast měření + + + Click left button and drag to measure a rectangular area + Klepněte levým tlačítkem a táhněte pro změření obdélníkové oblasti + + + Measure Item + Položka měření + + + Click left button and drag to measure extents of an item or shape + Klepněte levým tlačítkem a táhněte pro změření rozsahu položky nebo tvaru + + + 1. %2 + + + + %1. %2 + %1: %2 {1.?} + + + Multiplex all of the above + + + + Playback speed: %1% (%2x slower) + + + + Playback speed: %1% (%2x faster) + + + + Problems loading plugins + + + + <b>Layer generation failed</b><p>Failed to generate derived layer.<p>The layer transform %1failed:<p>%2 + + + + <b>Layer generation failed</b><p>Failed to generate a derived layer.<p>The layer transform %1failed.<p>No error information is available. + + + + <h3>Newer version available</h3><p>You are using version %1 of Sonic Visualiser, but version %2 is now available.</p><p>Please see the <a href="http://sonicvisualiser.org/">Sonic Visualiser website</a> for more information.</p> + <h3>Je dostupná novější verze</h3><p>Používáte verzi %1 programu Sonic Visualiser, ale nyní je dostupná verze %3.</p><p>Podívejte se, prosím, na stránky <a href="http://sonicvisualiser.org/">projektu Sonic Visualiser</a>, abyste získal více informací.</p> {3>?} {3>?} {1 ?} {2 ?} + MainWindowBase @@ -3376,7 +3892,7 @@ <b>No audio available</b><p>Failed to open your preferred audio device ("%1").<p>Audio playback will not be available during this session.</p> - <b>Žádný zvuk není dostupný</b><p> Vámi upřednostňované zvukové zařízení se nepodařilo otevřít ("%1").<p>Přehrávání zvuku během tohoto sezení nebude dostupné.</p> + <b>Žádný zvuk není dostupný</b><p> Vámi upřednostňované zvukové zařízení se nepodařilo otevřít ("%1").<p>Přehrávání zvuku během tohoto sezení nebude dostupné.</p> Delete Pane @@ -3446,6 +3962,14 @@ <b>Failed to import RDF</b><p>Importing data from RDF document at "%1" failed: %2</p> <b>Nepodařilo se zavést RDF</b><p>Zavedení dat z dokumentu RDF na "%1" se nepodařilo: %2</p> + + Import Recorded Audio + + + + Recording: %1 + + ModelDataTableDialog @@ -3541,6 +4065,21 @@ + NetworkPermissionTester + + Welcome to Sonic Visualiser + + + + <h2>Welcome to Sonic Visualiser!</h2><p><img src=":icons/qm-logo-smaller.png" style="float:right">Sonic Visualiser is a program for viewing and exploring audio data for semantic music analysis and annotation.</p><p>Developed in the Centre for Digital Music at Queen Mary, University of London, Sonic Visualiser is provided free as open source software under the GNU General Public License.</p><p><hr></p><p><b>Before we go on...</b></p><p>Sonic Visualiser would like to make networking connections and open a network port.</p><p>This is to:</p><ul><li> Find information about available and installed plugins;</li><li> Support the use of Open Sound Control, where configured; and</li><li> Tell you when updates are available.</li></ul><p>No personal information will be sent, no tracking is carried out, and all requests happen in the background without interrupting your work.</p><p>We recommend that you allow this, because it makes Sonic Visualiser more useful. But if you do not wish to do so, please un-check the box below.<br></p> + + + + Allow this + + + + NoteLayer Log @@ -3740,15 +4279,15 @@ Draw - Nakreslit + Nakreslit Edit - Upravit + Upravit Left - Levé + Levé Menu @@ -3756,7 +4295,7 @@ Move - Posunout + Posunout Zoom @@ -3764,7 +4303,7 @@ Click left button and drag to measure a rectangular area - Klepněte levým tlačítkem a táhněte pro změření obdélníkové oblasti + Klepněte levým tlačítkem a táhněte pro změření obdélníkové oblasti Double-Click Middle @@ -3772,11 +4311,11 @@ Edit Tool Mouse Actions - Činnosti nástroje úprav prováděné myší + Činnosti nástroje úprav prováděné myší Draw Tool Mouse Actions - Činnosti nástroje kreslení prováděné myší + Činnosti nástroje kreslení prováděné myší Right @@ -3792,7 +4331,7 @@ Multi Select - Vícenásobný výběr + Vícenásobný výběr Zoom In @@ -3804,7 +4343,7 @@ Shift-click left button and drag to zoom to a rectangular area - Shift-klepněte levým tlačítkem a táhněte pro přiblížení obdélníkové oblasti + Shift-klepněte levým tlačítkem a táhněte pro přiblížení obdélníkové oblasti %1 / %2Hz%3 @@ -3832,7 +4371,7 @@ Double-click left button on an item to edit it - Dvakrát klepněte levým tlačítkem na položce pro její upravení + Dvakrát klepněte levým tlačítkem na položce pro její upravení Scroll rapidly left or right in time axis @@ -3852,11 +4391,11 @@ Select - Vybrat + Vybrat Fine Select - Citlivý výběr + Citlivý výběr Zoom in or out in time axis @@ -3864,7 +4403,7 @@ Click left button and drag to measure extents of an item or shape - Klepněte levým tlačítkem a táhněte pro změření rozsahu položky nebo tvaru + Klepněte levým tlačítkem a táhněte pro změření rozsahu položky nebo tvaru Zoom Out @@ -3892,7 +4431,7 @@ Click left button on an item or selected region and drag to move - Klepněte levým tlačítkem na položku nebo vybranou oblast a táhněte pro její přesun + Klepněte levým tlačítkem na položku nebo vybranou oblast a táhněte pro její přesun Click and drag to select a range; hold Shift to avoid snapping to items; hold Ctrl for multi-select; middle-click and drag to navigate @@ -3912,11 +4451,11 @@ Click left button and drag to move around - Klepněte levým tlačítkem a táhněte pro přesouvání se + Klepněte levým tlačítkem a táhněte pro přesouvání se Select Tool Mouse Actions - Činnosti nástroje výběru prováděné myší + Činnosti nástroje výběru prováděné myší Unaligned @@ -3944,7 +4483,7 @@ Ctrl+Left - Ctrl+šipka vlevo + Ctrl+šipka vlevo Click and drag to move the selection boundary @@ -3952,11 +4491,11 @@ Measure Tool Mouse Actions - Činnosti nástroje měření prováděné myší + Činnosti nástroje měření prováděné myší Ctrl-click left button and drag to select an additional region - Ctrl-klepněte levým tlačítkem a táhněte pro výběr další oblasti + Ctrl-klepněte levým tlačítkem a táhněte pro výběr další oblasti Zoom in or out in the vertical axis @@ -3980,7 +4519,7 @@ Double-Click Left - Dvakrát klepněte levým + Dvakrát klepněte levým Wheel Down @@ -3988,7 +4527,7 @@ Shift-click left button and drag to select without snapping to items or grid - Shift-klepněte levým tlačítkem a táhněte pro výběr bez zapadávání k položkám nebo mřížce + Shift-klepněte levým tlačítkem a táhněte pro výběr bez zapadávání k položkám nebo mřížce Relocate @@ -4000,7 +4539,7 @@ Navigate Tool Mouse Actions - Činnosti nástroje pro navádění prováděné myší + Činnosti nástroje pro navádění prováděné myší Reference @@ -4012,19 +4551,19 @@ Zoom to Area - Přiblížit oblast + Přiblížit oblast Measure Area - Oblast měření + Oblast měření Measure Item - Položka měření + Položka měření Shift+Left - Shift+šipka vlevo + Shift+šipka vlevo Click and drag to adjust the horizontal zoom level @@ -4032,7 +4571,7 @@ Click left button and drag to select region; drag region edge to resize - Klepněte levým tlačítkem a táhněte pro výběr oblasti; táhněte za okraj oblasti pro změnu její velikosti + Klepněte levým tlačítkem a táhněte pro výběr oblasti; táhněte za okraj oblasti pro změnu její velikosti Wheel Up @@ -4060,11 +4599,11 @@ Double-click left button to jump to clicked location - Dvakrát klepněte levým tlačítkem pro skok na klepnuté místo + Dvakrát klepněte levým tlačítkem pro skok na klepnuté místo Click left button and drag to create new item - Klepněte levým tlačítkem a táhněte pro vytvoření nové položky + Klepněte levým tlačítkem a táhněte pro vytvoření nové položky New vertical display range, from %1 to %2 %4: @@ -4072,7 +4611,7 @@ Cmd-click left button and drag to select an additional region - Ctrl-klepněte levým tlačítkem a táhněte pro výběr další oblasti + Ctrl-klepněte levým tlačítkem a táhněte pro výběr další oblasti Click and drag to select a range; hold Shift to avoid snapping to items; hold Cmd for multi-select; middle-click and drag to navigate @@ -4099,7 +4638,7 @@ Change Playback Plugin - Změnit přídavný modul přehrávání + Změnit přídavný modul přehrávání Change Playback Pan @@ -4107,7 +4646,11 @@ Configure Playback Plugin - Nastavit přídavný modul přehrávání + Nastavit přídavný modul přehrávání + + + Change Playback Sample + @@ -4371,7 +4914,7 @@ Time display format - Formát zobrazení času + Formát zobrazení času Show boxes for all panes @@ -4397,6 +4940,42 @@ 4 x Oversampling with interpolation 4 x převzorkování s interpolací + + Normalise audio signal when reading from audio file + + + + Single fixed sample rate to resample all files to + + + + Time display precision + + + + Use hours:minutes:seconds format + + + + Label middle C as + + + + C0 - middle of octave scale + + + + C3 - common MIDI sequencer convention + + + + C4 - ASA American standard + + + + C5 - used in Cakewalk and others + + PreferencesDialog @@ -4472,30 +5051,50 @@ Playback audio device: - Zvukové zařízení pro přehrávání: + Zvukové zařízení pro přehrávání: Follow system locale + Použít jazyk systému + + + Russian + Ruština + + + British English + Britská angličtina + + + American English + Americká angličtina + + + Czech + Čeština + + + User interface language + Jazyk uživatelského rozhraní + + + Allow network usage - Russian + Draw layers at Retina resolution: - British English + Default spectrogram colour: - American English + Default melodic spectrogram colour: - Czech - - - - User interface language + Default colour 3D plot colour: @@ -4568,6 +5167,10 @@ Playback Gain Zesílení přehrávání + + Set playback clip: + + PropertyContainer @@ -4675,6 +5278,30 @@ + QObject + + <b>Failed to load plugins</b><p>Failed to load one or more plugin libraries:</p> + + + + + Failed to load library + + + + Failed to query plugins from library after loading + + + + Unknown failure + + + + Success: internal error? + + + + QuickTimeFileReader Decoding %1... @@ -4711,6 +5338,13 @@ + ReadOnlyWaveFileModel + + Wave File + Soubor Wave + + + RegionLayer Log @@ -4883,7 +5517,7 @@ ResamplingWavFileReader Resampling %1... - Převzorkovává se %1... + Převzorkovává se %1... @@ -5248,7 +5882,7 @@ Normalize Columns - Normalizovat sloupce + Normalizovat sloupce Time: %1 - %2 @@ -5304,7 +5938,7 @@ Normalize Visible Area - Normalizovat viditelnou oblast + Normalizovat viditelnou oblast Colour @@ -5436,6 +6070,10 @@ Max Frequency Největší kmitočet + + Normalization + + SpectrumLayer @@ -5547,11 +6185,11 @@ Surveyer No, thanks - Ne, děkuji + Ne, děkuji Yes! Take me to the survey - Ano! Vezmi mě do průzkumu + Ano! Vezmi mě do průzkumu @@ -5838,7 +6476,7 @@ Time: %1 Value: %2%3 Label: %4 - Čas: %1 + Čas: %1 Hodnota: %2%3 Štítek: %4 @@ -5908,7 +6546,7 @@ Time: %1 Value: %2%3 No label - Čas: %1 + Čas: %1 Hodnota: %2%3 Žádný štítek @@ -5952,6 +6590,42 @@ Draw Segment Division Lines Kreslit čáry rozdělující části + + Discrete Curves + + + + %1 Hz (%2, %3) + %1 Hz (%2, %3) + + + %1 %2 + %1 %2 + + + %1 + %1 + + + Time: %1 +Value: %2 +No label + Čas: %1 +Hodnota: %2%3 +Žádný štítek {1 +?} {2 +?} + + + Time: %1 +Value: %2 +Label: %4 + Čas: %1 +Hodnota: %2%3 +Štítek: %4 {1 +?} {2 +?} + TipDialog @@ -6179,6 +6853,62 @@ + UnitConverter + + Pitch + Výška tónu + + + cents + + + + In 12-tone Equal Temperament: + + + + = + + + + + + + + + Piano note + + + + in octave + + + + MIDI pitch + + + + Note that only pitches in the range 0 to 127 are valid in the MIDI protocol. + + + + Tempo + + + + Beat period + + + + at + + + + With concert-A tuning frequency at %1 Hz, and middle C residing in octave %2. +(These can be changed in the application preferences.) + + + + View Off @@ -6315,12 +7045,16 @@ Zvětšení na %n vzorků na pixel + + Enter NoteEdit mode + + WaveFileModel Wave File - Soubor Wave + Soubor Wave diff -r ba6f95b1ff7c -r 5e6e1e074080 i18n/sonic-visualiser_en_GB.qm Binary file i18n/sonic-visualiser_en_GB.qm has changed diff -r ba6f95b1ff7c -r 5e6e1e074080 i18n/sonic-visualiser_en_GB.ts --- a/i18n/sonic-visualiser_en_GB.ts Wed Jul 15 12:27:40 2015 +0100 +++ b/i18n/sonic-visualiser_en_GB.ts Wed Apr 20 12:06:28 2016 +0100 @@ -1,20 +1,20 @@ - + ActivityLog - + Activity Log - + <p>Activity Log lists your interactions and other events within %1.</p> - + %1: %2 @@ -22,7 +22,7 @@ AddLayerCommand - + Add %1 Layer @@ -30,7 +30,7 @@ AggregateWaveModel - + Aggregate Wave @@ -38,7 +38,7 @@ AlignmentModel - + Alignment @@ -46,17 +46,17 @@ AudioCallbackPlaySource - + Play from %1 - + Stop at %1 - + Change time-stretch factor to %1 @@ -64,140 +64,112 @@ AudioDial - + %1: %2%3 - + %2%3 - + New value for %1, from %2 to %3 %4: - + New value for %1, from %2 to %3: - + Enter a new value from %1 to %2 %3: - - + + Enter a new value from %1 to %2: - - + + Enter new value - AudioTargetFactory - - - (auto) - - - - - JACK Audio Connection Kit - - - - - PulseAudio Server - - - - - Core Audio Device - - - - - Default Soundcard Device - - - - BZipFileDevice - + File is already open - + Append mode not supported - + File access mode not specified - + Read and write modes both specified - + Failed to open file for writing - + Failed to open bzip2 stream for writing - + Failed to open file for reading - + Failed to open bzip2 stream for reading - + Internal error (open for neither read nor write) - + File not open - + bzip2 stream write close error - + bzip2 stream read close error - + Internal error (close for neither read nor write) - + bzip2 stream read error @@ -205,7 +177,7 @@ BundleCommand - + %1 (%n change(s)) %1 (%n change) @@ -216,7 +188,8 @@ CSVFileWriter - + + Failed to open file %1 for writing @@ -224,88 +197,98 @@ CSVFormatDialog - + Select Data Format - + Please select the correct data format for this file. - - + + <ignore> - + Values - + (%1 more) - + Time - + End time - + Duration - + Value - + + Pitch + + + + Label - + Timing is specified: - + Explicitly, in seconds - + + Explicitly, in milliseconds + + + + Explicitly, in audio sample frames - + Implicitly: rows are equally spaced in time - + Audio sample rate (Hz): - + Frame increment between rows: - + Data will be displayed in a %1 layer. @@ -313,91 +296,91 @@ Colour3DPlotLayer - - + + Colour - - + + Scale - + Normalize Columns Normalise Columns - + Normalize Visible Area Normalise Visible Area - + Invert Vertical Scale - + Gain - + Always Opaque - + Smooth - + Bin Scale - + Bins - - + + Linear - - + + Log - + +/-1 - + Absolute - + <unknown> - + dB - + Time: %1 - %2 Bin: %3 Value: %4 @@ -407,68 +390,68 @@ ColourMapper - - + + <unknown> - - Default - - - - + White on Black - + Black on White - - Red on Blue - - - - - Yellow on Black - - - - - Blue on Black - - - - + + Green + + + + + Cherry + + + + + Wasp + + + + + Ice + + + + Sunset - + Fruit Salad - + Banded - + Highlight - + Printer - + High Gain @@ -476,68 +459,67 @@ CommandHistory - - - + + &Undo - + Ctrl+Z - + Undo the last editing operation - - - + + + Re&do - + Ctrl+Shift+Z - + Redo the last operation that was undone - + Undo %1 - + Redo %1 - + Nothing to undo - + Nothing to redo - - + + &Undo %1 - - + + Re&do %1 @@ -545,7 +527,15 @@ CoreAudioFileReader - + + Decoding %1... + + + + + DecodingWavFileReader + + Decoding %1... @@ -553,7 +543,7 @@ Dense3DModelPeakCache - + Dense 3-D Peak Cache @@ -561,17 +551,17 @@ DenseThreeDimensionalModel - + Dense 3-D - + Time - + Frame @@ -579,7 +569,7 @@ DenseTimeValueModel - + Dense Time-Value @@ -587,12 +577,12 @@ Document - + Set main model to %1 - + Clear main model @@ -600,7 +590,7 @@ EditableDenseThreeDimensionalModel - + Editable Dense 3-D @@ -608,12 +598,12 @@ FFTModel - + FFT - + %1 Hz @@ -621,22 +611,22 @@ Fader - + Enter new fader level - + New fader level, from %1 to %2 dBFS: - + Level: Off - + Level: %1%2.%3%4 dB @@ -644,48 +634,53 @@ FeatureExtractionModelTransformer - + + Transforms supplied to a single FeatureExtractionModelTransformer instance must be similar in every respect except plugin output + + + + No factory available for feature extraction plugin id "%1" (unknown plugin type, or internal error?) - + Input model for feature extraction plugin "%1" is of wrong type (internal error?) - + Failed to instantiate plugin "%1" - + Cannot provide enough channels to feature extraction plugin "%1" (plugin min is %2, max %3; input model has %4) - - + + Failed to initialise feature extraction plugin "%1" - + Feature extraction plugin "%1" rejected the given step and block sizes (%2 and %3); using plugin defaults (%4 and %5) instead - + Transform was configured for version %1 of plugin "%2", but the plugin being used is version %3 - + Plugin "%1" has no outputs - + Plugin "%1" has no output named "%2" @@ -693,57 +688,255 @@ FileSource - - - + + + Unsupported scheme in URL - + Downloading %1... - - Failed to connect to FTP server - - - - - Login failed - - - - - Failed to change to correct directory - - - - - FTP download aborted - - - - + Download cancelled - + Failed to create local file %1 - + File contains no data! + FlexiNoteLayer + + + + + New Point + + + + + Vertical Scale + + + + + Scale Units + + + + + Scale + + + + + Auto-Align + + + + + Linear + + + + + Log + + + + + MIDI Notes + + + + + In progress + + + + + + No local points + + + + + %1 (%2, %3 Hz) + + + + + %1 Hz (%2, %3) + + + + + %1 %2 + + + + + Time: %1 +Pitch: %2 +Duration: %3 +No label + + + + + Time: %1 +Pitch: %2 +Duration: %3 +Label: %4 + + + + + Draw Point + + + + + Erase Point + + + + + Drag Point + + + + + + + Edit Point + + + + + Relocate Point + + + + + Change Point Value + + + + + Add Point + + + + + Snap Notes + + + + + Merge Notes + + + + + Drag Selection + + + + + Resize Selection + + + + + + Delete Selected Points + + + + + Re-align pasted items? + + + + + The items you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? + + + + + Paste + + + + + Record FlexiNote + + + + + FlexiNoteModel + + + FlexiNote + + + + + Time + + + + + Frame + + + + + Pitch + + + + + Duration + + + + + Level + + + + + Label + + + + + Unknown + + + + + Edit Data + + + + I - + Edit Data @@ -751,52 +944,52 @@ ImageDialog - + Image - + Label: - + File or URL: - + Browse... - + Preview - + Unsupported scheme in URL - + The URL scheme "%1" is not supported - + Opening image URL... - + File download failed - + Failed to download URL "%1": %2 @@ -804,58 +997,58 @@ ImageLayer - + In progress - - + + Select image - + Move Image - + Drag Selection - + Resize Selection - + Delete Selection - + Re-align pasted items? - + The items you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? - + Paste - + New Point - + Opening image URL... @@ -863,38 +1056,38 @@ ImageModel - - + + Image - + Edit Image - + Time - + Frame - + Label - + Unknown - + Edit Data @@ -902,38 +1095,31 @@ InteractiveFileFinder - - + + Select file - - + + All files (*.*) - - + + Select a session file - - Sonic Visualiser session files (*.sv) -RDF files (%1) -All files (*.*) - - - - + Audio files (%1) All files (*.*) - + All supported files (%1 %2) Sonic Visualiser Layer XML files (*.svl) Comma-separated data files (*.csv) @@ -945,7 +1131,7 @@ - + All supported files (%1 %2) Sonic Visualiser Layer XML files (*.svl) Comma-separated data files (*.csv) @@ -956,24 +1142,114 @@ - + + Image files (%1) +All files (*.*) + + + + + File does not exist + + + + + <b>File not found</b><p>File "%1" does not exist + + + + + File is not readable + + + + + <b>File is not readable</b><p>File "%1" can not be read + + + + + + Directory selected + + + + + + <b>Directory selected</b><p>File "%1" is a directory + + + + + Non-file selected + + + + + <b>Not a file</b><p>Path "%1" is not a file + + + + + File is empty + + + + + <b>File is empty</b><p>File "%1" is empty + + + + + %1 session files (*.%1) +RDF files (%3) +All files (*.*) + + + + + All supported files (%1 %2) +Comma-separated data files (*.csv) +Sonic Visualiser Layer XML files (*.svl) +Space-separated .lab files (*.lab) +RDF files (%2) +MIDI files (*.mid) +Text files (*.txt) +All files (*.*) + + + + + All supported files (%1 %2) +Comma-separated data files (*.csv) +Sonic Visualiser Layer XML files (*.svl) +Space-separated .lab files (*.lab) +RDF files (%2) +Text files (*.txt) +All files (*.*) + + + + All supported files (*.sv %1 %2) -Sonic Visualiser session files (*.sv) +%3 session files (*.%4) Audio files (%2) RDF files (%1) All files (*.*) - - Image files (%1) + + Comma-separated data files (*.csv) +Space-separated .lab files (*.lab) +Text files (*.txt) All files (*.*) - + All supported files (*.sv %1 %2 %3) -Sonic Visualiser session files (*.sv) +%4 session files (*.%5) Audio files (%1) Layer files (%2) RDF files (%3) @@ -981,79 +1257,30 @@ - - File does not exist - - - - - <b>File not found</b><p>File "%1" does not exist - - - - - File is not readable - - - - - <b>File is not readable</b><p>File "%1" can not be read - - - - - - Directory selected - - - - - - <b>Directory selected</b><p>File "%1" is a directory - - - - - Non-file selected - - - - - <b>Not a file</b><p>Path "%1" is not a file - - - - - File is empty - - - - - <b>File is empty</b><p>File "%1" is empty - - - - - Sonic Visualiser session files (*.sv) + + %1 session files (*.%2) All files (*.*) - - - - + + + + + + + Select a file to export to - + WAV audio files (*.wav) All files (*.*) - + Sonic Visualiser Layer XML files (*.svl) Comma-separated data files (*.csv) RDF/Turtle files (%1) @@ -1063,7 +1290,7 @@ - + Sonic Visualiser Layer XML files (*.svl) Comma-separated data files (*.csv) RDF/Turtle files (%1) @@ -1072,71 +1299,97 @@ - + + Comma-separated data files (*.csv) +Sonic Visualiser Layer XML files (*.svl) +RDF/Turtle files (%1) +MIDI files (*.mid) +Text files (*.txt) +All files (*.*) + + + + + Comma-separated data files (*.csv) +Sonic Visualiser Layer XML files (*.svl) +RDF/Turtle files (%1) +Text files (*.txt) +All files (*.*) + + + + Portable Network Graphics files (*.png) All files (*.*) - + + Comma-separated data files (*.csv) +Text files (*.txt) +All files (*.*) + + + + File exists - + <b>File exists</b><p>The file "%1" already exists. Do you want to overwrite it? - + <b>File not found</b><p>Audio file "%1" could not be opened. Do you want to locate it? - + <b>File not found</b><p>File "%1" could not be opened. Do you want to locate it? - + Failed to open file - + Locate file... - + Use URL... - + Cancel - + Use URL - + Please enter the URL to use for this file: - + Failed to open location - + <b>Failed to open location</b><p>URL "%1" could not be opened @@ -1144,65 +1397,65 @@ ItemEditDialog - + Timing - + Time: - - + + frames - - + + sec - - + + usec - + Duration: - + Properties - + Value: - + Text: - + OK - + Reset - + Cancel @@ -1210,41 +1463,41 @@ KeyReference - - + + & - + <i>or</i>&nbsp;<b>%1</b> - + </b>&nbsp;(%1)<b> - - Sonic Visualiser: Key and Mouse Reference + + %1: Key and Mouse Reference LabelCounterInputDialog - + Set Counters - + Fine counter (beats): - + Coarse counter (bars): @@ -1252,77 +1505,77 @@ Labeller - + No numbering - + Simple counter - + Cyclical counter - + Cyclical two-level counter (bar/beat) - + Audio sample frame number - + Time in seconds - + Duration to the following item - + Tempo (bpm) based on duration to following item - + Duration since the previous item - + Tempo (bpm) based on duration since previous item - + Same as the nearest previous item - + Value extracted from the item's label (where possible) - + %1.%2 - + %1 - + Label Points @@ -1330,79 +1583,84 @@ Layer - + Waveform - - - + + + Spectrogram - + Ruler - + Time Instants - + Time Values - + Notes - + + Flexible Notes + + + + Regions - + Text - + Images - + Colour 3D Plot - + Spectrum - + Time Slice - - Layer - - - - + + Unknown Layer + + + + Make Measurement - + Delete Measurement @@ -1410,17 +1668,17 @@ LayerTreeDialog - + Layer Summary - + Audio Data Sources - + Panes and Layers @@ -1428,22 +1686,22 @@ LayerTreeModel - + Layer - + Shown - + Played - + Model @@ -1451,27 +1709,27 @@ MIDIFileImportDialog - + Merge all tracks - + Merge all non-percussion tracks - + Select track or tracks to import - + <b>Select track to import</b><p>You can only import this file as a single annotation layer, but the file contains more than one track, or notes on more than one channel.<p>Please select the track or merged tracks you wish to import: - + Error in MIDI file import @@ -1479,89 +1737,89 @@ MIDIFileReader - + Wrong length for long data in MIDI stream (%1, should be %2) - + Wrong length for int data in MIDI stream (%1, should be %2) - + getMIDIByte called but no MIDI file open - - + + End of MIDI file encountered while reading - + Attempt to get more bytes than expected on Track - - + + Attempt to read past MIDI file end - + getMIDIBytes called but no MIDI file open - + Attempt to get more bytes than available on Track (%1, only have %2) - + getNumberFromMIDIBytes called but no MIDI file open - + skipToNextTrack called but no MIDI file open - + Invalid event code %1 found - + Running status used for first event in track - + MIDI file "%1" has no notes in any track - + - uses GM percussion channel - + Track %1 (%2)%3 - + Track %1 (untitled)%3 - + %1 - vel %2 @@ -1569,7 +1827,7 @@ MIDIInput - + Input @@ -1577,7 +1835,7 @@ MP3FileReader - + Decoding %1... @@ -1585,2387 +1843,2636 @@ MainWindow - + Black - + Red - + Blue - - - + + + Green - + Purple - + Orange - + White - + Bright Red - + Bright Blue - - - + + + Bright Green - + Bright Purple - + Bright Orange - - Playback Speedup - - - - - + + + + &Layer + + + + + + &Transform + + + + + &File + + + + + File Toolbar + + + + + File and Session Management + + + + + &New Session + + + + + Ctrl+N + + + + + Ctrl+O + + + + + &Open... + + + + + Open a session file, audio file, or layer + + + + + &Save Session + + + + + Ctrl+S + + + + + Save Session &As... + + + + + Ctrl+Shift+S + + + + + Ctrl+I + + + + + &Export Audio File... + + + + + Export selection as an audio file + + + + + Import Annotation &Layer... + + + + + Ctrl+L + + + + + Import layer data from an existing file + + + + + Export layer data to a file + + + + + Export Image File... + + + + + Export a single pane to an image file + + + + + Open Lo&cation... + + + + + Playback Speed + + + + + Ctrl+Shift+O + + + + + Open or import a file from a remote URL + + + + + Export Audio Data... + + + + + &Preferences... + + + + + Adjust the application preferences + + + + + &Quit + + + + + Ctrl+Q + + + + + &Edit + + + + + Editing + + + + + Cu&t + + + + + Ctrl+X + + + + + Cut the selection from the current layer to the clipboard + + + + + &Copy + + + + + Ctrl+C + + + + + Copy the selection from the current layer to the clipboard + + + + + &Paste + + + + + Ctrl+V + + + + + Paste from the clipboard to the current layer + + + + + Paste at Playback Position + + + + + Ctrl+Shift+V + + + + + Paste from the clipboard to the current layer, placing the first item at the playback position + + + + + + &Delete Selected Items + + + + + Del + + + + + + Delete items in current selection from the current layer + + + + + Selection + + + + + Select &All + + + + + Ctrl+A + + + + + Select the whole duration of the current session + + + + + Select &Visible Range + + + + + Ctrl+Shift+A + + + + + Select the time range corresponding to the current window width + + + + + Select to &Start + + + + + + + + Shift+Left + + + + + Select from the start of the session to the current playback position + + + + + Select to &End + + + + + Shift+Right + + + + + Select from the current playback position to the end of the session + + + + + C&lear Selection + + + + + Esc + + + + + Clear the selection + + + + + Tapping Time Instants + + + + + &Insert Instant at Playback Position + + + + + Enter + + + + + Insert a new time instant at the current playback position, in a new layer if necessary + + + + + ; + + + + + Insert Instants at Selection &Boundaries + + + + + Shift+Enter + + + + + Insert new time instants at the start and end of the current selected regions, in a new layer if necessary + + + + + Insert Item at Selection + + + + + Insert a new note or region item corresponding to the current selection + + + + + Number New Instants with + + + + + Cycle size + + + + + Reset Numbering Counters + + + + + Reset to 1 all the counters used for counter-based labelling + + + + + Set Numbering Counters... + + + + + Set the counters used for counter-based labelling + + + + + Renumber Selected Instants + + + + + Renumber the selected instants using the current labelling scheme + + + + + Panning and Navigation + + + + + &View + + + + + Scroll &Left + + + + + + + + + + + Left + + + + + Scroll the current pane to the left + + + + + Scroll &Right + + + + + Right + + + + + Scroll the current pane to the right + + + + + &Jump Left + + + + + + + Ctrl+Left + + + + + Scroll the current pane a big step to the left + + + + + J&ump Right + + + + + Ctrl+Right + + + + + Scroll the current pane a big step to the right + + + + + Peek Left + + + + + Alt+Left + + + + + Scroll the current pane to the left without moving the playback cursor or other panes + + + + + Peek Right + + + + + Alt+Right + + + + + Scroll the current pane to the right without moving the playback cursor or other panes + + + + + Zoom + + + + + Zoom &In + + + + + Up + + + + + Increase the zoom level + + + + + Zoom &Out + + + + + Down + + + + + Decrease the zoom level + + + + + Restore &Default Zoom + + + + + Restore the zoom level to the default + + + + + Zoom to &Fit + + + + + F + + + + + Zoom to show the whole file + + + + + Display Features + + + + + Show &Centre Line + + + + + ' + + + + + Show or hide the centre line + + + + + Toggle All Time Rulers + + + + + Show &No Overlays + + + + + 0 + + + + + Show &Minimal Overlays + + + + + 9 + + + + + 8 + + + + + Show &All Overlays + + + + + Export audio from selection into a data file + + + + + Export Annotation La&yer... + + + + + Ctrl+Y + + + + + Browse Recorded Audio Folder + + + + + Open the Recorded Audio folder in the system file browser + + + + + Ctrl+Shift+Return + + + + + # + + + + + Show or hide all time rulers + + + + + Hide times, layer names, and scale + + + + + Show times and basic scale + + + + + Show times, layer names, and scale + + + + + Show &Zoom Wheels + + + + + Z + + + + + Show thumbwheels for zooming horizontally and vertically + + + + + Show Property Bo&xes + + + + + X + + + + + Show the layer property boxes at the side of the main window + + + + + Show Status &Bar + + + + + Show context help information in the status bar at the bottom of the window + + + + + Show La&yer Summary + + + - &Layer - - - - - - &Transform - - - - - &File - - - - - File Toolbar - - - - - File and Session Management - - - - - &New Session - - - - - Ctrl+N - - - - - Ctrl+O - - - - - &Open... - - - - - Open a session file, audio file, or layer - - - - - &Save Session - - - - - Ctrl+S - - - - - Save Session &As... - - - - - Ctrl+Shift+S - - - - - Ctrl+I - - - - - &Export Audio File... - - - - - Export selection as an audio file - - - - - Import Annotation &Layer... - - - - - Ctrl+L - - - - - Import layer data from an existing file - - - - - Export Annotation Layer... - - - - - Export layer data to a file - - - - - Export Image File... - - - - - Export a single pane to an image file - - - - - Open Lo&cation... - - - - - Ctrl+Shift+O - - - - - Open or import a file from a remote URL - - - - - &Preferences... - - - - - Adjust the application preferences - - - - - &Quit - - - - - Ctrl+Q - - - - - &Edit - - - - - Editing - - - - - Cu&t - - - - - Ctrl+X - - - - - Cut the selection from the current layer to the clipboard - - - - - &Copy - - - - - Ctrl+C - - - - - Copy the selection from the current layer to the clipboard - - - - - &Paste - - - - - Ctrl+V - - - - - Paste from the clipboard to the current layer - - - - - Paste at Playback Position - - - - - Ctrl+Shift+V - - - - - Paste from the clipboard to the current layer, placing the first item at the playback position - - - - + Y + + + + + Open a window displaying the hierarchy of panes and layers in this session + + + + + Show Acti&vity Log + + + + + Open a window listing interactions and other events + + + + + Show &Unit Converter + + + + + Open a window of pitch and timing conversion utilities + + + + + Go Full-Screen + + + + + F11 + + + + + Expand the pane area to the whole screen + + + + + &Pane + + + + + Managing Panes and Layers + + + + + Add &New Pane + + + + + N + + + + + Add a new pane containing only a time ruler + + + + + Add New %1 Layer + + + + + Add a new empty layer of type %1 + + + + + T + + + + + Add &Waveform + + + + + W + + + + + Add a new pane showing a waveform view + + + + + Shift+W + + + + + Add a new layer showing a waveform view + + + + + Add Spectro&gram + + + + + G + + + + + Add a new pane showing a spectrogram + + + + + Shift+G + + + + + Add a new layer showing a spectrogram + + + + + Add &Melodic Range Spectrogram + + + + + M + + + + + Add a new pane showing a spectrogram set up for an overview of note pitches + + + + + Shift+M + + + + + Add a new layer showing a spectrogram set up for an overview of note pitches + + + + + Add Pea&k Frequency Spectrogram + + + + + K + + + + + Add a new pane showing a spectrogram set up for tracking frequencies + + + + + Shift+K + + + + + Add a new layer showing a spectrogram set up for tracking frequencies + + + + + Add Spectr&um + + + + + U + + + + + Add a new pane showing a frequency spectrum + + + + + Shift+U + + + + + Add a new layer showing a frequency spectrum + + + + + &All Channels Mixed + + + + + &All Channels + + + + + Channel &%1 + + + + + + %1: %2 + + + + + Switch to Previous Pane + + + + + [ + + + + + Make the next pane up in the pane stack current + + + + + Switch to Next Pane + + + + + ] + + + + + Make the next pane down in the pane stack current + + + + + &Delete Pane + + + + + Ctrl+Shift+D + + + + + Delete the currently active pane + + + + + Add &Time Ruler + + + + + Add a new layer showing a time ruler + + + + + Add &Existing Layer + + + + + Add S&lice of Layer + + + + + Switch to Previous Layer + + + + + { + + + + + Make the previous layer in the pane current + + + + + Switch to Next Layer + + + + + } + + + + + Make the next layer in the pane current + + + + + &Rename Layer... + + + + + R + + + + + Rename the currently active layer + + + + + Edit Layer Data + + + + + E + + + + + Edit the currently active layer as a data grid + + + + + &Delete Layer + + + + + Ctrl+D + + + + + Delete the currently active layer + + + + + &Recent Transforms + + + + + %1 by Category + + + + + + Unclassified + + + + + %1 by Plugin Name + + + + + %1 by Maker + + + + + + Unknown + + + + + + [\(<].*$ + + + + + + %1... + + + + + Find a Transform... + + + + + Search for a transform from the installed plugins, by name or description + + + + + Ctrl+M + + + + + &Help + + + + + Help + + + + + &Help Reference + + + + + F1 + + + + + &Key and Mouse Reference + + + + + F2 + + + + + Ctrl+R + + + + + Re-open + + + + + Re-open the current or most recently opened file + + + + + Standard Waveform + + + + + Choose Default Template... + + + + + Ctrl+T + + + + + Repeat Transform + + + + + Re-select the most recently run transform + + + + + Playback and Transport Controls + + + + + Play&back + + + + + Playback + + + + + Playback Toolbar + + + + + Rewind to Start + + + + + Home + + + + + Rewind to the start + + + + + + + Rewind + + + + + PgUp + + + + + Rewind to the previous time instant or time ruler notch + + + + + Rewind to Similar Point + + + + + Shift+PgUp + + + + + Rewind to the previous similarly valued time instant + + + + + Play / Pause + + + + + Space + + + + + Start or stop playback from the current position + + + + + + Fast Forward + + + + + PgDown + + + + + Fast-forward to the next time instant or time ruler notch + + + + + Fast Forward to Similar Point + + + + + Shift+PgDown + + + + + Fast-forward to the next similarly valued time instant + + + + + Fast Forward to End + + + + + End + + + + + Fast-forward to the end + + + + + Record + + + + + Ctrl+Space + + + + + Record a new audio file + + + + + Play Mode Toolbar + + + + + Constrain Playback to Selection + + + + + s + + + + + Constrain playback to the selected regions + + + + + Loop Playback + + + + + l + + + + + Loop playback + + + + + Solo Current Pane + + + + + o + + + + + Solo the current pane during playback + + + + + Align File Timelines + + + + + Treat multiple audio files as versions of the same work, and align their timelines + + + + + Speed Up + + + + + Ctrl+PgUp + + + + + Time-stretch playback to speed it up without changing pitch + + + + + Slow Down + + + + + Ctrl+PgDown + + + + + Time-stretch playback to slow it down without changing pitch + + + + + Restore Normal Speed + + + + + Ctrl+Home + + + + + Restore non-time-stretched playback + + + + + Edit Toolbar + + + + + + + + + + Tool Selection + + + + + Playback speed: %1% (%2x slower) + + + + + Playback speed: %1% (%2x faster) + + + + + <b>Layer generation failed</b><p>Failed to generate derived layer.<p>The layer transform %1failed:<p>%2 + + + + + <b>Layer generation failed</b><p>Failed to generate a derived layer.<p>The layer transform %1failed.<p>No error information is available. + + + + + <h3>Newer version available</h3><p>You are using version %1 of Sonic Visualiser, but version %2 is now available.</p><p>Please see the <a href="http://sonicvisualiser.org/">Sonic Visualiser website</a> for more information.</p> + + + + + Tools Toolbar + + + + + + + Navigate + + + + + 1 + + + + + + Select + + + + + 2 + + + + + Select ranges + + + + + + + Edit + + + + + Navigate Tool Mouse Actions + + + + + Click left button and drag to move around + + + + + + Zoom to Area + + + + + + Shift-click left button and drag to zoom to a rectangular area + + + + + Relocate + + + + + + + + Double-Click Left + + + + + Double-click left button to jump to clicked location + + + + + + Double-click left button on an item to edit it + + + + + Select Tool Mouse Actions + + + + + Click left button and drag to select region; drag region edge to resize + + + + + + Multi Select + + + + + Cmd-click left button and drag to select an additional region + + + + + Ctrl-click left button and drag to select an additional region + + + + + Fine Select + + + + + Shift-click left button and drag to select without snapping to items or grid + + + - &Delete Selected Items - - - - - Del - - - - + 3 + + + - Delete items in current selection from the current layer - - - - - Selection - - - - - Select &All - - - - - Ctrl+A - - - - - Select the whole duration of the current session - - - - - Select &Visible Range - - - - - Ctrl+Shift+A - - - - - Select the time range corresponding to the current window width - - - - - Select to &Start - - - - - Shift+Left - - - - - Select from the start of the session to the current playback position - - - - - Select to &End - - - - - Shift+Right - - - - - Select from the current playback position to the end of the session - - - - - C&lear Selection - - - - - Esc - - - - - Clear the selection - - - - - Tapping Time Instants - - - - - &Insert Instant at Playback Position - - - - - Enter - - - - - Insert a new time instant at the current playback position, in a new layer if necessary - - - - - ; - - - - - Insert Instants at Selection &Boundaries - - - - - Shift+Enter - - - - - Insert new time instants at the start and end of the current selected regions, in a new layer if necessary - - - - - Insert Item at Selection - - - - - Ctrl+Shift+Enter - - - - - Insert a new note or region item corresponding to the current selection - - - - - Number New Instants with - - - - - Cycle size - - - - - Reset Numbering Counters - - - - - Reset to 1 all the counters used for counter-based labelling - - - - - Set Numbering Counters... - - - - - Set the counters used for counter-based labelling - - - - - Renumber Selected Instants - - - - - Renumber the selected instants using the current labelling scheme - - - - - Panning and Navigation - - - - - &View - - - - - Scroll &Left - - - - - Left - - - - - Scroll the current pane to the left - - - - - Scroll &Right - - - - - Right - - - - - Scroll the current pane to the right - - - - - &Jump Left - - - - - Ctrl+Left - - - - - Scroll the current pane a big step to the left - - - - - J&ump Right - - - - - Ctrl+Right - - - - - Scroll the current pane a big step to the right - - - - - Peek Left - - - - - Alt+Left - - - - - Scroll the current pane to the left without moving the playback cursor or other panes - - - - - Peek Right - - - - - Alt+Right - - - - - Scroll the current pane to the right without moving the playback cursor or other panes - - - - - Zoom - - - - - Zoom &In - - - - - Up - - - - - Increase the zoom level - - - - - Zoom &Out - - - - - Down - - - - - Decrease the zoom level - - - - - Restore &Default Zoom - - - - - Restore the zoom level to the default - - - - - Zoom to &Fit - - - - - F - - - - - Zoom to show the whole file - - - - - Display Features - - - - - Show &Centre Line - - - - - ' - - - - - Show or hide the centre line - - - - - Toggle All Time Rulers - - - - - Show &No Overlays - - - - - 0 - - - - - Show &Minimal Overlays - - - - - 9 - - - - - 8 - - - - - Show &All Overlays - - - - - &Export Audio Data... - - - - - Export audio from selection into a data file - - - - - # - - - - - Show or hide all time rulers - - - - - Hide times, layer names, and scale - - - - - Show times and basic scale - - - - - Show times, layer names, and scale - - - - - Show &Zoom Wheels - - - - - Z - - - - - Show thumbwheels for zooming horizontally and vertically - - - - - Show Property Bo&xes - - - - - X - - - - - Show the layer property boxes at the side of the main window - - - - - Show Status &Bar - - - - - Show context help information in the status bar at the bottom of the window - - - - - Show La&yer Summary - - - - - Y - - - - - Open a window displaying the hierarchy of panes and layers in this session - - - - - Show Acti&vity Log - - - - - Open a window listing interactions and other events - - - - - Go Full-Screen - - - - - F11 - - - - - Expand the pane area to the whole screen - - - - - &Pane - - - - - Managing Panes and Layers - - - - - Add &New Pane - - - - - N - - - - - Add a new pane containing only a time ruler - - - - - Add New %1 Layer - - - - - Add a new empty layer of type %1 - - - - - T - - - - - Add &Waveform - - - - - W - - - - - Add a new pane showing a waveform view - - - - - Shift+W - - - - - Add a new layer showing a waveform view - - - - - Add Spectro&gram - - - - - G - - - - - Add a new pane showing a spectrogram - - - - - Shift+G - - - - - Add a new layer showing a spectrogram - - - - - Add &Melodic Range Spectrogram - - - - - M - - - - - Add a new pane showing a spectrogram set up for an overview of note pitches - - - - - Shift+M - - - - - Add a new layer showing a spectrogram set up for an overview of note pitches - - - - - Add Pea&k Frequency Spectrogram - - - - - K - - - - - Add a new pane showing a spectrogram set up for tracking frequencies - - - - - Shift+K - - - - - Add a new layer showing a spectrogram set up for tracking frequencies - - - - - Add Spectr&um - - - - - U - - - - - Add a new pane showing a frequency spectrum - - - - - Shift+U - - - - - Add a new layer showing a frequency spectrum - - - - - &All Channels Mixed - - - - - &All Channels - - - - - Channel &%1 - - - - - %1: %2 - - - - - Switch to Previous Pane - - - - - [ - - - - - Make the next pane up in the pane stack current - - - - - Switch to Next Pane - - - - - ] - - - - - Make the next pane down in the pane stack current - - - - - &Delete Pane - - - - - Ctrl+Shift+D - - - - - Delete the currently active pane - - - - - Add &Time Ruler - - - - - Add a new layer showing a time ruler - - - - - Add &Existing Layer - - - - - Add S&lice of Layer - - - - - &Rename Layer... - - - - - R - - - - - Rename the currently active layer - - - - - Edit Layer Data - - - - - E - - - - - Edit the currently active layer as a data grid - - - - - &Delete Layer - - - - - Ctrl+D - - - - - Delete the currently active layer - - - - - &Recent Transforms - - - - - %1 by Category - - - - - - Unclassified - - - - - %1 by Plugin Name - - - - - %1 by Maker - - - - - - Unknown - - - - - - [\(<].*$ - - - - - - %1... - - - - - Find a Transform... - - - - - Search for a transform from the installed plugins, by name or description - - - - - Ctrl+M - - - - - &Help - - - - - Help - - - - - &Help Reference - - - - - F1 - - - - - &Key and Mouse Reference - - - - - F2 - - - - - Ctrl+R - - - - - Re-open - - - - - Re-open the current or most recently opened file - - - - - Standard Waveform - - - - - Choose Default Template... - - - - - Ctrl+T - - - - - Repeat Transform - - - - - Re-select the most recently run transform - - - - - Playback and Transport Controls - - - - - Play&back - - - - - Playback - - - - - Playback Toolbar - - - - - Rewind to Start - - - - - Home - - - - - Rewind to the start - - - - - + Edit items in layer + + + + + Edit Tool Mouse Actions + + + + + Move + + + + + Click left button on an item or selected region and drag to move + + + - Rewind - - - - - PgUp - - - - - Rewind to the previous time instant or time ruler notch - - - - - Rewind to Similar Point - - - - - Shift+PgUp - - - - - Rewind to the previous similarly valued time instant - - - - - Play / Pause - - - - - Space - - - - - Start or stop playback from the current position - - - - - - Fast Forward - - - - - PgDown - - - - - Fast-forward to the next time instant or time ruler notch - - - - - Fast Forward to Similar Point - - - - - Shift+PgDown - - - - - Fast-forward to the next similarly valued time instant - - - - - Fast Forward to End - - - - - End - - - - - Fast-forward to the end - - - - - Play Mode Toolbar - - - - - Constrain Playback to Selection - - - - - s - - - - - Constrain playback to the selected regions - - - - - Loop Playback - - - - - l - - - - - Loop playback - - - - - Solo Current Pane - - - - - o - - - - - Solo the current pane during playback - - - - - Align File Timelines - - - - - Treat multiple audio files as versions of the same work, and align their timelines - - - - - Speed Up - - - - - Ctrl+PgUp - - - - - Time-stretch playback to speed it up without changing pitch - - - - - Slow Down - - - - - Ctrl+PgDown - - - - - Time-stretch playback to slow it down without changing pitch - - - - - Restore Normal Speed - - - - - Ctrl+Home - - - - - Restore non-time-stretched playback - - - - - Edit Toolbar - - - - - Tool Selection - - - - - Tools Toolbar - - - - - - Navigate - - - - - 1 - - - - - Select - - - - - 2 - - - - - Select ranges - - - - - Edit - - - - - 3 - - - - - Edit items in layer - - - - + Draw - + 4 - + Draw new items in layer - + + Draw Tool Mouse Actions + + + + + Click left button and drag to create new item + + + + + Erase - + 5 - + Erase items from layer - + + Erase Tool Mouse Actions + + + + + Click left button on an item to remove it from the layer + + + + Measure - + 6 - + Make measurements in layer - + + Measure Tool Mouse Actions + + + + + Measure Area + + + + + Click left button and drag to measure a rectangular area + + + + + Measure Item + + + + + Click left button and drag to measure extents of an item or shape + + + + &Delete Current Measurement - + Delete the measurement currently under the mouse pointer - + Fast Forward to Next Instant - + Fast forward to the next time instant in the current layer - + Rewind to Previous Instant - + Rewind to the previous time instant in the current layer - + Fast Forward to Next Point - + Fast forward to the next point in the current layer - + Rewind to Previous Point - + Rewind to the previous point in the current layer - + Fast forward - + No audio file loaded. - + %1Hz (resampling to %2Hz) - - - - - - - - + + + + + + + Failed to open file - - - + + + <b>File open failed</b><p>Audio file "%1" could not be opened - + + 1. %2 + + + + + %1. %2 + + + + Select audio file to export - + Which audio file do you want to export from? - + Export the selected region only - + Export the whole audio file - - - + + + Select region to export - + Which region from the original audio file do you want to export? - + Export the selected regions into separate files - + Multiple regions of the original audio file are selected. What do you want to export? - + Fragment file %1 already exists, aborting - + Export multiple audio files - + Export audio to "%1" - - + + Failed to write file - + <b>File open failed</b><p>Layer file %1 could not be opened. - - - - + + + + + + <b>Audio required</b><p>Unable to load layer data from "%1" without an audio file.<br>Please load at least one audio file before importing annotations. + + + + + Sorry, cannot export this layer type to RDF (supported types are: region, note, text, time instants, time values) + + + + + Enter template name + + + + + Please enter a name for the saved template: + + + + + Set as default template for future audio files + + + + + Template file exists + + + + + <b>Template file exists</b><p>The template "%1" already exists.<br>Overwrite it? + + + + + http://www.sonicvisualiser.org/doc/reference/%1/en/ + + + + + <br>With Serd and Sord RDF parser and store &copy; David Robillard + + + + + <br>With Dataquay Qt/RDF library &copy; Chris Cannam + + + + + Newer version available + + + + + Failed to open file %1 for writing + + + + + Abandon the current %1 session and start a new one + + + + + &Import More Audio... + + + + + Import an extra audio file into a new pane + + + + + Replace &Main Audio... + + + + + Replace the main audio file of the session with a different file + + + + + Open &Recent + + + + + Save the current session into a %1 session file + + + + + Save the current session into a new %1 session file + + + + + Apply Session Template + + + + + Export Session as Template... + + + + + Manage Exported Templates + + + + + Exit %1 + + + + + Open the %1 reference manual + + + + + Open a window showing the keystrokes you can use in %1 + + + + + %1 on the &Web + + + + + Open the %1 website + + + + + &About %1 + + + + + Show information about %1 + + + + + Export the selected regions into a single file + + + + + Export the whole file + + + + + Can't export non-note layers to MIDI + + + + + Export layer to "%1" + + + + + Export the whole pane (%1x%2 pixels) + + + + + Export the visible area only (%1x%2 pixels) + + + + + Export the selection extent (%1x%2 pixels) + + + + + Export the selection extent + + + + + Which region of the current pane do you want to export as an image? + + + + + Note: the whole pane is too wide to be exported as a single image. + + + + + Failed to save image file + + + + + Failed to save image file %1 + + + + + <b>File open failed</b><p>File "%1" could not be opened + + + + + Open Location + + + + + Please enter the URL of the location to open: + + + + + + - <b>Audio required</b><p>Unable to load layer data from "%1" without an audio file.<br>Please load at least one audio file before importing annotations. - - - - - Sorry, cannot export this layer type to RDF (supported types are: region, note, text, time instants, time values) - - - - - Enter template name - - - - - Please enter a name for the saved template: - - - - - Set as default template for future audio files - - - - - Template file exists - - - - - <b>Template file exists</b><p>The template "%1" already exists.<br>Overwrite it? - - - - - %1: %1 - - - - - http://www.sonicvisualiser.org/doc/reference/%1/en/ - - - - - <br>With Serd and Sord RDF parser and store &copy; David Robillard - - - - - <br>With Dataquay Qt/RDF library &copy; Chris Cannam - - - - - Newer version available - - - - - <h3>Newer version available</h3><p>You are using version %1 of Sonic Visualiser, but version %3 is now available.</p><p>Please see the <a href="http://sonicvisualiser.org/">Sonic Visualiser website</a> for more information.</p> - - - - - Failed to open file %1 for writing - - - - - Abandon the current %1 session and start a new one - - - - - &Import More Audio... - - - - - Import an extra audio file into a new pane - - - - - Replace &Main Audio... - - - - - Replace the main audio file of the session with a different file - - - - - Open &Recent - - - - - Save the current session into a %1 session file - - - - - Save the current session into a new %1 session file - - - - - Apply Session Template - - - - - Export Session as Template... - - - - - Manage Exported Templates - - - - - Exit %1 - - - - - Open the %1 reference manual - - - - - Open a window showing the keystrokes you can use in %1 - - - - - %1 on the &Web - - - - - Open the %1 website - - - - - &About %1 - - - - - Show information about %1 - - - - - Export the selected regions into a single file - - - - - Export the whole file - - - - - Can't export non-note layers to MIDI - - - - - Export layer to "%1" - - - - - Export the whole pane (%1x%2 pixels) - - - - - Export the visible area only (%1x%2 pixels) - - - - - Export the selection extent (%1x%2 pixels) - - - - - Export the selection extent - - - - - Which region of the current pane do you want to export as an image? - - - - - Note: the whole pane is too wide to be exported as a single image. - - - - - Failed to save image file - - - - - Failed to save image file %1 - - - - - <b>File open failed</b><p>Session file "%1" could not be opened - - - - - <b>File open failed</b><p>File "%1" could not be opened - - - - - Open Location - - - - - Please enter the URL of the location to open: - - - - - - - Failed to open location - + <b>Open failed</b><p>URL "%1" could not be opened - + <b>Open failed</b><p>File or URL "%1" could not be opened - - + + Failed to open dropped URL - + <b>Open failed</b><p>Dropped URL "%1" could not be opened - + Export image to "%1" - + Session modified - + <b>Session modified</b><p>The current session has been modified.<br>Do you want to save it? - + Close the current session and create a new one - + Add this data to the current session - + Select target for import - + <b>Select a target for import</b><p>This RDF document refers to one or more audio files.<br>You already have an audio waveform loaded.<br>What would you like to do with the new data? - - + + Failed to save file - - + + <b>Save failed</b><p>Session file "%1" could not be saved. - + Save session as "%1" - + + Multiplex all of the above + + + + Rename Layer - + New name for this layer: - + Playback speed: Normal - - Playback speed: %1%2% - - - - + Selection: %1 to %2 (duration %3) - + Visible: %1 to %2 (duration %3) - + Sample rate mismatch - + <b>Wrong sample rate</b><p>The sample rate of this audio file (%1 Hz) does not match the current playback rate (%2 Hz).<p>The file will play at the wrong speed and pitch.<p>Change the <i>Resample mismatching files on import</i> option under <i>File</i> -> <i>Preferences</i> if you want to alter this behaviour. - - + + Audio processing overload - + <b>Overloaded</b><p>Audio effects plugin auditioning has been disabled due to a processing overload. - + <b>Overloaded</b><p>Audio playback speed processing has been reduced to a single channel, due to a processing overload. - + + Problems loading plugins + + + + Add Point - + Reset Counters - - + + Failed to generate layer - - <b>Layer generation failed</b><p>Failed to generate derived layer.<p>The layer transform "%1" failed:<p>%2 - - - - - <b>Layer generation failed</b><p>Failed to generate a derived layer.<p>The layer transform "%1" failed.<p>No error information is available. - - - - - + + Warning - - + + Failed to regenerate layer - + <b>Layer generation failed</b><p>Failed to regenerate derived layer "%1" using new data model as input.<p>The layer transform "%2" failed:<p>%3 - + <b>Layer generation failed</b><p>Failed to regenerate derived layer "%1" using new data model as input.<p>The layer transform "%2" failed.<p>No error information is available. - + <b>Warning when regenerating layer</b><p>When regenerating the derived layer "%1" using new data model as input:<p>%2 - + Failed to calculate alignment - + <b>Alignment calculation failed</b><p>Failed to calculate an audio alignment using transform "%1":<p>%2 - + Adjust the master playback level - + Adjust the master playback speed - + http://www.sonicvisualiser.org/ - + Release %1 : Revision %2 - + Release %1 - + Unreleased : Revision %1 - + <h3>About Sonic Visualiser</h3> - + <p>Sonic Visualiser is a program for viewing and exploring audio data for semantic music analysis and annotation.<br><a href="http://www.sonicvisualiser.org/">http://www.sonicvisualiser.org/</a></p> - + <p><small>%1 : %2 configuration</small></p> - + Debug - + Release - + With Qt v%1 &copy; Nokia Corporation - + <br>With JACK audio output library v%1 &copy; Paul Davis and Jack O'Quin - + <br>With JACK audio output library &copy; Paul Davis and Jack O'Quin - + <br>With PortAudio audio output library &copy; Ross Bencina and Phil Burk - + <br>With PulseAudio audio output library v%1 &copy; Lennart Poettering and Pierre Ossman - + <br>With PulseAudio audio output library &copy; Lennart Poettering and Pierre Ossman - + <br>With Ogg file decoder (oggz v%1, fishsound v%2) &copy; CSIRO Australia - + <br>With Ogg file decoder &copy; CSIRO Australia - + <br>With MAD mp3 decoder v%1 &copy; Underbit Technologies Inc - + <br>With MAD mp3 decoder &copy; Underbit Technologies Inc - + <br>With libsamplerate v%1 &copy; Erik de Castro Lopo - + <br>With libsamplerate &copy; Erik de Castro Lopo - + <br>With libsndfile v%1 &copy; Erik de Castro Lopo - + <br>With libsndfile &copy; Erik de Castro Lopo - + <br>With FFTW3 v%1 &copy; Matteo Frigo and MIT - + <br>With FFTW3 &copy; Matteo Frigo and MIT - + <br>With Rubber Band v%1 &copy; Chris Cannam - + <br>With Rubber Band &copy; Chris Cannam - + <br>With Vamp plugin support (API v%1, host SDK v%2) &copy; Chris Cannam - + <br>With LADSPA plugin support (API v%1) &copy; Richard Furse, Paul Davis, Stefan Westerfeld - + <br>With DSSI plugin support (API v%1) &copy; Chris Cannam, Steve Harris, Sean Bolton - + <br>With Redland RDF datastore v%1 &copy; Dave Beckett and the University of Bristol - + <br>With Redland RDF datastore &copy; Dave Beckett and the University of Bristol - + <br>With RtMidi &copy; Gary P. Scavone - + <br>With liblo Lite OSC library v%1 &copy; Steve Harris - + <br>With liblo Lite OSC library &copy; Steve Harris - + </small><p><small>The OSC URL for this instance is: "%1" - + With - + Using - + About Sonic Visualiser - + Add %1 Pane @@ -3973,208 +4480,215 @@ MainWindowBase - + %1 (modified) - + (modified) - + Cut - + Paste - - - - + + + + + Add Point - + Add Point at %1 s - + Add Item at %1 s - + Opening file or URL... - + Select target for import - - - + + + + %1: %2 - + + %1: %2 [%3] - - + + Import "%1" - + Opening playlist... - - + + Importing from RDF... - + Opening session... - + Close the current session and start a new one - + Replace the main audio file in this session - + Add the audio file to this session - + <b>Select a target for import</b><p>You already have an audio file loaded.<br>What would you like to do with the new audio file? - + Import audio file "%1" - + Import layer XML file "%1" - + Import MIDI file "%1" - - + + SV XML file read error: %1 - + Import session file "%1" - + Open session template "%1" - - + + Failed to import RDF - + <b>Failed to import RDF</b><p>Importing data from RDF document at "%1" failed: %2</p> - + <b>Failed to import RDF</b><p>No suitable data models found for import from RDF document at "%1"</p> - + Import RDF document "%1" - - + Couldn't open audio device - + <b>No audio available</b><p>Could not open an audio device for playback.<p>Automatic audio device detection failed. Audio playback will not be available during this session.</p> - - <b>No audio available</b><p>Failed to open your preferred audio device ("%1").<p>Audio playback will not be available during this session.</p> - - - - - - + + Recording: %1 + + + + + + Failed to write file - - - + + + <b>Save failed</b><p>Failed to write to file "%1": %2 - + + Import Recorded Audio + + + + Add Pane - + Remove Pane - - + + Delete Pane - + Playing: %1 of %2 (%3 remaining) @@ -4182,77 +4696,77 @@ ModelDataTableDialog - + Data Editor - + Playback Toolbar - + Play Mode Toolbar - + Track Playback - + Toggle tracking of playback position - + Edit Toolbar - + Insert New Item - + Insert - + Insert a new item - + Delete Selected Items - + Delete - + Delete the selected item or items - + Data in Layer - + Find: - + @@ -4260,22 +4774,22 @@ ModelMetadataModel - + Type - + Name - + Maker - + Source @@ -4283,88 +4797,106 @@ ModelTransformerFactory - + %1 <%2> - + %1: %2 + NetworkPermissionTester + + + Welcome to Sonic Visualiser + + + + + <h2>Welcome to Sonic Visualiser!</h2><p><img src=":icons/qm-logo-smaller.png" style="float:right">Sonic Visualiser is a program for viewing and exploring audio data for semantic music analysis and annotation.</p><p>Developed in the Centre for Digital Music at Queen Mary, University of London, Sonic Visualiser is provided free as open source software under the GNU General Public License.</p><p><hr></p><p><b>Before we go on...</b></p><p>Sonic Visualiser would like to make networking connections and open a network port.</p><p>This is to:</p><ul><li> Find information about available and installed plugins;</li><li> Support the use of Open Sound Control, where configured; and</li><li> Tell you when updates are available.</li></ul><p>No personal information will be sent, no tracking is carried out, and all requests happen in the background without interrupting your work.</p><p>We recommend that you allow this, because it makes Sonic Visualiser more useful. But if you do not wish to do so, please un-check the box below.<br></p> + + + + + Allow this + + + + NoteLayer - - - + + + New Point - + Vertical Scale - + Scale Units - + Scale - + Auto-Align - + Linear - + Log - + MIDI Notes - + In progress - - + + No local points - + %1 (%2, %3 Hz) - + %1 Hz (%2, %3) - + %1 %2 - + Time: %1 Pitch: %2 Duration: %3 @@ -4372,7 +4904,7 @@ - + Time: %1 Pitch: %2 Duration: %3 @@ -4380,68 +4912,68 @@ - + Draw Point - + Erase Point - + Drag Point - - + + Edit Point - + Relocate Point - + Change Point Value - + Drag Selection - + Resize Selection - + Delete Selected Points - + Re-align pasted items? - + The items you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? - + Paste - + Record Note @@ -4449,47 +4981,47 @@ NoteModel - + Note - + Time - + Frame - + Pitch - + Duration - + Level - + Label - + Unknown - + Edit Data @@ -4497,7 +5029,7 @@ OggVorbisFileReader - + Decoding %1... @@ -4505,12 +5037,12 @@ Overview - + Overview - + Click and drag to navigate; double-click to jump @@ -4518,465 +5050,300 @@ Pane - + Horizontal Zoom - + Vertical Zoom - + Reset zoom to default - + Some lengthy prefix: - + Reference - - + + Unaligned - + Aligning: %1% - + Aligned - + %1 - %2 - - + + +%1 - + (R) - + (X) - + %1 / %2Hz%3 - - + + Zoom - + Zoom In - + Wheel Up - + Zoom Out - + Wheel Down - + General Pane Mouse Actions - + Wheel - + Zoom in or out in time axis - + Scroll - + Ctrl+Wheel - + Scroll rapidly left or right in time axis - + Zoom Vertically - + Shift+Wheel - + Zoom in or out in the vertical axis - + Scroll Vertically - + Alt+Wheel - + Scroll up or down in the vertical axis - - + Navigate - + Middle - + Click middle button and drag to navigate with any tool - - + Relocate - + Double-Click Middle - + Double-click middle button to relocate with any tool - + Menu - + Right - + Show pane context menu - - Navigate Tool Mouse Actions - - - - - - - - - Left - - - - - Click left button and drag to move around - - - - - - Zoom to Area - - - - - - - Shift+Left - - - - - - Shift-click left button and drag to zoom to a rectangular area - - - - - - - - Double-Click Left - - - - - Double-click left button to jump to clicked location - - - - - - Edit - - - - - - Double-click left button on an item to edit it - - - - - Select Tool Mouse Actions - - - - - Select - - - - - Click left button and drag to select region; drag region edge to resize - - - - - Multi Select - - - - - Ctrl+Left - - - - - Cmd-click left button and drag to select an additional region - - - - - Ctrl-click left button and drag to select an additional region - - - - - Fine Select - - - - - Shift-click left button and drag to select without snapping to items or grid - - - - - Edit Tool Mouse Actions - - - - - Move - - - - - Click left button on an item or selected region and drag to move - - - - - Draw Tool Mouse Actions - - - - - Draw - - - - - Click left button and drag to create new item - - - - - Measure Tool Mouse Actions - - - - - Measure Area - - - - - Click left button and drag to measure a rectangular area - - - - - Measure Item - - - - - Click left button and drag to measure extents of an item or shape - - - - + Enter new range - + New vertical display range, from %1 to %2 %4: - + Drag Selection - + Resize Selection - + Click and drag to navigate - + Click and drag to select a range; hold Shift to avoid snapping to items; hold Cmd for multi-select; middle-click and drag to navigate - + Click and drag to select a range; hold Cmd for multi-select; middle-click and drag to navigate - + Click and drag to select a range; hold Shift to avoid snapping to items; hold Ctrl for multi-select; middle-click and drag to navigate - + Click and drag to select a range; hold Ctrl for multi-select; middle-click and drag to navigate - + Click and drag to move the selection boundary - + Click and drag to select a range; hold Shift to avoid snapping to items; middle-click to navigate - + Click and drag to select a range; middle-click and drag to navigate - + Click to add a new item in the active layer - + Click to erase an item from the active layer - + Click and drag an item in the active layer to move it; hold Shift to override initial resistance - + Click and drag to move all items in the selected range - + Click and drag to adjust the visible range of the vertical scale - + Click and drag to adjust the vertical zoom level - + Click and drag to adjust the horizontal zoom level - + Reset horizontal and vertical zoom levels to their defaults @@ -4984,45 +5351,40 @@ PlayParameterRepository - + Adjust Playback Parameters - + Change Playback Mute State - + Change Playback Gain - + Change Playback Pan - - Change Playback Plugin - - - - - Configure Playback Plugin + + Change Playback Sample PluginParameterBox - + This plugin has no adjustable parameters. - + Program @@ -5030,127 +5392,127 @@ PluginParameterDialog - - + + Plugin Parameters - + Name: - + Version: - + Maker: - + Copyright: - + Output: - + Input Material - + Restrict to selection extents - + Channels - + Processing - - + + Advanced >> - + Channel mismatch - + This plugin requires at least %1 input channels, but only %2 %3 available. The plugin probably will not work correctly. - + are - + is - + This plugin accepts no more than %1 input channels, but %2 are available. Only the first %3 will be used. - + This plugin only has a single channel input, but the source has %1 channels. - + Use mean of source channels - + Use channel %1 only - + Window size: - + Audio frames per block: - + Window increment: - + Window shape: - + Advanced << @@ -5158,214 +5520,254 @@ Preferences - + Spectrogram y-axis interpolation: - + Spectrogram x-axis interpolation: - + Frequency of concert A - + Property box layout - + Spectral analysis window shape - + Playback resampler type - + + Normalise audio signal when reading from audio file + + + + Omit temporaries from Recent Files menu - + Resample mismatching files on import - + + Single fixed sample rate to resample all files to + + + + Location for cache file directory - + Background colour preference - - Time display format - - - - + + Time display precision + + + + + Use hours:minutes:seconds format + + + + + Label middle C as + + + + Font size for text overlays - + Show splash screen on startup - + Show boxes for all panes - + Show box for current pane only - + Rectangular - + Triangular - + Hamming - + Hann - + Blackman - + Gaussian - + Parzen - + Nuttall - + Blackman-Harris - + Fastest - + Standard - + Highest quality - - + + None - - + + Linear interpolation - + 4 x Oversampling - + 4 x Oversampling with interpolation - + Follow desktop theme - + Dark background - + Light background - + Standard (to millisecond) - + High resolution (to microsecond) - + 24 FPS - + 25 FPS - + 30 FPS - + 50 FPS - + 60 FPS - + + C0 - middle of octave scale + + + + + C3 - common MIDI sequencer convention + + + + + C4 - ASA American standard + + + + + C5 - used in Cakewalk and others + + + + Preferences @@ -5373,132 +5775,155 @@ PreferencesDialog - + Sonic Visualiser: Application Preferences - + Apply - + <home directory> - + Follow system locale - + Russian - + British English - + American English - + Czech - - - - - - - - - + - + + + + + + + + + + + + %1: - + User interface language - - Playback audio device: - - - - + + Allow network usage + + + + &General - + + Draw layers at Retina resolution: + + + + + Default spectrogram colour: + + + + + Default melodic spectrogram colour: + + + + + Default colour 3D plot colour: + + + + &Appearance - + Anal&ysis - + Default session template for audio files: - + Standard Waveform - + Session &Template - + OK - + Cancel - + Select a directory to create cache subdirectory in - + Preferences - + <b>Restart required</b><p>One or more of the application preferences you have changed may not take full effect until Sonic Visualiser is restarted.</p><p>Please exit and restart the application now if you want these changes to take effect immediately.</p> - + Preferences Changed - + Some preferences have been changed but not applied. Apply them before closing? @@ -5507,7 +5932,7 @@ ProgressDialog - + Cancel @@ -5515,78 +5940,83 @@ PropertyBox - + Show - + Play - + Playback Gain - + dB - - + + Playback Pan / Balance - + Add New Colour... - + Name New Colour - + Enter a name for the new colour: - + Prefer black background for this colour - + + Set playback clip: + + + + (current value: %1%2) - + (current value: %1) - + Toggle Visibility of %1 - + Toggle Playback of %1 - + Toggle %1 property of %2 - + Adjust %1 property of %2%3 @@ -5594,37 +6024,37 @@ PropertyContainer - + yes - + on - + true - + no - + off - + false - + Set %1 Property @@ -5632,12 +6062,12 @@ PropertyStack - + Change Layer Visibility - + Click to change the current active layer @@ -5645,7 +6075,7 @@ QApplication - + Sonic Visualiser is a program for viewing and exploring audio data for semantic music analysis and annotation. @@ -5661,7 +6091,7 @@ - + Sonic Visualiser @@ -5696,22 +6126,20 @@ QFile - - - + + File "%1" does not exist - - - + + Failed to open file "%1" - - + + File or URL "%1" could not be retrieved @@ -5719,26 +6147,55 @@ QMessageBox - - + + Failed to open file - + File or URL "%1" could not be opened - + <b>Audio required</b><p>Please load at least one audio file before importing annotation data + QObject + + + <b>Failed to load plugins</b><p>Failed to load one or more plugin libraries:</p> + + + + + + Failed to load library + + + + + Failed to query plugins from library after loading + + + + + Unknown failure + + + + + Success: internal error? + + + + QuickTimeFileReader - + Decoding %1... @@ -5746,17 +6203,17 @@ RDFImporter - + Importing audio referenced in RDF... - + Importing dense signal data from RDF... - + Importing event data from RDF... @@ -5764,7 +6221,7 @@ RangeInputDialog - + to @@ -5772,87 +6229,95 @@ RangeSummarisableTimeValueModel - + Range-Summarisable Time-Value + ReadOnlyWaveFileModel + + + Wave File + + + + RegionLayer - - + + New Region - + Vertical Scale - + Scale Units - + Plot Type - + Scale - + Bars - + Segmentation - + Auto-Align - + Equal Spaced - + Linear - + Log - + In progress - - + + No local points - + %1 %2 - + Time: %1 Value: %2 Duration: %3 @@ -5860,7 +6325,7 @@ - + Time: %1 Value: %2 Duration: %3 @@ -5868,63 +6333,63 @@ - + Draw Region - + Erase Region - + Drag Region - - + + Edit Region - + Relocate Region - + Change Point Value - + Drag Selection - + Resize Selection - + Delete Selected Points - + Re-align pasted items? - + The items you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? - + Paste @@ -5932,42 +6397,42 @@ RegionModel - + Region - + Time - + Frame - + Value - + Duration - + Label - + Unknown - + Edit Data @@ -5975,29 +6440,21 @@ RemoveLayerCommand - + Delete %1 Layer - ResamplingWavFileReader - - - Resampling %1... - - - - SVFileReader - - + + (derived model in SV-XML) - + Opening file or URL... @@ -6005,12 +6462,12 @@ SingleColourLayer - + Colour - + <unknown> @@ -6018,13 +6475,13 @@ SliceLayer - - + + %1 - %2 - + Time: %1 - %2 Range: %3 samples (%4) Bin: %5 @@ -6032,139 +6489,139 @@ - + First - - + + Mean - - + + Peak - + Time: %1 - %2 Range: %3 samples (%4) - + 0dB - + -Inf - + x10 - + Plot Type - - + + Scale - + Normalize Normalise - + Threshold - + Gain - + Sampling Mode - - + + Linear - + Meter - + Rev Log - - + + dB - + Any - + Bin Scale - + Bins - - + + Log - + Absolute - + Lines - + Steps - + Blocks - + Colours @@ -6172,22 +6629,22 @@ SparseModel - + Sparse - + Edit Data - + Insert Data Point - + Delete Data Point @@ -6195,7 +6652,7 @@ SparseModel::AddPointCommand - + Add Point @@ -6203,7 +6660,7 @@ SparseModel::DeletePointCommand - + Delete Point @@ -6211,7 +6668,7 @@ SparseModel::RelabelCommand - + Re-Label Point @@ -6219,32 +6676,32 @@ SparseOneDimensionalModel - + Sparse 1-D - + Time - + Frame - + Label - + Unknown - + Edit Data @@ -6252,37 +6709,37 @@ SparseTimeValueModel - + Sparse Time-Value - + Time - + Frame - + Value - + Label - + Unknown - + Edit Data @@ -6290,7 +6747,7 @@ SparseValueModel - + Sparse Value @@ -6298,363 +6755,366 @@ SpectrogramLayer - - + + Colour - + Colour Scale - + Window Size - + Window Overlap - Normalize Columns - Normalise Columns - - - + Normalise Columns + + Normalize Visible Area - Normalise Visible Area - - - + Normalise Visible Area + + + + Normalization + + + + Bin Display - + Threshold - + Gain - + Colour Rotation - + Min Frequency - + Max Frequency - + Frequency Scale - + Smoothing - + Bins - + Window - + Scale - - + + Linear - + Meter - + dBV^2 - + dBV - + Phase - - + + None - + 25 % - + 50 % - + 75 % - + 87.5 % - + 93.75 % - + No min - + 10 Hz - + 20 Hz - + 40 Hz - + 100 Hz - + 250 Hz - - + + 500 Hz - - + + 1 KHz - - + + 4 KHz - + 10 KHz - + 1.5 KHz - + 2 KHz - + 6 KHz - + 8 KHz - + 12 KHz - + 16 KHz - + No max - + Log - + All Bins - + Peak Bins - + Frequencies - + <unknown> - - + + dB - + FFT cache failed - + Failed to create the FFT model for this spectrogram. There may be insufficient memory or disc space to continue. - + Peak Frequency: %1 - %2 Hz - + Peak Frequency: %1 Hz - + Peak Pitch: %3 - %4 - + Peak Pitch: %2 - + Time: %1 - %2 - + Time: %1 - + %1Bin Frequency: %2 - %3 Hz %4Bin Pitch: %5 - %6 - + %1Bin Frequency: %2 Hz %3Bin Pitch: %4 - - + + -Inf - + dB: %1 - %2 - + dB: %1 - + Phase: %1 - %2 - + Phase: %1 - + 43Hz - + %1Hz @@ -6662,90 +7122,90 @@ SpectrumLayer - + Window Size - + Window Overlap - + Show Peak Frequencies - + Window - + Bins - + None - + 25 % - + 50 % - + 75 % - + 87.5 % - + 93.75 % - - - + + + %1 - %2 - + %1 - %2 Hz - + %1 Hz - - + + -Inf - + %1 - + %1 Bin: %2 (%3) %4 value: %5 @@ -6753,22 +7213,22 @@ - + First - + Mean - + Peak - + %1 Bin: %2 (%3) Value: %4 @@ -6779,106 +7239,119 @@ SubdividingMenu - + %1 - %2 + Surveyer + + + Yes! Take me to the survey + + + + + No, thanks + + + + TextLayer - - + + Empty Label - - + + <no text> - + In progress - + Time: %1 Height: %2 Label: %3 - - + + Enter label - - + + Please enter a new label: - + Erase Point - + Drag Label - + Move Label - + Move Label Horizontally - + Move Label Vertically - + Drag Selection - + Resize Selection - + Delete Selection - + Re-align pasted items? - + The items you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? - + Paste - + New Point @@ -6886,37 +7359,37 @@ TextModel - + Text - + Time - + Frame - + Height - + Label - + Unknown - + Edit Data @@ -6924,39 +7397,39 @@ Thumbwheel - + %1: %2%3 - + %2%3 - + New value for %1, from %2 to %3 %4: - + New value for %1, from %2 to %3: - + Enter a new value from %1 to %2 %3: - - + + Enter a new value from %1 to %2: - - + + Enter new value @@ -6964,105 +7437,105 @@ TimeInstantLayer - - + + New Point - + Plot Type - + Instants - + Segmentation - + In progress - + No local points - + Time: %1 No label - + Time: %1 Label: %2 - + Draw Point - + Add Point at %1 s - + Erase Point - + Drag Point - + Move Point to %1 s - + Edit Point - + Drag Selection - + Resize Selection - + Delete Selection - + Re-align pasted instants? - + The instants you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? - + Paste @@ -7070,207 +7543,227 @@ TimeValueLayer - - - + + + New Point - - + + Plot Type - + Vertical Scale - + Scale Units - + Draw Segment Division Lines - + Show Derivative - + Scale - + Points - + Stems - + Connected Points - + Lines - + Curve - + Segmentation - + + Discrete Curves + + + + Auto-Align - + Linear - + Log - + +/-1 - + In progress - + No local points - + + %1 Hz (%2, %3) + + + + + %1 %2 + + + + + %1 + + + + Time: %1 -Value: %2%3 +Value: %2 No label - + Time: %1 -Value: %2%3 +Value: %2 Label: %4 - + Draw Point - + Erase Point - + Drag Point - - + + Edit Point - + Relocate Point - + Change Point Value - + Drag Selection - + Resize Selection - + Delete Selected Points - + Re-align pasted items? - + The items you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? - + Paste - + The items you are pasting do not have values. What values do you want to use for these items? - + Some of the items you are pasting do not have values. What values do you want to use for these items? - + Zero for all items - + Choose value calculation - + Select cycle size - + Cycle size: @@ -7278,27 +7771,27 @@ TipDialog - + Tip of the Day - + Show tip on startup - + << Previous - + Next >> - + Close @@ -7306,136 +7799,136 @@ TransformFactory - + [\(<].*$ - - + + <unknown maker> - - + + Extract features using "%1" plugin (from %2) - - + + Extract features using "%1" output of "%2" plugin (from %3) - - + + %1 using "%2" plugin (from %3) - - + + %1 using "%2" output of "%3" plugin (from %4) - + Analysis - + Generator - - + + Other - - + + %1: %2 - + %1: Output %2 - + Extract "%1" data output from "%2" effect plugin (from %3) - + Extract data output %1 from "%2" effect plugin (from %3) - + Effects Data - + Effects - + Transform audio signal with "%1" effect plugin (from %2) - + Generate audio signal using "%1" plugin (from %2) - - + + Plugin type - - + + Category - - + + System Identifier - - + + Name - - + + Description - - + + Maker - - + + Units @@ -7443,64 +7936,64 @@ TransformFinder - + Find a Transform - + Find: - + <br>&nbsp;&nbsp;No results found - - + + Up - - + + Down - + <p>Type some text into the search box to search the descriptions of:<ul><li>All currently installed <a href="http://www.vamp-plugins.org/">Vamp</a> audio feature extraction plugins</li><li>All currently installed <a href="http://www.ladspa.org/">LADSPA</a> audio effects plugins</li><li>Vamp plugins that are not currently installed but that have descriptions published via the semantic web</li></ul> - + <b>Unable to retrieve published descriptions from network!</b> - + <b>No plugins are currently installed!</b> - + <p>%1<br>Perhaps the network connection is down, services are responding too slowly, or a processing problem has occurred.<br>Only the descriptions of installed plugins will be searched. - + <p>%1<br>Only the published descriptions of Vamp feature extraction plugins will be searched. - + <p>%1<br>%2<br>Perhaps the network connection is down, or services are responding too slowly.<br>No search results will be available. - + Found %n description(s) containing <b>%1</b>, showing the first %2 only Found %n description containing <b>%1</b>, showing the first %2 only @@ -7508,7 +8001,7 @@ - + Found %n description(s) containing <b>%1</b> Found %n description containing <b>%1</b> @@ -7516,118 +8009,188 @@ - + <i> (not installed)</i> - + %1%2<br><small> - - + + </small> - + <b>%1</b>%2<br> - - + + <small>%1</small> - + <small> - + <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&mdash; Plugin type: %1 - + <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&mdash; Category: %1 - + <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&mdash; System identifier: %1 - + <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&mdash; More information: <a href="%1">%1</a> + UnitConverter + + + Pitch + + + + + cents + + + + + In 12-tone Equal Temperament: + + + + + + = + + + + + + + + + + + Piano note + + + + + in octave + + + + + MIDI pitch + + + + + Note that only pitches in the range 0 to 127 are valid in the MIDI protocol. + + + + + Tempo + + + + + Beat period + + + + + at + + + + + With concert-A tuning frequency at %1 Hz, and middle C residing in octave %2. +(These can be changed in the application preferences.) + + + + View - + Global Scroll - + Global Zoom - + Follow Playback - + Scroll - + Page - + Off - + <unknown> - + Layer rendering error - + Alignment - + Waiting for layers to be ready... - - + + Cancel - + Rendering image... @@ -7635,97 +8198,102 @@ ViewManager - + Clear Selection - + Select Multiple Regions - + Select Region - + Enter Navigate mode - + Enter Select mode - + Enter Edit mode - + Enter Draw mode - + Enter Erase mode - + Enter Measure mode - + + Enter NoteEdit mode + + + + Switch on Loop mode - + Switch off Loop mode - + Switch on Play Selection mode - + Switch off Play Selection mode - + Switch on Play Solo mode - + Switch off Play Solo mode - + Switch on Alignment mode - + Switch off Alignment mode - + Scroll to %1 - + Zoom to %n sample(s) per pixel @@ -7733,126 +8301,118 @@ - + Change overlay level - WaveFileModel - - - Wave File - - - - WaveformLayer - - + + Scale - + Gain - + Normalize Visible Area Normalise Visible Area - + Channels - + Linear - + Meter - - + + dB - + Separate - + Mean - + Butterfly - + Time: %1 - %2 - + Time: %1 - + Level: - + Left: - + Right: - + Channel %1 - + %1 %2 - %3 (%4 dB peak) - + %1 %2 (%3 dB peak) - - - + + + 0dB - - - + + + -Inf @@ -7860,12 +8420,12 @@ WindowShapePreview - + V / time - + dB / freq @@ -7873,7 +8433,7 @@ WritableWaveFileModel - + Writable Wave File diff -r ba6f95b1ff7c -r 5e6e1e074080 i18n/sonic-visualiser_en_US.qm Binary file i18n/sonic-visualiser_en_US.qm has changed diff -r ba6f95b1ff7c -r 5e6e1e074080 i18n/sonic-visualiser_en_US.ts --- a/i18n/sonic-visualiser_en_US.ts Wed Jul 15 12:27:40 2015 +0100 +++ b/i18n/sonic-visualiser_en_US.ts Wed Apr 20 12:06:28 2016 +0100 @@ -1,20 +1,20 @@ - + ActivityLog - + Activity Log - + <p>Activity Log lists your interactions and other events within %1.</p> - + %1: %2 @@ -22,7 +22,7 @@ AddLayerCommand - + Add %1 Layer @@ -30,7 +30,7 @@ AggregateWaveModel - + Aggregate Wave @@ -38,7 +38,7 @@ AlignmentModel - + Alignment @@ -46,17 +46,17 @@ AudioCallbackPlaySource - + Play from %1 - + Stop at %1 - + Change time-stretch factor to %1 @@ -64,140 +64,112 @@ AudioDial - + %1: %2%3 - + %2%3 - + New value for %1, from %2 to %3 %4: - + New value for %1, from %2 to %3: - + Enter a new value from %1 to %2 %3: - - + + Enter a new value from %1 to %2: - - + + Enter new value - AudioTargetFactory - - - (auto) - - - - - JACK Audio Connection Kit - - - - - PulseAudio Server - - - - - Core Audio Device - - - - - Default Soundcard Device - - - - BZipFileDevice - + File is already open - + Append mode not supported - + File access mode not specified - + Read and write modes both specified - + Failed to open file for writing - + Failed to open bzip2 stream for writing - + Failed to open file for reading - + Failed to open bzip2 stream for reading - + Internal error (open for neither read nor write) - + File not open - + bzip2 stream write close error - + bzip2 stream read close error - + Internal error (close for neither read nor write) - + bzip2 stream read error @@ -205,7 +177,7 @@ BundleCommand - + %1 (%n change(s)) %1 (%n change) @@ -216,7 +188,8 @@ CSVFileWriter - + + Failed to open file %1 for writing @@ -224,88 +197,98 @@ CSVFormatDialog - + Select Data Format - + Please select the correct data format for this file. - - + + <ignore> - + Values - + (%1 more) - + Time - + End time - + Duration - + Value - + + Pitch + + + + Label - + Timing is specified: - + Explicitly, in seconds - + + Explicitly, in milliseconds + + + + Explicitly, in audio sample frames - + Implicitly: rows are equally spaced in time - + Audio sample rate (Hz): - + Frame increment between rows: - + Data will be displayed in a %1 layer. @@ -313,91 +296,91 @@ Colour3DPlotLayer - - + + Colour Color - - + + Scale - + Normalize Columns - + Normalize Visible Area - + Invert Vertical Scale - + Gain - + Always Opaque - + Smooth - + Bin Scale - + Bins - - + + Linear - - + + Log - + +/-1 - + Absolute - + <unknown> - + dB - + Time: %1 - %2 Bin: %3 Value: %4 @@ -407,68 +390,68 @@ ColourMapper - - + + <unknown> - - Default - - - - + White on Black - + Black on White - - Red on Blue - - - - - Yellow on Black - - - - - Blue on Black - - - - + + Green + + + + + Cherry + + + + + Wasp + + + + + Ice + + + + Sunset - + Fruit Salad - + Banded - + Highlight - + Printer - + High Gain @@ -476,68 +459,67 @@ CommandHistory - - - + + &Undo - + Ctrl+Z - + Undo the last editing operation - - - + + + Re&do - + Ctrl+Shift+Z - + Redo the last operation that was undone - + Undo %1 - + Redo %1 - + Nothing to undo - + Nothing to redo - - + + &Undo %1 - - + + Re&do %1 @@ -545,7 +527,15 @@ CoreAudioFileReader - + + Decoding %1... + + + + + DecodingWavFileReader + + Decoding %1... @@ -553,7 +543,7 @@ Dense3DModelPeakCache - + Dense 3-D Peak Cache @@ -561,17 +551,17 @@ DenseThreeDimensionalModel - + Dense 3-D - + Time - + Frame @@ -579,7 +569,7 @@ DenseTimeValueModel - + Dense Time-Value @@ -587,12 +577,12 @@ Document - + Set main model to %1 - + Clear main model @@ -600,7 +590,7 @@ EditableDenseThreeDimensionalModel - + Editable Dense 3-D @@ -608,12 +598,12 @@ FFTModel - + FFT - + %1 Hz @@ -621,22 +611,22 @@ Fader - + Enter new fader level - + New fader level, from %1 to %2 dBFS: - + Level: Off - + Level: %1%2.%3%4 dB @@ -644,48 +634,53 @@ FeatureExtractionModelTransformer - + + Transforms supplied to a single FeatureExtractionModelTransformer instance must be similar in every respect except plugin output + + + + No factory available for feature extraction plugin id "%1" (unknown plugin type, or internal error?) - + Input model for feature extraction plugin "%1" is of wrong type (internal error?) - + Failed to instantiate plugin "%1" - + Cannot provide enough channels to feature extraction plugin "%1" (plugin min is %2, max %3; input model has %4) - - + + Failed to initialise feature extraction plugin "%1" Failed to initialize feature extraction plugin "%1" - + Feature extraction plugin "%1" rejected the given step and block sizes (%2 and %3); using plugin defaults (%4 and %5) instead - + Transform was configured for version %1 of plugin "%2", but the plugin being used is version %3 - + Plugin "%1" has no outputs - + Plugin "%1" has no output named "%2" @@ -693,57 +688,255 @@ FileSource - - - + + + Unsupported scheme in URL - + Downloading %1... - - Failed to connect to FTP server - - - - - Login failed - - - - - Failed to change to correct directory - - - - - FTP download aborted - - - - + Download cancelled - + Failed to create local file %1 - + File contains no data! + FlexiNoteLayer + + + + + New Point + + + + + Vertical Scale + + + + + Scale Units + + + + + Scale + + + + + Auto-Align + + + + + Linear + + + + + Log + + + + + MIDI Notes + + + + + In progress + + + + + + No local points + + + + + %1 (%2, %3 Hz) + + + + + %1 Hz (%2, %3) + + + + + %1 %2 + + + + + Time: %1 +Pitch: %2 +Duration: %3 +No label + + + + + Time: %1 +Pitch: %2 +Duration: %3 +Label: %4 + + + + + Draw Point + + + + + Erase Point + + + + + Drag Point + + + + + + + Edit Point + + + + + Relocate Point + + + + + Change Point Value + + + + + Add Point + + + + + Snap Notes + + + + + Merge Notes + + + + + Drag Selection + + + + + Resize Selection + + + + + + Delete Selected Points + + + + + Re-align pasted items? + + + + + The items you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? + + + + + Paste + + + + + Record FlexiNote + + + + + FlexiNoteModel + + + FlexiNote + + + + + Time + + + + + Frame + + + + + Pitch + + + + + Duration + + + + + Level + + + + + Label + + + + + Unknown + + + + + Edit Data + + + + I - + Edit Data @@ -751,52 +944,52 @@ ImageDialog - + Image - + Label: - + File or URL: - + Browse... - + Preview - + Unsupported scheme in URL - + The URL scheme "%1" is not supported - + Opening image URL... - + File download failed - + Failed to download URL "%1": %2 @@ -804,58 +997,58 @@ ImageLayer - + In progress - - + + Select image - + Move Image - + Drag Selection - + Resize Selection - + Delete Selection - + Re-align pasted items? - + The items you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? - + Paste - + New Point - + Opening image URL... @@ -863,38 +1056,38 @@ ImageModel - - + + Image - + Edit Image - + Time - + Frame - + Label - + Unknown - + Edit Data @@ -902,38 +1095,31 @@ InteractiveFileFinder - - + + Select file - - + + All files (*.*) - - + + Select a session file - - Sonic Visualiser session files (*.sv) -RDF files (%1) -All files (*.*) - - - - + Audio files (%1) All files (*.*) - + All supported files (%1 %2) Sonic Visualiser Layer XML files (*.svl) Comma-separated data files (*.csv) @@ -945,7 +1131,7 @@ - + All supported files (%1 %2) Sonic Visualiser Layer XML files (*.svl) Comma-separated data files (*.csv) @@ -956,24 +1142,114 @@ - + + Image files (%1) +All files (*.*) + + + + + File does not exist + + + + + <b>File not found</b><p>File "%1" does not exist + + + + + File is not readable + + + + + <b>File is not readable</b><p>File "%1" can not be read + + + + + + Directory selected + + + + + + <b>Directory selected</b><p>File "%1" is a directory + + + + + Non-file selected + + + + + <b>Not a file</b><p>Path "%1" is not a file + + + + + File is empty + + + + + <b>File is empty</b><p>File "%1" is empty + + + + + %1 session files (*.%1) +RDF files (%3) +All files (*.*) + + + + + All supported files (%1 %2) +Comma-separated data files (*.csv) +Sonic Visualiser Layer XML files (*.svl) +Space-separated .lab files (*.lab) +RDF files (%2) +MIDI files (*.mid) +Text files (*.txt) +All files (*.*) + + + + + All supported files (%1 %2) +Comma-separated data files (*.csv) +Sonic Visualiser Layer XML files (*.svl) +Space-separated .lab files (*.lab) +RDF files (%2) +Text files (*.txt) +All files (*.*) + + + + All supported files (*.sv %1 %2) -Sonic Visualiser session files (*.sv) +%3 session files (*.%4) Audio files (%2) RDF files (%1) All files (*.*) - - Image files (%1) + + Comma-separated data files (*.csv) +Space-separated .lab files (*.lab) +Text files (*.txt) All files (*.*) - + All supported files (*.sv %1 %2 %3) -Sonic Visualiser session files (*.sv) +%4 session files (*.%5) Audio files (%1) Layer files (%2) RDF files (%3) @@ -981,79 +1257,30 @@ - - File does not exist - - - - - <b>File not found</b><p>File "%1" does not exist - - - - - File is not readable - - - - - <b>File is not readable</b><p>File "%1" can not be read - - - - - - Directory selected - - - - - - <b>Directory selected</b><p>File "%1" is a directory - - - - - Non-file selected - - - - - <b>Not a file</b><p>Path "%1" is not a file - - - - - File is empty - - - - - <b>File is empty</b><p>File "%1" is empty - - - - - Sonic Visualiser session files (*.sv) + + %1 session files (*.%2) All files (*.*) - - - - + + + + + + + Select a file to export to - + WAV audio files (*.wav) All files (*.*) - + Sonic Visualiser Layer XML files (*.svl) Comma-separated data files (*.csv) RDF/Turtle files (%1) @@ -1063,7 +1290,7 @@ - + Sonic Visualiser Layer XML files (*.svl) Comma-separated data files (*.csv) RDF/Turtle files (%1) @@ -1072,71 +1299,97 @@ - + + Comma-separated data files (*.csv) +Sonic Visualiser Layer XML files (*.svl) +RDF/Turtle files (%1) +MIDI files (*.mid) +Text files (*.txt) +All files (*.*) + + + + + Comma-separated data files (*.csv) +Sonic Visualiser Layer XML files (*.svl) +RDF/Turtle files (%1) +Text files (*.txt) +All files (*.*) + + + + Portable Network Graphics files (*.png) All files (*.*) - + + Comma-separated data files (*.csv) +Text files (*.txt) +All files (*.*) + + + + File exists - + <b>File exists</b><p>The file "%1" already exists. Do you want to overwrite it? - + <b>File not found</b><p>Audio file "%1" could not be opened. Do you want to locate it? - + <b>File not found</b><p>File "%1" could not be opened. Do you want to locate it? - + Failed to open file - + Locate file... - + Use URL... - + Cancel - + Use URL - + Please enter the URL to use for this file: - + Failed to open location - + <b>Failed to open location</b><p>URL "%1" could not be opened @@ -1144,65 +1397,65 @@ ItemEditDialog - + Timing - + Time: - - + + frames - - + + sec - - + + usec - + Duration: - + Properties - + Value: - + Text: - + OK - + Reset - + Cancel @@ -1210,41 +1463,41 @@ KeyReference - - + + & - + <i>or</i>&nbsp;<b>%1</b> - + </b>&nbsp;(%1)<b> - - Sonic Visualiser: Key and Mouse Reference + + %1: Key and Mouse Reference LabelCounterInputDialog - + Set Counters - + Fine counter (beats): - + Coarse counter (bars): Coarse counter (measures): @@ -1252,77 +1505,77 @@ Labeller - + No numbering - + Simple counter - + Cyclical counter - + Cyclical two-level counter (bar/beat) Cyclical two-level counter (measure/beat) - + Audio sample frame number - + Time in seconds - + Duration to the following item - + Tempo (bpm) based on duration to following item - + Duration since the previous item - + Tempo (bpm) based on duration since previous item - + Same as the nearest previous item - + Value extracted from the item's label (where possible) - + %1.%2 - + %1 - + Label Points @@ -1330,79 +1583,84 @@ Layer - + Waveform - - - + + + Spectrogram - + Ruler - + Time Instants - + Time Values - + Notes - + + Flexible Notes + + + + Regions - + Text - + Images - + Colour 3D Plot Color 3D Plot - + Spectrum - + Time Slice - - Layer - - - - + + Unknown Layer + + + + Make Measurement - + Delete Measurement @@ -1410,17 +1668,17 @@ LayerTreeDialog - + Layer Summary - + Audio Data Sources - + Panes and Layers @@ -1428,22 +1686,22 @@ LayerTreeModel - + Layer - + Shown - + Played - + Model @@ -1451,27 +1709,27 @@ MIDIFileImportDialog - + Merge all tracks - + Merge all non-percussion tracks - + Select track or tracks to import - + <b>Select track to import</b><p>You can only import this file as a single annotation layer, but the file contains more than one track, or notes on more than one channel.<p>Please select the track or merged tracks you wish to import: - + Error in MIDI file import @@ -1479,89 +1737,89 @@ MIDIFileReader - + Wrong length for long data in MIDI stream (%1, should be %2) - + Wrong length for int data in MIDI stream (%1, should be %2) - + getMIDIByte called but no MIDI file open - - + + End of MIDI file encountered while reading - + Attempt to get more bytes than expected on Track - - + + Attempt to read past MIDI file end - + getMIDIBytes called but no MIDI file open - + Attempt to get more bytes than available on Track (%1, only have %2) - + getNumberFromMIDIBytes called but no MIDI file open - + skipToNextTrack called but no MIDI file open - + Invalid event code %1 found - + Running status used for first event in track - + MIDI file "%1" has no notes in any track - + - uses GM percussion channel - + Track %1 (%2)%3 - + Track %1 (untitled)%3 - + %1 - vel %2 @@ -1569,7 +1827,7 @@ MIDIInput - + Input @@ -1577,7 +1835,7 @@ MP3FileReader - + Decoding %1... @@ -1585,686 +1843,692 @@ MainWindow - + Black - + Red - + Blue - - - + + + Green - + Purple - + Orange - + White - + Bright Red - + Bright Blue - - - + + + Bright Green - + Bright Purple - + Bright Orange - - Playback Speedup - - - - - - + + + &Layer - - + + &Transform - + &File - + File Toolbar - + File and Session Management - + &New Session - + Ctrl+N - + Ctrl+O - + &Open... - + Open a session file, audio file, or layer - + &Save Session - + Ctrl+S - + Save Session &As... - + Ctrl+Shift+S - + Ctrl+I - + &Export Audio File... - + Export selection as an audio file - + Import Annotation &Layer... - + Ctrl+L - + Import layer data from an existing file - - Export Annotation Layer... - - - - + Export layer data to a file - + Export Image File... - + Export a single pane to an image file - + Open Lo&cation... - + + Playback Speed + + + + Ctrl+Shift+O - + Open or import a file from a remote URL - + + Export Audio Data... + + + + &Preferences... - + Adjust the application preferences - + &Quit - + Ctrl+Q - + &Edit - + Editing - + Cu&t - + Ctrl+X - + Cut the selection from the current layer to the clipboard - + &Copy - + Ctrl+C - + Copy the selection from the current layer to the clipboard - + &Paste - + Ctrl+V - + Paste from the clipboard to the current layer - + Paste at Playback Position - + Ctrl+Shift+V - + Paste from the clipboard to the current layer, placing the first item at the playback position - - + + &Delete Selected Items - + Del - - + + Delete items in current selection from the current layer - + Selection - + Select &All - + Ctrl+A - + Select the whole duration of the current session - + Select &Visible Range - + Ctrl+Shift+A - + Select the time range corresponding to the current window width - + Select to &Start - + + + + Shift+Left - + Select from the start of the session to the current playback position - + Select to &End - + Shift+Right - + Select from the current playback position to the end of the session - + C&lear Selection - + Esc - + Clear the selection - + Tapping Time Instants - + &Insert Instant at Playback Position - + Enter - + Insert a new time instant at the current playback position, in a new layer if necessary - + ; - + Insert Instants at Selection &Boundaries - + Shift+Enter - + Insert new time instants at the start and end of the current selected regions, in a new layer if necessary - + Insert Item at Selection - - Ctrl+Shift+Enter - - - - + Insert a new note or region item corresponding to the current selection - + Number New Instants with - + Cycle size - + Reset Numbering Counters - + Reset to 1 all the counters used for counter-based labelling - + Set Numbering Counters... - + Set the counters used for counter-based labelling - + Renumber Selected Instants - + Renumber the selected instants using the current labelling scheme - + Panning and Navigation - + &View - + Scroll &Left - + + + + + + + Left - + Scroll the current pane to the left - + Scroll &Right - + Right - + Scroll the current pane to the right - + &Jump Left - + + + Ctrl+Left - + Scroll the current pane a big step to the left - + J&ump Right - + Ctrl+Right - + Scroll the current pane a big step to the right - + Peek Left - + Alt+Left - + Scroll the current pane to the left without moving the playback cursor or other panes - + Peek Right - + Alt+Right - + Scroll the current pane to the right without moving the playback cursor or other panes - + Zoom - + Zoom &In - + Up - + Increase the zoom level - + Zoom &Out - + Down - + Decrease the zoom level - + Restore &Default Zoom - + Restore the zoom level to the default - + Zoom to &Fit - + F - + Zoom to show the whole file - + Display Features - + Show &Centre Line - + ' - + Show or hide the centre line - + Toggle All Time Rulers - + Show &No Overlays - + 0 @@ -2273,12 +2537,12 @@ Hide center indicator, frame times, layer names and scale - + Show &Minimal Overlays - + 9 @@ -2287,7 +2551,7 @@ Show center indicator only - + 8 @@ -2296,1688 +2560,1931 @@ Show center indicator, frame times and scale - + Show &All Overlays - + # - - &Export Audio Data... - - - - + Export audio from selection into a data file - + + Export Annotation La&yer... + + + + + Ctrl+Y + + + + + Browse Recorded Audio Folder + + + + + Open the Recorded Audio folder in the system file browser + + + + + Ctrl+Shift+Return + + + + Show or hide all time rulers - + Hide times, layer names, and scale - + Show times and basic scale - + Show times, layer names, and scale - + Show &Zoom Wheels - + Z - + Show thumbwheels for zooming horizontally and vertically - + Show Property Bo&xes - + X - + Show the layer property boxes at the side of the main window - + Show Status &Bar - + Show context help information in the status bar at the bottom of the window - + Show La&yer Summary - + Y - + Open a window displaying the hierarchy of panes and layers in this session - + Show Acti&vity Log - + Open a window listing interactions and other events - + + Show &Unit Converter + + + + + Open a window of pitch and timing conversion utilities + + + + Go Full-Screen - + F11 - + Expand the pane area to the whole screen - + &Pane - + Managing Panes and Layers - + Add &New Pane - + N - + Add a new pane containing only a time ruler - + Add New %1 Layer - + Add a new empty layer of type %1 - + T - + Add &Waveform - + W - + Add a new pane showing a waveform view - + Shift+W - + Add a new layer showing a waveform view - + Add Spectro&gram - + G - + Add a new pane showing a spectrogram - + Shift+G - + Add a new layer showing a spectrogram - + Add &Melodic Range Spectrogram - + M - + Add a new pane showing a spectrogram set up for an overview of note pitches - + Shift+M - + Add a new layer showing a spectrogram set up for an overview of note pitches - + Add Pea&k Frequency Spectrogram - + K - + Add a new pane showing a spectrogram set up for tracking frequencies - + Shift+K - + Add a new layer showing a spectrogram set up for tracking frequencies - + Add Spectr&um - + U - + Add a new pane showing a frequency spectrum - + Shift+U - + Add a new layer showing a frequency spectrum - + &All Channels Mixed - + &All Channels - + Channel &%1 - + + %1: %2 - + Switch to Previous Pane - + [ - + Make the next pane up in the pane stack current - + Switch to Next Pane - + ] - + Make the next pane down in the pane stack current - + &Delete Pane - + Ctrl+Shift+D - + Delete the currently active pane - + Add &Time Ruler - + Add a new layer showing a time ruler - + Add &Existing Layer - + Add S&lice of Layer - + + Switch to Previous Layer + + + + + { + + + + + Make the previous layer in the pane current + + + + + Switch to Next Layer + + + + + } + + + + + Make the next layer in the pane current + + + + &Rename Layer... - + R - + Rename the currently active layer - + Edit Layer Data - + E - + Edit the currently active layer as a data grid - + &Delete Layer - + Ctrl+D - + Delete the currently active layer - + &Recent Transforms - + %1 by Category - - + + Unclassified - + %1 by Plugin Name - + %1 by Maker - - + + Unknown - - + + [\(<].*$ - - + + %1... - + Find a Transform... - + Search for a transform from the installed plugins, by name or description - + Ctrl+M - + &Help - + Help - + &Help Reference - + F1 - + &Key and Mouse Reference - + F2 - + Ctrl+R - + Re-open - + Re-open the current or most recently opened file - + Standard Waveform - + Choose Default Template... - + Ctrl+T - + Repeat Transform - + Re-select the most recently run transform - + Playback and Transport Controls - + Play&back - + Playback - + Playback Toolbar - + Rewind to Start - + Home - + Rewind to the start - - + + + + Rewind + + + + + PgUp + + + + + Rewind to the previous time instant or time ruler notch + + + + + Rewind to Similar Point + + + + + Shift+PgUp + + + + + Rewind to the previous similarly valued time instant + + + + + Play / Pause + + + + + Space + + + + + Start or stop playback from the current position + + + + + + Fast Forward + + + + + PgDown + + + + + Fast-forward to the next time instant or time ruler notch + + + + + Fast Forward to Similar Point + + + + + Shift+PgDown + + + + + Fast-forward to the next similarly valued time instant + + + + + Fast Forward to End + + + + + End + + + + + Fast-forward to the end + + + + + Record + + + + + Ctrl+Space + + + + + Record a new audio file + + + + + Play Mode Toolbar + + + + + Constrain Playback to Selection + + + + + s + + + + + Constrain playback to the selected regions + + + + + Loop Playback + + + + + l + + + + + Loop playback + + + + + Solo Current Pane + + + + + o + + + + + Solo the current pane during playback + + + + + Align File Timelines + + + + + Treat multiple audio files as versions of the same work, and align their timelines + + + + + Speed Up + + + + + Ctrl+PgUp + + + + + Time-stretch playback to speed it up without changing pitch + + + + + Slow Down + + + + + Ctrl+PgDown + + + + + Time-stretch playback to slow it down without changing pitch + + + + + Restore Normal Speed + + + + + Ctrl+Home + + + + + Restore non-time-stretched playback + + + + + Edit Toolbar + + + + + + + + + + Tool Selection + + + + + Playback speed: %1% (%2x slower) + + + + + Playback speed: %1% (%2x faster) + + + + + <b>Layer generation failed</b><p>Failed to generate derived layer.<p>The layer transform %1failed:<p>%2 + + + + + <b>Layer generation failed</b><p>Failed to generate a derived layer.<p>The layer transform %1failed.<p>No error information is available. + + + + + <h3>Newer version available</h3><p>You are using version %1 of Sonic Visualiser, but version %2 is now available.</p><p>Please see the <a href="http://sonicvisualiser.org/">Sonic Visualiser website</a> for more information.</p> + + + + + Tools Toolbar + + + + + + + Navigate + + + + + 1 + + + + + + Select + + + + + 2 + + + + + Select ranges + + + + + + + Edit + + + + + Navigate Tool Mouse Actions + + + + + Click left button and drag to move around + + + + + + Zoom to Area + + + + + + Shift-click left button and drag to zoom to a rectangular area + + + + + Relocate + + + + + + + + Double-Click Left + + + + + Double-click left button to jump to clicked location + + + + + + Double-click left button on an item to edit it + + + + + Select Tool Mouse Actions + + + + + Click left button and drag to select region; drag region edge to resize + + + + + + Multi Select + + + + + Cmd-click left button and drag to select an additional region + + + + + Ctrl-click left button and drag to select an additional region + + + + + Fine Select + + + + + Shift-click left button and drag to select without snapping to items or grid + + + + + 3 + + + + + Edit items in layer + + + + + Edit Tool Mouse Actions + + + + + Move + + + + + Click left button on an item or selected region and drag to move + + + - Rewind - - - - - PgUp - - - - - Rewind to the previous time instant or time ruler notch - - - - - Rewind to Similar Point - - - - - Shift+PgUp - - - - - Rewind to the previous similarly valued time instant - - - - - Play / Pause - - - - - Space - - - - - Start or stop playback from the current position - - - - - - Fast Forward - - - - - PgDown - - - - - Fast-forward to the next time instant or time ruler notch - - - - - Fast Forward to Similar Point - - - - - Shift+PgDown - - - - - Fast-forward to the next similarly valued time instant - - - - - Fast Forward to End - - - - - End - - - - - Fast-forward to the end - - - - - Play Mode Toolbar - - - - - Constrain Playback to Selection - - - - - s - - - - - Constrain playback to the selected regions - - - - - Loop Playback - - - - - l - - - - - Loop playback - - - - - Solo Current Pane - - - - - o - - - - - Solo the current pane during playback - - - - - Align File Timelines - - - - - Treat multiple audio files as versions of the same work, and align their timelines - - - - - Speed Up - - - - - Ctrl+PgUp - - - - - Time-stretch playback to speed it up without changing pitch - - - - - Slow Down - - - - - Ctrl+PgDown - - - - - Time-stretch playback to slow it down without changing pitch - - - - - Restore Normal Speed - - - - - Ctrl+Home - - - - - Restore non-time-stretched playback - - - - - Edit Toolbar - - - - - Tool Selection - - - - - Tools Toolbar - - - - - - Navigate - - - - - 1 - - - - - Select - - - - - 2 - - - - - Select ranges - - - - - Edit - - - - - 3 - - - - - Edit items in layer - - - - + Draw - + 4 - + Draw new items in layer - + + Draw Tool Mouse Actions + + + + + Click left button and drag to create new item + + + + + Erase - + 5 - + Erase items from layer - + + Erase Tool Mouse Actions + + + + + Click left button on an item to remove it from the layer + + + + Measure - + 6 - + Make measurements in layer - + + Measure Tool Mouse Actions + + + + + Measure Area + + + + + Click left button and drag to measure a rectangular area + + + + + Measure Item + + + + + Click left button and drag to measure extents of an item or shape + + + + &Delete Current Measurement - + Delete the measurement currently under the mouse pointer - + Fast Forward to Next Instant - + Fast forward to the next time instant in the current layer - + Rewind to Previous Instant - + Rewind to the previous time instant in the current layer - + Fast Forward to Next Point - + Fast forward to the next point in the current layer - + Rewind to Previous Point - + Rewind to the previous point in the current layer - + Fast forward - + No audio file loaded. - + %1Hz (resampling to %2Hz) - - - - - - - - + + + + + + + Failed to open file - - - + + + <b>File open failed</b><p>Audio file "%1" could not be opened - + + 1. %2 + + + + + %1. %2 + + + + Select audio file to export - + Which audio file do you want to export from? - + Export the selected region only - + Export the whole audio file - - - + + + Select region to export - + Which region from the original audio file do you want to export? - + Export the selected regions into separate files - + Multiple regions of the original audio file are selected. What do you want to export? - + Fragment file %1 already exists, aborting - + Export multiple audio files - + Export audio to "%1" - - + + Failed to write file - + <b>File open failed</b><p>Layer file %1 could not be opened. - - - - + + + + + + <b>Audio required</b><p>Unable to load layer data from "%1" without an audio file.<br>Please load at least one audio file before importing annotations. + + + + + Sorry, cannot export this layer type to RDF (supported types are: region, note, text, time instants, time values) + + + + + Enter template name + + + + + Please enter a name for the saved template: + + + + + Set as default template for future audio files + + + + + Template file exists + + + + + <b>Template file exists</b><p>The template "%1" already exists.<br>Overwrite it? + + + + + http://www.sonicvisualiser.org/doc/reference/%1/en/ + + + + + <br>With Serd and Sord RDF parser and store &copy; David Robillard + + + + + <br>With Dataquay Qt/RDF library &copy; Chris Cannam + + + + + Newer version available + + + + + Failed to open file %1 for writing + + + + + Abandon the current %1 session and start a new one + + + + + &Import More Audio... + + + + + Import an extra audio file into a new pane + + + + + Replace &Main Audio... + + + + + Replace the main audio file of the session with a different file + + + + + Open &Recent + + + + + Save the current session into a %1 session file + + + + + Save the current session into a new %1 session file + + + + + Apply Session Template + + + + + Export Session as Template... + + + + + Manage Exported Templates + + + + + Exit %1 + + + + + Open the %1 reference manual + + + + + Open a window showing the keystrokes you can use in %1 + + + + + %1 on the &Web + + + + + Open the %1 website + + + + + &About %1 + + + + + Show information about %1 + + + + + Export the selected regions into a single file + + + + + Export the whole file + + + + + Can't export non-note layers to MIDI + + + + + Export layer to "%1" + + + + + Export the whole pane (%1x%2 pixels) + + + + + Export the visible area only (%1x%2 pixels) + + + + + Export the selection extent (%1x%2 pixels) + + + + + Export the selection extent + + + + + Which region of the current pane do you want to export as an image? + + + + + Note: the whole pane is too wide to be exported as a single image. + + + + + Failed to save image file + + + + + Failed to save image file %1 + + + + + <b>File open failed</b><p>File "%1" could not be opened + + + + + Open Location + + + + + Please enter the URL of the location to open: + + + + + + - <b>Audio required</b><p>Unable to load layer data from "%1" without an audio file.<br>Please load at least one audio file before importing annotations. - - - - - Sorry, cannot export this layer type to RDF (supported types are: region, note, text, time instants, time values) - - - - - Enter template name - - - - - Please enter a name for the saved template: - - - - - Set as default template for future audio files - - - - - Template file exists - - - - - <b>Template file exists</b><p>The template "%1" already exists.<br>Overwrite it? - - - - - %1: %1 - - - - - http://www.sonicvisualiser.org/doc/reference/%1/en/ - - - - - <br>With Serd and Sord RDF parser and store &copy; David Robillard - - - - - <br>With Dataquay Qt/RDF library &copy; Chris Cannam - - - - - Newer version available - - - - - <h3>Newer version available</h3><p>You are using version %1 of Sonic Visualiser, but version %3 is now available.</p><p>Please see the <a href="http://sonicvisualiser.org/">Sonic Visualiser website</a> for more information.</p> - - - - - Failed to open file %1 for writing - - - - - Abandon the current %1 session and start a new one - - - - - &Import More Audio... - - - - - Import an extra audio file into a new pane - - - - - Replace &Main Audio... - - - - - Replace the main audio file of the session with a different file - - - - - Open &Recent - - - - - Save the current session into a %1 session file - - - - - Save the current session into a new %1 session file - - - - - Apply Session Template - - - - - Export Session as Template... - - - - - Manage Exported Templates - - - - - Exit %1 - - - - - Open the %1 reference manual - - - - - Open a window showing the keystrokes you can use in %1 - - - - - %1 on the &Web - - - - - Open the %1 website - - - - - &About %1 - - - - - Show information about %1 - - - - - Export the selected regions into a single file - - - - - Export the whole file - - - - - Can't export non-note layers to MIDI - - - - - Export layer to "%1" - - - - - Export the whole pane (%1x%2 pixels) - - - - - Export the visible area only (%1x%2 pixels) - - - - - Export the selection extent (%1x%2 pixels) - - - - - Export the selection extent - - - - - Which region of the current pane do you want to export as an image? - - - - - Note: the whole pane is too wide to be exported as a single image. - - - - - Failed to save image file - - - - - Failed to save image file %1 - - - - - <b>File open failed</b><p>Session file "%1" could not be opened - - - - - <b>File open failed</b><p>File "%1" could not be opened - - - - - Open Location - - - - - Please enter the URL of the location to open: - - - - - - - Failed to open location - + <b>Open failed</b><p>URL "%1" could not be opened - + <b>Open failed</b><p>File or URL "%1" could not be opened - - + + Failed to open dropped URL - + <b>Open failed</b><p>Dropped URL "%1" could not be opened - + Export image to "%1" - + Session modified - + <b>Session modified</b><p>The current session has been modified.<br>Do you want to save it? - + Close the current session and create a new one - + Add this data to the current session - + Select target for import - + <b>Select a target for import</b><p>This RDF document refers to one or more audio files.<br>You already have an audio waveform loaded.<br>What would you like to do with the new data? - - + + Failed to save file - - + + <b>Save failed</b><p>Session file "%1" could not be saved. - + Save session as "%1" - + + Multiplex all of the above + + + + Rename Layer - + New name for this layer: - + Playback speed: Normal - - Playback speed: %1%2% - - - - + Selection: %1 to %2 (duration %3) - + Visible: %1 to %2 (duration %3) - + Sample rate mismatch - + <b>Wrong sample rate</b><p>The sample rate of this audio file (%1 Hz) does not match the current playback rate (%2 Hz).<p>The file will play at the wrong speed and pitch.<p>Change the <i>Resample mismatching files on import</i> option under <i>File</i> -> <i>Preferences</i> if you want to alter this behaviour. - - + + Audio processing overload - + <b>Overloaded</b><p>Audio effects plugin auditioning has been disabled due to a processing overload. - + <b>Overloaded</b><p>Audio playback speed processing has been reduced to a single channel, due to a processing overload. - + + Problems loading plugins + + + + Add Point - + Reset Counters - - + + Failed to generate layer - - <b>Layer generation failed</b><p>Failed to generate derived layer.<p>The layer transform "%1" failed:<p>%2 - - - - - <b>Layer generation failed</b><p>Failed to generate a derived layer.<p>The layer transform "%1" failed.<p>No error information is available. - - - - - + + Warning - - + + Failed to regenerate layer - + <b>Layer generation failed</b><p>Failed to regenerate derived layer "%1" using new data model as input.<p>The layer transform "%2" failed:<p>%3 - + <b>Layer generation failed</b><p>Failed to regenerate derived layer "%1" using new data model as input.<p>The layer transform "%2" failed.<p>No error information is available. - + <b>Warning when regenerating layer</b><p>When regenerating the derived layer "%1" using new data model as input:<p>%2 - + Failed to calculate alignment - + <b>Alignment calculation failed</b><p>Failed to calculate an audio alignment using transform "%1":<p>%2 - + Adjust the master playback level - + Adjust the master playback speed - + http://www.sonicvisualiser.org/ - + Release %1 : Revision %2 - + Release %1 - + Unreleased : Revision %1 - + <h3>About Sonic Visualiser</h3> - + <p>Sonic Visualiser is a program for viewing and exploring audio data for semantic music analysis and annotation.<br><a href="http://www.sonicvisualiser.org/">http://www.sonicvisualiser.org/</a></p> - + <p><small>%1 : %2 configuration</small></p> - + Debug - + Release - + With Qt v%1 &copy; Nokia Corporation - + <br>With JACK audio output library v%1 &copy; Paul Davis and Jack O'Quin - + <br>With JACK audio output library &copy; Paul Davis and Jack O'Quin - + <br>With PortAudio audio output library &copy; Ross Bencina and Phil Burk - + <br>With PulseAudio audio output library v%1 &copy; Lennart Poettering and Pierre Ossman - + <br>With PulseAudio audio output library &copy; Lennart Poettering and Pierre Ossman - + <br>With Ogg file decoder (oggz v%1, fishsound v%2) &copy; CSIRO Australia - + <br>With Ogg file decoder &copy; CSIRO Australia - + <br>With MAD mp3 decoder v%1 &copy; Underbit Technologies Inc - + <br>With MAD mp3 decoder &copy; Underbit Technologies Inc - + <br>With libsamplerate v%1 &copy; Erik de Castro Lopo - + <br>With libsamplerate &copy; Erik de Castro Lopo - + <br>With libsndfile v%1 &copy; Erik de Castro Lopo - + <br>With libsndfile &copy; Erik de Castro Lopo - + <br>With FFTW3 v%1 &copy; Matteo Frigo and MIT - + <br>With FFTW3 &copy; Matteo Frigo and MIT - + <br>With Rubber Band v%1 &copy; Chris Cannam - + <br>With Rubber Band &copy; Chris Cannam - + <br>With Vamp plugin support (API v%1, host SDK v%2) &copy; Chris Cannam - + <br>With LADSPA plugin support (API v%1) &copy; Richard Furse, Paul Davis, Stefan Westerfeld - + <br>With DSSI plugin support (API v%1) &copy; Chris Cannam, Steve Harris, Sean Bolton - + <br>With Redland RDF datastore v%1 &copy; Dave Beckett and the University of Bristol - + <br>With Redland RDF datastore &copy; Dave Beckett and the University of Bristol - + <br>With RtMidi &copy; Gary P. Scavone - + <br>With liblo Lite OSC library v%1 &copy; Steve Harris - + <br>With liblo Lite OSC library &copy; Steve Harris - + </small><p><small>The OSC URL for this instance is: "%1" - + With - + Using - + About Sonic Visualiser - + Add %1 Pane @@ -3985,208 +4492,215 @@ MainWindowBase - + %1 (modified) - + (modified) - + Cut - + Paste - - - - + + + + + Add Point - + Add Point at %1 s - + Add Item at %1 s - + Opening file or URL... - + Select target for import - - - + + + + %1: %2 - + + %1: %2 [%3] - - + + Import "%1" - + Opening playlist... - - + + Importing from RDF... - + Opening session... - + Close the current session and start a new one - + Replace the main audio file in this session - + Add the audio file to this session - + <b>Select a target for import</b><p>You already have an audio file loaded.<br>What would you like to do with the new audio file? - + Import audio file "%1" - + Import layer XML file "%1" - + Import MIDI file "%1" - - + + SV XML file read error: %1 - + Import session file "%1" - + Open session template "%1" - - + + Failed to import RDF - + <b>Failed to import RDF</b><p>Importing data from RDF document at "%1" failed: %2</p> - + <b>Failed to import RDF</b><p>No suitable data models found for import from RDF document at "%1"</p> - + Import RDF document "%1" - - + Couldn't open audio device - + <b>No audio available</b><p>Could not open an audio device for playback.<p>Automatic audio device detection failed. Audio playback will not be available during this session.</p> - - <b>No audio available</b><p>Failed to open your preferred audio device ("%1").<p>Audio playback will not be available during this session.</p> - - - - - - + + Recording: %1 + + + + + + Failed to write file - - - + + + <b>Save failed</b><p>Failed to write to file "%1": %2 - + + Import Recorded Audio + + + + Add Pane - + Remove Pane - - + + Delete Pane - + Playing: %1 of %2 (%3 remaining) @@ -4194,77 +4708,77 @@ ModelDataTableDialog - + Data Editor - + Playback Toolbar - + Play Mode Toolbar - + Track Playback - + Toggle tracking of playback position - + Edit Toolbar - + Insert New Item - + Insert - + Insert a new item - + Delete Selected Items - + Delete - + Delete the selected item or items - + Data in Layer - + Find: - + @@ -4272,22 +4786,22 @@ ModelMetadataModel - + Type - + Name - + Maker - + Source @@ -4295,88 +4809,106 @@ ModelTransformerFactory - + %1 <%2> - + %1: %2 + NetworkPermissionTester + + + Welcome to Sonic Visualiser + + + + + <h2>Welcome to Sonic Visualiser!</h2><p><img src=":icons/qm-logo-smaller.png" style="float:right">Sonic Visualiser is a program for viewing and exploring audio data for semantic music analysis and annotation.</p><p>Developed in the Centre for Digital Music at Queen Mary, University of London, Sonic Visualiser is provided free as open source software under the GNU General Public License.</p><p><hr></p><p><b>Before we go on...</b></p><p>Sonic Visualiser would like to make networking connections and open a network port.</p><p>This is to:</p><ul><li> Find information about available and installed plugins;</li><li> Support the use of Open Sound Control, where configured; and</li><li> Tell you when updates are available.</li></ul><p>No personal information will be sent, no tracking is carried out, and all requests happen in the background without interrupting your work.</p><p>We recommend that you allow this, because it makes Sonic Visualiser more useful. But if you do not wish to do so, please un-check the box below.<br></p> + + + + + Allow this + + + + NoteLayer - - - + + + New Point - + Vertical Scale - + Scale Units - + Scale - + Auto-Align - + Linear - + Log - + MIDI Notes - + In progress - - + + No local points - + %1 (%2, %3 Hz) - + %1 Hz (%2, %3) - + %1 %2 - + Time: %1 Pitch: %2 Duration: %3 @@ -4384,7 +4916,7 @@ - + Time: %1 Pitch: %2 Duration: %3 @@ -4392,68 +4924,68 @@ - + Draw Point - + Erase Point - + Drag Point - - + + Edit Point - + Relocate Point - + Change Point Value - + Drag Selection - + Resize Selection - + Delete Selected Points - + Re-align pasted items? - + The items you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? - + Paste - + Record Note @@ -4461,47 +4993,47 @@ NoteModel - + Note - + Time - + Frame - + Pitch - + Duration - + Level - + Label - + Unknown - + Edit Data @@ -4509,7 +5041,7 @@ OggVorbisFileReader - + Decoding %1... @@ -4517,12 +5049,12 @@ Overview - + Overview - + Click and drag to navigate; double-click to jump @@ -4530,465 +5062,300 @@ Pane - + Horizontal Zoom - + Vertical Zoom - + Reset zoom to default - + Some lengthy prefix: - + Reference - - + + Unaligned - + Aligning: %1% - + Aligned - + %1 - %2 - - + + +%1 - + (R) - + (X) - + %1 / %2Hz%3 - - + + Zoom - + Zoom In - + Wheel Up - + Zoom Out - + Wheel Down - + General Pane Mouse Actions - + Wheel - + Zoom in or out in time axis - + Scroll - + Ctrl+Wheel - + Scroll rapidly left or right in time axis - + Zoom Vertically - + Shift+Wheel - + Zoom in or out in the vertical axis - + Scroll Vertically - + Alt+Wheel - + Scroll up or down in the vertical axis - - + Navigate - + Middle - + Click middle button and drag to navigate with any tool - - + Relocate - + Double-Click Middle - + Double-click middle button to relocate with any tool - + Menu - + Right - + Show pane context menu - - Navigate Tool Mouse Actions - - - - - - - - - Left - - - - - Click left button and drag to move around - - - - - - Zoom to Area - - - - - - - Shift+Left - - - - - - Shift-click left button and drag to zoom to a rectangular area - - - - - - - - Double-Click Left - - - - - Double-click left button to jump to clicked location - - - - - - Edit - - - - - - Double-click left button on an item to edit it - - - - - Select Tool Mouse Actions - - - - - Select - - - - - Click left button and drag to select region; drag region edge to resize - - - - - Multi Select - - - - - Ctrl+Left - - - - - Cmd-click left button and drag to select an additional region - - - - - Ctrl-click left button and drag to select an additional region - - - - - Fine Select - - - - - Shift-click left button and drag to select without snapping to items or grid - - - - - Edit Tool Mouse Actions - - - - - Move - - - - - Click left button on an item or selected region and drag to move - - - - - Draw Tool Mouse Actions - - - - - Draw - - - - - Click left button and drag to create new item - - - - - Measure Tool Mouse Actions - - - - - Measure Area - - - - - Click left button and drag to measure a rectangular area - - - - - Measure Item - - - - - Click left button and drag to measure extents of an item or shape - - - - + Enter new range - + New vertical display range, from %1 to %2 %4: - + Drag Selection - + Resize Selection - + Click and drag to navigate - + Click and drag to select a range; hold Shift to avoid snapping to items; hold Cmd for multi-select; middle-click and drag to navigate - + Click and drag to select a range; hold Cmd for multi-select; middle-click and drag to navigate - + Click and drag to select a range; hold Shift to avoid snapping to items; hold Ctrl for multi-select; middle-click and drag to navigate - + Click and drag to select a range; hold Ctrl for multi-select; middle-click and drag to navigate - + Click and drag to move the selection boundary - + Click and drag to select a range; hold Shift to avoid snapping to items; middle-click to navigate - + Click and drag to select a range; middle-click and drag to navigate - + Click to add a new item in the active layer - + Click to erase an item from the active layer - + Click and drag an item in the active layer to move it; hold Shift to override initial resistance - + Click and drag to move all items in the selected range - + Click and drag to adjust the visible range of the vertical scale - + Click and drag to adjust the vertical zoom level - + Click and drag to adjust the horizontal zoom level - + Reset horizontal and vertical zoom levels to their defaults @@ -4996,45 +5363,40 @@ PlayParameterRepository - + Adjust Playback Parameters - + Change Playback Mute State - + Change Playback Gain - + Change Playback Pan - - Change Playback Plugin - - - - - Configure Playback Plugin + + Change Playback Sample PluginParameterBox - + This plugin has no adjustable parameters. - + Program @@ -5042,127 +5404,127 @@ PluginParameterDialog - - + + Plugin Parameters - + Name: - + Version: - + Maker: - + Copyright: - + Output: - + Input Material - + Restrict to selection extents - + Channels - + Processing - - + + Advanced >> - + Channel mismatch - + This plugin requires at least %1 input channels, but only %2 %3 available. The plugin probably will not work correctly. - + are - + is - + This plugin accepts no more than %1 input channels, but %2 are available. Only the first %3 will be used. - + This plugin only has a single channel input, but the source has %1 channels. - + Use mean of source channels - + Use channel %1 only - + Window size: - + Audio frames per block: - + Window increment: - + Window shape: - + Advanced << @@ -5170,214 +5532,254 @@ Preferences - + Spectrogram y-axis interpolation: - + Spectrogram x-axis interpolation: - + Frequency of concert A - + Property box layout - + Spectral analysis window shape - + Playback resampler type - + + Normalise audio signal when reading from audio file + + + + Omit temporaries from Recent Files menu - + Resample mismatching files on import - + + Single fixed sample rate to resample all files to + + + + Location for cache file directory - + Background colour preference Background color preference - - Time display format - - - - + + Time display precision + + + + + Use hours:minutes:seconds format + + + + + Label middle C as + + + + Font size for text overlays - + Show splash screen on startup - + Show boxes for all panes - + Show box for current pane only - + Rectangular - + Triangular - + Hamming - + Hann - + Blackman - + Gaussian - + Parzen - + Nuttall - + Blackman-Harris - + Fastest - + Standard - + Highest quality - - + + None - - + + Linear interpolation - + 4 x Oversampling - + 4 x Oversampling with interpolation - + Follow desktop theme - + Dark background - + Light background - + Standard (to millisecond) - + High resolution (to microsecond) - + 24 FPS - + 25 FPS - + 30 FPS - + 50 FPS - + 60 FPS - + + C0 - middle of octave scale + + + + + C3 - common MIDI sequencer convention + + + + + C4 - ASA American standard + + + + + C5 - used in Cakewalk and others + + + + Preferences @@ -5385,132 +5787,155 @@ PreferencesDialog - + Sonic Visualiser: Application Preferences - + Apply - + <home directory> - + Follow system locale - + Russian - + British English - + American English - + Czech - - - - - - - - - + - + + + + + + + + + + + + %1: - + User interface language - - Playback audio device: - - - - + + Allow network usage + + + + &General - + + Draw layers at Retina resolution: + + + + + Default spectrogram colour: + Default spectrogram color: + + + + Default melodic spectrogram colour: + Default melodic spectrogram color: + + + + Default colour 3D plot colour: + Default color 3d plot color: + + + &Appearance - + Anal&ysis - + Default session template for audio files: - + Standard Waveform - + Session &Template - + OK - + Cancel - + Select a directory to create cache subdirectory in - + Preferences - + <b>Restart required</b><p>One or more of the application preferences you have changed may not take full effect until Sonic Visualiser is restarted.</p><p>Please exit and restart the application now if you want these changes to take effect immediately.</p> - + Preferences Changed - + Some preferences have been changed but not applied. Apply them before closing? @@ -5519,7 +5944,7 @@ ProgressDialog - + Cancel @@ -5527,78 +5952,83 @@ PropertyBox - + Show - + Play - + Playback Gain - + dB - - + + Playback Pan / Balance - + Add New Colour... Add New Color... - + Name New Colour Name New Color - + Enter a name for the new colour: Enter a name for the new color: - + Prefer black background for this colour Prefer black background for this color - + + Set playback clip: + + + + (current value: %1%2) - + (current value: %1) - + Toggle Visibility of %1 - + Toggle Playback of %1 - + Toggle %1 property of %2 - + Adjust %1 property of %2%3 @@ -5606,37 +6036,37 @@ PropertyContainer - + yes - + on - + true - + no - + off - + false - + Set %1 Property @@ -5644,12 +6074,12 @@ PropertyStack - + Change Layer Visibility - + Click to change the current active layer @@ -5657,7 +6087,7 @@ QApplication - + Sonic Visualiser is a program for viewing and exploring audio data for semantic music analysis and annotation. @@ -5673,7 +6103,7 @@ - + Sonic Visualiser @@ -5681,22 +6111,20 @@ QFile - - - + + File "%1" does not exist - - - + + Failed to open file "%1" - - + + File or URL "%1" could not be retrieved @@ -5704,26 +6132,55 @@ QMessageBox - - + + Failed to open file - + File or URL "%1" could not be opened - + <b>Audio required</b><p>Please load at least one audio file before importing annotation data + QObject + + + <b>Failed to load plugins</b><p>Failed to load one or more plugin libraries:</p> + + + + + + Failed to load library + + + + + Failed to query plugins from library after loading + + + + + Unknown failure + + + + + Success: internal error? + + + + QuickTimeFileReader - + Decoding %1... @@ -5731,17 +6188,17 @@ RDFImporter - + Importing audio referenced in RDF... - + Importing dense signal data from RDF... - + Importing event data from RDF... @@ -5749,7 +6206,7 @@ RangeInputDialog - + to @@ -5757,87 +6214,95 @@ RangeSummarisableTimeValueModel - + Range-Summarisable Time-Value + ReadOnlyWaveFileModel + + + Wave File + + + + RegionLayer - - + + New Region - + Vertical Scale - + Scale Units - + Plot Type - + Scale - + Bars - + Segmentation - + Auto-Align - + Equal Spaced - + Linear - + Log - + In progress - - + + No local points - + %1 %2 - + Time: %1 Value: %2 Duration: %3 @@ -5845,7 +6310,7 @@ - + Time: %1 Value: %2 Duration: %3 @@ -5853,63 +6318,63 @@ - + Draw Region - + Erase Region - + Drag Region - - + + Edit Region - + Relocate Region - + Change Point Value - + Drag Selection - + Resize Selection - + Delete Selected Points - + Re-align pasted items? - + The items you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? - + Paste @@ -5917,42 +6382,42 @@ RegionModel - + Region - + Time - + Frame - + Value - + Duration - + Label - + Unknown - + Edit Data @@ -5960,29 +6425,21 @@ RemoveLayerCommand - + Delete %1 Layer - ResamplingWavFileReader - - - Resampling %1... - - - - SVFileReader - - + + (derived model in SV-XML) - + Opening file or URL... @@ -5990,12 +6447,12 @@ SingleColourLayer - + Colour Color - + <unknown> @@ -6003,13 +6460,13 @@ SliceLayer - - + + %1 - %2 - + Time: %1 - %2 Range: %3 samples (%4) Bin: %5 @@ -6017,139 +6474,139 @@ - + First - - + + Mean - - + + Peak - + Time: %1 - %2 Range: %3 samples (%4) - + 0dB - + -Inf - + x10 - + Plot Type - - + + Scale - + Normalize - + Threshold - + Gain - + Sampling Mode - - + + Linear - + Meter - + Rev Log - - + + dB - + Any - + Bin Scale - + Bins - - + + Log - + Absolute - + Lines - + Steps - + Blocks - + Colours Colors @@ -6157,22 +6614,22 @@ SparseModel - + Sparse - + Edit Data - + Insert Data Point - + Delete Data Point @@ -6180,7 +6637,7 @@ SparseModel::AddPointCommand - + Add Point @@ -6188,7 +6645,7 @@ SparseModel::DeletePointCommand - + Delete Point @@ -6196,7 +6653,7 @@ SparseModel::RelabelCommand - + Re-Label Point @@ -6204,32 +6661,32 @@ SparseOneDimensionalModel - + Sparse 1-D - + Time - + Frame - + Label - + Unknown - + Edit Data @@ -6237,37 +6694,37 @@ SparseTimeValueModel - + Sparse Time-Value - + Time - + Frame - + Value - + Label - + Unknown - + Edit Data @@ -6275,7 +6732,7 @@ SparseValueModel - + Sparse Value @@ -6283,363 +6740,358 @@ SpectrogramLayer - - + + Colour Color - + Colour Scale Color Scale - + Window Size - + Window Overlap - - Normalize Columns - - - - - Normalize Visible Area - - - - + + Normalization + + + + Bin Display - + Threshold - + Gain - + Colour Rotation Color Rotation - + Min Frequency - + Max Frequency - + Frequency Scale - + Smoothing - + Bins - + Window - + Scale - - + + Linear - + Meter - + dBV^2 - + dBV - + Phase - - + + None - + 25 % - + 50 % - + 75 % - + 87.5 % - + 93.75 % - + No min - + 10 Hz - + 20 Hz - + 40 Hz - + 100 Hz - + 250 Hz - - + + 500 Hz - - + + 1 KHz - - + + 4 KHz - + 10 KHz - + 1.5 KHz - + 2 KHz - + 6 KHz - + 8 KHz - + 12 KHz - + 16 KHz - + No max - + Log - + All Bins - + Peak Bins - + Frequencies - + <unknown> - - + + dB - + FFT cache failed - + Failed to create the FFT model for this spectrogram. There may be insufficient memory or disc space to continue. - + Peak Frequency: %1 - %2 Hz - + Peak Frequency: %1 Hz - + Peak Pitch: %3 - %4 - + Peak Pitch: %2 - + Time: %1 - %2 - + Time: %1 - + %1Bin Frequency: %2 - %3 Hz %4Bin Pitch: %5 - %6 - + %1Bin Frequency: %2 Hz %3Bin Pitch: %4 - - + + -Inf - + dB: %1 - %2 - + dB: %1 - + Phase: %1 - %2 - + Phase: %1 - + 43Hz - + %1Hz @@ -6647,90 +7099,90 @@ SpectrumLayer - + Window Size - + Window Overlap - + Show Peak Frequencies - + Window - + Bins - + None - + 25 % - + 50 % - + 75 % - + 87.5 % - + 93.75 % - - - + + + %1 - %2 - + %1 - %2 Hz - + %1 Hz - - + + -Inf - + %1 - + %1 Bin: %2 (%3) %4 value: %5 @@ -6738,22 +7190,22 @@ - + First - + Mean - + Peak - + %1 Bin: %2 (%3) Value: %4 @@ -6764,106 +7216,119 @@ SubdividingMenu - + %1 - %2 + Surveyer + + + Yes! Take me to the survey + + + + + No, thanks + + + + TextLayer - - + + Empty Label - - + + <no text> - + In progress - + Time: %1 Height: %2 Label: %3 - - + + Enter label - - + + Please enter a new label: - + Erase Point - + Drag Label - + Move Label - + Move Label Horizontally - + Move Label Vertically - + Drag Selection - + Resize Selection - + Delete Selection - + Re-align pasted items? - + The items you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? - + Paste - + New Point @@ -6871,37 +7336,37 @@ TextModel - + Text - + Time - + Frame - + Height - + Label - + Unknown - + Edit Data @@ -6909,39 +7374,39 @@ Thumbwheel - + %1: %2%3 - + %2%3 - + New value for %1, from %2 to %3 %4: - + New value for %1, from %2 to %3: - + Enter a new value from %1 to %2 %3: - - + + Enter a new value from %1 to %2: - - + + Enter new value @@ -6949,105 +7414,105 @@ TimeInstantLayer - - + + New Point - + Plot Type - + Instants - + Segmentation - + In progress - + No local points - + Time: %1 No label - + Time: %1 Label: %2 - + Draw Point - + Add Point at %1 s - + Erase Point - + Drag Point - + Move Point to %1 s - + Edit Point - + Drag Selection - + Resize Selection - + Delete Selection - + Re-align pasted instants? - + The instants you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? - + Paste @@ -7055,207 +7520,227 @@ TimeValueLayer - - - + + + New Point - - + + Plot Type - + Vertical Scale - + Scale Units - + Draw Segment Division Lines - + Show Derivative - + Scale - + Points - + Stems - + Connected Points - + Lines - + Curve - + Segmentation - + + Discrete Curves + + + + Auto-Align - + Linear - + Log - + +/-1 - + In progress - + No local points - + + %1 Hz (%2, %3) + + + + + %1 %2 + + + + + %1 + + + + Time: %1 -Value: %2%3 +Value: %2 No label - + Time: %1 -Value: %2%3 +Value: %2 Label: %4 - + Draw Point - + Erase Point - + Drag Point - - + + Edit Point - + Relocate Point - + Change Point Value - + Drag Selection - + Resize Selection - + Delete Selected Points - + Re-align pasted items? - + The items you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? - + Paste - + The items you are pasting do not have values. What values do you want to use for these items? - + Some of the items you are pasting do not have values. What values do you want to use for these items? - + Zero for all items - + Choose value calculation - + Select cycle size - + Cycle size: @@ -7263,27 +7748,27 @@ TipDialog - + Tip of the Day - + Show tip on startup - + << Previous - + Next >> - + Close @@ -7291,136 +7776,136 @@ TransformFactory - + [\(<].*$ - - + + <unknown maker> - - + + Extract features using "%1" plugin (from %2) - - + + Extract features using "%1" output of "%2" plugin (from %3) - - + + %1 using "%2" plugin (from %3) - - + + %1 using "%2" output of "%3" plugin (from %4) - + Analysis - + Generator - - + + Other - - + + %1: %2 - + %1: Output %2 - + Extract "%1" data output from "%2" effect plugin (from %3) - + Extract data output %1 from "%2" effect plugin (from %3) - + Effects Data - + Effects - + Transform audio signal with "%1" effect plugin (from %2) - + Generate audio signal using "%1" plugin (from %2) - - + + Plugin type - - + + Category - - + + System Identifier - - + + Name - - + + Description - - + + Maker - - + + Units @@ -7428,64 +7913,64 @@ TransformFinder - + Find a Transform - + Find: - + <br>&nbsp;&nbsp;No results found - - + + Up - - + + Down - + <p>Type some text into the search box to search the descriptions of:<ul><li>All currently installed <a href="http://www.vamp-plugins.org/">Vamp</a> audio feature extraction plugins</li><li>All currently installed <a href="http://www.ladspa.org/">LADSPA</a> audio effects plugins</li><li>Vamp plugins that are not currently installed but that have descriptions published via the semantic web</li></ul> - + <b>Unable to retrieve published descriptions from network!</b> - + <b>No plugins are currently installed!</b> - + <p>%1<br>Perhaps the network connection is down, services are responding too slowly, or a processing problem has occurred.<br>Only the descriptions of installed plugins will be searched. - + <p>%1<br>Only the published descriptions of Vamp feature extraction plugins will be searched. - + <p>%1<br>%2<br>Perhaps the network connection is down, or services are responding too slowly.<br>No search results will be available. - + Found %n description(s) containing <b>%1</b>, showing the first %2 only Found %n description containing <b>%1</b>, showing the first %2 only @@ -7493,7 +7978,7 @@ - + Found %n description(s) containing <b>%1</b> Found %n description containing <b>%1</b> @@ -7501,118 +7986,188 @@ - + <i> (not installed)</i> - + %1%2<br><small> - - + + </small> - + <b>%1</b>%2<br> - - + + <small>%1</small> - + <small> - + <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&mdash; Plugin type: %1 - + <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&mdash; Category: %1 - + <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&mdash; System identifier: %1 - + <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&mdash; More information: <a href="%1">%1</a> + UnitConverter + + + Pitch + + + + + cents + + + + + In 12-tone Equal Temperament: + + + + + + = + + + + + + + + + + + Piano note + + + + + in octave + + + + + MIDI pitch + + + + + Note that only pitches in the range 0 to 127 are valid in the MIDI protocol. + + + + + Tempo + + + + + Beat period + + + + + at + + + + + With concert-A tuning frequency at %1 Hz, and middle C residing in octave %2. +(These can be changed in the application preferences.) + + + + View - + Global Scroll - + Global Zoom - + Follow Playback - + Scroll - + Page - + Off - + <unknown> - + Layer rendering error - + Alignment - + Waiting for layers to be ready... - - + + Cancel - + Rendering image... @@ -7620,97 +8175,102 @@ ViewManager - + Clear Selection - + Select Multiple Regions - + Select Region - + Enter Navigate mode - + Enter Select mode - + Enter Edit mode - + Enter Draw mode - + Enter Erase mode - + Enter Measure mode - + + Enter NoteEdit mode + + + + Switch on Loop mode - + Switch off Loop mode - + Switch on Play Selection mode - + Switch off Play Selection mode - + Switch on Play Solo mode - + Switch off Play Solo mode - + Switch on Alignment mode - + Switch off Alignment mode - + Scroll to %1 - + Zoom to %n sample(s) per pixel @@ -7718,126 +8278,118 @@ - + Change overlay level - WaveFileModel - - - Wave File - - - - WaveformLayer - - + + Scale - + Gain - + Normalize Visible Area - + Channels - + Linear - + Meter - - + + dB - + Separate - + Mean - + Butterfly - + Time: %1 - %2 - + Time: %1 - + Level: - + Left: - + Right: - + Channel %1 - + %1 %2 - %3 (%4 dB peak) - + %1 %2 (%3 dB peak) - - - + + + 0dB - - - + + + -Inf @@ -7845,12 +8397,12 @@ WindowShapePreview - + V / time - + dB / freq @@ -7858,7 +8410,7 @@ WritableWaveFileModel - + Writable Wave File diff -r ba6f95b1ff7c -r 5e6e1e074080 i18n/sonic-visualiser_ru.qm Binary file i18n/sonic-visualiser_ru.qm has changed diff -r ba6f95b1ff7c -r 5e6e1e074080 i18n/sonic-visualiser_ru.ts --- a/i18n/sonic-visualiser_ru.ts Wed Jul 15 12:27:40 2015 +0100 +++ b/i18n/sonic-visualiser_ru.ts Wed Apr 20 12:06:28 2016 +0100 @@ -1,20 +1,20 @@ - + ActivityLog - + Activity Log Журнал изменений - + <p>Activity Log lists your interactions and other events within %1.</p> <p>Список всех предпринятых вами действий с %1.</p> - + %1: %2 %1: %2 @@ -22,7 +22,7 @@ AddLayerCommand - + Add %1 Layer Добавить слой %1 @@ -30,7 +30,7 @@ AggregateWaveModel - + Aggregate Wave @@ -38,7 +38,7 @@ AlignmentModel - + Alignment Выравнивание @@ -46,17 +46,17 @@ AudioCallbackPlaySource - + Play from %1 Воспроизведение от %1 - + Stop at %1 Остановка в позиции %1 - + Change time-stretch factor to %1 Смена коэффициента растяжения во времени на %1 @@ -64,39 +64,39 @@ AudioDial - - + + Enter new value Введите новое значение - + %1: %2%3 %1: %2%3 - + %2%3 %2%3 - + New value for %1, from %2 to %3 %4: Новое значение для «%1», от %2 до %3 %4: - + New value for %1, from %2 to %3: Новое значение для «%1», от %2 до %3: - + Enter a new value from %1 to %2 %3: Введите новое значение от %1 до %2 %3: - - + + Enter a new value from %1 to %2: Введите новое значение от %1 до %2: @@ -104,100 +104,95 @@ AudioTargetFactory - (auto) - (авто) - - - + (авто) + + JACK Audio Connection Kit - Ограничить воспроизведение выделением - - - + Ограничить воспроизведение выделением + + PulseAudio Server - Сервер PulseAudio - - - + Сервер PulseAudio + + Core Audio Device - Устройство Core Audio - - - + Устройство Core Audio + + Default Soundcard Device - Звуковая карта по умолчанию + Звуковая карта по умолчанию BZipFileDevice - + File is already open Этот файл уже открыт - + Append mode not supported Режим добавления в конец не поддерживается - + File access mode not specified Способ доступа к файлам не указан - + Read and write modes both specified Режимы чтения и записи определены - + Failed to open file for writing Не удалось открыть файл для записи - + Failed to open bzip2 stream for writing Не удалось открыть поток bzip2 для записи - + Failed to open file for reading Не удалось открыть файл для чтения - + Failed to open bzip2 stream for reading Не удалось открыть поток bzip2 для чтения - + Internal error (open for neither read nor write) Внутренняя ошибка (не открывается ни на чтение, ни на запись) - + File not open Файл не открыт - + bzip2 stream write close error Ошибка закрытия записи в поток bzip2 - + bzip2 stream read close error Ошибка закрытия чтения потока bzip2 - + Internal error (close for neither read nor write) Внутренняя ошибка (не закрывается ни чтение, ни запись) - + bzip2 stream read error Ошибка чтения потока bzip2 @@ -205,7 +200,7 @@ BundleCommand - + %1 (%n change(s)) %1 (%n изменение) @@ -217,7 +212,8 @@ CSVFileWriter - + + Failed to open file %1 for writing Не удалось открыть файл %1 для записи @@ -225,7 +221,7 @@ CSVFormatDialog - + Select Data Format Выберите формат данных @@ -262,83 +258,93 @@ Данные (строки последовательны во времени) - + Please select the correct data format for this file. - - + + <ignore> - + Values - + (%1 more) - + Time Время - + End time - + Duration Длительность - + Value Значение - + + Pitch + Высота тона + + + Label Метка - + Timing is specified: - + Explicitly, in seconds - + + Explicitly, in milliseconds + + + + Explicitly, in audio sample frames - + Implicitly: rows are equally spaced in time - + Audio sample rate (Hz): Частота сэмплирования звука (Гц): - + Frame increment between rows: - + Data will be displayed in a %1 layer. @@ -356,7 +362,7 @@ Colour3DPlotLayer - + Time: %1 - %2 Bin: %3 Value: %4 @@ -365,86 +371,86 @@ Значение: %4 - - + + Linear Линейный - + <unknown> <неизвестно> - - + + Colour Цвет - - + + Scale Масштаб - + Normalize Columns Нормализовать столбцы - + Normalize Visible Area Нормализовать видимую область - - + + Log Логарифмический - + +/-1 ±1 - + Invert Vertical Scale Инвертировать масштаб по вертикали - + Always Opaque Всегда непрозрачно - + Absolute Абсолютный - + Gain Усиление - + Smooth - + Bin Scale - + Bins Бины - + dB Дб @@ -452,68 +458,84 @@ ColourMapper - - + + <unknown> <неизвестно> - Default - По умолчанию - - - + По умолчанию + + + White on Black Белое на чёрном - + Black on White Чёрное на белом - Red on Blue - Красное на синем - - - + Красное на синем + + Yellow on Black - Жёлтое на чёрном - - - + Жёлтое на чёрном + + Blue on Black - Синее на чёрном - - - + Синее на чёрном + + + + Green + Зелёный + + + + Cherry + + + + + Wasp + + + + + Ice + + + + Sunset Закат - + Fruit Salad Фруктовый салат - + Banded В полоску - + Highlight Подсветка - + Printer Принтер - + High Gain @@ -521,68 +543,67 @@ CommandHistory - - - + + &Undo &Отменить - + Ctrl+Z Ctrl+Z - - - + + + Re&do Ве&рнуть - + Ctrl+Shift+Z Ctrl+Shift+Z - + Nothing to undo Нет отменяемых действий - + Nothing to redo Нет повторяемых действий - - + + &Undo %1 &Отменить действие «%1» - - + + Re&do %1 Повто&рить действие «%1» - + Undo the last editing operation Отменить последнее действие правки - + Redo the last operation that was undone Повторить последнее действие правки - + Undo %1 Отмена действия «%1» - + Redo %1 Повтор действия «%1» @@ -590,15 +611,23 @@ CoreAudioFileReader - + Decoding %1... Декодируется %1... + DecodingWavFileReader + + + Decoding %1... + Декодируется %1... + + + Dense3DModelPeakCache - + Dense 3-D Peak Cache @@ -606,17 +635,17 @@ DenseThreeDimensionalModel - + Dense 3-D - + Time Время - + Frame Выборка @@ -624,7 +653,7 @@ DenseTimeValueModel - + Dense Time-Value @@ -632,12 +661,12 @@ Document - + Set main model to %1 Сделать %1 основной моделью - + Clear main model Очистить основную модель @@ -645,7 +674,7 @@ EditableDenseThreeDimensionalModel - + Editable Dense 3-D @@ -653,12 +682,12 @@ FFTModel - + %1 Hz %1 Гц - + FFT FFT @@ -666,22 +695,22 @@ Fader - + Level: Off Уровень: выкл - + Level: %1%2.%3%4 dB Уровень: %1%2.%3%4 Дб - + Enter new fader level Ввведите новый уровень фейдера - + New fader level, from %1 to %2 dBFS: Новый уровень фейдера, от %1 до %2 dBFS: @@ -689,48 +718,53 @@ FeatureExtractionModelTransformer - + + Transforms supplied to a single FeatureExtractionModelTransformer instance must be similar in every respect except plugin output + + + + No factory available for feature extraction plugin id "%1" (unknown plugin type, or internal error?) - + Input model for feature extraction plugin "%1" is of wrong type (internal error?) - + Failed to instantiate plugin "%1" - + Cannot provide enough channels to feature extraction plugin "%1" (plugin min is %2, max %3; input model has %4) - - + + Failed to initialise feature extraction plugin "%1" - + Feature extraction plugin "%1" rejected the given step and block sizes (%2 and %3); using plugin defaults (%4 and %5) instead - + Transform was configured for version %1 of plugin "%2", but the plugin being used is version %3 - + Plugin "%1" has no outputs У расширения "%1" нет выходов - + Plugin "%1" has no output named "%2" У расширения "%1" нет выхода с названием "%2" @@ -738,57 +772,277 @@ FileSource - - - + + + Unsupported scheme in URL Неподдерживаемая схема URL - + Downloading %1... Скачивается %1... - Failed to connect to FTP server - Не удалось соединиться с FTP-сервером - - - + Не удалось соединиться с FTP-сервером + + Login failed - Не удалось авторизоваться - - - + Не удалось авторизоваться + + Failed to change to correct directory - Не удалось поменять на корректный каталог - - - + Не удалось поменять на корректный каталог + + FTP download aborted - Скачивание с FTP-сервера прервано - - - + Скачивание с FTP-сервера прервано + + + Download cancelled Скачивание отменено - + Failed to create local file %1 Не удалось создать локальный файл %1 - + File contains no data! Файл не содержит данных! + FlexiNoteLayer + + + + + New Point + Новая точка + + + + Vertical Scale + Верт. масштаб + + + + Scale Units + Единицы шкалы + + + + Scale + + + + + Auto-Align + Автовыравнивание + + + + Linear + Линейный + + + + Log + + + + + MIDI Notes + Ноты MIDI + + + + In progress + В процессе + + + + + No local points + Нет локальных точек + + + + %1 (%2, %3 Hz) + %1 (%2, %3 Гц) + + + + %1 Hz (%2, %3) + %1Гц (%2, %3) + + + + %1 %2 + %1 %2 + + + + Time: %1 +Pitch: %2 +Duration: %3 +No label + Время: %1 +Высота тона: %2 +Длительность: %3 +Без метки + + + + Time: %1 +Pitch: %2 +Duration: %3 +Label: %4 + Время: %1 +Высота тона: %2 +Длительность: %3 +Метка: %4 + + + + Draw Point + Нарисовать точку + + + + Erase Point + + + + + Drag Point + Перетащить точку + + + + + + Edit Point + Изменить точку + + + + Relocate Point + Переместить точку + + + + Change Point Value + Изменить значение точки + + + + Add Point + Добавить точку + + + + Snap Notes + + + + + Merge Notes + + + + + Drag Selection + + + + + Resize Selection + + + + + + Delete Selected Points + Удалить выбранные точки + + + + Re-align pasted items? + Заново выровнять вставленные объекты? + + + + The items you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? + + + + + Paste + Вставить + + + + Record FlexiNote + + + + + FlexiNoteModel + + + FlexiNote + + + + + Time + Время + + + + Frame + Выборка + + + + Pitch + Высота тона + + + + Duration + Длительность + + + + Level + Уровень + + + + Label + Метка + + + + Unknown + + + + + Edit Data + Изменить данные + + + I - + Edit Data Изменить данные @@ -796,52 +1050,52 @@ ImageDialog - + Image Изображение - + Label: Метка: - + File or URL: Файл или URL: - + Browse... Просмотр... - + Preview Предпросмотр - + Unsupported scheme in URL Неподдерживаемая схема URL - + The URL scheme "%1" is not supported Схема URL "%1" не поддерживается - + Opening image URL... Открывается изображение по URL... - + File download failed Не удалось скачать файл - + Failed to download URL "%1": %2 Не удалось скачать URL "%1": %2 @@ -849,58 +1103,58 @@ ImageLayer - + In progress В процессе - - + + Select image Выбрать изображение - + Move Image Переместить изображение - + Drag Selection Перетащить выделение - + Resize Selection Изменить размер выделения - + Delete Selection Удалите выделение - + Re-align pasted items? Заново выровнять вставленные объекты? - + The items you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? - + Paste Вставить - + New Point Новая точка - + Opening image URL... Открывается изображение по URL... @@ -908,38 +1162,38 @@ ImageModel - - + + Image Изображение - + Edit Image Изменить изображение - + Time Время - + Frame Выборка - + Label Метка - + Unknown Неизвестно - + Edit Data Изменить данные @@ -947,41 +1201,40 @@ InteractiveFileFinder - - + + Select file Выберите файл - - + + All files (*.*) Все файлы (*.*) - - + + Select a session file Выберите файл сеанса - Sonic Visualiser session files (*.sv) RDF files (%1) All files (*.*) - Файлы сеансов Sonic Visualiser (*.sv) + Файлы сеансов Sonic Visualiser (*.sv) Файлы RDF (%1) Все файлы (*.*) - + Audio files (%1) All files (*.*) Звуковые файлы (%1) Все файлы (*.*) - + All supported files (%1 %2) Sonic Visualiser Layer XML files (*.svl) Comma-separated data files (*.csv) @@ -1000,7 +1253,7 @@ Все файлы (*.*) - + All supported files (%1 %2) Sonic Visualiser Layer XML files (*.svl) Comma-separated data files (*.csv) @@ -1017,34 +1270,32 @@ Все файлы (*.*) - All supported files (*.sv %1 %2) Sonic Visualiser session files (*.sv) Audio files (%2) RDF files (%1) All files (*.*) - Все поддерживаемые типы файлов (*.sv %1 %2) + Все поддерживаемые типы файлов (*.sv %1 %2) Файлы сеансов Sonic Visualiser (*.sv) Звуковые файлы (%2) Файлы RDF (%1) Все файлы (*.*) - + Image files (%1) All files (*.*) Файлы изображений (%1) Все файлы (*.*) - All supported files (*.sv %1 %2 %3) Sonic Visualiser session files (*.sv) Audio files (%1) Layer files (%2) RDF files (%3) All files (*.*) - Все поддерживаемые типы файлов (*.sv %1 %2 %3) + Все поддерживаемые типы файлов (*.sv %1 %2 %3) Файлы сеансов Sonic Visualiser (*.sv) Звуковые файлы (%1) Файлы слоев (%2) @@ -1052,81 +1303,146 @@ Все файлы (*.*) - + File does not exist Файл не существует - + <b>File not found</b><p>File "%1" does not exist <b>Файл не найден</b><p>Файл "%1" не существует - + File is not readable Файл нечитаем - + <b>File is not readable</b><p>File "%1" can not be read <b>Файл нечитаем</b><p>Файл "%1" не может быть прочитан - - + + Directory selected Выбран каталог - - + + <b>Directory selected</b><p>File "%1" is a directory <b>Выбран каталог</b><p>Файл "%1" является каталогом - + Non-file selected Выбран не файл - + <b>Not a file</b><p>Path "%1" is not a file <b>Это не файл</b><p>Путь "%1" не является файлом - + File is empty Файл пуст - + <b>File is empty</b><p>File "%1" is empty <b>Пустой файл</b><p>Файл "%1" пуст - Sonic Visualiser session files (*.sv) All files (*.*) - Файлы сеансов Sonic Visualiser (*.sv) + Файлы сеансов Sonic Visualiser (*.sv) Все файлы (*.*) - - - - + + %1 session files (*.%1) +RDF files (%3) +All files (*.*) + + + + + All supported files (%1 %2) +Comma-separated data files (*.csv) +Sonic Visualiser Layer XML files (*.svl) +Space-separated .lab files (*.lab) +RDF files (%2) +MIDI files (*.mid) +Text files (*.txt) +All files (*.*) + + + + + All supported files (%1 %2) +Comma-separated data files (*.csv) +Sonic Visualiser Layer XML files (*.svl) +Space-separated .lab files (*.lab) +RDF files (%2) +Text files (*.txt) +All files (*.*) + + + + + All supported files (*.sv %1 %2) +%3 session files (*.%4) +Audio files (%2) +RDF files (%1) +All files (*.*) + + + + + Comma-separated data files (*.csv) +Space-separated .lab files (*.lab) +Text files (*.txt) +All files (*.*) + + + + + All supported files (*.sv %1 %2 %3) +%4 session files (*.%5) +Audio files (%1) +Layer files (%2) +RDF files (%3) +All files (*.*) + + + + + %1 session files (*.%2) +All files (*.*) + + + + + + + + + + Select a file to export to Выберите файл, в который экспортировать - + WAV audio files (*.wav) All files (*.*) Звуковые файлы WAV (*.wav) Все файлы (*.*) - + Sonic Visualiser Layer XML files (*.svl) Comma-separated data files (*.csv) RDF/Turtle files (%1) @@ -1141,7 +1457,7 @@ Все файлы (*.*) - + Sonic Visualiser Layer XML files (*.svl) Comma-separated data files (*.csv) RDF/Turtle files (%1) @@ -1154,75 +1470,101 @@ Все файлы (*.*) - + + Comma-separated data files (*.csv) +Sonic Visualiser Layer XML files (*.svl) +RDF/Turtle files (%1) +MIDI files (*.mid) +Text files (*.txt) +All files (*.*) + + + + + Comma-separated data files (*.csv) +Sonic Visualiser Layer XML files (*.svl) +RDF/Turtle files (%1) +Text files (*.txt) +All files (*.*) + + + + Portable Network Graphics files (*.png) All files (*.*) Файлы Portable Network Graphics (*.png) Все файлы (*.*) - + + Comma-separated data files (*.csv) +Text files (*.txt) +All files (*.*) + + + + File exists Такой файл уже существует - + <b>File exists</b><p>The file "%1" already exists. Do you want to overwrite it? <b>Файл существует</b>Файл "%1" уже существует. Вы хотите перезаписать его? - + <b>File not found</b><p>Audio file "%1" could not be opened. Do you want to locate it? <b>Файл не найден</b><p>Не удалось открыть звуковой файл "%1". Вы хотите указать его программе? - + <b>File not found</b><p>File "%1" could not be opened. Do you want to locate it? <b>Файл не найден</b><p>Не удалось открыть файл "%1". Вы хотите указать его программе? - + Failed to open file Не удалось открыть файл - + Locate file... Указать файл... - + Use URL... Использовать URL... - + Cancel Отменить - + Use URL Использовать URL - + Please enter the URL to use for this file: Укажите URL, который будет использоваться для этого файла: - + Failed to open location Не удалось открыть местоположение - + <b>Failed to open location</b><p>URL "%1" could not be opened <b>Не удалось открыть местоположение</b><p>Не удалось открыть URL "%1". @@ -1230,65 +1572,65 @@ ItemEditDialog - + Timing Тайминг - + Time: Время: - - + + frames выборок - - + + sec с - - + + usec мс - + Duration: Длительность: - + Properties Свойства - + Value: Значение: - + Text: Текст: - + OK ОК - + Reset Сбросить - + Cancel Отменить @@ -1296,25 +1638,29 @@ KeyReference - - + + & & - + <i>or</i>&nbsp;<b>%1</b> <i>или</i>&nbsp;<b>%1</b> - + </b>&nbsp;(%1)<b> </b>&nbsp;(%1)<b> - + + %1: Key and Mouse Reference + + + Sonic Visualiser: Key and Mouse Reference - Справка по использованию клавиатуры и мыши + Справка по использованию клавиатуры и мыши @@ -1327,17 +1673,17 @@ LabelCounterInputDialog - + Set Counters Установка счётчиков - + Fine counter (beats): Точный счётчик (доли): - + Coarse counter (bars): Грубый счётчик (такты): @@ -1345,77 +1691,77 @@ Labeller - + No numbering Без нумерации - + Simple counter Простой счетчик - + Cyclical counter Циклический счетчик - + Cyclical two-level counter (bar/beat) Циклический двухуровневый счетчик (такт/доля) - + Audio sample frame number Номер выборки звукового сэмпла - + Time in seconds Время в секундах - + Duration to the following item Длительность до следующей отметки - + Tempo (bpm) based on duration to following item Темп (bpm) на основе длительности до следующей отметки - + Duration since the previous item Длительность после предыдущей отметки - + Tempo (bpm) based on duration since previous item Темп (bpm) на основе длительности после предыдущей отметки - + Same as the nearest previous item Как и ближайший предыдущий объект - + Value extracted from the item's label (where possible) Значение, извлечённое из метки объекта (если возможно) - + %1.%2 %1.%2 - + %1 %1 - + Label Points @@ -1423,134 +1769,143 @@ Layer - + Waveform Волновая форма - - - + + + Spectrogram Спектрограмма - + Ruler Линейка - + Time Instants Отметки времени - + Time Values Значения времени - + Notes Ноты - + + Flexible Notes + + + + Text Текст - + Colour 3D Plot Цветной 3D-график - + + Unknown Layer + + + + Layer + Слой + + + + Spectrum + Спектр + + + + Time Slice + + + + + Images + Изображения + + + + Regions + Области + + + + Make Measurement + Создать замер + + + + Delete Measurement + Удалить замер + + + + Layer::AddMeasurementRectCommand + + Make Measurement + Создать замер + + + + Layer::DeleteMeasurementRectCommand + + Delete Measurement + Удалить замер + + + + LayerTreeDialog + + + Layer Summary + Сводка по слою + + + + Audio Data Sources + Источники звуковых данных + + + + Panes and Layers + Окна и слои + + + + LayerTreeModel + + Layer Слой - - Spectrum - Спектр - - - - Time Slice - - - - - Images - Изображения - - - - Regions - Области - - - - Make Measurement - Создать замер - - - - Delete Measurement - Удалить замер - - - - Layer::AddMeasurementRectCommand - - Make Measurement - Создать замер - - - - Layer::DeleteMeasurementRectCommand - - Delete Measurement - Удалить замер - - - - LayerTreeDialog - - - Layer Summary - Сводка по слою - - - - Audio Data Sources - Источники звуковых данных - - - - Panes and Layers - Окна и слои - - - - LayerTreeModel - - - Layer - Слой - - - + Model Модель - + Shown Отображение - + Played Воспризведение @@ -1558,27 +1913,27 @@ MIDIFileImportDialog - + Merge all tracks Объединить все дорожки - + Merge all non-percussion tracks Объединить все неперкуссионные дорожки - + Select track or tracks to import Выберите одну или несколько дорожек для импорта - + <b>Select track to import</b><p>You can only import this file as a single annotation layer, but the file contains more than one track, or notes on more than one channel.<p>Please select the track or merged tracks you wish to import: <b>Выберите импортируемую дорожку</b><p>Вы можете импортировать этот файл лишь как одиночный слой аннотации, но в файле либо больше одной дорожки, либо ноты в более чем одном канале.<p>Выберите одну дорожку или несколько объединяемых дорожек для импорта: - + Error in MIDI file import Ошибка при импорте файла MIDI @@ -1586,89 +1941,89 @@ MIDIFileReader - + Wrong length for long data in MIDI stream (%1, should be %2) Неправильная длительность больших данных в потоке MIDI (%1, должно быть %2) - + Wrong length for int data in MIDI stream (%1, should be %2) Неправильная длительность int-данных в потоке MIDI (%1, должно быть %2) - + getMIDIByte called but no MIDI file open Функция getMIDIByte вызвана, но ни один файл MIDI не открыт - - + + End of MIDI file encountered while reading При чтении обнаружен конец файла MIDI - + Attempt to get more bytes than expected on Track Попытка получить из дорожки больше байтов, чем ожидалось - - + + Attempt to read past MIDI file end Попытка прочитать файл MIDI после его окончания - + getMIDIBytes called but no MIDI file open Функция getMIDIBytes вызвана, но ни один файл MIDI не открыт - + Attempt to get more bytes than available on Track (%1, only have %2) Попытка получить из дорожки больше байтов, чем ожидалось (%1, а есть лишь %2) - + getNumberFromMIDIBytes called but no MIDI file open Функция getNumberFromMIDIBytes вызвана, но ни один файл MIDI не открыт - + skipToNextTrack called but no MIDI file open Функция skipToNextTrack вызвана, но ни один файл MIDI не открыт - + Invalid event code %1 found Обнаружен некорректный код события %1 - + Running status used for first event in track - + MIDI file "%1" has no notes in any track Ни в одной дорожке файла MIDI "%1" нет нот - + - uses GM percussion channel — использует канал перкуссии GM - + Track %1 (%2)%3 Дорожка %1 (%2)%3 - + Track %1 (untitled)%3 Дорожка %1 (без имени)%3 - + %1 - vel %2 %1 - vel %2 @@ -1676,7 +2031,7 @@ MIDIInput - + Input Вход @@ -1684,7 +2039,7 @@ MP3FileReader - + Decoding %1... Декодируется %1... @@ -1696,29 +2051,29 @@ Sonic Visualiser - - - + + + &Layer С&лой - + &File &Файл - + File Toolbar Панель файлов - + &New Session &Создать сеанс - + Ctrl+N Ctrl+N @@ -1727,7 +2082,7 @@ &Открыть сеанс... - + Ctrl+O Ctrl+O @@ -1736,22 +2091,22 @@ Открыть файл сохранённого ранее сеанса Sonic Visualiser - + &Open... О&ткрыть... - + Open a session file, audio file, or layer Открыть файл сеанса, звуковой файл или слой - + &Save Session Сохр&анить сеанс - + Ctrl+S Ctrl+S @@ -1760,7 +2115,7 @@ Сохранить в файл текущий сеанс Sonic Visualiser - + Save Session &As... Сохранить сеанс &как... @@ -1773,7 +2128,7 @@ &Импортировать звуковой файл... - + Ctrl+I Ctrl+I @@ -1794,478 +2149,563 @@ Импортировать ещё один звуковой файл в отдельный слой - + &Export Audio File... Э&кспортировать звуковой файл... - + Export selection as an audio file Экспортировать выделенное в звуковой файл - + Import Annotation &Layer... И&мпортировать слой аннотаций... - + Ctrl+L Ctrl+L - + Import layer data from an existing file Импортировать данные слоя из существующего файла - Export Annotation Layer... - Экспортировать слой аннотаций... - - - + Экспортировать слой аннотаций... + + + Export layer data to a file Экспортировать данные слоя в файл - + &Quit В&ыход - + Ctrl+Q Ctrl+Q - + &Edit &Правка - + Cu&t &Вырезать - + Ctrl+X Ctrl+X - + &Copy С&копировать - + Ctrl+C Ctrl+C - + &Paste Вст&авить - + Ctrl+V Ctrl+V - - + + &Delete Selected Items &Удалить выбранное - + Del Del - + Select &All В&ыделить всё - + Ctrl+A Ctrl+A - + Select &Visible Range Вы&делить всё видимое - + Ctrl+Shift+A Ctrl+Shift+A - + Select to &Start Выделить до &начала - + + + + Shift+Left Shift+Left - + Select to &End Выделить до &конца - + Shift+Right Shift+Right - + C&lear Selection Сн&ять выделение - + Esc Esc - + &Insert Instant at Playback Position Вставить &отметку в точку воспроизведения - + Enter Enter - + &View &Вид - + 0 0 - + 9 9 - + 8 8 - + Scroll &Left Прокрутить в&лево - + + Playback Speed + + + + Abandon the current %1 session and start a new one - + Replace &Main Audio... - + Replace the main audio file of the session with a different file - + Save the current session into a %1 session file - + Save the current session into a new %1 session file - + + Export Audio Data... + + + + + Export Annotation La&yer... + + + + + Ctrl+Y + + + + + Browse Recorded Audio Folder + + + + + Open the Recorded Audio folder in the system file browser + + + + Exit %1 - + + Ctrl+Shift+Return + + + + Reset Numbering Counters - + Reset to 1 all the counters used for counter-based labelling - + + + + + + + Left Влево - + Scroll the current pane to the left Прокрутить активное окно влево - + Scroll &Right Прокрутить в&право - + Right Вправо - + Scroll the current pane to the right Прокрутить активное окно вправо - + + + Ctrl+Left Ctrl+Влево - + Scroll the current pane a big step to the left Сделать большой шаг прокрутки влево - + Ctrl+Right Ctrl+Вправо - + Scroll the current pane a big step to the right Сделать большой шаг прокрутки вправо - + Zoom &In При&близить - + Up Вверх - + Increase the zoom level Увеличить масштаб отображения - + Zoom &Out &Отдалить - + Down Вниз - + Decrease the zoom level Уменьшить масштаб отображения - + Restore &Default Zoom &Восстановить обычный масштаб - + Zoom to &Fit &Уместить в окне - + Zoom to show the whole file Увидеть весь файл - + Show &Centre Line - + ' - + Show or hide the centre line - + Toggle All Time Rulers - + Hide times, layer names, and scale - + Show times and basic scale - + Show times, layer names, and scale - + + Show &Unit Converter + + + + + Open a window of pitch and timing conversion utilities + + + + Go Full-Screen - + F11 F11 - + Expand the pane area to the whole screen - + &Pane &Окно - + Add &New Pane Добавить &новое окно - + Add a new pane containing only a time ruler Добавить новое окно, содержащее только линейку времени - + Add New %1 Layer Добавить новый слой «%1» - + Add a new empty layer of type %1 Добавить новый пустой слой типа «%1» - + Add &Waveform Добавить &волновую форму - + Add a new pane showing a waveform view Добавить новое окно с видом волновой формы - + Add a new layer showing a waveform view Добавить новый слой с видом волновой формы - + Add &Melodic Range Spectrogram Добавить спектограмму &мелодического диапазона - + Add a new pane showing a spectrogram set up for tracking frequencies Добавить новое окно, отображающее спектрограмму для отслеживания частот - + Add a new layer showing a spectrogram set up for tracking frequencies Добавить новый слой, отображающий спектрограмму для отслеживания частот - + &All Channels Mixed Все &каналы сведены - + &All Channels &Все каналы - + Channel &%1 Канал &%1 - + &Delete Pane У&далить окно - + Add &Time Ruler Добавить линейку &времени - + Add a new layer showing a time ruler Добавить новый слой с линейкой - + Add &Existing Layer Добавить &существующий слой - + + Switch to Previous Layer + + + + + { + + + + + Make the previous layer in the pane current + + + + + Switch to Next Layer + + + + + } + + + + + Make the next layer in the pane current + + + + &Rename Layer... &Переименовать слой... - + Rename the currently active layer Переименовать активный слой - + &Delete Layer &Удалить слой - + Delete the currently active layer Удалить активный слой - + &Help &Справка - + &Help Reference &Руководство пользователя @@ -2290,220 +2730,224 @@ Показать информацию о Sonic Visualiser - + Rewind to Start Перемотать в начало - + Home Домой - + Rewind to the start Перемотать в начало - - - + + + Rewind Перемотать назад - + Rewind to the previous time instant in the current layer Перемотать до предыдущей отметки времени в текущем слое - + Play / Pause Воспроизвести / Приостановить - + Space Пробел - + Start or stop playback from the current position Запустить или остановить воспроизведение с текущей позиции - - + + Fast Forward Перемотать вперёд - + Fast forward to the next time instant in the current layer Перемотать до следующей отметки времени в текущем слое - + Fast Forward to End Перемотать до конца - + Open a window showing the keystrokes you can use in %1 - + %1 on the &Web - + Open the %1 website - + &About %1 - + Show information about %1 - + End Конец - + Fast-forward to the end Перемотать до конца - + Play Mode Toolbar Панель режима воспроизведения - + Constrain Playback to Selection Ограничить воспроизведение выделением - + s с - + Loop Playback Воспроизведение в цикле - + l l - + Loop playback Воспроизведение в цикле - + Edit Toolbar Панель правки - + Tools Toolbar Панель инструментов - - + + + Navigate Перемещение - + 1 1 - + + Select Выделение - + 2 2 - + + + Edit Правка - + 3 3 - + + Draw Рисование - + 4 4 - + No audio file loaded. Ни один звуковой файл не загружен. - + %1Hz (resampling to %2Hz) %1 Гц (ресэмплирование до %2 Гц) - - - - - - - - + + + + + + + Failed to open file Не удалось открыть файл - + Export the selected region only Экспортировать только выделенную область - + Export the whole audio file Экспортировать весь звуковой файл - - - + + + Select region to export Выделите область для экспорта - + Which region from the original audio file do you want to export? Какую область исходного звукового файла вы хотите экспортировать? @@ -2512,30 +2956,30 @@ Экспортировать выделенные области в один звуковой файл - + Export the selected regions into separate files Экспортировать выделенные области в разные звуковые файлы - + Multiple regions of the original audio file are selected. What do you want to export? Выбрано несколько областей исходного звукового файла. Какую из них вы хотите экспортировать? - + Fragment file %1 already exists, aborting Файл фрагмента %1 уже существует, прерывание - - + + Failed to write file Не удалось записать файл - + Failed to open file %1 for writing Не удалось открыть файл %1 для записи @@ -2544,100 +2988,100 @@ Sonic Visualiser: %1 - + Session modified Сеанс изменен - - + + Failed to save file Не удалось сохранить файл - + Rename Layer Переименовать слой - + New name for this layer: Новое имя этого слоя: - + Sample rate mismatch Несоответствие частоты дискретизации - - + + Failed to regenerate layer Не удалось повторно создать слой - + http://www.sonicvisualiser.org/ http://www.sonicvisualiser.org/ - + Release %1 : Revision %2 Версия %1 : Редакция %2 - + Release %1 Версия %1 - + Unreleased : Revision %1 Не выпущено : редакция %1 - + <h3>About Sonic Visualiser</h3> <h3>О программе Sonic Visualiser</h3> - + Debug Отладка - + Release Версия - + <br>With Ogg file decoder (oggz v%1, fishsound v%2) &copy; CSIRO Australia <br>С декодером Ogg (oggz v%1, fishsound v%2) &copy; CSIRO Australia - + <br>With LADSPA plugin support (API v%1) &copy; Richard Furse, Paul Davis, Stefan Westerfeld <br>С поддержкой расширений LADSPA (API v%1) &copy; Richard Furse, Paul Davis, Stefan Westerfeld - + <br>With DSSI plugin support (API v%1) &copy; Chris Cannam, Steve Harris, Sean Bolton <br>С поддержкой расширений DSSI (API v%1) &copy; Chris Cannam, Steve Harris, Sean Bolton - + About Sonic Visualiser О программе Sonic Visualiser - - + + Failed to generate layer Не удалось создать слой - + Adjust the application preferences Изменить параметры работы приложения @@ -2646,128 +3090,128 @@ Н&едавние файлы - + &Preferences... &Параметры... - + ; ; - + Show &Zoom Wheels Показывать &колёса масштабирования - + Z Z - + Show thumbwheels for zooming horizontally and vertically Показывать колёса для масштабирования по горизонтали и вертикали - + %1 by Category %1 по категории - - + + Unclassified Неклассифицированные - + %1 by Maker %1 по имени создателя - - + + Unknown Неизвестен - + %1 by Plugin Name %1 по названию расширения - - + + %1... %1... - + Add Spectr&um Добавить &график спектральной функции - + Add a new pane showing a frequency spectrum Добавить новое окно с частотой спектра - + Add a new layer showing a frequency spectrum Добавить новый слой с частотой спектра - Playback Speedup - Ускорение воспроизведения - - - - + Ускорение воспроизведения + + + + &Transform Пр&еобразования - + + %1: %2 %1: %2 - + &Recent Transforms &Недавние преобразования - - + + [\(<].*$ [\(<].*$ - - + + Audio processing overload Перегрузка в обработке звука - + Show Property Bo&xes Показывать панели с&войств - + X X - + Show the layer property boxes at the side of the main window Показывать панели свойств слоёв сбоку от основного окна - + Add %1 Pane Добавить окно %1 @@ -2776,17 +3220,17 @@ Отказаться от текущего сеанса Sonic Visualiser и начать новый - + Open Lo&cation... Открыть &местоположение... - + Ctrl+Shift+O Ctrl+Shift+O - + Open or import a file from a remote URL Открыть или импортировать файл с удалённого узла @@ -2795,77 +3239,77 @@ Завершить работу с Sonic Visualiser - + Cut the selection from the current layer to the clipboard Вырезать выделение из активного слоя в буфер обмена - + Copy the selection from the current layer to the clipboard Скопировать выделение из активного слоя в буфер обмена - + Paste from the clipboard to the current layer Вставить содержимое буфера обмена в активный слой - + Select the whole duration of the current session Выбрать данные по всей длительности активнонр сеанса - + Select the time range corresponding to the current window width Сделать временной диапазон равным активной ширине окна - + Select from the start of the session to the current playback position Выделить от начала сеанса до текущей точки воспроизведения - + Select from the current playback position to the end of the session Выделить от текущей точки воспроизведения до конца сеанса - + Clear the selection Очистить выделение - + Insert a new time instant at the current playback position, in a new layer if necessary Вставить новую отметку времени в точку воспроизведения, при необходимости — в новый слой - + Insert Instants at Selection &Boundaries Вставить отметки времени по &краям выделения - + Shift+Enter Shift+Enter - + &Jump Left Перескочить в&лево - + J&ump Right П&ерескочить вправо - + Restore the zoom level to the default Восстановить обычный масштаб отображения - + Show &No Overlays Не по&казывать перекрытия совсем @@ -2874,7 +3318,7 @@ Спрятать индикацию центра, времён выделения, имена слоёв и масштаб - + Show &Minimal Overlays Показывать &минимум перекрытий @@ -2891,7 +3335,7 @@ Показывать индикатор центра, времена выделений, имена слоёв и масштаб - + Show &All Overlays Показывать в&се перекрытия @@ -2904,575 +3348,600 @@ Показывать весь текст и масштаб - + Show Status &Bar Показывать статусную &строку - + Show context help information in the status bar at the bottom of the window Показывать контекстную справку в статусной строке, находящейся внизу окна программы - + Add a new pane showing a spectrogram Добавить новое окно с отображением спектрограммы - + Add a new layer showing a spectrogram Добавить новый слой с отображением спектрограммы - + Add a new pane showing a spectrogram set up for an overview of note pitches Добавить новое окно, отображающее спектрограмму для обзора высоты тона нот - + Add a new layer showing a spectrogram set up for an overview of note pitches Добавить новый слой, отображающий спектрограмму для обзора высоты тона нот - + Delete the currently active pane Удалить активное окно - + Add S&lice of Layer Добавить &фрагмент слоя - + Select ranges Выбрать диапазон - + Edit items in layer Изменить объекты слоя - + Draw new items in layer Нарисовать новые объекты в слое - + Open Location Открыть местоположение - + Please enter the URL of the location to open: Введите URL открываемого местоположения: - - - - + + + + Failed to open location Не удалось открыть местоположение - + + Multiplex all of the above + + + + + Playback speed: %1% (%2x slower) + + + + + Playback speed: %1% (%2x faster) + + + + Visible: %1 to %2 (duration %3) Видимая область: от %1 до %2 (длительность %3) - + + Problems loading plugins + + + + + <b>Layer generation failed</b><p>Failed to generate derived layer.<p>The layer transform %1failed:<p>%2 + + + + + <b>Layer generation failed</b><p>Failed to generate a derived layer.<p>The layer transform %1failed.<p>No error information is available. + + + + Adjust the master playback level Изменить общую громкость воспроизведения - + Adjust the master playback speed Изменить общую скорость воспроизведения - + <br>With Ogg file decoder &copy; CSIRO Australia <br>С декодером Ogg &copy; CSIRO Australia - + <br>With MAD mp3 decoder &copy; Underbit Technologies Inc <br>С декодером MAD mp3 &copy; Underbit Technologies Inc - + <br>With libsamplerate &copy; Erik de Castro Lopo <br>С libsamplerate &copy; Erik de Castro Lopo - + <br>With libsndfile &copy; Erik de Castro Lopo <br>С libsndfile &copy; Erik de Castro Lopo - + <br>With FFTW3 &copy; Matteo Frigo and MIT <br>С FFTW3 &copy; Matteo Frigo и MIT - + <br>With Vamp plugin support (API v%1, host SDK v%2) &copy; Chris Cannam <br>С поддержкой расширений Vamp (API v%1, host SDK v%2) &copy; Chris Cannam - + <br>With Serd and Sord RDF parser and store &copy; David Robillard - + <br>With Dataquay Qt/RDF library &copy; Chris Cannam - + <br>With liblo Lite OSC library &copy; Steve Harris <br>С liblo Lite OSC library &copy; Steve Harris - + Export Image File... Экспортировать в файл изображения... - + Export a single pane to an image file Экспортировать всё окно в файл изображения - + Export the whole pane (%1x%2 pixels) Экспортировать всё окно (%1x%2 пикселов) - + Export the visible area only (%1x%2 pixels) Экспортировать только видимую часть (%1x%2 пикселов) - + Export the selection extent (%1x%2 pixels) Экспортировать выделение (%1x%2 пикселов) - + Export the selection extent Экспортировать выделение - + Which region of the current pane do you want to export as an image? Какую область текущего окна вы хотите экспортировать как изображение? - + Note: the whole pane is too wide to be exported as a single image. Примечание: всё окно слишком широко, чтобы сохранить его как изображение. - + Failed to save image file Не удалось сохранить файл изображения - + Failed to save image file %1 Не удалось сохранить файл изображения %1 - + Selection: %1 to %2 (duration %3) Выделение: %1 до %2 (длительность %3) - + Black Чёрный - + Red Красный - + Blue Синий - - - + + + Green Зелёный - + Purple Пурпурный - + Orange Оранжевый - + White Белый - + Bright Red Ярко-красный - + Bright Blue Ярко-синий - - - + + + Bright Green Ярко-зелёный - + Bright Purple Ярко-пурпурный - + Bright Orange Ярко-оранжевый - + File and Session Management Файлы и управление сеансами - + &Import More Audio... - + Import an extra audio file into a new pane - + Open &Recent - - &Export Audio Data... - - - - + Export audio from selection into a data file - + Apply Session Template - + Export Session as Template... - + Manage Exported Templates - + Editing Редактирование - + Paste at Playback Position - + Ctrl+Shift+V - + Paste from the clipboard to the current layer, placing the first item at the playback position - - + + Delete items in current selection from the current layer Удалить объекты в активном выделении текущего слоя - + Selection Выделение - + Tapping Time Instants - + Insert new time instants at the start and end of the current selected regions, in a new layer if necessary - + Number New Instants with Способ нумерации новых отметок - + Cycle size Размер цикла - + Set Numbering Counters... Установить счетчики нумерации... - + Set the counters used for counter-based labelling Устанолвить счетчики для меток на основе подсчета - + Renumber Selected Instants Перенумеровать выбранные отметки - + Renumber the selected instants using the current labelling scheme - + Panning and Navigation Прокрутка и перемещение - + Zoom Масштаб просмотра - + F F - + Display Features Отображение элементов - + # - + Show or hide all time rulers - + Show La&yer Summary &Показать сводку по слою - + Y Y - + Open a window displaying the hierarchy of panes and layers in this session Открыть окно, в котором отобразится иерархия окон и слоев активного сеанса - + Managing Panes and Layers Управление окнами и слоями - + N N - + T T - + W W - + Shift+W - + Add Spectro&gram Добавить &спектограмму - + G G - + Shift+G - + M M - + Shift+M - + Add Pea&k Frequency Spectrogram Добавить спектограмму &пиковой частоты - + K K - + Shift+K - + U U - + Shift+U - + Switch to Previous Pane Перейти к предыдущему окну - + [ [ - + Make the next pane up in the pane stack current - + Switch to Next Pane Перейти к следующему окну - + ] ] - + Make the next pane down in the pane stack current - + Ctrl+Shift+D Ctrl+Shift+D - + R R - + Edit Layer Data Изменить данные слоя - + E E - + Edit the currently active layer as a data grid Изменить активный слой как сетку данных - + Ctrl+D Ctrl+D - + Help Справка - + F1 F1 - + Open the %1 reference manual - + &Key and Mouse Reference &Использование клавиатуры и мыши - + F2 F2 @@ -3481,498 +3950,653 @@ Открыть окно, в котором перечисляются клавиатурные комбинации Sonic Visualiser - + Ctrl+R Ctrl+R - + Re-open Повторно открыть - + Re-open the current or most recently opened file Повторно открыть активный или недавно открывавшийся файл - + Standard Waveform - + Choose Default Template... - + Ctrl+T Ctrl+T - + Repeat Transform Повторить преобразование - + Re-select the most recently run transform Повторно запустить самое последнее выполнявшееся преобразование - + Playback and Transport Controls Управление воспроизведением и перемоткой - + Play&back Воспро&изведение - + Playback Воспроизведение - + Playback Toolbar Панель воспроизведения - + PgUp PgUp - + Rewind to the previous time instant or time ruler notch - + PgDown PgDown - + Fast-forward to the next time instant or time ruler notch - + + Record + + + + + Ctrl+Space + + + + + Record a new audio file + + + + Constrain playback to the selected regions - + Solo Current Pane Соло активного окна - + o o - + Solo the current pane during playback При воспроизведении звучит лишь активное окно - + Align File Timelines Выровнять линейки времени - + Treat multiple audio files as versions of the same work, and align their timelines - + Speed Up Ускорить - + Ctrl+PgUp Ctrl+PgUp - + Time-stretch playback to speed it up without changing pitch Сжать время воспроизведения, не меняя высоту тона - + Slow Down Замедлить - + Ctrl+PgDown Ctrl+PgDown - + Time-stretch playback to slow it down without changing pitch Расширить время воспроизведения, не меняя высоту тона - + Restore Normal Speed Восстановить обычную скорость - + Ctrl+Home Ctrl+Home - + Restore non-time-stretched playback Восстановить естественную скорость воспроизведения - + + + + + + Tool Selection Выбор инструмента - + + Navigate Tool Mouse Actions + Использование мыши с инструментом навигации + + + + Click left button and drag to move around + + + + + + Zoom to Area + Масштабировать в выделение + + + + + Shift-click left button and drag to zoom to a rectangular area + + + + + Relocate + Перемещение скачком + + + + + + + Double-Click Left + Двойной щелчок левой клавишей + + + + Double-click left button to jump to clicked location + + + + + + Double-click left button on an item to edit it + + + + + Select Tool Mouse Actions + Использование мыши с инструментом выделения + + + + Click left button and drag to select region; drag region edge to resize + + + + + + Multi Select + Множественное выделение + + + + Cmd-click left button and drag to select an additional region + + + + + Ctrl-click left button and drag to select an additional region + + + + + Fine Select + Выделить точно + + + + Shift-click left button and drag to select without snapping to items or grid + + + + + Edit Tool Mouse Actions + Использование мыши с инструментом редактирования + + + + Move + Переместить + + + + Click left button on an item or selected region and drag to move + + + + + Draw Tool Mouse Actions + Использование мыши с инструментом рисования + + + + Click left button and drag to create new item + Щелкните левой клавишей мыши и перетащите курсор для создания нового объекта + + + + Erase Стерка - + 5 5 - + Erase items from layer Стирать объекты слоя - + + Erase Tool Mouse Actions + + + + + Click left button on an item to remove it from the layer + + + + Measure Измеритель - + 6 6 - + Make measurements in layer Выполнять измерения в слое - + + Measure Tool Mouse Actions + Использование мыши с инструментом измерения + + + + Measure Area + Измерить область + + + + Click left button and drag to measure a rectangular area + + + + + Measure Item + Измерить объект + + + + Click left button and drag to measure extents of an item or shape + + + + &Delete Current Measurement &Удалить активный замер - + Delete the measurement currently under the mouse pointer Удалить замер, находящийся под курсором мыши - + Fast Forward to Next Instant - + Rewind to Previous Instant - + Fast Forward to Next Point - + Fast forward to the next point in the current layer - + Rewind to Previous Point - + Rewind to the previous point in the current layer - + Fast forward Быстрый вперед - - - + + + <b>File open failed</b><p>Audio file "%1" could not be opened <b>Не удалось открыть файл</b><p>Не удалось открыть звуковой файл "%1" - + Export the selected regions into a single file - + Export the whole file - + <b>File open failed</b><p>Layer file %1 could not be opened. <b>Не удалось открыть файл</b><p>Не удалось открыть файл слоя "%1" - + Can't export non-note layers to MIDI Невозможно экспортировать ненотные слои в MIDI - + Sorry, cannot export this layer type to RDF (supported types are: region, note, text, time instants, time values) - + + <h3>Newer version available</h3><p>You are using version %1 of Sonic Visualiser, but version %2 is now available.</p><p>Please see the <a href="http://sonicvisualiser.org/">Sonic Visualiser website</a> for more information.</p> + <h3>Доступна более новая версия</h3><p>Вы используетее Sonic Visualiser версии %1, но уже доступна версия %3.</p><p>Загляните на <a href="http://sonicvisualiser.org/">сайт Sonic Visualiser</a> за подробностями.</p> {3>?} {3>?} {1 ?} {2 ?} + + <b>File open failed</b><p>Session file "%1" could not be opened - <b>Не удалось открыть файл</b><p>Не удалось открыть файл сеанса "%1" - - - + <b>Не удалось открыть файл</b><p>Не удалось открыть файл сеанса "%1" + + + <b>File open failed</b><p>File "%1" could not be opened <b>Не удалось открыть файл</b><p>Не удалось открыть файл "%1" - + <b>Open failed</b><p>URL "%1" could not be opened <b>Не удалось открыть ссылку</b><p>Не удалось открыть URL "%1" - + <b>Open failed</b><p>File or URL "%1" could not be opened <b>Не удалось открыть ссылку</b><p>Не удалось открыть файл или URL "%1" - + Enter template name - + Please enter a name for the saved template: - + Set as default template for future audio files - + Template file exists - + <b>Template file exists</b><p>The template "%1" already exists.<br>Overwrite it? - - + + Failed to open dropped URL Не удалось открыть URL, перемещенный мышью в окно программы - + <b>Open failed</b><p>Dropped URL "%1" could not be opened <b>Не удалось открыть ссылку</b><p>Не удалось открыть файл URL "%1", перетащенный в окно программы мышью - + <b>Session modified</b><p>The current session has been modified.<br>Do you want to save it? <b>Сеанс изменился</b><p>Активный сеанс изменился<br>Вы хотите сохранить его? - - + + <b>Save failed</b><p>Session file "%1" could not be saved. <b>Не удалось сохранить файл</b><p>Не удалось сохранить файл сеанса "%1" - %1: %1 - %1: %1 {1:?} - - - + %1: %1 {1:?} + + + Playback speed: Normal Скорость воспроизведения: обычная - Playback speed: %1%2% - Скорость воспроизведения: %1%2% - - - + Скорость воспроизведения: %1%2% + + + <b>Wrong sample rate</b><p>The sample rate of this audio file (%1 Hz) does not match the current playback rate (%2 Hz).<p>The file will play at the wrong speed and pitch.<p>Change the <i>Resample mismatching files on import</i> option under <i>File</i> -> <i>Preferences</i> if you want to alter this behaviour. - + <b>Overloaded</b><p>Audio effects plugin auditioning has been disabled due to a processing overload. - + Reset Counters Обнуление счетчиков - - <b>Layer generation failed</b><p>Failed to generate derived layer.<p>The layer transform "%1" failed:<p>%2 - - - - - <b>Layer generation failed</b><p>Failed to generate a derived layer.<p>The layer transform "%1" failed.<p>No error information is available. - - - - - + + Warning Предупреждение - + <b>Layer generation failed</b><p>Failed to regenerate derived layer "%1" using new data model as input.<p>The layer transform "%2" failed:<p>%3 - + <b>Layer generation failed</b><p>Failed to regenerate derived layer "%1" using new data model as input.<p>The layer transform "%2" failed.<p>No error information is available. - + <b>Warning when regenerating layer</b><p>When regenerating the derived layer "%1" using new data model as input:<p>%2 - + Failed to calculate alignment Не удалось рассчитать выравнивание - + <b>Alignment calculation failed</b><p>Failed to calculate an audio alignment using transform "%1":<p>%2 - + <br>With JACK audio output library &copy; Paul Davis and Jack O'Quin <br>С библиотекой JACK &copy; Paul Davis и Jack O'Quin - + <br>With PortAudio audio output library &copy; Ross Bencina and Phil Burk <br>С библиотекой PortAudio &copy; Ross Bencina и Phil Burk - + <br>With PulseAudio audio output library &copy; Lennart Poettering and Pierre Ossman <br>С библиотекой PulseAudio &copy; Lennart Poettering и Pierre Ossman - + <b>Overloaded</b><p>Audio playback speed processing has been reduced to a single channel, due to a processing overload. - + <br>With Rubber Band &copy; Chris Cannam <br>С Rubber Band &copy; Chris Cannam - + Find a Transform... Найти эффект трансформации... - + Search for a transform from the installed plugins, by name or description Найти эффект трансформации среди установленных расширений по названию или описанию - + Ctrl+M Ctrl+M - + <p>Sonic Visualiser is a program for viewing and exploring audio data for semantic music analysis and annotation.<br><a href="http://www.sonicvisualiser.org/">http://www.sonicvisualiser.org/</a></p> <p>Sonic Visualiser — программа для просмотра и исследования звукозаписей с целью семантического анализа и аннотации музыки.<br><a href="http://www.sonicvisualiser.org/">http://www.sonicvisualiser.org/</a></p> - + <p><small>%1 : %2 configuration</small></p> <p><small>%1 : конфигурация %2</small></p> - + With Qt v%1 &copy; Nokia Corporation С использованием Qt v%1 &copy; Nokia Corporation - + <br>With JACK audio output library v%1 &copy; Paul Davis and Jack O'Quin <br>С библиотекой JACK v%1 &copy; Paul Davis и Jack O'Quin - + <br>With PulseAudio audio output library v%1 &copy; Lennart Poettering and Pierre Ossman <br>С библиотекой PulseAudio v%1 &copy; Lennart Poettering и Pierre Ossman - + <br>With MAD mp3 decoder v%1 &copy; Underbit Technologies Inc <br>С декодером mp3 MAD v%1 &copy; Underbit Technologies Inc - + <br>With libsamplerate v%1 &copy; Erik de Castro Lopo <br>С libsamplerate v%1 &copy; Erik de Castro Lopo - + <br>With libsndfile v%1 &copy; Erik de Castro Lopo <br>С libsndfile v%1 &copy; Erik de Castro Lopo - + <br>With FFTW3 v%1 &copy; Matteo Frigo and MIT <br>С FFTW3 v%1 &copy; Matteo Frigo и MIT - + <br>With Rubber Band v%1 &copy; Chris Cannam <br>С Rubber Band v%1 &copy; Chris Cannam @@ -3993,260 +4617,261 @@ <br>С движком запросов RDF Rasqal &copy; Dave Beckett и Бристольский университет - + <br>With Redland RDF datastore v%1 &copy; Dave Beckett and the University of Bristol <br>C хранилищем данных RDF Redland v%1 &copy; Dave Beckett и Бристольский университет - + <br>With Redland RDF datastore &copy; Dave Beckett and the University of Bristol <br>C хранилищем данных RDF Redland &copy; Dave Beckett и Бристольский университет - + <br>With liblo Lite OSC library v%1 &copy; Steve Harris <br>С библиотекой OSC liblo v%1 &copy; Steve Harris - + </small><p><small>The OSC URL for this instance is: "%1" </small><p><small>Адрес OSC для этого сеанса: "%1" - + With С - + Using Используя - + Peek Left Глянуть влево - + Alt+Left Alt+влево - + Scroll the current pane to the left without moving the playback cursor or other panes - + Peek Right Глянуть вправо - + Alt+Right Alt+вправо - + Scroll the current pane to the right without moving the playback cursor or other panes - + Show Acti&vity Log Показать &журнал действий - + Open a window listing interactions and other events Открыть окно со списком всех действий в сеансе - + Export multiple audio files Экспортировать несколько звуковых файлов - + Export audio to "%1" Экспорт звука в "%1" - - - - - + + + + + <b>Audio required</b><p>Unable to load layer data from "%1" without an audio file.<br>Please load at least one audio file before importing annotations. - + Export layer to "%1" Экспорт слоя в "%1" - + Export image to "%1" Экспорт изображения в "%1" - + Close the current session and create a new one - + Add this data to the current session Добавить эти данные в активный сеанс - + Select target for import Выбрать цель для импорта - + <b>Select a target for import</b><p>This RDF document refers to one or more audio files.<br>You already have an audio waveform loaded.<br>What would you like to do with the new data? <b>Выберите цель импорта</b><p>Этот документ RDF ссылается на один или более звуковых файлов.<br>У вас уже есть один загруженный звуковой файл.<br>Что вы хотите сделать с новыми данными? - + Save session as "%1" Сохранение сеанса как "%1" - + Add Point Добавить точку - + http://www.sonicvisualiser.org/doc/reference/%1/en/ http://www.sonicvisualiser.org/doc/reference/%1/en/ - + <br>With RtMidi &copy; Gary P. Scavone <br>С RtMidi &copy; Gary P. Scavone - + Ctrl+Shift+S Ctrl+Shift+S - + Insert Item at Selection Вставить объект в выделение - Ctrl+Shift+Enter - Ctrl+Shift+Enter - - - + Ctrl+Shift+Enter + + + Insert a new note or region item corresponding to the current selection - + Rewind to Similar Point Назад к первой схожей точке - + Shift+PgUp Shift+PgUp - + Rewind to the previous similarly valued time instant - + Fast Forward to Similar Point Вперед к первой схожей точке - + Shift+PgDown Shift+PgDown - + Fast-forward to the next similarly valued time instant + 1. %2 - 1. %2 - - + 1. %2 + + + %1. %2 - %1. %2 - - - + %1. %2 + + + Select audio file to export Укажите экспортируемый звуковой файл - + Which audio file do you want to export from? Какой звуковой файл вы хотите экспортировать? - + Newer version available Доступна более новая версия - <h3>Newer version available</h3><p>You are using version %1 of Sonic Visualiser, but version %3 is now available.</p><p>Please see the <a href="http://sonicvisualiser.org/">Sonic Visualiser website</a> for more information.</p> - <h3>Доступна более новая версия</h3><p>Вы используетее Sonic Visualiser версии %1, но уже доступна версия %3.</p><p>Загляните на <a href="http://sonicvisualiser.org/">сайт Sonic Visualiser</a> за подробностями.</p> + <h3>Доступна более новая версия</h3><p>Вы используетее Sonic Visualiser версии %1, но уже доступна версия %3.</p><p>Загляните на <a href="http://sonicvisualiser.org/">сайт Sonic Visualiser</a> за подробностями.</p> MainWindowBase - + %1 (modified) %1 (изменен) - + (modified) (изменен) - + Cut Вырезать - + Paste Вставить - - - - + + + + + Add Point Добавить точку - + Add Point at %1 s Добавить точку по отметке %1 с - + Opening file or URL... Открывается файл или URL... @@ -4259,130 +4884,140 @@ Загрузить этот файл в новое окно волновой формы - + Select target for import Выбрать цель для импорта - + <b>Select a target for import</b><p>You already have an audio file loaded.<br>What would you like to do with the new audio file? - - - + + + + %1: %2 %1: %2 - + + %1: %2 [%3] %1: %2 [%3] - - + + Import "%1" Импортировать "%1" - + Opening playlist... Открывается список воспроизведения... - + Opening session... Открывается сеанс... - - + + SV XML file read error: %1 Ошибка чтения XML-файла SV: %1 - + Open session template "%1" - + <b>Failed to import RDF</b><p>No suitable data models found for import from RDF document at "%1"</p> - - + Couldn't open audio device Не удалось открыть звуковое устройство - - - + + + Failed to write file Не удалось записать файл - - - + + + <b>Save failed</b><p>Failed to write to file "%1": %2 <b>Не удалось сохранить</b><p>Не удалось записать файл "%1": %2 - + + Import Recorded Audio + + + + Add Pane Добавить окно - + Remove Pane Удалить окно - - + + Delete Pane Удалить окно - + Playing: %1 of %2 (%3 remaining) Воспроизводится: %1 из %2 (осталось %3) - + + Recording: %1 + + + + <b>No audio available</b><p>Could not open an audio device for playback.<p>Automatic audio device detection failed. Audio playback will not be available during this session.</p> <b>Беззвучный режим</b><p>Не удалось открыть звуковое устройство для воспроизведения.<p>Не удалось автоматически определить звуковое устройство. На этот раз придется обойтись без воспроизведения звука.</p> - + Close the current session and start a new one - + Replace the main audio file in this session - + Add the audio file to this session - <b>No audio available</b><p>Failed to open your preferred audio device ("%1").<p>Audio playback will not be available during this session.</p> - <b>Беззвучный режим</b><p>Не удалось открыть предпочитаемое звуковое устройство («%1»).<p>На этот раз придется обойтись без воспроизведения звука.</p> - - - - + <b>Беззвучный режим</b><p>Не удалось открыть предпочитаемое звуковое устройство («%1»).<p>На этот раз придется обойтись без воспроизведения звука.</p> + + + + Importing from RDF... Выполняется импорт из RDF... @@ -4391,43 +5026,43 @@ <b>Выберите цель импорта</b><p>У вас уже есть один загруженный звуковой файл.<br>Что вы хотите сделать с новыми звуковыми данными? - + Import audio file "%1" Импорт звукового файла "%1" - + Import layer XML file "%1" Импорт XML-файла слоя "%1" - + Import MIDI file "%1" Импорт файла MIDI "%1" - + Import session file "%1" Импорт файла сеанса "%1" - - + + Failed to import RDF Не удалось импортировать RDF - + <b>Failed to import RDF</b><p>Importing data from RDF document at "%1" failed: %2</p> <b>Не удалось импортировать RDF</b><p>Не удалось импортировать данные из документа RDF "%1": %2</p> - + Import RDF document "%1" Импорт документа RDF "%1" - + Add Item at %1 s Добавить объект в позицию %1с @@ -4449,77 +5084,77 @@ ModelDataTableDialog - + Data Editor Редактор данных - + Playback Toolbar Панель воспроизведения - + Play Mode Toolbar Панель режима воспроизведения - + Track Playback Переключить воспроизведение - + Toggle tracking of playback position Переключить отслеживание позиции воспроизведения - + Edit Toolbar Панель правки - + Insert New Item Вставить новый объект - + Insert Вставить - + Insert a new item Вставить новый объект - + Delete Selected Items Удалить выбранные объекты - + Delete Удалить - + Delete the selected item or items Удалить выбранные объекты - + Data in Layer Данные в слое - + Find: Искать: - + @@ -4527,22 +5162,22 @@ ModelMetadataModel - + Type Тип - + Name Название - + Maker Создатель - + Source Источник @@ -4550,48 +5185,66 @@ ModelTransformerFactory - + %1 <%2> %1 <%2> - + %1: %2 %1: %2 + NetworkPermissionTester + + + Welcome to Sonic Visualiser + + + + + <h2>Welcome to Sonic Visualiser!</h2><p><img src=":icons/qm-logo-smaller.png" style="float:right">Sonic Visualiser is a program for viewing and exploring audio data for semantic music analysis and annotation.</p><p>Developed in the Centre for Digital Music at Queen Mary, University of London, Sonic Visualiser is provided free as open source software under the GNU General Public License.</p><p><hr></p><p><b>Before we go on...</b></p><p>Sonic Visualiser would like to make networking connections and open a network port.</p><p>This is to:</p><ul><li> Find information about available and installed plugins;</li><li> Support the use of Open Sound Control, where configured; and</li><li> Tell you when updates are available.</li></ul><p>No personal information will be sent, no tracking is carried out, and all requests happen in the background without interrupting your work.</p><p>We recommend that you allow this, because it makes Sonic Visualiser more useful. But if you do not wish to do so, please un-check the box below.<br></p> + + + + + Allow this + + + + NoteLayer - - - + + + New Point Новая точка - + Vertical Scale Верт. масштаб - + Auto-Align Автовыравнивание - + In progress В процессе - - + + No local points Нет локальных точек - + Time: %1 Pitch: %2 Duration: %3 @@ -4602,7 +5255,7 @@ Без метки - + Time: %1 Pitch: %2 Duration: %3 @@ -4613,108 +5266,108 @@ Метка: %4 - + Draw Point Нарисовать точку - + Drag Point Перетащить точку - - + + Edit Point Изменить точку - + Relocate Point Переместить точку - + Change Point Value Изменить значение точки - + Drag Selection Перетащить выделение - + Resize Selection Изменить размер выделения - + Delete Selected Points Удалить выбранные точки - + Paste Вставить - + Scale Units Единицы шкалы - + Scale Масштаб - + Linear Линейный - + Log Логарифмический - + MIDI Notes Ноты MIDI - + %1 %2 %1 %2 - + Erase Point Стереть точку - + Re-align pasted items? Заново выровнять вставленные объекты? - + The items you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? - + Record Note - + %1 (%2, %3 Hz) %1 (%2, %3 Гц) - + %1 Hz (%2, %3) %1Гц (%2, %3) @@ -4722,47 +5375,47 @@ NoteModel - + Note Нота - + Time Время - + Frame Выборка - + Pitch Высота тона - + Duration Длительность - + Level Уровень - + Label Метка - + Unknown Неизвестно - + Edit Data Изменить данные @@ -4770,7 +5423,7 @@ OggVorbisFileReader - + Decoding %1... Декодируется %1... @@ -4778,12 +5431,12 @@ Overview - + Overview Обзор - + Click and drag to navigate; double-click to jump Щёлкните и потащите для перемещения по окну; щёлкните дважды для скачка @@ -4791,465 +5444,376 @@ Pane - + Some lengthy prefix: Некий длинный префикс: - + (R) (R) - + (X) (X) - + %1 / %2Hz%3 %1 / %2 Гц%3 - + Drag Selection Перетащить выделение - + Resize Selection Изменить выделение - + Horizontal Zoom Горизонтальное масштабирование - + Vertical Zoom Вертикальное масштабирование - + Enter new range Введите новый диапазон - + New vertical display range, from %1 to %2 %4: Новый диапазон отображения по вертикали, от %1 до %2 %4: - + Click and drag to navigate Щёлкните и потащите для перемещения по окну - + Click and drag to select a range; hold Shift to avoid snapping to items; hold Ctrl for multi-select; middle-click and drag to navigate Щёлкните и потащите для выделения области; + Shift — для отключения прилипания к объектам; + Ctrl — для выделения нескольких объектов, + средняя клавиша мыши — для перемещения по окну - + Click and drag to select a range; hold Shift to avoid snapping to items; hold Cmd for multi-select; middle-click and drag to navigate Щёлкните и потащите для выделения области; + Shift — для отключения прилипания к объектам; + Cmd — для выделения нескольких объектов, + средняя клавиша мыши — для перемещения по окну - + Click and drag to select a range; hold Ctrl for multi-select; middle-click and drag to navigate Щёлкните и потащите для выделения диапазона; + Ctrl — для выделения нескольких объектов, + средняя клавиша мыши — для перемещения по окну - + Click and drag to select a range; hold Cmd for multi-select; middle-click and drag to navigate Щёлкните и потащите для выделения диапазона; + Cmd — для выделения нескольких объектов, + средняя клавиша мыши — для перемещения по окну - + Click and drag to move the selection boundary Щёлкните и потащите для перемещения границ выделения - + Click and drag to select a range; hold Shift to avoid snapping to items; middle-click to navigate Щёлкните и потащите для выделения области; + Shift — для отключения прилипания к объектам; + средняя клавиша мыши — для перемещения по окну - + Click and drag to select a range; middle-click and drag to navigate Щёлкните и потащите для выделения области; + средняя клавиша мыши — для перемещения по окну - + Click to add a new item in the active layer Щёлкните для добавления нового объекта на активный слой - + Click and drag to move all items in the selected range Щёлкните и потащите все объекты в выделенной области - + Click and drag to adjust the visible range of the vertical scale Щёлкните и потащите для смены видимого диапазона масштабирования по вертикали - + Click and drag to adjust the vertical zoom level Щёлкните и потащите для смены уровня масштабирования по вертикали - + Click and drag to adjust the horizontal zoom level Щёлкните и потащите для смены уровня масштабирования по горизонтали - + Reset horizontal and vertical zoom levels to their defaults Сбросить уровни масштабирования по горизонтали и вертикали до исходных значений - + Reference - - + + Unaligned - + Aligning: %1% - + Aligned - + %1 - %2 %1 - %2 - - + + +%1 - - + + Zoom Масштабирование отображения - + Zoom In Приблизить - + Wheel Up Колесом вверх - + Zoom Out Отдалить - + Wheel Down Колесом вниз - + General Pane Mouse Actions Использование мыши в окнах - + Wheel Колесо - + Zoom in or out in time axis Приближение и отдаление по временной шкале - + Ctrl+Wheel Ctrl+прокрутка - + Scroll Прокручивать окно сеанса - + Scroll rapidly left or right in time axis Быстро перемещаться вправо и влево по временной шкале - + Zoom Vertically Вертикальный масштаб - + Shift+Wheel Shift+прокрутка - + Zoom in or out in the vertical axis Масштабировать отображение по вертикальной оси - + Scroll Vertically Прокрутка по вертикали - + Alt+Wheel Alt+Колесо - + Scroll up or down in the vertical axis Прокручивать отображение по вертикальной оси - - + Navigate Перемещение - + Middle - + Click middle button and drag to navigate with any tool - - + Relocate Перемещение скачком - + Double-Click Middle Двойной щелчок средней клавишей - + Double-click middle button to relocate with any tool Перескочить вправо или влево в зависимости от положения курсора - + Menu Меню - + Right Правая клавиша - + Show pane context menu Показать контекстное меню окна - Navigate Tool Mouse Actions - Использование мыши с инструментом навигации - - - - - - - + Использование мыши с инструментом навигации + + Left - Левая клавиша - - - - Click left button and drag to move around - - - - - + Левая клавиша + + Zoom to Area - Масштабировать в выделение - - - - - + Масштабировать в выделение + + Shift+Left - Shift+Left - - - - - Shift-click left button and drag to zoom to a rectangular area - - - - - - - + Shift+Left + + Double-Click Left - Двойной щелчок левой клавишей - - - - Double-click left button to jump to clicked location - - - - - + Двойной щелчок левой клавишей + + Edit - Изменить - - - - - Double-click left button on an item to edit it - - - - + Изменить + + Select Tool Mouse Actions - Использование мыши с инструментом выделения - - - + Использование мыши с инструментом выделения + + Select - Выделить - - - - Click left button and drag to select region; drag region edge to resize - - - - + Выделить + + Multi Select - Множественное выделение - - - + Множественное выделение + + Ctrl+Left - Ctrl+Влево - - - - Cmd-click left button and drag to select an additional region - - - - - Ctrl-click left button and drag to select an additional region - - - - + Ctrl+Влево + + Fine Select - Выделить точно - - - - Shift-click left button and drag to select without snapping to items or grid - - - - + Выделить точно + + Edit Tool Mouse Actions - Использование мыши с инструментом редактирования - - - + Использование мыши с инструментом редактирования + + Move - Переместить - - - - Click left button on an item or selected region and drag to move - - - - + Переместить + + Draw Tool Mouse Actions - Использование мыши с инструментом рисования - - - + Использование мыши с инструментом рисования + + Draw - Рисовать - - - + Рисовать + + Click left button and drag to create new item - Щелкните левой клавишей мыши и перетащите курсор для создания нового объекта - - - + Щелкните левой клавишей мыши и перетащите курсор для создания нового объекта + + Measure Tool Mouse Actions - Использование мыши с инструментом измерения - - - + Использование мыши с инструментом измерения + + Measure Area - Измерить область - - - - Click left button and drag to measure a rectangular area - - - - + Измерить область + + Measure Item - Измерить объект - - - - Click left button and drag to measure extents of an item or shape - - - - + Измерить объект + + + Click to erase an item from the active layer - + Reset zoom to default - + Click and drag an item in the active layer to move it; hold Shift to override initial resistance @@ -5257,34 +5821,37 @@ PlayParameterRepository - + Adjust Playback Parameters Коррекция параметров воспроизведения - + Change Playback Mute State Смена состояния приглушенности воспроизведения - + Change Playback Gain Смена громкости воспроизведения - + Change Playback Pan Смена панорамы при воспроизведении - + + Change Playback Sample + + + Change Playback Plugin - Смена расширения воспроизведения - - - + Смена расширения воспроизведения + + Configure Playback Plugin - Смена параметров расширения воспроизведения + Смена параметров расширения воспроизведения @@ -5317,12 +5884,12 @@ PluginParameterBox - + This plugin has no adjustable parameters. У этого расширения нет изменяемых параметров. - + Program Программа @@ -5330,58 +5897,58 @@ PluginParameterDialog - + Name: Название: - + Maker: Автор: - + Copyright: Авторские права: - + Version: Версия: - - + + Plugin Parameters Параметры расширения - + Channel mismatch Несовпадение каналов - + This plugin requires at least %1 input channels, but only %2 %3 available. The plugin probably will not work correctly. Этому расширению нужно хотя бы %1 вхдных каналовs, но лишь %2 %3 доступны. Вероятно, расширение не сработает как должно. - + are являются - + is является - + Channels Каналы - + This plugin accepts no more than %1 input channels, but %2 are available. Only the first %3 will be used. @@ -5390,70 +5957,70 @@ - + This plugin only has a single channel input, but the source has %1 channels. Это расширение может обрабатывать только один канал, но у источника %1 каналов. - + Use mean of source channels Использовать среднее значение каналов источника - + Use channel %1 only Использовать только канал %1 - + Output: Выход: - + Processing Обработка - + Window size: Размер оконной функции: - + Audio frames per block: Выборок звука на блок: - + Window increment: Шаг: - + Window shape: Форма: - - + + Advanced >> Больше >> - + Advanced << Меньше << - + Input Material - + Restrict to selection extents Только выделение @@ -5461,214 +6028,258 @@ Preferences - + Frequency of concert A Частота условной ноты Ля (A) - + Property box layout Внешний вид панели свойств - + Spectral analysis window shape Форма оконной функции при спектральном анализе - + + Normalise audio signal when reading from audio file + + + + + Single fixed sample rate to resample all files to + + + + + Time display precision + + + + + Use hours:minutes:seconds format + + + + + Label middle C as + + + + Show boxes for all panes Показывать панели для всех окон - + Show box for current pane only Показывать панель только для активного окна - + Rectangular Прямоугольная - + Triangular Треугольная - + Hamming Хамминга - + Blackman Блэкмена - + Gaussian Гауссова - + Parzen Парзена - + Nuttall Нутталла - + Blackman-Harris Блэкмена-Харриса - + + C0 - middle of octave scale + + + + + C3 - common MIDI sequencer convention + + + + + C4 - ASA American standard + + + + + C5 - used in Cakewalk and others + + + + Preferences Параметры - + Playback resampler type Тип ресэмплирования при воспроизведении - + Fastest Самый быстрый - + Standard Обычный - + Highest quality Наивысшего качества - + Spectrogram y-axis interpolation: Интерполяция оси Y спектрограммы: - + Omit temporaries from Recent Files menu Пропускать временные файлы в меню недавно открывавшихся - + Resample mismatching files on import Ресэмплировать файлы при импорте - + Location for cache file directory Расположение каталога с кэшем - + Background colour preference Предпочитаемый цвет фона - + Font size for text overlays Кегль шрифта для текстовых перекрытий - + Show splash screen on startup Показывать заставку при старте программы - + Hann Хэнна - + Follow desktop theme Использовать параметры окружения - + Dark background Темный фон - + Light background Светлый фон - + Spectrogram x-axis interpolation: Интерполяция спектрограммы по оси X: - - + + None Нет - - + + Linear interpolation Линейная интерполяция - + 4 x Oversampling 4 × пересэмплированная - + 4 x Oversampling with interpolation 4 × пересэмплированная с интерполяцией - Time display format - Формат отображения времени - - - + Формат отображения времени + + + Standard (to millisecond) Обычный (до мс) - + High resolution (to microsecond) Высокое разрешение (до мкс) - + 24 FPS 24 кадра/с - + 25 FPS 25 кадров/с - + 30 FPS 30 кадров/с - + 50 FPS 50 кадров/с - + 60 FPS 60 кадров/с @@ -5676,117 +6287,145 @@ PreferencesDialog - + Apply Применить - - - - - - - - - + - + + + + + + + + + + + + %1: %1: - + + Default spectrogram colour: + + + + + Default melodic spectrogram colour: + + + + + Default colour 3D plot colour: + + + + OK ОК - + Cancel Отменить - + Sonic Visualiser: Application Preferences Параметры работы Sonic Visualiser - + <home directory> <домашний каталог> - + Follow system locale - + Russian - + British English - + American English - + Czech - + User interface language - + + Allow network usage + + + + &General О&бщие - + + Draw layers at Retina resolution: + + + + Default session template for audio files: - + Standard Waveform - + Session &Template - + Select a directory to create cache subdirectory in Выберите каталог для хранения кэша - + Preferences Параметры - + <b>Restart required</b><p>One or more of the application preferences you have changed may not take full effect until Sonic Visualiser is restarted.</p><p>Please exit and restart the application now if you want these changes to take effect immediately.</p> <b>Требуется перезапуск программы</b><p>Некоторые изменившиеся параметры не могут быть учтены без перезапуска Sonic Visualiser.</p><p>Завершите работу с программой и повторно запустите ее, чтобы внесенные изменения возымели эффект.</p> - + Preferences Changed Параметры изменены - + Some preferences have been changed but not applied. Apply them before closing? Некоторые параметры работы программы @@ -5794,17 +6433,16 @@ Применить их перед закрытием? - Playback audio device: - Устройство воспроизведения: - - - + Устройство воспроизведения: + + + &Appearance Об&лик - + Anal&ysis &Анализ @@ -5812,7 +6450,7 @@ ProgressDialog - + Cancel Отменить @@ -5820,78 +6458,83 @@ PropertyBox - + Show Показать - + Play Воспроизвести - - + + Playback Pan / Balance Панорама/баланс при воспроизведении - + Playback Gain Усиление воспроизведения - + dB Дб - + + Set playback clip: + + + + (current value: %1%2) (текущее значение: %1%2) - + (current value: %1) (текущее значение: %1) - + Toggle Visibility of %1 Переключить видимость %1 - + Toggle Playback of %1 Переключить воспроизведение %1 - + Toggle %1 property of %2 Переключить %1 свойство %2 - + Adjust %1 property of %2%3 Скорректировать %1 свойство %2%3 - + Add New Colour... Добавить новый цвет... - + Name New Colour Дайте цвету название - + Enter a name for the new colour: Введите название нового цвета: - + Prefer black background for this colour Предпочитать черный фон для этого цвета @@ -5899,37 +6542,37 @@ PropertyContainer - + yes да - + on вкл - + true правда - + no нет - + off выкл - + false ложь - + Set %1 Property Установить свойство %1 @@ -5944,12 +6587,12 @@ PropertyStack - + Click to change the current active layer Щёлкните для смены активного слоя - + Change Layer Visibility Переключить видимость слоя @@ -5957,7 +6600,7 @@ QApplication - + Sonic Visualiser is a program for viewing and exploring audio data for semantic music analysis and annotation. @@ -5984,7 +6627,7 @@ - + Sonic Visualiser Sonic Visualiser @@ -5992,22 +6635,20 @@ QFile - - - + + File "%1" does not exist Файл "%1" не существует - - - + + Failed to open file "%1" Не удалось открыть файл "%1" - - + + File or URL "%1" could not be retrieved Файл или URL "%1" не мог быть получен @@ -6015,26 +6656,55 @@ QMessageBox - - + + Failed to open file Не удалось открыть файл - + File or URL "%1" could not be opened Файл или URL "%1" не мог быть открыт - + <b>Audio required</b><p>Please load at least one audio file before importing annotation data <b>Нужны звуковые данные</b><p>Загрузите хотя бы один звуковой файл перед импортом аннотаций + QObject + + + <b>Failed to load plugins</b><p>Failed to load one or more plugin libraries:</p> + + + + + + Failed to load library + + + + + Failed to query plugins from library after loading + + + + + Unknown failure + + + + + Success: internal error? + + + + QuickTimeFileReader - + Decoding %1... Декодируется %1... @@ -6042,17 +6712,17 @@ RDFImporter - + Importing audio referenced in RDF... - + Importing dense signal data from RDF... - + Importing event data from RDF... @@ -6060,7 +6730,7 @@ RangeInputDialog - + to до @@ -6068,81 +6738,89 @@ RangeSummarisableTimeValueModel - + Range-Summarisable Time-Value + ReadOnlyWaveFileModel + + + Wave File + Звуковой файл + + + RegionLayer - + Vertical Scale Верт. масштаб - + Scale Units Единицы шкалы - + Plot Type Тип графика - + Scale Масштаб - + Bars Такты - + Segmentation Сегментация - + Auto-Align Автовыравнивание - + Equal Spaced Равные промежутки - + Linear Линейный - + Log Логарифмический - + In progress В процессе - - + + No local points Нет локальных точек - + %1 %2 %1 %2 - + Time: %1 Value: %2 Duration: %3 @@ -6153,7 +6831,7 @@ Без метки - + Time: %1 Value: %2 Duration: %3 @@ -6164,69 +6842,69 @@ Метка: %4 - + Change Point Value Изменить значение точки - + Drag Selection Перетащить выделение - + Resize Selection Изменить размер выделения - + Delete Selected Points Удалить выбранные точки - + Re-align pasted items? Заново выровнять вставленные объекты? - + The items you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? - + Paste Вставить - - + + New Region - + Draw Region - + Erase Region - + Drag Region - - + + Edit Region - + Relocate Region @@ -6234,42 +6912,42 @@ RegionModel - + Region Область - + Time Время - + Frame Выборка - + Value Значение - + Duration Длительность - + Label Метка - + Unknown Неизвестно - + Edit Data Изменить данные @@ -6277,7 +6955,7 @@ RemoveLayerCommand - + Delete %1 Layer Удалить слой %1 @@ -6285,21 +6963,20 @@ ResamplingWavFileReader - Resampling %1... - Ресэмплирование %1... + Ресэмплирование %1... SVFileReader - - + + (derived model in SV-XML) (модель извлечена в SV-XML) - + Opening file or URL... Открывается файл или URL... @@ -6307,12 +6984,12 @@ SingleColourLayer - + Colour Цвет - + <unknown> <неизвестно> @@ -6320,113 +6997,113 @@ SliceLayer - - + + %1 - %2 %1 - %2 - + First - - + + Mean Усреднённо - - + + Peak Пик - + 0dB 0 Дб - + -Inf -Inf - + x10 x10 - + Plot Type Тип графика - - + + Scale Масштаб - + Normalize Нормализовать - + Gain Усиление - + Sampling Mode Режим сэмплирования - - + + Linear Линейный - + Meter Счетчик - - + + dB Дб - + Any Любые - + Lines Линии - + Steps Шаги - + Blocks Блоки - + Colours Цвета - + Time: %1 - %2 Range: %3 samples (%4) Bin: %5 @@ -6437,40 +7114,40 @@ %6 значение: %7 - + Time: %1 - %2 Range: %3 samples (%4) Время: %1 - %2 Диапазон: %3 сэмплов (%4) - + Threshold Порог - + Bin Scale - + Bins Бины - - + + Log - + Absolute Абсолютный - + Rev Log @@ -6490,22 +7167,22 @@ Переразметить точку - + Sparse - + Edit Data Изменить данные - + Insert Data Point - + Delete Data Point @@ -6513,7 +7190,7 @@ SparseModel::AddPointCommand - + Add Point Добавить точку @@ -6521,7 +7198,7 @@ SparseModel::DeletePointCommand - + Delete Point Удалить точку @@ -6529,7 +7206,7 @@ SparseModel::RelabelCommand - + Re-Label Point Переразметить точку @@ -6537,32 +7214,32 @@ SparseOneDimensionalModel - + Sparse 1-D - + Time Время - + Frame Выборка - + Label Метка - + Unknown Неизвестно - + Edit Data Изменить данные @@ -6570,37 +7247,37 @@ SparseTimeValueModel - + Sparse Time-Value - + Time Время - + Frame Выборка - + Value Значение - + Label Метка - + Unknown Неизвестно - + Edit Data Изменить данные @@ -6608,7 +7285,7 @@ SparseValueModel - + Sparse Value @@ -6616,250 +7293,254 @@ SpectrogramLayer - - + + Colour Цвет - + Colour Scale - + Window Size Размер окна - Normalize Columns - Нормализовать столбцы - - - + Нормализовать столбцы + + + Bin Display - + Threshold Порог - + Gain Усиление - + Colour Rotation Вращение цвета - + Min Frequency Мин. частота - + Max Frequency Макс. частота - + Frequency Scale - + Window Окно - + Scale Масштаб - - + + Linear Линейный - + Meter Счетчик - - + + dB Дб - + Phase Фаза - + + Normalization + + + + No min Без минимума - + 10 Hz 10 Гц - + 20 Hz 20 Гц - + 40 Hz 40 Гц - + 100 Hz 100 Гц - + 250 Hz 250 Гц - - + + 500 Hz 500 Гц - - + + 1 KHz 1 КГц - - + + 4 KHz 4 КГц - + 10 KHz 10 КГц - + 1.5 KHz 1,5 КГц - + 2 KHz 2 КГц - + 6 KHz 6 КГц - + 8 KHz 8 КГц - + 12 KHz 12 КГц - + 16 KHz 16 КГц - + No max Без максимума - + Log Логарифм. - + All Bins Все бины - + Peak Bins Пиковые бины - + Frequencies Частоты - + <unknown> <неизвестно> - + Peak Frequency: %1 - %2 Hz Пиковая частота: %1 - %2 Гц - + Peak Frequency: %1 Hz Пиковая частота: %1 Гц - + Peak Pitch: %3 - %4 Пиковая высота тона: %3 - %4 - + Peak Pitch: %2 Пиковая высота тона: %2 - + Time: %1 - %2 Время: %1 - %2 - + Time: %1 Время: %1 - + %1Bin Frequency: %2 - %3 Hz %4Bin Pitch: %5 - %6 @@ -6868,7 +7549,7 @@ - + %1Bin Frequency: %2 Hz %3Bin Pitch: %4 @@ -6877,115 +7558,114 @@ - - + + -Inf -Inf - + dB: %1 - %2 Дб: %1 - %2 - + dB: %1 Дб: %1 - + Phase: %1 - %2 Фаза: %1 - %2 - + Phase: %1 Фаза: %1 - + Window Overlap Перекрытие окон - + Smoothing - - + + None Нет - + 25 % 25 % - + 50 % 50 % - + 75 % 75 % - + 87.5 % 87,5 % - + 93.75 % 93,75 % - Normalize Visible Area - Нормализовать видимую область - - - + Нормализовать видимую область + + + Bins Бины - + FFT cache failed Не удалось кэшировать FFT - + Failed to create the FFT model for this spectrogram. There may be insufficient memory or disc space to continue. Не удалось создать FFT-модель этой спектрограммы. Вероятно, не хватает памяти или дискового порстранства для продолжения. - + dBV^2 ДбВ^2 - + dBV ДбВ - + 43Hz 43 Гц - + %1Hz %1 Гц @@ -6993,90 +7673,90 @@ SpectrumLayer - + Window Size Размер окна - + Window Overlap Перекрытие окон - + Window Окно - + Mean Усреднённо - + None Ничего - + Bins Бины - + 25 % 25 % - + 50 % 50 % - + 75 % 75 % - + 87.5 % 87,5 % - + 93.75 % 93,75 % - - - + + + %1 - %2 %1 - %2 - + %1 - %2 Hz %1 - %2 Гц - + %1 Hz %1 Гц - - + + -Inf -Inf - + %1 %1 - + %1 Bin: %2 (%3) %4 value: %5 @@ -7087,17 +7767,17 @@ Дб: %6 - + First - + Peak Пик - + %1 Bin: %2 (%3) Value: %4 @@ -7108,7 +7788,7 @@ Дб: %5 - + Show Peak Frequencies Показывать пиковые частоты @@ -7120,7 +7800,7 @@ SubdividingMenu - + %1 - %2 %1 - %2 @@ -7128,35 +7808,37 @@ Surveyer + Yes! Take me to the survey - Да, я хочу заполнить отчёт - - + Да, я хочу заполнить отчёт + + + No, thanks - Спасибо, нет + Спасибо, нет TextLayer - - + + Empty Label Очистить метку - - + + <no text> <без текста> - + In progress В процессе - + Time: %1 Height: %2 Label: %3 @@ -7165,74 +7847,74 @@ Метка: %3 - - + + Enter label Введите метку - - + + Please enter a new label: Введите текст новой метки: - + Drag Label Перетащите метку - + Move Label Переместите метку - + Move Label Horizontally Переместите по горизонтали - + Move Label Vertically Переместите по вертикали - + Drag Selection Перетащите выделение - + Resize Selection Смените размер выделения - + Delete Selection Удалите выделение - + Paste Вставить - + New Point Новая точка - + Erase Point Удалить точку - + Re-align pasted items? Заново выровнять вставленные объекты? - + The items you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? @@ -7240,37 +7922,37 @@ TextModel - + Text Текст - + Time Время - + Frame Выборка - + Height Высота - + Label Метка - + Unknown Неизвестно - + Edit Data Изменить данные @@ -7278,39 +7960,39 @@ Thumbwheel - + %1: %2%3 %1: %2%3 - + %2%3 %2%3 - + New value for %1, from %2 to %3 %4: Новое значение для %1, от %2 до %3 %4: - + New value for %1, from %2 to %3: Новое значение для %1, от %2 до %3: - + Enter a new value from %1 to %2 %3: Введите новое значение от %1 до %2 %3: - - + + Enter a new value from %1 to %2: Введите новое значение от %1 до %2: - - + + Enter new value Введите новое значение @@ -7318,107 +8000,107 @@ TimeInstantLayer - - + + New Point Новая точка - + Plot Type Тип графика - + Instants - + Segmentation Сегментация - + In progress В процессе - + No local points Нет локальных точек - + Time: %1 No label Время: %1 Без метки - + Time: %1 Label: %2 Время: %1 Метка: %2 - + Draw Point Нарисовать точку - + Add Point at %1 s Добавить точку в %1 с - + Drag Point Перетащить точку - + Move Point to %1 s Перетащить точку к %1 с - + Edit Point Изменить точку - + Drag Selection Перетащить выделение - + Resize Selection Изменить размер выделения - + Delete Selection Удалить выделение - + Paste Вставить - + Erase Point Удалить точку - + Re-align pasted instants? Заново выровнять вставленные объекты? - + The instants you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? @@ -7426,212 +8108,252 @@ TimeValueLayer - - - + + + New Point Новая точка - - + + Plot Type Тип графика - + Vertical Scale Верт. масштаб - + Scale Units Единицы шкалы - + Show Derivative - + Points Точки - + Stems Ножки - + Connected Points Соединённые точки - + Lines Линии - + Curve Кривая - + Segmentation Сегментация - + + Discrete Curves + + + + Auto-Align Автовыравнивание - + In progress В процессе - + No local points Нет локальных точек - Time: %1 Value: %2%3 No label - Время: %1 + Время: %1 Значение: %2%3 Без метки - Time: %1 Value: %2%3 Label: %4 - Время: %1 + Время: %1 Значение: %2%3 Метка: %4 - + Draw Point Нарисовать точку - + Drag Point Перетащить точку - - + + Edit Point Изменить точку - + Relocate Point Переместить точку - + Change Point Value Изменить значение точки - + Drag Selection Перетащить выделение - + Resize Selection Изменить размер выделения - + Delete Selected Points Удалить выбранные точки - + Paste Вставить - + The items you are pasting do not have values. What values do you want to use for these items? У вставляемых объектов нет значений. Какие значения вы хотите для них использовать? - + Some of the items you are pasting do not have values. What values do you want to use for these items? У некоторых вставляемых объектов нет значений.Какие значения вы хотите для них использовать? - + Zero for all items Ноль для всех объектов - + Choose value calculation Выбрать вычисление значения - + Scale Масштаб - + Linear Линейный - + Log Логарифмический - + +/-1 +/-1 - + + %1 Hz (%2, %3) + %1Гц (%2, %3) + + + + %1 %2 + %1 %2 + + + + %1 + %1 + + + + Time: %1 +Value: %2 +No label + Время: %1 +Значение: %2%3 +Без метки {1 +?} {2 +?} + + + + Time: %1 +Value: %2 +Label: %4 + Время: %1 +Значение: %2%3 +Метка: %4 {1 +?} {2 +?} + + + Erase Point Стереть точку - + Re-align pasted items? Заново выровнять вставленные объекты? - + The items you are pasting came from a layer with different source material from this one. Do you want to re-align them in time, to match the source material for this layer? - + Select cycle size - + Cycle size: - + Draw Segment Division Lines @@ -7639,27 +8361,27 @@ TipDialog - + Tip of the Day Совет дня - + Show tip on startup Показывать советы при запуске - + << Previous << Предыдущий - + Next >> Следующий >> - + Close Закрыть @@ -7667,136 +8389,136 @@ TransformFactory - - + + %1: %2 %1: %2 - + %1: Output %2 %1: Выход %2 - + Analysis Анализ - + Effects Data Данные эффектов - + Effects Эффекты - + [\(<].*$ [\(<].*$ - - + + <unknown maker> <неизвестный производитель> - - + + Extract features using "%1" plugin (from %2) Извлечь данные при помощи "%1" (из %2) - - + + Extract features using "%1" output of "%2" plugin (from %3) Извлечь данные при помощи "%1" вывода из расширения "%2" (из %3) - - + + %1 using "%2" plugin (from %3) %1 используя расширение "%2" (из %3) - - + + %1 using "%2" output of "%3" plugin (from %4) %1 используя вывод "%2" расширения "%3" (из %4) - + Extract "%1" data output from "%2" effect plugin (from %3) Извлечь "%1" данные вывода из расширения эффектов "%2" (из %3) - + Extract data output %1 from "%2" effect plugin (from %3) Извлечь данные вывода %1 из расширения эффектов "%2" (из %3) - + Transform audio signal with "%1" effect plugin (from %2) Трансформировать звуковой сигнал расширением эффектов "%1" (из %2) - + Generate audio signal using "%1" plugin (from %2) Создать звуковой сигнал при помощи расширения "%1" (из %2) - - + + Plugin type Тип расширения - - + + Category Категория - - + + System Identifier Системный идентификатор - - + + Name Название - - + + Description Описание - - + + Maker Создатель - - + + Units Единица измерения - + Generator Генератор - - + + Other Прочее @@ -7804,34 +8526,34 @@ TransformFinder - + Find a Transform Поиск расширений для трансформации - + Find: Искать: - + <br>&nbsp;&nbsp;No results found <br>&nbsp;&nbsp;Ничего не найдено - - + + Up Вверх - - + + Down Вниз - + Found %n description(s) containing <b>%1</b>, showing the first %2 only Найдено %n описание, содержащее <b>%1</b>, показаны первые %2 @@ -7840,7 +8562,7 @@ - + Found %n description(s) containing <b>%1</b> Найдено %n описание, содержащее <b>%1</b> @@ -7849,148 +8571,218 @@ - + <i> (not installed)</i> <i> (не установлено)</i> - + %1%2<br><small> %1%2<br><small> - - + + </small> </small> - + <b>%1</b>%2<br> <b>%1</b>%2<br> - - + + <small>%1</small> <small>%1</small> - + <small> <small> - + <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&mdash; Plugin type: %1 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&mdash; Тип расширения: %1 - + <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&mdash; Category: %1 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&mdash; Категория: %1 - + <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&mdash; System identifier: %1 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&mdash; Системный идентификатор: %1 - + <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&mdash; More information: <a href="%1">%1</a> <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&mdash; Подробная информация: <a href="%1">%1</a> - + <p>Type some text into the search box to search the descriptions of:<ul><li>All currently installed <a href="http://www.vamp-plugins.org/">Vamp</a> audio feature extraction plugins</li><li>All currently installed <a href="http://www.ladspa.org/">LADSPA</a> audio effects plugins</li><li>Vamp plugins that are not currently installed but that have descriptions published via the semantic web</li></ul> <p>Введите текст для поиска по описаниям среди:<ul><li>всех установленных расширений <a href="http://www.vamp-plugins.org/">Vamp</a> для извлечения анализируемых данных;</li><li>всех установленных эффектов<a href="http://www.ladspa.org/">LADSPA</a>;</li><li>еще не установленных расширений Vamp, чьё описание опубликовано в семантической сети.</li></ul> - + <b>Unable to retrieve published descriptions from network!</b> <b>Не удалось получить опубликованные в сети описания!</b> - + <b>No plugins are currently installed!</b> <b>Ни одно расширение не установлено!</b> - + <p>%1<br>Perhaps the network connection is down, services are responding too slowly, or a processing problem has occurred.<br>Only the descriptions of installed plugins will be searched. <p>%1<br>Вероятно, не работает сетевое соединение, либо службы отзываются слишком медленно, либо произошла неполадка при обработке.<br>Будет выполнен поиск только по описаниям уже установленных расширений. - + <p>%1<br>Only the published descriptions of Vamp feature extraction plugins will be searched. <p>%1<br>Выдет выполнен поиск только по описаниям расширений Vamp, предназначенных для извлечения анализируемых данных. - + <p>%1<br>%2<br>Perhaps the network connection is down, or services are responding too slowly.<br>No search results will be available. <p>%1<br>%2<br>Вероятно, не работает сетевое соединение, либо службы отзываются слишком медленно.<br>Результаты поиска будут недоступны. + UnitConverter + + + Pitch + Высота тона + + + + cents + + + + + In 12-tone Equal Temperament: + + + + + + = + + + + + + + + + + + Piano note + + + + + in octave + + + + + MIDI pitch + + + + + Note that only pitches in the range 0 to 127 are valid in the MIDI protocol. + + + + + Tempo + + + + + Beat period + + + + + at + + + + + With concert-A tuning frequency at %1 Hz, and middle C residing in octave %2. +(These can be changed in the application preferences.) + + + + View - + Global Scroll Глобальная прокрутка - + Global Zoom Глобальный масштаб - + Follow Playback Следовать за воспроизведением - + Scroll Прокручивать - + Page Постранично - + Off Выключить - + <unknown> <неизвестно> - + Layer rendering error - + Waiting for layers to be ready... Ожидание готовности слоёв... - - + + Cancel Отменить - + Rendering image... Отрисовывается изображение... - + Alignment Выравнивание @@ -7998,97 +8790,102 @@ ViewManager - + Clear Selection Снять выделение - + Select Multiple Regions Выделить несколько областей - + Select Region Выделить область - + Enter Navigate mode - + Enter Select mode - + Enter Edit mode - + Enter Draw mode - + Enter Erase mode - + Enter Measure mode - + + Enter NoteEdit mode + + + + Switch on Loop mode - + Switch off Loop mode - + Switch on Play Selection mode - + Switch off Play Selection mode - + Switch on Play Solo mode - + Switch off Play Solo mode - + Switch on Alignment mode - + Switch off Alignment mode - + Scroll to %1 - + Zoom to %n sample(s) per pixel @@ -8097,7 +8894,7 @@ - + Change overlay level @@ -8120,120 +8917,119 @@ WaveFileModel - Wave File - Звуковой файл + Звуковой файл WaveformLayer - - + + Scale Масштаб по Y - + Gain Усиление - + Normalize Visible Area Нормализовать видимую область - + Channels Каналы - + Linear Линейный - + Meter Счетчик - - + + dB Дб - + Separate Отдельно - + Mean Усреднённо - + Butterfly V-образно - + Time: %1 - %2 Время: %1 - %2 - + Time: %1 Время: %1 - + Level: Уровень: - + Left: Левый: - + Right: Правый: - + Channel %1 Канал %1 - + %1 %2 - %3 (%4 dB peak) %1 %2 - %3 (пик в %4 Дб) - + %1 %2 (%3 dB peak) %1 %2 (пик в %3 Дб) - - - + + + 0dB 0 Дб - - - + + + -Inf -Inf @@ -8241,12 +9037,12 @@ WindowShapePreview - + V / time V / время - + dB / freq Дб / частота @@ -8254,7 +9050,7 @@ WritableWaveFileModel - + Writable Wave File Записываемый звуковой файл diff -r ba6f95b1ff7c -r 5e6e1e074080 main/MainWindow.cpp --- a/main/MainWindow.cpp Wed Jul 15 12:27:40 2015 +0100 +++ b/main/MainWindow.cpp Wed Apr 20 12:06:28 2016 +0100 @@ -25,6 +25,7 @@ #include "data/model/SparseOneDimensionalModel.h" #include "data/model/RangeSummarisableTimeValueModel.h" #include "data/model/NoteModel.h" +#include "data/model/AggregateWaveModel.h" #include "data/model/Labeller.h" #include "data/osc/OSCQueue.h" #include "framework/Document.h" @@ -56,10 +57,10 @@ #include "widgets/TransformFinder.h" #include "widgets/LabelCounterInputDialog.h" #include "widgets/ActivityLog.h" -#include "audioio/AudioCallbackPlaySource.h" -#include "audioio/AudioCallbackPlayTarget.h" -#include "audioio/AudioTargetFactory.h" -#include "audioio/PlaySpeedRangeMapper.h" +#include "widgets/UnitConverter.h" +#include "audio/AudioCallbackPlaySource.h" +#include "audio/AudioRecordTarget.h" +#include "audio/PlaySpeedRangeMapper.h" #include "data/fileio/DataFileReaderFactory.h" #include "data/fileio/PlaylistFileReader.h" #include "data/fileio/WavFileWriter.h" @@ -67,9 +68,9 @@ #include "data/fileio/MIDIFileWriter.h" #include "data/fileio/BZipFileDevice.h" #include "data/fileio/FileSource.h" -#include "data/fft/FFTDataServer.h" #include "data/midi/MIDIInput.h" #include "base/RecentFiles.h" +#include "plugin/PluginScan.h" #include "transform/TransformFactory.h" #include "transform/ModelTransformerFactory.h" #include "base/PlayParameterRepository.h" @@ -93,6 +94,9 @@ #include "plugin/api/ladspa.h" #include "plugin/api/dssi.h" +#include +#include + #include #include #include @@ -107,6 +111,7 @@ #include #include #include +#include #include #include #include @@ -146,8 +151,8 @@ bool isIMAF; -MainWindow::MainWindow(bool withAudioOutput, bool withOSCSupport) : - MainWindowBase(withAudioOutput, withOSCSupport, true), +MainWindow::MainWindow(SoundOptions options, bool withOSCSupport) : + MainWindowBase(options), m_overview(0), m_mainMenusCreated(false), m_paneMenu(0), @@ -164,8 +169,6 @@ m_rightButtonTransformsMenu(0), m_rightButtonPlaybackMenu(0), m_soloAction(0), - m_soloModified(false), - m_prevSolo(false), m_rwdStartAction(0), m_rwdSimilarAction(0), m_rwdAction(0), @@ -173,13 +176,17 @@ m_ffwdSimilarAction(0), m_ffwdEndAction(0), m_playAction(0), + m_recordAction(0), m_playSelectionAction(0), m_playLoopAction(0), + m_soloModified(false), + m_prevSolo(false), m_playControlsSpacer(0), m_playControlsWidth(0), m_preferencesDialog(0), m_layerTreeDialog(0), m_activityLog(new ActivityLog()), + m_unitConverter(new UnitConverter()), m_keyReference(new KeyReference()), m_templateWatcher(0) { @@ -251,15 +258,15 @@ m_playSpeed = new AudioDial(frame); m_playSpeed->setMinimum(0); - m_playSpeed->setMaximum(200); - m_playSpeed->setValue(100); + m_playSpeed->setMaximum(120); + m_playSpeed->setValue(60); m_playSpeed->setFixedWidth(32); m_playSpeed->setFixedHeight(32); m_playSpeed->setNotchesVisible(true); m_playSpeed->setPageStep(10); - m_playSpeed->setObjectName(tr("Playback Speedup")); - m_playSpeed->setDefaultValue(100); - m_playSpeed->setRangeMapper(new PlaySpeedRangeMapper(0, 200)); + m_playSpeed->setObjectName(tr("Playback Speed")); + m_playSpeed->setRangeMapper(new PlaySpeedRangeMapper); + m_playSpeed->setDefaultValue(60); m_playSpeed->setShowToolTip(true); connect(m_playSpeed, SIGNAL(valueChanged(int)), this, SLOT(playSpeedChanged(int))); @@ -302,6 +309,8 @@ m_currentLabel = new QLabel; statusBar()->addPermanentWidget(m_currentLabel); + finaliseMenus(); + connect(m_viewManager, SIGNAL(activity(QString)), m_activityLog, SLOT(activityHappened(QString))); connect(m_playSource, SIGNAL(activity(QString)), @@ -311,8 +320,13 @@ connect(this, SIGNAL(activity(QString)), m_activityLog, SLOT(activityHappened(QString))); connect(this, SIGNAL(replacedDocument()), this, SLOT(documentReplaced())); + m_activityLog->hide(); + m_unitConverter->hide(); + + setAudioRecordMode(RecordCreateAdditionalModel); + newSession(); connect(m_midiInput, SIGNAL(eventsAvailable()), @@ -321,6 +335,9 @@ NetworkPermissionTester tester; bool networkPermission = tester.havePermission(); if (networkPermission) { + if (withOSCSupport) { + startOSCQueue(); + } TransformFactory::getInstance()->startPopulationThread(); m_surveyer = 0; m_versionTester = 0; @@ -336,6 +353,11 @@ m_surveyer = 0; m_versionTester = 0; } + + QString warning = PluginScan::getInstance()->getStartupFailureReport(); + if (warning != "") { + QTimer::singleShot(500, this, SLOT(pluginPopulationWarning())); + } } MainWindow::~MainWindow() @@ -343,6 +365,7 @@ // SVDEBUG << "MainWindow::~MainWindow" << endl; delete m_keyReference; delete m_activityLog; + delete m_unitConverter; delete m_preferencesDialog; delete m_layerTreeDialog; delete m_versionTester; @@ -355,6 +378,17 @@ MainWindow::setupMenus() { if (!m_mainMenusCreated) { + +#ifdef Q_OS_LINUX + // In Ubuntu 14.04 the window's menu bar goes missing entirely + // if the user is running any desktop environment other than Unity + // (in which the faux single-menubar appears). The user has a + // workaround, to remove the appmenu-qt5 package, but that is + // awkward and the problem is so severe that it merits disabling + // the system menubar integration altogether. Like this: + menuBar()->setNativeMenuBar(false); // fix #1039 +#endif + m_rightButtonMenu = new QMenu(); // No -- we don't want tear-off enabled on the right-button @@ -423,7 +457,7 @@ m_scrollLeftAction, m_scrollRightAction, m_showPropertyBoxesAction }; - for (int i = 0; i < sizeof(acts)/sizeof(acts[0]); ++i) { + for (int i = 0; i < int(sizeof(acts)/sizeof(acts[0])); ++i) { sc = new QShortcut(acts[i]->shortcut(), ps); connect(sc, SIGNAL(activated()), acts[i], SLOT(trigger())); } @@ -459,7 +493,6 @@ IconLoader il; QIcon icon = il.load("filenew"); - icon.addPixmap(il.loadPixmap("filenew-22")); QAction *action = new QAction(icon, tr("&New Session"), this); action->setShortcut(tr("Ctrl+N")); action->setStatusTip(tr("Abandon the current %1 session and start a new one").arg(QApplication::applicationName())); @@ -469,11 +502,11 @@ toolbar->addAction(action); icon = il.load("fileopen"); - icon.addPixmap(il.loadPixmap("fileopen-22")); action = new QAction(icon, tr("&Open..."), this); action->setShortcut(tr("Ctrl+O")); action->setStatusTip(tr("Open a session file, audio file, or layer")); connect(action, SIGNAL(triggered()), this, SLOT(openSomething())); + m_keyReference->registerShortcut(action); toolbar->addAction(action); menu->addAction(action); @@ -509,7 +542,6 @@ menu->addSeparator(); icon = il.load("filesave"); - icon.addPixmap(il.loadPixmap("filesave-22")); action = new QAction(icon, tr("&Save Session"), this); action->setShortcut(tr("Ctrl+S")); action->setStatusTip(tr("Save the current session into a %1 session file").arg(QApplication::applicationName())); @@ -520,7 +552,6 @@ toolbar->addAction(action); icon = il.load("filesaveas"); - icon.addPixmap(il.loadPixmap("filesaveas-22")); action = new QAction(icon, tr("Save Session &As..."), this); action->setShortcut(tr("Ctrl+Shift+S")); action->setStatusTip(tr("Save the current session into a new %1 session file").arg(QApplication::applicationName())); @@ -578,10 +609,12 @@ m_keyReference->registerShortcut(action); menu->addAction(action); - action = new QAction(tr("Export Annotation Layer..."), this); + action = new QAction(tr("Export Annotation La&yer..."), this); + action->setShortcut(tr("Ctrl+Y")); action->setStatusTip(tr("Export layer data to a file")); connect(action, SIGNAL(triggered()), this, SLOT(exportLayer())); connect(this, SIGNAL(canExportLayer(bool)), action, SLOT(setEnabled(bool))); + m_keyReference->registerShortcut(action); menu->addAction(action); menu->addSeparator(); @@ -594,6 +627,13 @@ menu->addSeparator(); + action = new QAction(tr("Browse Recorded Audio Folder"), this); + action->setStatusTip(tr("Open the Recorded Audio folder in the system file browser")); + connect(action, SIGNAL(triggered()), this, SLOT(browseRecordedAudio())); + menu->addAction(action); + + menu->addSeparator(); + QString templatesMenuLabel = tr("Apply Session Template"); m_templatesMenu = menu->addMenu(templatesMenuLabel); m_templatesMenu->setTearOffEnabled(true); @@ -768,7 +808,7 @@ menu->addAction(action); action = new QAction(tr("Insert Item at Selection"), this); - action->setShortcut(tr("Ctrl+Shift+Enter")); + action->setShortcut(tr("Ctrl+Shift+Return")); action->setStatusTip(tr("Insert a new note or region item corresponding to the current selection")); connect(action, SIGNAL(triggered()), this, SLOT(insertItemAtSelection())); connect(this, SIGNAL(canInsertItemAtSelection(bool)), action, SLOT(setEnabled(bool))); @@ -944,7 +984,7 @@ action->setStatusTip(tr("Show or hide the centre line")); connect(action, SIGNAL(triggered()), this, SLOT(toggleCentreLine())); action->setCheckable(true); - action->setChecked(true); + action->setChecked(m_viewManager->shouldShowCentreLine()); m_keyReference->registerShortcut(action); menu->addAction(action); @@ -958,13 +998,15 @@ menu->addSeparator(); QActionGroup *overlayGroup = new QActionGroup(this); + + ViewManager::OverlayMode mode = m_viewManager->getOverlayMode(); action = new QAction(tr("Show &No Overlays"), this); action->setShortcut(tr("0")); action->setStatusTip(tr("Hide times, layer names, and scale")); connect(action, SIGNAL(triggered()), this, SLOT(showNoOverlays())); action->setCheckable(true); - action->setChecked(false); + action->setChecked(mode == ViewManager::NoOverlays); overlayGroup->addAction(action); m_keyReference->registerShortcut(action); menu->addAction(action); @@ -974,7 +1016,7 @@ action->setStatusTip(tr("Show times and basic scale")); connect(action, SIGNAL(triggered()), this, SLOT(showMinimalOverlays())); action->setCheckable(true); - action->setChecked(true); + action->setChecked(mode == ViewManager::StandardOverlays); overlayGroup->addAction(action); m_keyReference->registerShortcut(action); menu->addAction(action); @@ -984,7 +1026,7 @@ action->setStatusTip(tr("Show times, layer names, and scale")); connect(action, SIGNAL(triggered()), this, SLOT(showAllOverlays())); action->setCheckable(true); - action->setChecked(false); + action->setChecked(mode == ViewManager::AllOverlays); overlayGroup->addAction(action); m_keyReference->registerShortcut(action); menu->addAction(action); @@ -1039,6 +1081,11 @@ connect(action, SIGNAL(triggered()), this, SLOT(showActivityLog())); menu->addAction(action); + action = new QAction(tr("Show &Unit Converter"), this); + action->setStatusTip(tr("Open a window of pitch and timing conversion utilities")); + connect(action, SIGNAL(triggered()), this, SLOT(showUnitConverter())); + menu->addAction(action); + menu->addSeparator(); action = new QAction(tr("Go Full-Screen"), this); @@ -1162,6 +1209,11 @@ LayerFactory::LayerType type = backgroundTypes[i]; bool mono = true; +// Avoid warnings/errors with -Wextra because we aren't explicitly +// handling all layer types (-Wall is OK with this because of the +// default but the stricter level insists) +#pragma GCC diagnostic ignored "-Wswitch-enum" + switch (type) { case LayerFactory::Waveform: @@ -1406,7 +1458,6 @@ setupExistingLayersMenus(); -/*!!! These don't work correctly -- fix or omit menu->addSeparator(); action = new QAction(tr("Switch to Previous Layer"), this); @@ -1424,7 +1475,7 @@ connect(this, SIGNAL(canSelectNextLayer(bool)), action, SLOT(setEnabled(bool))); m_keyReference->registerShortcut(action); menu->addAction(action); -*/ + m_rightButtonLayerMenu->addSeparator(); menu->addSeparator(); @@ -1455,6 +1506,8 @@ m_keyReference->registerShortcut(raction); // rename after delete, so delete layer goes next to delete pane m_keyReference->registerShortcut(eaction); // edit also after delete + + finaliseMenus(); } void @@ -1978,6 +2031,17 @@ connect(m_ffwdEndAction, SIGNAL(triggered()), this, SLOT(ffwdEnd())); connect(this, SIGNAL(canPlay(bool)), m_ffwdEndAction, SLOT(setEnabled(bool))); + m_recordAction = toolbar->addAction(il.load("record"), + tr("Record")); + m_recordAction->setCheckable(true); + m_recordAction->setShortcut(tr("Ctrl+Space")); + m_recordAction->setStatusTip(tr("Record a new audio file")); + connect(m_recordAction, SIGNAL(triggered()), this, SLOT(record())); + connect(m_recordTarget, SIGNAL(recordStatusChanged(bool)), + m_recordAction, SLOT(setChecked(bool))); + connect(this, SIGNAL(canRecord(bool)), + m_recordAction, SLOT(setEnabled(bool))); + toolbar = addToolBar(tr("Play Mode Toolbar")); m_playSelectionAction = toolbar->addAction(il.load("playselection"), @@ -2028,6 +2092,7 @@ } m_keyReference->registerShortcut(m_playAction); + m_keyReference->registerShortcut(m_recordAction); m_keyReference->registerShortcut(m_playSelectionAction); m_keyReference->registerShortcut(m_playLoopAction); m_keyReference->registerShortcut(m_soloAction); @@ -2040,6 +2105,7 @@ m_keyReference->registerShortcut(m_ffwdEndAction); menu->addAction(m_playAction); + menu->addAction(m_recordAction); menu->addAction(m_playSelectionAction); menu->addAction(m_playLoopAction); menu->addAction(m_soloAction); @@ -2054,8 +2120,11 @@ menu->addAction(m_rwdStartAction); menu->addAction(m_ffwdEndAction); menu->addSeparator(); + menu->addAction(m_recordAction); + menu->addSeparator(); m_rightButtonPlaybackMenu->addAction(m_playAction); + m_rightButtonPlaybackMenu->addAction(m_recordAction); m_rightButtonPlaybackMenu->addAction(m_playSelectionAction); m_rightButtonPlaybackMenu->addAction(m_playLoopAction); m_rightButtonPlaybackMenu->addAction(m_soloAction); @@ -2067,6 +2136,8 @@ m_rightButtonPlaybackMenu->addAction(m_rwdStartAction); m_rightButtonPlaybackMenu->addAction(m_ffwdEndAction); m_rightButtonPlaybackMenu->addSeparator(); + m_rightButtonPlaybackMenu->addAction(m_recordAction); + m_rightButtonPlaybackMenu->addSeparator(); QAction *fastAction = menu->addAction(tr("Speed Up")); fastAction->setShortcut(tr("Ctrl+PgUp")); @@ -2097,11 +2168,10 @@ toolbar = addToolBar(tr("Edit Toolbar")); CommandHistory::getInstance()->registerToolbar(toolbar); - m_keyReference->setCategory(tr("Tool Selection")); - toolbar = addToolBar(tr("Tools Toolbar")); QActionGroup *group = new QActionGroup(this); + m_keyReference->setCategory(tr("Tool Selection")); QAction *action = toolbar->addAction(il.load("navigate"), tr("Navigate")); action->setCheckable(true); @@ -2113,7 +2183,23 @@ group->addAction(action); m_keyReference->registerShortcut(action); m_toolActions[ViewManager::NavigateMode] = action; - + + m_keyReference->setCategory + (tr("Navigate Tool Mouse Actions")); + m_keyReference->registerShortcut + (tr("Navigate"), tr("Left"), + tr("Click left button and drag to move around")); + m_keyReference->registerShortcut + (tr("Zoom to Area"), tr("Shift+Left"), + tr("Shift-click left button and drag to zoom to a rectangular area")); + m_keyReference->registerShortcut + (tr("Relocate"), tr("Double-Click Left"), + tr("Double-click left button to jump to clicked location")); + m_keyReference->registerShortcut + (tr("Edit"), tr("Double-Click Left"), + tr("Double-click left button on an item to edit it")); + + m_keyReference->setCategory(tr("Tool Selection")); action = toolbar->addAction(il.load("select"), tr("Select")); action->setCheckable(true); @@ -2123,7 +2209,26 @@ group->addAction(action); m_keyReference->registerShortcut(action); m_toolActions[ViewManager::SelectMode] = action; - + + m_keyReference->setCategory + (tr("Select Tool Mouse Actions")); + m_keyReference->registerShortcut + (tr("Select"), tr("Left"), + tr("Click left button and drag to select region; drag region edge to resize")); +#ifdef Q_OS_MAC + m_keyReference->registerShortcut + (tr("Multi Select"), tr("Ctrl+Left"), + tr("Cmd-click left button and drag to select an additional region")); +#else + m_keyReference->registerShortcut + (tr("Multi Select"), tr("Ctrl+Left"), + tr("Ctrl-click left button and drag to select an additional region")); +#endif + m_keyReference->registerShortcut + (tr("Fine Select"), tr("Shift+Left"), + tr("Shift-click left button and drag to select without snapping to items or grid")); + + m_keyReference->setCategory(tr("Tool Selection")); action = toolbar->addAction(il.load("move"), tr("Edit")); action->setCheckable(true); @@ -2134,7 +2239,17 @@ group->addAction(action); m_keyReference->registerShortcut(action); m_toolActions[ViewManager::EditMode] = action; - + + m_keyReference->setCategory + (tr("Edit Tool Mouse Actions")); + m_keyReference->registerShortcut + (tr("Move"), tr("Left"), + tr("Click left button on an item or selected region and drag to move")); + m_keyReference->registerShortcut + (tr("Edit"), tr("Double-Click Left"), + tr("Double-click left button on an item to edit it")); + + m_keyReference->setCategory(tr("Tool Selection")); action = toolbar->addAction(il.load("draw"), tr("Draw")); action->setCheckable(true); @@ -2146,6 +2261,13 @@ m_keyReference->registerShortcut(action); m_toolActions[ViewManager::DrawMode] = action; + m_keyReference->setCategory + (tr("Draw Tool Mouse Actions")); + m_keyReference->registerShortcut + (tr("Draw"), tr("Left"), + tr("Click left button and drag to create new item")); + + m_keyReference->setCategory(tr("Tool Selection")); action = toolbar->addAction(il.load("erase"), tr("Erase")); action->setCheckable(true); @@ -2157,6 +2279,13 @@ m_keyReference->registerShortcut(action); m_toolActions[ViewManager::EraseMode] = action; + m_keyReference->setCategory + (tr("Erase Tool Mouse Actions")); + m_keyReference->registerShortcut + (tr("Erase"), tr("Left"), + tr("Click left button on an item to remove it from the layer")); + + m_keyReference->setCategory(tr("Tool Selection")); action = toolbar->addAction(il.load("measure"), tr("Measure")); action->setCheckable(true); action->setShortcut(tr("6")); @@ -2167,6 +2296,18 @@ m_keyReference->registerShortcut(action); m_toolActions[ViewManager::MeasureMode] = action; + m_keyReference->setCategory + (tr("Measure Tool Mouse Actions")); + m_keyReference->registerShortcut + (tr("Measure Area"), tr("Left"), + tr("Click left button and drag to measure a rectangular area")); + m_keyReference->registerShortcut + (tr("Measure Item"), tr("Double-Click Left"), + tr("Click left button and drag to measure extents of an item or shape")); + m_keyReference->registerShortcut + (tr("Zoom to Area"), tr("Shift+Left"), + tr("Shift-click left button and drag to zoom to a rectangular area")); + toolNavigateSelected(); Pane::registerShortcuts(*m_keyReference); @@ -2203,10 +2344,10 @@ (haveCurrentPane && (currentLayer != 0)); bool havePlayTarget = - (m_playTarget != 0); - bool haveSelection = - (m_viewManager && - !m_viewManager->getSelections().empty()); + (m_playTarget != 0 || m_audioIO != 0); + bool haveSelection = + (m_viewManager && + !m_viewManager->getSelections().empty()); bool haveCurrentEditableLayer = (haveCurrentLayer && currentLayer->isLayerEditable()); @@ -2267,8 +2408,8 @@ QString description; - size_t ssr = getMainModel()->getSampleRate(); - size_t tsr = ssr; + sv_samplerate_t ssr = getMainModel()->getSampleRate(); + sv_samplerate_t tsr = ssr; if (m_playSource) tsr = m_playSource->getTargetSampleRate(); if (ssr != tsr) { @@ -2491,8 +2632,6 @@ } else if (selections.size() > 1) { - bool multiple = false; - if (!asData) { // Multi-file export not supported for data QStringList items; @@ -2658,6 +2797,7 @@ error = tr("Failed to open file %1 for writing").arg(path); } else { QTextStream out(&file); + out.setCodec(QTextCodec::codecForName("UTF-8")); out << "\n" << "\n" << "\n" @@ -2681,7 +2821,7 @@ if (!nm) { error = tr("Can't export non-note layers to MIDI"); } else { - MIDIFileWriter writer(path, nm); + MIDIFileWriter writer(path, nm, nm->getSampleRate()); writer.write(); if (!writer.isOK()) { error = writer.getError(); @@ -2738,8 +2878,8 @@ visible = pane->getImageSize(pane->getFirstVisibleFrame(), pane->getLastVisibleFrame()); - size_t sf0 = 0, sf1 = 0; - + sv_frame_t sf0 = 0, sf1 = 0; + if (haveSelection) { MultiSelection::SelectionList selections = m_viewManager->getSelections(); sf0 = selections.begin()->getStartFrame(); @@ -2810,6 +2950,17 @@ } void +MainWindow::browseRecordedAudio() +{ + if (!m_recordTarget) return; + + QString path = m_recordTarget->getRecordFolder(); + if (path == "") return; + + openLocalFolder(path); +} + +void MainWindow::newSession() { if (!checkSaveModified()) return; @@ -2885,6 +3036,7 @@ delete m_preferencesDialog.data(); m_activityLog->hide(); + m_unitConverter->hide(); m_keyReference->hide(); delete m_document; @@ -2901,26 +3053,6 @@ } void -MainWindow::openSession() -{ - if (!checkSaveModified()) return; - - QString orig = m_audioFile; - if (orig == "") orig = "."; - else orig = QFileInfo(orig).absoluteDir().canonicalPath(); - - QString path = getOpenFileName(FileFinder::SessionFile); - - if (path.isEmpty()) return; - - if (openSessionFile(path) == FileOpenFailed) { - emit hideSplash(); - QMessageBox::critical(this, tr("Failed to open file"), - tr("File open failed

Session file \"%1\" could not be opened").arg(path)); - } -} - -void MainWindow::openSomething() { QString orig = m_audioFile; @@ -2931,7 +3063,7 @@ if (path.isEmpty()) return; - FileOpenStatus status = open(path, ReplaceSession); + FileOpenStatus status = openPath(path, ReplaceSession); if (status == FileOpenFailed) { emit hideSplash(); @@ -2968,7 +3100,7 @@ if (text.isEmpty()) return; - FileOpenStatus status = open(text, AskUser); + FileOpenStatus status = openPath(text, AskUser); if (status == FileOpenFailed) { emit hideSplash(); @@ -2996,7 +3128,7 @@ QString path = action->text(); if (path == "") return; - FileOpenStatus status = open(path, ReplaceSession); + FileOpenStatus status = openPath(path, ReplaceSession); if (status == FileOpenFailed) { emit hideSplash(); @@ -3043,7 +3175,7 @@ void MainWindow::saveSessionAsTemplate() { - QDialog *d = new QDialog; + QDialog *d = new QDialog(this); d->setWindowTitle(tr("Enter template name")); QGridLayout *layout = new QGridLayout; @@ -3124,9 +3256,9 @@ FileOpenStatus status; if (i == uriList.begin()) { - status = open(*i, ReplaceCurrentPane); + status = openPath(*i, ReplaceCurrentPane); } else { - status = open(*i, CreateAdditionalModel); + status = openPath(*i, CreateAdditionalModel); } if (status == FileOpenFailed) { @@ -3356,9 +3488,9 @@ QMessageBox::critical(this, tr("Failed to save file"), tr("Save failed

Session file \"%1\" could not be saved.").arg(path)); } else { - setWindowTitle(tr("%1: %1") + setWindowTitle(tr("%1: %2") .arg(QApplication::applicationName()) - .arg(QFileInfo(path).fileName())); + .arg(QFileInfo(path).fileName())); m_sessionFile = path; CommandHistory::getInstance()->documentSaved(); documentRestored(); @@ -3403,6 +3535,8 @@ QObject *s = sender(); QAction *action = dynamic_cast(s); + cerr << "addPane: sender is " << s << ", action is " << action << ", name " << action->text() << endl; + if (!action) { cerr << "WARNING: MainWindow::addPane: sender is not an action" << endl; @@ -3414,6 +3548,11 @@ if (i == m_paneActions.end()) { cerr << "WARNING: MainWindow::addPane: unknown action " << action->objectName() << endl; + cerr << "known actions are:" << endl; + for (PaneActionMap::const_iterator i = m_paneActions.begin(); + i != m_paneActions.end(); ++i) { + cerr << i->first << ", name " << i->first->text() << endl; + } return; } @@ -3603,7 +3742,7 @@ cerr << "WARNING: MainWindow::addLayer: unknown model " << model << " (\"" - << (model ? model->objectName() : "") + << model->objectName() << "\") in layer action map" << endl; } @@ -3657,25 +3796,50 @@ m_document->getTransformInputModels(); Model *defaultInputModel = 0; + for (int j = 0; j < pane->getLayerCount(); ++j) { + Layer *layer = pane->getLayer(j); if (!layer) continue; + if (LayerFactory::getInstance()->getLayerType(layer) != LayerFactory::Waveform && !layer->isLayerOpaque()) continue; + Model *model = layer->getModel(); if (!model) continue; + for (size_t k = 0; k < candidateInputModels.size(); ++k) { if (candidateInputModels[k] == model) { defaultInputModel = model; break; } } + if (defaultInputModel) break; } - size_t startFrame = 0, duration = 0; - size_t endFrame = 0; + if (candidateInputModels.size() > 1) { + // Add an aggregate model as another option + AggregateWaveModel::ChannelSpecList sl; + foreach (Model *m, candidateInputModels) { + RangeSummarisableTimeValueModel *r = + qobject_cast(m); + if (r) { + sl.push_back(AggregateWaveModel::ModelChannelSpec(r, -1)); + } + } + if (!sl.empty()) { + AggregateWaveModel *aggregate = new AggregateWaveModel(sl); + aggregate->setObjectName(tr("Multiplex all of the above")); + candidateInputModels.push_back(aggregate); + //!!! but it leaks + } + } + + sv_frame_t startFrame = 0, duration = 0; + sv_frame_t endFrame = 0; + m_viewManager->getSelection().getExtents(startFrame, endFrame); if (endFrame > startFrame) duration = endFrame - startFrame; else startFrame = 0; @@ -3797,26 +3961,38 @@ void MainWindow::playSpeedChanged(int position) { - PlaySpeedRangeMapper mapper(0, 200); - - float percent = m_playSpeed->mappedValue(); - float factor = mapper.getFactorForValue(percent); - -// cerr << "speed = " << position << " percent = " << percent << " factor = " << factor << endl; - - bool something = (position != 100); - - int pc = lrintf(percent); - - if (!something) { + PlaySpeedRangeMapper mapper; + + double percent = m_playSpeed->mappedValue(); + double factor = mapper.getFactorForValue(percent); + +// cerr << "play speed position = " << position << " (range 0-120) percent = " << percent << " factor = " << factor << endl; + + int centre = m_playSpeed->defaultValue(); + + // Percentage is shown to 0dp if >100, to 1dp if <100; factor is + // shown to 3sf + + char pcbuf[30]; + char facbuf[30]; + + if (position == centre) { contextHelpChanged(tr("Playback speed: Normal")); + } else if (position < centre) { + sprintf(pcbuf, "%.1f", percent); + sprintf(facbuf, "%.3g", 1.0 / factor); + contextHelpChanged(tr("Playback speed: %1% (%2x slower)") + .arg(pcbuf) + .arg(facbuf)); } else { - contextHelpChanged(tr("Playback speed: %1%2%") - .arg(position > 100 ? "+" : "") - .arg(pc)); + sprintf(pcbuf, "%.0f", percent); + sprintf(facbuf, "%.3g", factor); + contextHelpChanged(tr("Playback speed: %1% (%2x faster)") + .arg(pcbuf) + .arg(facbuf)); } - m_playSource->setTimeStretch(factor); + m_playSource->setTimeStretch(1.0 / factor); // factor is a speedup updateMenuStates(); } @@ -3851,6 +4027,29 @@ MainWindowBase::currentPaneChanged(pane); if (!pane || !m_panLayer) return; + + // If this pane contains the main model, it usually makes sense to + // show the main model in the pan layer even if it isn't the top + // layer in the pane (e.g. if the top layer is one derived from + // the main model). + bool containsMainModel = false; + for (int i = pane->getLayerCount(); i > 0; ) { + --i; + Layer *layer = pane->getLayer(i); + if (layer && + LayerFactory::getInstance()->getLayerType(layer) == + LayerFactory::Waveform && + layer->getModel() == getMainModel()) { + containsMainModel = true; + break; + } + } + + if (containsMainModel) { + m_panLayer->setModel(getMainModel()); + return; + } + for (int i = pane->getLayerCount(); i > 0; ) { --i; Layer *layer = pane->getLayer(i); @@ -3874,7 +4073,7 @@ } bool haveSelection = false; - size_t startFrame = 0, endFrame = 0; + sv_frame_t startFrame = 0, endFrame = 0; if (m_viewManager && m_viewManager->haveInProgressSelection()) { @@ -3914,7 +4113,9 @@ .arg(startStr).arg(endStr).arg(durationStr); } - statusBar()->showMessage(m_myStatusMessage); + if (getStatusLabel()->text() != m_myStatusMessage) { + getStatusLabel()->setText(m_myStatusMessage); + } updatePositionStatusDisplays(); } @@ -3925,7 +4126,7 @@ if (!statusBar()->isVisible()) return; Pane *pane = 0; - size_t frame = m_viewManager->getPlaybackFrame(); + sv_frame_t frame = m_viewManager->getPlaybackFrame(); if (m_paneStack) pane = m_paneStack->getCurrentPane(); if (!pane) return; @@ -3952,7 +4153,8 @@ } void -MainWindow::sampleRateMismatch(size_t requested, size_t actual, +MainWindow::sampleRateMismatch(sv_samplerate_t requested, + sv_samplerate_t actual, bool willResample) { if (!willResample) { @@ -3986,18 +4188,34 @@ } void +MainWindow::pluginPopulationWarning() +{ + QString warning = PluginScan::getInstance()->getStartupFailureReport(); + QMessageBox::warning(this, tr("Problems loading plugins"), warning); +} + +void MainWindow::midiEventsAvailable() { Pane *currentPane = 0; NoteLayer *currentNoteLayer = 0; TimeValueLayer *currentTimeValueLayer = 0; - if (m_paneStack) currentPane = m_paneStack->getCurrentPane(); + if (m_paneStack) { + currentPane = m_paneStack->getCurrentPane(); + } + if (currentPane) { currentNoteLayer = dynamic_cast (currentPane->getSelectedLayer()); currentTimeValueLayer = dynamic_cast (currentPane->getSelectedLayer()); + } else { + // discard these events + while (m_midiInput->getEventsAvailable() > 0) { + (void)m_midiInput->readEvent(); + } + return; } // This is called through a serialised signal/slot invocation @@ -4009,7 +4227,7 @@ MIDIEvent ev(m_midiInput->readEvent()); - size_t frame = currentPane->alignFromReference(ev.getTime()); + sv_frame_t frame = currentPane->alignFromReference(ev.getTime()); bool noteOn = (ev.getMessageType() == MIDIConstants::MIDI_NOTE_ON && ev.getVelocity() > 0); @@ -4054,17 +4272,21 @@ (tvm, point, tr("Add Point")); CommandHistory::getInstance()->addCommand(command); } + continue; - } + // This is reached only if !currentNoteLayer and + // !currentTimeValueLayer, i.e. there is some other sort of + // layer that may be insertable-into + if (!noteOn) continue; insertInstantAt(ev.getTime()); } } void -MainWindow::playStatusChanged(bool playing) +MainWindow::playStatusChanged(bool ) { Pane *currentPane = 0; NoteLayer *currentNoteLayer = 0; @@ -4109,13 +4331,36 @@ MainWindowBase::mainModelChanged(model); + if (m_playTarget || m_audioIO) { + connect(m_fader, SIGNAL(valueChanged(float)), + this, SLOT(mainModelGainChanged(float))); + } +} + +void +MainWindow::mainModelGainChanged(float gain) +{ if (m_playTarget) { - connect(m_fader, SIGNAL(valueChanged(float)), - m_playTarget, SLOT(setOutputGain(float))); + m_playTarget->setOutputGain(gain); + } else if (m_audioIO) { + m_audioIO->setOutputGain(gain); } } void +MainWindow::modelAboutToBeDeleted(Model *model) +{ + if (model == m_panLayer->getModel()) { + if (model == getMainModel()) { + m_panLayer->setModel(0); + } else { + m_panLayer->setModel(getMainModel()); + } + } + MainWindowBase::modelAboutToBeDeleted(model); +} + +void MainWindow::setInstantsNumbering() { QAction *a = dynamic_cast(sender()); @@ -4167,26 +4412,31 @@ { emit hideSplash(); + QString quoted; + if (transformName != "") { + quoted = QString("\"%1\" ").arg(transformName); + } + if (message != "") { QMessageBox::warning (this, tr("Failed to generate layer"), - tr("Layer generation failed

Failed to generate derived layer.

The layer transform \"%1\" failed:

%2") - .arg(transformName).arg(message), + tr("Layer generation failed

Failed to generate derived layer.

The layer transform %1failed:

%2") + .arg(quoted).arg(message), QMessageBox::Ok); } else { QMessageBox::warning (this, tr("Failed to generate layer"), - tr("Layer generation failed

Failed to generate a derived layer.

The layer transform \"%1\" failed.

No error information is available.") - .arg(transformName), + tr("Layer generation failed

Failed to generate a derived layer.

The layer transform %1failed.

No error information is available.") + .arg(quoted), QMessageBox::Ok); } } void -MainWindow::modelGenerationWarning(QString transformName, QString message) +MainWindow::modelGenerationWarning(QString /* transformName */, QString message) { emit hideSplash(); @@ -4220,7 +4470,8 @@ void MainWindow::modelRegenerationWarning(QString layerName, - QString transformName, QString message) + QString /* transformName */, + QString message) { emit hideSplash(); @@ -4258,7 +4509,7 @@ return; } - m_layerTreeDialog = new LayerTreeDialog(m_paneStack); + m_layerTreeDialog = new LayerTreeDialog(m_paneStack, this); m_layerTreeDialog->setAttribute(Qt::WA_DeleteOnClose); // see below m_layerTreeDialog->show(); } @@ -4272,6 +4523,13 @@ } void +MainWindow::showUnitConverter() +{ + m_unitConverter->show(); + m_unitConverter->raise(); +} + +void MainWindow::preferences() { bool goToTemplateTab = @@ -4458,8 +4716,8 @@ aboutText.replace(tr("With "), tr("Using ")); #endif - aboutText += - "

Sonic Visualiser Copyright © 2005–2013 Chris Cannam and " + aboutText += + "

Sonic Visualiser Copyright © 2005–2015 Chris Cannam and " "Queen Mary, University of London.

" "

This program is free software; you can redistribute it and/or " "modify it under the terms of the GNU General Public License as " @@ -5151,12 +5409,13 @@ char buf[2]; sprintf(buf, "%d", i); //convert int to char - status = open(buf, CreateAdditionalModel); + status = openPath(buf, CreateAdditionalModel); remove (buf); } } + void CheckBox::set_selruleType(QAbstractButton *button) { selrule_type = button->objectName().toInt(); diff -r ba6f95b1ff7c -r 5e6e1e074080 main/MainWindow.h --- a/main/MainWindow.h Wed Jul 15 12:27:40 2015 +0100 +++ b/main/MainWindow.h Wed Apr 20 12:06:28 2016 +0100 @@ -22,6 +22,7 @@ class Surveyer; class LayerTreeDialog; class ActivityLog; +class UnitConverter; class QFileSystemWatcher; class QScrollArea; @@ -31,8 +32,7 @@ Q_OBJECT public: - MainWindow(bool withAudioOutput = true, - bool withOSCSupport = true); + MainWindow(SoundOptions options, bool withOSCSupport = true); virtual ~MainWindow(); signals: @@ -47,7 +47,6 @@ void endFullScreen(); protected slots: - virtual void openSession(); virtual void importAudio(); virtual void importMoreAudio(); virtual void replaceMainAudio(); @@ -60,13 +59,14 @@ virtual void importLayer(); virtual void exportLayer(); virtual void exportImage(); + virtual void browseRecordedAudio(); virtual void saveSession(); virtual void saveSessionAs(); virtual void newSession(); virtual void closeSession(); virtual void preferences(); - virtual void sampleRateMismatch(size_t, size_t, bool); + virtual void sampleRateMismatch(sv_samplerate_t, sv_samplerate_t, bool); virtual void audioOverloadPluginDisabled(); virtual void audioTimeStretchMultiChannelDisabled(); @@ -132,10 +132,13 @@ virtual void layerInAView(Layer *, bool); virtual void mainModelChanged(WaveFileModel *); + virtual void mainModelGainChanged(float); virtual void modelAdded(Model *); + virtual void modelAboutToBeDeleted(Model *); virtual void showLayerTree(); virtual void showActivityLog(); + virtual void showUnitConverter(); virtual void mouseEnteredWidget(); virtual void mouseLeftWidget(); @@ -144,6 +147,8 @@ virtual void midiEventsAvailable(); virtual void playStatusChanged(bool); + virtual void pluginPopulationWarning(); + virtual void saveSessionAsTemplate(); virtual void manageSavedTemplates(); @@ -189,6 +194,7 @@ QAction *m_ffwdSimilarAction; QAction *m_ffwdEndAction; QAction *m_playAction; + QAction *m_recordAction; QAction *m_playSelectionAction; QAction *m_playLoopAction; QAction *m_manageTemplatesAction; @@ -212,6 +218,7 @@ QPointer m_layerTreeDialog; ActivityLog *m_activityLog; + UnitConverter *m_unitConverter; KeyReference *m_keyReference; QFileSystemWatcher *m_templateWatcher; diff -r ba6f95b1ff7c -r 5e6e1e074080 main/NetworkPermissionTester.cpp --- a/main/NetworkPermissionTester.cpp Wed Jul 15 12:27:40 2015 +0100 +++ b/main/NetworkPermissionTester.cpp Wed Apr 20 12:06:28 2016 +0100 @@ -57,9 +57,12 @@ "

This is an experimental release of Sonic Visualiser with support for import and export of IM-AF encoded multitrack files.
It is not a standard Sonic Visualiser release.

" "


" "

Before we go on...

" - "

Sonic Visualiser needs to make occasional network requests to our servers.

" + "

Sonic Visualiser would like to make networking connections and open a network port.

" "

This is to:

" - "
  • look up information about available and installed plugins.
" + "
  • Find information about available and installed plugins;
  • " + "
  • Support the use of Open Sound Control, where configured; and
  • " + "
  • Tell you when updates are available.
  • " + "
" "

No personal information will be sent, no tracking is carried out, and all requests happen in the background without interrupting your work.

" "

We recommend that you allow this, because it makes Sonic Visualiser more useful. But if you do not wish to do so, please un-check the box below.

")); layout->addWidget(label, 0, 0); diff -r ba6f95b1ff7c -r 5e6e1e074080 main/OSCHandler.cpp --- a/main/OSCHandler.cpp Wed Jul 15 12:27:40 2015 +0100 +++ b/main/OSCHandler.cpp Wed Apr 20 12:06:28 2016 +0100 @@ -22,14 +22,15 @@ #include "view/PaneStack.h" #include "data/model/WaveFileModel.h" #include "widgets/CommandHistory.h" -#include "audioio/AudioCallbackPlaySource.h" -#include "audioio/AudioCallbackPlayTarget.h" +#include "audio/AudioCallbackPlaySource.h" #include "framework/Document.h" #include "data/fileio/WavFileWriter.h" #include "transform/TransformFactory.h" #include "widgets/Fader.h" #include "widgets/AudioDial.h" +#include + #include void @@ -123,7 +124,7 @@ if (getMainModel()) { - unsigned long frame = m_viewManager->getPlaybackFrame(); + sv_frame_t frame = m_viewManager->getPlaybackFrame(); bool selection = false; bool play = (message.getMethod() == "play"); @@ -233,8 +234,8 @@ if (getMainModel()) { - int f0 = getMainModel()->getStartFrame(); - int f1 = getMainModel()->getEndFrame(); + sv_frame_t f0 = getMainModel()->getStartFrame(); + sv_frame_t f1 = getMainModel()->getEndFrame(); bool done = false; @@ -255,7 +256,7 @@ Layer *layer = 0; if (pane) layer = pane->getSelectedLayer(); if (layer) { - size_t resolution; + int resolution; layer->snapToFeatureFrame(pane, f0, resolution, Layer::SnapLeft); layer->snapToFeatureFrame(pane, f1, resolution, @@ -349,7 +350,7 @@ if (value < 0.5) { m_viewManager->setOverlayMode(ViewManager::NoOverlays); } else if (value < 1.5) { - m_viewManager->setOverlayMode(ViewManager::MinimalOverlays); + m_viewManager->setOverlayMode(ViewManager::StandardOverlays); } else { m_viewManager->setOverlayMode(ViewManager::AllOverlays); } @@ -452,7 +453,7 @@ double level = message.getArg(0).toDouble(); Pane *currentPane = m_paneStack->getCurrentPane(); if (level < 1.0) level = 1.0; - if (currentPane) currentPane->setZoomLevel(lrint(level)); + if (currentPane) currentPane->setZoomLevel(int(lrint(level))); } } diff -r ba6f95b1ff7c -r 5e6e1e074080 main/PreferencesDialog.cpp --- a/main/PreferencesDialog.cpp Wed Jul 15 12:27:40 2015 +0100 +++ b/main/PreferencesDialog.cpp Wed Apr 20 12:06:28 2016 +0100 @@ -39,8 +39,12 @@ #include "widgets/WindowTypeSelector.h" #include "widgets/IconLoader.h" #include "base/Preferences.h" -#include "audioio/AudioTargetFactory.h" #include "base/ResourceFinder.h" +#include "layer/ColourMapper.h" + +//#include "audioio/AudioTargetFactory.h" + +#include "version.h" PreferencesDialog::PreferencesDialog(QWidget *parent) : QDialog(parent), @@ -120,6 +124,33 @@ connect(propertyLayout, SIGNAL(currentIndexChanged(int)), this, SLOT(propertyLayoutChanged(int))); + QSettings settings; + settings.beginGroup("Preferences"); + m_spectrogramGColour = (settings.value("spectrogram-colour", + int(ColourMapper::Green)).toInt()); + m_spectrogramMColour = (settings.value("spectrogram-melodic-colour", + int(ColourMapper::Sunset)).toInt()); + m_colour3DColour = (settings.value("colour-3d-plot-colour", + int(ColourMapper::Green)).toInt()); + settings.endGroup(); + QComboBox *spectrogramGColour = new QComboBox; + QComboBox *spectrogramMColour = new QComboBox; + QComboBox *colour3DColour = new QComboBox; + for (i = 0; i < ColourMapper::getColourMapCount(); ++i) { + spectrogramGColour->addItem(ColourMapper::getColourMapName(i)); + spectrogramMColour->addItem(ColourMapper::getColourMapName(i)); + colour3DColour->addItem(ColourMapper::getColourMapName(i)); + if (i == m_spectrogramGColour) spectrogramGColour->setCurrentIndex(i); + if (i == m_spectrogramMColour) spectrogramMColour->setCurrentIndex(i); + if (i == m_colour3DColour) colour3DColour->setCurrentIndex(i); + } + connect(spectrogramGColour, SIGNAL(currentIndexChanged(int)), + this, SLOT(spectrogramGColourChanged(int))); + connect(spectrogramMColour, SIGNAL(currentIndexChanged(int)), + this, SLOT(spectrogramMColourChanged(int))); + connect(colour3DColour, SIGNAL(currentIndexChanged(int)), + this, SLOT(colour3DColourChanged(int))); + m_tuningFrequency = prefs->getTuningFrequency(); QDoubleSpinBox *frequency = new QDoubleSpinBox; @@ -133,6 +164,20 @@ connect(frequency, SIGNAL(valueChanged(double)), this, SLOT(tuningFrequencyChanged(double))); + QComboBox *octaveSystem = new QComboBox; + int oct = prefs->getPropertyRangeAndValue + ("Octave Numbering System", &min, &max, &deflt); + m_octaveSystem = oct; + for (i = min; i <= max; ++i) { + octaveSystem->addItem(prefs->getPropertyValueLabel + ("Octave Numbering System", i)); + } + octaveSystem->setCurrentIndex(oct); + + connect(octaveSystem, SIGNAL(currentIndexChanged(int)), + this, SLOT(octaveSystemChanged(int))); + + /*!!! restore QComboBox *audioDevice = new QComboBox; std::vector devices = AudioTargetFactory::getInstance()->getCallbackTargetNames(); @@ -150,7 +195,7 @@ connect(audioDevice, SIGNAL(currentIndexChanged(int)), this, SLOT(audioDeviceChanged(int))); - + */ QComboBox *resampleQuality = new QComboBox; int rsq = prefs->getPropertyRangeAndValue("Resample Quality", &min, &max, @@ -191,7 +236,7 @@ connect(showSplash, SIGNAL(stateChanged(int)), this, SLOT(showSplashChanged(int))); -#ifndef Q_OS_MAC +#ifdef NOT_DEFINED // This no longer works correctly on any platform AFAICS QComboBox *bgMode = new QComboBox; int bg = prefs->getPropertyRangeAndValue("Background Mode", &min, &max, &deflt); @@ -206,8 +251,22 @@ #endif settings.beginGroup("Preferences"); + +#ifdef Q_OS_MAC + m_retina = settings.value("scaledHiDpi", true).toBool(); + QCheckBox *retina = new QCheckBox; + retina->setCheckState(m_retina ? Qt::Checked : Qt::Unchecked); + connect(retina, SIGNAL(stateChanged(int)), this, SLOT(retinaChanged(int))); +#else + m_retina = false; +#endif + QString userLocale = settings.value("locale", "").toString(); m_currentLocale = userLocale; + + QString permishTag = QString("network-permission-%1").arg(SV_VERSION); + m_networkPermission = settings.value(permishTag, false).toBool(); + settings.endGroup(); QComboBox *locale = new QComboBox; @@ -240,6 +299,11 @@ connect(locale, SIGNAL(currentIndexChanged(int)), this, SLOT(localeChanged(int))); + QCheckBox *networkPermish = new QCheckBox; + networkPermish->setCheckState(m_networkPermission ? Qt::Checked : Qt::Unchecked); + connect(networkPermish, SIGNAL(stateChanged(int)), + this, SLOT(networkPermissionChanged(int))); + QSpinBox *fontSize = new QSpinBox; int fs = prefs->getPropertyRangeAndValue("View Font Size", &min, &max, &deflt); @@ -265,6 +329,14 @@ connect(ttMode, SIGNAL(currentIndexChanged(int)), this, SLOT(timeToTextModeChanged(int))); + QCheckBox *hms = new QCheckBox; + int showHMS = prefs->getPropertyRangeAndValue + ("Show Hours And Minutes", &min, &max, &deflt); + m_showHMS = (showHMS != 0); + hms->setCheckState(m_showHMS ? Qt::Checked : Qt::Unchecked); + connect(hms, SIGNAL(stateChanged(int)), + this, SLOT(showHMSChanged(int))); + // General tab QFrame *frame = new QFrame; @@ -278,6 +350,10 @@ row, 0); subgrid->addWidget(locale, row++, 1, 1, 1); + subgrid->addWidget(new QLabel(tr("%1:").arg(tr("Allow network usage"))), + row, 0); + subgrid->addWidget(networkPermish, row++, 1, 1, 1); + subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel ("Temporary Directory Root"))), row, 0); @@ -290,8 +366,8 @@ row, 0); subgrid->addWidget(resampleOnLoad, row++, 1, 1, 1); - subgrid->addWidget(new QLabel(tr("Playback audio device:")), row, 0); - subgrid->addWidget(audioDevice, row++, 1, 1, 2); +//!!! subgrid->addWidget(new QLabel(tr("Playback audio device:")), row, 0); +//!!! subgrid->addWidget(audioDevice, row++, 1, 1, 2); subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel ("Resample Quality"))), @@ -311,11 +387,35 @@ row = 0; subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel + ("Show Splash Screen"))), + row, 0); + subgrid->addWidget(showSplash, row++, 1, 1, 1); + +#ifdef Q_OS_MAC + if (devicePixelRatio() > 1) { + subgrid->addWidget(new QLabel(tr("Draw layers at Retina resolution:")), row, 0); + subgrid->addWidget(retina, row++, 1, 1, 1); + } +#endif + + subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel ("Property Box Layout"))), row, 0); subgrid->addWidget(propertyLayout, row++, 1, 1, 2); -#ifndef Q_OS_MAC + subgrid->addWidget(new QLabel(tr("Default spectrogram colour:")), + row, 0); + subgrid->addWidget(spectrogramGColour, row++, 1, 1, 2); + + subgrid->addWidget(new QLabel(tr("Default melodic spectrogram colour:")), + row, 0); + subgrid->addWidget(spectrogramMColour, row++, 1, 1, 2); + + subgrid->addWidget(new QLabel(tr("Default colour 3D plot colour:")), + row, 0); + subgrid->addWidget(colour3DColour, row++, 1, 1, 2); + +#ifdef NOT_DEFINED // see earlier subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel ("Background Mode"))), row, 0); @@ -333,9 +433,9 @@ subgrid->addWidget(ttMode, row++, 1, 1, 2); subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel - ("Show Splash Screen"))), + ("Show Hours And Minutes"))), row, 0); - subgrid->addWidget(showSplash, row++, 1, 1, 1); + subgrid->addWidget(hms, row++, 1, 1, 1); subgrid->setRowStretch(row, 10); @@ -354,6 +454,11 @@ row, 0); subgrid->addWidget(frequency, row++, 1, 1, 2); + subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel + ("Octave Numbering System"))), + row, 0); + subgrid->addWidget(octaveSystem, row++, 1, 1, 2); + subgrid->addWidget(new QLabel(prefs->getPropertyLabel ("Spectrogram Y Smoothing")), row, 0); @@ -471,6 +576,27 @@ } void +PreferencesDialog::spectrogramGColourChanged(int colour) +{ + m_spectrogramGColour = colour; + m_applyButton->setEnabled(true); +} + +void +PreferencesDialog::spectrogramMColourChanged(int colour) +{ + m_spectrogramMColour = colour; + m_applyButton->setEnabled(true); +} + +void +PreferencesDialog::colour3DColourChanged(int colour) +{ + m_colour3DColour = colour; + m_applyButton->setEnabled(true); +} + +void PreferencesDialog::propertyLayoutChanged(int layout) { m_propertyLayout = layout; @@ -508,6 +634,22 @@ } void +PreferencesDialog::networkPermissionChanged(int state) +{ + m_networkPermission = (state == Qt::Checked); + m_applyButton->setEnabled(true); + m_changesOnRestart = true; +} + +void +PreferencesDialog::retinaChanged(int state) +{ + m_retina = (state == Qt::Checked); + m_applyButton->setEnabled(true); + // Does not require a restart +} + +void PreferencesDialog::showSplashChanged(int state) { m_showSplash = (state == Qt::Checked); @@ -565,6 +707,20 @@ } void +PreferencesDialog::showHMSChanged(int state) +{ + m_showHMS = (state == Qt::Checked); + m_applyButton->setEnabled(true); +} + +void +PreferencesDialog::octaveSystemChanged(int system) +{ + m_octaveSystem = system; + m_applyButton->setEnabled(true); +} + +void PreferencesDialog::viewFontSizeChanged(int sz) { m_viewFontSize = sz; @@ -596,25 +752,32 @@ prefs->setTemporaryDirectoryRoot(m_tempDirRoot); prefs->setBackgroundMode(Preferences::BackgroundMode(m_backgroundMode)); prefs->setTimeToTextMode(Preferences::TimeToTextMode(m_timeToTextMode)); + prefs->setShowHMS(m_showHMS); prefs->setViewFontSize(m_viewFontSize); + + prefs->setProperty("Octave Numbering System", m_octaveSystem); - std::vector devices = - AudioTargetFactory::getInstance()->getCallbackTargetNames(); +//!!! std::vector devices = +//!!! AudioTargetFactory::getInstance()->getCallbackTargetNames(); QSettings settings; - settings.beginGroup("Preferences"); - settings.setValue("audio-target", devices[m_audioDevice]); + QString permishTag = QString("network-permission-%1").arg(SV_VERSION); + settings.setValue(permishTag, m_networkPermission); +//!!! settings.setValue("audio-target", devices[m_audioDevice]); + settings.setValue("locale", m_currentLocale); +#ifdef Q_OS_MAC + settings.setValue("scaledHiDpi", m_retina); +#endif + settings.setValue("spectrogram-colour", m_spectrogramGColour); + settings.setValue("spectrogram-melodic-colour", m_spectrogramMColour); + settings.setValue("colour-3d-plot-colour", m_colour3DColour); settings.endGroup(); settings.beginGroup("MainWindow"); settings.setValue("sessiontemplate", m_currentTemplate); settings.endGroup(); - settings.beginGroup("Preferences"); - settings.setValue("locale", m_currentLocale); - settings.endGroup(); - m_applyButton->setEnabled(false); if (m_changesOnRestart) { diff -r ba6f95b1ff7c -r 5e6e1e074080 main/PreferencesDialog.h --- a/main/PreferencesDialog.h Wed Jul 15 12:27:40 2015 +0100 +++ b/main/PreferencesDialog.h Wed Apr 20 12:06:28 2016 +0100 @@ -49,6 +49,9 @@ void windowTypeChanged(WindowType type); void spectrogramSmoothingChanged(int state); void spectrogramXSmoothingChanged(int state); + void spectrogramGColourChanged(int state); + void spectrogramMColourChanged(int state); + void colour3DColourChanged(int state); void propertyLayoutChanged(int layout); void tuningFrequencyChanged(double freq); void audioDeviceChanged(int device); @@ -57,10 +60,14 @@ void tempDirRootChanged(QString root); void backgroundModeChanged(int mode); void timeToTextModeChanged(int mode); + void showHMSChanged(int state); + void octaveSystemChanged(int system); void viewFontSizeChanged(int sz); void showSplashChanged(int state); void defaultTemplateChanged(int); void localeChanged(int); + void networkPermissionChanged(int state); + void retinaChanged(int state); void tempDirButtonClicked(); @@ -86,14 +93,21 @@ WindowType m_windowType; int m_spectrogramSmoothing; int m_spectrogramXSmoothing; + int m_spectrogramGColour; + int m_spectrogramMColour; + int m_colour3DColour; int m_propertyLayout; - float m_tuningFrequency; + double m_tuningFrequency; int m_audioDevice; int m_resampleQuality; bool m_resampleOnLoad; + bool m_networkPermission; + bool m_retina; QString m_tempDirRoot; int m_backgroundMode; int m_timeToTextMode; + bool m_showHMS; + int m_octaveSystem; int m_viewFontSize; bool m_showSplash; diff -r ba6f95b1ff7c -r 5e6e1e074080 main/SVSplash.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main/SVSplash.cpp Wed Apr 20 12:06:28 2016 +0100 @@ -0,0 +1,100 @@ +/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ + +/* + Sonic Visualiser + An audio file viewer and annotation editor. + Centre for Digital Music, Queen Mary, University of London. + + 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. See the file + COPYING included with this distribution for more information. +*/ + +#include "SVSplash.h" + +#include "../version.h" + +#include +#include +#include +#include + +#include + +#include +using namespace std; + +SVSplash::SVSplash() +{ + setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint); + + QPixmap *p1 = new QPixmap(":icons/scalable/sv-splash.png"); + + int w = p1->width(), h = p1->height(); + QRect desk = QApplication::desktop()->availableGeometry(); + + double dpratio = devicePixelRatio(); + double widthMultiple = double(desk.width()) / double(w); + + int sw = w, sh = h; + + if (widthMultiple > 2.5 || dpratio > 1.0) { + + // Hi-dpi either via pixel doubling or simply via lots of + // pixels + + double factor = widthMultiple / 2.5; + if (factor < 1.0) factor = 1.0; + sw = int(floor(w * factor)); + sh = int(floor(h * factor)); + + delete p1; + m_pixmap = new QPixmap(int(floor(sw * dpratio)), + int(floor(sh * dpratio))); + + cerr << "pixmap size = " << m_pixmap->width() << " * " + << m_pixmap->height() << endl; + + m_pixmap->fill(Qt::red); + QSvgRenderer renderer(QString(":icons/scalable/sv-splash.svg")); + QPainter painter(m_pixmap); + renderer.render(&painter); + painter.end(); + + } else { + // The "low dpi" case + m_pixmap = p1; + } + + setFixedWidth(sw); + setFixedHeight(sh); + setGeometry(desk.x() + desk.width()/2 - sw/2, + desk.y() + desk.height()/2 - sh/2, + sw, sh); +} + +SVSplash::~SVSplash() +{ + delete m_pixmap; +} + +void +SVSplash::finishSplash(QWidget *w) +{ + finish(w); +} + +void +SVSplash::drawContents(QPainter *painter) +{ + painter->drawPixmap(rect(), *m_pixmap, m_pixmap->rect()); + QString text = QString("v%1").arg(SV_VERSION); + painter->drawText + (width() - painter->fontMetrics().width(text) - (width()/50), + (width()/70) + painter->fontMetrics().ascent(), + text); +} + + diff -r ba6f95b1ff7c -r 5e6e1e074080 main/SVSplash.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main/SVSplash.h Wed Apr 20 12:06:28 2016 +0100 @@ -0,0 +1,39 @@ +/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ + +/* + Sonic Visualiser + An audio file viewer and annotation editor. + Centre for Digital Music, Queen Mary, University of London. + + 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. See the file + COPYING included with this distribution for more information. +*/ + +#ifndef SV_SPLASH_H +#define SV_SPLASH_H + +#include + +class QPixmap; + +class SVSplash : public QSplashScreen +{ + Q_OBJECT + +public: + SVSplash(); + virtual ~SVSplash(); + +public slots: + void finishSplash(QWidget *); + +protected: + void drawContents(QPainter *); + QPixmap *m_pixmap; +}; + +#endif + diff -r ba6f95b1ff7c -r 5e6e1e074080 main/main.cpp --- a/main/main.cpp Wed Jul 15 12:27:40 2015 +0100 +++ b/main/main.cpp Wed Apr 20 12:06:28 2016 +0100 @@ -14,14 +14,19 @@ */ #include "MainWindow.h" +#include "SVSplash.h" #include "system/System.h" #include "system/Init.h" #include "base/TempDirectory.h" #include "base/PropertyContainer.h" #include "base/Preferences.h" +#include "data/fileio/FileSource.h" #include "widgets/TipDialog.h" +#include "widgets/InteractiveFileFinder.h" +#include "svapp/framework/TransformUserConfigurator.h" #include "transform/TransformFactory.h" +#include "svcore/plugin/PluginScan.h" #include #include @@ -33,13 +38,10 @@ #include #include #include -#include #include #include #include -#include "../version.h" - #include #include @@ -198,22 +200,6 @@ m_filepathQueue(QStringList()), m_mainWindow(0) { -#ifdef Q_OS_MAC - // Override the Qt plugin load path. The default contains the - // Qt installation location as well as the application - // directory, but we don't ever want to load plugins from - // outside the app bundle because we don't know for sure what - // (potentially different) versions of the Qt framework - // libraries they may have dyld dependencies on. - QString apploc(applicationFilePath()); - apploc.truncate(apploc.lastIndexOf(QLatin1Char('/'))); - apploc = QDir(apploc).canonicalPath(); - if (QFile::exists(apploc)) { - setLibraryPaths(QStringList() << apploc); - } else { - setLibraryPaths(QStringList()); - } -#endif } virtual ~SVApplication() { } @@ -228,7 +214,7 @@ if (!success) manager.cancel(); } - void handleFilepathArgument(QString path, QSplashScreen *splash); + void handleFilepathArgument(QString path, SVSplash *splash); bool m_readyForFiles; QStringList m_filepathQueue; @@ -236,7 +222,6 @@ protected: MainWindow *m_mainWindow; bool event(QEvent *); - }; int @@ -285,22 +270,15 @@ QApplication::setOrganizationDomain("sonicvisualiser.org"); QApplication::setApplicationName(QApplication::tr("Sonic Visualiser")); - QSplashScreen *splash = 0; + QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); + + SVSplash *splash = 0; QSettings settings; settings.beginGroup("Preferences"); if (settings.value("show-splash", true).toBool()) { - QPixmap pixmap(":/icons/sv-splash.png"); - QPainter painter; - painter.begin(&pixmap); - QString text = QString("v%1").arg(SV_VERSION); - painter.drawText - (pixmap.width() - painter.fontMetrics().width(text) - 10, - 10 + painter.fontMetrics().ascent(), - text); - painter.end(); - splash = new QSplashScreen(pixmap); + splash = new SVSplash(); splash->show(); QTimer::singleShot(5000, splash, SLOT(hide())); application.processEvents(); @@ -317,7 +295,7 @@ QIcon icon; int sizes[] = { 16, 22, 24, 32, 48, 64, 128 }; - for (int i = 0; i < sizeof(sizes)/sizeof(sizes[0]); ++i) { + for (int i = 0; i < int(sizeof(sizes)/sizeof(sizes[0])); ++i) { icon.addFile(QString(":icons/sv-%1x%2.png").arg(sizes[i]).arg(sizes[i])); } QApplication::setWindowIcon(icon); @@ -355,14 +333,36 @@ StoreStartupLocale(); + // Make known-plugins query as early as possible after showing + // splash screen. This depends on our helper executable, which + // must exist either in the same directory as this one or + // (preferably) a subdirectory called "checker". + QString myDir = application.applicationDirPath(); + QString helperPath = myDir + "/checker/plugin-checker-helper"; + QString helperSuffix = ""; +#ifdef _WIN32 + helperSuffix = ".exe"; +#endif + if (!QFile(helperPath + helperSuffix).exists()) { + helperPath = myDir + "/plugin-checker-helper"; + } + helperPath += helperSuffix; + PluginScan::getInstance()->scan(helperPath); + // Permit size_t and PropertyName to be used as args in queued signal calls - qRegisterMetaType("size_t"); qRegisterMetaType("PropertyContainer::PropertyName"); - MainWindow *gui = new MainWindow(audioOutput, oscSupport); + MainWindow::SoundOptions options = MainWindow::WithEverything; + if (!audioOutput) options = 0; + + MainWindow *gui = new MainWindow(options, oscSupport); application.setMainWindow(gui); + InteractiveFileFinder::setParentWidget(gui); + TransformUserConfigurator::setParentWidget(gui); if (splash) { QObject::connect(gui, SIGNAL(hideSplash()), splash, SLOT(hide())); + QObject::connect(gui, SIGNAL(hideSplash(QWidget *)), + splash, SLOT(finishSplash(QWidget *))); } QDesktopWidget *desktop = QApplication::desktop(); @@ -430,15 +430,6 @@ settings.endGroup(); #endif - if (splash) splash->finish(gui); - delete splash; - -/* - TipDialog tipDialog; - if (tipDialog.isOK()) { - tipDialog.exec(); - } -*/ int rv = application.exec(); gui->hide(); @@ -470,6 +461,8 @@ settings.endGroup(); #endif + FileSource::debugReport(); + delete gui; cleanupMutex.unlock(); @@ -478,7 +471,14 @@ } bool SVApplication::event(QEvent *event){ + +// Avoid warnings/errors with -Wextra because we aren't explicitly +// handling all event types (-Wall is OK with this because of the +// default but the stricter level insists) +#pragma GCC diagnostic ignored "-Wswitch-enum" + QString thePath; + switch (event->type()) { case QEvent::FileOpen: thePath = static_cast(event)->file(); @@ -493,7 +493,7 @@ } /** Application-global handler for filepaths passed in, e.g. as command-line arguments or apple events */ -void SVApplication::handleFilepathArgument(QString path, QSplashScreen *splash){ +void SVApplication::handleFilepathArgument(QString path, SVSplash *splash){ static bool haveSession = false; static bool haveMainModel = false; static bool havePriorCommandLineModel = false; @@ -506,7 +506,7 @@ if (path.endsWith("sv")) { if (!haveSession) { - status = m_mainWindow->openSessionFile(path); + status = m_mainWindow->openSessionPath(path); if (status == MainWindow::FileOpenSucceeded) { haveSession = true; haveMainModel = true; @@ -518,18 +518,18 @@ } if (status != MainWindow::FileOpenSucceeded) { if (!haveMainModel) { - status = m_mainWindow->open(path, MainWindow::ReplaceSession); + status = m_mainWindow->openPath(path, MainWindow::ReplaceSession); if (status == MainWindow::FileOpenSucceeded) { haveMainModel = true; } } else { if (haveSession && !havePriorCommandLineModel) { - status = m_mainWindow->open(path, MainWindow::AskUser); + status = m_mainWindow->openPath(path, MainWindow::AskUser); if (status == MainWindow::FileOpenSucceeded) { havePriorCommandLineModel = true; } } else { - status = m_mainWindow->open(path, MainWindow::CreateAdditionalModel); + status = m_mainWindow->openPath(path, MainWindow::CreateAdditionalModel); } } } diff -r ba6f95b1ff7c -r 5e6e1e074080 misc/debian-dependencies.sh --- a/misc/debian-dependencies.sh Wed Jul 15 12:27:40 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -#!/bin/bash - -target=$1 - -if [ ! -f "$target" ]; then - echo "Usage: $0 target-executable" - exit 1 -fi - -pfile=/tmp/packages_$$ -rfile=/tmp/redundant_$$ - -trap "rm -f $pfile $rfile" 0 -echo - -ldd "$target" | awk '{ print $3; }' | grep '^/' | while read lib; do - if test -n "$lib" ; then - dpkg-query -S "$lib" - fi - done | grep ': ' | awk -F: '{ print $1 }' | sort | uniq > $pfile - -echo "Packages providing required libraries:" -cat $pfile -echo - -for p in `cat $pfile`; do - echo Looking at $p 1>&2 - apt-cache showpkg "$p" | grep '^ ' | grep ',' | awk -F, '{ print $1; }' | \ - while read d; do - if grep -q '^'$d'$' $pfile; then - echo $p - fi - done -done | sort | uniq > $rfile - -echo "Packages that can be eliminated because other packages depend on them:" -cat $rfile -echo - -echo "Remaining required packages:" -cat $pfile $rfile | sort | uniq -u - diff -r ba6f95b1ff7c -r 5e6e1e074080 misc/update-i18n.sh --- a/misc/update-i18n.sh Wed Jul 15 12:27:40 2015 +0100 +++ b/misc/update-i18n.sh Wed Apr 20 12:06:28 2016 +0100 @@ -3,19 +3,19 @@ LUPDATE="lupdate" LRELEASE="lrelease" -if lupdate-qt4 -version >/dev/null 2>&1; then - LUPDATE="lupdate-qt4" - LRELEASE="lrelease-qt4" +if lupdate-qt5 -version >/dev/null 2>&1; then + LUPDATE="lupdate-qt5" + LRELEASE="lrelease-qt5" fi LANGUAGES="ru en_GB en_US cs_CZ" for LANG in $LANGUAGES; do $LUPDATE \ - ../svcore/*/*.h ../svcore/*/*.cpp \ - ../svcore/*/*/*.h ../svcore/*/*/*.cpp \ - ../svgui/*/*.h ../svgui/*/*.cpp \ - ../svapp/*/*.h ../svapp/*/*.cpp \ + svcore/*/*.h svcore/*/*.cpp \ + svcore/*/*/*.h svcore/*/*/*.cpp \ + svgui/*/*.h svgui/*/*.cpp \ + svapp/*/*.h svapp/*/*.cpp \ */*.h */*.cpp \ -ts i18n/sonic-visualiser_$LANG.ts done diff -r ba6f95b1ff7c -r 5e6e1e074080 platform-dataquay.pri --- a/platform-dataquay.pri Wed Jul 15 12:27:40 2015 +0100 +++ b/platform-dataquay.pri Wed Apr 20 12:06:28 2016 +0100 @@ -3,17 +3,25 @@ include(./config.pri) } -CONFIG += staticlib +CONFIG += staticlib c++11 DEFINES -= USE_REDLAND QMAKE_CXXFLAGS -= -I/usr/include/rasqal -I/usr/include/raptor2 +QMAKE_CXXFLAGS -= -Werror EXTRALIBS -= -lrdf DEFINES += USE_SORD # Libraries and paths should be added by config.pri -win32-g++: { +win32-g++ { INCLUDEPATH += ../sv-dependency-builds/win32-mingw/include LIBS += -L../../sv-dependency-builds/win32-mingw/lib } - +win32-msvc* { + INCLUDEPATH += ../sv-dependency-builds/win32-msvc/include + LIBS += -L../../sv-dependency-builds/win32-msvc/lib +} +mac* { + INCLUDEPATH += ../sv-dependency-builds/osx/include + LIBS += -L../sv-dependency-builds/osx/lib +} diff -r ba6f95b1ff7c -r 5e6e1e074080 samples/README --- a/samples/README Wed Jul 15 12:27:40 2015 +0100 +++ b/samples/README Wed Apr 20 12:06:28 2016 +0100 @@ -1,2 +1,3 @@ Samples from standard Hydrogen drum machine kits, except for piano.wav -(ancestry unknown) and click.wav (random noise). +(ancestry unknown), elecpiano.wav (recorded by Matthias Mauch) and +click.wav (random noise). diff -r ba6f95b1ff7c -r 5e6e1e074080 samples/elecpiano.wav Binary file samples/elecpiano.wav has changed diff -r ba6f95b1ff7c -r 5e6e1e074080 sonic-visualiser.desktop --- a/sonic-visualiser.desktop Wed Jul 15 12:27:40 2015 +0100 +++ b/sonic-visualiser.desktop Wed Apr 20 12:06:28 2016 +0100 @@ -1,8 +1,9 @@ [Desktop Entry] Name=Sonic Visualiser -Exec=sonic-visualiser +Exec=sonic-visualiser %U +Keywords=audio; sound; visualiser; sonic; Terminal=false Type=Application Icon=sv-icon -Categories=Application;Multimedia;Audio;AudioVideo -MimeType=application/x-sonicvisualiser;application/x-sonicvisualiser-layer;application/x-ogg;audio/mp3;audio/mpeg;audio/mpegurl;audio/x-flac;audio/x-mp3;audio/x-mpeg;audio/x-mpegurl;audio/x-wav;audio/wav;application/ogg;audio/x-vorbis+ogg +Categories=Audio;AudioVideo; +MimeType=application/x-sonicvisualiser;application/x-sonicvisualiser-layer;application/x-ogg;audio/mp3;audio/mpeg;audio/mpegurl;audio/x-flac;audio/x-mp3;audio/x-mpeg;audio/x-mpegurl;audio/x-wav;audio/wav;application/ogg;audio/x-vorbis+ogg; diff -r ba6f95b1ff7c -r 5e6e1e074080 sonic-visualiser.pro --- a/sonic-visualiser.pro Wed Jul 15 12:27:40 2015 +0100 +++ b/sonic-visualiser.pro Wed Apr 20 12:06:28 2016 +0100 @@ -1,13 +1,14 @@ TEMPLATE = subdirs -SUBDIRS = sub_dataquay svcore svgui svapp sub_sv +SUBDIRS = sub_bq sub_dataquay svcore svgui svapp checker sub_sv !win* { # We should build and run the tests on any platform, # but doing it automatically doesn't work so well from # within an IDE on Windows, so remove that from here - SUBDIRS += svcore/data/fileio/test + SUBDIRS += svcore/base/test svcore/data/fileio/test svcore/data/model/test } +sub_bq.file = bq.pro sub_sv.file = sv.pro sub_dataquay.file = dataquay/lib.pro diff -r ba6f95b1ff7c -r 5e6e1e074080 sonic-visualiser.qrc --- a/sonic-visualiser.qrc Wed Jul 15 12:27:40 2015 +0100 +++ b/sonic-visualiser.qrc Wed Apr 20 12:06:28 2016 +0100 @@ -1,9 +1,60 @@ - + + icons/scalable/align.svg + icons/scalable/colour3d.svg + icons/scalable/cross.svg + icons/scalable/dataedit.svg + icons/scalable/draw.svg + icons/scalable/erase.svg + icons/scalable/editcopy.svg + icons/scalable/editcut.svg + icons/scalable/editdelete.svg + icons/scalable/editpaste.svg + icons/scalable/exit.svg + icons/scalable/filenew.svg + icons/scalable/fileopen.svg + icons/scalable/filesaveas.svg + icons/scalable/filesave.svg + icons/scalable/filesavesv.svg + icons/scalable/ffwd-end.svg + icons/scalable/ffwd.svg + icons/scalable/navigate.svg + icons/scalable/move.svg + icons/scalable/pause.svg + icons/scalable/playloop.svg + icons/scalable/playpause.svg + icons/scalable/playselection.svg + icons/scalable/solo.svg + icons/scalable/play.svg + icons/scalable/record.svg + icons/scalable/rewind-start.svg + icons/scalable/rewind.svg + icons/scalable/undo.svg + icons/scalable/redo.svg + icons/scalable/select.svg + icons/scalable/measure.svg + icons/scalable/speaker.svg + icons/scalable/instants.svg + icons/scalable/notes.svg + icons/scalable/values.svg + icons/scalable/regions.svg + icons/scalable/spectrogram.svg + icons/scalable/spectrum.svg + icons/scalable/text.svg + icons/scalable/timeruler.svg + icons/scalable/zoom.svg + icons/scalable/zoom-in.svg + icons/scalable/zoom-out.svg + icons/scalable/zoom-fit.svg + icons/scalable/sv-icon-light.svg + icons/scalable/sv-icon.svg + icons/scalable/sv-splash.svg + icons/scalable/sv-splash.png + icons/scalable/sv-splash@2x.png + icons/scalable/waveform.svg icons/waveform.png icons/spectrum.png icons/spectrogram.png - icons/timeruler.png icons/pane.png icons/instants.png icons/notes.png @@ -44,10 +95,6 @@ icons/measure2mask.xbm icons/move.png icons/navigate.png - icons/zoom.png - icons/zoom-in.png - icons/zoom-out.png - icons/zoom-fit.png icons/zoom-reset.png icons/undo.png icons/redo.png @@ -104,6 +151,7 @@ samples/clap.wav samples/click.wav samples/cowbell.wav + samples/elecpiano.wav samples/hihat.wav samples/kick.wav samples/organ.wav diff -r ba6f95b1ff7c -r 5e6e1e074080 sv.pro --- a/sv.pro Wed Jul 15 12:27:40 2015 +0100 +++ b/sv.pro Wed Apr 20 12:06:28 2016 +0100 @@ -1,35 +1,52 @@ TEMPLATE = app +INCLUDEPATH += vamp-plugin-sdk + win32-g++ { INCLUDEPATH += sv-dependency-builds/win32-mingw/include - LIBS += -Lsv-dependency-builds/win32-mingw/lib + LIBS += -Lrelease -Lsv-dependency-builds/win32-mingw/lib } win32-msvc* { INCLUDEPATH += sv-dependency-builds/win32-msvc/include - LIBS += -Lsv-dependency-builds/win32-msvc/lib + LIBS += -Lrelease -Lsv-dependency-builds/win32-msvc/lib +} +mac* { + INCLUDEPATH += sv-dependency-builds/osx/include + LIBS += -Lsv-dependency-builds/osx/lib } exists(config.pri) { include(config.pri) } -win* { - !exists(config.pri) { - DEFINES += HAVE_BZ2 HAVE_FFTW3 HAVE_FFTW3F HAVE_SNDFILE HAVE_SAMPLERATE HAVE_VAMP HAVE_VAMPHOSTSDK HAVE_RUBBERBAND HAVE_DATAQUAY HAVE_LIBLO HAVE_MAD HAVE_ID3TAG HAVE_PORTAUDIO_2_0 - LIBS += -lbz2 -lrubberband -lvamp-hostsdk -lfftw3 -lfftw3f -lsndfile -lFLAC -logg -lvorbis -lvorbisenc -lvorbisfile -logg -lmad -lid3tag -lportaudio -lsamplerate -llo -lz -lsord-0 -lserd-0 -lwinmm -lws2_32 +!exists(config.pri) { + + CONFIG += release + DEFINES += NDEBUG BUILD_RELEASE NO_TIMING + + DEFINES += HAVE_BZ2 HAVE_FFTW3 HAVE_FFTW3F HAVE_SNDFILE HAVE_SAMPLERATE HAVE_VAMP HAVE_VAMPHOSTSDK HAVE_RUBBERBAND HAVE_DATAQUAY HAVE_LIBLO HAVE_MAD HAVE_ID3TAG HAVE_PORTAUDIO + + LIBS += -lbz2 -lrubberband -lvamp-hostsdk -lfftw3 -lfftw3f -lsndfile -lFLAC -logg -lvorbis -lvorbisenc -lvorbisfile -logg -lmad -lid3tag -lportaudio -lsamplerate -lz -lsord-0 -lserd-0 -llo + + win* { + LIBS += -lwinmm -lws2_32 + } + macx* { + DEFINES += HAVE_COREAUDIO + LIBS += -framework CoreAudio -framework CoreMidi -framework AudioUnit -framework AudioToolbox -framework CoreFoundation -framework CoreServices -framework Accelerate } } -CONFIG += qt thread warn_on stl rtti exceptions -QT += network xml gui widgets +CONFIG += qt thread warn_on stl rtti exceptions c++11 +QT += network xml gui widgets svg TARGET = "Sonic Visualiser" linux*:TARGET = sonic-visualiser solaris*:TARGET = sonic-visualiser -DEPENDPATH += . svcore svgui svapp -INCLUDEPATH += . svcore svgui svapp +DEPENDPATH += . bqaudioio svcore svgui svapp +INCLUDEPATH += . bqaudioio svcore svgui svapp TRANSLATIONS += i18n/sonic-visualiser_ru.ts i18n/sonic-visualiser_en_GB.ts i18n/sonic-visualiser_en_US.ts i18n/sonic-visualiser_cs_CZ.ts @@ -41,48 +58,75 @@ contains(DEFINES, BUILD_STATIC):LIBS -= -ljack -MY_LIBS = -Lsvapp -Lsvgui -Lsvcore -Ldataquay -lsvapp -lsvgui -lsvcore -ldataquay +MY_LIBS = -Lsvapp -Lsvgui -Lsvcore -Lchecker -Ldataquay -L. \ + -lsvapp -lsvgui -lsvcore -lchecker -ldataquay -lbq linux* { -MY_LIBS = -Wl,-Bstatic $$MY_LIBS -Wl,-Bdynamic +MY_LIBS = -Wl,-Bstatic $$MY_LIBS -Wl,-Bdynamic -ldl } win* { -MY_LIBS = -Lsvapp/release -Lsvgui/release -Lsvcore/release -Ldataquay/release $$MY_LIBS +MY_LIBS = -Lsvapp/release -Lsvgui/release -Lsvcore/release -Lchecker/release -Ldataquay/release $$MY_LIBS } LIBS = $$MY_LIBS $$LIBS win* { + PRE_TARGETDEPS += svapp/release/libsvapp.a \ svgui/release/libsvgui.a \ svcore/release/libsvcore.a \ - dataquay/release/libdataquay.a + dataquay/release/libdataquay.a \ + checker/release/libchecker.a } !win* { PRE_TARGETDEPS += svapp/libsvapp.a \ svgui/libsvgui.a \ svcore/libsvcore.a \ - dataquay/libdataquay.a + dataquay/libdataquay.a \ + checker/libchecker.a } RESOURCES += sonic-visualiser.qrc -HEADERS += main/MainWindow.h \ - main/IMAFencoder.h \ - main/checkbox.h \ - main/NetworkPermissionTester.h \ - main/Surveyer.h \ - main/PreferencesDialog.h - -SOURCES += main/main.cpp \ - main/OSCHandler.cpp \ - main/MainWindow.cpp \ - main/IMAFencoder.c \ - main/imafdecoder.cpp \ - main/NetworkPermissionTester.cpp \ - main/Surveyer.cpp \ - main/PreferencesDialog.cpp +HEADERS += \ + vamp-plugin-sdk/vamp-hostsdk/PluginBase.h \ + vamp-plugin-sdk/vamp-hostsdk/PluginBufferingAdapter.h \ + vamp-plugin-sdk/vamp-hostsdk/PluginChannelAdapter.h \ + vamp-plugin-sdk/vamp-hostsdk/Plugin.h \ + vamp-plugin-sdk/vamp-hostsdk/PluginHostAdapter.h \ + vamp-plugin-sdk/vamp-hostsdk/PluginInputDomainAdapter.h \ + vamp-plugin-sdk/vamp-hostsdk/PluginLoader.h \ + vamp-plugin-sdk/vamp-hostsdk/PluginSummarisingAdapter.h \ + vamp-plugin-sdk/vamp-hostsdk/PluginWrapper.h \ + vamp-plugin-sdk/vamp-hostsdk/RealTime.h \ + vamp-plugin-sdk/src/vamp-hostsdk/Window.h \ + main/MainWindow.h \ + main/IMAFencoder.h \ + main/checkbox.h \ + main/NetworkPermissionTester.h \ + main/Surveyer.h \ + main/SVSplash.h \ + main/PreferencesDialog.h +SOURCES += \ + vamp-plugin-sdk/src/vamp-hostsdk/PluginBufferingAdapter.cpp \ + vamp-plugin-sdk/src/vamp-hostsdk/PluginChannelAdapter.cpp \ + vamp-plugin-sdk/src/vamp-hostsdk/PluginHostAdapter.cpp \ + vamp-plugin-sdk/src/vamp-hostsdk/PluginInputDomainAdapter.cpp \ + vamp-plugin-sdk/src/vamp-hostsdk/PluginLoader.cpp \ + vamp-plugin-sdk/src/vamp-hostsdk/PluginSummarisingAdapter.cpp \ + vamp-plugin-sdk/src/vamp-hostsdk/PluginWrapper.cpp \ + vamp-plugin-sdk/src/vamp-hostsdk/RealTime.cpp \ + vamp-plugin-sdk/src/vamp-hostsdk/Files.cpp \ + main/main.cpp \ + main/OSCHandler.cpp \ + main/MainWindow.cpp \ + main/IMAFencoder.c \ + main/imafdecoder.cpp \ + main/NetworkPermissionTester.cpp \ + main/Surveyer.cpp \ + main/SVSplash.cpp \ + main/PreferencesDialog.cpp # for mac integration QMAKE_INFO_PLIST = deploy/osx/Info.plist diff -r ba6f95b1ff7c -r 5e6e1e074080 templates/default.svt --- a/templates/default.svt Wed Jul 15 12:27:40 2015 +0100 +++ b/templates/default.svt Wed Apr 20 12:06:28 2016 +0100 @@ -2,8 +2,8 @@ - - + + diff -r ba6f95b1ff7c -r 5e6e1e074080 version.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/version.h Wed Apr 20 12:06:28 2016 +0100 @@ -0,0 +1,1 @@ +#define SV_VERSION "2.5"