# HG changeset patch # User Chris Cannam # Date 1481111624 0 # Node ID 6f5a40419b00866b3eb5d0105df03126d3f16f92 # Parent be5b29ce283b38e1021a29120ef28a8ffa2e48f9# Parent 558347e7e1abecf45f6368b4526ff3639c52e8ba Merge from branch bqresample diff -r be5b29ce283b -r 6f5a40419b00 .hgsub --- a/.hgsub Mon Aug 17 16:19:01 2015 +0100 +++ b/.hgsub Wed Dec 07 11:53:44 2016 +0000 @@ -1,8 +1,13 @@ +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 +bqfft = https://bitbucket.org/breakfastquay/bqfft 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 +piper-cpp = https://code.soundsoftware.ac.uk/hg/piper-cpp diff -r be5b29ce283b -r 6f5a40419b00 .hgsubstate --- a/.hgsubstate Mon Aug 17 16:19:01 2015 +0100 +++ b/.hgsubstate Wed Dec 07 11:53:44 2016 +0000 @@ -1,8 +1,13 @@ -fde4a0518fc410fbf3646b4ecf458142f0cc20d7 bqaudioio -62c40e7f9231e459091c3352c5d4b6001be127ca bqresample -94b6ebd5e8ab897e5b294fd77b4113e8d6d78b13 bqvec -d16f0fd6db6104d87882bc43788a3bb1b0f8c528 dataquay -55ece8862b6d3a54aad271a53f9c1615e5d3bcf8 sv-dependency-builds -fdce8a452b19b639c3408b741bfe9a035e345cca svapp -020277bfafcb99d636a13830dc72c237cf072b0c svcore -7dcd035176851a9f13539d852ccec828a37d2863 svgui +31c748f64308429553bbce7f18f1b6da3419ba1d bqaudioio +f8f6b66b9875e6a9f153c1692b9f6cb241d51bf0 bqfft +6b0cbfca8fb7cf64f89b0a0026b63bc212b156af bqresample +7ea6b5e4d20a016600bfc8c65fa87bdb05782322 bqvec +1eefc20919cd080b684b2bbbc0af7270b8facb54 checker +3768bdde6fdf866aa63fff5bde8d9fa64a8979ef dataquay +c37b5598a4beb570417716e30aa649c78312169f icons/scalable +3257ddb6fff110cc88f3ffeaeefa0f29d5eb3b6f piper-cpp +5f67a29f0fc7f1b908f7cde4866173a7af337862 sv-dependency-builds +ec189ad4d38ff73bdc60943cfffb49eb87df9cd8 svapp +f830a10bfbd6ada2cb10398df47c8cec776904e5 svcore +db90fee630bc756c3c64a6f904b551acb13e000f svgui +0eebd22a081a824067bf3d5de65326696feab653 vamp-plugin-sdk diff -r be5b29ce283b -r 6f5a40419b00 .hgtags --- a/.hgtags Mon Aug 17 16:19:01 2015 +0100 +++ b/.hgtags Wed Dec 07 11:53:44 2016 +0000 @@ -48,3 +48,5 @@ 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 diff -r be5b29ce283b -r 6f5a40419b00 CHANGELOG --- a/CHANGELOG Mon Aug 17 16:19:01 2015 +0100 +++ b/CHANGELOG Wed Dec 07 11:53:44 2016 +0000 @@ -1,3 +1,18 @@ +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 diff -r be5b29ce283b -r 6f5a40419b00 README --- a/README Mon Aug 17 16:19:01 2015 +0100 +++ b/README Wed Dec 07 11:53:44 2016 +0000 @@ -46,7 +46,7 @@ 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 +Code copyright 2005-2007 Chris Cannam and copyright 2006-2016 Queen Mary, University of London, except where indicated in the individual source files. diff -r be5b29ce283b -r 6f5a40419b00 acinclude.m4 --- a/acinclude.m4 Mon Aug 17 16:19:01 2015 +0100 +++ b/acinclude.m4 Wed Dec 07 11:53:44 2016 +0000 @@ -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 diff -r be5b29ce283b -r 6f5a40419b00 base.pri --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/base.pri Wed Dec 07 11:53:44 2016 +0000 @@ -0,0 +1,67 @@ + +SV_INCLUDEPATH = \ + . \ + bqvec \ + bqvec/bqvec \ + bqfft \ + bqresample \ + bqaudioio \ + bqaudioio/bqaudioio \ + piper-cpp \ + checker \ + checker/checker \ + dataquay \ + dataquay/dataquay \ + svcore \ + svcore/data \ + svcore/plugin/api/alsa \ + svgui \ + svapp \ + vamp-plugin-sdk + +DEPENDPATH += $$SV_INCLUDEPATH +INCLUDEPATH += $$SV_INCLUDEPATH + +# Platform defines for RtMidi +linux*: DEFINES += __LINUX_ALSASEQ__ +macx*: DEFINES += __MACOSX_CORE__ +win*: DEFINES += __WINDOWS_MM__ +solaris*: DEFINES += __RTMIDI_DUMMY_ONLY__ + +# Defines for Dataquay +DEFINES += USE_SORD + +CONFIG += qt thread warn_on stl rtti exceptions c++11 + +include(bq-files.pri) +include(vamp-plugin-sdk-files.pri) +include(svcore/files.pri) + +DATAQUAY_SOURCES=$$fromfile(dataquay/lib.pro, SOURCES) +DATAQUAY_HEADERS=$$fromfile(dataquay/lib.pro, HEADERS) + +CHECKER_SOURCES=$$fromfile(checker/checker.pri, SOURCES) +CHECKER_HEADERS=$$fromfile(checker/checker.pri, HEADERS) + +CLIENT_HEADERS=$$fromfile(piper-cpp/vamp-client/client.pro, HEADERS) + +for (file, BQ_SOURCES) { SOURCES += $$file } +for (file, BQ_HEADERS) { HEADERS += $$file } + +for (file, VAMP_SOURCES) { SOURCES += $$file } +for (file, VAMP_HEADERS) { HEADERS += $$file } + +for (file, DATAQUAY_SOURCES) { SOURCES += $$sprintf("dataquay/%1", $$file) } +for (file, DATAQUAY_HEADERS) { HEADERS += $$sprintf("dataquay/%1", $$file) } + +for (file, CHECKER_SOURCES) { SOURCES += $$sprintf("checker/%1", $$file) } +for (file, CHECKER_HEADERS) { HEADERS += $$sprintf("checker/%1", $$file) } + +for (file, SVCORE_SOURCES) { SOURCES += $$sprintf("svcore/%1", $$file) } +for (file, SVCORE_HEADERS) { HEADERS += $$sprintf("svcore/%1", $$file) } + +for (file, CLIENT_HEADERS) { + HEADERS += $$sprintf("piper-cpp/vamp-client/%1", $$file) +} + +SOURCES += piper-cpp/vamp-capnp/piper-capnp.cpp diff -r be5b29ce283b -r 6f5a40419b00 bq-files.pri --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bq-files.pri Wed Dec 07 11:53:44 2016 +0000 @@ -0,0 +1,38 @@ + +BQ_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 \ + bqfft/bqfft/FFT.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/PortAudioIO.h \ + bqaudioio/src/PulseAudioIO.h + +BQ_SOURCES += \ + bqvec/src/Allocators.cpp \ + bqvec/src/Barrier.cpp \ + bqvec/src/VectorOpsComplex.cpp \ + bqfft/src/FFT.cpp \ + bqresample/src/Resampler.cpp \ + bqaudioio/src/AudioFactory.cpp \ + bqaudioio/src/JACKAudioIO.cpp \ + bqaudioio/src/PortAudioIO.cpp \ + bqaudioio/src/PulseAudioIO.cpp \ + bqaudioio/src/SystemPlaybackTarget.cpp \ + bqaudioio/src/SystemRecordSource.cpp + diff -r be5b29ce283b -r 6f5a40419b00 bq.pro --- a/bq.pro Mon Aug 17 16:19:01 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ - -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_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 += 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 \ - bqvec/test/TestVectorOps.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 \ - bqvec/test/TestVectorOps.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 be5b29ce283b -r 6f5a40419b00 config.pri.in --- a/config.pri.in Mon Aug 17 16:19:01 2015 +0100 +++ b/config.pri.in Wed Dec 07 11:53:44 2016 +0000 @@ -11,10 +11,12 @@ QMAKE_CXXFLAGS += @CXXFLAGS@ QMAKE_LFLAGS += @LDFLAGS@ -linux*:LIBS += -lasound +linux*:LIBS += -lasound -ldl macx*:DEFINES += HAVE_COREAUDIO macx*:LIBS += -framework CoreAudio -framework CoreMidi -framework AudioUnit -framework AudioToolbox -framework CoreFoundation -framework CoreServices LIBS += @LIBS@ +DEFINES += HAVE_PIPER HAVE_PLUGIN_CHECKER_HELPER + diff -r be5b29ce283b -r 6f5a40419b00 configure --- a/configure Mon Aug 17 16:19:01 2015 +0100 +++ b/configure Wed Dec 07 11:53:44 2016 +0000 @@ -620,10 +620,8 @@ # include #endif" -enable_option_checking=no ac_subst_vars='LTLIBOBJS LIBOBJS -subdirs QMAKE_CONFIG HAVES CXXFLAGS_MINIMAL @@ -652,16 +650,16 @@ portaudio_CFLAGS liblo_LIBS liblo_CFLAGS +kj_LIBS +kj_CFLAGS +capnp_LIBS +capnp_CFLAGS serd_LIBS serd_CFLAGS sord_LIBS sord_CFLAGS rubberband_LIBS rubberband_CFLAGS -vamphostsdk_LIBS -vamphostsdk_CFLAGS -vamp_LIBS -vamp_CFLAGS libsamplerate_LIBS libsamplerate_CFLAGS sndfile_LIBS @@ -762,16 +760,16 @@ sndfile_LIBS libsamplerate_CFLAGS libsamplerate_LIBS -vamp_CFLAGS -vamp_LIBS -vamphostsdk_CFLAGS -vamphostsdk_LIBS rubberband_CFLAGS rubberband_LIBS sord_CFLAGS sord_LIBS serd_CFLAGS serd_LIBS +capnp_CFLAGS +capnp_LIBS +kj_CFLAGS +kj_LIBS liblo_CFLAGS liblo_LIBS portaudio_CFLAGS @@ -792,7 +790,7 @@ id3tag_LIBS X11_CFLAGS X11_LIBS' -ac_subdirs_all='svcore svgui svapp' + # Initialize some variables set by options. ac_init_help= @@ -1433,12 +1431,6 @@ C compiler flags for libsamplerate, overriding pkg-config libsamplerate_LIBS linker flags for libsamplerate, 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 rubberband_CFLAGS C compiler flags for rubberband, overriding pkg-config rubberband_LIBS @@ -1447,6 +1439,11 @@ sord_LIBS linker flags for sord, overriding pkg-config serd_CFLAGS C compiler flags for serd, overriding pkg-config serd_LIBS linker flags for serd, overriding pkg-config + capnp_CFLAGS + C compiler flags for capnp, overriding pkg-config + capnp_LIBS linker flags for capnp, overriding pkg-config + kj_CFLAGS C compiler flags for kj, overriding pkg-config + kj_LIBS linker flags for kj, overriding pkg-config liblo_CFLAGS C compiler flags for liblo, overriding pkg-config liblo_LIBS linker flags for liblo, overriding pkg-config @@ -4149,6 +4146,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 @@ -4266,6 +4302,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 @@ -4342,7 +4417,7 @@ SV_DEFINES_DEBUG="-DDEBUG -DBUILD_DEBUG -DWANT_TIMING" -SV_DEFINES_RELEASE="-DNDEBUG -DBUILD_RELEASE -DNO_TIMING" +SV_DEFINES_RELEASE="-DNDEBUG -DBUILD_RELEASE -DWANT_TIMING" # -DNO_TIMING" SV_DEFINES_MINIMAL="$SV_DEFINES_RELEASE" # Now we have: USER_CXXFLAGS contains any flags the user set @@ -4355,8 +4430,8 @@ CXXFLAGS_MINIMAL="$AUTOCONF_CXXFLAGS" if test "x$GCC" = "xyes"; then - CXXFLAGS_ANY="-Wall -Wextra -Werror -Woverloaded-virtual -Wformat-nonliteral -Wformat-security -Winit-self -Wswitch-enum -Wconversion -pipe" - CXXFLAGS_DEBUG="$CXXFLAGS_ANY -g" + 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 @@ -5160,18 +5235,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 @@ -5180,11 +5255,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 @@ -5192,7 +5267,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 @@ -5200,8 +5275,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 @@ -5209,7 +5284,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 @@ -5230,12 +5305,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;} @@ -5245,11 +5320,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 @@ -5311,18 +5386,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 @@ -5331,11 +5406,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 @@ -5343,7 +5418,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 @@ -5351,8 +5426,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 @@ -5360,7 +5435,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 @@ -5381,12 +5456,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;} @@ -5396,11 +5471,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 @@ -5462,18 +5537,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 @@ -5482,11 +5557,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 @@ -5494,7 +5569,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 @@ -5502,8 +5577,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 @@ -5511,7 +5586,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 @@ -5532,12 +5607,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;} @@ -5547,11 +5622,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 @@ -5613,18 +5688,18 @@ 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=capnp +SV_MODULE_VERSION_TEST="capnp >= 0.6" +SV_MODULE_HEADER=capnp/common.h +SV_MODULE_LIB=capnp +SV_MODULE_FUNC= +SV_MODULE_HAVE=HAVE_$(echo capnp | tr 'a-z' 'A-Z') SV_MODULE_FAILED=1 -if test -n "$sord_LIBS" ; then +if test -n "$capnp_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 $capnp_CFLAGS" + LIBS="$LIBS $capnp_LIBS" SV_MODULE_FAILED="" fi if test -z "$SV_MODULE_VERSION_TEST" ; then @@ -5633,11 +5708,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 capnp" >&5 +$as_echo_n "checking for capnp... " >&6; } + +if test -n "$capnp_CFLAGS"; then + pkg_cv_capnp_CFLAGS="$capnp_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 @@ -5645,7 +5720,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_capnp_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -5653,8 +5728,8 @@ else pkg_failed=untried fi -if test -n "$sord_LIBS"; then - pkg_cv_sord_LIBS="$sord_LIBS" +if test -n "$capnp_LIBS"; then + pkg_cv_capnp_LIBS="$capnp_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 @@ -5662,7 +5737,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_capnp_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -5683,12 +5758,12 @@ _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` + capnp_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` + capnp_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 + echo "$capnp_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;} @@ -5698,11 +5773,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 - sord_CFLAGS=$pkg_cv_sord_CFLAGS - sord_LIBS=$pkg_cv_sord_LIBS + capnp_CFLAGS=$pkg_cv_capnp_CFLAGS + capnp_LIBS=$pkg_cv_capnp_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 $capnp_CFLAGS";LIBS="$LIBS $capnp_LIBS";SV_MODULE_FAILED="" fi fi if test -n "$SV_MODULE_FAILED"; then @@ -5764,18 +5839,18 @@ 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=kj +SV_MODULE_VERSION_TEST="kj >= 0.6" +SV_MODULE_HEADER=kj/common.h +SV_MODULE_LIB=kj +SV_MODULE_FUNC= +SV_MODULE_HAVE=HAVE_$(echo kj | tr 'a-z' 'A-Z') SV_MODULE_FAILED=1 -if test -n "$serd_LIBS" ; then +if test -n "$kj_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 $kj_CFLAGS" + LIBS="$LIBS $kj_LIBS" SV_MODULE_FAILED="" fi if test -z "$SV_MODULE_VERSION_TEST" ; then @@ -5784,11 +5859,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 kj" >&5 +$as_echo_n "checking for kj... " >&6; } + +if test -n "$kj_CFLAGS"; then + pkg_cv_kj_CFLAGS="$kj_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 @@ -5796,7 +5871,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_kj_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -5804,8 +5879,8 @@ else pkg_failed=untried fi -if test -n "$serd_LIBS"; then - pkg_cv_serd_LIBS="$serd_LIBS" +if test -n "$kj_LIBS"; then + pkg_cv_kj_LIBS="$kj_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 @@ -5813,7 +5888,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_kj_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -5834,12 +5909,12 @@ _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` + kj_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` + kj_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 + echo "$kj_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;} @@ -5849,11 +5924,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 - serd_CFLAGS=$pkg_cv_serd_CFLAGS - serd_LIBS=$pkg_cv_serd_LIBS + kj_CFLAGS=$pkg_cv_kj_CFLAGS + kj_LIBS=$pkg_cv_kj_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 $kj_CFLAGS";LIBS="$LIBS $kj_LIBS";SV_MODULE_FAILED="" fi fi if test -n "$SV_MODULE_FAILED"; then @@ -7486,10 +7561,6 @@ - - -subdirs="$subdirs svcore svgui svapp" - ac_config_files="$ac_config_files config.pri" @@ -8656,151 +8727,6 @@ # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi - -# -# CONFIG_SUBDIRS section. -# -if test "$no_recursion" != yes; then - - # Remove --cache-file, --srcdir, and --disable-option-checking arguments - # so they do not pile up. - ac_sub_configure_args= - ac_prev= - eval "set x $ac_configure_args" - shift - for ac_arg - do - if test -n "$ac_prev"; then - ac_prev= - continue - fi - case $ac_arg in - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \ - | --c=*) - ;; - --config-cache | -C) - ;; - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - ;; - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - ;; - --disable-option-checking) - ;; - *) - case $ac_arg in - *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append ac_sub_configure_args " '$ac_arg'" ;; - esac - done - - # Always prepend --prefix to ensure using the same prefix - # in subdir configurations. - ac_arg="--prefix=$prefix" - case $ac_arg in - *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" - - # Pass --silent - if test "$silent" = yes; then - ac_sub_configure_args="--silent $ac_sub_configure_args" - fi - - # Always prepend --disable-option-checking to silence warnings, since - # different subdirs can have different --enable and --with options. - ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args" - - ac_popdir=`pwd` - for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue - - # Do not complain, so a configure script can configure whichever - # parts of a large source tree are present. - test -d "$srcdir/$ac_dir" || continue - - ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" - $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 - $as_echo "$ac_msg" >&6 - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - cd "$ac_dir" - - # Check for guested configure; otherwise get Cygnus style configure. - if test -f "$ac_srcdir/configure.gnu"; then - ac_sub_configure=$ac_srcdir/configure.gnu - elif test -f "$ac_srcdir/configure"; then - ac_sub_configure=$ac_srcdir/configure - elif test -f "$ac_srcdir/configure.in"; then - # This should be Cygnus configure. - ac_sub_configure=$ac_aux_dir/configure - else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5 -$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} - ac_sub_configure= - fi - - # The recursion is here. - if test -n "$ac_sub_configure"; then - # Make the cache file name correct relative to the subdirectory. - case $cache_file in - [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; - *) # Relative name. - ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 -$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} - # The eval makes quoting arguments work. - eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ - --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || - as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5 - fi - - cd "$ac_popdir" - done -fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} diff -r be5b29ce283b -r 6f5a40419b00 configure.ac --- a/configure.ac Mon Aug 17 16:19:01 2015 +0100 +++ b/configure.ac Wed Dec 07 11:53:44 2016 +0000 @@ -40,7 +40,7 @@ SV_CHECK_QT SV_DEFINES_DEBUG="-DDEBUG -DBUILD_DEBUG -DWANT_TIMING" -SV_DEFINES_RELEASE="-DNDEBUG -DBUILD_RELEASE -DNO_TIMING" +SV_DEFINES_RELEASE="-DNDEBUG -DBUILD_RELEASE -DWANT_TIMING" # -DNO_TIMING" SV_DEFINES_MINIMAL="$SV_DEFINES_RELEASE" # Now we have: USER_CXXFLAGS contains any flags the user set @@ -53,8 +53,8 @@ CXXFLAGS_MINIMAL="$AUTOCONF_CXXFLAGS" if test "x$GCC" = "xyes"; then - CXXFLAGS_ANY="-Wall -Wextra -Werror -Woverloaded-virtual -Wformat-nonliteral -Wformat-security -Winit-self -Wswitch-enum -Wconversion -pipe" - CXXFLAGS_DEBUG="$CXXFLAGS_ANY -g" + 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 @@ -83,11 +83,11 @@ 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([libsamplerate],[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([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_REQUIRED([capnp],[capnp >= 0.6],[capnp/common.h],[capnp],[]) +SV_MODULE_REQUIRED([kj],[kj >= 0.6],[kj/common.h],[kj],[]) SV_MODULE_OPTIONAL([liblo],[],[lo/lo.h],[lo],[lo_address_new]) SV_MODULE_OPTIONAL([portaudio],[portaudio-2.0 >= 19],[portaudio.h],[portaudio],[Pa_IsFormatSupported]) @@ -120,7 +120,6 @@ AC_SUBST(QMAKE_CONFIG) -AC_CONFIG_SUBDIRS([svcore svgui svapp]) AC_CONFIG_FILES([config.pri]) AC_OUTPUT diff -r be5b29ce283b -r 6f5a40419b00 convert.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/convert.pro Wed Dec 07 11:53:44 2016 +0000 @@ -0,0 +1,48 @@ + +TEMPLATE = app + +CONFIG += stl c++11 exceptions console warn_on + +CONFIG -= qt + +exists(config.pri) { + include(config.pri) +} + +!exists(config.pri) { + include(noconfig.pri) + + macx*: LIBS -= -framework CoreAudio -framework CoreMidi -framework AudioUnit -framework AudioToolbox -framework CoreFoundation -framework CoreServices -framework Accelerate -lbz2 -lz +} + +# Can't support this flag with the JSON11 and basen modules as they stand +QMAKE_CXXFLAGS -= -Werror + +# Using the "console" CONFIG flag above should ensure this happens for +# normal Windows builds, but this may be necessary when cross-compiling +win32-x-g++: QMAKE_LFLAGS += -Wl,-subsystem,console + +macx*: CONFIG -= app_bundle + +linux*: LIBS += -ldl + +TARGET = piper-convert + +OBJECTS_DIR = o +MOC_DIR = o + +INCLUDEPATH += piper-cpp vamp-plugin-sdk + +include(vamp-plugin-sdk-files.pri) + +for (file, VAMP_SOURCES) { SOURCES += $$file } +for (file, VAMP_HEADERS) { HEADERS += $$file } + +HEADERS += \ + piper-cpp/vamp-capnp/piper.capnp.h \ + piper-cpp/vamp-capnp/VampnProto.h + +SOURCES += \ + piper-cpp/vamp-capnp/piper-capnp.cpp \ + piper-cpp/json11/json11.cpp \ + piper-cpp/vamp-server/convert.cpp diff -r be5b29ce283b -r 6f5a40419b00 deploy/linux/debian-dependencies.sh --- a/deploy/linux/debian-dependencies.sh Mon Aug 17 16:19:01 2015 +0100 +++ b/deploy/linux/debian-dependencies.sh Wed Dec 07 11:53:44 2016 +0000 @@ -37,6 +37,6 @@ cat $rfile 1>&2 echo 1>&2 -cat $pfile $rfile | sort | uniq -u | sed 's/$/,/' | fmt -1000 | sed 's/^/Depends: /' | sed 's/,$/, libc6/' +cat $pfile $rfile | sort | uniq -u | sed 's/$/,/' | fmt -1000 | sed 's/^/Depends: /' | sed 's/,$/, libc6/' | sed 's/libjack0,/jackd,/' diff -r be5b29ce283b -r 6f5a40419b00 deploy/linux/deploy-deb.sh --- a/deploy/linux/deploy-deb.sh Mon Aug 17 16:19:01 2015 +0100 +++ b/deploy/linux/deploy-deb.sh Wed Dec 07 11:53:44 2016 +0000 @@ -50,6 +50,10 @@ 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 be5b29ce283b -r 6f5a40419b00 deploy/osx/copy-qt.sh --- a/deploy/osx/copy-qt.sh Mon Aug 17 16:19:01 2015 +0100 +++ b/deploy/osx/copy-qt.sh Wed Dec 07 11:53:44 2016 +0000 @@ -1,5 +1,7 @@ #!/bin/bash +set -eu + app="$1" if [ -z "$app" ]; then echo "Usage: $0 " @@ -7,9 +9,9 @@ exit 2 fi -frameworks="QtCore QtNetwork QtGui QtXml QtWidgets QtPrintSupport" +frameworks="QtCore QtNetwork QtGui QtXml QtSvg QtWidgets QtPrintSupport QtDBus" -plugins="taccessiblewidgets dds gif icns ico jp2 jpeg mng tga tiff wbmp webp cocoa minimal offscreen" +plugins="dds gif icns ico jpeg tga tiff wbmp webp cocoa minimal offscreen" qtdir=$(grep "Command:" Makefile | head -1 | awk '{ print $3; }' | sed s,/bin/.*,,) diff -r be5b29ce283b -r 6f5a40419b00 deploy/osx/deploy.sh --- a/deploy/osx/deploy.sh Mon Aug 17 16:19:01 2015 +0100 +++ b/deploy/osx/deploy.sh Wed Dec 07 11:53:44 2016 +0000 @@ -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,11 +18,14 @@ 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 @@ -34,6 +39,29 @@ 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 "Copying in plugin load checker helper." +cp checker/plugin-checker-helper "$source"/Contents/MacOS/ + +echo +echo "Copying in plugin server." +cp piper-vamp-simple-server "$source"/Contents/MacOS/ + +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" @@ -49,22 +77,12 @@ echo "Done" echo -echo "Copying in qt.conf to set local-only plugin paths." -echo "Make sure all necessary Qt plugins are in $target/Contents/plugins/*" -echo "You probably want platforms/, accessible/ and imageformats/ subdirectories." -cp deploy/osx/qt.conf "$target"/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 \ - > "$target"/Contents/Info.plist - -echo "Done: check $target/Contents/Info.plist for sanity please" +echo "Code-signing volume..." deploy/osx/sign.sh "$volume" || exit 1 +echo "Done" + echo echo "Making dmg..." diff -r be5b29ce283b -r 6f5a40419b00 deploy/osx/paths.sh --- a/deploy/osx/paths.sh Mon Aug 17 16:19:01 2015 +0100 +++ b/deploy/osx/paths.sh Wed Dec 07 11:53:44 2016 +0000 @@ -1,5 +1,7 @@ #!/bin/bash +set -e + app="$1" if [ -z "$app" ]; then echo "Usage: $0 " @@ -7,7 +9,9 @@ exit 2 fi -frameworks="QtCore QtNetwork QtGui QtXml QtWidgets QtPrintSupport" +set -u + +frameworks="QtCore QtNetwork QtGui QtXml QtSvg QtWidgets QtPrintSupport QtDBus" echo echo "I expect you to have already copied these frameworks from the Qt installation to" @@ -26,15 +30,30 @@ done 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; }') - [ -z "$current" ] && continue - echo "$x has $current" - relative=$(echo "$x" | sed -e "s,$app.app/Contents/,," \ - -e 's,[^/]*/,../,g' -e 's,/[^/]*$,/Frameworks/'"$fwk"',' ) - echo "replacing with relative path $relative" - install_name_tool -change "$current" "@loader_path/$relative" "$x" - done + find "$app.app" -type f -print | while read x; do + if [ -x "$x" ]; then + 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/,," \ + -e 's,[^/]*/,../,g' \ + -e 's,/[^/]*$,/Frameworks/'"$fwk"',' ) + echo "replacing with relative path $relative" + install_name_tool -change "$current" "@loader_path/$relative" "$x" + fi + done +done + +find "$app.app" -type f -print | while read x; do + if [ -x "$x" ]; then + 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 + fi done echo "Done: be sure to run the app and see that it works!" diff -r be5b29ce283b -r 6f5a40419b00 deploy/osx/sign.sh --- a/deploy/osx/sign.sh Mon Aug 17 16:19:01 2015 +0100 +++ b/deploy/osx/sign.sh Wed Dec 07 11:53:44 2016 +0000 @@ -1,5 +1,7 @@ #!/bin/bash +set -eu + # 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 @@ -17,6 +19,9 @@ find "$app" -name \*.dylib -print | while read fr; do codesign -s "Developer ID Application: Chris Cannam" -fv "$fr" done + find "$app/Contents/MacOS" -type f -print | while read fr; do + codesign -s "Developer ID Application: Chris Cannam" -fv "$fr" + done codesign -s "Developer ID Application: Chris Cannam" -fv \ --requirements '=designated => identifier "org.sonicvisualiser.SonicVisualiser" and ( (anchor apple generic and certificate leaf[field.1.2.840.113635.100.6.1.9] ) or (anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] and certificate leaf[field.1.2.840.113635.100.6.1.13] and certificate leaf[subject.OU] = "M2H8666U82"))' \ "$app" diff -r be5b29ce283b -r 6f5a40419b00 deploy/src/archive.sh --- a/deploy/src/archive.sh Mon Aug 17 16:19:01 2015 +0100 +++ b/deploy/src/archive.sh Wed Dec 07 11:53:44 2016 +0000 @@ -1,10 +1,27 @@ #!/bin/bash +set -eu + tag=`hg tags | grep '^sv_v' | head -1 | awk '{ print $1; }'` -v=`echo "$tag" |sed 's/sv_v//'` +v=`echo "$tag" | sed 's/sv_v//' | sed 's/_.*$//'` -echo "Packaging up version $v from tag $tag..." +echo +echo -n "Packaging up version $v from tag $tag... " hg archive -r"$tag" --subrepos --exclude sv-dependency-builds /tmp/sonic-visualiser-"$v".tar.gz +echo Done +echo + +# Test that the appropriate version of the docs exist on the website + +doc_url="http://sonicvisualiser.org/doc/reference/$v/en/" +doc_status=$(curl -sL -w "%{http_code}" "$doc_url" -o /dev/null) + +if [ "$doc_status" = "404" ]; then + echo "*** WARNING: Documentation URL returns a 404:" + echo "*** $doc_url" + echo "*** Please fix this before release!" + echo +fi diff -r be5b29ce283b -r 6f5a40419b00 i18n/sonic-visualiser_cs_CZ.qm Binary file i18n/sonic-visualiser_cs_CZ.qm has changed diff -r be5b29ce283b -r 6f5a40419b00 i18n/sonic-visualiser_cs_CZ.ts --- a/i18n/sonic-visualiser_cs_CZ.ts Mon Aug 17 16:19:01 2015 +0100 +++ b/i18n/sonic-visualiser_cs_CZ.ts Wed Dec 07 11:53:44 2016 +0000 @@ -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 be5b29ce283b -r 6f5a40419b00 i18n/sonic-visualiser_en_GB.qm Binary file i18n/sonic-visualiser_en_GB.qm has changed diff -r be5b29ce283b -r 6f5a40419b00 i18n/sonic-visualiser_en_GB.ts --- a/i18n/sonic-visualiser_en_GB.ts Mon Aug 17 16:19:01 2015 +0100 +++ b/i18n/sonic-visualiser_en_GB.ts Wed Dec 07 11:53:44 2016 +0000 @@ -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 be5b29ce283b -r 6f5a40419b00 i18n/sonic-visualiser_en_US.qm Binary file i18n/sonic-visualiser_en_US.qm has changed diff -r be5b29ce283b -r 6f5a40419b00 i18n/sonic-visualiser_en_US.ts --- a/i18n/sonic-visualiser_en_US.ts Mon Aug 17 16:19:01 2015 +0100 +++ b/i18n/sonic-visualiser_en_US.ts Wed Dec 07 11:53:44 2016 +0000 @@ -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 be5b29ce283b -r 6f5a40419b00 i18n/sonic-visualiser_ru.qm Binary file i18n/sonic-visualiser_ru.qm has changed diff -r be5b29ce283b -r 6f5a40419b00 i18n/sonic-visualiser_ru.ts --- a/i18n/sonic-visualiser_ru.ts Mon Aug 17 16:19:01 2015 +0100 +++ b/i18n/sonic-visualiser_ru.ts Wed Dec 07 11:53:44 2016 +0000 @@ -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 be5b29ce283b -r 6f5a40419b00 main/MainWindow.cpp --- a/main/MainWindow.cpp Mon Aug 17 16:19:01 2015 +0100 +++ b/main/MainWindow.cpp Wed Dec 07 11:53:44 2016 +0000 @@ -58,6 +58,7 @@ #include "widgets/ActivityLog.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" @@ -66,9 +67,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,7 @@ #include "plugin/api/dssi.h" #include +#include #include #include @@ -130,8 +132,8 @@ using std::set; -MainWindow::MainWindow(bool withAudioOutput, bool withOSCSupport) : - MainWindowBase(withAudioOutput, true), +MainWindow::MainWindow(SoundOptions options, bool withOSCSupport) : + MainWindowBase(options), m_overview(0), m_mainMenusCreated(false), m_paneMenu(0), @@ -155,6 +157,7 @@ m_ffwdSimilarAction(0), m_ffwdEndAction(0), m_playAction(0), + m_recordAction(0), m_playSelectionAction(0), m_playLoopAction(0), m_soloModified(false), @@ -298,9 +301,12 @@ 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(); @@ -324,6 +330,11 @@ m_surveyer = 0; m_versionTester = 0; } + + QString warning = PluginScan::getInstance()->getStartupFailureReport(); + if (warning != "") { + QTimer::singleShot(500, this, SLOT(pluginPopulationWarning())); + } } MainWindow::~MainWindow() @@ -459,7 +470,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,7 +479,6 @@ 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")); @@ -510,7 +519,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())); @@ -521,7 +529,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())); @@ -587,6 +594,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); @@ -828,6 +842,20 @@ connect(this, SIGNAL(canRenumberInstants(bool)), action, SLOT(setEnabled(bool))); // m_keyReference->registerShortcut(action); menu->addAction(action); + + menu->addSeparator(); + + action = new QAction(tr("Subdivide Selected Instants..."), this); + action->setStatusTip(tr("Add new instants at regular intervals between the selected instants")); + connect(action, SIGNAL(triggered()), this, SLOT(subdivideInstants())); + connect(this, SIGNAL(canSubdivideInstants(bool)), action, SLOT(setEnabled(bool))); + menu->addAction(action); + + action = new QAction(tr("Winnow Selected Instants..."), this); + action->setStatusTip(tr("Remove subdivisions, leaving only every Nth instant")); + connect(action, SIGNAL(triggered()), this, SLOT(winnowInstants())); + connect(this, SIGNAL(canWinnowInstants(bool)), action, SLOT(setEnabled(bool))); + menu->addAction(action); } void @@ -1041,12 +1069,16 @@ menu->addSeparator(); +#ifndef Q_OS_MAC + // Only on non-Mac platforms -- on the Mac this interacts very + // badly with the "native" full-screen mode action = new QAction(tr("Go Full-Screen"), this); action->setShortcut(tr("F11")); action->setStatusTip(tr("Expand the pane area to the whole screen")); connect(action, SIGNAL(triggered()), this, SLOT(goFullScreen())); m_keyReference->registerShortcut(action); menu->addAction(action); +#endif } void @@ -1166,7 +1198,9 @@ // 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) +#ifdef __GNUC__ #pragma GCC diagnostic ignored "-Wswitch-enum" +#endif switch (type) { @@ -1480,6 +1514,11 @@ TransformFactory *factory = TransformFactory::getInstance(); TransformList transforms = factory->getAllTransformDescriptions(); + + if (factory->getStartupFailureReport() != "") { + pluginPopulationWarning(); + } + vector types = factory->getAllTransformTypes(); map > categoryMenus; @@ -1750,8 +1789,11 @@ m_recentFilesMenu->clear(); vector files = m_recentFiles.getRecent(); for (size_t i = 0; i < files.size(); ++i) { - QAction *action = new QAction(files[i], this); - connect(action, SIGNAL(triggered()), this, SLOT(openRecentFile())); + /* F. Nicol patch 13 Aug. 2016 */ + const QString& path = files[i]; + QAction *action = new QAction(path, this); + connect(action, &QAction::triggered, [this, path] { openRecentFile(path);}); + /* end of patch */ if (i == 0) { action->setShortcut(tr("Ctrl+R")); m_keyReference->registerShortcut @@ -1985,6 +2027,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"), @@ -2035,6 +2088,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); @@ -2047,6 +2101,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); @@ -2061,8 +2116,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); @@ -2074,6 +2132,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")); @@ -2280,7 +2340,7 @@ (haveCurrentPane && (currentLayer != 0)); bool havePlayTarget = - (m_playTarget != 0); + (m_playTarget != 0 || m_audioIO != 0); bool haveSelection = (m_viewManager && !m_viewManager->getSelections().empty()); @@ -2882,6 +2942,17 @@ } void +MainWindow::browseRecordedAudio() +{ + if (!m_recordTarget) return; + + QString path = m_recordTarget->getRecordFolder(); + if (path == "") return; + + openLocalFolder(path); +} + +void MainWindow::newSession() { if (!checkSaveModified()) return; @@ -3030,8 +3101,10 @@ } void -MainWindow::openRecentFile() +MainWindow::openRecentFile(const QString& path) { + /* F. Nicol patch 13 Aug. 2016 */ +#if 0 QObject *obj = sender(); QAction *action = dynamic_cast(obj); @@ -3042,6 +3115,9 @@ } QString path = action->text(); +#endif + /* End of F. Nicol patch 13 Aug. 2016 */ + if (path == "") return; FileOpenStatus status = openPath(path, ReplaceSession); @@ -4101,6 +4177,26 @@ } void +MainWindow::pluginPopulationWarning() +{ + QString scanWarning = PluginScan::getInstance()->getStartupFailureReport(); + QString factWarning = TransformFactory::getInstance()->getStartupFailureReport(); + QString warning; + if (factWarning != "") { + // The order of events on startup implies that, if scanWarning + // and factWarning are both present, then we have already been + // called once for scanWarning so don't want to report it again + warning = factWarning; + } else if (scanWarning != "") { + warning = scanWarning; + } + if (warning != "") { + emit hideSplash(); + QMessageBox::warning(this, tr("Problems loading plugins"), warning); + } +} + +void MainWindow::midiEventsAvailable() { Pane *currentPane = 0; @@ -4237,7 +4333,7 @@ MainWindowBase::mainModelChanged(model); - if (m_playTarget) { + if (m_playTarget || m_audioIO) { connect(m_fader, SIGNAL(valueChanged(float)), this, SLOT(mainModelGainChanged(float))); } @@ -4248,6 +4344,8 @@ { if (m_playTarget) { m_playTarget->setOutputGain(gain); + } else if (m_audioIO) { + m_audioIO->setOutputGain(gain); } } @@ -4312,6 +4410,50 @@ } void +MainWindow::subdivideInstants() +{ + QSettings settings; + settings.beginGroup("MainWindow"); + int n = settings.value("subdivisions", 4).toInt(); + + bool ok; + + n = QInputDialog::getInt(this, + tr("Subdivide instants"), + tr("Number of subdivisions:"), + n, 2, 96, 1, &ok); + + if (ok) { + settings.setValue("subdivisions", n); + subdivideInstantsBy(n); + } + + settings.endGroup(); +} + +void +MainWindow::winnowInstants() +{ + QSettings settings; + settings.beginGroup("MainWindow"); + int n = settings.value("winnow-subdivisions", 4).toInt(); + + bool ok; + + n = QInputDialog::getInt(this, + tr("Winnow instants"), + tr("Remove all instants apart from multiples of:"), + n, 2, 96, 1, &ok); + + if (ok) { + settings.setValue("winnow-subdivisions", n); + winnowInstantsBy(n); + } + + settings.endGroup(); +} + +void MainWindow::modelGenerationFailed(QString transformName, QString message) { emit hideSplash(); @@ -4384,15 +4526,13 @@ } void -MainWindow::alignmentFailed(QString transformName, QString message) +MainWindow::alignmentFailed(QString message) { - emit hideSplash(); - QMessageBox::warning (this, tr("Failed to calculate alignment"), - tr("Alignment calculation failed

Failed to calculate an audio alignment using transform \"%1\":

%2") - .arg(transformName).arg(message), + tr("Alignment calculation failed

Failed to calculate an audio alignment:

%1") + .arg(message), QMessageBox::Ok); } @@ -4520,13 +4660,14 @@ aboutText += tr("

About Sonic Visualiser

"); aboutText += tr("

Sonic Visualiser is a program for viewing and exploring audio data for semantic music analysis and annotation.
http://www.sonicvisualiser.org/

"); - aboutText += tr("

%1 : %2 configuration

") + aboutText += tr("

%1 : %2 configuration, %3-bit build

") .arg(version) - .arg(debug ? tr("Debug") : tr("Release")); + .arg(debug ? tr("Debug") : tr("Release")) + .arg(sizeof(void *) * 8); aboutText += ""; - aboutText += tr("With Qt v%1 © Nokia Corporation").arg(QT_VERSION_STR); + aboutText += tr("With Qt v%1 © The Qt Company").arg(QT_VERSION_STR); #ifdef HAVE_JACK #ifdef JACK_VERSION @@ -4582,14 +4723,12 @@ #endif // HAVE_FFTW3F #ifdef HAVE_RUBBERBAND #ifdef RUBBERBAND_VERSION - aboutText += tr("
With Rubber Band v%1 © Chris Cannam").arg(RUBBERBAND_VERSION); + aboutText += tr("
With Rubber Band Library v%1 © Particular Programs Ltd").arg(RUBBERBAND_VERSION); #else // !RUBBERBAND_VERSION - aboutText += tr("
With Rubber Band © Chris Cannam"); + aboutText += tr("
With Rubber Band Library © Particular Programs Ltd"); #endif // RUBBERBAND_VERSION #endif // HAVE_RUBBERBAND -#ifdef HAVE_VAMP - aboutText += tr("
With Vamp plugin support (API v%1, host SDK v%2) © Chris Cannam").arg(VAMP_API_VERSION).arg(VAMP_SDK_VERSION); -#endif // !HAVE_VAMP + aboutText += tr("
With Vamp plugin support (API v%1, host SDK v%2) © Chris Cannam and QMUL").arg(VAMP_API_VERSION).arg(VAMP_SDK_VERSION); aboutText += tr("
With LADSPA plugin support (API v%1) © Richard Furse, Paul Davis, Stefan Westerfeld").arg(LADSPA_VERSION); aboutText += tr("
With DSSI plugin support (API v%1) © Chris Cannam, Steve Harris, Sean Bolton").arg(DSSI_VERSION); #ifdef REDLAND_VERSION @@ -4598,8 +4737,8 @@ aboutText += tr("
With Redland RDF datastore © Dave Beckett and the University of Bristol"); #endif // REDLAND_VERSION aboutText += tr("
With Serd and Sord RDF parser and store © David Robillard"); - aboutText += tr("
With Dataquay Qt/RDF library © Chris Cannam"); - + aboutText += tr("
With Dataquay Qt/RDF library © Particular Programs Ltd"); + aboutText += tr("
With Cap'n Proto serialisation © Sandstorm Development Group"); aboutText += tr("
With RtMidi © Gary P. Scavone"); #ifdef HAVE_LIBLO @@ -4621,7 +4760,7 @@ #endif aboutText += - "

Sonic Visualiser Copyright © 2005–2015 Chris Cannam and " + "

Sonic Visualiser Copyright © 2005–2016 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 " diff -r be5b29ce283b -r 6f5a40419b00 main/MainWindow.h --- a/main/MainWindow.h Mon Aug 17 16:19:01 2015 +0100 +++ b/main/MainWindow.h Wed Dec 07 11:53:44 2016 +0000 @@ -32,8 +32,7 @@ Q_OBJECT public: - MainWindow(bool withAudioOutput = true, - bool withOSCSupport = true); + MainWindow(SoundOptions options, bool withOSCSupport = true); virtual ~MainWindow(); signals: @@ -53,13 +52,16 @@ virtual void replaceMainAudio(); virtual void openSomething(); virtual void openLocation(); - virtual void openRecentFile(); + /* F. Nicol patch 13 Aug. 2016 */ + virtual void openRecentFile(const QString& ); + /* End of F. Nicol patch 13 Aug. 2016 */ virtual void applyTemplate(); virtual void exportAudio(); virtual void exportAudioData(); virtual void importLayer(); virtual void exportLayer(); virtual void exportImage(); + virtual void browseRecordedAudio(); virtual void saveSession(); virtual void saveSessionAs(); virtual void newSession(); @@ -88,12 +90,14 @@ virtual void setInstantsCounterCycle(); virtual void setInstantsCounters(); virtual void resetInstantsCounters(); + virtual void subdivideInstants(); + virtual void winnowInstants(); virtual void modelGenerationFailed(QString, QString); virtual void modelGenerationWarning(QString, QString); virtual void modelRegenerationFailed(QString, QString, QString); virtual void modelRegenerationWarning(QString, QString, QString); - virtual void alignmentFailed(QString, QString); + virtual void alignmentFailed(QString); virtual void rightButtonMenuRequested(Pane *, QPoint point); @@ -147,6 +151,8 @@ virtual void midiEventsAvailable(); virtual void playStatusChanged(bool); + virtual void pluginPopulationWarning(); + virtual void saveSessionAsTemplate(); virtual void manageSavedTemplates(); @@ -188,6 +194,7 @@ QAction *m_ffwdSimilarAction; QAction *m_ffwdEndAction; QAction *m_playAction; + QAction *m_recordAction; QAction *m_playSelectionAction; QAction *m_playLoopAction; QAction *m_manageTemplatesAction; diff -r be5b29ce283b -r 6f5a40419b00 main/PreferencesDialog.cpp --- a/main/PreferencesDialog.cpp Mon Aug 17 16:19:01 2015 +0100 +++ b/main/PreferencesDialog.cpp Wed Dec 07 11:53:44 2016 +0000 @@ -40,14 +40,19 @@ #include "widgets/IconLoader.h" #include "base/Preferences.h" #include "base/ResourceFinder.h" +#include "layer/ColourMapper.h" -//#include "audioio/AudioTargetFactory.h" +#include "bqaudioio/AudioFactory.h" #include "version.h" +using namespace std; + PreferencesDialog::PreferencesDialog(QWidget *parent) : QDialog(parent), - m_audioDevice(0), + m_audioImplementation(0), + m_audioPlaybackDevice(0), + m_audioRecordDevice(0), m_changesOnRestart(false) { setWindowTitle(tr("Sonic Visualiser: Application Preferences")); @@ -79,6 +84,13 @@ connect(m_windowTypeSelector, SIGNAL(windowTypeChanged(WindowType)), this, SLOT(windowTypeChanged(WindowType))); + QCheckBox *vampProcessSeparation = new QCheckBox; + m_runPluginsInProcess = prefs->getRunPluginsInProcess(); + vampProcessSeparation->setCheckState(m_runPluginsInProcess ? Qt::Unchecked : + Qt::Checked); + connect(vampProcessSeparation, SIGNAL(stateChanged(int)), + this, SLOT(vampProcessSeparationChanged(int))); + QComboBox *smoothing = new QComboBox; int sm = prefs->getPropertyRangeAndValue("Spectrogram Y Smoothing", &min, &max, @@ -123,6 +135,32 @@ 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(); @@ -150,40 +188,38 @@ connect(octaveSystem, SIGNAL(currentIndexChanged(int)), this, SLOT(octaveSystemChanged(int))); - QSettings settings; + settings.beginGroup("Preferences"); - /*!!! restore - QComboBox *audioDevice = new QComboBox; - std::vector devices = - AudioTargetFactory::getInstance()->getCallbackTargetNames(); - - settings.beginGroup("Preferences"); - QString targetName = settings.value("audio-target", "").toString(); + QComboBox *audioImplementation = new QComboBox; + connect(audioImplementation, SIGNAL(currentIndexChanged(int)), + this, SLOT(audioImplementationChanged(int))); + + m_audioPlaybackDeviceCombo = new QComboBox; + connect(m_audioPlaybackDeviceCombo, SIGNAL(currentIndexChanged(int)), + this, SLOT(audioPlaybackDeviceChanged(int))); + + m_audioRecordDeviceCombo = new QComboBox; + connect(m_audioRecordDeviceCombo, SIGNAL(currentIndexChanged(int)), + this, SLOT(audioRecordDeviceChanged(int))); + + vector names = breakfastquay::AudioFactory::getImplementationNames(); + QString implementationName = settings.value("audio-target", "").toString(); + if (implementationName == "auto") implementationName = ""; + audioImplementation->addItem(tr("(auto)")); + m_audioImplementation = 0; + for (int i = 0; in_range_for(names, i); ++i) { + audioImplementation->addItem + (breakfastquay::AudioFactory::getImplementationDescription(names[i]). + c_str()); + if (implementationName.toStdString() == names[i]) { + audioImplementation->setCurrentIndex(i+1); + m_audioImplementation = i+1; + } + } settings.endGroup(); - for (int i = 0; i < (int)devices.size(); ++i) { - audioDevice->addItem(AudioTargetFactory::getInstance() - ->getCallbackTargetDescription(devices[i])); - if (targetName == devices[i]) audioDevice->setCurrentIndex(i); - } - - connect(audioDevice, SIGNAL(currentIndexChanged(int)), - this, SLOT(audioDeviceChanged(int))); - */ - QComboBox *resampleQuality = new QComboBox; - - int rsq = prefs->getPropertyRangeAndValue("Resample Quality", &min, &max, - &deflt); - m_resampleQuality = rsq; - - for (i = min; i <= max; ++i) { - resampleQuality->addItem(prefs->getPropertyValueLabel("Resample Quality", i)); - } - - resampleQuality->setCurrentIndex(rsq); - - connect(resampleQuality, SIGNAL(currentIndexChanged(int)), - this, SLOT(resampleQualityChanged(int))); + rebuildDeviceCombos(); + m_changesOnRestart = false; // the rebuild will have changed this QCheckBox *resampleOnLoad = new QCheckBox; m_resampleOnLoad = prefs->getResampleOnLoad(); @@ -192,6 +228,12 @@ connect(resampleOnLoad, SIGNAL(stateChanged(int)), this, SLOT(resampleOnLoadChanged(int))); + QCheckBox *gaplessMode = new QCheckBox; + m_gapless = prefs->getUseGaplessMode(); + gaplessMode->setCheckState(m_gapless ? Qt::Checked : Qt::Unchecked); + connect(gaplessMode, SIGNAL(stateChanged(int)), + this, SLOT(gaplessModeChanged(int))); + m_tempDirRootEdit = new QLineEdit; QString dir = prefs->getTemporaryDirectoryRoot(); m_tempDirRoot = dir; @@ -210,7 +252,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); @@ -226,6 +268,15 @@ 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; @@ -331,13 +382,19 @@ 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("%1:").arg(prefs->getPropertyLabel + ("Use Gapless Mode"))), + row, 0); + subgrid->addWidget(gaplessMode, row++, 1, 1, 1); - subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel - ("Resample Quality"))), - row, 0); - subgrid->addWidget(resampleQuality, row++, 1, 1, 2); + subgrid->addWidget(new QLabel(tr("Audio service:")), row, 0); + subgrid->addWidget(audioImplementation, row++, 1, 1, 2); + + subgrid->addWidget(new QLabel(tr("Audio playback device:")), row, 0); + subgrid->addWidget(m_audioPlaybackDeviceCombo, row++, 1, 1, 2); + + subgrid->addWidget(new QLabel(tr("Audio record device:")), row, 0); + subgrid->addWidget(m_audioRecordDeviceCombo, row++, 1, 1, 2); subgrid->setRowStretch(row, 10); @@ -356,12 +413,31 @@ 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); @@ -419,8 +495,13 @@ ("Window Type"))), row, 0); subgrid->addWidget(m_windowTypeSelector, row++, 1, 2, 2); + subgrid->setRowStretch(row, 10); row++; + + subgrid->addWidget(new QLabel(tr("Run Vamp plugins in separate process:")), + row, 0); + subgrid->addWidget(vampProcessSeparation, row++, 1, 1, 1); subgrid->setRowStretch(row, 10); @@ -453,7 +534,7 @@ QStringList templates = ResourceFinder().getResourceFiles("templates", "svt"); - std::set byName; + set byName; foreach (QString t, templates) { byName.insert(QFileInfo(t).baseName()); } @@ -493,6 +574,57 @@ } void +PreferencesDialog::rebuildDeviceCombos() +{ + QSettings settings; + settings.beginGroup("Preferences"); + + vector names = breakfastquay::AudioFactory::getImplementationNames(); + string implementationName; + if (in_range_for(names, m_audioImplementation-1)) { + implementationName = names[m_audioImplementation-1]; + } + + m_audioPlaybackDeviceCombo->clear(); + m_audioRecordDeviceCombo->clear(); + + QString suffix; + if (implementationName != "") { + suffix = "-" + QString(implementationName.c_str()); + } + + names = breakfastquay::AudioFactory::getPlaybackDeviceNames(implementationName); + QString playbackDeviceName = settings.value + ("audio-playback-device" + suffix, "").toString(); + m_audioPlaybackDeviceCombo->addItem(tr("(auto)")); + m_audioPlaybackDeviceCombo->setCurrentIndex(0); + m_audioPlaybackDevice = 0; + for (int i = 0; in_range_for(names, i); ++i) { + m_audioPlaybackDeviceCombo->addItem(names[i].c_str()); + if (playbackDeviceName.toStdString() == names[i]) { + m_audioPlaybackDeviceCombo->setCurrentIndex(i+1); + m_audioPlaybackDevice = i+1; + } + } + + names = breakfastquay::AudioFactory::getRecordDeviceNames(implementationName); + QString recordDeviceName = settings.value + ("audio-record-device" + suffix, "").toString(); + m_audioRecordDeviceCombo->addItem(tr("(auto)")); + m_audioRecordDeviceCombo->setCurrentIndex(0); + m_audioRecordDevice = 0; + for (int i = 0; in_range_for(names, i); ++i) { + m_audioRecordDeviceCombo->addItem(names[i].c_str()); + if (recordDeviceName.toStdString() == names[i]) { + m_audioRecordDeviceCombo->setCurrentIndex(i+1); + m_audioRecordDevice = i+1; + } + } + + settings.endGroup(); +} + +void PreferencesDialog::switchToTab(Tab t) { if (m_tabOrdering.contains(t)) { @@ -522,6 +654,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; @@ -536,18 +689,34 @@ } void -PreferencesDialog::audioDeviceChanged(int s) +PreferencesDialog::audioImplementationChanged(int s) { - m_audioDevice = s; - m_applyButton->setEnabled(true); - m_changesOnRestart = true; + if (m_audioImplementation != s) { + m_audioImplementation = s; + rebuildDeviceCombos(); + m_applyButton->setEnabled(true); + m_changesOnRestart = true; + } } void -PreferencesDialog::resampleQualityChanged(int q) +PreferencesDialog::audioPlaybackDeviceChanged(int s) { - m_resampleQuality = q; - m_applyButton->setEnabled(true); + if (m_audioPlaybackDevice != s) { + m_audioPlaybackDevice = s; + m_applyButton->setEnabled(true); + m_changesOnRestart = true; + } +} + +void +PreferencesDialog::audioRecordDeviceChanged(int s) +{ + if (m_audioRecordDevice != s) { + m_audioRecordDevice = s; + m_applyButton->setEnabled(true); + m_changesOnRestart = true; + } } void @@ -559,6 +728,21 @@ } void +PreferencesDialog::gaplessModeChanged(int state) +{ + m_gapless = (state == Qt::Checked); + m_applyButton->setEnabled(true); +} + +void +PreferencesDialog::vampProcessSeparationChanged(int state) +{ + m_runPluginsInProcess = (state == Qt::Unchecked); + m_applyButton->setEnabled(true); + m_changesOnRestart = true; +} + +void PreferencesDialog::networkPermissionChanged(int state) { m_networkPermission = (state == Qt::Checked); @@ -567,6 +751,14 @@ } 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); @@ -663,8 +855,9 @@ prefs->setPropertyBoxLayout(Preferences::PropertyBoxLayout (m_propertyLayout)); prefs->setTuningFrequency(m_tuningFrequency); - prefs->setResampleQuality(m_resampleQuality); prefs->setResampleOnLoad(m_resampleOnLoad); + prefs->setUseGaplessMode(m_gapless); + prefs->setRunPluginsInProcess(m_runPluginsInProcess); prefs->setShowSplash(m_showSplash); prefs->setTemporaryDirectoryRoot(m_tempDirRoot); prefs->setBackgroundMode(Preferences::BackgroundMode(m_backgroundMode)); @@ -674,15 +867,44 @@ prefs->setProperty("Octave Numbering System", m_octaveSystem); -//!!! std::vector devices = -//!!! AudioTargetFactory::getInstance()->getCallbackTargetNames(); - QSettings settings; settings.beginGroup("Preferences"); QString permishTag = QString("network-permission-%1").arg(SV_VERSION); settings.setValue(permishTag, m_networkPermission); -//!!! settings.setValue("audio-target", devices[m_audioDevice]); + + vector names = breakfastquay::AudioFactory::getImplementationNames(); + string implementationName; + if (m_audioImplementation > 0) { + implementationName = names[m_audioImplementation-1]; + } + settings.setValue("audio-target", implementationName.c_str()); + + QString suffix; + if (implementationName != "") { + suffix = "-" + QString(implementationName.c_str()); + } + + names = breakfastquay::AudioFactory::getPlaybackDeviceNames(implementationName); + string deviceName; + if (m_audioPlaybackDevice > 0) { + deviceName = names[m_audioPlaybackDevice-1]; + } + settings.setValue("audio-playback-device" + suffix, deviceName.c_str()); + + names = breakfastquay::AudioFactory::getRecordDeviceNames(implementationName); + deviceName = ""; + if (m_audioRecordDevice > 0) { + deviceName = names[m_audioRecordDevice-1]; + } + settings.setValue("audio-record-device" + suffix, deviceName.c_str()); + 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"); diff -r be5b29ce283b -r 6f5a40419b00 main/PreferencesDialog.h --- a/main/PreferencesDialog.h Mon Aug 17 16:19:01 2015 +0100 +++ b/main/PreferencesDialog.h Wed Dec 07 11:53:44 2016 +0000 @@ -25,6 +25,7 @@ class QPushButton; class QLineEdit; class QTabWidget; +class QComboBox; class PreferencesDialog : public QDialog { @@ -49,11 +50,17 @@ 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); - void resampleQualityChanged(int quality); + void audioImplementationChanged(int impl); + void audioPlaybackDeviceChanged(int device); + void audioRecordDeviceChanged(int device); void resampleOnLoadChanged(int state); + void gaplessModeChanged(int state); + void vampProcessSeparationChanged(int state); void tempDirRootChanged(QString root); void backgroundModeChanged(int mode); void timeToTextModeChanged(int mode); @@ -64,6 +71,7 @@ void defaultTemplateChanged(int); void localeChanged(int); void networkPermissionChanged(int state); + void retinaChanged(int state); void tempDirButtonClicked(); @@ -80,6 +88,10 @@ QLineEdit *m_tempDirRootEdit; + QComboBox *m_audioPlaybackDeviceCombo; + QComboBox *m_audioRecordDeviceCombo; + void rebuildDeviceCombos(); + QString m_currentTemplate; QStringList m_templates; @@ -89,12 +101,19 @@ WindowType m_windowType; int m_spectrogramSmoothing; int m_spectrogramXSmoothing; + int m_spectrogramGColour; + int m_spectrogramMColour; + int m_colour3DColour; int m_propertyLayout; double m_tuningFrequency; - int m_audioDevice; - int m_resampleQuality; + int m_audioImplementation; + int m_audioPlaybackDevice; + int m_audioRecordDevice; bool m_resampleOnLoad; + bool m_gapless; + bool m_runPluginsInProcess; bool m_networkPermission; + bool m_retina; QString m_tempDirRoot; int m_backgroundMode; int m_timeToTextMode; diff -r be5b29ce283b -r 6f5a40419b00 main/SVSplash.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main/SVSplash.cpp Wed Dec 07 11:53:44 2016 +0000 @@ -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 be5b29ce283b -r 6f5a40419b00 main/SVSplash.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main/SVSplash.h Wed Dec 07 11:53:44 2016 +0000 @@ -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 be5b29ce283b -r 6f5a40419b00 main/main.cpp --- a/main/main.cpp Mon Aug 17 16:19:01 2015 +0100 +++ b/main/main.cpp Wed Dec 07 11:53:44 2016 +0000 @@ -14,6 +14,7 @@ */ #include "MainWindow.h" +#include "SVSplash.h" #include "system/System.h" #include "system/Init.h" @@ -25,6 +26,7 @@ #include "widgets/InteractiveFileFinder.h" #include "svapp/framework/TransformUserConfigurator.h" #include "transform/TransformFactory.h" +#include "svcore/plugin/PluginScan.h" #include #include @@ -36,13 +38,10 @@ #include #include #include -#include #include #include #include -#include "../version.h" - #include #include @@ -215,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; @@ -223,7 +222,6 @@ protected: MainWindow *m_mainWindow; bool event(QEvent *); - }; int @@ -272,22 +270,23 @@ 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"); + // Default to using Piper server; can change in preferences + if (!settings.contains("run-vamp-plugins-in-process")) { + cerr << "setting does not exist yet" << endl; + settings.setValue("run-vamp-plugins-in-process", false); + } + settings.endGroup(); + + 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(); @@ -342,15 +341,24 @@ StoreStartupLocale(); + // Make known-plugins query as early as possible after showing + // splash screen. + PluginScan::getInstance()->scan(); + // Permit size_t and PropertyName to be used as args in queued signal calls 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(); @@ -418,15 +426,6 @@ settings.endGroup(); #endif - if (splash) splash->finish(gui); - delete splash; - -/* - TipDialog tipDialog; - if (tipDialog.isOK()) { - tipDialog.exec(); - } -*/ int rv = application.exec(); gui->hide(); @@ -490,7 +489,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; diff -r be5b29ce283b -r 6f5a40419b00 misc/update-i18n.sh --- a/misc/update-i18n.sh Mon Aug 17 16:19:01 2015 +0100 +++ b/misc/update-i18n.sh Wed Dec 07 11:53:44 2016 +0000 @@ -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 be5b29ce283b -r 6f5a40419b00 noconfig.pri --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/noconfig.pri Wed Dec 07 11:53:44 2016 +0000 @@ -0,0 +1,136 @@ + +CONFIG += release + +#CONFIG -= release +#CONFIG += debug + +DEFINES += NDEBUG BUILD_RELEASE +DEFINES += NO_TIMING + +DEFINES += HAVE_PIPER HAVE_PLUGIN_CHECKER_HELPER + +# Full set of defines expected for all platforms when we have the +# sv-dependency-builds subrepo available to provide the dependencies. + +DEFINES += \ + HAVE_BZ2 \ + HAVE_FFTW3 \ + HAVE_FFTW3F \ + HAVE_SNDFILE \ + HAVE_SAMPLERATE \ + HAVE_RUBBERBAND \ + HAVE_LIBLO \ + HAVE_MAD \ + HAVE_ID3TAG \ + HAVE_PORTAUDIO + +# Default set of libs for the above. Config sections below may update +# these. + +LIBS += \ + -lbz2 \ + -lrubberband \ + -lfftw3 \ + -lfftw3f \ + -lsndfile \ + -lFLAC \ + -logg \ + -lvorbis \ + -lvorbisenc \ + -lvorbisfile \ + -logg \ + -lmad \ + -lid3tag \ + -lportaudio \ + -lsamplerate \ + -lz \ + -lsord-0 \ + -lserd-0 \ + -llo \ + -lcapnp \ + -lkj + +win32-g++ { + + # This config is currently used for 32-bit Windows builds. + + INCLUDEPATH += sv-dependency-builds/win32-mingw/include + + LIBS += -Lrelease -Lsv-dependency-builds/win32-mingw/lib -L../sonic-visualiser/sv-dependency-builds/win32-mingw/lib + + DEFINES += NOMINMAX _USE_MATH_DEFINES USE_OWN_ALIGNED_MALLOC CAPNP_LITE + + QMAKE_CXXFLAGS_RELEASE += -ffast-math + + # Don't have liblo + DEFINES -= HAVE_LIBLO + LIBS -= -llo + + LIBS += -lwinmm -lws2_32 +} + +win32-msvc* { + + # This config is actually used only for 64-bit Windows builds. + # even though the qmake spec is still called win32-msvc*. If + # we want to do 32-bit builds with MSVC as well, then we'll + # need to add a way to distinguish the two. + + INCLUDEPATH += sv-dependency-builds/win64-msvc/include + +## This seems to be intruding even when we're supposed to be release +# CONFIG(debug) { +# LIBS += -NODEFAULTLIB:MSVCRT -Ldebug \ +# -L../sonic-visualiser/sv-dependency-builds/win64-msvc/lib/debug \ +# -L../sonic-visualiser/sv-dependency-builds/win64-msvc/lib +# } + CONFIG(release) { + LIBS += -Lrelease \ + -L../sonic-visualiser/sv-dependency-builds/win64-msvc/lib + } + + DEFINES += NOMINMAX _USE_MATH_DEFINES USE_OWN_ALIGNED_MALLOC CAPNP_LITE + + QMAKE_CXXFLAGS_RELEASE += -fp:fast + + # No Ogg/FLAC support in the sndfile build on this platform yet + LIBS -= -lFLAC -logg -lvorbis -lvorbisenc -lvorbisfile + + # These have different names + LIBS -= -lsord-0 -lserd-0 + LIBS += -lsord -lserd + + # Don't have liblo + DEFINES -= HAVE_LIBLO + LIBS -= -llo + + LIBS += -ladvapi32 -lwinmm -lws2_32 +} + +macx* { + + # All Mac builds are 64-bit these days. + + INCLUDEPATH += sv-dependency-builds/osx/include + LIBS += -Lsv-dependency-builds/osx/lib + + QMAKE_CXXFLAGS_RELEASE += -ffast-math + + DEFINES += HAVE_COREAUDIO MALLOC_IS_ALIGNED HAVE_VDSP + LIBS += \ + -framework CoreAudio \ + -framework CoreMidi \ + -framework AudioUnit \ + -framework AudioToolbox \ + -framework CoreFoundation \ + -framework CoreServices \ + -framework Accelerate +} + +linux* { + + message("Building without ./configure on Linux is unlikely to work") + message("If you really want to try it, remove this from noconfig.pri") + error("Refusing to build without ./configure first") +} + diff -r be5b29ce283b -r 6f5a40419b00 platform-dataquay.pri --- a/platform-dataquay.pri Mon Aug 17 16:19:01 2015 +0100 +++ b/platform-dataquay.pri Wed Dec 07 11:53:44 2016 +0000 @@ -18,8 +18,10 @@ 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 + # We actually expect MSVC to be used only for 64-bit builds, + # though the qmake spec is still called win32-msvc* + INCLUDEPATH += ../sv-dependency-builds/win64-msvc/include + LIBS += -L../../sv-dependency-builds/win64-msvc/lib } mac* { INCLUDEPATH += ../sv-dependency-builds/osx/include diff -r be5b29ce283b -r 6f5a40419b00 server.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/server.pro Wed Dec 07 11:53:44 2016 +0000 @@ -0,0 +1,48 @@ + +TEMPLATE = app + +CONFIG += stl c++11 exceptions console warn_on + +CONFIG -= qt + +exists(config.pri) { + include(config.pri) +} + +!exists(config.pri) { + include(noconfig.pri) + + macx*: LIBS -= -framework CoreAudio -framework CoreMidi -framework AudioUnit -framework AudioToolbox -framework CoreFoundation -framework CoreServices -framework Accelerate -lbz2 -lz +} + +# Can't support this flag with the JSON11 and basen modules as they stand +QMAKE_CXXFLAGS -= -Werror + +# Using the "console" CONFIG flag above should ensure this happens for +# normal Windows builds, but this may be necessary when cross-compiling +win32-x-g++: QMAKE_LFLAGS += -Wl,-subsystem,console + +macx*: CONFIG -= app_bundle + +linux*: LIBS += -ldl + +TARGET = piper-vamp-simple-server + +OBJECTS_DIR = o +MOC_DIR = o + +INCLUDEPATH += piper-cpp vamp-plugin-sdk + +include(vamp-plugin-sdk-files.pri) + +for (file, VAMP_SOURCES) { SOURCES += $$file } +for (file, VAMP_HEADERS) { HEADERS += $$file } + +HEADERS += \ + piper-cpp/vamp-capnp/piper.capnp.h \ + piper-cpp/vamp-capnp/VampnProto.h + +SOURCES += \ + piper-cpp/vamp-capnp/piper-capnp.cpp \ + piper-cpp/json11/json11.cpp \ + piper-cpp/vamp-server/simple-server.cpp diff -r be5b29ce283b -r 6f5a40419b00 sonic-visualiser.pro --- a/sonic-visualiser.pro Mon Aug 17 16:19:01 2015 +0100 +++ b/sonic-visualiser.pro Wed Dec 07 11:53:44 2016 +0000 @@ -1,18 +1,28 @@ + TEMPLATE = subdirs -SUBDIRS = sub_bq sub_dataquay svcore svgui svapp 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/base/test svcore/data/fileio/test svcore/data/model/test + SUBDIRS += \ + sub_test_svcore_base \ + sub_test_svcore_data_fileio \ + sub_test_svcore_data_model } -sub_bq.file = bq.pro +SUBDIRS += \ + checker \ + sub_server \ + sub_convert \ + sub_sv + +sub_test_svcore_base.file = test-svcore-base.pro +sub_test_svcore_data_fileio.file = test-svcore-data-fileio.pro +sub_test_svcore_data_model.file = test-svcore-data-model.pro + +sub_server.file = server.pro +sub_convert.file = convert.pro sub_sv.file = sv.pro -sub_dataquay.file = dataquay/lib.pro - -svgui.depends = svcore -svapp.depends = svcore svgui -sub_sv.depends = svcore svgui svapp +CONFIG += ordered diff -r be5b29ce283b -r 6f5a40419b00 sonic-visualiser.qrc --- a/sonic-visualiser.qrc Mon Aug 17 16:19:01 2015 +0100 +++ b/sonic-visualiser.qrc Wed Dec 07 11:53:44 2016 +0000 @@ -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 diff -r be5b29ce283b -r 6f5a40419b00 sv.pro --- a/sv.pro Mon Aug 17 16:19:01 2015 +0100 +++ b/sv.pro Wed Dec 07 11:53:44 2016 +0000 @@ -1,52 +1,27 @@ TEMPLATE = app -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_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 - } + include(noconfig.pri) } -CONFIG += qt thread warn_on stl rtti exceptions c++11 -QT += network xml gui widgets +include(base.pri) + +QT += network xml gui widgets svg TARGET = "Sonic Visualiser" linux*:TARGET = sonic-visualiser solaris*:TARGET = sonic-visualiser -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 +TRANSLATIONS += \ + i18n/sonic-visualiser_ru.ts \ + i18n/sonic-visualiser_en_GB.ts \ + i18n/sonic-visualiser_en_US.ts \ + i18n/sonic-visualiser_cs_CZ.ts OBJECTS_DIR = o MOC_DIR = o @@ -54,47 +29,33 @@ ICON = icons/sv-macicon.icns RC_FILE = icons/sv.rc -contains(DEFINES, BUILD_STATIC):LIBS -= -ljack - -MY_LIBS = -Lsvapp -Lsvgui -Lsvcore -Ldataquay -L. \ - -lsvapp -lsvgui -lsvcore -ldataquay -lbq - -linux* { -MY_LIBS = -Wl,-Bstatic $$MY_LIBS -Wl,-Bdynamic -} - -win* { -MY_LIBS = -Lsvapp/release -Lsvgui/release -Lsvcore/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 -} -!win* { -PRE_TARGETDEPS += svapp/libsvapp.a \ - svgui/libsvgui.a \ - svcore/libsvcore.a \ - dataquay/libdataquay.a -} - RESOURCES += sonic-visualiser.qrc -HEADERS += main/MainWindow.h \ - main/NetworkPermissionTester.h \ - main/Surveyer.h \ - main/PreferencesDialog.h -SOURCES += main/main.cpp \ - main/OSCHandler.cpp \ - main/MainWindow.cpp \ - main/NetworkPermissionTester.cpp \ - main/Surveyer.cpp \ - main/PreferencesDialog.cpp - -# for mac integration +# Mac integration QMAKE_INFO_PLIST = deploy/osx/Info.plist +include(svgui/files.pri) +include(svapp/files.pri) + +for (file, SVGUI_SOURCES) { SOURCES += $$sprintf("svgui/%1", $$file) } +for (file, SVAPP_SOURCES) { SOURCES += $$sprintf("svapp/%1", $$file) } + +for (file, SVGUI_HEADERS) { HEADERS += $$sprintf("svgui/%1", $$file) } +for (file, SVAPP_HEADERS) { HEADERS += $$sprintf("svapp/%1", $$file) } + +HEADERS += \ + main/MainWindow.h \ + main/NetworkPermissionTester.h \ + main/Surveyer.h \ + main/SVSplash.h \ + main/PreferencesDialog.h + +SOURCES += \ + main/main.cpp \ + main/OSCHandler.cpp \ + main/MainWindow.cpp \ + main/NetworkPermissionTester.cpp \ + main/Surveyer.cpp \ + main/SVSplash.cpp \ + main/PreferencesDialog.cpp + diff -r be5b29ce283b -r 6f5a40419b00 test-svcore-base.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-svcore-base.pro Wed Dec 07 11:53:44 2016 +0000 @@ -0,0 +1,31 @@ + +TEMPLATE = app + +exists(config.pri) { + include(config.pri) +} + +!exists(config.pri) { + include(noconfig.pri) +} + +include(base.pri) + +CONFIG += console +QT += network xml testlib +QT -= gui + +win32-x-g++:QMAKE_LFLAGS += -Wl,-subsystem,console +macx*: CONFIG -= app_bundle + +TARGET = test-svcore-base + +OBJECTS_DIR = o +MOC_DIR = o + +include(svcore/base/test/files.pri) + +for (file, TEST_SOURCES) { SOURCES += $$sprintf("svcore/base/test/%1", $$file) } +for (file, TEST_HEADERS) { HEADERS += $$sprintf("svcore/base/test/%1", $$file) } + +QMAKE_POST_LINK = ./$${TARGET}$${TARGET_EXT} diff -r be5b29ce283b -r 6f5a40419b00 test-svcore-data-fileio.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-svcore-data-fileio.pro Wed Dec 07 11:53:44 2016 +0000 @@ -0,0 +1,31 @@ + +TEMPLATE = app + +exists(config.pri) { + include(config.pri) +} + +!exists(config.pri) { + include(noconfig.pri) +} + +include(base.pri) + +CONFIG += console +QT += network xml testlib +QT -= gui + +win32-x-g++:QMAKE_LFLAGS += -Wl,-subsystem,console +macx*: CONFIG -= app_bundle + +TARGET = test-svcore-data-fileio + +OBJECTS_DIR = o +MOC_DIR = o + +include(svcore/data/fileio/test/files.pri) + +for (file, TEST_SOURCES) { SOURCES += $$sprintf("svcore/data/fileio/test/%1", $$file) } +for (file, TEST_HEADERS) { HEADERS += $$sprintf("svcore/data/fileio/test/%1", $$file) } + +QMAKE_POST_LINK = ./$${TARGET}$${TARGET_EXT} diff -r be5b29ce283b -r 6f5a40419b00 test-svcore-data-model.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-svcore-data-model.pro Wed Dec 07 11:53:44 2016 +0000 @@ -0,0 +1,31 @@ + +TEMPLATE = app + +exists(config.pri) { + include(config.pri) +} + +!exists(config.pri) { + include(noconfig.pri) +} + +include(base.pri) + +CONFIG += console +QT += network xml testlib +QT -= gui + +win32-x-g++:QMAKE_LFLAGS += -Wl,-subsystem,console +macx*: CONFIG -= app_bundle + +TARGET = test-svcore-data-model + +OBJECTS_DIR = o +MOC_DIR = o + +include(svcore/data/model/test/files.pri) + +for (file, TEST_SOURCES) { SOURCES += $$sprintf("svcore/data/model/test/%1", $$file) } +for (file, TEST_HEADERS) { HEADERS += $$sprintf("svcore/data/model/test/%1", $$file) } + +QMAKE_POST_LINK = ./$${TARGET}$${TARGET_EXT} diff -r be5b29ce283b -r 6f5a40419b00 vamp-plugin-sdk-files.pri --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vamp-plugin-sdk-files.pri Wed Dec 07 11:53:44 2016 +0000 @@ -0,0 +1,24 @@ + +VAMP_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 + +VAMP_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 diff -r be5b29ce283b -r 6f5a40419b00 version.h --- a/version.h Mon Aug 17 16:19:01 2015 +0100 +++ b/version.h Wed Dec 07 11:53:44 2016 +0000 @@ -1,1 +1,1 @@ -#define SV_VERSION "2.5" +#define SV_VERSION "3.0"